X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=net%2Fphonet%2Fpn_netlink.c;h=438accb7a5a8ada36dea9e769fcd3fce69c50aaf;hb=f50d1d9e8d964fdd3b4cedfbca8843d1bc5916c1;hp=58b3b1f991ed2db16d78d2d192eefb4b4d3ad80e;hpb=67290f41b2715de0e0ae93c9285fcbe37ffc5b22;p=~andy%2Flinux diff --git a/net/phonet/pn_netlink.c b/net/phonet/pn_netlink.c index 58b3b1f991e..438accb7a5a 100644 --- a/net/phonet/pn_netlink.c +++ b/net/phonet/pn_netlink.c @@ -264,10 +264,11 @@ static int route_dumpit(struct sk_buff *skb, struct netlink_callback *cb) struct net *net = sock_net(skb->sk); u8 addr, addr_idx = 0, addr_start_idx = cb->args[0]; + rcu_read_lock(); for (addr = 0; addr < 64; addr++) { struct net_device *dev; - dev = phonet_route_get(net, addr << 2); + dev = phonet_route_get_rcu(net, addr << 2); if (!dev) continue; @@ -279,6 +280,7 @@ static int route_dumpit(struct sk_buff *skb, struct netlink_callback *cb) } out: + rcu_read_unlock(); cb->args[0] = addr_idx; cb->args[1] = 0;