CVE-2026-31686
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
27/04/2026
Last modified:
27/04/2026
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
mm/kasan: fix double free for kasan pXds<br />
<br />
kasan_free_pxd() assumes the page table is always struct page aligned. <br />
But that&#39;s not always the case for all architectures. E.g. In case of<br />
powerpc with 64K pagesize, PUD table (of size 4096) comes from slab cache<br />
named pgtable-2^9. Hence instead of page_to_virt(pxd_page()) let&#39;s just<br />
directly pass the start of the pxd table which is passed as the 1st<br />
argument.<br />
<br />
This fixes the below double free kasan issue seen with PMEM:<br />
<br />
radix-mmu: Mapped 0x0000047d10000000-0x0000047f90000000 with 2.00 MiB pages<br />
==================================================================<br />
BUG: KASAN: double-free in kasan_remove_zero_shadow+0x9c4/0xa20<br />
Free of addr c0000003c38e0000 by task ndctl/2164<br />
<br />
CPU: 34 UID: 0 PID: 2164 Comm: ndctl Not tainted 6.19.0-rc1-00048-gea1013c15392 #157 VOLUNTARY<br />
Hardware name: IBM,9080-HEX POWER10 (architected) 0x800200 0xf000006 of:IBM,FW1060.00 (NH1060_012) hv:phyp pSeries<br />
Call Trace:<br />
dump_stack_lvl+0x88/0xc4 (unreliable)<br />
print_report+0x214/0x63c<br />
kasan_report_invalid_free+0xe4/0x110<br />
check_slab_allocation+0x100/0x150<br />
kmem_cache_free+0x128/0x6e0<br />
kasan_remove_zero_shadow+0x9c4/0xa20<br />
memunmap_pages+0x2b8/0x5c0<br />
devm_action_release+0x54/0x70<br />
release_nodes+0xc8/0x1a0<br />
devres_release_all+0xe0/0x140<br />
device_unbind_cleanup+0x30/0x120<br />
device_release_driver_internal+0x3e4/0x450<br />
unbind_store+0xfc/0x110<br />
drv_attr_store+0x78/0xb0<br />
sysfs_kf_write+0x114/0x140<br />
kernfs_fop_write_iter+0x264/0x3f0<br />
vfs_write+0x3bc/0x7d0<br />
ksys_write+0xa4/0x190<br />
system_call_exception+0x190/0x480<br />
system_call_vectored_common+0x15c/0x2ec<br />
---- interrupt: 3000 at 0x7fff93b3d3f4<br />
NIP: 00007fff93b3d3f4 LR: 00007fff93b3d3f4 CTR: 0000000000000000<br />
REGS: c0000003f1b07e80 TRAP: 3000 Not tainted (6.19.0-rc1-00048-gea1013c15392)<br />
MSR: 800000000280f033 CR: 48888208 XER: 00000000<br />
<br />
NIP [00007fff93b3d3f4] 0x7fff93b3d3f4<br />
LR [00007fff93b3d3f4] 0x7fff93b3d3f4<br />
---- interrupt: 3000<br />
<br />
The buggy address belongs to the object at c0000003c38e0000<br />
which belongs to the cache pgtable-2^9 of size 4096<br />
The buggy address is located 0 bytes inside of<br />
4096-byte region [c0000003c38e0000, c0000003c38e1000)<br />
<br />
The buggy address belongs to the physical page:<br />
page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x3c38c<br />
head: order:2 mapcount:0 entire_mapcount:0 nr_pages_mapped:0 pincount:0<br />
memcg:c0000003bfd63e01<br />
flags: 0x63ffff800000040(head|node=6|zone=0|lastcpupid=0x7ffff)<br />
page_type: f5(slab)<br />
raw: 063ffff800000040 c000000140058980 5deadbeef0000122 0000000000000000<br />
raw: 0000000000000000 0000000080200020 00000000f5000000 c0000003bfd63e01<br />
head: 063ffff800000040 c000000140058980 5deadbeef0000122 0000000000000000<br />
head: 0000000000000000 0000000080200020 00000000f5000000 c0000003bfd63e01<br />
head: 063ffff800000002 c00c000000f0e301 00000000ffffffff 00000000ffffffff<br />
head: ffffffffffffffff 0000000000000000 00000000ffffffff 0000000000000004<br />
page dumped because: kasan: bad access detected<br />
<br />
[ 138.953636] [ T2164] Memory state around the buggy address:<br />
[ 138.953643] [ T2164] c0000003c38dff00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc<br />
[ 138.953652] [ T2164] c0000003c38dff80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc<br />
[ 138.953661] [ T2164] >c0000003c38e0000: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc<br />
[ 138.953669] [ T2164] ^<br />
[ 138.953675] [ T2164] c0000003c38e0080: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc<br />
[ 138.953684] [ T2164] c0000003c38e0100: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc<br />
[ 138.953692] [ T2164] ==================================================================<br />
[ 138.953701] [ T2164] Disabling lock debugging due to kernel taint
Impact
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/51d8c78be0c27ddb91bc2c0263941d8b30a47d3b
- https://git.kernel.org/stable/c/85d98614e089a67dc6faa8ca766fe10a639f82b4
- https://git.kernel.org/stable/c/a05f77cb227c39c5069aea6f12762a29d1e6c103
- https://git.kernel.org/stable/c/b38237a2ea9c6c19836eee2c57037e1f9f103576
- https://git.kernel.org/stable/c/cec74b2ab7dff866b1d77eaa545b9e8fd14a1f87
- https://git.kernel.org/stable/c/f6204f7ff6aff62ce6242a76982c5ba3a9ded707



