usb: misc: eud: Fix an error handling path in eud_probe()
authorChristophe JAILLET <christophe.jaillet@wanadoo.fr>
Sun, 3 Apr 2022 09:59:15 +0000 (11:59 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 21 Apr 2022 17:24:10 +0000 (19:24 +0200)
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>
drivers/usb/misc/qcom_eud.c

index f929bff..b7f13df 100644 (file)
@@ -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);