]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
gpiolib: Fix crash on error in gpiochip_get_ngpios()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 13 Feb 2025 15:56:46 +0000 (17:56 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 21 Feb 2025 13:01:22 +0000 (14:01 +0100)
[ Upstream commit 7b4aebeecbbd5b5fe73e35fad3f62ed21aa7ef44 ]

The gpiochip_get_ngpios() uses chip_*() macros to print messages.
However these macros rely on gpiodev to be initialised and set,
which is not the case when called via bgpio_init(). In such a case
the printing messages will crash on NULL pointer dereference.
Replace chip_*() macros by the respective dev_*() ones to avoid
such crash.

Fixes: 55b2395e4e92 ("gpio: mmio: handle "ngpios" properly in bgpio_init()")
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20250213155646.2882324-1-andriy.shevchenko@linux.intel.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpio/gpiolib.c

index 44372f8647d51aa6b2f14e24caa89f46638da08e..1e8f0bdb6ae3b42f8768aa22232e04fb9b384f15 100644 (file)
@@ -905,13 +905,13 @@ int gpiochip_get_ngpios(struct gpio_chip *gc, struct device *dev)
        }
 
        if (gc->ngpio == 0) {
-               chip_err(gc, "tried to insert a GPIO chip with zero lines\n");
+               dev_err(dev, "tried to insert a GPIO chip with zero lines\n");
                return -EINVAL;
        }
 
        if (gc->ngpio > FASTPATH_NGPIO)
-               chip_warn(gc, "line cnt %u is greater than fast path cnt %u\n",
-                       gc->ngpio, FASTPATH_NGPIO);
+               dev_warn(dev, "line cnt %u is greater than fast path cnt %u\n",
+                        gc->ngpio, FASTPATH_NGPIO);
 
        return 0;
 }