diff options
author | David S. Miller <davem@davemloft.net> | 2008-03-29 01:30:18 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-03-29 01:30:18 +0100 |
commit | e8e16b706e8406f1ab3bccab16932ebc513896d8 (patch) | |
tree | 75b52bb42601756995a1ffba206608f3f97b6df5 | |
parent | net: Comment dev_kfree_skb_irq and dev_kfree_skb_any better (diff) | |
download | linux-e8e16b706e8406f1ab3bccab16932ebc513896d8.tar.xz linux-e8e16b706e8406f1ab3bccab16932ebc513896d8.zip |
[INET]: inet_frag_evictor() must run with BH disabled
Based upon a lockdep trace from Dave Jones.
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/ipv4/inet_fragment.c | 3 | ||||
-rw-r--r-- | net/ipv6/netfilter/nf_conntrack_reasm.c | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/net/ipv4/inet_fragment.c b/net/ipv4/inet_fragment.c index 724d69aed031..a0a3c78cb5e0 100644 --- a/net/ipv4/inet_fragment.c +++ b/net/ipv4/inet_fragment.c @@ -86,7 +86,10 @@ EXPORT_SYMBOL(inet_frags_fini); void inet_frags_exit_net(struct netns_frags *nf, struct inet_frags *f) { nf->low_thresh = 0; + + local_bh_disable(); inet_frag_evictor(nf, f); + local_bh_enable(); } EXPORT_SYMBOL(inet_frags_exit_net); diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c index 2a0d698b24d5..24c0d03095bf 100644 --- a/net/ipv6/netfilter/nf_conntrack_reasm.c +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c @@ -171,7 +171,9 @@ static __inline__ void fq_kill(struct nf_ct_frag6_queue *fq) static void nf_ct_frag6_evictor(void) { + local_bh_disable(); inet_frag_evictor(&nf_init_frags, &nf_frags); + local_bh_enable(); } static void nf_ct_frag6_expire(unsigned long data) |