diff options
| author | Tao Cui <cuitao@kylinos.cn> | 2026-05-20 18:45:46 +0800 |
|---|---|---|
| committer | Jason Gunthorpe <jgg@nvidia.com> | 2026-05-25 12:40:08 -0300 |
| commit | b86fd95805a7bd4c5b9465c9e7f75e45bbe7eb6f (patch) | |
| tree | 6add76e817ef1552d44f510fda363c051223f80f | |
| parent | 4fbc8230009f5b1bcd13cc74c5a6a43ddba141fd (diff) | |
| download | linux-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.c | 2 |
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); |
