net: convert to rcu_dereference_index_check()
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Tue, 15 Jun 2010 00:06:21 +0000 (17:06 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Fri, 20 Aug 2010 00:17:59 +0000 (17:17 -0700)
The task_cls_classid() function applies rcu_dereference() to integers,
which does not work with the shiny new sparse-based checking in
rcu_dereference().  This commit therefore moves to the new RCU API
rcu_dereference_index_check().

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Reviewed-by: Josh Triplett <josh@joshtriplett.org>
Acked-by: David S. Miller <davem@davemloft.net>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
include/net/cls_cgroup.h

index 726cc353640988bd6fed9361f74cb8ef6dfbb9ce..dd1fdb8293f518d222be7601aaeb7009b3d8751b 100644 (file)
@@ -45,7 +45,8 @@ static inline u32 task_cls_classid(struct task_struct *p)
                return 0;
 
        rcu_read_lock();
-       id = rcu_dereference(net_cls_subsys_id);
+       id = rcu_dereference_index_check(net_cls_subsys_id,
+                                        rcu_read_lock_held());
        if (id >= 0)
                classid = container_of(task_subsys_state(p, id),
                                       struct cgroup_cls_state, css)->classid;