pinctrl: single: check for any error when getting rows
authorAxel Haslam <ahaslam@baylibre.com>
Wed, 9 Nov 2016 14:54:00 +0000 (15:54 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 11 Nov 2016 20:28:07 +0000 (21:28 +0100)
pinctrl_count_index_with_args returns -ENOENT not
-EINVAL. The return check would pass, and we would
try to kzalloc with a negative error size throwing
a warning.

Instead of checking for -EINVAL specifically, lets
check for any error and avoid negative size allocations.

Signed-off-by: Axel Haslam <ahaslam@baylibre.com>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-single.c

index 539f31cd8e00b0b1bc51d6d6e39a4c42337a1f42..f36a9f1f3949e0c502a56f7577002ccfa57cd59c 100644 (file)
@@ -1133,8 +1133,10 @@ static int pcs_parse_one_pinctrl_entry(struct pcs_device *pcs,
        struct pcs_function *function;
 
        rows = pinctrl_count_index_with_args(np, name);
-       if (rows == -EINVAL)
-               return rows;
+       if (rows <= 0) {
+               dev_err(pcs->dev, "Ivalid number of rows: %d\n", rows);
+               return -EINVAL;
+       }
 
        vals = devm_kzalloc(pcs->dev, sizeof(*vals) * rows, GFP_KERNEL);
        if (!vals)
@@ -1228,8 +1230,10 @@ static int pcs_parse_bits_in_pinctrl_entry(struct pcs_device *pcs,
        struct pcs_function *function;
 
        rows = pinctrl_count_index_with_args(np, name);
-       if (rows == -EINVAL)
-               return rows;
+       if (rows <= 0) {
+               dev_err(pcs->dev, "Invalid number of rows: %d\n", rows);
+               return -EINVAL;
+       }
 
        npins_in_row = pcs->width / pcs->bits_per_pin;