In the Linux kernel, the following vulnerability has been resolved:
RDMA/irdma: Fix data race on CQP completion stats
CQP completion statistics is read lockesly in irdmawaitevent and irdmacheckcqpprogress while it can be updated in the completion thread irdmascccqgetcqeinfo on another CPU as KCSAN reports.
Make completion statistics an atomic variable to reflect coherent updates to it. This will also avoid load/store tearing logic bug potentially possible by compiler optimizations.
[77346.170861] BUG: KCSAN: data-race in irdmahandlecqpop [irdma] / irdmascccqgetcqeinfo [irdma]
[77346.171383] write to 0xffff8a3250b108e0 of 8 bytes by task 9544 on cpu 4: [77346.171483] irdmascccqgetcqeinfo+0x27a/0x370 [irdma] [77346.171658] irdmacqpcehandler+0x164/0x270 [irdma] [77346.171835] cqpcomplworker+0x1b/0x20 [irdma] [77346.172009] processonework+0x4d1/0xa40 [77346.172024] workerthread+0x319/0x700 [77346.172037] kthread+0x180/0x1b0 [77346.172054] retfrom_fork+0x22/0x30
[77346.172136] read to 0xffff8a3250b108e0 of 8 bytes by task 9838 on cpu 2: [77346.172234] irdmahandlecqpop+0xf4/0x4b0 [irdma] [77346.172413] irdmacqpaeqcmd+0x75/0xa0 [irdma] [77346.172592] irdmacreateaeq+0x390/0x45a [irdma] [77346.172769] irdmartinithw.cold+0x212/0x85d [irdma] [77346.172944] irdmaprobe+0x54f/0x620 [irdma] [77346.173122] auxiliarybusprobe+0x66/0xa0 [77346.173137] reallyprobe+0x140/0x540 [77346.173154] _driverprobedevice+0xc7/0x220 [77346.173173] driverprobedevice+0x5f/0x140 [77346.173190] _driverattach+0xf0/0x2c0 [77346.173208] busforeachdev+0xa8/0xf0 [77346.173225] driverattach+0x29/0x30 [77346.173240] busadddriver+0x29c/0x2f0 [77346.173255] driverregister+0x10f/0x1a0 [77346.173272] _auxiliarydriverregister+0xbc/0x140 [77346.173287] irdmainitmodule+0x55/0x1000 [irdma] [77346.173460] dooneinitcall+0x7d/0x410 [77346.173475] doinitmodule+0x81/0x2c0 [77346.173491] loadmodule+0x1232/0x12c0 [77346.173506] _dosysfinitmodule+0x101/0x180 [77346.173522] _x64sysfinitmodule+0x3c/0x50 [77346.173538] dosyscall64+0x39/0x90 [77346.173553] entrySYSCALL64after_hwframe+0x63/0xcd
[77346.173634] value changed: 0x0000000000000094 -> 0x0000000000000095
{
"cna_assigner": "Linux",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/54xxx/CVE-2023-54302.json"
}