Re: [PATCH 3/4] RDMA/nldev: Reshuffle the code to avoid need to rebind QP in error path

Jason Gunthorpe
2019-09-16T18:48:30Z

On Mon, Sep 16, 2019 at 10:11:53AM +0300, Leon Romanovsky wrote:
> From: Leon Romanovsky <leonro@mellanox.com>
>
> Properly unwind QP counter rebinding in case of failure.

What is the actual problem here? Calling 'bind' in an error
unwind seems insane, is that the issue?

> Fixes: b389327df905 ("RDMA/nldev: Allow counter manual mode configration through RDMA netlink")
> Reviewed-by: Mark Zhang <markz@mellanox.com>
> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
> drivers/infiniband/core/nldev.c | 12 +++++-------
> 1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c
> index 5e2b7eb0761b..6eb14481a72e 100644
> +++ b/drivers/infiniband/core/nldev.c
> @@ -1860,24 +1860,22 @@ static int nldev_stat_del_doit(struct sk_buff *skb, struct nlmsghdr *nlh,
>
> cntn = nla_get_u32(tb[RDMA_NLDEV_ATTR_STAT_COUNTER_ID]);
> qpn = nla_get_u32(tb[RDMA_NLDEV_ATTR_RES_LQPN]);
> - ret = rdma_counter_unbind_qpn(device, port, qpn, cntn);
> - if (ret)
> - goto err_unbind;
> -
> if (fill_nldev_handle(msg, device) ||
> nla_put_u32(msg, RDMA_NLDEV_ATTR_PORT_INDEX, port) ||
> nla_put_u32(msg, RDMA_NLDEV_ATTR_STAT_COUNTER_ID, cntn) ||
> nla_put_u32(msg, RDMA_NLDEV_ATTR_RES_LQPN, qpn)) {
> ret = -EMSGSIZE;
> - goto err_fill;
> + goto err_unbind;

These label names don't make much sense anymore

Jason