]> err.no Git - linux-2.6/commit
[NETFILTER]: nf_conntrack: fix invalid conntrack statistics RCU assumption
authorPatrick McHardy <kaber@trash.net>
Mon, 12 Feb 2007 19:13:43 +0000 (11:13 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Feb 2007 19:13:43 +0000 (11:13 -0800)
commitc0e912d7ed8999f87fa7f084928aac1266e251f3
treeec48a83001871b4e0db78ee9eab520a1fbb02e14
parentabbaccda4c364815b8b1a82c45a94f60760e13e1
[NETFILTER]: nf_conntrack: fix invalid conntrack statistics RCU assumption

NF_CT_STAT_INC assumes rcu_read_lock in nf_hook_slow disables
preemption as well, making it legal to use __get_cpu_var without
disabling preemption manually. The assumption is not correct anymore
with preemptable RCU, additionally we need to protect against softirqs
when not holding nf_conntrack_lock.

Add NF_CT_STAT_INC_ATOMIC macro, which disables local softirqs,
and use where necessary.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/netfilter/nf_conntrack.h
net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c
net/netfilter/nf_conntrack_core.c