In the Linux kernel, the following vulnerability has been resolved:
RDMA/iwcm: Fix WARNING:atkernel/workqueue.c:#checkflush_dependency
In the commit aee2424246f9 ("RDMA/iwcm: Fix a use-after-free related to destroying CM IDs"), the function flushworkqueue is invoked to flush the work queue iwcmwq.
But at that time, the work queue iwcmwq was created via the function allocorderedworkqueue without the flag WQMEM_RECLAIM.
Because the current process is trying to flush the whole iwcmwq, if iwcmwq doesn't have the flag WQMEMRECLAIM, verify that the current process is not reclaiming memory or running on a workqueue which doesn't have the flag WQMEMRECLAIM as that can break forward-progress guarantee leading to a deadlock.
The call trace is as below:
[ 125.350876][ T1430] Call Trace: [ 125.356281][ T1430] <TASK> [ 125.361285][ T1430] ? warn (kernel/panic.c:693) [ 125.367640][ T1430] ? checkflushdependency (kernel/workqueue.c:3706 (discriminator 9)) [ 125.375689][ T1430] ? reportbug (lib/bug.c:180 lib/bug.c:219) [ 125.382505][ T1430] ? handlebug (arch/x86/kernel/traps.c:239) [ 125.388987][ T1430] ? excinvalidop (arch/x86/kernel/traps.c:260 (discriminator 1)) [ 125.395831][ T1430] ? asmexcinvalidop (arch/x86/include/asm/idtentry.h:621) [ 125.403125][ T1430] ? checkflushdependency (kernel/workqueue.c:3706 (discriminator 9)) [ 125.410984][ T1430] ? checkflushdependency (kernel/workqueue.c:3706 (discriminator 9)) [ 125.418764][ T1430] _flushworkqueue (kernel/workqueue.c:3970) [ 125.426021][ T1430] ? _pfxmightresched (kernel/sched/core.c:10151) [ 125.433431][ T1430] ? destroycmid (drivers/infiniband/core/iwcm.c:375) iwcm [ 125.441209][ T1430] ? pfxflushworkqueue (kernel/workqueue.c:3910) [ 125.473900][ T1430] ? _rawspinlockirqsave (arch/x86/include/asm/atomic.h:107 include/linux/atomic/atomic-arch-fallback.h:2170 include/linux/atomic/atomic-instrumented.h:1302 include/asm-generic/qspinlock.h:111 include/linux/spinlock.h:187 include/linux/spinlockapismp.h:111 kernel/locking/spinlock.c:162) [ 125.473909][ T1430] ? pfxrawspinlockirqsave (kernel/locking/spinlock.c:161) [ 125.482537][ T1430] _destroyid (drivers/infiniband/core/cma.c:2044) rdmacm [ 125.495072][ T1430] nvmerdmafreequeue (drivers/nvme/host/rdma.c:656 drivers/nvme/host/rdma.c:650) nvmerdma [ 125.505827][ T1430] nvmerdmaresetctrlwork (drivers/nvme/host/rdma.c:2180) nvmerdma [ 125.505831][ T1430] processonework (kernel/workqueue.c:3231) [ 125.515122][ T1430] workerthread (kernel/workqueue.c:3306 kernel/workqueue.c:3393) [ 125.515127][ T1430] ? _pfxworkerthread (kernel/workqueue.c:3339) [ 125.531837][ T1430] kthread (kernel/kthread.c:389) [ 125.539864][ T1430] ? _pfxkthread (kernel/kthread.c:342) [ 125.550628][ T1430] retfromfork (arch/x86/kernel/process.c:147) [ 125.558840][ T1430] ? _pfxkthread (kernel/kthread.c:342) [ 125.558844][ T1430] retfromforkasm (arch/x86/entry/entry64.S:257) [ 125.566487][ T1430] </TASK> [ 125.566488][ T1430] ---[ end trace 0000000000000000 ]---
[
{
"id": "CVE-2024-47696-00d0303f",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"54500722442076768755284512596928000165",
"294169970546329670900183153713986114792",
"11242760305164786738219260277020041836",
"179600910527671678831976827448530630262"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@da0392698c62397c19deb1b9e9bdf2fbb5a9420e",
"target": {
"file": "drivers/infiniband/core/iwcm.c"
}
},
{
"id": "CVE-2024-47696-059a81c6",
"signature_version": "v1",
"digest": {
"function_hash": "53645084047679020475321507493692767774",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a09dc967b3c58899e259c0aea092f421d22a0b04",
"target": {
"file": "drivers/infiniband/core/iwcm.c",
"function": "iw_cm_init"
}
},
{
"id": "CVE-2024-47696-0679488b",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"54500722442076768755284512596928000165",
"294169970546329670900183153713986114792",
"11242760305164786738219260277020041836",
"179600910527671678831976827448530630262"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@86dfdd8288907f03c18b7fb462e0e232c4f98d89",
"target": {
"file": "drivers/infiniband/core/iwcm.c"
}
},
{
"id": "CVE-2024-47696-15dc0e08",
"signature_version": "v1",
"digest": {
"function_hash": "53645084047679020475321507493692767774",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@da0392698c62397c19deb1b9e9bdf2fbb5a9420e",
"target": {
"file": "drivers/infiniband/core/iwcm.c",
"function": "iw_cm_init"
}
},
{
"id": "CVE-2024-47696-243aff5b",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"54500722442076768755284512596928000165",
"294169970546329670900183153713986114792",
"11242760305164786738219260277020041836",
"179600910527671678831976827448530630262"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29b3bbd912b8db86df7a3c180b910ccb621f5635",
"target": {
"file": "drivers/infiniband/core/iwcm.c"
}
},
{
"id": "CVE-2024-47696-25a392b8",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"54500722442076768755284512596928000165",
"294169970546329670900183153713986114792",
"11242760305164786738219260277020041836",
"179600910527671678831976827448530630262"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8b7df76356d098f85f3bd2c7cf6fb43f531893d7",
"target": {
"file": "drivers/infiniband/core/iwcm.c"
}
},
{
"id": "CVE-2024-47696-2dd66365",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"54500722442076768755284512596928000165",
"294169970546329670900183153713986114792",
"11242760305164786738219260277020041836",
"179600910527671678831976827448530630262"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2efe8da2ddbf873385b4bc55366d09350b408df6",
"target": {
"file": "drivers/infiniband/core/iwcm.c"
}
},
{
"id": "CVE-2024-47696-2fb65b46",
"signature_version": "v1",
"digest": {
"function_hash": "53645084047679020475321507493692767774",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@86dfdd8288907f03c18b7fb462e0e232c4f98d89",
"target": {
"file": "drivers/infiniband/core/iwcm.c",
"function": "iw_cm_init"
}
},
{
"id": "CVE-2024-47696-31a71afd",
"signature_version": "v1",
"digest": {
"function_hash": "53645084047679020475321507493692767774",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a64f30db12bdc937c5108158d98c8eab1925c548",
"target": {
"file": "drivers/infiniband/core/iwcm.c",
"function": "iw_cm_init"
}
},
{
"id": "CVE-2024-47696-370fc546",
"signature_version": "v1",
"digest": {
"function_hash": "53645084047679020475321507493692767774",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@2efe8da2ddbf873385b4bc55366d09350b408df6",
"target": {
"file": "drivers/infiniband/core/iwcm.c",
"function": "iw_cm_init"
}
},
{
"id": "CVE-2024-47696-4564a543",
"signature_version": "v1",
"digest": {
"function_hash": "53645084047679020475321507493692767774",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@29b3bbd912b8db86df7a3c180b910ccb621f5635",
"target": {
"file": "drivers/infiniband/core/iwcm.c",
"function": "iw_cm_init"
}
},
{
"id": "CVE-2024-47696-67164d75",
"signature_version": "v1",
"digest": {
"function_hash": "53645084047679020475321507493692767774",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@da2708a19f45b4a7278adf523837c8db21d1e2b5",
"target": {
"file": "drivers/infiniband/core/iwcm.c",
"function": "iw_cm_init"
}
},
{
"id": "CVE-2024-47696-6f39c315",
"signature_version": "v1",
"digest": {
"function_hash": "53645084047679020475321507493692767774",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c8b18a75282cfd27822a8cc3c1f005c1ac8d1a58",
"target": {
"file": "drivers/infiniband/core/iwcm.c",
"function": "iw_cm_init"
}
},
{
"id": "CVE-2024-47696-8f08d60d",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"54500722442076768755284512596928000165",
"294169970546329670900183153713986114792",
"11242760305164786738219260277020041836",
"179600910527671678831976827448530630262"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@c8b18a75282cfd27822a8cc3c1f005c1ac8d1a58",
"target": {
"file": "drivers/infiniband/core/iwcm.c"
}
},
{
"id": "CVE-2024-47696-964240a1",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"54500722442076768755284512596928000165",
"294169970546329670900183153713986114792",
"11242760305164786738219260277020041836",
"179600910527671678831976827448530630262"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a64f30db12bdc937c5108158d98c8eab1925c548",
"target": {
"file": "drivers/infiniband/core/iwcm.c"
}
},
{
"id": "CVE-2024-47696-ad72c086",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"54500722442076768755284512596928000165",
"294169970546329670900183153713986114792",
"11242760305164786738219260277020041836",
"179600910527671678831976827448530630262"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@da2708a19f45b4a7278adf523837c8db21d1e2b5",
"target": {
"file": "drivers/infiniband/core/iwcm.c"
}
},
{
"id": "CVE-2024-47696-c70ee5aa",
"signature_version": "v1",
"digest": {
"function_hash": "53645084047679020475321507493692767774",
"length": 516.0
},
"deprecated": false,
"signature_type": "Function",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@8b7df76356d098f85f3bd2c7cf6fb43f531893d7",
"target": {
"file": "drivers/infiniband/core/iwcm.c",
"function": "iw_cm_init"
}
},
{
"id": "CVE-2024-47696-e8363822",
"signature_version": "v1",
"digest": {
"threshold": 0.9,
"line_hashes": [
"54500722442076768755284512596928000165",
"294169970546329670900183153713986114792",
"11242760305164786738219260277020041836",
"179600910527671678831976827448530630262"
]
},
"deprecated": false,
"signature_type": "Line",
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@a09dc967b3c58899e259c0aea092f421d22a0b04",
"target": {
"file": "drivers/infiniband/core/iwcm.c"
}
}
]