usb: musb: core: properly free host / device structs in err path
The patch fixes two issues in the error path cleanup: - in MUSB_PORT_MODE_DUAL_ROLE mode, if musb_gadget_setup() fails we never cleanup the host struct earlier allocated. - if musb_init_debugfs() or sysfs_create_group() fails, then we never free the host part initialization, only device part. Cc: stable@vger.kernel.org # v3.11 Cc: Daniel Mack <zonque@gmail.com> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
5bb7289d7f
commit
0d2dd7eaed
|
@ -1901,6 +1901,8 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
|
|||
if (status < 0)
|
||||
goto fail3;
|
||||
status = musb_gadget_setup(musb);
|
||||
if (status)
|
||||
musb_host_cleanup(musb);
|
||||
break;
|
||||
default:
|
||||
dev_err(dev, "unsupported port mode %d\n", musb->port_mode);
|
||||
|
@ -1927,6 +1929,7 @@ fail5:
|
|||
|
||||
fail4:
|
||||
musb_gadget_cleanup(musb);
|
||||
musb_host_cleanup(musb);
|
||||
|
||||
fail3:
|
||||
if (musb->dma_controller)
|
||||
|
|
Loading…
Reference in a new issue