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-rt-develUpgrade kernel-docUpgrade perfUpgrade kernel-rt-modulesUpgrade kernel-develUpgrade kernel-debugUpgrade python3-perfUpgrade kernel-debug-develUpgrade kernel-rt-coreUpgrade kernel-rt-kvmUpgrade kernel-tools-libs-develUpgrade kernel-rt-debugUpgrade kernel-rt-debug-develUpgrade kernel-zfcpdump-modules-extraUpgrade kernel-rt-debug-modules-extraUpgrade kernel-rt-debug-modulesUpgrade kernel-zfcpdumpUpgrade kernel-debug-modules-extraUpgrade kernel-rt-modules-extraUpgrade kernel-modules-extraUpgrade kernel-debug-modulesUpgrade kernel-rt-debug-coreUpgrade kernelUpgrade kernel-abi-stablelistsUpgrade kernel-rt-debug-kvmUpgrade kernel-toolsUpgrade kernel-zfcpdump-develUpgrade kernel-zfcpdump-modulesUpgrade kernel-headersUpgrade kernel-zfcpdump-coreUpgrade kernel-rtUpgrade kernel-tools-libsUpgrade kernel-debug-coreUpgrade kernel-cross-headersUpgrade bpftoolUpgrade kernel-modulesUpgrade kernel-core | 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 | — | Upgrade kernel-rtNo solution existsUpgrade kernel | Aug 12, 2024 | May 17, 2024 |
| Rocky_linux | — | Upgrade kernel-headersUpgrade perfUpgrade kernel-rt-debug-kvmUpgrade kernel-modulesUpgrade kernel-coreUpgrade kernel-debug-develUpgrade kernel-rt-debuginfoUpgrade kernel-rt-debug-modules-extraUpgrade perf-debuginfoUpgrade kernel-debuginfoUpgrade kernel-rt-modulesUpgrade kernel-tools-libs-develUpgrade kernel-rt-debug-develUpgrade python3-perfUpgrade kernel-rt-debug-coreUpgrade kernel-rtUpgrade kernel-debug-debuginfoUpgrade kernel-toolsUpgrade kernel-rt-modules-extraUpgrade kernel-cross-headersUpgrade kernel-debug-modulesUpgrade kernel-debugUpgrade kernel-rt-kvmUpgrade kernel-rt-debuginfo-common-x86_64Upgrade kernel-rt-debug-modulesUpgrade kernel-rt-develUpgrade kernel-rt-debugUpgrade bpftool-debuginfoUpgrade kernel-rt-debug-debuginfoUpgrade python3-perf-debuginfoUpgrade kernel-debug-coreUpgrade bpftoolUpgrade kernel-tools-libsUpgrade kernel-develUpgrade kernel-rt-coreUpgrade kernelUpgrade kernel-tools-debuginfoUpgrade kernel-debug-modules-extraUpgrade kernel-modules-extraUpgrade kernel-debuginfo-common-x86_64 | Aug 22, 2024 | May 17, 2024 |
| Suse | — | Upgrade dtb-apmUpgrade kernel-azure-vdsoUpgrade kernel-syms-azureUpgrade cluster-md-kmp-azureUpgrade kernel-rt_debugUpgrade kernel-rtUpgrade gfs2-kmp-rtUpgrade kernel-default-base-rebuildUpgrade kernel-kvmsmall-develUpgrade dtb-amlogicUpgrade ocfs2-kmp-rtUpgrade dtb-freescaleUpgrade gfs2-kmp-64kbUpgrade dtb-marvellUpgrade reiserfs-kmp-azureUpgrade kernel-devel-azureUpgrade kernel-default-extraUpgrade kernel-azure-develUpgrade kernel-rt_debug-vdsoUpgrade dlm-kmp-64kbUpgrade cluster-md-kmp-defaultUpgrade dtb-broadcomUpgrade kernel-syms-rtUpgrade dtb-exynosUpgrade kernel-debug-livepatch-develUpgrade kernel-kvmsmallUpgrade kernel-sourceUpgrade kernel-64kbUpgrade dtb-qcomUpgrade dtb-rockchipUpgrade dtb-armUpgrade kernel-macrosUpgrade kernel-source-azureUpgrade dlm-kmp-azureUpgrade kselftests-kmp-defaultUpgrade kernel-docs-htmlUpgrade kernel-obs-qaUpgrade kernel-rt-livepatch-develUpgrade kernel-default-develUpgrade kselftests-kmp-64kbUpgrade kernel-kvmsmall-vdsoUpgrade dtb-amazonUpgrade dtb-lgUpgrade kernel-default-vdsoUpgrade kernel-64kb-livepatch-develUpgrade kernel-symsUpgrade kernel-rt-vdsoUpgrade kernel-azure-livepatch-develUpgrade kernel-zfcpdumpUpgrade dlm-kmp-defaultUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-rt-develUpgrade reiserfs-kmp-rtUpgrade dtb-appleUpgrade kernel-64kb-optionalUpgrade cluster-md-kmp-64kbUpgrade kernel-debug-develUpgrade kernel-rt-extraUpgrade kernel-defaultUpgrade dtb-allwinnerUpgrade reiserfs-kmp-defaultUpgrade dtb-xilinxUpgrade kernel-default-livepatchUpgrade kernel-debugUpgrade dtb-mediatekUpgrade dtb-amdUpgrade dtb-caviumUpgrade kernel-develUpgrade kernel-default-optionalUpgrade cluster-md-kmp-rtUpgrade kernel-rt_debug-develUpgrade kernel-default-baseUpgrade kernel-debug-vdsoUpgrade kselftests-kmp-azureUpgrade kernel-azure-optionalUpgrade dtb-sprdUpgrade kernel-rt-livepatchUpgrade kernel-source-vanillaUpgrade dtb-renesasUpgrade ocfs2-kmp-defaultUpgrade kernel-default-livepatch-develUpgrade kernel-source-rtUpgrade kernel-devel-rtUpgrade kselftests-kmp-rtUpgrade kernel-obs-buildUpgrade kernel-azure-extraUpgrade dlm-kmp-rtUpgrade kernel-64kb-develUpgrade dtb-nvidiaUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-64kb-extraUpgrade dtb-socionextUpgrade ocfs2-kmp-azureUpgrade dtb-hisiliconUpgrade gfs2-kmp-azureUpgrade kernel-azureUpgrade kernel-docsUpgrade reiserfs-kmp-64kbUpgrade gfs2-kmp-defaultUpgrade kernel-rt-optionalUpgrade ocfs2-kmp-64kbUpgrade dtb-altera | Jun 24, 2024 | May 17, 2024 |
| Ubuntu | — | Upgrade linux-image-ibm-lts-24.04Upgrade linux-image-6.8.0-35-lowlatencyUpgrade linux-image-6.8.0-35-generic-64kUpgrade linux-image-generic-lpaeUpgrade linux-image-6.8.0-1004-gkeUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-kvmUpgrade linux-image-oracleUpgrade linux-image-awsUpgrade linux-image-6.8.0-1008-azure-fdeUpgrade linux-image-6.8.0-1006-ibmUpgrade linux-image-ibm-classicUpgrade linux-image-6.8.0-35-lowlatency-64kUpgrade linux-image-azure-fdeUpgrade linux-image-6.8.0-1006-oracle-64kUpgrade linux-image-raspiUpgrade linux-image-lowlatencyUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-ibmUpgrade linux-image-6.8.0-1006-oemUpgrade linux-image-gcpUpgrade linux-image-gkeUpgrade linux-image-oem-24.04aUpgrade linux-image-oracle-64kUpgrade linux-image-6.8.0-1005-raspiUpgrade linux-image-6.8.0-1009-awsUpgrade linux-image-oem-24.04Upgrade linux-image-lowlatency-64kUpgrade linux-image-genericUpgrade linux-image-generic-hwe-24.04Upgrade linux-image-virtualUpgrade linux-image-6.8.0-1008-gcpUpgrade linux-image-azureUpgrade linux-image-6.8.0-35-genericUpgrade linux-image-generic-64kUpgrade linux-image-6.8.0-1006-oracleUpgrade linux-image-6.8.0-1008-azure | 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