diff options
-rw-r--r-- | drivers/infiniband/core/uverbs_cmd.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c index b7943ff16ed3..6c52e72f8d2c 100644 --- a/drivers/infiniband/core/uverbs_cmd.c +++ b/drivers/infiniband/core/uverbs_cmd.c | |||
@@ -2091,20 +2091,21 @@ ssize_t ib_uverbs_modify_qp(struct ib_uverbs_file *file, | |||
2091 | if (qp->real_qp == qp) { | 2091 | if (qp->real_qp == qp) { |
2092 | ret = ib_resolve_eth_l2_attrs(qp, attr, &cmd.attr_mask); | 2092 | ret = ib_resolve_eth_l2_attrs(qp, attr, &cmd.attr_mask); |
2093 | if (ret) | 2093 | if (ret) |
2094 | goto out; | 2094 | goto release_qp; |
2095 | ret = qp->device->modify_qp(qp, attr, | 2095 | ret = qp->device->modify_qp(qp, attr, |
2096 | modify_qp_mask(qp->qp_type, cmd.attr_mask), &udata); | 2096 | modify_qp_mask(qp->qp_type, cmd.attr_mask), &udata); |
2097 | } else { | 2097 | } else { |
2098 | ret = ib_modify_qp(qp, attr, modify_qp_mask(qp->qp_type, cmd.attr_mask)); | 2098 | ret = ib_modify_qp(qp, attr, modify_qp_mask(qp->qp_type, cmd.attr_mask)); |
2099 | } | 2099 | } |
2100 | 2100 | ||
2101 | put_qp_read(qp); | ||
2102 | |||
2103 | if (ret) | 2101 | if (ret) |
2104 | goto out; | 2102 | goto release_qp; |
2105 | 2103 | ||
2106 | ret = in_len; | 2104 | ret = in_len; |
2107 | 2105 | ||
2106 | release_qp: | ||
2107 | put_qp_read(qp); | ||
2108 | |||
2108 | out: | 2109 | out: |
2109 | kfree(attr); | 2110 | kfree(attr); |
2110 | 2111 | ||