CVE-2021-47275

MEDIUMNVD 5.55.5
EchelonGraph scoreMEDIUM confidence

Score 5.5 from GitHub Security Advisory published 2024-05-21. NVD baseline CVSS 5.5; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa, nvd
5.5EG
EchelonGraph verdictMonitorLow exploitation likelihood right now — keep watching.
  • Lower severity and no public exploit yet
CISA-KEV: Not listedEPSS PROB: 0%CVSS: 5.5Exploit: None knownExposed: 0

No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.

In the Linux kernel, the following vulnerability has been resolved:

bcache: avoid oversized read request in cache missing code path

In the cache missing code path of cached device, if a proper location from the internal B+ tree is matched for a cache miss range, function cached_dev_cache_miss() will be called in cache_lookup_fn() in the following code block, [code block 1] 526 unsigned int sectors = KEY_INODE(k) == s->iop.inode 527 ? min_t(uint64_t, INT_MAX, 528 KEY_START(k) - bio->bi_iter.bi_sector) 529 : INT_MAX; 530 int ret = s->d->cache_miss(b, s, bio, sectors);

Here s->d->cache_miss() is the call backfunction pointer initialized as cached_dev_cache_miss(), the last parameter 'sectors' is an important hint to calculate the size of read request to backing device of the missing cache data.

Current calculation in above code block may generate oversized value of 'sectors', which consequently may trigger 2 different potential kernel panics by BUG() or BUG_ON() as listed below,

1) BUG_ON() inside bch_btree_insert_key(), [code block 2] 886 BUG_ON(b->ops->is_extents && !KEY_SIZE(k)); 2) BUG() inside biovec_slab(), [code block 3] 51 default: 52 BUG(); 53 return NULL;

All the above panics are original from cached_dev_cache_miss() by the oversized parameter 'sectors'.

Inside cached_dev_cache_miss(), parameter 'sectors' is used to calculate the size of data read from backing device for the cache missing. This size is stored in s->insert_bio_sectors by the following lines of code, [code block 4] 909 s->insert_bio_sectors = min(sectors, bio_sectors(bio) + reada);

Then the actual key inserting to the internal B+ tree is generated and stored in s->iop.replace_key by the following lines of code, [code block 5] 911 s->iop.replace_key = KEY(s->iop.inode, 912 bio->bi_iter.bi_sector + s->insert_bio_sectors, 913 s->insert_bio_sectors); The oversized parameter 'sectors' may trigger panic 1) by BUG_ON() from the above code block.

And the bio sending to backing device for the missing data is allocated with hint from s->insert_bio_sectors by the following lines of code, [code block 6] 926 cache_bio = bio_alloc_bioset(GFP_NOWAIT, 927 DIV_ROUND_UP(s->insert_bio_sectors, PAGE_SECTORS), 928 &dc->disk.bio_split); The oversized parameter 'sectors' may trigger panic 2) by BUG() from the agove code block.

Now let me explain how the panics happen with the oversized 'sectors'. In code block 5, replace_key is generated by macro KEY(). From the definition of macro KEY(), [code block 7] 71 #define KEY(inode, offset, size) \ 72 ((struct bkey) { \ 73 .high = (1ULL << 63) | ((__u64) (size) << 20) | (inode), \ 74 .low = (offset) \ 75 })

Here 'size' is 16bits width embedded in 64bits member 'high' of struct bkey. But in code block 1, if "KEY_START(k) - bio->bi_iter.bi_sector" is very probably to be larger than (1<<16) - 1, which makes the bkey size calculation in code block 5 is overflowed. In one bug report the value of parameter 'sectors' is 131072 (= 1 << 17), the overflowed 'sectors' results the overflowed s->insert_bio_sectors in code block 4, then makes size field of s->iop.replace_key to be 0 in code block 5. Then the 0- sized s->iop.replace_key is inserted into the internal B+ tree as cache missing check key (a special key to detect and avoid a racing between normal write request and cache missing read request) as, [code block 8] 915 ret = bch_btree_insert_check_key(b, &s->op, &s->iop.replace_key);

Then the 0-sized s->iop.replace_key as 3rd parameter triggers the bkey size check BUG_ON() in code block 2, and causes the kernel panic 1).

Another ke ---truncated---

CVSS v3
5.5
EG Score
5.5(medium)
EG Risk
25(Track)
EG Risk 25/100SSVC: Track

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity55% × 45%
Exploitation0% × 40%
Automatability0% × 15%
Action: Routine — remediate on your standard cadence.
EPSS PROB
0%
EPSS %ILE
10%
KEV
Not listed

Published

May 21, 2024

Last Modified

April 30, 2025

Data Freshness Timeline

(refreshed 6× in last 7d / 38× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

Showing the most recent 100 of 117 total refreshes for this CVE.

  1. 2026-08-07 16:24 UTCEPSS rescore
  2. 2026-08-06 13:44 UTCEPSS rescore
  3. 2026-08-05 19:15 UTCEPSS rescore
  4. 2026-08-04 15:06 UTCEPSS rescore
  5. 2026-08-03 10:33 UTCEPSS rescore
  6. 2026-08-02 02:24 UTCEPSS rescore
  7. 2026-08-01 04:13 UTCEPSS rescore
  8. 2026-08-01 03:12 UTCOSV refresh
  9. 2026-07-30 16:25 UTCEPSS rescore
  10. 2026-07-30 01:28 UTCEPSS rescore
  11. 2026-07-28 15:33 UTCEPSS rescore
  12. 2026-07-26 14:52 UTCEPSS rescore
  13. 2026-07-24 14:15 UTCEPSS rescore
  14. 2026-07-24 14:15 UTCEPSS rescore
  15. 2026-07-23 14:16 UTCEPSS rescore
  16. 2026-07-23 02:06 UTCEG score recompute
  17. 2026-07-22 22:53 UTCEG score recompute
  18. 2026-07-22 14:06 UTCEPSS rescore
  19. 2026-07-21 15:22 UTCEPSS rescore
  20. 2026-07-21 15:22 UTCEPSS rescore
  21. 2026-07-20 17:05 UTCEPSS rescore
  22. 2026-07-19 14:29 UTCEPSS rescore
  23. 2026-07-19 02:27 UTCEPSS rescore
  24. 2026-07-19 02:27 UTCEPSS rescore
  25. 2026-07-18 10:02 UTCEPSS rescore
Show 75 more
  1. 2026-07-16 17:00 UTCEPSS rescore
  2. 2026-07-16 17:00 UTCEPSS rescore
  3. 2026-07-15 16:55 UTCEPSS rescore
  4. 2026-07-15 01:58 UTCEPSS rescore
  5. 2026-07-15 01:58 UTCEPSS rescore
  6. 2026-07-14 10:10 UTCOSV refresh
  7. 2026-07-13 22:27 UTCEPSS rescore
  8. 2026-07-13 06:11 UTCEPSS rescore
  9. 2026-07-13 06:11 UTCEPSS rescore
  10. 2026-07-12 05:44 UTCEPSS rescore
  11. 2026-07-11 08:25 UTCEPSS rescore
  12. 2026-07-09 19:07 UTCEPSS rescore
  13. 2026-07-09 19:07 UTCEPSS rescore
  14. 2026-07-08 15:12 UTCEPSS rescore
  15. 2026-07-08 15:12 UTCEPSS rescore
  16. 2026-07-07 13:43 UTCEPSS rescore
  17. 2026-07-06 16:25 UTCEPSS rescore
  18. 2026-07-06 16:25 UTCEPSS rescore
  19. 2026-07-06 02:21 UTCEPSS rescore
  20. 2026-07-06 02:21 UTCEPSS rescore
  21. 2026-07-05 02:28 UTCEPSS rescore
  22. 2026-07-05 02:28 UTCEPSS rescore
  23. 2026-07-04 06:29 UTCEPSS rescore
  24. 2026-07-04 06:29 UTCEPSS rescore
  25. 2026-07-01 15:04 UTCEPSS rescore
  26. 2026-06-30 23:20 UTCEPSS rescore
  27. 2026-06-29 14:04 UTCEPSS rescore
  28. 2026-06-29 14:04 UTCEPSS rescore
  29. 2026-06-28 14:05 UTCEPSS rescore
  30. 2026-06-28 04:54 UTCEPSS rescore
  31. 2026-06-28 04:54 UTCEPSS rescore
  32. 2026-06-27 03:07 UTCEPSS rescore
  33. 2026-06-27 03:06 UTCEPSS rescore
  34. 2026-06-26 10:39 UTCOSV refresh
  35. 2026-06-25 13:48 UTCEPSS rescore
  36. 2026-06-25 13:48 UTCEPSS rescore
  37. 2026-06-24 14:03 UTCEPSS rescore
  38. 2026-06-24 14:03 UTCEPSS rescore
  39. 2026-06-23 21:31 UTCEPSS rescore
  40. 2026-06-23 21:31 UTCEPSS rescore
  41. 2026-06-22 14:24 UTCEPSS rescore
  42. 2026-06-21 14:55 UTCEPSS rescore
  43. 2026-06-21 01:58 UTCEPSS rescore
  44. 2026-06-21 01:58 UTCEPSS rescore
  45. 2026-06-19 19:24 UTCEPSS rescore
  46. 2026-06-19 19:24 UTCEPSS rescore
  47. 2026-06-18 17:51 UTCEPSS rescore
  48. 2026-06-18 17:51 UTCEPSS rescore
  49. 2026-06-17 17:51 UTCEPSS rescore
  50. 2026-06-17 17:51 UTCEPSS rescore
  51. 2026-06-16 17:51 UTCEPSS rescore
  52. 2026-06-15 17:46 UTCEPSS rescore
  53. 2026-06-14 23:15 UTCEPSS rescore
  54. 2026-06-14 23:15 UTCEPSS rescore
  55. 2026-06-13 22:58 UTCEPSS rescore
  56. 2026-06-13 22:58 UTCEPSS rescore
  57. 2026-06-12 23:10 UTCEPSS rescore
  58. 2026-06-11 13:58 UTCEPSS rescore
  59. 2026-06-10 22:16 UTCEPSS rescore
  60. 2026-06-10 13:20 UTCEPSS rescore
  61. 2026-06-08 17:11 UTCOSV refresh
  62. 2026-06-08 14:15 UTCEPSS rescore
  63. 2026-06-08 14:15 UTCEPSS rescore
  64. 2026-06-08 14:15 UTCEPSS rescore
  65. 2026-06-07 15:23 UTCEPSS rescore
  66. 2026-06-07 15:23 UTCEPSS rescore
  67. 2026-06-06 13:46 UTCEPSS rescore
  68. 2026-06-06 13:46 UTCEPSS rescore
  69. 2026-06-05 22:45 UTCEPSS rescore
  70. 2026-06-05 22:45 UTCEPSS rescore
  71. 2026-06-05 06:09 UTCEPSS rescore
  72. 2026-06-05 06:09 UTCEPSS rescore
  73. 2026-06-04 13:11 UTCEPSS rescore
  74. 2026-06-04 13:10 UTCEPSS rescore
  75. 2026-06-02 20:11 UTCEPSS rescore

Frequently asked(5)

What is CVE-2021-47275?
CVE-2021-47275 is a medium vulnerability published on May 21, 2024. In the Linux kernel, the following vulnerability has been resolved: bcache: avoid oversized read request in cache missing code path In the cache missing code path of cached device, if a proper location from the internal B+ tree is matched for a cache miss range, function cacheddevcachemiss() will…
When was CVE-2021-47275 disclosed?
CVE-2021-47275 was first published in the National Vulnerability Database on May 21, 2024, with the most recent update on April 30, 2025. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2021-47275 actively exploited?
CVE-2021-47275 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 0% probability of exploitation in the next 30 days, which ranks it in the top 90.5% of all scored CVEs.
What is the CVSS score of CVE-2021-47275?
CVE-2021-47275 has a CVSS v3 base score of 5.5 (NVD).
How do I remediate CVE-2021-47275?
Patch to the fixed version published by the affected vendor. Where vendor advisories exist for CVE-2021-47275, EchelonGraph cross-links them in the Vendor Advisories panel below — those typically contain the canonical remediation steps, fixed version numbers, and any vendor-specific mitigations.

Dependency Blast Radius

Explore the affected products and dependency analysis for CVE-2021-47275

Explore →

Is Your Infrastructure Affected by CVE-2021-47275?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.