浏览代码

[IB] umad: two small fixes

Two small fixes for the umad module:
 - set kobject name for issm device properly
 - in ib_umad_add_one(), s is subtracted from the index i when
   initializing ports, so s should be subtracted from the index when
   freeing ports in the error path as well.

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Michael S. Tsirkin 19 年之前
父节点
当前提交
8b37b94721
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      drivers/infiniband/core/user_mad.c

+ 2 - 2
drivers/infiniband/core/user_mad.c

@@ -801,7 +801,7 @@ static int ib_umad_init_port(struct ib_device *device, int port_num,
 		goto err_class;
 		goto err_class;
 	port->sm_dev->owner = THIS_MODULE;
 	port->sm_dev->owner = THIS_MODULE;
 	port->sm_dev->ops   = &umad_sm_fops;
 	port->sm_dev->ops   = &umad_sm_fops;
-	kobject_set_name(&port->dev->kobj, "issm%d", port->dev_num);
+	kobject_set_name(&port->sm_dev->kobj, "issm%d", port->dev_num);
 	if (cdev_add(port->sm_dev, base_dev + port->dev_num + IB_UMAD_MAX_PORTS, 1))
 	if (cdev_add(port->sm_dev, base_dev + port->dev_num + IB_UMAD_MAX_PORTS, 1))
 		goto err_sm_cdev;
 		goto err_sm_cdev;
 
 
@@ -913,7 +913,7 @@ static void ib_umad_add_one(struct ib_device *device)
 
 
 err:
 err:
 	while (--i >= s)
 	while (--i >= s)
-		ib_umad_kill_port(&umad_dev->port[i]);
+		ib_umad_kill_port(&umad_dev->port[i - s]);
 
 
 	kref_put(&umad_dev->ref, ib_umad_release_dev);
 	kref_put(&umad_dev->ref, ib_umad_release_dev);
 }
 }