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