From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> Rework for_each_requested_gpio_in_range() to use the new helper to retrieve a dynamically allocated copy of the descriptor label and free it at the end of each iteration. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx> --- include/linux/gpio/driver.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/include/linux/gpio/driver.h b/include/linux/gpio/driver.h index 9796a34e2fee..6405f6d454af 100644 --- a/include/linux/gpio/driver.h +++ b/include/linux/gpio/driver.h @@ -543,8 +543,10 @@ char *gpiochip_dup_line_label(struct gpio_chip *gc, unsigned int offset); * @label: label of current GPIO */ #define for_each_requested_gpio_in_range(chip, i, base, size, label) \ - for (i = 0; i < size; i++) \ - if ((label = gpiochip_is_requested(chip, base + i)) == NULL) {} else + for (i = 0; i < size; i++, kfree(label)) \ + if ((label = gpiochip_dup_line_label(chip, base + i)) == NULL) {} \ + else if (IS_ERR(label)) {} \ + else /* Iterates over all requested GPIO of the given @chip */ #define for_each_requested_gpio(chip, i, label) \ -- 2.40.1