summaryrefslogtreecommitdiffstats
path: root/drivers/usb/misc/qcom_eud.c
diff options
context:
space:
mode:
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>2022-04-03 11:59:15 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-04-21 19:24:10 +0200
commit929b22e669b15fc9a2ab110ea27f0c489ed92beb (patch)
treeacf9d92669823083bfa0381d5f159ffa35c8fdf1 /drivers/usb/misc/qcom_eud.c
parentusb: core: Don't hold the device lock while sleeping in do_proc_control() (diff)
downloadlinux-929b22e669b15fc9a2ab110ea27f0c489ed92beb.tar.xz
linux-929b22e669b15fc9a2ab110ea27f0c489ed92beb.zip
usb: misc: eud: Fix an error handling path in eud_probe()
It is odd to call devm_add_action_or_reset() before calling the function that should be undone. Either, the "_or_reset" part should be omitted, or the action should be recorded after the resources have been allocated. Switch the order of devm_add_action_or_reset() and usb_role_switch_get(). Fixes: 9a1bf58ccd44 ("usb: misc: eud: Add driver support for Embedded USB Debugger(EUD)") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Link: https://lore.kernel.org/r/362908699275ecec078381b42d87c817c6965fc6.1648979948.git.christophe.jaillet@wanadoo.fr Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/misc/qcom_eud.c')
-rw-r--r--drivers/usb/misc/qcom_eud.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/usb/misc/qcom_eud.c b/drivers/usb/misc/qcom_eud.c
index f929bffdc5d1..b7f13df00764 100644
--- a/drivers/usb/misc/qcom_eud.c
+++ b/drivers/usb/misc/qcom_eud.c
@@ -186,16 +186,16 @@ static int eud_probe(struct platform_device *pdev)
chip->dev = &pdev->dev;
- ret = devm_add_action_or_reset(chip->dev, eud_role_switch_release, chip);
- if (ret)
- return dev_err_probe(chip->dev, ret,
- "failed to add role switch release action\n");
-
chip->role_sw = usb_role_switch_get(&pdev->dev);
if (IS_ERR(chip->role_sw))
return dev_err_probe(chip->dev, PTR_ERR(chip->role_sw),
"failed to get role switch\n");
+ ret = devm_add_action_or_reset(chip->dev, eud_role_switch_release, chip);
+ if (ret)
+ return dev_err_probe(chip->dev, ret,
+ "failed to add role switch release action\n");
+
chip->base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(chip->base))
return PTR_ERR(chip->base);