In the Linux kernel, the following vulnerability has been resolved:
x86/mm: Ensure input to pfn_to_kaddr() is treated as a 64-bit type
On 64-bit platforms, the pfn_to_kaddr() macro requires that the input value is 64 bits in order to ensure that valid address bits don't get lost when shifting that input by PAGE_SHIFT to calculate the physical address to provide a virtual address for.
One such example is in pvalidate_pages() (used by SEV-SNP guests), where the GFN in the struct used for page-state change requests is a 40-bit bit-field, so attempts to pass this GFN field directly into pfn_to_kaddr() ends up causing guest crashes when dealing with addresses above the 1TB range due to the above.
Fix this issue with SEV-SNP guests, as well as any similar cases that might cause issues in current/future code, by using an inline function, instead of a macro, so that the input is implicitly cast to the expected 64-bit input type prior to performing the shift operation.
While it might be argued that the issue is on the caller side, other archs/macros have taken similar approaches to deal with instances like this, such as ARM explicitly casting the input to phys_addr_t:
e48866647b48 ("ARM: 8396/1: use phys_addr_t in pfn_to_kaddr()")
A C inline function is even better though.
[ mingo: Refined the changelog some more & added __always_inline. ]
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 27, 2026 | Jul 27, 2026 |
| Redhat_linux | — | Upgrade kernel-rtUpgrade kernelNo solution exists | Dec 5, 2024 | May 17, 2024 |
| Suse | — | Upgrade kernel-64kb-develUpgrade kernel-64kb-livepatch-develUpgrade kernel-debugUpgrade kernel-default-vdsoUpgrade kernel-64kb-optionalUpgrade kernel-debug-develUpgrade kernel-docs-htmlUpgrade kernel-zfcpdumpUpgrade gfs2-kmp-azureUpgrade kernel-debug-livepatch-develUpgrade kernel-64kbUpgrade cluster-md-kmp-azureUpgrade kernel-devel-azureUpgrade kernel-macrosUpgrade kselftests-kmp-64kbUpgrade dtb-caviumUpgrade dtb-amlogicUpgrade dtb-apmUpgrade dtb-hisiliconUpgrade cluster-md-kmp-defaultUpgrade kernel-azure-optionalUpgrade dtb-appleUpgrade kernel-develUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-azure-livepatch-develUpgrade kselftests-kmp-azureUpgrade dtb-amazonUpgrade dtb-amdUpgrade dtb-broadcomUpgrade kernel-rt_debugUpgrade kernel-sourceUpgrade kernel-azure-extraUpgrade gfs2-kmp-64kbUpgrade kernel-rt_debug-develUpgrade ocfs2-kmp-64kbUpgrade dlm-kmp-64kbUpgrade kernel-default-extraUpgrade dtb-lgUpgrade ocfs2-kmp-rtUpgrade reiserfs-kmp-64kbUpgrade dtb-alteraUpgrade kernel-default-livepatchUpgrade kernel-source-azureUpgrade cluster-md-kmp-rtUpgrade kernel-rt-optionalUpgrade kernel-symsUpgrade dtb-exynosUpgrade dtb-marvellUpgrade kernel-kvmsmallUpgrade gfs2-kmp-rtUpgrade dtb-freescaleUpgrade kernel-syms-azureUpgrade kernel-source-rtUpgrade kernel-obs-qaUpgrade kernel-default-develUpgrade kernel-kvmsmall-develUpgrade kernel-kvmsmall-vdsoUpgrade reiserfs-kmp-defaultUpgrade kernel-default-baseUpgrade kernel-source-vanillaUpgrade dlm-kmp-azureUpgrade dtb-socionextUpgrade kernel-default-livepatch-develUpgrade kernel-azure-develUpgrade kernel-rt_debug-vdsoUpgrade dlm-kmp-rtUpgrade dtb-xilinxUpgrade cluster-md-kmp-64kbUpgrade dtb-nvidiaUpgrade dlm-kmp-defaultUpgrade kernel-rt-develUpgrade kernel-syms-rtUpgrade dtb-allwinnerUpgrade dtb-rockchipUpgrade kernel-debug-vdsoUpgrade gfs2-kmp-defaultUpgrade dtb-qcomUpgrade kernel-rt-livepatchUpgrade kernel-devel-rtUpgrade ocfs2-kmp-defaultUpgrade kselftests-kmp-rtUpgrade kernel-rtUpgrade kernel-64kb-extraUpgrade dtb-armUpgrade dtb-mediatekUpgrade reiserfs-kmp-rtUpgrade kernel-rt-vdsoUpgrade dtb-sprdUpgrade kernel-azureUpgrade ocfs2-kmp-azureUpgrade kernel-rt-extraUpgrade kernel-default-optionalUpgrade kernel-defaultUpgrade kernel-azure-vdsoUpgrade kernel-obs-buildUpgrade reiserfs-kmp-azureUpgrade kernel-docsUpgrade kselftests-kmp-defaultUpgrade kernel-rt-livepatch-develUpgrade kernel-default-base-rebuildUpgrade dtb-renesasUpgrade kernel-rt_debug-livepatch-devel | Jun 13, 2024 | May 17, 2024 |
| Ubuntu | — | Upgrade linux-image-generic-64kUpgrade linux-image-gcpUpgrade linux-image-6.8.0-1008-azureUpgrade linux-image-lowlatency-64kUpgrade linux-image-oem-24.04aUpgrade linux-image-generic-lpaeUpgrade linux-image-lowlatencyUpgrade linux-image-azure-fdeUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1006-oracleUpgrade linux-image-6.8.0-35-generic-64kUpgrade linux-image-6.8.0-1005-raspiUpgrade linux-image-6.8.0-1006-ibmUpgrade linux-image-raspiUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-azureUpgrade linux-image-ibmUpgrade linux-image-genericUpgrade linux-image-virtualUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-oracleUpgrade linux-image-6.8.0-35-lowlatency-64kUpgrade linux-image-6.8.0-1008-azure-fdeUpgrade linux-image-gkeUpgrade linux-image-6.8.0-35-genericUpgrade linux-image-oem-24.04Upgrade linux-image-6.8.0-35-lowlatencyUpgrade linux-image-awsUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1009-awsUpgrade linux-image-6.8.0-1006-oemUpgrade linux-image-6.8.0-1008-gcpUpgrade linux-image-kvmUpgrade linux-image-6.8.0-1004-gkeUpgrade linux-image-6.8.0-1006-oracle-64k | Jul 1, 2024 | May 17, 2024 |
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub