Message ID | 20190916071154.20383-4-leon@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Random fixes to IB/core | expand |
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
On Mon, Sep 16, 2019 at 06:48:24PM +0000, Jason Gunthorpe wrote: > 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? Yep > > > 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
diff --git a/drivers/infiniband/core/nldev.c b/drivers/infiniband/core/nldev.c index 5e2b7eb0761b..6eb14481a72e 100644 --- a/drivers/infiniband/core/nldev.c +++ 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; } + ret = rdma_counter_unbind_qpn(device, port, qpn, cntn); + if (ret) + goto err_unbind; + nlmsg_end(msg, nlh); ib_device_put(device); return rdma_nl_unicast(sock_net(skb->sk), msg, NETLINK_CB(skb).portid); -err_fill: - rdma_counter_bind_qpn(device, port, qpn, cntn); err_unbind: nlmsg_free(msg); err: