em_meta: avoid one dev_put()
authorEric Dumazet <eric.dumazet@gmail.com>
Wed, 4 Nov 2009 13:23:31 +0000 (05:23 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 4 Nov 2009 13:23:31 +0000 (05:23 -0800)
Another rcu conversion to avoid one dev_hold()/dev_put() pair

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/em_meta.c

index 18d85d2..8e8d836 100644 (file)
@@ -303,17 +303,17 @@ META_COLLECTOR(var_sk_bound_if)
 {
        SKIP_NONLOCAL(skb);
 
-        if (skb->sk->sk_bound_dev_if == 0) {
+       if (skb->sk->sk_bound_dev_if == 0) {
                dst->value = (unsigned long) "any";
                dst->len = 3;
-        } else  {
+       } else {
                struct net_device *dev;
 
-               dev = dev_get_by_index(&init_net, skb->sk->sk_bound_dev_if);
+               rcu_read_lock();
+               dev = dev_get_by_index_rcu(&init_net, skb->sk->sk_bound_dev_if);
                *err = var_dev(dev, dst);
-               if (dev)
-                       dev_put(dev);
-        }
+               rcu_read_unlock();
+       }
 }
 
 META_COLLECTOR(int_sk_refcnt)