CVE-2026-23219 in Linuxinfo

Summary

by MITRE • 02/18/2026

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

mm/slab: Add alloc_tagging_slab_free_hook for memcg_alloc_abort_single

When CONFIG_MEM_ALLOC_PROFILING_DEBUG is enabled, the following warning may be noticed:

[ 3959.023862] ------------[ cut here ]------------
[ 3959.023891] alloc_tag was not cleared (got tag for lib/xarray.c:378)
[ 3959.023947] WARNING: ./include/linux/alloc_tag.h:155 at alloc_tag_add+0x128/0x178, CPU#6: mkfs.ntfs/113998
[ 3959.023978] Modules linked in: dns_resolver tun brd overlay exfat btrfs blake2b libblake2b xor xor_neon raid6_pq loop sctp ip6_udp_tunnel udp_tunnel ext4 crc16 mbcache jbd2 rfkill sunrpc vfat fat sg fuse nfnetlink sr_mod virtio_gpu cdrom drm_client_lib virtio_dma_buf drm_shmem_helper drm_kms_helper ghash_ce drm sm4 backlight virtio_net net_failover virtio_scsi failover virtio_console virtio_blk virtio_mmio dm_mirror dm_region_hash dm_log dm_multipath dm_mod i2c_dev aes_neon_bs aes_ce_blk [last unloaded: hwpoison_inject]
[ 3959.024170] CPU: 6 UID: 0 PID: 113998 Comm: mkfs.ntfs Kdump: loaded Tainted: G W 6.19.0-rc7+ #7 PREEMPT(voluntary)
[ 3959.024182] Tainted: [W]=WARN
[ 3959.024186] Hardware name: QEMU KVM Virtual Machine, BIOS unknown 2/2/2022
[ 3959.024192] pstate: 604000c5 (nZCv daIF +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 3959.024199] pc : alloc_tag_add+0x128/0x178
[ 3959.024207] lr : alloc_tag_add+0x128/0x178
[ 3959.024214] sp : ffff80008b696d60
[ 3959.024219] x29: ffff80008b696d60 x28: 0000000000000000 x27: 0000000000000240
[ 3959.024232] x26: 0000000000000000 x25: 0000000000000240 x24: ffff800085d17860
[ 3959.024245] x23: 0000000000402800 x22: ffff0000c0012dc0 x21: 00000000000002d0
[ 3959.024257] x20: ffff0000e6ef3318 x19: ffff800085ae0410 x18: 0000000000000000
[ 3959.024269] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
[ 3959.024281] x14: 0000000000000000 x13: 0000000000000001 x12: ffff600064101293
[ 3959.024292] x11: 1fffe00064101292 x10: ffff600064101292 x9 : dfff800000000000
[ 3959.024305] x8 : 00009fff9befed6e x7 : ffff000320809493 x6 : 0000000000000001
[ 3959.024316] x5 : ffff000320809490 x4 : ffff600064101293 x3 : ffff800080691838
[ 3959.024328] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff0000d5bcd640
[ 3959.024340] Call trace:
[ 3959.024346] alloc_tag_add+0x128/0x178 (P)
[ 3959.024355] __alloc_tagging_slab_alloc_hook+0x11c/0x1a8
[ 3959.024362] kmem_cache_alloc_lru_noprof+0x1b8/0x5e8
[ 3959.024369] xas_alloc+0x304/0x4f0
[ 3959.024381] xas_create+0x1e0/0x4a0
[ 3959.024388] xas_store+0x68/0xda8
[ 3959.024395] __filemap_add_folio+0x5b0/0xbd8
[ 3959.024409] filemap_add_folio+0x16c/0x7e0
[ 3959.024416] __filemap_get_folio_mpol+0x2dc/0x9e8
[ 3959.024424] iomap_get_folio+0xfc/0x180
[ 3959.024435] __iomap_get_folio+0x2f8/0x4b8
[ 3959.024441] iomap_write_begin+0x198/0xc18
[ 3959.024448] iomap_write_iter+0x2ec/0x8f8
[ 3959.024454] iomap_file_buffered_write+0x19c/0x290
[ 3959.024461] blkdev_write_iter+0x38c/0x978
[ 3959.024470] vfs_write+0x4d4/0x928
[ 3959.024482] ksys_write+0xfc/0x1f8
[ 3959.024489] __arm64_sys_write+0x74/0xb0
[ 3959.024496] invoke_syscall+0xd4/0x258
[ 3959.024507] el0_svc_common.constprop.0+0xb4/0x240
[ 3959.024514] do_el0_svc+0x48/0x68
[ 3959.024520] el0_svc+0x40/0xf8
[ 3959.024526] el0t_64_sync_handler+0xa0/0xe8
[ 3959.024533] el0t_64_sync+0x1ac/0x1b0
[ 3959.024540] ---[ end trace 0000000000000000 ]---

When __memcg_slab_post_alloc_hook() fails, there are two different free paths depending on whether size == 1 or size != 1. In the kmem_cache_free_bulk() path, we do call alloc_tagging_slab_free_hook(). However, in memcg_alloc_abort_single() we don't, the above warning will be triggered on the next allocation.

Therefore, add alloc_tagging_slab_free_hook() to the memcg_alloc_abort_single() path.

Once again VulDB remains the best source for vulnerability data.

Analysis

by VulDB Data Team • 03/19/2026

The vulnerability described in CVE-2026-23219 affects the Linux kernel's memory management subsystem, specifically within the slab allocator mechanism that handles memory allocation profiling and tagging. This issue occurs when the CONFIG_MEM_ALLOC_PROFILING_DEBUG configuration option is enabled, which introduces additional debugging capabilities for tracking memory allocations. The flaw manifests as a warning message indicating that an allocation tag was not cleared, pointing to a specific location in lib/xarray.c at line 378. This warning originates from the alloc_tag_add function, which is part of the kernel's memory allocation tagging infrastructure designed to help identify memory leaks and improper memory usage patterns.

The technical root cause involves inconsistent handling of memory allocation tagging across different code paths within the memory control group (memcg) allocation logic. When memory allocation fails in the __memcg_slab_post_alloc_hook() function, the kernel follows different execution paths depending on whether the allocation size equals one or differs from one. For the kmem_cache_free_bulk() path, the system correctly calls alloc_tagging_slab_free_hook() to properly clean up allocation tags. However, in the memcg_alloc_abort_single() path, this cleanup function is omitted, leaving allocation tags in an inconsistent state. This inconsistency creates a scenario where subsequent allocations may trigger warnings because the system attempts to tag memory that still bears remnants of previous allocation metadata.

The operational impact of this vulnerability extends beyond simple warning messages, as it represents a fundamental flaw in the kernel's memory management debugging infrastructure. The warning indicates a potential memory state corruption or resource leak scenario that could lead to more serious system instability under certain conditions. The call trace shows this issue propagates through multiple kernel subsystems including memory allocation, file mapping, and I/O operations, suggesting that any process performing memory-intensive operations might encounter this problem. The vulnerability affects systems running kernel versions that include the problematic code path, particularly those with memory allocation profiling enabled, and impacts processes like mkfs.ntfs that perform extensive memory operations during filesystem creation.

The fix implemented addresses this inconsistency by adding the alloc_tagging_slab_free_hook() call to the memcg_alloc_abort_single() path, ensuring that allocation tags are properly cleared regardless of the allocation failure scenario. This modification aligns the behavior of both allocation paths and maintains the integrity of the memory allocation tagging system. From a cybersecurity perspective, this vulnerability could potentially be exploited to create denial-of-service conditions or to mask other memory-related issues that might otherwise be detected through proper allocation tagging. The issue relates to CWE-691, which covers insufficient control flow management in systems that handle memory allocation and deallocation, and could be mapped to ATT&CK technique T1070.004 for indicator removal through memory manipulation. Organizations should ensure their kernel versions include this fix, particularly in environments where memory allocation profiling is enabled and where the stability of memory management subsystems is critical for system reliability.

Responsible

Linux

Reservation

01/13/2026

Disclosure

02/18/2026

Moderation

accepted

CPE

ready

EPSS

0.00112

KEV

no

Activities

very low

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!