netfilter: fix crashes in bridge netfilter caused by fragment jumps
authorPatrick McHardy <kaber@trash.net>
Tue, 15 Dec 2009 15:59:59 +0000 (16:59 +0100)
committerPatrick McHardy <kaber@trash.net>
Tue, 15 Dec 2009 15:59:59 +0000 (16:59 +0100)
commit8fa9ff6849bb86c59cc2ea9faadf3cb2d5223497
tree42c1cc382a9cfbb2907ab1471418404f874d53f2
parent0b5ccb2ee250136dd7385b1c7da28417d0d4d32d
netfilter: fix crashes in bridge netfilter caused by fragment jumps

When fragments from bridge netfilter are passed to IPv4 or IPv6 conntrack
and a reassembly queue with the same fragment key already exists from
reassembling a similar packet received on a different device (f.i. with
multicasted fragments), the reassembled packet might continue on a different
codepath than where the head fragment originated. This can cause crashes
in bridge netfilter when a fragment received on a non-bridge device (and
thus with skb->nf_bridge == NULL) continues through the bridge netfilter
code.

Add a new reassembly identifier for packets originating from bridge
netfilter and use it to put those packets in insolated queues.

Fixes http://bugzilla.kernel.org/show_bug.cgi?id=14805

Reported-and-Tested-by: Chong Qiao <qiaochong@loongson.cn>
Signed-off-by: Patrick McHardy <kaber@trash.net>
include/net/ip.h
include/net/ipv6.h
net/ipv4/netfilter/nf_defrag_ipv4.c
net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c