Re: [PATCH v5 1/7] iommu: Fix a leak in iommu_insert_resv_region

From: Christoph Hellwig
Date: Wed May 29 2019 - 02:21:28 EST


> } else if ((start >= a) && (end <= b)) {
> if (new->type == type)
> - goto done;
> + return 0;
> else
> pos = pos->next;

Please remove the pointless else after the return statement.

> } else {
> if (new->type == type) {
> phys_addr_t new_start = min(a, start);
> phys_addr_t new_end = max(b, end);
> + int ret;
>
> list_del(&entry->list);
> entry->start = new_start;
> entry->length = new_end - new_start + 1;
> - iommu_insert_resv_region(entry, regions);
> + ret = iommu_insert_resv_region(entry, regions);
> + kfree(entry);
> + return ret;
> } else {
> pos = pos->next;
> }

Same here.