Description
In the Linux kernel, the following vulnerability has been resolved:
blk-cgroup: Fix NULL deref caused by blkg_policy_data being installed before init
blk-iocost sometimes causes the following crash:
BUG: kernel NULL pointer dereference, address: 00000000000000e0
...
RIP: 0010:_raw_spin_lock+0x17/0x30
Code: be 01 02 00 00 e8 79 38 39 ff 31 d2 89 d0 5d c3 0f 1f 00 0f 1f 44 00 00 55 48 89 e5 65 ff 05 48 d0 34 7e b9 01 00 00 00 31 c0 <f0> 0f b1 0f 75 02 5d c3 89 c6 e8 ea 04 00 00 5d c3 0f 1f 84 00 00
RSP: 0018:ffffc900023b3d40 EFLAGS: 00010046
RAX: 0000000000000000 RBX: 00000000000000e0 RCX: 0000000000000001
RDX: ffffc900023b3d20 RSI: ffffc900023b3cf0 RDI: 00000000000000e0
RBP: ffffc900023b3d40 R08: ffffc900023b3c10 R09: 0000000000000003
R10: 0000000000000064 R11: 000000000000000a R12: ffff888102337000
R13: fffffffffffffff2 R14: ffff88810af408c8 R15: ffff8881070c3600
FS: 00007faaaf364fc0(0000) GS:ffff88842fdc0000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00000000000000e0 CR3: 00000001097b1000 CR4: 0000000000350ea0
Call Trace:
<TASK>
ioc_weight_write+0x13d/0x410
cgroup_file_write+0x7a/0x130
kernfs_fop_write_iter+0xf5/0x170
vfs_write+0x298/0x370
ksys_write+0x5f/0xb0
__x64_sys_write+0x1b/0x20
do_syscall_64+0x3d/0x80
entry_SYSCALL_64_after_hwframe+0x46/0xb0
This happens because iocg->ioc is NULL. The field is initialized by
ioc_pd_init() and never cleared. The NULL deref is caused by
blkcg_activate_policy() installing blkg_policy_data before initializing it.
blkcg_activate_policy() was doing the following:
1. Allocate pd's for all existing blkg's and install them in blkg->pd[].
2. Initialize all pd's.
3. Online all pd's.
blkcg_activate_policy() only grabs the queue_lock and may release and
re-acquire the lock as allocation may need to sleep. ioc_weight_write()
grabs blkcg->lock and iterates all its blkg's. The two can race and if
ioc_weight_write() runs during #1 or between #1 and #2, it can encounter a
pd which is not initialized yet, leading to crash.
The crash can be reproduced with the following script:
#!/bin/bash
echo +io > /sys/fs/cgroup/cgroup.subtree_control
systemd-run --unit touch-sda --scope dd if=/dev/sda of=/dev/null bs=1M count=1 iflag=direct
echo 100 > /sys/fs/cgroup/system.slice/io.weight
bash -c "echo '8:0 enable=1' > /sys/fs/cgroup/io.cost.qos" &
sleep .2
echo 100 > /sys/fs/cgroup/system.slice/io.weight
with the following patch applied:
> diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
> index fc49be622e05..38d671d5e10c 100644
> --- a/block/blk-cgroup.c
> +++ b/block/blk-cgroup.c
> @@ -1553,6 +1553,12 @@ int blkcg_activate_policy(struct gendisk *disk, const struct blkcg_policy *pol)
> pd->online = false;
> }
>
> + if (system_state == SYSTEM_RUNNING) {
> + spin_unlock_irq(&q->queue_lock);
> + ssleep(1);
> + spin_lock_irq(&q->queue_lock);
> + }
> +
> /* all allocated, init in the same order */
> if (pol->pd_init_fn)
> list_for_each_entry_reverse(blkg, &q->blkg_list, q_node)
I don't see a reason why all pd's should be allocated, initialized and
onlined together. The only ordering requirement is that parent blkgs to be
initialized and onlined before children, which is guaranteed from the
walking order. Let's fix the bug by allocating, initializing and onlining pd
for each blkg and holding blkcg->lock over initialization and onlining. This
ensures that an installed blkg is always fully initialized and onlined
removing the the race window.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| Linux | Linux | 5.4 | 5.15.210 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | linux | 6.5.3-1 | — |
| Debian 13 | linux | 6.5.3-1 | — |
| Debian 12 | linux | 6.1.176-1 | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu Nvidia-BlueField 22.04 LTS | linux-bluefield | 5.15.0-1101.103 | — |
| Ubuntu 24.04 LTS | linux-riscv +10 | No fix yet | — |
| Ubuntu 22.04 LTS | linux | 5.15.0-198.208 | USN-8875-1 |
| Ubuntu 22.04 LTS | linux-aws | 5.15.0-1117.124 | USN-8875-1 |
| Ubuntu 22.04 LTS | linux-azure | 5.15.0-1123.132 | USN-8875-1 |
| Ubuntu 22.04 LTS | linux-azure-fde | 5.15.0-1122.131 | USN-8876-1 |
| Ubuntu 22.04 LTS | linux-gcp | 5.15.0-1118.128 | USN-8877-1 |
| Ubuntu 22.04 LTS | linux-gke | 5.15.0-1113.119 | USN-8875-1 |
| Ubuntu 22.04 LTS | linux-gkeop | 5.15.0-1100.108 | USN-8875-1 |
| Ubuntu 22.04 LTS | linux-ibm | 5.15.0-1111.115 | USN-8875-1 |
| Ubuntu 22.04 LTS | linux-intel-iotg | 5.15.0-1112.118 | USN-8875-1 |
| Ubuntu 22.04 LTS | linux-kvm | 5.15.0-1109.114 | USN-8875-1 |
| Ubuntu 22.04 LTS | linux-lowlatency | 5.15.0-195.205 | USN-8875-1 |
| Ubuntu 22.04 LTS | linux-nvidia | 5.15.0-1112.113 | USN-8875-2 |
| Ubuntu 22.04 LTS | linux-nvidia-tegra | 5.15.0-1070.72 | USN-8963-1 |
| Ubuntu 22.04 LTS | linux-nvidia-tegra-igx | 5.15.0-1059.59 | USN-8963-1 |
| Ubuntu 22.04 LTS | linux-oracle | 5.15.0-1114.120 | USN-8875-1 |
| Ubuntu 22.04 LTS | linux-raspi | 5.15.0-1113.116 | USN-9029-1 |
| Ubuntu 22.04 LTS | linux-riscv +32 | No fix yet | — |
| Ubuntu 22.04 LTS | linux-xilinx-zynqmp | 5.15.0-1080.84 | USN-8875-1 |
| Ubuntu 20.04 LTS | linux-gke +28 | No fix yet | — |
| Ubuntu 18.04 LTS | linux-gcp +14 | No fix yet | — |
Show 8 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 16.04 LTS | linux-hwe-edge | No fix yet | — |
| Ubuntu Pro Realtime 22.04 LTS | linux-intel-iot-realtime | 5.15.0-1109.111 | USN-8875-1 |
| Ubuntu Pro Realtime 22.04 LTS | linux-realtime | 5.15.0-1116.125 | USN-8875-1 |
| Ubuntu Pro FIPS 20.04 LTS | linux-fips +3 | No fix yet | — |
| Ubuntu Pro FIPS-updates 22.04 LTS | linux-aws-fips | 5.15.0-1117.124+fips1 | USN-8875-1 |
| Ubuntu Pro FIPS-updates 22.04 LTS | linux-azure-fips | 5.15.0-1123.132+fips1 | USN-8875-1 |
| Ubuntu Pro FIPS-updates 22.04 LTS | linux-fips | 5.15.0-198.208+fips1 | USN-8875-1 |
| Ubuntu Pro FIPS-updates 22.04 LTS | linux-gcp-fips | 5.15.0-1118.128+fips1 | USN-8877-1 |
| Ubuntu Pro FIPS-updates 20.04 LTS | linux-fips +3 | No fix yet | — |
| Ubuntu Pro FIPS-preview 22.04 LTS | linux-fips +3 | No fix yet | — |
| Ubuntu Pro 20.04 LTS | linux +10 | No fix yet | — |
| Ubuntu Pro 20.04 LTS | linux-aws-5.15 | 5.15.0-1117.124~20.04.1 | USN-8875-1 |
| Ubuntu Pro 20.04 LTS | linux-azure-5.15 | 5.15.0-1123.132~20.04.1 | USN-8875-1 |
| Ubuntu Pro 20.04 LTS | linux-azure-fde-5.15 | 5.15.0-1122.131~20.04.1 | USN-8875-1 |
| Ubuntu Pro 20.04 LTS | linux-gcp-5.15 | 5.15.0-1118.128~20.04.1 | USN-8878-1 |
| Ubuntu Pro 20.04 LTS | linux-hwe-5.15 | 5.15.0-198.208~20.04.1 | USN-8875-1 |
| Ubuntu Pro 20.04 LTS | linux-ibm-5.15 +1 | 5.15.0-1111.115~20.04.1 | USN-8875-1 |
| Ubuntu Pro 20.04 LTS | linux-intel-iotg-5.15 | 5.15.0-1112.118~20.04.1 | USN-8875-1 |
| Ubuntu Pro 20.04 LTS | linux-lowlatency-hwe-5.15 | 5.15.0-195.205~20.04.1 | USN-8875-1 |
| Ubuntu Pro 20.04 LTS | linux-nvidia-tegra-5.15 | 5.15.0-1070.72~20.04.1 | USN-8963-1 |
| Ubuntu Pro 20.04 LTS | linux-oracle-5.15 | 5.15.0-1114.120~20.04.1 | USN-8879-1 |
| Ubuntu Pro 18.04 LTS | linux-aws-5.4 +6 | No fix yet | — |
Red Hat
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| RHEL 9 | bpftool | 7.4.0-503.11.1.el9_5 | RHSA-2024:9315 |
| RHEL 9 | rv +67 | 5.14.0-503.11.1.el9_5 | RHSA-2024:9315 |
SUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES 15 SP7 | kernel-64kb +6 | 6.4.0-150700.53.28.1 | SUSE-SU-2026:0315-1 |
| SLES 15 SP7 | kernel-azure +2 | 6.4.0-150700.20.24.1 | SUSE-SU-2026:0281-1 |
| SLES 15 SP7 | kernel-default-base | 6.4.0-150700.53.28.1.150700.17.19.1 | SUSE-SU-2026:0315-1 |
| SLES 15 SP6 | kernel-64kb +6 | 6.4.0-150600.23.84.1 | SUSE-SU-2026:0293-1 |
| SLES 15 SP6 | kernel-default-base | 6.4.0-150600.23.84.1.150600.12.38.1 | SUSE-SU-2026:0293-1 |
| SLES 15 SP5 | kernel-64kb +6 | 5.14.21-150500.55.133.1 | SUSE-SU-2026:0317-1 |
| SLES 15 SP5 | kernel-default-base | 5.14.21-150500.55.133.1.150500.6.65.1 | SUSE-SU-2026:0317-1 |
| SLES 15 SP4 | kernel-64kb +6 | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLES 15 SP4 | kernel-default-base | 5.14.21-150400.24.194.1.150400.24.98.3 | SUSE-SU-2026:0617-1 |
| SLES 12 SP5 | kernel-syms +2 | 4.12.14-122.290.1 | SUSE-SU-2026:0316-1 |
Show 16 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| SLES for SAP 15 SP6 | kernel-default-base | 6.4.0-150600.23.84.1.150600.12.38.1 | SUSE-SU-2026:0293-1 |
| SLES for SAP 15 SP6 | kernel-docs +4 | 6.4.0-150600.23.84.1 | SUSE-SU-2026:0293-1 |
| SLES for SAP 15 SP5 | kernel-default-base | 5.14.21-150500.55.133.1.150500.6.65.1 | SUSE-SU-2026:0317-1 |
| SLES for SAP 15 SP5 | kernel-docs +4 | 5.14.21-150500.55.133.1 | SUSE-SU-2026:0317-1 |
| SLES for SAP 15 SP4 | kernel-default-base | 5.14.21-150400.24.194.1.150400.24.98.3 | SUSE-SU-2026:0617-1 |
| SLES for SAP 15 SP4 | kernel-docs +4 | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLE Micro 6.1 | kernel-default-base | 6.4.0-39.1.21.16 | SUSE-SU-2026:20498-1 |
| SLE Micro 6.1 | kernel-rt +1 | 6.4.0-40.1 | SUSE-SU-2026:20876-1 |
| SLE Micro 6.1 | kernel-source +2 | 6.4.0-39.1 | SUSE-SU-2026:20498-1 |
| SLE Micro 6.0 | kernel-default-base | 6.4.0-39.1.21.16 | SUSE-SU-2026:20477-1 |
| SLE Micro 6.0 | kernel-rt +1 | 6.4.0-40.1 | SUSE-SU-2026:20845-1 |
| SLE Micro 6.0 | kernel-source +2 | 6.4.0-39.1 | SUSE-SU-2026:20477-1 |
| SLE Micro 5.5 | kernel-default-base | 5.14.21-150500.55.133.1.150500.6.65.1 | SUSE-SU-2026:0317-1 |
| SLE Micro 5.5 | kernel-rt +1 | 5.14.21-150500.13.118.1 | SUSE-SU-2026:0263-1 |
| SLE Micro 5.5 | kernel-source +1 | 5.14.21-150500.55.133.1 | SUSE-SU-2026:0317-1 |
| SLE Micro 5.4 | kernel-default | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLE Micro 5.4 | kernel-default-base | 5.14.21-150400.24.194.1.150400.24.98.3 | SUSE-SU-2026:0617-1 |
| SLE Micro 5.4 | kernel-rt +1 | 5.14.21-150400.15.142.1 | SUSE-SU-2026:0411-1 |
| SLE Micro 5.3 | kernel-default | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLE Micro 5.3 | kernel-default-base | 5.14.21-150400.24.194.1.150400.24.98.3 | SUSE-SU-2026:0617-1 |
| SLE Micro 5.3 | kernel-rt +1 | 5.14.21-150400.15.142.1 | SUSE-SU-2026:0411-1 |
| SLE Live Patching 15 SP7 | kernel-default | 6.4.0-150700.53.28.1 | SUSE-SU-2026:0315-1 |
| SLE Live Patching 15 SP7 | kernel-livepatch-SLE15-SP7-RT_Update_8 | 1-150700.1.3.1 | SUSE-SU-2026:0278-1 |
| SLE Live Patching 15 SP7 | kernel-livepatch-SLE15-SP7_Update_8 | 1-150700.15.3.1 | SUSE-SU-2026:0315-1 |
| SLE Live Patching 15 SP6 | kernel-default | 6.4.0-150600.23.84.1 | SUSE-SU-2026:0293-1 |
| SLE Live Patching 15 SP6 | kernel-livepatch-SLE15-SP6_Update_19 | 1-150600.13.3.1 | SUSE-SU-2026:0293-1 |
| SLE Live Patching 15 SP5 | kernel-default | 5.14.21-150500.55.133.1 | SUSE-SU-2026:0317-1 |
| SLE Live Patching 15 SP5 | kernel-livepatch-SLE15-SP5_Update_34 | 1-150500.11.3.1 | SUSE-SU-2026:0317-1 |
| SLE Live Patching 15 SP4 | kernel-default | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLE Live Patching 15 SP4 | kernel-livepatch-SLE15-SP4_Update_48 | 1-150400.9.7.1 | SUSE-SU-2026:0617-1 |
| SLE Live Patching 12 SP5 | kernel-default | 4.12.14-122.290.1 | SUSE-SU-2026:0316-1 |
| SLE Live Patching 12 SP5 | kgraft-patch-SLE12-SP5_Update_76 | 1-8.7.1 | SUSE-SU-2026:0316-1 |
| SLE HPC 15 SP5 | kernel-64kb +5 | 5.14.21-150500.55.133.1 | SUSE-SU-2026:0317-1 |
| SLE HPC 15 SP5 | kernel-default-base | 5.14.21-150500.55.133.1.150500.6.65.1 | SUSE-SU-2026:0317-1 |
| SLE HPC 15 SP4 | kernel-64kb +5 | 5.14.21-150400.24.194.1 | SUSE-SU-2026:0617-1 |
| SLE HPC 15 SP4 | kernel-default-base | 5.14.21-150400.24.194.1.150400.24.98.3 | SUSE-SU-2026:0617-1 |
| SUSE Real Time Module 15 SP7 | kernel-rt +2 | 6.4.0-150700.7.28.1 | SUSE-SU-2026:0278-1 |
openSUSE
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| openSUSE Leap 15.6 | dtb-aarch64 +10 | 6.4.0-150600.23.84.1 | SUSE-SU-2026:0293-1 |
| openSUSE Leap 15.6 | kernel-default-base | 6.4.0-150600.23.84.1.150600.12.38.1 | SUSE-SU-2026:0293-1 |
Advisories 26
- USN-8875-1 linux, linux-aws, linux-aws-5.15, linux-aws-fips, linux-azure, linux-azure-5.15, linux-azure-fde-5.15, linux-azure-fips, linux-fips, linux-gke, linux-gkeop, linux-hwe-5.15, linux-ibm, linux-ibm-5.15, linux-intel-iot-realtime, linux-intel-iotg, linux-intel-iotg-5.15, linux-kvm, linux-lowlatency, linux-lowlatency-hwe-5.15, linux-oracle, linux-realtime, linux-xilinx-zynqmp vulnerabilities Ubuntu Security Notices (USN) · Nov 12, 2026
- USN-8963-1 linux-nvidia-tegra, linux-nvidia-tegra-5.15, linux-nvidia-tegra-igx vulnerabilities Ubuntu Security Notices (USN) · Nov 12, 2026
- USN-9029-1 linux-raspi vulnerabilities Ubuntu Security Notices (USN) · Nov 12, 2026
- USN-8879-1 linux-oracle-5.15 vulnerabilities Ubuntu Security Notices (USN) · Nov 12, 2026
- USN-8875-2 linux-nvidia vulnerabilities Ubuntu Security Notices (USN) · Nov 12, 2026
- USN-8878-1 linux-gcp-5.15 vulnerabilities Ubuntu Security Notices (USN) · Nov 12, 2026
- USN-8877-1 linux-gcp, linux-gcp-fips vulnerabilities Ubuntu Security Notices (USN) · Nov 12, 2026
- WID-SEC-2025-2941 Linux Kernel: Mehrere Schwachstellen ermöglichen Denial of Service BSI CERT-Bund (WID) · Nov 9, 2026
- USN-8876-1 linux-azure-fde vulnerabilities Ubuntu Security Notices (USN) · Nov 9, 2026
- ICSA-26-295-16 Siemens SIMATIC S7-1500 TM MFP CISA ICS & IT advisories · Oct 22, 2026
- RHSA-2024:9315 Red Hat Security Advisory: kernel security update Red Hat Security Advisories (RHSA) · Oct 20, 2026
- WID-SEC-2026-3891 Siemens SIMATIC S7: Mehrere Schwachstelle BSI CERT-Bund (WID) · Oct 18, 2026
- SSA-784472 SSA-784472: Vulnerabilities in the additional GNU/Linux subsystem of the SIMATIC S7-1500 TM MFP V1.1.1 Siemens ProductCERT · Oct 13, 2026
- SUSE-SU-2026:20876-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 31, 2026
- SUSE-SU-2026:20845-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 28, 2026
- SUSE-SU-2026:20498-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:20477-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0316-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0317-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0293-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0281-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0278-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0315-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Mar 23, 2026
- SUSE-SU-2026:0617-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 26, 2026
- SUSE-SU-2026:0411-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 10, 2026
- SUSE-SU-2026:0263-1 Security update for the Linux Kernel SUSE / openSUSE Security Updates · Feb 4, 2026
References
- https://git.kernel.org/stable/c/da6cc648c1f570290af1ddbe6b7ca3d91b1d6db9
- https://git.kernel.org/stable/c/33f0370bb7ce15a59d72a4d8a05421d334a04add
- https://git.kernel.org/stable/c/e39ef7880d1057b2ebcdb013405f4d84a257db23
- https://git.kernel.org/stable/c/7d63c6f9765339dcfc34b7365ced7c518012e4fe
- https://git.kernel.org/stable/c/ec14a87ee1999b19d8b7ed0fa95fea80644624ae