Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2024-46704— workqueue: Fix spruious data race in __flush_work()

EPSS 0.05% · P17
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2024-46704

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
workqueue: Fix spruious data race in __flush_work()
Source: NVD (National Vulnerability Database)
Vulnerability 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.
Source: NVD (National Vulnerability Database)
CVSS Information
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Type
N/A
Source: NVD (National Vulnerability Database)
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于在__flush_work函数中存在不必要的数据竞争。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

VendorProductAffected VersionsCPESubscribe
LinuxLinux 134874e2eee9380c2700411d4844cbc29297bc01 ~ 91d09642127a32fde231face2ff489af70eef316 -
LinuxLinux 6.10 -

II. Public POCs for CVE-2024-46704

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-46704

登录查看更多情报信息。

Same Patch Batch · Linux · 2024-09-13 · 40 CVEs total

CVE-2024-46703Revert "serial: 8250_omap: Set the console genpd always on if no console suspend"
CVE-2024-46692firmware: qcom: scm: Mark get_wq_ctx() as atomic call
CVE-2024-46694drm/amd/display: avoid using null object of framebuffer
CVE-2024-46696nfsd: fix potential UAF in nfsd4_cb_getattr_release
CVE-2024-46695selinux,smack: don't bypass permissions check in inode_setsecctx hook
CVE-2024-46698video/aperture: optionally match the device in sysfb_disable()
CVE-2024-46697nfsd: ensure that nfsd4_fattr_args.context is zeroed out
CVE-2024-46699drm/v3d: Disable preemption while updating GPU stats
CVE-2024-46701libfs: fix infinite directory reads for offset dir
CVE-2024-46702thunderbolt: Mark XDomain as unplugged when router is removed
CVE-2024-46693soc: qcom: pmic_glink: Fix race during initialization
CVE-2024-46705drm/xe: reset mmio mappings with devm
CVE-2024-46706tty: serial: fsl_lpuart: mark last busy before uart_add_one_port
CVE-2024-46707KVM: arm64: Make ICC_*SGI*_EL1 undef in the absence of a vGICv3
CVE-2024-46709drm/vmwgfx: Fix prime with external buffers
CVE-2024-46708pinctrl: qcom: x1e80100: Fix special pin offsets
CVE-2024-46710drm/vmwgfx: Prevent unmapping active read buffers
CVE-2024-46711mptcp: pm: fix ID 0 endp usage after multiple re-creations
CVE-2024-46712drm/vmwgfx: Disable coherent dumb buffers without 3d
CVE-2024-46713perf/aux: Fix AUX buffer serialization

Showing top 20 of 40 CVEs. View all on vendor page → →

IV. Related Vulnerabilities

V. Comments for CVE-2024-46704

No comments yet


Leave a comment