linux/drivers/base/regmap
Cheng-Yu Lee c2d2cf710d regmap: Fix race condition in hwspinlock irqsave routine
[ Upstream commit 4b58aac989 ]

Previously, the address of the shared member '&map->spinlock_flags' was
passed directly to 'hwspin_lock_timeout_irqsave'. This creates a race
condition where multiple contexts contending for the lock could overwrite
the shared flags variable, potentially corrupting the state for the
current lock owner.

Fix this by using a local stack variable 'flags' to store the IRQ state
temporarily.

Fixes: 8698b93647 ("regmap: Add hardware spinlock support")
Signed-off-by: Cheng-Yu Lee <cylee12@realtek.com>
Co-developed-by: Yu-Chun Lin <eleanor.lin@realtek.com>
Signed-off-by: Yu-Chun Lin <eleanor.lin@realtek.com>
Link: https://patch.msgid.link/20260109032633.8732-1-eleanor.lin@realtek.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2026-01-30 10:32:16 +01:00
..
internal.h regmap: Reorder 'struct regmap' 2025-02-03 00:38:32 +00:00
Kconfig regmap: Move selecting for REGMAP_MDIO and REGMAP_IRQ 2025-05-20 10:25:08 +01:00
Makefile regmap: Provide a ram backed regmap with raw support 2023-06-12 14:47:54 +01:00
regcache-flat.c regcache: use map->alloc_flags also for allocating cache 2024-08-28 13:52:29 +01:00
regcache-maple.c regmap: cache: mapple: use kmalloc_array() to replace kmalloc() 2024-12-02 00:31:15 +00:00
regcache-rbtree.c regmap: cache: rbtree: use krealloc_array() to replace krealloc() 2024-12-02 00:31:16 +00:00
regcache.c regcache: Use sort()'s default swap() implementation 2025-04-30 09:38:31 +09:00
regmap-ac97.c regmap: add missing MODULE_DESCRIPTION() macros 2024-06-24 13:38:40 +01:00
regmap-debugfs.c regmap: get rid of redundant debugfs_file_{get,put}() 2025-07-04 13:18:13 +01:00
regmap-fsi.c regmap: Add FSI bus support 2022-11-25 19:17:02 +00:00
regmap-i2c.c regmap-i2c: add missing MODULE_DESCRIPTION() macro 2024-06-14 15:23:14 +01:00
regmap-i3c.c regmap: Drop capitalisation in MODULE_DESCRIPTION() 2024-04-10 22:45:52 +01:00
regmap-irq.c regmap: irq: Avoid lockdep warnings with nested regmap-irq chips 2025-08-01 13:37:07 +01:00
regmap-kunit.c regmap: kunit: Constify regmap_range_cfg array 2025-06-08 23:35:03 +01:00
regmap-mdio.c regmap: Drop capitalisation in MODULE_DESCRIPTION() 2024-04-10 22:45:52 +01:00
regmap-mmio.c regmap: mmio: Add missing MODULE_DESCRIPTION() 2025-08-10 21:09:27 +01:00
regmap-ram.c regmap: add missing MODULE_DESCRIPTION() macros 2024-06-24 13:38:40 +01:00
regmap-raw-ram.c regmap: add missing MODULE_DESCRIPTION() macros 2024-06-24 13:38:40 +01:00
regmap-sccb.c regmap: add missing MODULE_DESCRIPTION() macros 2024-06-24 13:38:40 +01:00
regmap-sdw-mbq.c regmap: sdw-mbq: Add support for SDCA deferred controls 2025-01-07 20:21:00 +00:00
regmap-sdw.c regmap: Drop capitalisation in MODULE_DESCRIPTION() 2024-04-10 22:45:52 +01:00
regmap-slimbus.c regmap: slimbus: fix bus_context pointer in regmap init calls 2025-10-23 15:19:58 +01:00
regmap-spi-avmm.c regmap: add missing MODULE_DESCRIPTION() macros 2024-06-24 13:38:40 +01:00
regmap-spi.c regmap: spi: Fix potential off-by-one when calculating reserved size 2024-06-05 22:23:52 +01:00
regmap-spmi.c regmap: add missing MODULE_DESCRIPTION() macros 2024-06-24 13:38:40 +01:00
regmap-w1.c regmap: add missing MODULE_DESCRIPTION() macros 2024-06-24 13:38:40 +01:00
regmap.c regmap: Fix race condition in hwspinlock irqsave routine 2026-01-30 10:32:16 +01:00
trace.h tracing/treewide: Remove second parameter of __assign_str() 2024-05-22 20:14:47 -04:00