linux/drivers/gpio
Andrei Lalaev d403ff32e5 gpiolib: of: fix bounds check for 'gpio-reserved-ranges'
commit e75f88efac05bf4e107e4171d8db6d8c3937252d upstream.

Gpiolib interprets the elements of "gpio-reserved-ranges" as "start,size"
because it clears "size" bits starting from the "start" bit in the according
bitmap. So it has to use "greater" instead of "greater or equal" when performs
bounds check to make sure that GPIOs are in the available range.
Previous implementation skipped ranges that include the last GPIO in
the range.

I wrote the mail to the maintainers
(https://lore.kernel.org/linux-gpio/20220412115554.159435-1-andrei.lalaev@emlid.com/T/#u)
of the questioned DTSes (because I couldn't understand how the maintainers
interpreted this property), but I haven't received a response.
Since the questioned DTSes use "gpio-reserved-ranges = <0 4>"
(i.e., the beginning of the range), this patch doesn't affect these DTSes at all.
TBH this patch doesn't break any existing DTSes because none of them
reserve gpios at the end of range.

Fixes: 726cb3ba49 ("gpiolib: Support 'gpio-reserved-ranges' property")
Signed-off-by: Andrei Lalaev <andrei.lalaev@emlid.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Cc: stable@vger.kernel.org
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-05-12 12:23:40 +02:00
..
Kconfig gpio: AMD8111 and TQMX86 require HAS_IOPORT_MAP 2021-07-07 08:22:58 -04:00
Makefile ARM: SoC driver updates for v5.4 2019-09-16 15:52:38 -07:00
TODO
gpio-74x164.c
gpio-74xx-mmio.c
gpio-104-dio-48e.c
gpio-104-idi-48.c
gpio-104-idio-16.c
gpio-adnp.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-adp5520.c
gpio-adp5588.c
gpio-altera-a10sr.c
gpio-altera.c gpio: altera: Pass irqchip when adding gpiochip 2019-07-03 10:24:12 +02:00
gpio-amd-fch.c drivers: gpio: amd-fch: make resource struct const 2019-07-03 10:10:32 +02:00
gpio-amd8111.c
gpio-amdpt.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-arizona.c gpio: arizona: put pm_runtime in case of failure 2020-07-29 10:18:26 +02:00
gpio-aspeed.c gpio: aspeed: Convert aspeed_gpio.lock to raw_spinlock 2022-01-27 09:19:43 +01:00
gpio-ath79.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-bcm-kona.c gpio: bcm-kona: Fix return value of bcm_kona_gpio_probe() 2020-06-03 08:21:21 +02:00
gpio-bd9571mwv.c
gpio-bd70528.c gpio: bd70528: Use correct unit for debounce times 2019-11-12 11:18:52 +01:00
gpio-brcmstb.c gpio: Remove dev_err() usage after platform_get_irq() 2019-08-05 13:25:34 +02:00
gpio-bt8xx.c
gpio-cadence.c gpio: cadence: Add missing MODULE_DEVICE_TABLE 2021-06-03 08:59:08 +02:00
gpio-clps711x.c
gpio-creg-snps.c gpio: creg-snps: use devm_platform_ioremap_resource() to simplify code 2019-09-11 14:50:02 +01:00
gpio-crystalcove.c
gpio-cs5535.c docs: driver-model: move it to the driver-api book 2019-07-15 11:03:02 -03:00
gpio-da9052.c
gpio-da9055.c
gpio-davinci.c gpio: davinci: silence error prints in case of EPROBE_DEFER 2019-07-15 11:52:34 +02:00
gpio-dln2.c
gpio-dwapb.c gpio: dwapb: Append MODULE_ALIAS for platform driver 2020-06-24 17:50:21 +02:00
gpio-eic-sprd.c gpio: eic-sprd: break loop when getting NULL device resource 2020-12-30 11:50:55 +01:00
gpio-em.c gpio: em: use a helper variable for &pdev->dev 2019-07-22 14:40:07 +02:00
gpio-ep93xx.c gpio: ep93xx: Fix single irqchip with multi gpiochips 2021-02-17 10:35:14 +01:00
gpio-exar.c gpio: exar: Fix bad handling for ida_simple_get error path 2020-06-03 08:21:19 +02:00
gpio-f7188x.c
gpio-ftgpio010.c gpio: ftgpio: Fix an error handling path in 'ftgpio_gpio_probe()' 2019-08-23 12:02:34 +02:00
gpio-ge.c
gpio-gpio-mm.c
gpio-grgpio.c gpio: gpio-grgpio: fix possible sleep-in-atomic-context bugs in grgpio_irq_map/unmap() 2020-02-24 08:36:26 +01:00
gpio-gw-pld.c
gpio-hlwd.c gpio: hlwd: Pass irqchip when adding gpiochip 2019-08-15 09:57:29 +02:00
gpio-htc-egpio.c gpio: htc-egpio: Remove unused exported htc_egpio_get_wakeup_irq() 2019-09-12 10:07:44 +01:00
gpio-ich.c
gpio-intel-mid.c gpio: intel-mid: Move hardware initialization to callback 2019-10-15 01:18:51 +02:00
gpio-iop.c Merge branch 'i2c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2019-07-15 21:10:39 -07:00
gpio-it87.c
gpio-ixp4xx.c gpio: updates for v5.4 2019-09-03 16:04:19 +02:00
gpio-janz-ttl.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-kempld.c
gpio-loongson.c
gpio-loongson1.c
gpio-lp873x.c
gpio-lp3943.c
gpio-lp87565.c
gpio-lpc18xx.c
gpio-lpc32xx.c gpio: lpc32xx: allow building on non-lpc32xx targets 2019-08-15 21:33:07 +02:00
gpio-lynxpoint.c gpio: lynxpoint: Setup correct IRQ handlers 2020-01-04 19:18:20 +01:00
gpio-madera.c gpio: madera: Add support for Cirrus Logic CS47L92 2019-08-05 11:45:24 +02:00
gpio-max730x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-max732x.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-max3191x.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-max7300.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-max7301.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-max77620.c gpio: max77620: Fixup debounce delays 2019-11-12 11:13:54 +01:00
gpio-max77650.c gpio: max77650: add MODULE_ALIAS() 2019-07-29 00:03:52 +02:00
gpio-mb86s7x.c gpiolib: acpi: Split ACPI stuff to gpiolib-acpi.h 2019-07-31 00:57:21 +02:00
gpio-mc9s08dz60.c
gpio-mc33880.c
gpio-menz127.c
gpio-merrifield.c Revert "gpio: merrifield: Pass irqchip when adding gpiochip" 2019-11-03 23:41:11 +01:00
gpio-ml-ioh.c
gpio-mlxbf.c
gpio-mm-lantiq.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-mmio.c
gpio-mockup.c gpio: mockup: fix resource leak in error path 2020-10-07 08:01:24 +02:00
gpio-moxtet.c drivers: gpio: Add support for GPIOs over Moxtet bus 2019-08-14 15:30:56 +02:00
gpio-mpc8xxx.c gpio: mpc8xxx: Add platform device to gpiochip->parent 2020-01-17 19:49:03 +01:00
gpio-mpc5200.c
gpio-msic.c
gpio-mt7621.c gpio: mt7621: Pass irqchip when adding gpiochip 2019-08-23 12:05:06 +02:00
gpio-mvebu.c gpio: mvebu: fix pwm .get_state period calculation 2021-01-30 13:54:09 +01:00
gpio-mxc.c gpio: mxc: Only get the second IRQ when there is more than one IRQ 2020-01-04 19:16:27 +01:00
gpio-mxs.c
gpio-octeon.c
gpio-omap.c gpio: omap: Save and restore sysconfig 2021-04-28 13:19:14 +02:00
gpio-palmas.c
gpio-pca953x.c gpio: pca953x: Improve bias setting 2021-10-20 11:40:15 +02:00
gpio-pcf857x.c gpio: pcf857x: Fix missing first interrupt 2021-03-04 10:26:49 +01:00
gpio-pch.c gpio: pch: Use dev_get_drvdata 2019-07-23 18:59:05 +03:00
gpio-pci-idio-16.c
gpio-pcie-idio-24.c gpio: pcie-idio-24: Enable PEX8311 interrupts 2020-11-18 19:20:31 +01:00
gpio-pisosr.c
gpio-pl061.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-pmic-eic-sprd.c gpio: Remove dev_err() usage after platform_get_irq() 2019-08-05 13:25:34 +02:00
gpio-pxa.c gpio: pxa: Fix return value of pxa_gpio_probe() 2020-06-03 08:21:21 +02:00
gpio-raspberrypi-exp.c
gpio-rc5t583.c
gpio-rcar.c gpio: rcar: Fix runtime PM imbalance on error 2020-10-01 13:18:04 +02:00
gpio-rdc321x.c
gpio-reg.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 233 2019-06-19 17:09:06 +02:00
gpio-sa1100.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-sama5d2-piobu.c
gpio-sch.c
gpio-sch311x.c
gpio-siox.c gpio: siox: explicitly support only threaded irqs 2020-10-07 08:01:23 +02:00
gpio-sodaville.c
gpio-spear-spics.c
gpio-sprd.c gpio: sprd: Clear interrupt when setting the type as edge 2020-10-07 08:01:27 +02:00
gpio-sta2x11.c
gpio-stmpe.c gpio: Initialize the irqchip valid_mask with a callback 2019-09-11 01:09:37 +01:00
gpio-stp-xway.c Bulk GPIO changes for the v5.3 kernel cycle: 2019-07-09 09:07:00 -07:00
gpio-syscon.c
gpio-tb10x.c gpio: Remove dev_err() usage after platform_get_irq() 2019-08-05 13:25:34 +02:00
gpio-tc3589x.c gpio: tc35894: fix up tc35894 interrupt configuration 2020-10-07 08:01:24 +02:00
gpio-tegra.c gpio: tegra: mask GPIO IRQs during IRQ shutdown 2020-06-03 08:21:09 +02:00
gpio-tegra186.c gpio: tegra186: Fix chip_data type confusion 2022-03-02 11:41:17 +01:00
gpio-thunderx.c Revert "gpio: thunderx: Switch to GPIOLIB_IRQCHIP" 2020-01-23 08:22:29 +01:00
gpio-timberdale.c
gpio-tpic2810.c
gpio-tps6586x.c
gpio-tps65086.c
gpio-tps65218.c
gpio-tps65910.c
gpio-tps65912.c
gpio-tps68470.c
gpio-tqmx86.c gpio: tqmx86: really make IRQ optional 2021-08-12 13:20:57 +02:00
gpio-ts4800.c
gpio-ts4900.c gpio: ts4900: Do not set DAT and OE together 2022-03-16 13:21:46 +01:00
gpio-ts5500.c
gpio-twl4030.c
gpio-twl6040.c
gpio-ucb1400.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-uniphier.c gpio: uniphier: Fix void functions to remove return value 2021-09-30 10:09:23 +02:00
gpio-vf610.c gpio: vf610: Pass irqchip when adding gpiochip 2019-08-23 09:41:18 +02:00
gpio-viperboard.c gpio: viperboard: Replace 'unsigned' with 'unsigned int' 2019-08-05 11:26:58 +02:00
gpio-vr41xx.c gpio: vr41xx: Use devm_platform_ioremap_resource() 2019-06-27 15:56:51 +01:00
gpio-vx855.c
gpio-wcove.c
gpio-winbond.c
gpio-wm831x.c
gpio-wm8350.c
gpio-wm8994.c
gpio-ws16c48.c
gpio-xgene-sb.c gpiolib: acpi: Split ACPI stuff to gpiolib-acpi.h 2019-07-31 00:57:21 +02:00
gpio-xgene.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 234 2019-06-19 17:09:07 +02:00
gpio-xilinx.c gpio: xilinx: Fix bug where the wrong GPIO register is written to 2020-02-19 19:53:02 +01:00
gpio-xlp.c gpio: xlp: Pass irqchip when adding gpiochip 2019-08-15 09:55:07 +02:00
gpio-xra1403.c
gpio-xtensa.c gpio: xtensa: fix driver build 2020-01-09 10:19:59 +01:00
gpio-zevio.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
gpio-zx.c gpio: zx: Pass irqchip when adding gpiochip 2019-08-23 09:40:44 +02:00
gpio-zynq.c gpio: zynq: Check return value of pm_runtime_get_sync 2021-07-20 16:10:44 +02:00
gpiolib-acpi.c gpiolib: acpi: use correct format characters 2022-04-20 09:19:35 +02:00
gpiolib-acpi.h gpiolib: acpi: make acpi_can_fallback_to_crs() static 2019-09-10 11:34:20 +01:00
gpiolib-devprop.c
gpiolib-devres.c gpio: devres: Switch to EXPORT_SYMBOL_GPL() 2019-09-11 14:47:39 +01:00
gpiolib-legacy.c
gpiolib-of.c gpiolib: of: fix bounds check for 'gpio-reserved-ranges' 2022-05-12 12:23:40 +02:00
gpiolib-of.h gpio: of: Make of_get_named_gpiod_flags() private 2019-09-11 14:45:01 +01:00
gpiolib-sysfs.c gpio: sysfs: Obey valid_mask 2021-04-21 12:56:13 +02:00
gpiolib.c gpio: fix locking open drain IRQ lines 2020-06-03 08:21:28 +02:00
gpiolib.h gpiolib: acpi: Split ACPI stuff to gpiolib-acpi.h 2019-07-31 00:57:21 +02:00
sgpio-aspeed.c gpio/aspeed-sgpio: don't enable all interrupts by default 2020-10-07 08:01:28 +02:00