serial: 8250_of: fix return code when probe function fails to get reset
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 27 Dec 2017 05:21:05 +0000 (14:21 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 3 Feb 2018 16:39:22 +0000 (17:39 +0100)
commit b9820a31691b771db37afe2054dd3d3a680c1eed upstream.

The error pointer from devm_reset_control_get_optional_shared() is
not propagated.

One of the most common problem scenarios is it returns -EPROBE_DEFER
when the reset controller has not probed yet.  In this case, the
probe of the reset consumer should be deferred.

Fixes: e2860e1f62f2 ("serial: 8250_of: Add reset support")
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_of.c

index 1222c005fb9889ea21f279882f43c27da5a34c43..951680640ad5b82705401f31491d7899730e5a06 100644 (file)
@@ -141,8 +141,11 @@ static int of_platform_serial_setup(struct platform_device *ofdev,
        }
 
        info->rst = devm_reset_control_get_optional_shared(&ofdev->dev, NULL);
-       if (IS_ERR(info->rst))
+       if (IS_ERR(info->rst)) {
+               ret = PTR_ERR(info->rst);
                goto err_dispose;
+       }
+
        ret = reset_control_deassert(info->rst);
        if (ret)
                goto err_dispose;