diff options
| author | Hefty, Sean <sean.hefty@intel.com> | 2008-09-30 13:36:54 -0400 |
|---|---|---|
| committer | Roland Dreier <rolandd@cisco.com> | 2008-09-30 13:36:54 -0400 |
| commit | a7e80ce26caa174b1caa5fdfbb3dbd740a87d33a (patch) | |
| tree | 5d5060f711aa2ec343086ced1a9257c29f4e3000 /drivers | |
| parent | 9824b8f11373b0df806c135a342da9319ef1d893 (diff) | |
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>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/infiniband/core/cm.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index 922d35f4fc08..3cab0cedfca2 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c | |||
| @@ -3748,6 +3748,7 @@ error1: | |||
| 3748 | cm_remove_port_fs(port); | 3748 | cm_remove_port_fs(port); |
| 3749 | } | 3749 | } |
| 3750 | device_unregister(cm_dev->device); | 3750 | device_unregister(cm_dev->device); |
| 3751 | kfree(cm_dev); | ||
| 3751 | } | 3752 | } |
| 3752 | 3753 | ||
| 3753 | static void cm_remove_one(struct ib_device *ib_device) | 3754 | static void cm_remove_one(struct ib_device *ib_device) |
| @@ -3776,6 +3777,7 @@ static void cm_remove_one(struct ib_device *ib_device) | |||
| 3776 | cm_remove_port_fs(port); | 3777 | cm_remove_port_fs(port); |
| 3777 | } | 3778 | } |
| 3778 | device_unregister(cm_dev->device); | 3779 | device_unregister(cm_dev->device); |
| 3780 | kfree(cm_dev); | ||
| 3779 | } | 3781 | } |
| 3780 | 3782 | ||
| 3781 | static int __init ib_cm_init(void) | 3783 | static int __init ib_cm_init(void) |
