FAILED: patch "[PATCH] gpio: fix gpio-device list corruption" failed to apply to 5.11-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.11-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From cf25ef6b631c6fc6c0435fc91eba8734cca20511 Mon Sep 17 00:00:00 2001
From: Johan Hovold <[email protected]>
Date: Mon, 1 Mar 2021 10:05:19 +0100
Subject: [PATCH] gpio: fix gpio-device list corruption
Make sure to hold the gpio_lock when removing the gpio device from the gpio_devices list (when dropping the last reference) to avoid corrupting the list when there are concurrent accesses.
Fixes ff2b13592299 ("gpio: make the gpiochip a real device")
Cc [email protected] # 4.6
Reviewed-by Saravana Kannan <[email protected]>
Signed-off-by Johan Hovold <[email protected]>
Signed-off-by Bartosz Golaszewski <[email protected]>
drivers/gpio/gpiolib.c +4 -0
@@ -475,8 +475,12 @@ EXPORT_SYMBOL_GPL(gpiochip_line_is_valid);static void gpiodevice_release (struct device *dev) { struct gpio_device *gdev = container_of(dev, struct gpio_device, dev); +unsigned long flags; +spin_lock_irqsave (&gpio_lock, flags);list_del (&gdev->list); +spin_unlock_irqrestore (&gpio_lock, flags); +ida_free (&gpio_ida, gdev->id);kfree_const (gdev->label);kfree (gdev->descs);