Re: [PATCH v2 1/2] iova: Remove some magazine pointer NULL checks

From: John Garry
Date: Tue Sep 06 2022 - 06:53:26 EST


On 06/09/2022 10:28, Ethan Zhao wrote:

Hi Ethan,

Signed-off-by: John Garry <john.garry@xxxxxxxxxx>
Reviewed-by: Robin Murphy <robin.murphy@xxxxxxx>
---
  drivers/iommu/iova.c | 7 ++-----
  1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/iommu/iova.c b/drivers/iommu/iova.c
index 47d1983dfa2a..580fdf669922 100644
--- a/drivers/iommu/iova.c
+++ b/drivers/iommu/iova.c
@@ -661,9 +661,6 @@ iova_magazine_free_pfns(struct iova_magazine *mag, struct iova_domain *iovad)
      unsigned long flags;
      int i;
-    if (!mag)
-        return;
-

iommu_probe_device
  ops->probe_finalize(dev);
    intel_iommu_probe_finalize
       iommu_setup_dma_ops
         iommu_dma_init_domain(domain, dma_base, dma_limit, dev)
           iova_domain_init_rcaches
             {
             ...
             cpu_rcache->loaded = iova_magazine_alloc(GFP_KERNEL);
             cpu_rcache->prev = iova_magazine_alloc(GFP_KERNEL);
           if (!cpu_rcache->loaded || !cpu_rcache->prev) {
                ret = -ENOMEM;
                      goto out_err;

Do you mean iova_magazine_alloc() is impossible to fail ?

No, iova_magazine_alloc() may fail and return NULL. But if it does then we set iovad rcache pointer = NULL in the error path and don't use the rcache.

However we have a !iovad->rcache check on the "fast" alloc but not "insert". I need to check why that is again.

Thanks,
john