On Mon, Sep 14, 2015 at 04:04:37PM +1000, Michael Ellerman wrote:
> On Sun, 2015-09-13 at 21:36 +0300, Denis Kirjanov wrote:
> > During the MSI bitmap test on boot kmemleak spews the following trace:
> > 
> > unreferenced object 0xc00000016e86c900 (size 64):
> >     comm "swapper/0", pid 1, jiffies 4294893173 (age 518.024s)
> >     hex dump (first 32 bytes):
> >     00 00 01 ff 7f ff 7f 37 00 00 00 00 00 00 00 00
> >     .......7........
> >     ff ff ff ff ff ff ff ff 01 ff ff ff ff ff ff ff
> >     ................
> >     backtrace:
> >     [<c00000000003eebc>] .zalloc_maybe_bootmem+0x3c/0x380
> >     [<c000000000042d6c>] .msi_bitmap_alloc+0x3c/0xb0
> >     [<c000000000a9aff8>]
> >     .msi_bitmap_selftest+0x30/0x2b4
> >     [<c0000000000090f4>]
> >     .do_one_initcall+0xd4/0x270
> >     [<c000000000a8e250>]
> >     .kernel_init_freeable+0x1a0/0x280
> >     [<c000000000009b5c>]
> >     .kernel_init+0x1c/0x120
> >     [<c000000000007fbc>]
> >     .ret_from_kernel_thread+0x58/0x9c
> > 
> > The comment in msi_bitmap_free() states that we can't free
> > the bitmap so mark it with the kmemleak_not_leak().
> 
> Yeah, and I've always hated that comment :)
> 
> I assume it's still true now that we don't use bootmem?

If it's not bootmem, it's probably memblock. Looking at the code, it
seems that msi_bitmap_free() cannot make the distinction between a slab
allocation and a bootmem/memblock one (allocated via
zalloc_maybe_bootmem).

You could add some flag to struct msi_bitmap based on mem_init_done to
be able to reclaim some slab memory later. If the bitmap is small and
such allocation doesn't happen outside boot, it may not be worth the
effort.

-- 
Catalin

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to