]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: of: clear OF_POPULATED on hog nodes in remove path
authorBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Mon, 9 Mar 2026 12:42:37 +0000 (13:42 +0100)
committerBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Mon, 16 Mar 2026 08:51:05 +0000 (09:51 +0100)
The previously set OF_POPULATED flag should be cleared on the hog nodes
when removing the chip.

Cc: stable@vger.kernel.org
Fixes: 63636d956c455 ("gpio: of: Add DT overlay support for GPIO hogs")
Acked-by: Linus Walleij <linusw@kernel.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://patch.msgid.link/20260309-gpio-hog-fwnode-v2-1-4e61f3dbf06a@oss.qualcomm.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
drivers/gpio/gpiolib-of.c

index c512d735e85ff2374d34695a6a5229d5e12f24e8..b5610a847e726add0331aaa1066a31d971a7fb40 100644 (file)
@@ -1187,7 +1187,14 @@ int of_gpiochip_add(struct gpio_chip *chip)
 
 void of_gpiochip_remove(struct gpio_chip *chip)
 {
-       of_node_put(dev_of_node(&chip->gpiodev->dev));
+       struct device_node *np = dev_of_node(&chip->gpiodev->dev);
+
+       for_each_child_of_node_scoped(np, child) {
+               if (of_property_present(child, "gpio-hog"))
+                       of_node_clear_flag(child, OF_POPULATED);
+       }
+
+       of_node_put(np);
 }
 
 bool of_gpiochip_instance_match(struct gpio_chip *gc, unsigned int index)