[PATCH 2.4] raw table and NOTRACK support
Roberto Nibali
ratz at tac.ch
Tue Nov 22 16:40:19 CET 2005
> [3]kdb> bt
> Stack traceback for pid 7064
> 0xf5c72000 7064 7011 1 3 R 0xf5c722b0 *rmmod
> EBP EIP Function (args)
> 0xf5c73f0c 0xf89a723f [ip_conntrack]get_next_corpse+0xbf (0xf89a7470,
> 0x0, 0xf5c73f20, 0x1fe2, 0xf5c72000)
> ip_conntrack .text 0xf89a4060 0xf89a7180
> 0xf89a72d0
> 0xf5c73f30 0xf89a7303
> [ip_conntrack]ip_ct_iterate_cleanup_Rsmp_4ff11842+0x33 (0xf89a7470, 0x0,
> 0x0)
> ip_conntrack .text 0xf89a4060 0xf89a72d0
> 0xf89a7370
> 0xf5c73f44 0xf89a74f7 [ip_conntrack]ip_conntrack_cleanup+0x77
> (0xf89a990f, 0xc2a7bd20, 0xc0471e20, 0xf89a4000)
> ip_conntrack .text 0xf89a4060 0xf89a7480
> 0xf89a7550
> 0xf5c73f5c 0xf89a479f [ip_conntrack]init_or_cleanup+0x17f (0x0)
> ip_conntrack .text 0xf89a4060 0xf89a4620
> 0xf89a4810
> 0xf5c73f68 0xf89a4a22 [ip_conntrack]fini+0x12 (0xf89a4000, 0xfffffff0,
> 0xf5d8b000, 0xf5c73f84, 0xf89a4000)
> ip_conntrack .text 0xf89a4060 0xf89a4a10
> 0xf89a4a24
> 0xf5c73f8c 0xc0120641 free_module+0x111 (0xf89a4000, 0x0, 0x1000,
> 0xbfffde18, 0xf5c72000)
> kernel .text 0xc0100000 0xc0120530 0xc0120660
> 0xf5c73fbc 0xc011f639 sys_delete_module+0x129 (0xbffffcd9, 0xbfffefd4,
> 0xbfffdf2c, 0x1, 0xbfffdf2c)
> kernel .text 0xc0100000 0xc011f510 0xc011f940
> 0xc010774f system_call+0x33
> kernel .text 0xc0100000 0xc010771c 0xc0107754
> [3]kdb>
I don't get it. It's looping in:
void
ip_ct_iterate_cleanup(int (*iter)(struct ip_conntrack *i, void *), void
*data)
{
struct ip_conntrack_tuple_hash *h;
unsigned int bucket = 0;
while ((h = get_next_corpse(iter, data, &bucket)) != NULL) {
/* Time to push up daises... */
if (del_timer(&h->ctrack->timeout))
death_by_timeout((unsigned long)h->ctrack);
/* ... else the timer will get him soon. */
ip_conntrack_put(h->ctrack);
}
}
which is called from:
void ip_conntrack_cleanup(void)
{
ip_ct_attach = NULL;
/* This makes sure all current packets have passed through
netfilter framework. Roll on, two-stage module
delete... */
br_write_lock_bh(BR_NETPROTO_LOCK);
br_write_unlock_bh(BR_NETPROTO_LOCK);
i_see_dead_people:
ip_ct_iterate_cleanup(kill_all, NULL);
if (atomic_read(&ip_conntrack_count) != 0) {
schedule();
goto i_see_dead_people;
}
while (atomic_read(&ip_conntrack_untracked.ct_general.use) > 1)
schedule();
kmem_cache_destroy(ip_conntrack_cachep);
vfree(ip_conntrack_hash);
nf_unregister_sockopt(&so_getorigdst);
}
I don't see where ip_conntrack_untracked.ct_general.use is > 1, ever ...
I'm completely puzzled,
Roberto Nibali, ratz
--
-------------------------------------------------------------
addr://Kasinostrasse 30, CH-5001 Aarau tel://++41 62 823 9355
http://www.terreactive.com fax://++41 62 823 9356
-------------------------------------------------------------
terreActive AG Wir sichern Ihren Erfolg
-------------------------------------------------------------
More information about the netfilter-devel
mailing list