Re: 2.6.15-rc2-mm1

From: Andrew Morton
Date: Wed Nov 23 2005 - 14:22:41 EST


Michal Piotrowski <michal.k.k.piotrowski@xxxxxxxxx> 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: 00000001 ]
> | 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.

check_entry() will do sleepy things under that get_cpu(), but that doesn't
seem to be in this particular call chain.

Anyway, the new get_cpu() in ipt_register_table() is the problem.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/