Skip to content
OpenAdvisories
Unscored CVE-2023-54271 EUVD-2023-60370GHSA-jw53-vfm2-vf66

blk-cgroup: Fix NULL deref caused by blkg_policy_data being installed before init

Published Dec 30, 2025 · Updated Oct 15, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.15 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.4 Package: linux-aws-5.8 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-aws-fips Package: linux-azure Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.15 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.4 Package: linux-azure-5.8 Package: linux-azure-6.11 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.15 Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.2 Package: linux-azure-fips Package: linux-bluefield Package: linux-fips Package: linux-gcp Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.15 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.4 Package: linux-gcp-5.8 Package: linux-gcp-6.11 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-fips Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.15 Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.15 Package: linux-hwe-5.19 Package: linux-hwe-5.4 Package: linux-hwe-5.8 Package: linux-hwe-6.11 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-edge Package: linux-ibm Package: linux-ibm-5.15 Package: linux-ibm-5.4 Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-intel-iotg Package: linux-intel-iotg-5.15 Package: linux-iot Package: linux-kvm Package: linux-lowlatency Package: linux-lowlatency-hwe-5.15 Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.11 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-nvidia Package: linux-nvidia-6.11 Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-tegra Package: linux-nvidia-tegra-5.15 Package: linux-nvidia-tegra-igx Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oem-6.11 Package: linux-oem-6.5 Package: linux-oem-6.8 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.15 Package: linux-oracle-5.3 Package: linux-oracle-5.4 Package: linux-oracle-5.8 Package: linux-oracle-6.5 Package: linux-raspi Package: linux-raspi-5.4 Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.15 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.14 Package: linux-riscv-6.5 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Package: linux-xilinx-zynqmp Platform: Linux Ecosystem: Debian Ecosystem: Ubuntu

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

VendorProductAffectedFixed
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.

ReleasePackageFixed inAdvisory
Debian 14 linux 6.5.3-1 —
Debian 13 linux 6.5.3-1 —
Debian 12 linux 6.1.176-1 —
ReleasePackageFixed inAdvisory
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)
ReleasePackageFixed inAdvisory
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 —
ReleasePackageFixed inAdvisory
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
ReleasePackageFixed inAdvisory
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)
ReleasePackageFixed inAdvisory
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
ReleasePackageFixed inAdvisory
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

References