On Wed, Nov 23, 2005 at 11:22:18AM -0800, Andrew Morton wrote:
Michal Piotrowski [EMAIL PROTECTED] wrote:
Debug: sleeping function called from invalid context at
include/asm/semaphore.h:123
in_atomic():1, irqs_disabled():0
[c0103be6] dump_stack+0x17/0x19
[c011a0c3] __might_sleep+0x9c/0xae
[fd9a090d] translate_table+0x147/0xc14 [ip_tables]
[fd9a2b2a] ipt_register_table+0x93/0x20d [ip_tables]
[f98fe027] init+0x27/0x9e [iptable_filter]
[c01376d0] sys_init_module+0xd7/0x26c
[c0102cc7] sysenter_past_esp+0x54/0x75
---
| preempt count: 0001 ]
| 1 level deep critical section nesting:
.. [fd9a2aca] ipt_register_table+0x33/0x20d [ip_tables]
.[f98fe027] .. ( = init+0x27/0x9e [iptable_filter])
ipt_register_table() does get_cpu() then calls translate_table(), and
somewhere under translate_table() we do something which sleeps, only I'm not
sure what it is - netfilter likes to hide things in unexpected places.
I'll investigate this. the get_cpu() scheme was introduced as a fix for
a different (less serious) problem.
You'll get a reply until later today.
--
- Harald Welte [EMAIL PROTECTED] http://netfilter.org/
Fragmentation is like classful addressing -- an interesting early
architectural error that shows how much experimentation was going
on while IP was being designed.-- Paul Vixie
pgprVtGQHXCIr.pgp
Description: PGP signature