On Wed, Aug 04, 2021 at 08:59:39PM +0800, YueHaibing wrote: > If re-registering an MR in hns_roce_rereg_user_mr(), we should > return NULL instead of pass 0 to ERR_PTR. > > Fixes: 4e9fc1dae2a9 ("RDMA/hns: Optimize the MR registration process") > Signed-off-by: YueHaibing <yuehaibing@xxxxxxxxxx> > --- > drivers/infiniband/hw/hns/hns_roce_mr.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/infiniband/hw/hns/hns_roce_mr.c b/drivers/infiniband/hw/hns/hns_roce_mr.c > index 006c84bb3f9f..7089ac780291 100644 > --- a/drivers/infiniband/hw/hns/hns_roce_mr.c > +++ b/drivers/infiniband/hw/hns/hns_roce_mr.c > @@ -352,7 +352,9 @@ struct ib_mr *hns_roce_rereg_user_mr(struct ib_mr *ibmr, int flags, u64 start, > free_cmd_mbox: > hns_roce_free_cmd_mailbox(hr_dev, mailbox); > > - return ERR_PTR(ret); > + if (ret) > + return ERR_PTR(ret); > + return NULL; > } I don't understand this function, it returns or ERR_PTR() or NULL, but should return &mr->ibmr in success path. How does it work? Thanks > > int hns_roce_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata) > -- > 2.17.1 >