iommu/vt-d: Remove BUG_ON on checking valid pfn range
authorTina Zhang <tina.zhang@intel.com>
Thu, 13 Apr 2023 04:06:40 +0000 (12:06 +0800)
committerJoerg Roedel <jroedel@suse.de>
Thu, 13 Apr 2023 10:05:51 +0000 (12:05 +0200)
When encountering an unexpected invalid pfn range, the kernel should
attempt recovery and proceed with execution. Therefore, using WARN_ON to
replace BUG_ON to avoid halting the machine.

Besides, one redundant checking is reduced.

Signed-off-by: Tina Zhang <tina.zhang@intel.com>
Link: https://lore.kernel.org/r/20230406065944.2773296-3-tina.zhang@intel.com
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel/iommu.c

index acbf82f..c4847a5 100644 (file)
@@ -1005,9 +1005,9 @@ static void dma_pte_clear_range(struct dmar_domain *domain,
        unsigned int large_page;
        struct dma_pte *first_pte, *pte;
 
-       BUG_ON(!domain_pfn_supported(domain, start_pfn));
-       BUG_ON(!domain_pfn_supported(domain, last_pfn));
-       BUG_ON(start_pfn > last_pfn);
+       if (WARN_ON(!domain_pfn_supported(domain, last_pfn)) ||
+           WARN_ON(start_pfn > last_pfn))
+               return;
 
        /* we don't need lock here; nobody else touches the iova range */
        do {
@@ -1166,9 +1166,9 @@ next:
 static void domain_unmap(struct dmar_domain *domain, unsigned long start_pfn,
                         unsigned long last_pfn, struct list_head *freelist)
 {
-       BUG_ON(!domain_pfn_supported(domain, start_pfn));
-       BUG_ON(!domain_pfn_supported(domain, last_pfn));
-       BUG_ON(start_pfn > last_pfn);
+       if (WARN_ON(!domain_pfn_supported(domain, last_pfn)) ||
+           WARN_ON(start_pfn > last_pfn))
+               return;
 
        /* we don't need lock here; nobody else touches the iova range */
        dma_pte_clear_level(domain, agaw_to_level(domain->agaw),