In the Linux kernel, the following vulnerability has been resolved:
net/mlx5e: Fix memory leak in mlx5coredestroy_cq() error path
Prior to this patch in case mlx5coredestroy_cq() failed it returns without completing all destroy operations and that leads to memory leak. Instead, complete the destroy flow before return error.
Also move mlx5debugcqremove() to the beginning of mlx5coredestroycq() to be symmetrical with mlx5corecreate_cq().
kmemleak complains on:
unreferenced object 0xc000000038625100 (size 64): comm "ethtool", pid 28301, jiffies 4298062946 (age 785.380s) hex dump (first 32 bytes): 60 01 48 94 00 00 00 c0 b8 05 34 c3 00 00 00 c0 `.H.......4..... 02 00 00 00 00 00 00 00 00 db 7d c1 00 00 00 c0 ..........}..... backtrace: [<000000009e8643cb>] addrestree+0xd0/0x270 [mlx5core] [<00000000e7cb8e6c>] mlx5debugcqadd+0x5c/0xc0 [mlx5core] [<000000002a12918f>] mlx5corecreatecq+0x1d0/0x2d0 [mlx5core] [<00000000cef0a696>] mlx5ecreatecq+0x210/0x3f0 [mlx5core] [<000000009c642c26>] mlx5eopencq+0xb4/0x130 [mlx5core] [<0000000058dfa578>] mlx5eptpopen+0x7f4/0xe10 [mlx5core] [<0000000081839561>] mlx5eopenchannels+0x9cc/0x13e0 [mlx5core] [<0000000009cf05d4>] mlx5eswitchprivchannels+0xa4/0x230 [mlx5core] [<0000000042bbedd8>] mlx5esafeswitchparams+0x14c/0x300 [mlx5core] [<0000000004bc9db8>] setpflagtxportts+0x9c/0x160 [mlx5core] [<00000000a0553443>] mlx5esetprivflags+0xd0/0x1b0 [mlx5core] [<00000000a8f3d84b>] ethnlsetprivflags+0x234/0x2d0 [<00000000fd27f27c>] genlfamilyrcvmsgdoit+0x108/0x1d0 [<00000000f495e2bb>] genlfamilyrcvmsg+0xe4/0x1f0 [<00000000646c5c2c>] genlrcvmsg+0x78/0x120 [<00000000d53e384e>] netlinkrcv_skb+0x74/0x1a0