In the Linux kernel, the following vulnerability has been resolved:
RDMA/srpt: Add a check for valid 'mad_agent' pointer
When unregistering MAD agent, srpt module has a non-null check for 'madagent' pointer before invoking ibunregistermadagent(). This check can pass if 'madagent' variable holds an error value. The 'madagent' can have an error value for a short window when srptaddone() and srptremoveone() is executed simultaneously.
In srpt module, added a valid pointer check for 'sport->mad_agent' before unregistering MAD agent.
This issue can hit when RoCE driver unregisters ib_device
BUG: kernel NULL pointer dereference, address: 000000000000004d PGD 145003067 P4D 145003067 PUD 2324fe067 PMD 0 Oops: 0002 [#1] PREEMPT SMP NOPTI CPU: 10 PID: 4459 Comm: kworker/u80:0 Kdump: loaded Tainted: P Hardware name: Dell Inc. PowerEdge R640/06NR82, BIOS 2.5.4 01/13/2020 Workqueue: bnxtre bnxtretask [bnxtre] RIP: 0010:rawspinlockirqsave+0x19/0x40 Call Trace: ibunregistermadagent+0x46/0x2f0 [ibcore] IPv6: ADDRCONF(NETDEVCHANGE): bond0: link becomes ready ? _schedule+0x20b/0x560 srptunregistermadagent+0x93/0xd0 [ibsrpt] srptremoveone+0x20/0x150 [ibsrpt] removeclientcontext+0x88/0xd0 [ibcore] bond0: (slave p2p1): link status definitely up, 100000 Mbps full duplex disabledevice+0x8a/0x160 [ibcore] bond0: active interface up! ? kernfsnamehash+0x12/0x80 (NULL device *): Bonding Info Received: rdev: 000000006c0b8247 _ibunregisterdevice+0x42/0xb0 [ibcore] (NULL device *): Master: mode: 4 numslaves:2 ibunregisterdevice+0x22/0x30 [ibcore] (NULL device *): Slave: id: 105069936 name:p2p1 link:0 state:0 bnxtrestopqpsandibuninit+0x83/0x90 [bnxtre] bnxtrealloclag+0x12e/0x4e0 [bnxtre]
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/54xxx/CVE-2023-54274.json",
"cna_assigner": "Linux"
}