CVE Vulnerabilities

CVE-2025-37818

NULL Pointer Dereference

Published: May 08, 2025 | Modified: Nov 12, 2025
CVSS 3.x
5.5
MEDIUM
Source:
NVD
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS 2.x
RedHat/V2
RedHat/V3
5.5 MODERATE
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Ubuntu
MEDIUM
root.io logo minimus.io logo echo.ai logo

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

LoongArch: Return NULL from huge_pte_offset() for invalid PMD

LoongArchs huge_pte_offset() currently returns a pointer to a PMD slot even if the underlying entry points to invalid_pte_table (indicating no mapping). Callers like smaps_hugetlb_range() fetch this invalid entry value (the address of invalid_pte_table) via this pointer.

The generic is_swap_pte() check then incorrectly identifies this address as a swap entry on LoongArch, because it satisfies the !pte_present() && !pte_none() conditions. This misinterpretation, combined with a coincidental match by is_migration_entry() on the address bits, leads to kernel crashes in pfn_swap_entry_to_page().

Fix this at the architecture level by modifying huge_pte_offset() to check the PMD entrys content using pmd_none() before returning. If the entry is invalid (i.e., it points to invalid_pte_table), return NULL instead of the pointer to the slot.

Weakness

The product dereferences a pointer that it expects to be valid but is NULL.

Affected Software

NameVendorStart VersionEnd Version
Linux_kernelLinux5.19 (including)6.1.136 (excluding)
Linux_kernelLinux6.2 (including)6.6.89 (excluding)
Linux_kernelLinux6.7 (including)6.12.26 (excluding)
Linux_kernelLinux6.13 (including)6.14.5 (excluding)
Linux_kernelLinux6.15-rc1 (including)6.15-rc1 (including)
Linux_kernelLinux6.15-rc2 (including)6.15-rc2 (including)
Linux_kernelLinux6.15-rc3 (including)6.15-rc3 (including)
LinuxUbuntubionic*
LinuxUbuntufocal*
LinuxUbuntuoracular*
LinuxUbuntutrusty*
LinuxUbuntutrusty/esm*
LinuxUbuntuupstream*
LinuxUbuntuxenial*
Linux-allwinner-5.19Ubuntuupstream*
Linux-awsUbuntubionic*
Linux-awsUbuntufocal*
Linux-awsUbuntuoracular*
Linux-awsUbuntutrusty*
Linux-awsUbuntutrusty/esm*
Linux-awsUbuntuupstream*
Linux-awsUbuntuxenial*
Linux-aws-5.0Ubuntubionic*
Linux-aws-5.0Ubuntuupstream*
Linux-aws-5.11Ubuntufocal*
Linux-aws-5.11Ubuntuupstream*
Linux-aws-5.13Ubuntufocal*
Linux-aws-5.13Ubuntuupstream*
Linux-aws-5.15Ubuntufocal*
Linux-aws-5.15Ubuntuupstream*
Linux-aws-5.19Ubuntuupstream*
Linux-aws-5.3Ubuntubionic*
Linux-aws-5.3Ubuntuupstream*
Linux-aws-5.4Ubuntubionic*
Linux-aws-5.4Ubuntuupstream*
Linux-aws-5.8Ubuntufocal*
Linux-aws-5.8Ubuntuupstream*
Linux-aws-6.14Ubuntuupstream*
Linux-aws-6.2Ubuntuupstream*
Linux-aws-6.5Ubuntuupstream*
Linux-aws-6.8Ubuntuupstream*
Linux-aws-fipsUbuntutrusty*
Linux-aws-fipsUbuntuupstream*
Linux-aws-fipsUbuntuxenial*
Linux-aws-hweUbuntuupstream*
Linux-aws-hweUbuntuxenial*
Linux-azureUbuntubionic*
Linux-azureUbuntufocal*
Linux-azureUbuntuoracular*
Linux-azureUbuntutrusty*
Linux-azureUbuntutrusty/esm*
Linux-azureUbuntuupstream*
Linux-azureUbuntuxenial*
Linux-azure-4.15Ubuntubionic*
Linux-azure-4.15Ubuntuupstream*
Linux-azure-5.11Ubuntufocal*
Linux-azure-5.11Ubuntuupstream*
Linux-azure-5.13Ubuntufocal*
Linux-azure-5.13Ubuntuupstream*
Linux-azure-5.15Ubuntufocal*
Linux-azure-5.15Ubuntuupstream*
Linux-azure-5.19Ubuntuupstream*
Linux-azure-5.3Ubuntubionic*
Linux-azure-5.3Ubuntuupstream*
Linux-azure-5.4Ubuntubionic*
Linux-azure-5.4Ubuntuupstream*
Linux-azure-5.8Ubuntufocal*
Linux-azure-5.8Ubuntuupstream*
Linux-azure-6.11Ubuntuupstream*
Linux-azure-6.14Ubuntuupstream*
Linux-azure-6.2Ubuntuupstream*
Linux-azure-6.5Ubuntuupstream*
Linux-azure-6.8Ubuntuupstream*
Linux-azure-edgeUbuntubionic*
Linux-azure-edgeUbuntuupstream*
Linux-azure-fdeUbuntufocal*
Linux-azure-fdeUbuntuupstream*
Linux-azure-fde-5.15Ubuntufocal*
Linux-azure-fde-5.15Ubuntuupstream*
Linux-azure-fde-5.19Ubuntuupstream*
Linux-azure-fde-6.14Ubuntuupstream*
Linux-azure-fde-6.2Ubuntuupstream*
Linux-azure-fde-6.8Ubuntuupstream*
Linux-azure-fipsUbuntutrusty*
Linux-azure-fipsUbuntuupstream*
Linux-azure-fipsUbuntuxenial*
Linux-azure-nvidiaUbuntuupstream*
Linux-azure-nvidia-6.14Ubuntuupstream*
Linux-bluefieldUbuntufocal*
Linux-bluefieldUbuntuupstream*
Linux-fipsUbuntuupstream*
Linux-gcpUbuntubionic*
Linux-gcpUbuntufocal*
Linux-gcpUbuntuoracular*
Linux-gcpUbuntuupstream*
Linux-gcpUbuntuxenial*
Linux-gcp-4.15Ubuntubionic*
Linux-gcp-4.15Ubuntuupstream*
Linux-gcp-5.11Ubuntufocal*
Linux-gcp-5.11Ubuntuupstream*
Linux-gcp-5.13Ubuntufocal*
Linux-gcp-5.13Ubuntuupstream*
Linux-gcp-5.15Ubuntufocal*
Linux-gcp-5.15Ubuntuupstream*
Linux-gcp-5.19Ubuntuupstream*
Linux-gcp-5.3Ubuntubionic*
Linux-gcp-5.3Ubuntuupstream*
Linux-gcp-5.4Ubuntubionic*
Linux-gcp-5.4Ubuntuupstream*
Linux-gcp-5.8Ubuntufocal*
Linux-gcp-5.8Ubuntuupstream*
Linux-gcp-6.11Ubuntuupstream*
Linux-gcp-6.14Ubuntunoble*
Linux-gcp-6.14Ubuntuupstream*
Linux-gcp-6.2Ubuntuupstream*
Linux-gcp-6.5Ubuntuupstream*
Linux-gcp-6.8Ubuntuupstream*
Linux-gcp-fipsUbuntutrusty*
Linux-gcp-fipsUbuntuupstream*
Linux-gcp-fipsUbuntuxenial*
Linux-gkeUbuntufocal*
Linux-gkeUbuntuupstream*
Linux-gkeUbuntuxenial*
Linux-gke-4.15Ubuntubionic*
Linux-gke-4.15Ubuntuupstream*
Linux-gke-5.15Ubuntufocal*
Linux-gke-5.15Ubuntuupstream*
Linux-gke-5.4Ubuntubionic*
Linux-gke-5.4Ubuntuupstream*
Linux-gkeopUbuntufocal*
Linux-gkeopUbuntuupstream*
Linux-gkeop-5.15Ubuntufocal*
Linux-gkeop-5.15Ubuntuupstream*
Linux-gkeop-5.4Ubuntubionic*
Linux-gkeop-5.4Ubuntuupstream*
Linux-hweUbuntubionic*
Linux-hweUbuntuupstream*
Linux-hweUbuntuxenial*
Linux-hwe-5.11Ubuntufocal*
Linux-hwe-5.11Ubuntuupstream*
Linux-hwe-5.13Ubuntufocal*
Linux-hwe-5.13Ubuntuupstream*
Linux-hwe-5.15Ubuntufocal*
Linux-hwe-5.15Ubuntuupstream*
Linux-hwe-5.19Ubuntuupstream*
Linux-hwe-5.4Ubuntubionic*
Linux-hwe-5.4Ubuntuupstream*
Linux-hwe-5.8Ubuntufocal*
Linux-hwe-5.8Ubuntuupstream*
Linux-hwe-6.11Ubuntuupstream*
Linux-hwe-6.14Ubuntuupstream*
Linux-hwe-6.2Ubuntuupstream*
Linux-hwe-6.5Ubuntuupstream*
Linux-hwe-6.8Ubuntuupstream*
Linux-hwe-edgeUbuntubionic*
Linux-hwe-edgeUbuntuupstream*
Linux-hwe-edgeUbuntuxenial*
Linux-ibmUbuntufocal*
Linux-ibmUbuntuupstream*
Linux-ibm-5.15Ubuntufocal*
Linux-ibm-5.15Ubuntuupstream*
Linux-ibm-5.4Ubuntubionic*
Linux-ibm-5.4Ubuntuupstream*
Linux-ibm-6.8Ubuntuupstream*
Linux-intelUbuntuupstream*
Linux-intel-5.13Ubuntufocal*
Linux-intel-5.13Ubuntuupstream*
Linux-intel-iot-realtimeUbuntuupstream*
Linux-intel-iotgUbuntuupstream*
Linux-intel-iotg-5.15Ubuntufocal*
Linux-intel-iotg-5.15Ubuntuupstream*
Linux-iotUbuntufocal*
Linux-iotUbuntuupstream*
Linux-kvmUbuntubionic*
Linux-kvmUbuntufocal*
Linux-kvmUbuntuupstream*
Linux-kvmUbuntuxenial*
Linux-lowlatencyUbuntuoracular*
Linux-lowlatencyUbuntuupstream*
Linux-lowlatency-hwe-5.15Ubuntufocal*
Linux-lowlatency-hwe-5.15Ubuntuupstream*
Linux-lowlatency-hwe-5.19Ubuntuupstream*
Linux-lowlatency-hwe-6.11Ubuntuupstream*
Linux-lowlatency-hwe-6.2Ubuntuupstream*
Linux-lowlatency-hwe-6.5Ubuntuupstream*
Linux-lowlatency-hwe-6.8Ubuntuupstream*
Linux-lts-xenialUbuntutrusty*
Linux-lts-xenialUbuntutrusty/esm*
Linux-lts-xenialUbuntuupstream*
Linux-nvidiaUbuntuupstream*
Linux-nvidia-6.11Ubuntuupstream*
Linux-nvidia-6.2Ubuntuupstream*
Linux-nvidia-6.5Ubuntuupstream*
Linux-nvidia-6.8Ubuntuupstream*
Linux-nvidia-lowlatencyUbuntuupstream*
Linux-nvidia-tegraUbuntuupstream*
Linux-nvidia-tegra-5.15Ubuntufocal*
Linux-nvidia-tegra-5.15Ubuntuupstream*
Linux-nvidia-tegra-igxUbuntuupstream*
Linux-oemUbuntubionic*
Linux-oemUbuntuupstream*
Linux-oemUbuntuxenial*
Linux-oem-5.10Ubuntufocal*
Linux-oem-5.10Ubuntuupstream*
Linux-oem-5.13Ubuntufocal*
Linux-oem-5.13Ubuntuupstream*
Linux-oem-5.14Ubuntufocal*
Linux-oem-5.14Ubuntuupstream*
Linux-oem-5.17Ubuntuupstream*
Linux-oem-5.6Ubuntufocal*
Linux-oem-5.6Ubuntuupstream*
Linux-oem-6.0Ubuntuupstream*
Linux-oem-6.1Ubuntuupstream*
Linux-oem-6.11Ubuntuupstream*
Linux-oem-6.14Ubuntuupstream*
Linux-oem-6.17Ubuntuupstream*
Linux-oem-6.5Ubuntuupstream*
Linux-oem-6.8Ubuntuupstream*
Linux-oracleUbuntubionic*
Linux-oracleUbuntufocal*
Linux-oracleUbuntuoracular*
Linux-oracleUbuntuupstream*
Linux-oracleUbuntuxenial*
Linux-oracle-5.0Ubuntubionic*
Linux-oracle-5.0Ubuntuupstream*
Linux-oracle-5.11Ubuntufocal*
Linux-oracle-5.11Ubuntuupstream*
Linux-oracle-5.13Ubuntufocal*
Linux-oracle-5.13Ubuntuupstream*
Linux-oracle-5.15Ubuntufocal*
Linux-oracle-5.15Ubuntuupstream*
Linux-oracle-5.3Ubuntubionic*
Linux-oracle-5.3Ubuntuupstream*
Linux-oracle-5.4Ubuntubionic*
Linux-oracle-5.4Ubuntuupstream*
Linux-oracle-5.8Ubuntufocal*
Linux-oracle-5.8Ubuntuupstream*
Linux-oracle-6.14Ubuntuupstream*
Linux-oracle-6.5Ubuntuupstream*
Linux-oracle-6.8Ubuntuupstream*
Linux-raspiUbuntufocal*
Linux-raspiUbuntuoracular*
Linux-raspiUbuntuupstream*
Linux-raspi-5.4Ubuntubionic*
Linux-raspi-5.4Ubuntuupstream*
Linux-raspi-realtimeUbuntuupstream*
Linux-raspi2Ubuntubionic*
Linux-raspi2Ubuntufocal*
Linux-raspi2Ubuntuupstream*
Linux-raspi2Ubuntuxenial*
Linux-realtimeUbuntuoracular*
Linux-realtimeUbuntuupstream*
Linux-realtime-6.14Ubunturealtime/noble*
Linux-realtime-6.14Ubuntuupstream*
Linux-realtime-6.8Ubuntuupstream*
Linux-riscvUbuntufocal*
Linux-riscvUbuntuoracular*
Linux-riscvUbuntuupstream*
Linux-riscv-5.11Ubuntufocal*
Linux-riscv-5.11Ubuntuupstream*
Linux-riscv-5.15Ubuntufocal*
Linux-riscv-5.15Ubuntuupstream*
Linux-riscv-5.19Ubuntuupstream*
Linux-riscv-5.8Ubuntufocal*
Linux-riscv-5.8Ubuntuupstream*
Linux-riscv-6.14Ubuntuupstream*
Linux-riscv-6.5Ubuntuupstream*
Linux-riscv-6.8Ubuntuupstream*
Linux-starfive-5.19Ubuntuupstream*
Linux-starfive-6.2Ubuntuupstream*
Linux-starfive-6.5Ubuntuupstream*
Linux-xilinxUbuntuupstream*
Linux-xilinx-zynqmpUbuntufocal*
Linux-xilinx-zynqmpUbuntuupstream*

Potential Mitigations

References