In the Linux kernel, the following vulnerability has been resolved:
ipmisi: fix a memleak in trysmi_init()
Kmemleak reported the following leak info in trysmiinit():
unreferenced object 0xffff00018ecf9400 (size 1024): comm "modprobe", pid 2707763, jiffies 4300851415 (age 773.308s) backtrace: [<000000004ca5b312>] _kmalloc+0x4b8/0x7b0 [<00000000953b1072>] trysmiinit+0x148/0x5dc [ipmisi] [<000000006460d325>] 0xffff800081b10148 [<0000000039206ea5>] dooneinitcall+0x64/0x2a4 [<00000000601399ce>] doinitmodule+0x50/0x300 [<000000003c12ba3c>] loadmodule+0x7a8/0x9e0 [<00000000c246fffe>] _sesysinitmodule+0x104/0x180 [<00000000eea99093>] _arm64sysinitmodule+0x24/0x30 [<0000000021b1ef87>] el0svccommon.constprop.0+0x94/0x250 [<0000000070f4f8b7>] doel0svc+0x48/0xe0 [<000000005a05337f>] el0svc+0x24/0x3c [<000000005eb248d6>] el0synchandler+0x160/0x164 [<0000000030a59039>] el0_sync+0x160/0x180
The problem was that when an error occurred before handlers registration
and after allocating new_smi->si_sm, the variable wouldn't be freed in
the error handling afterwards since shutdown_smi() hadn't been
registered yet. Fix it by adding a kfree() in the error handling path
in try_smi_init().