Re: 2.6.23-rc2-mm1: sleeping function called from invalid context at kernel/mutex.c:86

Ingo Molnar
2007-08-10T07:40:27Z

* Andrew Morton <akpm@linux-foundation.org> wrote:

> We seem to have made a mess in there. timer_list_show() ends up
> calling lookup_module_symbol_name(), which takes a mutex. However
> print_symbol() (which is called at oops time, interrupt time, etc)
> calls module_address_lookup(), which is basically the same, only it
> doesn't take the mutex.

hm, current upstream does:

static void print_name_offset(struct seq_file *m, void *sym)
{
char symname[KSYM_NAME_LEN];

if (lookup_symbol_name((unsigned long)sym, symname) < 0)

why was that changed? I think symbol lookups for debug purposes have to
be lockless, fundamentally.

Ingo