net: suppress lockdep-RCU false positive in FIB trie.
[safe/jmp/linux-2.6] / net / phonet / pn_netlink.c
index d8f5d3f..fe2e708 100644 (file)
@@ -53,8 +53,7 @@ void phonet_address_notify(int event, struct net_device *dev, u8 addr)
                    RTNLGRP_PHONET_IFADDR, NULL, GFP_KERNEL);
        return;
 errout:
-       if (err < 0)
-               rtnl_set_sk_err(dev_net(dev), RTNLGRP_PHONET_IFADDR, err);
+       rtnl_set_sk_err(dev_net(dev), RTNLGRP_PHONET_IFADDR, err);
 }
 
 static const struct nla_policy ifa_phonet_policy[IFA_MAX+1] = {
@@ -132,8 +131,8 @@ static int getaddr_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
        int addr_idx = 0, addr_start_idx = cb->args[1];
 
        pndevs = phonet_device_list(sock_net(skb->sk));
-       spin_lock_bh(&pndevs->lock);
-       list_for_each_entry(pnd, &pndevs->list, list) {
+       rcu_read_lock();
+       list_for_each_entry_rcu(pnd, &pndevs->list, list) {
                u8 addr;
 
                if (dev_idx > dev_start_idx)
@@ -142,8 +141,7 @@ static int getaddr_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
                        continue;
 
                addr_idx = 0;
-               for (addr = find_first_bit(pnd->addrs, 64); addr < 64;
-                       addr = find_next_bit(pnd->addrs, 64, 1+addr)) {
+               for_each_set_bit(addr, pnd->addrs, 64) {
                        if (addr_idx++ < addr_start_idx)
                                continue;
 
@@ -155,7 +153,7 @@ static int getaddr_dumpit(struct sk_buff *skb, struct netlink_callback *cb)
        }
 
 out:
-       spin_unlock_bh(&pndevs->lock);
+       rcu_read_unlock();
        cb->args[0] = dev_idx;
        cb->args[1] = addr_idx;
 
@@ -212,8 +210,7 @@ void rtm_phonet_notify(int event, struct net_device *dev, u8 dst)
                          RTNLGRP_PHONET_ROUTE, NULL, GFP_KERNEL);
        return;
 errout:
-       if (err < 0)
-               rtnl_set_sk_err(dev_net(dev), RTNLGRP_PHONET_ROUTE, err);
+       rtnl_set_sk_err(dev_net(dev), RTNLGRP_PHONET_ROUTE, err);
 }
 
 static const struct nla_policy rtm_phonet_policy[RTA_MAX+1] = {