inet fragments: fix race between inet_frag_find and inet_frag_secret_rebuild
authorPavel Emelyanov <xemul@openvz.org>
Sat, 28 Jun 2008 03:06:08 +0000 (20:06 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 28 Jun 2008 03:06:08 +0000 (20:06 -0700)
commit9a375803feaadb6c34e0807bd9325885dcca5c00
treefba3b0835d1fb3211da1c1be9dd6d4508e6668a6
parenta0a61a604c60c14accc3962ecfeee9acc7a3c08a
inet fragments: fix race between inet_frag_find and inet_frag_secret_rebuild

The problem is that while we work w/o the inet_frags.lock even
read-locked the secret rebuild timer may occur (on another CPU, since
BHs are still disabled in the inet_frag_find) and change the rnd seed
for ipv4/6 fragments.

It was caused by my patch fd9e63544cac30a34c951f0ec958038f0529e244
([INET]: Omit double hash calculations in xxx_frag_intern) late
in the 2.6.24 kernel, so this should probably be queued to -stable.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/inet_fragment.c
net/ipv4/ip_fragment.c
net/ipv6/netfilter/nf_conntrack_reasm.c
net/ipv6/reassembly.c