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-toolsUpgrade python3-perfUpgrade kernel-abi-stablelistsUpgrade kernelUpgrade bpftoolUpgrade kernel-tools-libs | Jun 26, 2024 | Feb 29, 2024 |
| Huawei Euleros 2_0_sp12 | — | Upgrade kernel-abi-stablelistsUpgrade bpftoolUpgrade python3-perfUpgrade kernel-toolsUpgrade kernel-tools-libsUpgrade kernel | Jul 1, 2024 | Feb 29, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Feb 29, 2024 |
| Suse | — | Upgrade kernel-rt_debug-develUpgrade kernel-rt_debugUpgrade kernel-rt_debug-vdsoUpgrade kernel-kvmsmall-livepatch-develUpgrade dtb-marvellUpgrade kernel-source-rtUpgrade ocfs2-kmp-azureUpgrade dtb-sprdUpgrade gfs2-kmp-defaultUpgrade kernel-64kb-extraUpgrade dlm-kmp-defaultUpgrade kernel-debugUpgrade gfs2-kmp-64kbUpgrade kernel-64kb-develUpgrade cluster-md-kmp-64kbUpgrade kernel-kvmsmall-vdsoUpgrade kselftests-kmp-azureUpgrade kernel-rt-livepatch-develUpgrade dtb-appleUpgrade kernel-64kbUpgrade kernel-64kb-livepatch-develUpgrade kernel-default-baseUpgrade reiserfs-kmp-64kbUpgrade kernel-syms-rtUpgrade kernel-docsUpgrade kernel-azure-extraUpgrade dtb-hisiliconUpgrade dtb-amazonUpgrade reiserfs-kmp-defaultUpgrade dtb-allwinnerUpgrade dtb-broadcomUpgrade kernel-symsUpgrade kernel-debug-develUpgrade kernel-docs-htmlUpgrade dlm-kmp-rtUpgrade kernel-source-vanillaUpgrade kernel-defaultUpgrade ocfs2-kmp-64kbUpgrade kselftests-kmp-rtUpgrade kernel-default-livepatch-develUpgrade dlm-kmp-azureUpgrade dtb-freescaleUpgrade reiserfs-kmp-rtUpgrade dtb-socionextUpgrade kernel-default-livepatchUpgrade kernel-azure-vdsoUpgrade kselftests-kmp-defaultUpgrade dtb-amdUpgrade kernel-rt-optionalUpgrade kernel-rt_debug-livepatch-develUpgrade ocfs2-kmp-defaultUpgrade kernel-64kb-optionalUpgrade kernel-default-develUpgrade dtb-renesasUpgrade kernel-source-azureUpgrade dtb-alteraUpgrade kernel-default-base-rebuildUpgrade kernel-default-vdsoUpgrade dtb-lgUpgrade kernel-devel-azureUpgrade dlm-kmp-64kbUpgrade dtb-xilinxUpgrade kselftests-kmp-64kbUpgrade kernel-macrosUpgrade gfs2-kmp-azureUpgrade kernel-devel-rtUpgrade kernel-azure-livepatch-develUpgrade kernel-syms-azureUpgrade dtb-qcomUpgrade kernel-debug-vdsoUpgrade kernel-azureUpgrade dtb-amlogicUpgrade kernel-debug-livepatch-develUpgrade kernel-azure-optionalUpgrade dtb-apmUpgrade cluster-md-kmp-defaultUpgrade dtb-armUpgrade kernel-rt-develUpgrade gfs2-kmp-rtUpgrade dtb-caviumUpgrade cluster-md-kmp-azureUpgrade dtb-rockchipUpgrade kernel-rt-extraUpgrade kernel-default-optionalUpgrade reiserfs-kmp-azureUpgrade kernel-develUpgrade kernel-azure-develUpgrade kernel-obs-buildUpgrade kernel-rt-livepatchUpgrade kernel-rtUpgrade dtb-nvidiaUpgrade kernel-sourceUpgrade kernel-rt-vdsoUpgrade dtb-exynosUpgrade kernel-kvmsmall-develUpgrade kernel-default-extraUpgrade kernel-zfcpdumpUpgrade dtb-mediatekUpgrade cluster-md-kmp-rtUpgrade ocfs2-kmp-rtUpgrade kernel-kvmsmallUpgrade kernel-obs-qa | Mar 15, 2024 | Feb 29, 2024 |
| Ubuntu | — | Upgrade linux-intel-iotg-5.15Upgrade linux-ibmUpgrade linux-bluefieldUpgrade linux-hwe-5.15Upgrade linux-realtimeUpgrade linux-azure-5.15Upgrade linux-raspiUpgrade linux-fipsUpgrade linux-azure-fdeUpgrade linux-aws-5.15Upgrade linux-gkeop-5.15Upgrade linux-oracleUpgrade linux-gcp-5.15Upgrade linux-xilinx-zynqmpUpgrade linux-lowlatency-hwe-5.15Upgrade linux-riscv-5.15Upgrade linux-intel-iotgUpgrade linux-azureUpgrade linux-nvidia-6.5Upgrade linux-kvmUpgrade linux-nvidiaUpgrade linux-lowlatencyUpgrade linux-nvidia-tegra-5.15Upgrade linux-intel-iot-realtimeUpgrade linux-gkeUpgrade linux-awsUpgrade linux-oracle-5.15Upgrade linuxUpgrade linux-gkeopUpgrade linux-nvidia-tegraUpgrade linux-gcp-fipsUpgrade linux-gcpUpgrade linux-ibm-5.15Upgrade linux-aws-fipsUpgrade linux-nvidia-tegra-igx | 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