>               } 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.

Reply via email to