nfsd4: allow 4.0 clients to change callback path
[safe/jmp/linux-2.6] / net / phonet / pn_netlink.c
index d8f5d3f..2e6c7eb 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)
@@ -155,7 +154,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 +211,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] = {