In the Linux kernel, the following vulnerability has been resolved:
IB/core: Fix ibcachesetup_one error flow cleanup
When ibcacheupdate return an error, we exit ibcachesetupone instantly with no proper cleanup, even though before this we had already successfully done gidtablesetupone, that results in the kernel WARN below.
Do proper cleanup using gidtablecleanup_one before returning the err in order to fix the issue.
WARNING: CPU: 4 PID: 922 at drivers/infiniband/core/cache.c:806 gidtablereleaseone+0x181/0x1a0 Modules linked in: CPU: 4 UID: 0 PID: 922 Comm: crepro Not tainted 6.11.0-rc1+ #3 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014 RIP: 0010:gidtablereleaseone+0x181/0x1a0 Code: 44 8b 38 75 0c e8 2f cb 34 ff 4d 8b b5 28 05 00 00 e8 23 cb 34 ff 44 89 f9 89 da 4c 89 f6 48 c7 c7 d0 58 14 83 e8 4f de 21 ff <0f> 0b 4c 8b 75 30 e9 54 ff ff ff 48 8 3 c4 10 5b 5d 41 5c 41 5d 41 RSP: 0018:ffffc90002b835b0 EFLAGS: 00010286 RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff811c8527 RDX: 0000000000000000 RSI: ffffffff811c8534 RDI: 0000000000000001 RBP: ffff8881011b3d00 R08: ffff88810b3abe00 R09: 205d303839303631 R10: 666572207972746e R11: 72746e6520444947 R12: 0000000000000001 R13: ffff888106390000 R14: ffff8881011f2110 R15: 0000000000000001 FS: 00007fecc3b70800(0000) GS:ffff88813bd00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000020000340 CR3: 000000010435a001 CR4: 00000000003706b0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace: <TASK> ? showregs+0x94/0xa0 ? warn+0x9e/0x1c0 ? gidtablereleaseone+0x181/0x1a0 ? reportbug+0x1f9/0x340 ? gidtablereleaseone+0x181/0x1a0 ? handlebug+0xa2/0x110 ? excinvalidop+0x31/0xa0 ? asmexcinvalidop+0x16/0x20 ? _warnprintk+0xc7/0x180 ? _warnprintk+0xd4/0x180 ? gidtablereleaseone+0x181/0x1a0 ibdevicerelease+0x71/0xe0 ? _pfxibdevicerelease+0x10/0x10 devicerelease+0x44/0xd0 kobjectput+0x135/0x3d0 putdevice+0x20/0x30 rxenetadd+0x7d/0xa0 rxenewlink+0xd7/0x190 nldevnewlink+0x1b0/0x2a0 ? _pfxnldevnewlink+0x10/0x10 rdmanlrcvmsg+0x1ad/0x2e0 rdmanlrcvskb.constprop.0+0x176/0x210 netlinkunicast+0x2de/0x400 netlinksendmsg+0x306/0x660 _socksendmsg+0x110/0x120 syssendmsg+0x30e/0x390 _syssendmsg+0x9b/0xf0 ? kstrtouint+0x6e/0xa0 ? kstrtouintfromuser+0x7c/0xb0 ? getpidtask+0xb0/0xd0 ? procfailnthwrite+0x5b/0x140 ? _fgetlight+0x9a/0x200 ? preemptcountadd+0x47/0xa0 _syssendmsg+0x61/0xd0 dosyscall64+0x50/0x110 entrySYSCALL64after_hwframe+0x76/0x7e