summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2005-07-22 09:35:51 +0200
committerChris Wright <chrisw@osdl.org>2005-08-05 00:04:20 -0700
commit1541b785b9c11b639ba5f60f4c5de5bff235f7d8 (patch)
treea1b9487fb739389779d611ef7537da783dac9475
parent634823cdc51b1cacba504b29d6de9a25e1ee41af (diff)
downloadlinux-stable-1541b785b9c11b639ba5f60f4c5de5bff235f7d8.tar.gz
linux-stable-1541b785b9c11b639ba5f60f4c5de5bff235f7d8.tar.bz2
linux-stable-1541b785b9c11b639ba5f60f4c5de5bff235f7d8.zip
[PATCH] Wait until all references to ip_conntrack_untracked are dropped on unload
[NETFILTER]: Wait until all references to ip_conntrack_untracked are dropped on unload Fixes a crash when unloading ip_conntrack. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: Chris Wright <chrisw@osdl.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--net/ipv4/netfilter/ip_conntrack_core.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv4/netfilter/ip_conntrack_core.c b/net/ipv4/netfilter/ip_conntrack_core.c
index 09e824622977..d1ac6e8bc2c8 100644
--- a/net/ipv4/netfilter/ip_conntrack_core.c
+++ b/net/ipv4/netfilter/ip_conntrack_core.c
@@ -1124,6 +1124,9 @@ void ip_conntrack_cleanup(void)
schedule();
goto i_see_dead_people;
}
+ /* wait until all references to ip_conntrack_untracked are dropped */
+ while (atomic_read(&ip_conntrack_untracked.ct_general.use) > 1)
+ schedule();
kmem_cache_destroy(ip_conntrack_cachep);
kmem_cache_destroy(ip_conntrack_expect_cachep);