CVE-2025-21866: powerpc/code-patching: Fix KASAN hit by not flagging text patching area as VM_ALLOC

Published Mar 12, 2025
·
Updated

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

powerpc/code-patching: Fix KASAN hit by not flagging text patching area as VMALLOC

Erhard reported the following KASAN hit while booting his PowerMac G4 with a KASAN-enabled kernel 6.13-rc6:

BUG: KASAN: vmalloc-out-of-bounds in copytokernelnofault+0xd8/0x1c8 Write of size 8 at addr f1000000 by task chronyd/1293

CPU: 0 UID: 123 PID: 1293 Comm: chronyd Tainted: G W 6.13.0-rc6-PMacG4 #2 Tainted: [W]=WARN Hardware name: PowerMac3,6 7455 0x80010303 PowerMac Call Trace: [c2437590] [c1631a84] dumpstacklvl+0x70/0x8c (unreliable) [c24375b0] [c0504998] printreport+0xdc/0x504 [c2437610] [c050475c] kasanreport+0xf8/0x108 [c2437690] [c0505a3c] kasancheckrange+0x24/0x18c [c24376a0] [c03fb5e4] copytokernelnofault+0xd8/0x1c8 [c24376c0] [c004c014] patchinstructions+0x15c/0x16c [c2437710] [c00731a8] bpfarchtextcopy+0x60/0x7c [c2437730] [c0281168] bpfjitbinarypackfinalize+0x50/0xac [c2437750] [c0073cf4] bpfintjitcompile+0xb30/0xdec [c2437880] [c0280394] bpfprogselectruntime+0x15c/0x478 [c24378d0] [c1263428] bpfpreparefilter+0xbf8/0xc14 [c2437990] [c12677ec] bpfprogcreatefromuser+0x258/0x2b4 [c24379d0] [c027111c] doseccomp+0x3dc/0x1890 [c2437ac0] [c001d8e0] systemcallexception+0x2dc/0x420 [c2437f30] [c00281ac] retfromsyscall+0x0/0x2c --- interrupt: c00 at 0x5a1274 NIP: 005a1274 LR: 006a3b3c CTR: 005296c8 REGS: c2437f40 TRAP: 0c00 Tainted: G W (6.13.0-rc6-PMacG4) MSR: 0200f932 <VEC,EE,PR,FP,ME,IR,DR,RI> CR: 24004422 XER: 00000000

GPR00: 00000166 af8f3fa0 a7ee3540 00000001 00000000 013b6500 005a5858 0200f932 GPR08: 00000000 00001fe9 013d5fc8 005296c8 2822244c 00b2fcd8 00000000 af8f4b57 GPR16: 00000000 00000001 00000000 00000000 00000000 00000001 00000000 00000002 GPR24: 00afdbb0 00000000 00000000 00000000 006e0004 013ce060 006e7c1c 00000001 NIP [005a1274] 0x5a1274 LR [006a3b3c] 0x6a3b3c --- interrupt: c00

The buggy address belongs to the virtual mapping at [f1000000, f1002000) created by: textareacpuup+0x20/0x190

The buggy address belongs to the physical page: page: refcount:1 mapcount:0 mapping:00000000 index:0x0 pfn:0x76e30 flags: 0x80000000(zone=2) raw: 80000000 00000000 00000122 00000000 00000000 00000000 ffffffff 00000001 raw: 00000000 page dumped because: kasan: bad access detected

Memory state around the buggy address: f0ffff00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0ffff80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >f1000000: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ^ f1000080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f1000100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 ==================================================================

f8 corresponds to KASANVMALLOCINVALID which means the area is not initialised hence not supposed to be used yet.

Powerpc text patching infrastructure allocates a virtual memory area using getvmarea() and flags it as VMALLOC. But that flag is meant to be used for vmalloc() and vmalloc() allocated memory is not supposed to be used before a call to vmallocnoderange() which is never called for that area.

That went undetected until commit e4137f08816b ("mm, kasan, kmsan: instrument copyfrom/tokernelnofault")

The area allocated by textareacpuup() is not vmalloc memory, it is mapped directly on demand when needed by mapkernelpage(). There is no VM flag corresponding to such usage, so just pass no flag. That way the area will be unpoisonned and usable immediately.

Affected Software

209 affected componentsFixes available
Linux Kernel
Linux Linux kernel>=4.13<6.1.130
Linux Linux kernel>=6.2<6.6.80
Linux Linux kernel>=6.7<6.12.17
Linux Linux kernel>=6.13<6.13.5
Linux Linux kernel=6.14-rc1
Linux Linux kernel=6.14-rc2
Linux Linux kernel=6.14-rc3
ubuntu/linux-azure*
ubuntu/linux-aws-hwe*
ubuntu/linux-azure*
ubuntu/linux-gcp*
ubuntu/linux-hwe*
ubuntu/linux-hwe-edge*
ubuntu/linux-oracle*
ubuntu/linux*
ubuntu/linux-aws*
ubuntu/linux-aws-5.0*
ubuntu/linux-aws-5.3*
ubuntu/linux-aws-5.4<5.4.0-1146.156~18.04.1
5.4.0-1146.156~18.04.1
ubuntu/linux-azure*
ubuntu/linux-azure-4.15*
ubuntu/linux-azure-5.3*
ubuntu/linux-azure-5.4<5.4.0-1151.158~18.04.1
5.4.0-1151.158~18.04.1
ubuntu/linux-azure-edge*
ubuntu/linux-gcp*
ubuntu/linux-gcp-4.15*
ubuntu/linux-gcp-5.3*
ubuntu/linux-gcp-5.4<5.4.0-1149.158~18.04.1
5.4.0-1149.158~18.04.1
ubuntu/linux-gke-4.15*
ubuntu/linux-gke-5.4*
ubuntu/linux-gkeop-5.4*
ubuntu/linux-hwe*
ubuntu/linux-hwe-5.4<5.4.0-216.236~18.04.1
5.4.0-216.236~18.04.1
ubuntu/linux-hwe-edge*
ubuntu/linux-ibm-5.4<5.4.0-1092.97~18.04.1
5.4.0-1092.97~18.04.1
ubuntu/linux-kvm*
ubuntu/linux-oem*
ubuntu/linux-oracle*
ubuntu/linux-oracle-5.0*
ubuntu/linux-oracle-5.3*
ubuntu/linux-oracle-5.4<5.4.0-1144.154~18.04.1
5.4.0-1144.154~18.04.1
ubuntu/linux-raspi-5.4<5.4.0-1129.142~18.04.1
5.4.0-1129.142~18.04.1
ubuntu/linux-aws-fips*
ubuntu/linux-azure-fips*
ubuntu/linux-fips*
ubuntu/linux-gcp-fips*
ubuntu/linux-aws-fips*
ubuntu/linux-azure-fips*
ubuntu/linux-fips*
ubuntu/linux-gcp-fips*
ubuntu/linux<5.4.0-216.236
5.4.0-216.236
ubuntu/linux-aws<5.4.0-1146.156
5.4.0-1146.156
ubuntu/linux-aws-5.15<5.15.0-1084.91~20.04.1
5.15.0-1084.91~20.04.1
ubuntu/linux-azure<5.4.0-1151.158
5.4.0-1151.158
ubuntu/linux-azure-5.15<5.15.0-1089.98~20.04.1
5.15.0-1089.98~20.04.1
ubuntu/linux-bluefield<5.4.0-1105.112
5.4.0-1105.112
ubuntu/linux-gcp<5.4.0-1149.158
5.4.0-1149.158
ubuntu/linux-gcp-5.15<5.15.0-1083.92~20.04.1
5.15.0-1083.92~20.04.1
ubuntu/linux-ibm<5.4.0-1092.97
5.4.0-1092.97
ubuntu/linux-ibm-5.15<5.15.0-1076.79~20.04.1
5.15.0-1076.79~20.04.1
ubuntu/linux-intel-iotg-5.15<5.15.0-1079.85~20.04.1
5.15.0-1079.85~20.04.1
ubuntu/linux-kvm<5.4.0-1133.142
5.4.0-1133.142
ubuntu/linux-lowlatency-hwe-5.15<5.15.0-140.150~20.04.1
5.15.0-140.150~20.04.1
ubuntu/linux-oracle<5.4.0-1144.154
5.4.0-1144.154
ubuntu/linux-oracle-5.15<5.15.0-1081.87~20.04.1
5.15.0-1081.87~20.04.1
ubuntu/linux-raspi<5.4.0-1129.142
5.4.0-1129.142
ubuntu/linux-riscv-5.15<5.15.0-1079.83~20.04.1
5.15.0-1079.83~20.04.1
ubuntu/linux-xilinx-zynqmp<5.4.0-1064.68
5.4.0-1064.68
ubuntu/linux-aws-5.11*
ubuntu/linux-aws-5.13*
ubuntu/linux-aws-5.8*
ubuntu/linux-azure-5.11*
ubuntu/linux-azure-5.13*
ubuntu/linux-azure-5.8*
ubuntu/linux-azure-fde*
ubuntu/linux-gcp-5.11*
ubuntu/linux-gcp-5.13*
ubuntu/linux-gcp-5.8*
ubuntu/linux-gke*
ubuntu/linux-gke-5.15*
ubuntu/linux-gkeop*
ubuntu/linux-gkeop-5.15*
ubuntu/linux-hwe-5.11*
ubuntu/linux-hwe-5.13*
ubuntu/linux-hwe-5.15<5.15.0-142.152~20.04.1
5.15.0-142.152~20.04.1
ubuntu/linux-hwe-5.8*
ubuntu/linux-intel-5.13*
ubuntu/linux-iot<5.4.0-1051.54
5.4.0-1051.54
ubuntu/linux-nvidia-tegra-5.15<5.15.0-1039.39~20.04.1
5.15.0-1039.39~20.04.1
ubuntu/linux-oem-5.10*
ubuntu/linux-oem-5.13*
ubuntu/linux-oem-5.6*
ubuntu/linux-oracle-5.11*
ubuntu/linux-oracle-5.13*
ubuntu/linux-oracle-5.8*
ubuntu/linux-raspi2*
ubuntu/linux-riscv*
ubuntu/linux-riscv-5.11*
ubuntu/linux-riscv-5.8*
ubuntu/linux-aws-fips<5.4.0-1146.156+fips1
5.4.0-1146.156+fips1
ubuntu/linux-azure-fips<5.4.0-1151.158+fips1
5.4.0-1151.158+fips1
ubuntu/linux-fips<5.4.0-1120.130
5.4.0-1120.130
ubuntu/linux-gcp-fips<5.4.0-1149.158+fips1
5.4.0-1149.158+fips1
ubuntu/linux-aws-fips*
ubuntu/linux-azure-fips*
ubuntu/linux-fips*
ubuntu/linux-gcp-fips*
ubuntu/linux<5.15.0-140.150
5.15.0-140.150
ubuntu/linux-allwinner-5.19*
ubuntu/linux-aws<5.15.0-1084.91
5.15.0-1084.91
ubuntu/linux-aws-5.19*
ubuntu/linux-aws-6.2*
ubuntu/linux-aws-6.5*
ubuntu/linux-aws-6.8<6.8.0-1035.37~22.04.1
6.8.0-1035.37~22.04.1
ubuntu/linux-azure<5.15.0-1089.98
5.15.0-1089.98
ubuntu/linux-azure-5.19*
ubuntu/linux-azure-6.2*
ubuntu/linux-azure-6.5*
ubuntu/linux-azure-6.8<6.8.0-1034.39~22.04.1
6.8.0-1034.39~22.04.1
ubuntu/linux-azure-fde<5.15.0-1089.98.1
5.15.0-1089.98.1
ubuntu/linux-azure-fde-5.19*
ubuntu/linux-azure-fde-6.2*
ubuntu/linux-gcp<5.15.0-1083.92
5.15.0-1083.92
ubuntu/linux-gcp-5.19*
ubuntu/linux-gcp-6.2*
ubuntu/linux-gcp-6.5*
ubuntu/linux-gcp-6.8<6.8.0-1036.38~22.04.1
6.8.0-1036.38~22.04.1
ubuntu/linux-gke<5.15.0-1081.87
5.15.0-1081.87
ubuntu/linux-gkeop<5.15.0-1066.74
5.15.0-1066.74
ubuntu/linux-hwe-5.19*
ubuntu/linux-hwe-6.2*
ubuntu/linux-hwe-6.5*
ubuntu/linux-hwe-6.8<6.8.0-78.78~22.04.1
6.8.0-78.78~22.04.1
ubuntu/linux-ibm<5.15.0-1076.79
5.15.0-1076.79
ubuntu/linux-ibm-6.8<6.8.0-1033.33~22.04.1
6.8.0-1033.33~22.04.1
ubuntu/linux-intel-iot-realtime*
ubuntu/linux-intel-iotg<5.15.0-1079.85
5.15.0-1079.85
ubuntu/linux-kvm<5.15.0-1080.85
5.15.0-1080.85
ubuntu/linux-lowlatency<5.15.0-140.150
5.15.0-140.150
ubuntu/linux-lowlatency-hwe-5.19*
ubuntu/linux-lowlatency-hwe-6.2*
ubuntu/linux-lowlatency-hwe-6.5*
ubuntu/linux-lowlatency-hwe-6.8<6.8.0-78.78.1~22.04.1
6.8.0-78.78.1~22.04.1
ubuntu/linux-nvidia<5.15.0-1078.79
5.15.0-1078.79
ubuntu/linux-nvidia-6.2*
ubuntu/linux-nvidia-6.5*
ubuntu/linux-nvidia-6.8<6.8.0-1035.38~22.04.1
6.8.0-1035.38~22.04.1
ubuntu/linux-nvidia-tegra<5.15.0-1037.37
5.15.0-1037.37
ubuntu/linux-nvidia-tegra-igx<5.15.0-1026.26
5.15.0-1026.26
ubuntu/linux-oem-5.17*
ubuntu/linux-oem-6.0*
ubuntu/linux-oem-6.1*
ubuntu/linux-oem-6.5*
ubuntu/linux-oracle<5.15.0-1081.87
5.15.0-1081.87
ubuntu/linux-oracle-6.5*
ubuntu/linux-oracle-6.8<6.8.0-1032.33~22.04.1
6.8.0-1032.33~22.04.1
ubuntu/linux-raspi<5.15.0-1078.81
5.15.0-1078.81
ubuntu/linux-realtime*
ubuntu/linux-riscv*
ubuntu/linux-riscv-5.19*
ubuntu/linux-riscv-6.5*
ubuntu/linux-riscv-6.8<6.8.0-78.78~22.04.1
6.8.0-78.78~22.04.1
ubuntu/linux-starfive-5.19*
ubuntu/linux-starfive-6.2*
ubuntu/linux-starfive-6.5*
ubuntu/linux-xilinx-zynqmp<5.15.0-1050.54
5.15.0-1050.54
ubuntu/linux-bluefield<5.15.0-1066.68
5.15.0-1066.68
ubuntu/linux-intel-iot-realtime<5.15.0-1077.79
5.15.0-1077.79
ubuntu/linux-realtime<5.15.0-1084.93
5.15.0-1084.93
ubuntu/linux-realtime-6.8<6.8.1-1030.31~22.04.1
6.8.1-1030.31~22.04.1
ubuntu/linux-aws-fips*
ubuntu/linux-azure-fips*
ubuntu/linux-fips*
ubuntu/linux-gcp-fips*
ubuntu/linux-aws-fips<5.15.0-1084.91+fips1
5.15.0-1084.91+fips1
ubuntu/linux-azure-fips<5.15.0-1089.98+fips1
5.15.0-1089.98+fips1
ubuntu/linux-fips<5.15.0-140.150+fips1
5.15.0-140.150+fips1
ubuntu/linux-gcp-fips<5.15.0-1083.92+fips1
5.15.0-1083.92+fips1
ubuntu/linux<6.8.0-78.78
6.8.0-78.78
ubuntu/linux-aws<6.8.0-1035.37
6.8.0-1035.37
ubuntu/linux-azure<6.8.0-1034.39
6.8.0-1034.39
ubuntu/linux-azure-6.11<6.11.0-1015.15~24.04.1
6.11.0-1015.15~24.04.1
ubuntu/linux-azure-nvidia<6.8.0-1022.23
6.8.0-1022.23
ubuntu/linux-gcp<6.8.0-1036.38
6.8.0-1036.38
ubuntu/linux-gcp-6.11<6.11.0-1015.15~24.04.1
6.11.0-1015.15~24.04.1
ubuntu/linux-gke<6.8.0-1032.36
6.8.0-1032.36
ubuntu/linux-gkeop<6.8.0-1019.21
6.8.0-1019.21
ubuntu/linux-hwe-6.11<6.11.0-26.26~24.04.1
6.11.0-26.26~24.04.1
ubuntu/linux-ibm<6.8.0-1033.33
6.8.0-1033.33
ubuntu/linux-intel*
ubuntu/linux-lowlatency<6.8.0-78.78.1
6.8.0-78.78.1
ubuntu/linux-lowlatency-hwe-6.11<6.11.0-1014.15~24.04.1
6.11.0-1014.15~24.04.1
ubuntu/linux-nvidia<6.8.0-1035.38
6.8.0-1035.38
ubuntu/linux-nvidia-6.11<6.11.0-1010.10
6.11.0-1010.10
ubuntu/linux-nvidia-lowlatency<6.8.0-1035.38.1
6.8.0-1035.38.1
ubuntu/linux-nvidia-tegra<6.8.0-1009.9
6.8.0-1009.9
ubuntu/linux-oem-6.11<6.11.0-1022.22
6.11.0-1022.22
ubuntu/linux-oem-6.8*
ubuntu/linux-oracle<6.8.0-1032.33
6.8.0-1032.33
ubuntu/linux-raspi<6.8.0-1035.39
6.8.0-1035.39
ubuntu/linux-raspi-realtime*
ubuntu/linux-realtime*
ubuntu/linux-riscv*
ubuntu/linux-xilinx<6.8.0-1017.18
6.8.0-1017.18
ubuntu/linux-raspi-realtime<6.8.0-2028.29
6.8.0-2028.29
ubuntu/linux-realtime<6.8.1-1030.31
6.8.1-1030.31
ubuntu/linux-fips<6.8.0-78.78+fips1
6.8.0-78.78+fips1
debian/linux
6.1.176-16.1.190-16.12.107-16.12.115-27.2.12-17.2.15-1

Event History

Mar 12, 2025
CVE Published
via MITRE·09:42 AM
Data Sourced
via MITRE·09:42 AM
Description
Data Sourced
via OSV·10:15 AM
DescriptionSeverityAffected Software
Event
via OSV·10:15 AM
Data Sourced
via NVD·10:15 AM
RemedyDescriptionSeverityWeaknessAffected Software
Apr 9, 2025
Data Sourced
via Microsoft·07:00 AM
DescriptionSeverityWeakness

Parent advisories

This vulnerability appears in the following advisories.

Peer vulnerabilities

Found alongside the following vulnerabilities.

Frequently Asked Questions

1

What is the severity of CVE-2025-21866?

CVE-2025-21866 has been classified as a medium severity vulnerability in the Linux kernel.

2

How do I fix CVE-2025-21866?

To fix CVE-2025-21866, you should update to the latest patched version of the Linux kernel that addresses this vulnerability.

3

What systems are affected by CVE-2025-21866?

CVE-2025-21866 affects the Linux kernel, particularly systems running a KASAN-enabled kernel.

4

What type of vulnerability is CVE-2025-21866?

CVE-2025-21866 is a memory management vulnerability related to KASAN in the Linux kernel.

5

Who reported CVE-2025-21866?

CVE-2025-21866 was reported by an individual named Erhard while testing on a PowerMac G4.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203