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

John Garry
2022-09-06T10:53:26Z

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.

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

Thanks,
john