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

Goal: 1000 CNY · Raised: 1000 CNY

100.0%

CVE-2024-35798— btrfs: fix race in read_extent_buffer_pages()

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

I. Basic Information for CVE-2024-35798

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
btrfs: fix race in read_extent_buffer_pages()
Source: NVD (National Vulnerability Database)
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: btrfs: fix race in read_extent_buffer_pages() There are reports from tree-checker that detects corrupted nodes, without any obvious pattern so possibly an overwrite in memory. After some debugging it turns out there's a race when reading an extent buffer the uptodate status can be missed. To prevent concurrent reads for the same extent buffer, read_extent_buffer_pages() performs these checks: /* (1) */ if (test_bit(EXTENT_BUFFER_UPTODATE, &eb->bflags)) return 0; /* (2) */ if (test_and_set_bit(EXTENT_BUFFER_READING, &eb->bflags)) goto done; At this point, it seems safe to start the actual read operation. Once that completes, end_bbio_meta_read() does /* (3) */ set_extent_buffer_uptodate(eb); /* (4) */ clear_bit(EXTENT_BUFFER_READING, &eb->bflags); Normally, this is enough to ensure only one read happens, and all other callers wait for it to finish before returning. Unfortunately, there is a racey interleaving: Thread A | Thread B | Thread C ---------+----------+--------- (1) | | | (1) | (2) | | (3) | | (4) | | | (2) | | | (1) When this happens, thread B kicks of an unnecessary read. Worse, thread C will see UPTODATE set and return immediately, while the read from thread B is still in progress. This race could result in tree-checker errors like this as the extent buffer is concurrently modified: BTRFS critical (device dm-0): corrupted node, root=256 block=8550954455682405139 owner mismatch, have 11858205567642294356 expect [256, 18446744073709551360] Fix it by testing UPTODATE again after setting the READING bit, and if it's been set, skip the unnecessary read. [ minor update of changelog ]
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 存在安全漏洞,该漏洞源于 btrfs 模块存在竞争条件问题。
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 d7172f52e9933b6ec9305e7fe6e829e3939dba04 ~ 0427c8ef8bbb7f304de42ef51d69c960e165e052 -
LinuxLinux 6.5 -

II. Public POCs for CVE-2024-35798

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-35798

登录查看更多情报信息。

Same Patch Batch · Linux · 2024-05-17 · 135 CVEs total

CVE-2024-35834xsk: recycle buffer in case Rx queue was full
CVE-2023-52686powerpc/powernv: Add a null pointer check in opal_event_init()
CVE-2023-52684firmware: qcom: qseecom: fix memory leaks in error paths
CVE-2023-52683ACPI: LPIT: Avoid u32 multiplication overflow
CVE-2023-52682f2fs: fix to wait on block writeback for post_read case
CVE-2023-52681efivarfs: Free s_fs_info on unmount
CVE-2023-52680ALSA: scarlett2: Add missing error checks to *_ctl_get()
CVE-2023-52679of: Fix double free in of_parse_phandle_with_args_map
CVE-2023-52678drm/amdkfd: Confirm list is non-empty before utilizing list_first_entry in kfd_topology.c
CVE-2023-52677riscv: Check if the code to patch lies in the exit section
CVE-2023-52676bpf: Guard stack limits against 32bit overflow
CVE-2023-52675powerpc/imc-pmu: Add a null pointer check in update_events_in_group()
CVE-2023-52674ALSA: scarlett2: Add clamp() in scarlett2_mixer_ctl_put()
CVE-2024-35838wifi: mac80211: fix potential sta-link leak
CVE-2024-35837net: mvpp2: clear BM pool before initialization
CVE-2024-35836dpll: fix pin dump crash for rebound module
CVE-2024-35835net/mlx5e: fix a double-free in arfs_create_groups
CVE-2023-52664net: atlantic: eliminate double free in error handling logic
CVE-2024-35830media: tc358743: register v4l2 async device only after successful setup
CVE-2024-35831io_uring: Fix release of pinned pages when __io_uaddr_map fails

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

IV. Related Vulnerabilities

V. Comments for CVE-2024-35798

No comments yet


Leave a comment