diff options
author | Lukasz Majewski <l.majewski@samsung.com> | 2012-05-04 14:17:13 +0200 |
---|---|---|
committer | Felipe Balbi <balbi@ti.com> | 2012-05-04 15:53:17 +0300 |
commit | f026a52d4309e1e08752a8bd41ac74aeea815686 (patch) | |
tree | 7cddaad44420cbcb78c680a817f34cbcc6c8a4fa /drivers/usb/gadget/s3c-hsotg.c | |
parent | f99b2bfebe8984db2b6e4c07e2bedc91977d27d8 (diff) | |
download | lwn-f026a52d4309e1e08752a8bd41ac74aeea815686.tar.gz lwn-f026a52d4309e1e08752a8bd41ac74aeea815686.zip |
usb:hsotg:samsung: Add release function for hsotg device
Add release function to prevent kernel warning.
Kfree is performed when all references are gone.
Signed-off-by: Sangwook Lee <sangwook.lee@linaro.org>
Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
Diffstat (limited to 'drivers/usb/gadget/s3c-hsotg.c')
-rw-r--r-- | drivers/usb/gadget/s3c-hsotg.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/usb/gadget/s3c-hsotg.c b/drivers/usb/gadget/s3c-hsotg.c index cd7ae3aef0c0..520dc3db612b 100644 --- a/drivers/usb/gadget/s3c-hsotg.c +++ b/drivers/usb/gadget/s3c-hsotg.c @@ -3445,9 +3445,21 @@ static void __devexit s3c_hsotg_delete_debug(struct s3c_hsotg *hsotg) } /** + * s3c_hsotg_release - release callback for hsotg device + * @dev: Device to for which release is called + */ +static void s3c_hsotg_release(struct device *dev) +{ + struct s3c_hsotg *hsotg = dev_get_drvdata(dev); + + kfree(hsotg); +} + +/** * s3c_hsotg_probe - probe function for hsotg driver * @pdev: The platform information for the driver */ + static int __devinit s3c_hsotg_probe(struct platform_device *pdev) { struct s3c_hsotg_plat *plat = pdev->dev.platform_data; @@ -3531,6 +3543,7 @@ static int __devinit s3c_hsotg_probe(struct platform_device *pdev) hsotg->gadget.dev.parent = dev; hsotg->gadget.dev.dma_mask = dev->dma_mask; + hsotg->gadget.dev.release = s3c_hsotg_release; /* reset the system */ @@ -3678,7 +3691,6 @@ static int __devexit s3c_hsotg_remove(struct platform_device *pdev) clk_put(hsotg->clk); device_unregister(&hsotg->gadget.dev); - kfree(hsotg); return 0; } |