In the Linux kernel, the following vulnerability has been resolved:
iommu/arm-smmu-v3: Fix soft lockup triggered by arm_smmu_mm_invalidate_range
When running an SVA case, the following soft lockup is triggered: -------------------------------------------------------------------- watchdog: BUG: soft lockup - CPU#244 stuck for 26s! pstate: 83400009 (Nzcv daif +PAN -UAO +TCO +DIT -SSBS BTYPE=--) pc : arm_smmu_cmdq_issue_cmdlist+0x178/0xa50 lr : arm_smmu_cmdq_issue_cmdlist+0x150/0xa50 sp : ffff8000d83ef290 x29: ffff8000d83ef290 x28: 000000003b9aca00 x27: 0000000000000000 x26: ffff8000d83ef3c0 x25: da86c0812194a0e8 x24: 0000000000000000 x23: 0000000000000040 x22: ffff8000d83ef340 x21: ffff0000c63980c0 x20: 0000000000000001 x19: ffff0000c6398080 x18: 0000000000000000 x17: 0000000000000000 x16: 0000000000000000 x15: ffff3000b4a3bbb0 x14: ffff3000b4a30888 x13: ffff3000b4a3cf60 x12: 0000000000000000 x11: 0000000000000000 x10: 0000000000000000 x9 : ffffc08120e4d6bc x8 : 0000000000000000 x7 : 0000000000000000 x6 : 0000000000048cfa x5 : 0000000000000000 x4 : 0000000000000001 x3 : 000000000000000a x2 : 0000000080000000 x1 : 0000000000000000 x0 : 0000000000000001 Call trace: arm_smmu_cmdq_issue_cmdlist+0x178/0xa50 __arm_smmu_tlb_inv_range+0x118/0x254 arm_smmu_tlb_inv_range_asid+0x6c/0x130 arm_smmu_mm_invalidate_range+0xa0/0xa4 __mmu_notifier_invalidate_range_end+0x88/0x120 unmap_vmas+0x194/0x1e0 unmap_region+0xb4/0x144 do_mas_align_munmap+0x290/0x490 do_mas_munmap+0xbc/0x124 __vm_munmap+0xa8/0x19c __arm64_sys_munmap+0x28/0x50 invoke_syscall+0x78/0x11c el0_svc_common.constprop.0+0x58/0x1c0 do_el0_svc+0x34/0x60 el0_svc+0x2c/0xd4 el0t_64_sync_handler+0x114/0x140 el0t_64_sync+0x1a4/0x1a8 --------------------------------------------------------------------
Note that since 6.6-rc1 the arm_smmu_mm_invalidate_range above is renamed to "arm_smmu_mm_arch_invalidate_secondary_tlbs", yet the problem remains.
The commit 06ff87bae8d3 ("arm64: mm: remove unused functions and variable protoypes") fixed a similar lockup on the CPU MMU side. Yet, it can occur to SMMU too, since arm_smmu_mm_arch_invalidate_secondary_tlbs() is called typically next to MMU tlb flush function, e.g. tlb_flush_mmu_tlbonly { tlb_flush { __flush_tlb_range { // check MAX_TLBI_OPS } } mmu_notifier_arch_invalidate_secondary_tlbs { arm_smmu_mm_arch_invalidate_secondary_tlbs { // does not check MAX_TLBI_OPS } } }
Clone a CMDQ_MAX_TLBI_OPS from the MAX_TLBI_OPS in tlbflush.h, since in an SVA case SMMU uses the CPU page table, so it makes sense to align with the tlbflush code. Then, replace per-page TLBI commands with a single per-asid TLBI command, if the request size hits this threshold.
CVSS Details
- CVSS 3.1 Base Score: 5.5
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Debian | — | Upgrade linux | Jul 30, 2024 | Feb 29, 2024 |
| Huawei Euleros 2_0_sp11 | — | Upgrade kernel-abi-stablelistsUpgrade kernel-toolsUpgrade python3-perfUpgrade kernelUpgrade bpftoolUpgrade kernel-tools-libs | Jun 26, 2024 | Feb 29, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-toolsUpgrade kernelUpgrade python3-perfUpgrade bpftoolUpgrade kernel-tools-libsUpgrade kernel-abi-stablelists | Jul 1, 2024 | Feb 29, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Feb 29, 2024 |
| Suse | — | Upgrade dtb-allwinnerUpgrade dtb-hisiliconUpgrade kernel-docsUpgrade dlm-kmp-azureUpgrade kernel-rt_debug-develUpgrade kernel-rt_debugUpgrade kernel-syms-rtUpgrade kernel-rt_debug-vdsoUpgrade kernel-default-baseUpgrade dtb-marvellUpgrade kernel-debugUpgrade ocfs2-kmp-azureUpgrade kselftests-kmp-rtUpgrade dtb-renesasUpgrade gfs2-kmp-64kbUpgrade kernel-source-rtUpgrade gfs2-kmp-defaultUpgrade kernel-64kbUpgrade kernel-rt-livepatch-develUpgrade dlm-kmp-defaultUpgrade cluster-md-kmp-64kbUpgrade dtb-appleUpgrade kernel-64kb-develUpgrade dtb-sprdUpgrade kernel-64kb-optionalUpgrade kernel-64kb-extraUpgrade kernel-default-livepatchUpgrade kernel-default-livepatch-develUpgrade reiserfs-kmp-rtUpgrade kernel-default-develUpgrade kernel-kvmsmall-livepatch-develUpgrade kernel-kvmsmall-vdsoUpgrade dtb-broadcomUpgrade kernel-64kb-livepatch-develUpgrade reiserfs-kmp-64kbUpgrade kernel-azure-extraUpgrade ocfs2-kmp-defaultUpgrade kselftests-kmp-azureUpgrade dtb-amazonUpgrade kernel-rt-optionalUpgrade dlm-kmp-rtUpgrade kernel-debug-develUpgrade kernel-source-vanillaUpgrade kernel-docs-htmlUpgrade kernel-azure-vdsoUpgrade kselftests-kmp-defaultUpgrade kernel-rt_debug-livepatch-develUpgrade kernel-symsUpgrade kernel-defaultUpgrade reiserfs-kmp-defaultUpgrade dtb-freescaleUpgrade dtb-socionextUpgrade ocfs2-kmp-64kbUpgrade dtb-amdUpgrade dtb-rockchipUpgrade dtb-caviumUpgrade kernel-default-vdsoUpgrade kernel-rt-develUpgrade cluster-md-kmp-defaultUpgrade dtb-armUpgrade cluster-md-kmp-azureUpgrade kernel-rtUpgrade dtb-nvidiaUpgrade dtb-exynosUpgrade kernel-sourceUpgrade kernel-rt-vdsoUpgrade kernel-rt-livepatchUpgrade kernel-macrosUpgrade kernel-devel-rtUpgrade kernel-azure-livepatch-develUpgrade gfs2-kmp-azureUpgrade dtb-xilinxUpgrade kselftests-kmp-64kbUpgrade kernel-debug-livepatch-develUpgrade kernel-kvmsmall-develUpgrade kernel-syms-azureUpgrade dtb-qcomUpgrade kernel-default-extraUpgrade kernel-source-azureUpgrade kernel-azure-optionalUpgrade kernel-default-optionalUpgrade kernel-zfcpdumpUpgrade dtb-apmUpgrade ocfs2-kmp-rtUpgrade kernel-rt-extraUpgrade kernel-debug-vdsoUpgrade kernel-azureUpgrade dtb-alteraUpgrade kernel-obs-qaUpgrade kernel-kvmsmallUpgrade kernel-devel-azureUpgrade dtb-lgUpgrade dlm-kmp-64kbUpgrade cluster-md-kmp-rtUpgrade kernel-default-base-rebuildUpgrade dtb-amlogicUpgrade dtb-mediatekUpgrade reiserfs-kmp-azureUpgrade kernel-obs-buildUpgrade kernel-develUpgrade kernel-azure-develUpgrade gfs2-kmp-rt | Mar 15, 2024 | Feb 29, 2024 |
| Ubuntu | — | Upgrade linux-nvidia-tegraUpgrade linux-aws-fipsUpgrade linux-gcpUpgrade linux-intel-iot-realtimeUpgrade linux-lowlatencyUpgrade linux-oracle-5.15Upgrade linux-gcp-fipsUpgrade linux-awsUpgrade linux-gkeopUpgrade linuxUpgrade linux-nvidia-tegra-5.15Upgrade linux-gkeUpgrade linux-nvidia-tegra-igxUpgrade linux-ibm-5.15Upgrade linux-bluefieldUpgrade linux-aws-5.15Upgrade linux-riscv-5.15Upgrade linux-azure-fdeUpgrade linux-oracleUpgrade linux-nvidiaUpgrade linux-fipsUpgrade linux-gkeop-5.15Upgrade linux-azureUpgrade linux-nvidia-6.5Upgrade linux-raspiUpgrade linux-xilinx-zynqmpUpgrade linux-ibmUpgrade linux-gcp-5.15Upgrade linux-lowlatency-hwe-5.15Upgrade linux-intel-iotg-5.15Upgrade linux-hwe-5.15Upgrade linux-azure-5.15Upgrade linux-realtimeUpgrade linux-kvmUpgrade linux-intel-iotg | Nov 19, 2024 | Feb 29, 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