In the Linux kernel, the following vulnerability has been resolved:
scsi: qla2xxx: Fix scheduling while atomic
The driver makes a call into midlayer (fcremoteport_delete) which can put the thread to sleep. The thread that originates the call is in interrupt context. The combination of the two trigger a crash. Schedule the call in non-interrupt context where it is more safe.
kernel: BUG: scheduling while atomic: swapper/7/0/0x00010000 kernel: Call Trace: kernel: <IRQ> kernel: dumpstack+0x66/0x81 kernel: _schedulebug.cold.90+0x5/0x1d kernel: _schedule+0x7af/0x960 kernel: schedule+0x28/0x80 kernel: scheduletimeout+0x26d/0x3b0 kernel: waitforcompletion+0xb4/0x140 kernel: ? wakeupq+0x70/0x70 kernel: _waitrcugp+0x12c/0x160 kernel: ? sdevevtalloc+0xc0/0x180 [scsimod] kernel: synchronizesched+0x6c/0x80 kernel: ? callrcubh+0x20/0x20 kernel: ? _bpftracercuinvokecallback+0x10/0x10 kernel: sdevevtalloc+0xfd/0x180 [scsimod] kernel: stargetforeachdevice+0x85/0xb0 [scsimod] kernel: ? scsiinitio+0x360/0x3d0 [scsimod] kernel: scsiinitio+0x388/0x3d0 [scsimod] kernel: deviceforeachchild+0x54/0x90 kernel: fcremoteportdelete+0x70/0xe0 [scsitransportfc] kernel: qla2x00schedulerportdel+0x62/0xf0 [qla2xxx] kernel: qla2x00markdevicelost+0x9c/0xd0 [qla2xxx] kernel: qla24xxhandleplogidoneevent+0x55f/0x570 [qla2xxx] kernel: qla2x00asyncloginspdone+0xd2/0x100 [qla2xxx] kernel: qla24xxlogioentry+0x13a/0x3c0 [qla2xxx] kernel: qla24xxprocessresponsequeue+0x306/0x400 [qla2xxx] kernel: qla24xxmsixrspq+0x3f/0xb0 [qla2xxx] kernel: _handleirqeventpercpu+0x40/0x180 kernel: handleirqeventpercpu+0x30/0x80 kernel: handleirq_event+0x36/0x60