linux/drivers/pinctrl
Théo Lebrun 37e0f758e0 gpio: nomadik: fix offset bug in nmk_pmx_set()
[ Upstream commit 53cf6b72e0 ]

Previously, the statement looked like:

    slpm[x] &= ~BIT(g->grp.pins[i]);

Where:
 - slpm is a unsigned int pointer;
 - g->grp.pins[i] is a pin number. It can grow to more than 32.

The expected shift amount is a pin bank offset.

This bug does not occur on every group or pin: the altsetting must be
NMK_GPIO_ALT_C and the pin must be 32 or above. It might have occured.
For example, in pinctrl-nomadik-db8500.c, pin group i2c3_c_2 has the
right altsetting and pins 229 and 230.

Fixes: dbfe8ca259 ("pinctrl/nomadik: implement pin multiplexing")
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Théo Lebrun <theo.lebrun@bootlin.com>
Link: https://lore.kernel.org/r/20240228-mbly-gpio-v2-5-3ba757474006@bootlin.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-03-26 18:19:54 -04:00
..
actions pinctrl: actions: remove MODULE_LICENSE in non-modules 2023-04-13 13:13:50 -07:00
aspeed pinctrl: aspeed: Revert "Force to disable the function's signal" 2023-01-30 23:51:03 +01:00
bcm pinctrl: nsp-gpio: Silence probe deferral messages 2023-08-10 10:41:20 +02:00
berlin pinctrl: berlin: as370: Use devm_platform_get_and_ioremap_resource() 2023-07-16 23:08:22 +02:00
cirrus pinctrl: lochnagar: Don't build on MIPS 2024-01-20 11:51:37 +01:00
freescale pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
intel pinctrl: baytrail: Fix types of config value in byt_pin_config_set() 2024-02-05 20:14:30 +00:00
mediatek pinctrl: mediatek: Drop bogus slew rate register range for MT8192 2024-03-26 18:19:45 -04:00
meson pinctrl: use capital "OR" for multiple licenses in SPDX 2023-08-23 14:31:58 +02:00
mvebu intel-pinctrl for v6.6-1 2023-08-25 15:47:18 +02:00
nomadik gpio: nomadik: fix offset bug in nmk_pmx_set() 2024-03-26 18:19:54 -04:00
nuvoton pinctrl: nuvoton: wpcm450: fix out of bounds write 2023-09-12 09:03:18 +02:00
nxp pinctrl: s32cc: Avoid possible string truncation 2024-01-20 11:51:37 +01:00
pxa pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
qcom pinctrl: qcom: lpass-lpi: fix concurrent register updates 2023-10-16 14:56:49 +02:00
renesas pinctrl: renesas: Allow the compiler to optimize away sh_pfc_pm 2024-03-26 18:19:50 -04:00
samsung pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
spear pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
sprd pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
starfive pinctrl: starfive: jh7100: ignore disabled device tree nodes 2024-01-01 12:42:45 +00:00
stm32 pinctrl: stm32: fix array read out of bound 2023-12-08 08:52:21 +01:00
sunplus pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
sunxi pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
tegra Revert "pinctrl: tegra: Add support to display pin function" 2023-09-27 10:51:57 +02:00
ti pinctrl: ti: Convert to devm_platform_get_and_ioremap_resource() 2023-07-16 23:08:22 +02:00
uniphier pinctrl: uniphier: Add missing header(s) 2022-10-24 17:06:47 +03:00
visconti
vt8500
core.c pinctrl: avoid reload of p state in list iteration 2023-12-08 08:52:15 +01:00
core.h pinctrl: Move for_each_maps() to namespace and hide iterator inside 2022-11-14 14:19:33 +01:00
devicetree.c pinctrl: devicetree: fix null pointer dereferencing in pinctrl_dt_to_map 2022-11-10 12:26:18 +01:00
devicetree.h pinctrl: Clean up headers 2022-10-24 17:06:48 +03:00
Kconfig pinctrl: pinctrl-oxnas: remove obsolete pinctrl driver 2023-08-15 11:06:32 +02:00
Makefile pinctrl: pinctrl-oxnas: remove obsolete pinctrl driver 2023-08-15 11:06:32 +02:00
pinconf-generic.c pinctrl: pinconf-generic: add missing of_node_put() 2022-11-25 10:49:28 +01:00
pinconf.c
pinconf.h pinctrl: Clean up headers 2022-10-24 17:06:48 +03:00
pinctrl-amd.c pinctrl: amd: Mask non-wake source pins with interrupt enabled at suspend 2024-01-20 11:51:44 +01:00
pinctrl-amd.h pinctrl: amd: Mask non-wake source pins with interrupt enabled at suspend 2024-01-20 11:51:44 +01:00
pinctrl-apple-gpio.c pinctrl: apple-gpio: Add missing header(s) 2022-10-24 12:31:17 +03:00
pinctrl-artpec6.c
pinctrl-as3722.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_318.RULE 2022-06-10 14:51:36 +02:00
pinctrl-at91-pio4.c pinctrl: at91-pio4: use dedicated lock class for IRQ 2024-01-01 12:42:35 +00:00
pinctrl-at91.c pinctrl: at91: Switch to use DEFINE_NOIRQ_DEV_PM_OPS() helper 2023-08-21 18:58:10 +03:00
pinctrl-at91.h
pinctrl-axp209.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-bm1880.c pinctrl: bm1880: Add missing header(s) 2022-10-24 12:53:33 +03:00
pinctrl-cy8c95x0.c pinctrl: cy8c95x0: Fix get_pincfg 2024-01-20 11:51:46 +01:00
pinctrl-da850-pupd.c pinctrl: da850-pupd: Drop empty platform remove function 2022-12-29 02:02:46 +01:00
pinctrl-da9062.c
pinctrl-digicolor.c pinctrl: digicolor: Use proper headers and drop OF dependency 2023-01-16 15:14:03 +01:00
pinctrl-equilibrium.c pinctrl: equilibrium: Convert to immutable irq_chip 2023-04-14 11:08:17 +02:00
pinctrl-equilibrium.h pinctrl: equilibrium: Convert to immutable irq_chip 2023-04-14 11:08:17 +02:00
pinctrl-falcon.c pinctrl: lantiq: Remove unused of_gpio.h inclusion 2023-06-16 15:04:34 +02:00
pinctrl-gemini.c pinctrl: gemini: Add missing header(s) 2022-10-24 17:06:45 +03:00
pinctrl-ingenic.c Pin control changes for the v6.2 kernel cycle: 2022-12-13 13:03:06 -08:00
pinctrl-k210.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-keembay.c
pinctrl-lantiq.c pinctrl: lantiq: Add missing header(s) 2022-10-24 17:06:46 +03:00
pinctrl-lantiq.h pinctrl: lantiq: Remove unsued declaration ltq_pinctrl_unregister() 2023-09-11 15:42:12 +02:00
pinctrl-loongson2.c pinctrl: loongson2: Fix some const correctness 2022-11-25 11:41:01 +01:00
pinctrl-lpc18xx.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-max77620.c pinctrl: max77620: drop unneeded MODULE_ALIAS 2022-04-22 22:56:46 +02:00
pinctrl-mcp23s08_i2c.c pinctrl: Switch i2c drivers back to use .probe() 2023-05-29 15:16:30 +02:00
pinctrl-mcp23s08_spi.c pinctrl: mcp23s08: check return value of devm_kasprintf() 2023-08-10 09:56:31 +02:00
pinctrl-mcp23s08.c pinctrl: mcp23s08: Convert to immutable irq_chip 2023-04-14 11:08:17 +02:00
pinctrl-mcp23s08.h pinctrl: mcp23s08: Convert to immutable irq_chip 2023-04-14 11:08:17 +02:00
pinctrl-microchip-sgpio.c pinctrl: microchip-sgpio: check return value of devm_kasprintf() 2023-06-16 15:01:45 +02:00
pinctrl-mlxbf3.c pinctrl: mlxbf3: Remove gpio_disable_free() 2023-08-25 15:44:15 +02:00
pinctrl-ocelot.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-palmas.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-pic32.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-pic32.h
pinctrl-pistachio.c pinctrl: pistachio: Convert to immutable irq_chip 2023-04-20 16:07:40 +02:00
pinctrl-rk805.c pinctrl: rk805: Add rk806 pinctrl support 2023-05-15 16:21:01 +01:00
pinctrl-rockchip.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-rockchip.h pinctrl: rockchip: Add RV1126 pinctrl support 2022-08-22 09:51:08 +02:00
pinctrl-single.c pinctrl: single: Add compatible for ti,am654-padconf 2023-08-10 10:39:17 +02:00
pinctrl-st.c pinctrl: st: Convert to immutable irq_chip 2023-04-14 11:08:17 +02:00
pinctrl-stmfx.c pinctrl: stmfx: Do not check for 0 return after calling platform_get_irq() 2023-08-10 10:11:33 +02:00
pinctrl-sx150x.c pinctrl: Explicitly include correct DT includes 2023-07-20 21:41:24 +02:00
pinctrl-tb10x.c
pinctrl-utils.c treewide: Replace GPLv2 boilerplate/reference with SPDX - gpl-2.0_318.RULE 2022-06-10 14:51:36 +02:00
pinctrl-utils.h pinctrl: Clean up headers 2022-10-24 17:06:48 +03:00
pinctrl-xway.c pinctrl: lantiq: Remove unused of_gpio.h inclusion 2023-06-16 15:04:34 +02:00
pinctrl-zynq.c pinctrl: zynq: use module_platform_driver to simplify the code 2022-03-15 01:46:13 +01:00
pinctrl-zynqmp.c pinctrl: pinctrl-zynqmp: Add support for output-enable and bias-high impedance 2023-08-07 10:48:03 +02:00
pinmux.c pinctrl: pinmux: handle radix_tree_insert() errors in pinmux_generic_add_function() 2023-07-28 22:08:58 +02:00
pinmux.h pinctrl: Clean up headers 2022-10-24 17:06:48 +03:00