Skip to content

Commit

Permalink
usb: chipidea: ci13xxx_imx: fix error path
Browse files Browse the repository at this point in the history
If usbmisc_ops->post() fails it should point the error path to release all
previously acquired resources, so adjust it to call ci13xxx_remove_device().

While at it, remove the unnecessary 'plat_ci' indirection, as we can directly
use the private structure.

Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Fabio Estevam authored and Greg Kroah-Hartman committed Jun 17, 2013
1 parent e4ce4ec commit 770719d
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions drivers/usb/chipidea/ci13xxx_imx.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ static struct ci13xxx_platform_data ci13xxx_imx_platdata = {
static int ci13xxx_imx_probe(struct platform_device *pdev)
{
struct ci13xxx_imx_data *data;
struct platform_device *plat_ci, *phy_pdev;
struct platform_device *phy_pdev;
struct device_node *phy_np;
struct resource *res;
struct regulator *reg_vbus;
Expand Down Expand Up @@ -180,11 +180,11 @@ static int ci13xxx_imx_probe(struct platform_device *pdev)
}
}

plat_ci = ci13xxx_add_device(&pdev->dev,
data->ci_pdev = ci13xxx_add_device(&pdev->dev,
pdev->resource, pdev->num_resources,
&ci13xxx_imx_platdata);
if (IS_ERR(plat_ci)) {
ret = PTR_ERR(plat_ci);
if (IS_ERR(data->ci_pdev)) {
ret = PTR_ERR(data->ci_pdev);
dev_err(&pdev->dev,
"Can't register ci_hdrc platform device, err=%d\n",
ret);
Expand All @@ -196,18 +196,19 @@ static int ci13xxx_imx_probe(struct platform_device *pdev)
if (ret) {
dev_err(&pdev->dev,
"usbmisc post failed, ret=%d\n", ret);
goto put_np;
goto disable_device;
}
}

data->ci_pdev = plat_ci;
platform_set_drvdata(pdev, data);

pm_runtime_no_callbacks(&pdev->dev);
pm_runtime_enable(&pdev->dev);

return 0;

disable_device:
ci13xxx_remove_device(data->ci_pdev);
err:
if (reg_vbus)
regulator_disable(reg_vbus);
Expand Down

0 comments on commit 770719d

Please sign in to comment.