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
[
{
"id": "CVE-2022-49156-01f224b2",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@78225d6a2a4ffdb2250ce2b7691a9e68a3f86912",
"digest": {
"length": 4548.0,
"function_hash": "308819090271158091631270170490313477325"
},
"signature_version": "v1",
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "qla24xx_handle_plogi_done_event",
"file": "drivers/scsi/qla2xxx/qla_init.c"
}
},
{
"id": "CVE-2022-49156-21ab9833",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7fef50214dd04427233a2e66cd624d468e67aecb",
"digest": {
"length": 4187.0,
"function_hash": "180809332050924667087139410395809205033"
},
"signature_version": "v1",
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "qla24xx_handle_plogi_done_event",
"file": "drivers/scsi/qla2xxx/qla_init.c"
}
},
{
"id": "CVE-2022-49156-705961a8",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@826a9d4a00d1424afa961504aec6298ee92d5053",
"digest": {
"line_hashes": [
"123061795998100527133225826219313548716",
"104096509691640453248520954820095360720",
"188102849765942636536533673221733152568",
"76207983185084522001300549807111031006",
"24108684672423921830331995458616150257",
"165831985267922831100630709747740401898",
"270832737166703598066396203200250147219",
"187106680843810582660050993256798062516",
"296929757781113719877291592823007132309"
],
"threshold": 0.9
},
"signature_version": "v1",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/scsi/qla2xxx/qla_init.c"
}
},
{
"id": "CVE-2022-49156-709a5914",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@826a9d4a00d1424afa961504aec6298ee92d5053",
"digest": {
"length": 4548.0,
"function_hash": "308819090271158091631270170490313477325"
},
"signature_version": "v1",
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "qla24xx_handle_plogi_done_event",
"file": "drivers/scsi/qla2xxx/qla_init.c"
}
},
{
"id": "CVE-2022-49156-a253495b",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@78612f2fe8e26637476d756a44f0f05cca0d97de",
"digest": {
"line_hashes": [
"123061795998100527133225826219313548716",
"104096509691640453248520954820095360720",
"188102849765942636536533673221733152568",
"76207983185084522001300549807111031006",
"24108684672423921830331995458616150257",
"165831985267922831100630709747740401898",
"270832737166703598066396203200250147219",
"187106680843810582660050993256798062516",
"296929757781113719877291592823007132309"
],
"threshold": 0.9
},
"signature_version": "v1",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/scsi/qla2xxx/qla_init.c"
}
},
{
"id": "CVE-2022-49156-bb286241",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@afd438ff874ca40b74321b3fa19bd61adfd7ca0c",
"digest": {
"line_hashes": [
"123061795998100527133225826219313548716",
"104096509691640453248520954820095360720",
"188102849765942636536533673221733152568",
"76207983185084522001300549807111031006",
"24108684672423921830331995458616150257",
"165831985267922831100630709747740401898",
"270832737166703598066396203200250147219",
"187106680843810582660050993256798062516",
"296929757781113719877291592823007132309"
],
"threshold": 0.9
},
"signature_version": "v1",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/scsi/qla2xxx/qla_init.c"
}
},
{
"id": "CVE-2022-49156-c32713cc",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@7fef50214dd04427233a2e66cd624d468e67aecb",
"digest": {
"line_hashes": [
"123061795998100527133225826219313548716",
"104096509691640453248520954820095360720",
"188102849765942636536533673221733152568",
"76207983185084522001300549807111031006",
"24108684672423921830331995458616150257",
"165831985267922831100630709747740401898",
"270832737166703598066396203200250147219",
"187106680843810582660050993256798062516",
"296929757781113719877291592823007132309"
],
"threshold": 0.9
},
"signature_version": "v1",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/scsi/qla2xxx/qla_init.c"
}
},
{
"id": "CVE-2022-49156-c994ead3",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@78612f2fe8e26637476d756a44f0f05cca0d97de",
"digest": {
"length": 4548.0,
"function_hash": "308819090271158091631270170490313477325"
},
"signature_version": "v1",
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "qla24xx_handle_plogi_done_event",
"file": "drivers/scsi/qla2xxx/qla_init.c"
}
},
{
"id": "CVE-2022-49156-fb5fc71a",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@afd438ff874ca40b74321b3fa19bd61adfd7ca0c",
"digest": {
"length": 4548.0,
"function_hash": "308819090271158091631270170490313477325"
},
"signature_version": "v1",
"deprecated": false,
"signature_type": "Function",
"target": {
"function": "qla24xx_handle_plogi_done_event",
"file": "drivers/scsi/qla2xxx/qla_init.c"
}
},
{
"id": "CVE-2022-49156-fdccfe25",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@78225d6a2a4ffdb2250ce2b7691a9e68a3f86912",
"digest": {
"line_hashes": [
"123061795998100527133225826219313548716",
"104096509691640453248520954820095360720",
"188102849765942636536533673221733152568",
"76207983185084522001300549807111031006",
"24108684672423921830331995458616150257",
"165831985267922831100630709747740401898",
"270832737166703598066396203200250147219",
"187106680843810582660050993256798062516",
"296929757781113719877291592823007132309"
],
"threshold": 0.9
},
"signature_version": "v1",
"deprecated": false,
"signature_type": "Line",
"target": {
"file": "drivers/scsi/qla2xxx/qla_init.c"
}
}
]