aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core
diff options
context:
space:
mode:
authorIra Weiny <ira.weiny@intel.com>2015-05-13 20:02:57 -0400
committerDoug Ledford <dledford@redhat.com>2015-05-20 12:37:34 -0400
commit26c454288a4beac774ea31c15284783fcd75721d (patch)
tree1210551c9c4a91eac0bcbffff506c7246db392ac /drivers/infiniband/core
parentIB/user_mad: Use new start/end port functions (diff)
downloadlinux-dev-26c454288a4beac774ea31c15284783fcd75721d.tar.xz
linux-dev-26c454288a4beac774ea31c15284783fcd75721d.zip
IB/user_mad: Fix buggy usage of port index
The addition of the rdma_cap_ib_mad is technically broken in ib_umad_remove_one because the loop "i" value is not a port value. This bug resulted in the ib_umad failing to properly remove its resources when the core capability functions were converted to bit fields. NOTE: e17371d73908 did not result in broken behavior on its own. It was only an issue when the implementation of rdma_cap_ib_mad was changed. Pass the port value to rdma_cap_ib_mad. Fixes: e17371d73908 ("IB/Verbs: Use management helper rdma_cap_ib_mad()") Signed-off-by: Ira Weiny <ira.weiny@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/core')
-rw-r--r--drivers/infiniband/core/user_mad.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
index cc5001e850de..278cfaee9a94 100644
--- a/drivers/infiniband/core/user_mad.c
+++ b/drivers/infiniband/core/user_mad.c
@@ -1325,7 +1325,7 @@ static void ib_umad_remove_one(struct ib_device *device)
return;
for (i = 0; i <= rdma_end_port(device) - rdma_start_port(device); ++i) {
- if (rdma_cap_ib_mad(device, i))
+ if (rdma_cap_ib_mad(device, i + rdma_start_port(device)))
ib_umad_kill_port(&umad_dev->port[i]);
}