Re: [PATCH v2 1/2] iova: Remove some magazine pointer NULL checks
From: Ethan Zhao
Date: Wed Sep 07 2022 - 05:33:16 EST
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@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.
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"