Re: [PATCH] RDMA/rvt: Improve exception handling in rvt_create_qp()

From: Markus Elfring
Date: Sun Jun 14 2020 - 14:18:52 EST


> â
>> +++ 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-pakki001@xxxxxxx/
https://lore.kernel.org/patchwork/patch/1255709/

Regards,
Markus