Subject: Re: Some sleeping function called from invalid context

From: Arnaldo Carvalho de Melo <[email-masked]>
Date: Tue, 5 Apr 2005 15:11:30 -0300

On Apr 5, 2005 9:18 AM, Arnaldo Carvalho de Melo <[email-masked]> wrote:
> On Apr 5, 2005 8:13 AM, Arnaldo Carvalho de Melo <[email-masked]> wrote:
> > On Apr 5, 2005 6:35 AM, Marcel Holtmann <[email-masked]> wrote:
> > > Hi,
> > >
> > > while testing the latest kernel from the Bitkeeper repository, I got
> > > some sleeping functions called from invalid context:
> > >
> > > Freeing unused kernel memory: 180k freed
> > > Debug: sleeping function called from invalid context at mm/slab.c:2090
> > > in_atomic():1, irqs_disabled():0
> > >  [<c0119936>] __might_sleep+0xa6/0xb0
> > >  [<c014ab93>] kmem_cache_alloc+0x73/0x80
> > >  [<c0149c0e>] kmem_cache_create+0xfe/0x630
> > >  [<c026994d>] proto_register+0x9d/0xc0
> > >  [<f88c901c>] af_unix_init+0x1c/0x7a [unix]
> > >  [<c0139d62>] sys_init_module+0x1b2/0x290
> > >  [<c0103025>] syscall_call+0x7/0xb
> > > NET: Registered protocol family 1
> >
> > Damn, thanks for reporting, looking at it now.
> 
> Humm, recent changes in slab.[ch]... I'll try booting with a kernel without
> proto_register to see if this is some bug introduced by this changeset or
> if the problem would appear without it, that is my current guess, as we
> were doing a kmem_cache_create at module __init time before, and it
> uses SLAB_KERNEL at some point...
> 
> I.e. with regards to per protocol slab cache creating at module init time
> we are doing the same thing as before the proto_register changeset,
> unless I'm missing some obvious thing...

Yes, I was missing something, one should not call kmem_cache_create with a
spinlock held, patch will be available shortly, thanks a lot Marcel
for reporting this
one!

- Arnaldo