diff options
author | Saravanan Vajravel <saravanan.vajravel@broadcom.com> | 2023-04-01 09:34:24 +0300 |
---|---|---|
committer | Jason Gunthorpe <jgg@nvidia.com> | 2023-04-13 18:17:32 +0300 |
commit | aca3b0fa3d04b40c96934d86cc224cccfa7ea8e0 (patch) | |
tree | eff591f9e7f1a8fb5f6902683009c2dd24d58964 /drivers/infiniband/core | |
parent | 58e84f6b3e84e46524b7e5a916b53c1ad798bc8f (diff) | |
download | linux-aca3b0fa3d04b40c96934d86cc224cccfa7ea8e0.tar.xz |
RDMA/core: Fix GID entry ref leak when create_ah fails
If AH create request fails, release sgid_attr to avoid GID entry
referrence leak reported while releasing GID table
Fixes: 1a1f460ff151 ("RDMA: Hold the sgid_attr inside the struct ib_ah/qp")
Link: https://lore.kernel.org/r/20230401063424.342204-1-saravanan.vajravel@broadcom.com
Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Saravanan Vajravel <saravanan.vajravel@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Diffstat (limited to 'drivers/infiniband/core')
-rw-r--r-- | drivers/infiniband/core/verbs.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c index 11b1c1603aeb..b99b3cc283b6 100644 --- a/drivers/infiniband/core/verbs.c +++ b/drivers/infiniband/core/verbs.c @@ -532,6 +532,8 @@ static struct ib_ah *_rdma_create_ah(struct ib_pd *pd, else ret = device->ops.create_ah(ah, &init_attr, NULL); if (ret) { + if (ah->sgid_attr) + rdma_put_gid_attr(ah->sgid_attr); kfree(ah); return ERR_PTR(ret); } |