gpio fixes for v6.8-rc4

- remove the new GPIO device from the global list unconditionally in
   error path in core GPIOLIB
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEFp3rbAvDxGAT0sefEacuoBRx13IFAmXGGb4ACgkQEacuoBRx
 13Kipw//XG5cLsqMA4Ai8JmTMOkab9Qo8x0qVH1/TTDvdWT3NjuU7iNyqQnChFs/
 NAOFS2WCNGJtZfh7p5PA0Lv2CzDhXRcjWmpXTc3P0p/68KdJo5EGkBioRd8HtQGK
 Jq1fY4NbfaA2IOKJbXaKfKFOMkNZGAGda9UnboGWQrdVvEoDWf6oR/43Wvz7rLgQ
 dCi0kCHmlpXb8SDFaGDOPfVznpd8z3eVkOBupe4syjjZmBWnskU6SJx0qeDRoMK9
 kDKk9XYDhncpn4Muj8tgUzoeD6ITQjTuaOtJkfbgoJ1Z1WlGkAiDif1PtId7IbJk
 24Vjo7WZSzLjBfRy9bdal80XcIsYC/UX2Jk7hoCv8snpkkZWdHMz8RAgM5fii4Mw
 xLI5HkZ0YDvO0CxOl719z6Ty+SgT4eHvZpwyGjKRk3E65OjrK0YMYDKEUGQawdAb
 Y95+B2Az+Y3KR2bTMdT+Y1XOnx+fsgBsVmluXud78FSmtmeB3b/OOFsPO1cVcISt
 A7aHyh41d3AD4HyuawnN2dJyvmzyPAriE8rLqz3ZJ/1E9NWU4Zi0d8j7eYzXLTqw
 Qg9hGguMFAVXWy6bODRnqaaZ6GV4VBLqZvE8V5tnxDMS+DLBanXpqRsc+gnPPxIt
 MhbfrIXF+08j8T06pp6MElNksQI1ek82VVy9oxRDpCzc76v5IWU=
 =yXCE
 -----END PGP SIGNATURE-----

Merge tag 'gpio-fixes-for-v6.8-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux

Pull gpio fix from Bartosz Golaszewski:

 - remove the new GPIO device from the global list unconditionally in
   error path in core GPIOLIB

* tag 'gpio-fixes-for-v6.8-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
  gpio: remove GPIO device from the list unconditionally in error path
This commit is contained in:
Linus Torvalds 2024-02-09 10:27:56 -08:00
commit 4a8e4b3c27

View file

@ -1005,15 +1005,15 @@ int gpiochip_add_data_with_key(struct gpio_chip *gc, void *data,
err_free_gpiochip_mask:
gpiochip_remove_pin_ranges(gc);
gpiochip_free_valid_mask(gc);
err_remove_from_list:
spin_lock_irqsave(&gpio_lock, flags);
list_del(&gdev->list);
spin_unlock_irqrestore(&gpio_lock, flags);
if (gdev->dev.release) {
/* release() has been registered by gpiochip_setup_dev() */
gpio_device_put(gdev);
goto err_print_message;
}
err_remove_from_list:
spin_lock_irqsave(&gpio_lock, flags);
list_del(&gdev->list);
spin_unlock_irqrestore(&gpio_lock, flags);
err_free_label:
kfree_const(gdev->label);
err_free_descs: