CVE-2024-47696·Kernel vulnerability
In the Linux kernel, the following vulnerability has been resolved: RDMA/iwcm: Fix WARNING:at_kernel/workqueue.c:#check_flush_dependency In the commit aee2424246f9 ("RDMA/iwcm: Fix a use-after-free related to destroying CM IDs"), the function flush_workqueue is invoked to flush the work queue iwcm_wq. But at that time, the work queue iwcm_wq was created via the function alloc_ordered_workqueue without the flag WQ_MEM_RECLAIM. Because the current process is trying to flush the whole iwcm_wq, if iwcm_wq doesn't have the flag WQ_MEM_RECLAIM, verify that the current process is not reclaiming memory or running on a workqueue which doesn't have the flag WQ_MEM_RECLAIM 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] ? check_flush_dependency (kernel/workqueue.c:3706 (discriminator 9)) [ 125.375689][ T1430] ? report_bug (lib/bug.c:180 lib/bug.c:219) [ 125.382505][ T1430] ? handle_bug (arch/x86/kernel/traps.c:239) [ 125.388987][ T1430] ? exc_invalid_op (arch/x86/kernel/traps.c:260 (discriminator 1)) [ 125.395831][ T1430] ? asm_exc_invalid_op (arch/x86/include/asm/idtentry.h:621) [ 125.403125][ T1430] ? check_flush_dependency (kernel/workqueue.c:3706 (discriminator 9)) [ 125.410984][ T1430] ? check_flush_dependency (kernel/workqueue.c:3706 (discriminator 9)) [ 125.418764][ T1430] __flush_workqueue (kernel/workqueue.c:3970) [ 125.426021][ T1430] ? __pfx___might_resched (kernel/sched/core.c:10151) [ 125.433431][ T1430] ? destroy_cm_id (drivers/infiniband/core/iwcm.c:375) iw_cm [ 125.441209][ T1430] ? __pfx___flush_workqueue (kernel/workqueue.c:3910) [ 125.473900][ T1430] ? _raw_spin_lock_irqsave (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/spinlock_api_smp.h:111 kernel/locking/spinlock.c:162) [ 125.473909][ T1430] ? __pfx__raw_spin_lock_irqsave (kernel/locking/spinlock.c:161) [ 125.482537][ T1430] _destroy_id (drivers/infiniband/core/cma.c:2044) rdma_cm [ 125.495072][ T1430] nvme_rdma_free_queue (drivers/nvme/host/rdma.c:656 drivers/nvme/host/rdma.c:650) nvme_rdma [ 125.505827][ T1430] nvme_rdma_reset_ctrl_work (drivers/nvme/host/rdma.c:2180) nvme_rdma [ 125.505831][ T1430] process_one_work (kernel/workqueue.c:3231) [ 125.515122][ T1430] worker_thread (kernel/workqueue.c:3306 kernel/workqueue.c:3393) [ 125.515127][ T1430] ? __pfx_worker_thread (kernel/workqueue.c:3339) [ 125.531837][ T1430] kthread (kernel/kthread.c:389) [ 125.539864][ T1430] ? __pfx_kthread (kernel/kthread.c:342) [ 125.550628][ T1430] ret_from_fork (arch/x86/kernel/process.c:147) [ 125.558840][ T1430] ? __pfx_kthread (kernel/kthread.c:342) [ 125.558844][ T1430] ret_from_fork_asm (arch/x86/entry/entry_64.S:257) [ 125.566487][ T1430] </TASK> [ 125.566488][ T1430] ---[ end trace 0000000000000000 ]---
- Severity
- high
- Software
- Kernel
- Fixed in
- 6.11.2
- Published
- 2024-10-21
Affected versions
From: 6.11
Until: 6.11.2
Fixed in: 6.11.2
How to fix this CVE
Update your Linux kernel to version 6.11.2 or later to fix a workqueue synchronization issue that causes kernel warnings and potential deadlocks in RDMA/iWARP connection management. Systems running kernel versions 6.11 through 6.11.1 should prioritize this update, particularly those using RDMA/iWARP for NVMe over RDMA or InfiniBand workloads.
sudo dnf update kernel kernel-develDefensia detects this vulnerability
How to check if you are affected
- Run 'uname -r' to check your installed kernel version and confirm if it falls within 6.11.0 to 6.11.1
- Check if RDMA/iWARP is configured by running 'lsmod | grep iw_cm' to see if the iwcm kernel module is loaded
- Review kernel logs for the specific warning using 'dmesg | grep -i "check_flush_dependency\|iwcm_wq"' or 'journalctl -k | grep -i "check_flush_dependency"'
- Verify the fix by upgrading to kernel 6.11.2+ and running 'uname -r' to confirm, then check logs are no longer generating the flush_dependency warning
FAQ
What is CVE-2024-47696?
CVE-2024-47696 is a kernel workqueue deadlock vulnerability in RDMA/iWARP connection management where the iwcm_wq workqueue lacks the WQ_MEM_RECLAIM flag, causing kernel warnings and potential forward-progress deadlocks when flushing the queue during memory reclamation operations.
Is CVE-2024-47696 being actively exploited?
No, CVE-2024-47696 is not listed in the CISA Known Exploited Vulnerabilities catalog and has no public exploit code available. However, it can cause system instability if triggered through normal RDMA operations.
What versions of Kernel are affected by CVE-2024-47696?
Linux kernel versions 6.11.0 through 6.11.1 are affected. The vulnerability was resolved in kernel version 6.11.2 and later.
How do I check if my server is vulnerable to CVE-2024-47696?
Run 'uname -r' to check your kernel version. If it shows 6.11.0 or 6.11.1, your system is vulnerable. Additionally, check if RDMA/iWARP is in use with 'lsmod | grep iw_cm'.
Does Defensia detect CVE-2024-47696?
Yes — Defensia's CVE advisory scanner compares installed package versions against the NVD database. If the Linux kernel is installed on a monitored server, CVE-2024-47696 will appear in your dashboard with remediation steps.
Related Kernel CVEs
References
- https://git.kernel.org/stable/c/29b3bbd912b8db86df7a3c180b910ccb621f5635
- https://git.kernel.org/stable/c/2efe8da2ddbf873385b4bc55366d09350b408df6
- https://git.kernel.org/stable/c/86dfdd8288907f03c18b7fb462e0e232c4f98d89
- https://git.kernel.org/stable/c/8b7df76356d098f85f3bd2c7cf6fb43f531893d7
- https://git.kernel.org/stable/c/a09dc967b3c58899e259c0aea092f421d22a0b04
Track CVEs across your fleet automatically
Defensia scans your Linux servers and tells you exactly which ones are running vulnerable versions — including CVE-2024-47696. Free for 1 server.
Get started free