Messages in this thread | | | Date | Wed, 7 Sep 2022 17:33:03 +0800 | Subject | Re: [PATCH v2 1/2] iova: Remove some magazine pointer NULL checks | From | Ethan Zhao <> |
| |
John,
在 2022/9/6 18:50, John Garry 写道: > On 06/09/2022 10:28, Ethan Zhao wrote: > > Hi Ethan, > >>> Signed-off-by: John Garry <john.garry@huawei.com> >>> Reviewed-by: Robin Murphy <robin.murphy@arm.com> >>> --- >>> 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.
Yup, if iova_magazine_alloc() failed ,
iovad->rcaches = NULL;
was set by free_iova_rcaches()
in error path of iova_domain_init_rcache().
and checked in
alloc_iova_fast()->iova_rcache_get().
More comment in code would wipe off my curiosity.
Thanks,
Ethan
> > However we have a !iovad->rcache check on the "fast" alloc but not > "insert". I need to check why that is again. > > Thanks, > john
-- "firm, enduring, strong, and long-lived"
| |