Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

Pull gpio fixes from Bartosz Golaszewski:

- fix resource freeing ordering in error path when adding a GPIO chip

- only set pins to output after the reset is complete in gpio-74x164

* tag 'gpio-fixes-for-v6.8-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
gpio: fix resource unwinding order in error path
gpiolib: Fix the error path order in gpiochip_add_data_with_key()
gpio: 74x164: Enable output pins after registers are reset

+8 -8
+2 -2
drivers/gpio/gpio-74x164.c
··· 127 127 if (IS_ERR(chip->gpiod_oe)) 128 128 return PTR_ERR(chip->gpiod_oe); 129 129 130 - gpiod_set_value_cansleep(chip->gpiod_oe, 1); 131 - 132 130 spi_set_drvdata(spi, chip); 133 131 134 132 chip->gpio_chip.label = spi->modalias; ··· 150 152 dev_err(&spi->dev, "Failed writing: %d\n", ret); 151 153 goto exit_destroy; 152 154 } 155 + 156 + gpiod_set_value_cansleep(chip->gpiod_oe, 1); 153 157 154 158 ret = gpiochip_add_data(&chip->gpio_chip, chip); 155 159 if (!ret)
+6 -6
drivers/gpio/gpiolib.c
··· 968 968 969 969 ret = gpiochip_irqchip_init_valid_mask(gc); 970 970 if (ret) 971 - goto err_remove_acpi_chip; 971 + goto err_free_hogs; 972 972 973 973 ret = gpiochip_irqchip_init_hw(gc); 974 974 if (ret) 975 - goto err_remove_acpi_chip; 975 + goto err_remove_irqchip_mask; 976 976 977 977 ret = gpiochip_add_irqchip(gc, lock_key, request_key); 978 978 if (ret) ··· 997 997 gpiochip_irqchip_remove(gc); 998 998 err_remove_irqchip_mask: 999 999 gpiochip_irqchip_free_valid_mask(gc); 1000 - err_remove_acpi_chip: 1001 - acpi_gpiochip_remove(gc); 1002 - err_remove_of_chip: 1000 + err_free_hogs: 1003 1001 gpiochip_free_hogs(gc); 1002 + acpi_gpiochip_remove(gc); 1003 + gpiochip_remove_pin_ranges(gc); 1004 + err_remove_of_chip: 1004 1005 of_gpiochip_remove(gc); 1005 1006 err_free_gpiochip_mask: 1006 - gpiochip_remove_pin_ranges(gc); 1007 1007 gpiochip_free_valid_mask(gc); 1008 1008 err_remove_from_list: 1009 1009 spin_lock_irqsave(&gpio_lock, flags);