Answer in brief
CVE-2024-35798 records a High severity (CVSS 7.8) vulnerability in btrfs: fix race in read_extent_buffer_pages(). The current sources do not mark it as known exploited. The current feed maps Linux/Linux (generic), Linux/Linux (generic). Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
CVSS is 7.8. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps Linux/Linux (generic), Linux/Linux (generic). Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| Linux/Linuxgeneric | >=d7172f52e9933b6ec9305e7fe6e829e3939dba04 <0427c8ef8bbb7f304de42ef51d69c960e165e052 || >=d7172f52e9933b6ec9305e7fe6e829e3939dba04 <3a25878a3378adce5d846300c9570f15aa7f7a80 || >=d7172f52e9933b6ec9305e7fe6e829e3939dba04 <2885d54af2c2e1d910e20d5c8045bae40e02fbc1 || >=d7172f52e9933b6ec9305e7fe6e829e3939dba04 <ef1e68236b9153c27cb7cf29ead0c532870d4215 | 0427c8ef8bbb7f304de42ef51d69c960e165e052, 3a25878a3378adce5d846300c9570f15aa7f7a80, 2885d54af2c2e1d910e20d5c8045bae40e02fbc1, ef1e68236b9153c27cb7cf29ead0c532870d4215 |
| Linux/Linuxgeneric | 6.5 | Not reported |
Published upstream
May 17, 2024
Evidence: source:cvelist:source_dates:source-dates:recordSource modified
Aug 5, 2026
Evidence: source:cvelist:source_dates:source-dates:recordFirst seen by HOL
Aug 5, 2026
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 ]
Quoted source text, attributed separately from HOL analysis.