diff options
author | Axel Lin <axel.lin@ingics.com> | 2013-05-19 13:58:37 +0800 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2013-05-27 15:37:08 +0200 |
commit | 97fc463769f1564e8eda2e2f70d3b6e92a25ff16 (patch) | |
tree | f1ee749b141b7055f9995afa506c83539bc6382e | |
parent | b134dc3feaa5136b376c7d2658bbe156bea19e63 (diff) | |
download | linux-3.10-97fc463769f1564e8eda2e2f70d3b6e92a25ff16.tar.gz linux-3.10-97fc463769f1564e8eda2e2f70d3b6e92a25ff16.tar.bz2 linux-3.10-97fc463769f1564e8eda2e2f70d3b6e92a25ff16.zip |
pinctrl: Don't override the error code in probe error handling
Otherwise, we return 0 in probe error paths when gpiochip_remove() returns 0.
Also show error message if gpiochip_remove() fails.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Acked-by: Tony Prisk <linux@prisktech.co.nz>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/pinctrl/pinctrl-coh901.c | 3 | ||||
-rw-r--r-- | drivers/pinctrl/pinctrl-sunxi.c | 3 | ||||
-rw-r--r-- | drivers/pinctrl/vt8500/pinctrl-wmt.c | 3 |
3 files changed, 5 insertions, 4 deletions
diff --git a/drivers/pinctrl/pinctrl-coh901.c b/drivers/pinctrl/pinctrl-coh901.c index a67af419f53..d6b41747d68 100644 --- a/drivers/pinctrl/pinctrl-coh901.c +++ b/drivers/pinctrl/pinctrl-coh901.c @@ -830,7 +830,8 @@ static int __init u300_gpio_probe(struct platform_device *pdev) return 0; err_no_range: - err = gpiochip_remove(&gpio->chip); + if (gpiochip_remove(&gpio->chip)) + dev_err(&pdev->dev, "failed to remove gpio chip\n"); err_no_chip: err_no_domain: err_no_port: diff --git a/drivers/pinctrl/pinctrl-sunxi.c b/drivers/pinctrl/pinctrl-sunxi.c index c52fc2c0873..c058529db8f 100644 --- a/drivers/pinctrl/pinctrl-sunxi.c +++ b/drivers/pinctrl/pinctrl-sunxi.c @@ -2000,7 +2000,8 @@ static int sunxi_pinctrl_probe(struct platform_device *pdev) return 0; gpiochip_error: - ret = gpiochip_remove(pctl->chip); + if (gpiochip_remove(pctl->chip)) + dev_err(&pdev->dev, "failed to remove gpio chip\n"); pinctrl_error: pinctrl_unregister(pctl->pctl_dev); return ret; diff --git a/drivers/pinctrl/vt8500/pinctrl-wmt.c b/drivers/pinctrl/vt8500/pinctrl-wmt.c index ab63104e8dc..70d986e04af 100644 --- a/drivers/pinctrl/vt8500/pinctrl-wmt.c +++ b/drivers/pinctrl/vt8500/pinctrl-wmt.c @@ -609,8 +609,7 @@ int wmt_pinctrl_probe(struct platform_device *pdev, return 0; fail_range: - err = gpiochip_remove(&data->gpio_chip); - if (err) + if (gpiochip_remove(&data->gpio_chip)) dev_err(&pdev->dev, "failed to remove gpio chip\n"); fail_gpio: pinctrl_unregister(data->pctl_dev); |