In the Linux kernel, the following vulnerability has been resolved:
scsi: qla2xxx: Perform lockless command completion in abort path
While adding and removing the controller, the following call trace was observed:
WARNING: CPU: 3 PID: 623596 at kernel/dma/mapping.c:532 dmafreeattrs+0x33/0x50 CPU: 3 PID: 623596 Comm: sh Kdump: loaded Not tainted 5.14.0-96.el9.x8664 #1 RIP: 0010:dmafree_attrs+0x33/0x50
Call Trace: qla2x00asyncsnsspdone+0x107/0x1b0 [qla2xxx] qla2x00abortsrb+0x8e/0x250 [qla2xxx] ? qldbg+0x70/0x100 [qla2xxx] _qla2x00abortallcmds+0x108/0x190 [qla2xxx] qla2x00abortallcmds+0x24/0x70 [qla2xxx] qla2x00abortispcleanup+0x305/0x3e0 [qla2xxx] qla2x00removeone+0x364/0x400 [qla2xxx] pcideviceremove+0x36/0xa0 _devicereleasedriver+0x17a/0x230 devicereleasedriver+0x24/0x30 pcistopbusdevice+0x68/0x90 pcistopandremovebusdevicelocked+0x16/0x30 removestore+0x75/0x90 kernfsfopwriteiter+0x11c/0x1b0 newsyncwrite+0x11f/0x1b0 vfswrite+0x1eb/0x280 ksyswrite+0x5f/0xe0 dosyscall64+0x5c/0x80 ? douseraddrfault+0x1d8/0x680 ? dosyscall64+0x69/0x80 ? excpagefault+0x62/0x140 ? asmexcpagefault+0x8/0x30 entrySYSCALL64after_hwframe+0x44/0xae
The command was completed in the abort path during driver unload with a lock held, causing the warning in abort path. Hence complete the command without any lock held.