> …
>> +++ b/drivers/infiniband/sw/rdmavt/qp.c
>> @@ -1203,6 +1203,7 @@  struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
>>                      qp->s_flags = RVT_S_SIGNAL_REQ_WR;
>>              err = alloc_ud_wq_attr(qp, rdi->dparms.node);
>>              if (err) {
>> +                    rvt_free_rq(&qp->r_rq);
>>                      ret = (ERR_PTR(err));
>>                      goto bail_driver_priv;
>>              }
>
> How do you think about the following code variant with the addition
> of a jump target?
>
>               err = alloc_ud_wq_attr(qp, rdi->dparms.node);
>               if (err) {
>                       ret = (ERR_PTR(err));
> -                     goto bail_driver_priv;
> +                     goto bail_free_rq;
>               }
>
> …
>
>  bail_rq_wq:
> -     rvt_free_rq(&qp->r_rq);
>       free_ud_wq_attr(qp);
> +
> +bail_free_rq:
> +     rvt_free_rq(&qp->r_rq);
>
>  bail_driver_priv:

The improvement of affected implementation details is continued with
another update suggestion.

RDMA/rvt: Fix potential memory leak caused by rvt_alloc_rq
https://lore.kernel.org/linux-rdma/20200614041148.131983-1-pakki...@umn.edu/
https://lore.kernel.org/patchwork/patch/1255709/

Regards,
Markus

Reply via email to