Cloudanix VulnDB

CVE-2023-54227

High · 7.5

CVSS

7.5

EPSS

0.5%

Published

Dec 30, 2025

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

A bug in Linux can waste memory when storage devices change how many command queues they use, which might eventually slow down or crash the computer if left unfixed.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The vulnerability causes a memory leak of block request tags in the blk-mq subsystem when nr_hw_queues is reduced, as newly allocated tags for the smaller queue count are freed on device removal but the excess previously allocated tags are not.

Why it matters to the business

Linux systems using block devices with dynamic queue adjustments may experience gradual kernel memory exhaustion, leading to performance degradation, instability, or crashes in storage-heavy workloads over time.

How an attack unfolds

An attacker with local privileges mounts configfs, loads the null_blk module configured for multiple submit queues, creates and powers on a nullb device to allocate excess tags, reduces the submit_queues value, and removes the device, leaving the excess tags allocated and unfreed.

How to fix it

Update the Linux kernel to include commit c0ef7493e68b8896806a2f598fcffbaa97333405 which ensures tags are freed when shrinking nr_hw_queues.

How to confirm the fix worked

Confirm the fix commit is present in the kernel source tree or reproduce the queue shrink sequence while monitoring tag allocations to verify no leaks occur on device removal.

Typical attack path

  1. Mount configfs at /mnt
  2. Load null_blk module with nr_devices=0 and submit_queues=8
  3. Create nullb0 device directory under configfs
  4. Power on the device to allocate 9 tags (8 submit + 1 poll)
  5. Reduce submit_queues to 4, resulting in only 5 tags needed
  6. Remove the device directory, freeing only the 5 current tags and leaking the other 4

How to detect it

Review kernel logs and memory accounting for blk-mq tag allocations that persist after device removal or queue count reductions; use slabinfo or kmemleak to identify unreleased request_queue or tag structures.

What your security team should do

  • Apply the kernel fix containing commit c0ef7493e68b8896806a2f598fcffbaa97333405 to all affected systems
  • Prioritize updates for storage servers and virtualized environments using blk-mq devices
  • Monitor kernel memory usage and block layer statistics for signs of unexpected tag allocation growth

The record

In the Linux kernel, the following vulnerability has been resolved: blk-mq: fix tags leak when shrink nr_hw_queues Although we don't need to realloc set->tags[] when shrink nr_hw_queues, we need to free them. Or these tags will be leaked. How to reproduce: 1. mount -t configfs configfs /mnt 2. modprobe null_blk nr_devices=0 submit_queues=8 3. mkdir /mnt/nullb/nullb0 4. echo 1 > /mnt/nullb/nullb0/power 5. echo 4 > /mnt/nullb/nullb0/submit_queues 6. rmdir /mnt/nullb/nullb0 In step 4, will alloc 9 tags (8 submit queues and 1 poll queue), then in step 5, new_nr_hw_queues = 5 (4 submit queues and 1 poll queue). At last in step 6, only these 5 tags are freed, the other 4 tags leaked.

Affected packages

Ecosystem Package Introduced Fixed
Linux Kernel 0 6.5.5
Linux Kernel 5.16.0 6.5.5
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_19 0 1-150600.13.3.1
SUSE:Linux Enterprise Server 15 SP6-LTSS kernel-64kb 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server 15 SP6-LTSS kernel-default 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server 15 SP6-LTSS kernel-default-base 0 6.4.0-150600.23.84.1.150600.12.38.1
SUSE:Linux Enterprise Server 15 SP6-LTSS kernel-docs 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server 15 SP6-LTSS kernel-obs-build 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server 15 SP6-LTSS kernel-source 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server 15 SP6-LTSS kernel-syms 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server 15 SP6-LTSS kernel-zfcpdump 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6 kernel-default 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6 kernel-default-base 0 6.4.0-150600.23.84.1.150600.12.38.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6 kernel-docs 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6 kernel-obs-build 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6 kernel-source 0 6.4.0-150600.23.84.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP6 kernel-syms 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.84.1.150600.12.38.1
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.84.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.84.1

Related vulnerabilities