aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorXianLiang Huang <huangxianliang@lanxincomputing.com>2025-08-20 15:22:48 +0800
committerJoerg Roedel <joerg.roedel@amd.com>2025-08-22 08:51:49 +0200
commit99d4d1a070870aa08163af8ce0522992b7f35d8c (patch)
tree6e0827cf83a748d88bd339bc673a32b33de4af66
parentiommu/virtio: Make instance lookup robust (diff)
downloadwireguard-linux-99d4d1a070870aa08163af8ce0522992b7f35d8c.tar.xz
wireguard-linux-99d4d1a070870aa08163af8ce0522992b7f35d8c.zip
iommu/riscv: prevent NULL deref in iova_to_phys
The riscv_iommu_pte_fetch() function returns either NULL for unmapped/never-mapped iova, or a valid leaf pte pointer that requires no further validation. riscv_iommu_iova_to_phys() failed to handle NULL returns. Prevent null pointer dereference in riscv_iommu_iova_to_phys(), and remove the pte validation. Fixes: 488ffbf18171 ("iommu/riscv: Paging domain support") Cc: Tomasz Jeznach <tjeznach@rivosinc.com> Signed-off-by: XianLiang Huang <huangxianliang@lanxincomputing.com> Link: https://lore.kernel.org/r/20250820072248.312-1-huangxianliang@lanxincomputing.com Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
-rw-r--r--drivers/iommu/riscv/iommu.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/iommu/riscv/iommu.c b/drivers/iommu/riscv/iommu.c
index 2d0d31ba2886..0eae2f4bdc5e 100644
--- a/drivers/iommu/riscv/iommu.c
+++ b/drivers/iommu/riscv/iommu.c
@@ -1283,7 +1283,7 @@ static phys_addr_t riscv_iommu_iova_to_phys(struct iommu_domain *iommu_domain,
unsigned long *ptr;
ptr = riscv_iommu_pte_fetch(domain, iova, &pte_size);
- if (_io_pte_none(*ptr) || !_io_pte_present(*ptr))
+ if (!ptr)
return 0;
return pfn_to_phys(__page_val_to_pfn(*ptr)) | (iova & (pte_size - 1));