Commit df5eb3ff authored by Julia Lawall's avatar Julia Lawall Committed by Greg Kroah-Hartman
Browse files

drivers/usb/host/ehci-msm.c: use devm_ functions



The various devm_ functions allocate memory that is released when a driver
detaches.  This patch uses these functions for data that is allocated in
the probe function of a platform device and is only freed in the remove
function.

The original code was also missing a call to iounmap(hcd->regs); in the
remove function, so this patch also implicitly fixes a bug.

Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 84b79838
Loading
Loading
Loading
Loading
+4 −9
Original line number Diff line number Diff line
@@ -133,7 +133,7 @@ static int ehci_msm_probe(struct platform_device *pdev)

	hcd->rsrc_start = res->start;
	hcd->rsrc_len = resource_size(res);
	hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
	hcd->regs = devm_ioremap(&pdev->dev, hcd->rsrc_start, hcd->rsrc_len);
	if (!hcd->regs) {
		dev_err(&pdev->dev, "ioremap failed\n");
		ret = -ENOMEM;
@@ -145,17 +145,17 @@ static int ehci_msm_probe(struct platform_device *pdev)
	 * powering up VBUS, mapping of registers address space and power
	 * management.
	 */
	phy = usb_get_phy(USB_PHY_TYPE_USB2);
	phy = devm_usb_get_phy(&pdev->dev, USB_PHY_TYPE_USB2);
	if (IS_ERR_OR_NULL(phy)) {
		dev_err(&pdev->dev, "unable to find transceiver\n");
		ret = -ENODEV;
		goto unmap;
		goto put_hcd;
	}

	ret = otg_set_host(phy->otg, &hcd->self);
	if (ret < 0) {
		dev_err(&pdev->dev, "unable to register with transceiver\n");
		goto put_transceiver;
		goto put_hcd;
	}

	device_init_wakeup(&pdev->dev, 1);
@@ -168,10 +168,6 @@ static int ehci_msm_probe(struct platform_device *pdev)

	return 0;

put_transceiver:
	usb_put_phy(phy);
unmap:
	iounmap(hcd->regs);
put_hcd:
	usb_put_hcd(hcd);

@@ -187,7 +183,6 @@ static int __devexit ehci_msm_remove(struct platform_device *pdev)
	pm_runtime_set_suspended(&pdev->dev);

	otg_set_host(phy->otg, NULL);
	usb_put_phy(phy);

	usb_put_hcd(hcd);