Browse Source

IB/cm: Correctly free cm_device structure

commit 110cf374 ("infiniband: make cm_device use a struct device and
not a kobject.") introduced a memory leak, since it deleted
cm_release_dev_obj(), which was where cm_dev was freed.  Fix this by
freeing the leaked structure after calling device_unregister().

Signed-off-by: Sean Hefty <sean.hefty@intel.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Hefty, Sean 16 years ago
parent
commit
a7e80ce26c
1 changed files with 2 additions and 0 deletions
  1. 2 0
      drivers/infiniband/core/cm.c

+ 2 - 0
drivers/infiniband/core/cm.c

@@ -3748,6 +3748,7 @@ error1:
 		cm_remove_port_fs(port);
 		cm_remove_port_fs(port);
 	}
 	}
 	device_unregister(cm_dev->device);
 	device_unregister(cm_dev->device);
+	kfree(cm_dev);
 }
 }
 
 
 static void cm_remove_one(struct ib_device *ib_device)
 static void cm_remove_one(struct ib_device *ib_device)
@@ -3776,6 +3777,7 @@ static void cm_remove_one(struct ib_device *ib_device)
 		cm_remove_port_fs(port);
 		cm_remove_port_fs(port);
 	}
 	}
 	device_unregister(cm_dev->device);
 	device_unregister(cm_dev->device);
+	kfree(cm_dev);
 }
 }
 
 
 static int __init ib_cm_init(void)
 static int __init ib_cm_init(void)