net_sched: fix suspicious RCU usage in tcindex_classify()
authorWANG Cong <xiyou.wangcong@gmail.com>
Mon, 15 Sep 2014 21:06:48 +0000 (14:06 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Sep 2014 21:49:42 +0000 (17:49 -0400)
This patch fixes the following kernel warning:

[   44.805900] [ INFO: suspicious RCU usage. ]
[   44.808946] 3.17.0-rc4+ #610 Not tainted
[   44.811831] -------------------------------
[   44.814873] net/sched/cls_tcindex.c:84 suspicious rcu_dereference_check() usage!

Fixes: commit 331b72922c5f58d48fd ("net: sched: RCU cls_tcindex")
Cc: John Fastabend <john.fastabend@gmail.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/cls_tcindex.c

index a02ca72..b93974c 100644 (file)
@@ -81,7 +81,7 @@ tcindex_lookup(struct tcindex_data *p, u16 key)
 static int tcindex_classify(struct sk_buff *skb, const struct tcf_proto *tp,
                            struct tcf_result *res)
 {
-       struct tcindex_data *p = rcu_dereference(tp->root);
+       struct tcindex_data *p = rcu_dereference_bh(tp->root);
        struct tcindex_filter_result *f;
        int key = (skb->tc_index & p->mask) >> p->shift;