gss_krb5: Introduce encryption type framework
[safe/jmp/linux-2.6] / net / sched / em_meta.c
index 266151a..3bcac8a 100644 (file)
@@ -58,6 +58,7 @@
  *           only available if that subsystem is enabled in the kernel.
  */
 
+#include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
@@ -303,17 +304,18 @@ 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(sock_net(skb->sk),
+                                          skb->sk->sk_bound_dev_if);
                *err = var_dev(dev, dst);
-               if (dev)
-                       dev_put(dev);
-        }
+               rcu_read_unlock();
+       }
 }
 
 META_COLLECTOR(int_sk_refcnt)
@@ -349,13 +351,13 @@ META_COLLECTOR(int_sk_type)
 META_COLLECTOR(int_sk_rmem_alloc)
 {
        SKIP_NONLOCAL(skb);
-       dst->value = atomic_read(&skb->sk->sk_rmem_alloc);
+       dst->value = sk_rmem_alloc_get(skb->sk);
 }
 
 META_COLLECTOR(int_sk_wmem_alloc)
 {
        SKIP_NONLOCAL(skb);
-       dst->value = atomic_read(&skb->sk->sk_wmem_alloc);
+       dst->value = sk_wmem_alloc_get(skb->sk);
 }
 
 META_COLLECTOR(int_sk_omem_alloc)