Re: kmemleak detects leak in msr_build_context

From: Dave Hansen
Date: Tue Jan 11 2022 - 10:26:40 EST


On 1/10/22 23:49, Paul Menzel wrote:
Running Linux from commit bf4eebf8cfa2 (Merge tag 'linux-kselftest-kunit-5.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest), kmemleak reported the leak below:

```
unreferenced object 0xffff8914823de500 (size 64):
  comm "swapper/0", pid 1, jiffies 4294667581 (age 1253.406s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 04 10 01 c0 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<000000007f3b05e9>] __kmalloc+0x177/0x330
    [<0000000008104cca>] msr_build_context.constprop.0+0x32/0xbe
    [<00000000012bab4e>] msr_save_cpuid_features+0x28/0x2f
    [<00000000b7a2262e>] pm_check_save_msr+0x2e/0x40
    [<00000000cbe9d92d>] do_one_initcall+0x44/0x200
    [<0000000094deab7b>] kernel_init_freeable+0x1fc/0x273
    [<00000000d3dbaa56>] kernel_init+0x16/0x160
    [<0000000058c4a8b3>] ret_from_fork+0x22/0x30

Thanks for the report.

I've taken a look through arch/x86/power/cpu.c, and nothing obvious jumped out at me. msr_build_context() could probably be cleaned up by using kvrealloc(), but it hasn't been touched recently in a way that I would expect things to leak.

I suspect this is a false positive from kmemleak.

If you could share your full dmesg, it might help spot something. But, I didn't see anything.