Message ID | 1483848263-17031-1-git-send-email-dsa@cumulusnetworks.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: David Ahern <dsa@cumulusnetworks.com> Date: Sat, 7 Jan 2017 20:04:23 -0800 > Nothing about the route lookup requires bottom half to be disabled. > Remove the local_bh_disable ... local_bh_enable around ip_route_input. > This appears to be a vestige of days gone by as it has been there > since the beginning of git time. > > Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Agreed, this shouldn't be necessary. The key with input route lookups is that the skb->dst reference cannot escape the packet receive path, unless we force the dst, which ip_route_input() does under RCU protection. So this should all be ok. Applied, thanks.
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index f51823dc998b..7144288371cf 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c @@ -2631,9 +2631,7 @@ static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh) skb->protocol = htons(ETH_P_IP); skb->dev = dev; skb->mark = mark; - local_bh_disable(); err = ip_route_input(skb, dst, src, rtm->rtm_tos, dev); - local_bh_enable(); rt = skb_rtable(skb); if (err == 0 && rt->dst.error)
Nothing about the route lookup requires bottom half to be disabled. Remove the local_bh_disable ... local_bh_enable around ip_route_input. This appears to be a vestige of days gone by as it has been there since the beginning of git time. Signed-off-by: David Ahern <dsa@cumulusnetworks.com> --- net/ipv4/route.c | 2 -- 1 file changed, 2 deletions(-)