linux/drivers/pinctrl
Maria Yu b20f71c809 pinctrl: avoid reload of p state in list iteration
commit 4198a9b571 upstream.

When in the list_for_each_entry iteration, reload of p->state->settings
with a local setting from old_state will turn the list iteration into an
infinite loop.

The typical symptom when the issue happens, will be a printk message like:

  "not freeing pin xx (xxx) as part of deactivating group xxx - it is
already used for some other setting".

This is a compiler-dependent problem, one instance occurred using Clang
version 10.0 on the arm64 architecture with linux version 4.19.

Fixes: 6e5e959dde ("pinctrl: API changes to support multiple states per device")
Signed-off-by: Maria Yu <quic_aiquny@quicinc.com>
Cc:  <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20231115102824.23727-1-quic_aiquny@quicinc.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-12-08 08:48:00 +01:00
..
actions
aspeed pinctrl: aspeed: Fix confusing types in return value 2023-02-14 19:18:02 +01:00
bcm pinctrl: bcm2835: Handle gpiochip_add_pin_range() errors 2023-07-23 13:47:10 +02:00
berlin
cirrus
freescale
intel pinctrl: cherryview: fix address_space_handler() argument 2023-09-19 12:22:55 +02:00
mediatek pinctrl: mediatek: Initialize variable *buf to zero 2023-03-10 09:39:25 +01:00
meson pinctrl: meson-axg: add missing GPIOA_18 gpio group 2023-06-14 11:13:07 +02:00
mvebu pinctrl: armada-37xx: use raw spinlocks for regmap to avoid invalid wait context 2022-07-29 17:25:20 +02:00
nomadik pinctrl: nomadik: Fix refcount leak in nmk_pinctrl_dt_subnode_to_map 2022-08-25 11:40:07 +02:00
nuvoton gpio: use raw spinlock for gpio chip shadowed data 2023-02-01 08:27:08 +01:00
pxa
qcom pinctrl: qcom: lpass-lpi: fix concurrent register updates 2023-11-08 17:26:35 +01:00
ralink pinctrl: ralink: Check for null return of devm_kcalloc 2022-07-29 17:25:10 +02:00
renesas pinctrl: renesas: rzn1: Enable missing PINMUX 2023-10-19 23:05:34 +02:00
samsung
spear
sprd
stm32 pinctrl: stm32: Fix refcount leak in stm32_pctrl_get_irq_domain 2023-03-10 09:39:21 +01:00
sunxi pinctrl: sunxi: Fix name for A100 R_PIO 2022-09-23 14:15:47 +02:00
tegra
ti
uniphier
visconti
vt8500
core.c pinctrl: avoid reload of p state in list iteration 2023-12-08 08:48:00 +01:00
core.h
devicetree.c pinctrl: devicetree: fix null pointer dereferencing in pinctrl_dt_to_map 2022-11-26 09:24:36 +01:00
devicetree.h
Kconfig
Makefile
pinconf-generic.c pinctrl: pinconf-generic: add missing of_node_put() 2022-12-31 13:14:12 +01:00
pinconf.c
pinconf.h
pinctrl-amd.c pinctrl: amd: Don't show Invalid config param errors 2023-09-06 21:28:40 +01:00
pinctrl-amd.h pinctrl: amd: Detect internal GPIO0 debounce handling 2023-07-23 13:47:46 +02:00
pinctrl-artpec6.c
pinctrl-as3722.c
pinctrl-at91-pio4.c pinctrl: at91-pio4: check return value of devm_kasprintf() 2023-07-23 13:47:13 +02:00
pinctrl-at91.c pinctrl: at91: use devm_kasprintf() to avoid potential leaks 2023-03-10 09:39:54 +01:00
pinctrl-at91.h
pinctrl-axp209.c
pinctrl-bm1880.c
pinctrl-da850-pupd.c
pinctrl-da9062.c
pinctrl-digicolor.c
pinctrl-equilibrium.c
pinctrl-equilibrium.h
pinctrl-falcon.c
pinctrl-gemini.c
pinctrl-ingenic.c pinctrl: Ingenic: JZ4755 bug fixes 2022-11-03 23:59:13 +09:00
pinctrl-k210.c pinctrl: k210: call of_node_put() 2022-12-31 13:14:11 +01:00
pinctrl-keembay.c
pinctrl-lantiq.c
pinctrl-lantiq.h
pinctrl-lpc18xx.c
pinctrl-max77620.c
pinctrl-mcp23s08_i2c.c
pinctrl-mcp23s08_spi.c pinctrl: mcp23s08: check return value of devm_kasprintf() 2023-09-19 12:22:41 +02:00
pinctrl-mcp23s08.c
pinctrl-mcp23s08.h
pinctrl-microchip-sgpio.c pinctrl: microchip-sgpio: check return value of devm_kasprintf() 2023-07-23 13:47:13 +02:00
pinctrl-ocelot.c pinctrl: ocelot: Fix alt mode for ocelot 2023-04-05 11:24:58 +02:00
pinctrl-oxnas.c
pinctrl-palmas.c
pinctrl-pic32.c
pinctrl-pic32.h
pinctrl-pistachio.c pinctrl: pistachio: fix use of irq_of_parse_and_map() 2022-05-09 09:14:36 +02:00
pinctrl-rk805.c
pinctrl-rockchip.c pinctrl: rockchip: Fix refcount leak in rockchip_pinctrl_parse_groups 2023-03-10 09:39:21 +01:00
pinctrl-rockchip.h pinctrl/rockchip: add error handling for pull/drive register getters 2023-02-01 08:27:09 +01:00
pinctrl-single.c pinctrl: single: fix potential NULL dereference 2023-02-14 19:18:02 +01:00
pinctrl-st.c
pinctrl-stmfx.c
pinctrl-sx150x.c
pinctrl-tb10x.c
pinctrl-utils.c
pinctrl-utils.h
pinctrl-xway.c
pinctrl-zynq.c
pinctrl-zynqmp.c
pinmux.c
pinmux.h