In the Linux kernel, the following vulnerability has been resolved:
RDMA/cma: Fix workqueue crash in cma_netevent_work_handler
struct rdma_cm_id has member "struct work_struct net_work" that is reused for enqueuing cma_netevent_work_handler()s onto cma_wq.
Below crash[1] can occur if more than one call to cma_netevent_callback() occurs in quick succession, which further enqueues cma_netevent_work_handler()s for the same rdma_cm_id, overwriting any previously queued work-item(s) that was just scheduled to run i.e. there is no guarantee the queued work item may run between two successive calls to cma_netevent_callback() and the 2nd INIT_WORK would overwrite the 1st work item (for the same rdma_cm_id), despite grabbing id_table_lock during enqueue.
Also drgn analysis [2] indicates the work item was likely overwritten.
Fix this by moving the INIT_WORK() to __rdma_create_id(), so that it doesn't race with any existing queue_work() or its worker thread.
[1] Trimmed crash stack: ============================================= BUG: kernel NULL pointer dereference, address: 0000000000000008 kworker/u256:6 ... 6.12.0-0... Workqueue: cma_netevent_work_handler [rdma_cm] (rdma_cm) RIP: 0010:process_one_work+0xba/0x31a Call Trace: worker_thread+0x266/0x3a0 kthread+0xcf/0x100 ret_from_fork+0x31/0x50 ret_from_fork_asm+0x1a/0x30 =============================================
[2] drgn crash analysis:
>>> trace = prog.crashed_thread().stack_trace() >>> trace (0) crash_setup_regs (./arch/x86/include/asm/kexec.h:111:15) (1) __crash_kexec (kernel/crash_core.c:122:4) (2) panic (kernel/panic.c:399:3) (3) oops_end (arch/x86/kernel/dumpstack.c:382:3) ... (8) process_one_work (kernel/workqueue.c:3168:2) (9) process_scheduled_works (kernel/workqueue.c:3310:3) (10) worker_thread (kernel/workqueue.c:3391:4) (11) kthread (kernel/kthread.c:389:9)
Line workqueue.c:3168 for this kernel version is in process_one_work(): 3168 strscpy(worker->desc, pwq->wq->name, WORKER_DESC_LEN);
>>> trace[8]["work"] *(struct work_struct *)0xffff92577d0a21d8 = { .data = (atomic_long_t){ .counter = (s64)536870912, <=== Note }, .entry = (struct list_head){ .next = (struct list_head *)0xffff924d075924c0, .prev = (struct list_head *)0xffff924d075924c0, }, .func = (work_func_t)cma_netevent_work_handler+0x0 = 0xffffffffc2cec280, }
Suspicion is that pwq is NULL: >>> trace[8]["pwq"] (struct pool_workqueue *)<absent>
In process_one_work(), pwq is assigned from: struct pool_workqueue *pwq = get_work_pwq(work);
and get_work_pwq() is: static struct pool_workqueue *get_work_pwq(struct work_struct *work) { unsigned long data = atomic_long_read(&work->data);
if (data & WORK_STRUCT_PWQ) return work_struct_pwq(data); else return NULL; }
WORK_STRUCT_PWQ is 0x4: >>> print(repr(prog['WORK_STRUCT_PWQ'])) Object(prog, 'enum work_flags', value=4)
But work->data is 536870912 which is 0x20000000. So, get_work_pwq() returns NULL and we crash in process_one_work(): 3168 strscpy(worker->desc, pwq->wq->name, WORKER_DESC_LEN); =============================================
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade kernel-modules-extra-commonUpgrade kernel-livepatch-6.12.25-32.101Upgrade perfUpgrade kernel-toolsUpgrade kernel-debuginfo-common-aarch64Upgrade python3-perf6.12-debuginfoUpgrade kernel-libbpf-develUpgrade perf-debuginfoUpgrade kernel-headersUpgrade kernel-tools-develUpgrade python3-perfUpgrade kernel6.12-debuginfoUpgrade perf6.12-debuginfoUpgrade kernelUpgrade python3-perf6.12Upgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel-libbpf-staticUpgrade kernel-libbpfUpgrade bpftoolUpgrade bpftool-debuginfoUpgrade kernel6.12Upgrade kernel-tools-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade python3-perf-debuginfoUpgrade kernel-debuginfoUpgrade kernel-modules-extraUpgrade kernel-livepatch-6.1.140-154.222Upgrade perf6.12Upgrade kernel6.12-modules-extraUpgrade kernel-libbpf-debuginfoUpgrade kernel-develUpgrade kernel6.12-debuginfo-common-aarch64 | Jun 24, 2025 | May 1, 2025 |
| Debian | — | Upgrade linux-6.1Upgrade linux | May 5, 2025 | May 1, 2025 |
| Suse | — | Upgrade kernel-azure-extraUpgrade kernel-kvmsmall-develUpgrade kernel-rt-extraUpgrade dtb-appleUpgrade dtb-sprdUpgrade kernel-rt-optionalUpgrade kernel-rtUpgrade kernel-rt_debug-vdsoUpgrade reiserfs-kmp-64kbUpgrade dtb-rockchipUpgrade kernel-source-rtUpgrade dtb-qcomUpgrade dtb-socionextUpgrade reiserfs-kmp-rtUpgrade kernel-default-livepatchUpgrade kernel-macrosUpgrade dtb-broadcomUpgrade gfs2-kmp-rtUpgrade ocfs2-kmp-64kbUpgrade kernel-azure-develUpgrade kernel-azure-vdsoUpgrade kernel-rt-vdsoUpgrade kselftests-kmp-azureUpgrade kernel-docsUpgrade dtb-freescaleUpgrade cluster-md-kmp-defaultUpgrade dtb-amlogicUpgrade kernel-kvmsmallUpgrade dtb-nvidiaUpgrade kselftests-kmp-defaultUpgrade kernel-debug-vdsoUpgrade kernel-docs-htmlUpgrade kernel-syms-azureUpgrade dlm-kmp-defaultUpgrade dtb-marvellUpgrade kernel-default-extraUpgrade kselftests-kmp-rtUpgrade dtb-apmUpgrade kernel-rt_debug-develUpgrade kernel-default-base-rebuildUpgrade kernel-azureUpgrade kernel-kvmsmall-vdsoUpgrade kernel-default-develUpgrade kernel-obs-buildUpgrade dtb-amazonUpgrade kernel-devel-azureUpgrade kernel-rt-livepatch-develUpgrade kernel-syms-rtUpgrade kernel-rt_debugUpgrade kernel-obs-qaUpgrade kernel-source-vanillaUpgrade dlm-kmp-azureUpgrade kselftests-kmp-64kbUpgrade kernel-source-azureUpgrade kernel-default-optionalUpgrade gfs2-kmp-azureUpgrade kernel-devel-rtUpgrade dtb-armUpgrade kernel-default-vdsoUpgrade kernel-default-baseUpgrade dtb-amdUpgrade cluster-md-kmp-azureUpgrade reiserfs-kmp-azureUpgrade cluster-md-kmp-rtUpgrade kernel-debug-develUpgrade dtb-xilinxUpgrade kernel-develUpgrade kernel-symsUpgrade kernel-defaultUpgrade kernel-default-livepatch-develUpgrade dtb-hisiliconUpgrade ocfs2-kmp-defaultUpgrade kernel-64kbUpgrade dlm-kmp-64kbUpgrade kernel-azure-optionalUpgrade dtb-alteraUpgrade dlm-kmp-rtUpgrade cluster-md-kmp-64kbUpgrade ocfs2-kmp-rtUpgrade kernel-zfcpdumpUpgrade kernel-64kb-optionalUpgrade kernel-64kb-extraUpgrade dtb-caviumUpgrade ocfs2-kmp-azureUpgrade kernel-rt-develUpgrade dtb-allwinnerUpgrade dtb-lgUpgrade dtb-renesasUpgrade reiserfs-kmp-defaultUpgrade kernel-debugUpgrade dtb-exynosUpgrade gfs2-kmp-defaultUpgrade dtb-mediatekUpgrade kernel-sourceUpgrade kernel-64kb-develUpgrade gfs2-kmp-64kb | Dec 5, 2025 | Jun 16, 2025 |
| Ubuntu | — | Upgrade linux-image-6.14.0-22-generic-64kUpgrade linux-image-nvidia-lowlatency-6.8Upgrade linux-image-nvidiaUpgrade linux-image-raspi-realtime-6.8Upgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-1043-gke-64kUpgrade linux-image-lowlatencyUpgrade linux-image-nvidia-lowlatencyUpgrade linux-image-6.8.0-1046-azureUpgrade linux-image-oem-22.04aUpgrade linux-image-gcpUpgrade linux-image-azure-lts-24.04Upgrade linux-image-6.8.0-1047-gcp-fipsUpgrade linux-image-raspiUpgrade linux-image-ibm-6.8Upgrade linux-image-genericUpgrade linux-image-6.8.0-1043-gkeUpgrade linux-image-oracle-lts-24.04Upgrade linux-image-6.14.0-1007-aws-64kUpgrade linux-image-fipsUpgrade linux-image-6.8.0-1046-azure-fipsUpgrade linux-image-gkeop-6.8Upgrade linux-image-ibmUpgrade linux-image-generic-64k-6.8Upgrade linux-image-raspi-realtimeUpgrade linux-image-6.8.0-100-lowlatency-64kUpgrade linux-image-6.8.0-1046-aws-64kUpgrade linux-image-gke-6.8Upgrade linux-image-6.8.0-1046-nvidia-64kUpgrade linux-image-oracle-64k-lts-24.04Upgrade linux-image-oem-22.04Upgrade linux-image-6.8.0-1051-azureUpgrade linux-image-realtime-6.8.1Upgrade linux-image-xilinxUpgrade linux-image-6.8.0-100-lowlatencyUpgrade linux-image-gcp-fipsUpgrade linux-image-oem-22.04bUpgrade linux-image-fips-6.8Upgrade linux-image-6.8.1-1041-realtimeUpgrade linux-image-virtual-hwe-22.04Upgrade linux-image-nvidia-64k-hwe-22.04Upgrade linux-image-gkeopUpgrade linux-image-azure-fipsUpgrade linux-image-oem-22.04cUpgrade linux-image-azure-fips-6.8Upgrade linux-image-azure-fdeUpgrade linux-image-oracle-64k-6.8Upgrade linux-image-lowlatency-64k-hwe-22.04Upgrade linux-image-gcp-fips-6.8Upgrade linux-image-virtual-6.8Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-lowlatency-64kUpgrade linux-image-6.8.0-1043-oracleUpgrade linux-image-aws-6.8Upgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1046-awsUpgrade linux-image-6.8.0-1046-nvidia-lowlatency-64kUpgrade linux-image-intel-iotgUpgrade linux-image-6.14.0-1007-awsUpgrade linux-image-gcp-64k-lts-24.04Upgrade linux-image-6.14.0-1007-raspiUpgrade linux-image-6.8.0-100-genericUpgrade linux-image-aws-64k-6.8Upgrade linux-image-azureUpgrade linux-image-6.8.0-1023-xilinxUpgrade linux-image-6.14.0-1008-gcpUpgrade linux-image-6.8.0-1046-nvidia-lowlatencyUpgrade linux-image-gke-64kUpgrade linux-image-generic-6.8Upgrade linux-image-generic-64kUpgrade linux-image-aws-lts-24.04Upgrade linux-image-gcp-lts-24.04Upgrade linux-image-gcp-6.8Upgrade linux-image-lowlatency-64k-6.8Upgrade linux-image-6.8.0-1047-raspiUpgrade linux-image-6.14.0-1007-azureUpgrade linux-image-nvidia-64kUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-gcp-64k-6.8Upgrade linux-image-6.8.0-1047-gcpUpgrade linux-image-6.14.0-1007-oracle-64kUpgrade linux-image-nvidia-lowlatency-64kUpgrade linux-image-6.8.0-1030-gkeopUpgrade linux-image-6.14.0-1004-realtimeUpgrade linux-image-nvidia-6.8Upgrade linux-image-6.8.0-100-generic-64kUpgrade linux-image-generic-hwe-22.04Upgrade linux-image-realtime-hwe-22.04Upgrade linux-image-gkeUpgrade linux-image-aws-fips-6.8Upgrade linux-image-6.14.0-1007-oracleUpgrade linux-image-realtimeUpgrade linux-image-oem-22.04dUpgrade linux-image-kvmUpgrade linux-image-aws-fipsUpgrade linux-image-aws-64k-lts-24.04Upgrade linux-image-aws-64kUpgrade linux-image-6.8.0-1044-ibmUpgrade linux-image-nvidia-64k-6.8Upgrade linux-image-virtualUpgrade linux-image-nvidia-lowlatency-64k-6.8Upgrade linux-image-6.8.0-2037-raspi-realtimeUpgrade linux-image-6.14.0-22-genericUpgrade linux-image-raspi-6.8Upgrade linux-image-6.8.0-1046-aws-fipsUpgrade linux-image-lowlatency-6.8Upgrade linux-image-azure-6.8Upgrade linux-image-6.14.0-1008-gcp-64kUpgrade linux-image-6.14.0-1007-azure-fdeUpgrade linux-image-oracle-6.8Upgrade linux-image-6.8.0-1043-oracle-64kUpgrade linux-image-generic-64k-hwe-22.04Upgrade linux-image-gke-64k-6.8Upgrade linux-image-lowlatency-hwe-22.04Upgrade linux-image-nvidia-hwe-22.04Upgrade linux-image-gcp-64kUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1047-gcp-64kUpgrade linux-image-awsUpgrade linux-image-6.8.0-1046-nvidiaUpgrade linux-image-6.8.0-100-fipsUpgrade linux-image-xilinx-6.8Upgrade linux-image-oracleUpgrade linux-image-xilinx-zynqmp | Jun 26, 2025 | May 1, 2025 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Oct 13, 2025 | May 1, 2025 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub