In the Linux kernel, the following vulnerability has been resolved:
RDMA/rxe: Fix mr->map double free
rxemrcleanup() which tries to free mr->map again will be called when rxemrinit_user() fails:
CPU: 0 PID: 4917 Comm: rdmaflushserv Kdump: loaded Not tainted 6.1.0-rc1-roce-flush+ #25 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.0-0-gd239552ce722-prebuilt.qemu.org 04/01/2014 Call Trace: <TASK> dumpstacklvl+0x45/0x5d panic+0x19e/0x349 endreport.part.0+0x54/0x7c kasanreport.cold+0xa/0xf rxemrcleanup+0x9d/0xf0 [rdmarxe] _rxecleanup+0x10a/0x1e0 [rdmarxe] rxeregusermr+0xb7/0xd0 [rdmarxe] ibuverbsregmr+0x26a/0x480 [ibuverbs] ibuverbshandlerUVERBSMETHODINVOKEWRITE+0x1a2/0x250 [ibuverbs] ibuverbscmdverbs+0x1397/0x15a0 [ib_uverbs]
This issue was firstly exposed since commit b18c7da63fcb ("RDMA/rxe: Fix memory leak in error path code") and then we fixed it in commit 8ff5f5d9d8cf ("RDMA/rxe: Prevent double freeing rxemapset()") but this fix was reverted together at last by commit 1e75550648da (Revert "RDMA/rxe: Create duplicate mapping tables for FMRs")
Simply let rxemrcleanup() always handle freeing the mr->map once it is successfully allocated.