Преглед изворни кода

serial: 8250_of: fix return code when probe function fails to get reset

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")
Cc: stable@vger.kernel.org # v4.13+
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>
Masahiro Yamada пре 7 година
родитељ
комит
b9820a3169
1 измењених фајлова са 4 додато и 1 уклоњено
  1. 4 1
      drivers/tty/serial/8250/8250_of.c

+ 4 - 1
drivers/tty/serial/8250/8250_of.c

@@ -136,8 +136,11 @@ static int of_platform_serial_setup(struct platform_device *ofdev,
 	}
 	}
 
 
 	info->rst = devm_reset_control_get_optional_shared(&ofdev->dev, NULL);
 	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;
 		goto err_dispose;
+	}
+
 	ret = reset_control_deassert(info->rst);
 	ret = reset_control_deassert(info->rst);
 	if (ret)
 	if (ret)
 		goto err_dispose;
 		goto err_dispose;