Commit 121622db authored by Florian Westphal's avatar Florian Westphal Committed by David S. Miller

ipv6: route: make rtm_getroute not assume rtnl is locked

__dev_get_by_index assumes RTNL is held, use _rcu version instead.
Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2cc76595
...@@ -3611,8 +3611,11 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, ...@@ -3611,8 +3611,11 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
struct net_device *dev; struct net_device *dev;
int flags = 0; int flags = 0;
dev = __dev_get_by_index(net, iif); rcu_read_lock();
dev = dev_get_by_index_rcu(net, iif);
if (!dev) { if (!dev) {
rcu_read_unlock();
err = -ENODEV; err = -ENODEV;
goto errout; goto errout;
} }
...@@ -3624,6 +3627,8 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh, ...@@ -3624,6 +3627,8 @@ static int inet6_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
if (!fibmatch) if (!fibmatch)
dst = ip6_route_input_lookup(net, dev, &fl6, flags); dst = ip6_route_input_lookup(net, dev, &fl6, flags);
rcu_read_unlock();
} else { } else {
fl6.flowi6_oif = oif; fl6.flowi6_oif = oif;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment