anolis-cloud-kernel/drivers/pinctrl
Hagar Hemdan afac6a7e25 pinctrl: fix deadlock in create_pinctrl() when handling -EPROBE_DEFER
ANBZ: #12868

commit adec57ff8e upstream.

In create_pinctrl(), pinctrl_maps_mutex is acquired before calling
add_setting(). If add_setting() returns -EPROBE_DEFER, create_pinctrl()
calls pinctrl_free(). However, pinctrl_free() attempts to acquire
pinctrl_maps_mutex, which is already held by create_pinctrl(), leading to
a potential deadlock.

This patch resolves the issue by releasing pinctrl_maps_mutex before
calling pinctrl_free(), preventing the deadlock.

This bug was discovered and resolved using Coverity Static Analysis
Security Testing (SAST) by Synopsys, Inc.

Fixes: 42fed7ba44 ("pinctrl: move subsystem mutex to pinctrl_dev struct")
Suggested-by: Maximilian Heyne <mheyne@amazon.de>
Signed-off-by: Hagar Hemdan <hagarhem@amazon.com>
Link: https://lore.kernel.org/r/20240604085838.3344-1-hagarhem@amazon.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

Fixes: CVE-2024-42090
Signed-off-by: Xiao Long <xiaolong@openanolis.org>
Signed-off-by: 362994 <362994>
Reviewed-by: Guixin Liu <kanie@linux.alibaba.com>
Link: https://gitee.com/anolis/cloud-kernel/pulls/4313
2025-03-31 02:30:27 +00:00
..
actions pinctrl: remove empty lines in pinctrl subsystem 2021-09-18 13:40:11 +02:00
aspeed pinctrl: aspeed: Fix potential NULL dereference in aspeed_pinmux_set_mux() 2022-07-21 21:20:15 +02:00
bcm pinctrl: bcm2835: implement hook for missing gpio-ranges 2022-06-09 10:21:15 +02:00
berlin
cirrus
freescale pinctrl: remove empty lines in pinctrl subsystem 2021-09-18 13:40:11 +02:00
intel pinctrl: intel: fix unexpected interrupt 2022-02-08 18:30:39 +01:00
mediatek pinctrl: mediatek: moore: Fix build error 2022-05-09 09:05:02 +02:00
meson
mvebu pinctrl: mvebu: Fix irq_of_parse_and_map() return value 2022-06-09 10:21:16 +02:00
nomadik pinctrl: nomadik: Add missing of_node_put() in nmk_pinctrl_probe 2022-04-08 14:40:28 +02:00
nuvoton pinctrl: nuvoton: npcm7xx: Use %zu printk format for ARRAY_SIZE() 2022-04-08 14:40:41 +02:00
pxa
qcom pinctrl: qcom: sdm845: Enable dual edge errata 2021-11-26 10:39:18 +01:00
renesas pinctrl: renesas: core: Fix possible null-ptr-deref in sh_pfc_map_resources() 2022-06-09 10:21:16 +02:00
samsung pinctrl: samsung: fix missing GPIOLIB on ARM64 Exynos config 2022-05-09 09:04:59 +02:00
sirf
spear
sprd
stm32 pinctrl: stm32: fix optional IRQ support to gpios 2022-07-29 17:19:06 +02:00
sunxi pinctrl: sunxi: sunxi_pconf_set: use correct offset 2022-07-12 16:32:20 +02:00
tegra
thead anolis: riscv: pinctrl: add T-HEAD Light support 2023-02-26 01:51:05 +00:00
ti
uniphier
visconti
vt8500
zhaoxin anolis: pinctrl: Add support Zhaoxin GPIO pinctrl 2024-08-09 19:32:32 +08:00
zte
Kconfig anolis: pinctrl: Add support Zhaoxin GPIO pinctrl 2024-08-09 19:32:32 +08:00
Makefile anolis: pinctrl: Add support Zhaoxin GPIO pinctrl 2024-08-09 19:32:32 +08:00
core.c pinctrl: fix deadlock in create_pinctrl() when handling -EPROBE_DEFER 2025-03-31 02:30:27 +00:00
core.h
devicetree.c
devicetree.h
pinconf-generic.c pinctrl: pinconf-generic: Print arguments for bias-pull-* 2022-04-08 14:40:41 +02:00
pinconf.c
pinconf.h
pinctrl-amd.c anolis: pinctrl: Add device HID for Hygon GPIO controller 2025-03-04 10:45:57 +00:00
pinctrl-amd.h
pinctrl-artpec6.c
pinctrl-as3722.c
pinctrl-at91-pio4.c
pinctrl-at91.c pinctrl: remove empty lines in pinctrl subsystem 2021-09-18 13:40:11 +02:00
pinctrl-at91.h
pinctrl-axp209.c
pinctrl-bm1880.c
pinctrl-coh901.c
pinctrl-coh901.h
pinctrl-da850-pupd.c
pinctrl-da9062.c
pinctrl-digicolor.c
pinctrl-equilibrium.c pinctrl: equilibrium: Fix function addition in multiple groups 2021-11-18 14:04:20 +01:00
pinctrl-equilibrium.h
pinctrl-falcon.c
pinctrl-gemini.c
pinctrl-ingenic.c pinctrl: ingenic: Fix incorrect pull up/down info 2021-09-18 13:40:07 +02:00
pinctrl-lantiq.c
pinctrl-lantiq.h
pinctrl-lpc18xx.c
pinctrl-max77620.c
pinctrl-mcp23s08.c pinctrl: mcp23s08: Fix sleeping in atomic context due to regmap locking 2025-03-28 02:04:20 +00:00
pinctrl-mcp23s08.h
pinctrl-mcp23s08_i2c.c
pinctrl-mcp23s08_spi.c
pinctrl-ocelot.c
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:05:03 +02:00
pinctrl-rk805.c
pinctrl-rockchip.c pinctrl: rockchip: fix RK3308 pinmux bits 2022-05-09 09:05:03 +02:00
pinctrl-single.c pinctrl: single: Fix error return code in pcs_parse_bits_in_pinctrl_entry() 2021-09-18 13:40:14 +02:00
pinctrl-st.c pinctrl: remove empty lines in pinctrl subsystem 2021-09-18 13:40:11 +02:00
pinctrl-stmfx.c pinctrl: stmfx: Fix hazardous u8[] to unsigned long cast 2021-09-18 13:40:07 +02:00
pinctrl-sx150x.c pinctrl: remove empty lines in pinctrl subsystem 2021-09-18 13:40:11 +02:00
pinctrl-tb10x.c
pinctrl-u300.c
pinctrl-utils.c
pinctrl-utils.h
pinctrl-xway.c
pinctrl-zynq.c
pinmux.c
pinmux.h