# CVE-2024-46704: linux: In the Linux kernel, the following vulnerability has been resolved:  workqueue: Fix spruious data race in __flush_wor...

CVE-2024-46704 is fixed in linux on 1 platform, first by DEBIAN-CVE-2024-46704, released September 13, 2024. It is not reported as exploited. Patch Radar priority: Routine.

- Web page: https://patchblox.com/security/cve/CVE-2024-46704
- Priority: Routine
- CVSS: 4.7 (medium)
- EPSS: 0.0018
- CISA KEV: not listed
- Exploited (vendor report): no
- Publicly disclosed: no
- Published: Sep 13, 2024

## Description

In the Linux kernel, the following vulnerability has been resolved:  workqueue: Fix spruious data race in __flush_work()  When flushing a work item for cancellation, __flush_work() knows that it exclusively owns the work item through its PENDING bit. 134874e2eee9 ("workqueue: Allow cancel_work_sync() and disable_work() from atomic contexts on BH work items") added a read of @work->data to determine whether to use busy wait for BH work items that are being canceled. While the read is safe when @from_cancel, @work->data was read before testing @from_cancel to simplify code structure:  	data = *work_data_bits(work); 	if (from_cancel && 	    !WARN_ON_ONCE(data & WORK_STRUCT_PWQ) && (data & WORK_OFFQ_BH)) {  While the read data was never used if !@from_cancel, this could trigger KCSAN data race detection spuriously:    ==================================================================   BUG: KCSAN: data-race in __flush_work / __flush_work    write to 0xffff8881223aa3e8 of 8 bytes by task 3998 on cpu 0:    instrument_write include/linux/instrumented.h:41 [inline]    ___set_bit include/asm-generic/bitops/instrumented-non-atomic.h:28 [inline]    insert_wq_barrier kernel/workqueue.c:3790 [inline]    start_flush_work kernel/workqueue.c:4142 [inline]    __flush_work+0x30b/0x570 kernel/workqueue.c:4178    flush_work kernel/workqueue.c:4229 [inline]    ...    read to 0xffff8881223aa3e8 of 8 bytes by task 50 on cpu 1:    __flush_work+0x42a/0x570 kernel/workqueue.c:4188    flush_work kernel/workqueue.c:4229 [inline]    flush_delayed_work+0x66/0x70 kernel/workqueue.c:4251    ...    value changed: 0x0000000000400000 -> 0xffff88810006c00d  Reorganize the code so that @from_cancel is tested before @work->data is accessed. The only problem is triggering KCSAN detection spuriously. This shouldn't need READ_ONCE() or other access qualifiers.  No functional changes.

## Where it's fixed

| Platform | Product | Fixed in | Fix | Released |
|---|---|---|---|---|
| Linux | linux Debian 13.5 (trixie) | 6.10.7-1 | [DEBIAN-CVE-2024-46704](https://patchblox.com/security/data/fix/linux/debian-cve-2024-46704.md) | Sep 13, 2024 |
| Linux | linux Debian 14 | 6.10.7-1 | [DEBIAN-CVE-2024-46704](https://patchblox.com/security/data/fix/linux/debian-cve-2024-46704.md) | Sep 13, 2024 |

---

Data as of 2026-11-08T13:06:02Z UTC. Source: Patchblox Patch Radar (https://patchblox.com/security/patch-radar). Patchblox finds out-of-date software on Windows, macOS and Linux and updates it through release rings: https://patchblox.com/demo

Free to use with attribution: show "Data: Patchblox Patch Radar" with a link to https://patchblox.com/security/patch-radar. Terms, including what needs a written agreement: https://patchblox.com/security/patch-radar/use-the-data

Product names, logos and trademarks shown on Patch Radar belong to their respective owners. They are used only to identify the software each security fix applies to and to help readers find their platform. Their use does not imply any affiliation with, or endorsement by, those owners, and Patchblox is not affiliated with any of them.
