serial: atmel: fix error handling when mctrl_gpio_init fails
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Thu, 12 Feb 2015 14:24:38 +0000 (15:24 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Mar 2015 02:15:03 +0000 (03:15 +0100)
mctrl_gpio_init at present doesn't return NULL. (It might be used in the
future when no gpios are to be used indicating success.) Properly pass
error returned and also make driver probing fail on error.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/atmel_serial.c

index 846552bff67d6f005c3966e80368134dcd9ab27f..4031dc367d3be28d4e301c019e6d01186a6dad2f 100644 (file)
@@ -2542,8 +2542,8 @@ static int atmel_init_gpios(struct atmel_uart_port *p, struct device *dev)
        struct gpio_desc *gpiod;
 
        p->gpios = mctrl_gpio_init(dev, 0);
-       if (IS_ERR_OR_NULL(p->gpios))
-               return -1;
+       if (IS_ERR(p->gpios))
+               return PTR_ERR(p->gpios);
 
        for (i = 0; i < UART_GPIO_MAX; i++) {
                gpiod = mctrl_gpio_to_gpiod(p->gpios, i);
@@ -2594,9 +2594,10 @@ static int atmel_serial_probe(struct platform_device *pdev)
        port->uart.line = ret;
 
        ret = atmel_init_gpios(port, &pdev->dev);
-       if (ret < 0)
-               dev_err(&pdev->dev, "%s",
-                       "Failed to initialize GPIOs. The serial port may not work as expected");
+       if (ret < 0) {
+               dev_err(&pdev->dev, "Failed to initialize GPIOs.");
+               goto err;
+       }
 
        ret = atmel_init_port(port, pdev);
        if (ret)