rtnetlink: allow rtnl_fill_link_netnsid() to run under RCU protection
[linux-2.6-block.git] / net / core / rtnetlink.c
index 41eb8bca530587074611d85e02b0a083ad367ed4..af8da8aeed395741b045f5ae5fd4bbaead2e199a 100644 (file)
@@ -1923,9 +1923,6 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb,
                        goto nla_put_failure;
        }
 
-       if (rtnl_fill_link_netnsid(skb, dev, src_net, gfp))
-               goto nla_put_failure;
-
        if (new_nsid &&
            nla_put_s32(skb, IFLA_NEW_NETNSID, *new_nsid) < 0)
                goto nla_put_failure;
@@ -1938,6 +1935,8 @@ static int rtnl_fill_ifinfo(struct sk_buff *skb,
                goto nla_put_failure;
 
        rcu_read_lock();
+       if (rtnl_fill_link_netnsid(skb, dev, src_net, GFP_ATOMIC))
+               goto nla_put_failure_rcu;
        qdisc = rcu_dereference(dev->qdisc);
        if (qdisc && nla_put_string(skb, IFLA_QDISC, qdisc->ops->id))
                goto nla_put_failure_rcu;