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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2024-53052— io_uring/rw: fix missing NOWAIT check for O_DIRECT start write

EPSS 0.01% · P1
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2024-53052

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
io_uring/rw: fix missing NOWAIT check for O_DIRECT start write
Source: NVD (National Vulnerability Database)
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: io_uring/rw: fix missing NOWAIT check for O_DIRECT start write When io_uring starts a write, it'll call kiocb_start_write() to bump the super block rwsem, preventing any freezes from happening while that write is in-flight. The freeze side will grab that rwsem for writing, excluding any new writers from happening and waiting for existing writes to finish. But io_uring unconditionally uses kiocb_start_write(), which will block if someone is currently attempting to freeze the mount point. This causes a deadlock where freeze is waiting for previous writes to complete, but the previous writes cannot complete, as the task that is supposed to complete them is blocked waiting on starting a new write. This results in the following stuck trace showing that dependency with the write blocked starting a new write: task:fio state:D stack:0 pid:886 tgid:886 ppid:876 Call trace: __switch_to+0x1d8/0x348 __schedule+0x8e8/0x2248 schedule+0x110/0x3f0 percpu_rwsem_wait+0x1e8/0x3f8 __percpu_down_read+0xe8/0x500 io_write+0xbb8/0xff8 io_issue_sqe+0x10c/0x1020 io_submit_sqes+0x614/0x2110 __arm64_sys_io_uring_enter+0x524/0x1038 invoke_syscall+0x74/0x268 el0_svc_common.constprop.0+0x160/0x238 do_el0_svc+0x44/0x60 el0_svc+0x44/0xb0 el0t_64_sync_handler+0x118/0x128 el0t_64_sync+0x168/0x170 INFO: task fsfreeze:7364 blocked for more than 15 seconds. Not tainted 6.12.0-rc5-00063-g76aaf945701c #7963 with the attempting freezer stuck trying to grab the rwsem: task:fsfreeze state:D stack:0 pid:7364 tgid:7364 ppid:995 Call trace: __switch_to+0x1d8/0x348 __schedule+0x8e8/0x2248 schedule+0x110/0x3f0 percpu_down_write+0x2b0/0x680 freeze_super+0x248/0x8a8 do_vfs_ioctl+0x149c/0x1b18 __arm64_sys_ioctl+0xd0/0x1a0 invoke_syscall+0x74/0x268 el0_svc_common.constprop.0+0x160/0x238 do_el0_svc+0x44/0x60 el0_svc+0x44/0xb0 el0t_64_sync_handler+0x118/0x128 el0t_64_sync+0x168/0x170 Fix this by having the io_uring side honor IOCB_NOWAIT, and only attempt a blocking grab of the super block rwsem if it isn't set. For normal issue where IOCB_NOWAIT would always be set, this returns -EAGAIN which will have io_uring core issue a blocking attempt of the write. That will in turn also get completions run, ensuring forward progress. Since freezing requires CAP_SYS_ADMIN in the first place, this isn't something that can be triggered by a regular user.
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存在安全漏洞,该漏洞源于缺少NOWAIT检查。
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 2b188cc1bb857a9d4701ae59aa7768b5124e262e ~ 485d9232112b17f389b29497ff41b97b3189546b -
LinuxLinux 5.1 -

II. Public POCs for CVE-2024-53052

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-53052

登录查看更多情报信息。

Same Patch Batch · Linux · 2024-11-19 · 88 CVEs total

CVE-2024-53057net/sched: stop qdisc_tree_reduce_backlog on TC_H_ROOT
CVE-2024-53053scsi: ufs: core: Fix another deadlock during RTC update
CVE-2024-53055wifi: iwlwifi: mvm: fix 6 GHz scan construction
CVE-2024-53050drm/i915/hdcp: Add encoder check in hdcp2_get_capability
CVE-2024-53049slub/kunit: fix a WARNING due to unwrapped __kmalloc_cache_noprof
CVE-2024-53047mptcp: init: protect sched with rcu_read_lock
CVE-2024-53045ASoC: dapm: fix bounds checker error in dapm_widget_list_create
CVE-2024-53046arm64: dts: imx8ulp: correct the flexspi compatible string
CVE-2024-53044net/sched: sch_api: fix xa_insert() error path in tcf_block_get_ext()
CVE-2024-53048ice: fix crash on probe for DPLL enabled E810 LOM
CVE-2024-53056drm/mediatek: Fix potential NULL dereference in mtk_crtc_destroy()
CVE-2024-53058net: stmmac: TSO: Fix unbalanced DMA map/unmap for non-paged SKB data
CVE-2024-53059wifi: iwlwifi: mvm: Fix response handling in iwl_mvm_send_recovery_cmd()
CVE-2024-53060drm/amdgpu: prevent NULL pointer dereference if ATIF is not supported
CVE-2024-53061media: s5p-jpeg: prevent buffer overflows
CVE-2024-53062media: mgb4: protect driver against spectre
CVE-2024-53064idpf: fix idpf_vc_core_init error path
CVE-2024-53063media: dvbdev: prevent the risk of out of memory access
CVE-2024-53066nfs: Fix KMSAN warning in decode_getfattr_attrs()
CVE-2024-53065mm/slab: fix warning caused by duplicate kmem_cache creation in kmem_buckets_create

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

IV. Related Vulnerabilities

V. Comments for CVE-2024-53052

No comments yet


Leave a comment