summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTao Cui <cuitao@kylinos.cn>2026-05-20 18:45:46 +0800
committerJason Gunthorpe <jgg@nvidia.com>2026-05-25 12:40:08 -0300
commitb86fd95805a7bd4c5b9465c9e7f75e45bbe7eb6f (patch)
tree6add76e817ef1552d44f510fda363c051223f80f
parent4fbc8230009f5b1bcd13cc74c5a6a43ddba141fd (diff)
downloadlinux-stable-b86fd95805a7bd4c5b9465c9e7f75e45bbe7eb6f.tar.gz
linux-stable-b86fd95805a7bd4c5b9465c9e7f75e45bbe7eb6f.zip
RDMA/counter: Fix incorrect port index in rdma_counter_init() error cleanup
The error cleanup loop in rdma_counter_init() iterates with variable 'i' but accesses dev->port_data[port] instead of dev->port_data[i]. This causes the failed port's hstats to be freed multiple times while leaking hstats of previously initialized ports. Fixes: 56594ae1d250 ("RDMA/core: Annotate destroy of mutex to ensure that it is released as unlocked") Link: https://patch.msgid.link/r/20260520104546.1776253-3-cuitao@kylinos.cn Signed-off-by: Tao Cui <cuitao@kylinos.cn> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
-rw-r--r--drivers/infiniband/core/counters.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/core/counters.c b/drivers/infiniband/core/counters.c
index 5ddd607d5fbe..a9e189194c13 100644
--- a/drivers/infiniband/core/counters.c
+++ b/drivers/infiniband/core/counters.c
@@ -669,7 +669,7 @@ void rdma_counter_init(struct ib_device *dev)
fail:
for (i = port; i >= rdma_start_port(dev); i--) {
- port_counter = &dev->port_data[port].port_counter;
+ port_counter = &dev->port_data[i].port_counter;
rdma_free_hw_stats_struct(port_counter->hstats);
port_counter->hstats = NULL;
mutex_destroy(&port_counter->lock);