Message ID | 20090105135245.GC4460@ff.dom.local |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Jarek Poplawski <jarkao2@gmail.com> Date: Mon, 5 Jan 2009 13:52:45 +0000 > pkt_sched: cls_u32: Fix locking in u32_change() > > New nodes are inserted in u32_change() under rtnl_lock() with wmb(), > so without tcf_tree_lock() like in other classifiers (e.g. cls_fw). > This isn't enough without rmb() on the read side, but on the other > hand adding such barriers doesn't give any savings, so the lock is > added instead. > > Reported-by: m0sia <m0sia@plotinka.ru> > Signed-off-by: Jarek Poplawski <jarkao2@gmail.com> Applied and queued up for -stable, thanks Jarek. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index 05d1780..07372f6 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c @@ -638,8 +638,9 @@ static int u32_change(struct tcf_proto *tp, unsigned long base, u32 handle, break; n->next = *ins; - wmb(); + tcf_tree_lock(tp); *ins = n; + tcf_tree_unlock(tp); *arg = (unsigned long)n; return 0;