usb: misc: fix memory leaks
Replace calls to platform_device_del with platform_device_unregister
which calls device_put to properly free the device structure.
CRs-fixed: 366005
Change-Id: Ic3d82e50383fa475f50c73e5982ef718a9eaa26f
Signed-off-by: Jack Pham <jackp@codeaurora.org>
diff --git a/drivers/usb/misc/diag_bridge.c b/drivers/usb/misc/diag_bridge.c
index 37b4e53..8b762a2 100644
--- a/drivers/usb/misc/diag_bridge.c
+++ b/drivers/usb/misc/diag_bridge.c
@@ -428,7 +428,7 @@
dev_dbg(&dev->ifc->dev, "%s:\n", __func__);
- platform_device_del(dev->pdev);
+ platform_device_unregister(dev->pdev);
dev->ifc = NULL;
diag_bridge_debugfs_cleanup();
kref_put(&dev->kref, diag_bridge_delete);
diff --git a/drivers/usb/misc/mdm_ctrl_bridge.c b/drivers/usb/misc/mdm_ctrl_bridge.c
index 044af3a..e685233 100644
--- a/drivers/usb/misc/mdm_ctrl_bridge.c
+++ b/drivers/usb/misc/mdm_ctrl_bridge.c
@@ -703,7 +703,7 @@
free_inturb:
usb_free_urb(dev->inturb);
pdev_del:
- platform_device_del(dev->pdev);
+ platform_device_unregister(dev->pdev);
nomem:
kfree(dev);
@@ -716,7 +716,7 @@
dev_dbg(&dev->intf->dev, "%s:\n", __func__);
- platform_device_del(dev->pdev);
+ platform_device_unregister(dev->pdev);
kfree(dev->in_ctlreq);
kfree(dev->readbuf);
diff --git a/drivers/usb/misc/mdm_data_bridge.c b/drivers/usb/misc/mdm_data_bridge.c
index 26be973..db2f40a 100644
--- a/drivers/usb/misc/mdm_data_bridge.c
+++ b/drivers/usb/misc/mdm_data_bridge.c
@@ -918,12 +918,12 @@
return -EINVAL;
}
- udev = interface_to_usbdev(iface);
- usb_get_dev(udev);
-
if (!test_bit(iface_num, &id->driver_info))
return -ENODEV;
+ udev = interface_to_usbdev(iface);
+ usb_get_dev(udev);
+
numends = iface->cur_altsetting->desc.bNumEndpoints;
for (i = 0; i < numends; i++) {
endpoint = iface->cur_altsetting->endpoint + i;
@@ -965,7 +965,7 @@
return 0;
free_data_bridge:
- platform_device_del(__dev[ch_id]->pdev);
+ platform_device_unregister(__dev[ch_id]->pdev);
usb_set_intfdata(iface, NULL);
kfree(__dev[ch_id]);
__dev[ch_id] = NULL;
@@ -989,7 +989,7 @@
ch_id--;
ctrl_bridge_disconnect(ch_id);
- platform_device_del(dev->pdev);
+ platform_device_unregister(dev->pdev);
usb_set_intfdata(intf, NULL);
__dev[ch_id] = NULL;