In the Linux kernel, the following vulnerability has been resolved:
swiotlb: Fix double-allocation of slots due to broken alignment handling
Commit bbb73a103fbb ("swiotlb: fix a braino in the alignment check fix"), which was a fix for commit 0eee5ae10256 ("swiotlb: fix slot alignment checks"), causes a functional regression with vsock in a virtual machine using bouncing via a restricted DMA SWIOTLB pool.
When virtio allocates the virtqueues for the vsock device using dma_alloc_coherent(), the SWIOTLB search can return page-unaligned allocations if 'area->index' was left unaligned by a previous allocation from the buffer:
# Final address in brackets is the SWIOTLB address returned to the caller | virtio-pci 0000:00:07.0: orig_addr 0x0 alloc_size 0x2000, iotlb_align_mask 0x800 stride 0x2: got slot 1645-1649/7168 (0x98326800) | virtio-pci 0000:00:07.0: orig_addr 0x0 alloc_size 0x2000, iotlb_align_mask 0x800 stride 0x2: got slot 1649-1653/7168 (0x98328800) | virtio-pci 0000:00:07.0: orig_addr 0x0 alloc_size 0x2000, iotlb_align_mask 0x800 stride 0x2: got slot 1653-1657/7168 (0x9832a800)
This ends badly (typically buffer corruption and/or a hang) because swiotlb_alloc() is expecting a page-aligned allocation and so blindly returns a pointer to the 'struct page' corresponding to the allocation, therefore double-allocating the first half (2KiB slot) of the 4KiB page.
Fix the problem by treating the allocation alignment separately to any additional alignment requirements from the device, using the maximum of the two as the stride to search the buffer slots and taking care to ensure a minimum of page-alignment for buffers larger than a page.
This also resolves swiotlb allocation failures occuring due to the inclusion of ~PAGE_MASK in 'iotlb_align_mask' for large allocations and resulting in alignment requirements exceeding swiotlb_max_mapping_size().
CVSS Details
- CVSS 3.1 Base Score: 7.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Alma_linux | — | Upgrade kernel-docUpgrade kernel-develUpgrade kernel-rt-debug-develUpgrade kernel-zfcpdump-modules-extraUpgrade python3-perfUpgrade kernel-rt-debugUpgrade kernel-rt-modulesUpgrade kernel-rt-coreUpgrade kernel-tools-libs-develUpgrade kernel-rt-develUpgrade kernel-rt-kvmUpgrade kernel-debug-develUpgrade kernel-debugUpgrade perfUpgrade kernel-rt-debug-modules-extraUpgrade kernel-cross-headersUpgrade kernel-debug-coreUpgrade kernel-rt-debug-coreUpgrade kernel-tools-libsUpgrade kernel-coreUpgrade kernel-zfcpdump-modulesUpgrade kernel-toolsUpgrade bpftoolUpgrade kernel-debug-modules-extraUpgrade kernel-abi-stablelistsUpgrade kernel-rt-modules-extraUpgrade kernel-zfcpdump-develUpgrade kernel-modulesUpgrade kernel-rtUpgrade kernel-zfcpdumpUpgrade kernel-headersUpgrade kernel-rt-debug-modulesUpgrade kernel-modules-extraUpgrade kernel-debug-modulesUpgrade kernel-zfcpdump-coreUpgrade kernelUpgrade kernel-rt-debug-kvm | Aug 12, 2024 | May 17, 2024 |
| Debian | — | Upgrade linux | Jul 27, 2026 | Jul 27, 2026 |
| Oracle_linux | — | Upgrade kernel | Aug 16, 2024 | May 17, 2024 |
| Redhat_linux | — | No solution existsUpgrade kernel-rtUpgrade kernel | Aug 12, 2024 | May 17, 2024 |
| Rocky_linux | — | Upgrade perf-debuginfoUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-debug-develUpgrade kernel-rt-modulesUpgrade kernel-coreUpgrade kernel-rt-debuginfoUpgrade python3-perfUpgrade kernel-modulesUpgrade kernel-debug-develUpgrade kernel-debuginfoUpgrade kernel-headersUpgrade kernel-tools-libs-develUpgrade kernel-rt-debug-kvmUpgrade perfUpgrade kernel-rt-debugUpgrade kernel-debug-modulesUpgrade kernel-rt-kvmUpgrade python3-perf-debuginfoUpgrade kernelUpgrade kernel-rt-coreUpgrade kernel-tools-libsUpgrade kernel-rt-develUpgrade bpftool-debuginfoUpgrade kernel-tools-debuginfoUpgrade kernel-rt-debug-modulesUpgrade kernel-debug-debuginfoUpgrade kernel-cross-headersUpgrade kernel-rt-debug-debuginfoUpgrade kernel-develUpgrade kernel-rt-debug-coreUpgrade kernel-debug-modules-extraUpgrade kernel-rtUpgrade kernel-modules-extraUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-toolsUpgrade kernel-rt-modules-extraUpgrade kernel-debugUpgrade kernel-rt-debuginfo-common-x86_64Upgrade kernel-debug-coreUpgrade bpftool | Aug 22, 2024 | May 17, 2024 |
| Suse | — | Upgrade kernel-azure-vdsoUpgrade kernel-rt_debugUpgrade kernel-rt-vdsoUpgrade kernel-symsUpgrade dtb-apmUpgrade kernel-source-azureUpgrade kernel-obs-qaUpgrade kselftests-kmp-64kbUpgrade dlm-kmp-azureUpgrade dtb-armUpgrade dtb-qcomUpgrade kernel-devel-azureUpgrade kernel-sourceUpgrade kernel-azure-livepatch-develUpgrade kernel-rt-livepatch-develUpgrade kernel-azure-develUpgrade kernel-docs-htmlUpgrade kernel-kvmsmallUpgrade dtb-amazonUpgrade cluster-md-kmp-defaultUpgrade dtb-broadcomUpgrade kselftests-kmp-defaultUpgrade dtb-exynosUpgrade dtb-freescaleUpgrade kernel-syms-rtUpgrade kernel-64kbUpgrade dtb-lgUpgrade dlm-kmp-64kbUpgrade kernel-rtUpgrade kernel-kvmsmall-develUpgrade kernel-syms-azureUpgrade dtb-marvellUpgrade gfs2-kmp-64kbUpgrade dtb-amlogicUpgrade gfs2-kmp-rtUpgrade kernel-rt_debug-vdsoUpgrade kernel-default-base-rebuildUpgrade kernel-macrosUpgrade ocfs2-kmp-rtUpgrade kernel-default-extraUpgrade reiserfs-kmp-azureUpgrade kernel-64kb-livepatch-develUpgrade kernel-default-develUpgrade kernel-default-vdsoUpgrade kernel-debug-livepatch-develUpgrade kernel-kvmsmall-vdsoUpgrade dtb-rockchipUpgrade kernel-zfcpdumpUpgrade cluster-md-kmp-azureUpgrade kernel-kvmsmall-livepatch-develUpgrade reiserfs-kmp-64kbUpgrade dlm-kmp-rtUpgrade kernel-azure-extraUpgrade gfs2-kmp-azureUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-default-baseUpgrade kernel-64kb-develUpgrade kernel-default-livepatchUpgrade dlm-kmp-defaultUpgrade kernel-source-rtUpgrade kernel-docsUpgrade kernel-obs-buildUpgrade kernel-rt-extraUpgrade kernel-debug-develUpgrade dtb-allwinnerUpgrade kernel-azureUpgrade kernel-devel-rtUpgrade kernel-rt-optionalUpgrade gfs2-kmp-defaultUpgrade ocfs2-kmp-64kbUpgrade cluster-md-kmp-rtUpgrade dtb-alteraUpgrade kernel-rt-livepatchUpgrade kernel-source-vanillaUpgrade kernel-default-livepatch-develUpgrade dtb-renesasUpgrade ocfs2-kmp-defaultUpgrade dtb-mediatekUpgrade kernel-develUpgrade kernel-rt_debug-develUpgrade ocfs2-kmp-azureUpgrade kselftests-kmp-rtUpgrade dtb-socionextUpgrade dtb-nvidiaUpgrade kernel-64kb-extraUpgrade kernel-debug-vdsoUpgrade kernel-azure-optionalUpgrade kselftests-kmp-azureUpgrade cluster-md-kmp-64kbUpgrade kernel-rt-develUpgrade dtb-appleUpgrade reiserfs-kmp-rtUpgrade kernel-64kb-optionalUpgrade dtb-amdUpgrade kernel-debugUpgrade dtb-caviumUpgrade kernel-default-optionalUpgrade reiserfs-kmp-defaultUpgrade kernel-defaultUpgrade dtb-xilinxUpgrade dtb-sprdUpgrade dtb-hisilicon | Jun 24, 2024 | May 17, 2024 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1006-oracle-64kUpgrade linux-image-azure-fdeUpgrade linux-image-ibm-lts-24.04Upgrade linux-image-oracleUpgrade linux-image-raspiUpgrade linux-image-6.8.0-35-lowlatencyUpgrade linux-image-6.8.0-1004-gkeUpgrade linux-image-6.8.0-1006-ibmUpgrade linux-image-6.8.0-35-generic-64kUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-1008-azure-fdeUpgrade linux-image-generic-lpaeUpgrade linux-image-kvmUpgrade linux-image-6.8.0-35-lowlatency-64kUpgrade linux-image-awsUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-azureUpgrade linux-image-6.8.0-1005-raspiUpgrade linux-image-genericUpgrade linux-image-6.8.0-35-genericUpgrade linux-image-gkeUpgrade linux-image-oem-24.04aUpgrade linux-image-gcpUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-oem-24.04Upgrade linux-image-ibmUpgrade linux-image-6.8.0-1009-awsUpgrade linux-image-6.8.0-1006-oemUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-6.8.0-1008-azureUpgrade linux-image-oracle-64kUpgrade linux-image-lowlatency-64kUpgrade linux-image-lowlatencyUpgrade linux-image-virtualUpgrade linux-image-6.8.0-1006-oracleUpgrade linux-image-generic-64kUpgrade linux-image-6.8.0-1008-gcp | Jul 1, 2024 | May 17, 2024 |
Prioritise with Active Threat Intelligence
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