CVE-2021-46984 json
kyber: fix out of bounds access when preempted
published 2024-02-28 2 y ago modified 2026-08-05 3 mo ago also EUVD-2021-33632
- cvss
- 7.8
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 17%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
kyber: fix out of bounds access when preempted
__blk_mq_sched_bio_merge() gets the ctx and hctx for the current CPU and passes the hctx to ->bio_merge(). kyber_bio_merge() then gets the ctx for the current CPU again and uses that to get the corresponding Kyber context in the passed hctx. However, the thread may be preempted between the two calls to blk_mq_get_ctx(), and the ctx returned the second time may no longer correspond to the passed hctx. This "works" accidentally most of the time, but it can cause us to read garbage if the second ctx came from an hctx with more ctx's than the first one (i.e., if ctx->index_hw[hctx->type] > hctx->nr_ctx).
This manifested as this UBSAN array index out of bounds error reported by Jakub:
UBSAN: array-index-out-of-bounds in ../kernel/locking/qspinlock.c:130:9 index 13106 is out of range for type 'long unsigned int [128]' Call Trace: dump_stack+0xa4/0xe5 ubsan_epilogue+0x5/0x40 __ubsan_handle_out_of_bounds.cold.13+0x2a/0x34 queued_spin_lock_slowpath+0x476/0x480 do_raw_spin_lock+0x1c2/0x1d0 kyber_bio_merge+0x112/0x180 blk_mq_submit_bio+0x1f5/0x1100 submit_bio_noacct+0x7b0/0x870 submit_bio+0xc2/0x3a0 btrfs_map_bio+0x4f0/0x9d0 btrfs_submit_data_bio+0x24e/0x310 submit_one_bio+0x7f/0xb0 submit_extent_page+0xc4/0x440 __extent_writepage_io+0x2b8/0x5e0 __extent_writepage+0x28d/0x6e0 extent_write_cache_pages+0x4d7/0x7a0 extent_writepages+0xa2/0x110 do_writepages+0x8f/0x180 __writeback_single_inode+0x99/0x7f0 writeback_sb_inodes+0x34e/0x790 __writeback_inodes_wb+0x9e/0x120 wb_writeback+0x4d2/0x660 wb_workfn+0x64d/0xa10 process_one_work+0x53a/0xa80 worker_thread+0x69/0x5b0 kthread+0x20b/0x240 ret_from_fork+0x1f/0x30
Only Kyber uses the hctx, so fix it by passing the request_queue to ->bio_merge() instead. BFQ and mq-deadline just use that, and Kyber can map the queues itself to avoid the mismatch.
Patch / fix
- Linux Linux 5.4.120, 5.10.38, 5.11.22, 5.12.5, 5.13
- linux Debian 14, Debian 13, Debian 12 5.10.38-1
debian advisories DEBIAN-CVE-2021-46984
- linux Ubuntu 20.04 LTS 5.4.0-80.90
- linux-aws Ubuntu 20.04 LTS 5.4.0-1054.57
- linux-gcp Ubuntu 20.04 LTS 5.4.0-1049.53
- linux-kvm Ubuntu 20.04 LTS 5.4.0-1044.46
- linux-azure Ubuntu 20.04 LTS 5.4.0-1055.57
- linux-gkeop Ubuntu 20.04 LTS 5.4.0-1021.22
- linux-raspi Ubuntu 20.04 LTS 5.4.0-1041.45
- linux-oracle Ubuntu 20.04 LTS 5.4.0-1052.56
ubuntu advisories UBUNTU-CVE-2021-46984
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel RHEL 8 4.18.0-553.22.1.el8_10
- perf RHEL 8 4.18.0-553.22.1.el8_10
- bpftool RHEL 8 4.18.0-553.22.1.el8_10
- kernel-core RHEL 8 4.18.0-553.22.1.el8_10
- kernel-tools RHEL 8 4.18.0-553.22.1.el8_10
- python3-perf RHEL 8 4.18.0-553.22.1.el8_10
- kernel-modules RHEL 8 4.18.0-553.22.1.el8_10
- kernel-zfcpdump RHEL 8 4.18.0-553.22.1.el8_10
red hat advisories RHSA-2024:7000RHSA-2024:7001
- kernel-64kb SLES 15 SP3-LTSS, SLE High Performance Computing 15 SP3-LTSS, Enterprise Storage 7.1 5.3.18-150300.59.158.1
- kernel-syms SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE High Performance Computing 15 SP3-LTSS +1 more 5.3.18-150300.59.158.1
- kernel-source SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE High Performance Computing 15 SP3-LTSS +1 more 5.3.18-150300.59.158.1
- kernel-default SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE Micro 5.2 +5 more 5.3.18-150300.59.158.1
- kernel-preempt SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE High Performance Computing 15 SP3-LTSS +1 more 5.3.18-150300.59.158.1
- kernel-obs-build SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE High Performance Computing 15 SP3-LTSS +1 more 5.3.18-150300.59.158.1
- kernel-default-base SLES for SAP 15 SP3, SLES 15 SP3-LTSS, SLE Micro 5.2 +3 more 5.3.18-150300.59.158.1.150300.18.92.5
- kernel-rt SLE Micro 5.2, SLE Micro 5.1 5.3.18-150300.166.1
suse advisories SUSE-SU-2025:02846-1SUSE-SU-2024:1489-1SUSE-SU-2024:1465-1SUSE-SU-2024:1454-1
- kernel AlmaLinux 8 4.18.0-553.22.1.el8_10
- perf AlmaLinux 8 4.18.0-553.22.1.el8_10
- bpftool AlmaLinux 8 4.18.0-553.22.1.el8_10
- kernel-core AlmaLinux 8 4.18.0-553.22.1.el8_10
- kernel-tools AlmaLinux 8 4.18.0-553.22.1.el8_10
- python3-perf AlmaLinux 8 4.18.0-553.22.1.el8_10
- kernel-modules AlmaLinux 8 4.18.0-553.22.1.el8_10
- kernel-zfcpdump AlmaLinux 8 4.18.0-553.22.1.el8_10
almalinux advisories ALSA-2024:7000ALSA-2024:7001
- kernel Rocky Linux 8 4.18.0-553.22.1.el8_10
- kernel-rt Rocky Linux 8 4.18.0-553.22.1.rt7.363.el8_10
rocky linux advisories RLSA-2024:7000RLSA-2024:7001
- git.kernel.org/stable/c/0b6b4b90b74c27bea968c214d820ba4254b903a5 commit
- git.kernel.org/stable/c/54dbe2d2c1fcabf650c7a8b747601da355cd7f9f commit
- git.kernel.org/stable/c/a287cd84e047045f5a4d4da793414e848de627c6 commit
- git.kernel.org/stable/c/2ef3c76540c49167a0bc3d5f80d00fd1fc4586df commit
- git.kernel.org/stable/c/efed9a3337e341bd0989161b97453b52567bc59d commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2021-46984 updated cvss 6.0
kernel: kyber: fix out of bounds access when preempted
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 moreaffected: no fix planned “Out of support scope”
-
Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +82 moreaffected: no fix available “Fix deferred”
-
Red Hat Enterprise Linux BaseOS (v. 8) perf 4.18.0-553.22.1.el8_10, kernel 4.18.0-553.22.1.el8_10, bpftool 4.18.0-553.22.1.el8_10, kernel-core 4.18.0-553.22.1.el8_10, kernel-tools 4.18.0-553.22.1.el8_10, python3-perf 4.18.0-553.22.1.el8_10, +15 more Red Hat Enterprise Linux CRB (v. 8) kernel-debuginfo-common-x86_64 4.18.0-553.22.1.el8_10, kernel-debuginfo-common-aarch64 4.18.0-553.22.1.el8_10, kernel-debuginfo-common-ppc64le 4.18.0-553.22.1.el8_10fixed: vendor fix RHSA-2024:7000
-
Red Hat Enterprise Linux NFV (v. 8) kernel-rt 4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-kvm 4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-core 4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-modules 4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-debug-kvm 4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-debug-core 4.18.0-553.22.1.rt7.363.el8_10, +4 more Red Hat Enterprise Linux RT (v. 8) kernel-rt 4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-core 4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-modules 4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-debug-core 4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-debug-modules 4.18.0-553.22.1.rt7.363.el8_10, kernel-rt-modules-extra 4.18.0-553.22.1.rt7.363.el8_10, +2 morefixed: vendor fix RHSA-2024:7001
-
Red Hat OpenShift AI 8 rhoai/odh-rhel8-operator v2.13.1-2, rhoai/odh-dashboard-rhel8 v2.13.1-1, rhoai/odh-modelmesh-rhel8 v2.13.1-1, rhoai/odh-operator-bundle v2.13.1-2, rhoai/odh-rhel8-operator v2.14.0-24, rhoai/odh-dashboard-rhel8 v2.14.0-11, +56 morefixed: vendor fix RHBA-2024:8413
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 y ago
Exploit prediction
0.26% chance of exploitation in the next 30 days, higher than 17% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.8 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| NVD | 3.1 | 7.8 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
Affected products
- Linux Linux
Classification
- Weakness
-
- CWE-129 Improper Validation of Array Index
- Technology feeds
References
-
git.kernel.org
/stable/c/0b6b4b90b74c27bea968c214d820ba4254b903a5
patch
-
git.kernel.org
/stable/c/54dbe2d2c1fcabf650c7a8b747601da355cd7f9f
patch
-
git.kernel.org
/stable/c/a287cd84e047045f5a4d4da793414e848de627c6
patch
-
git.kernel.org
/stable/c/2ef3c76540c49167a0bc3d5f80d00fd1fc4586df
patch
-
git.kernel.org
/stable/c/efed9a3337e341bd0989161b97453b52567bc59d
patch
Sources
- CVE List CVE-2021-46984
- NVD CVE-2021-46984
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.