summaryrefslogtreecommitdiff
path: root/include/linux/iommu-debug-pagealloc.h
diff options
context:
space:
mode:
authorMostafa Saleh <smostafa@google.com>2026-01-09 20:18:05 +0300
committerJoerg Roedel <joerg.roedel@amd.com>2026-01-10 12:52:27 +0300
commita8258ffed2efdf533bdc756141eeb7bc5301ad4f (patch)
tree27119bcc4d12aabf5b9a53f7e6545f057be72018 /include/linux/iommu-debug-pagealloc.h
parent7e84593795b3c05ca682b8aa74cceeceae636ec7 (diff)
downloadlinux-a8258ffed2efdf533bdc756141eeb7bc5301ad4f.tar.xz
iommu: debug-pagealloc: Check mapped/unmapped kernel memory
Now, as the page_ext holds count of IOMMU mappings, we can use it to assert that any page allocated/freed is indeed not in the IOMMU. The sanitizer doesn’t protect against mapping/unmapping during this period. However, that’s less harmful as the page is not used by the kernel. Reviewed-by: Samiullah Khawaja <skhawaja@google.com> Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com> Signed-off-by: Mostafa Saleh <smostafa@google.com> Reviewed-by: Pranjal Shrivastava <praan@google.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Diffstat (limited to 'include/linux/iommu-debug-pagealloc.h')
-rw-r--r--include/linux/iommu-debug-pagealloc.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/iommu-debug-pagealloc.h b/include/linux/iommu-debug-pagealloc.h
index a439d6815ca1..46c3c1f70150 100644
--- a/include/linux/iommu-debug-pagealloc.h
+++ b/include/linux/iommu-debug-pagealloc.h
@@ -13,6 +13,20 @@ DECLARE_STATIC_KEY_FALSE(iommu_debug_initialized);
extern struct page_ext_operations page_iommu_debug_ops;
+void __iommu_debug_check_unmapped(const struct page *page, int numpages);
+
+static inline void iommu_debug_check_unmapped(const struct page *page, int numpages)
+{
+ if (static_branch_unlikely(&iommu_debug_initialized))
+ __iommu_debug_check_unmapped(page, numpages);
+}
+
+#else
+static inline void iommu_debug_check_unmapped(const struct page *page,
+ int numpages)
+{
+}
+
#endif /* CONFIG_IOMMU_DEBUG_PAGEALLOC */
#endif /* __LINUX_IOMMU_DEBUG_PAGEALLOC_H */