summaryrefslogtreecommitdiff
path: root/include/linux/input.h
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-07-06 14:39:25 +0100
committerMark Brown <broonie@kernel.org>2026-07-06 14:39:25 +0100
commit8e5a6599a38e5515cd2b5f34fe8a8ac476f8b127 (patch)
treed61c0ceb288dc158a8cebfc601e86c0dcf06ac96 /include/linux/input.h
parenta118fea777a2c04da7c5ccf1141d317838a79a46 (diff)
parent4105a4c0678b2808fc8046b60321b4f1cc7dae75 (diff)
ASoC: cs35l3x: drain threaded IRQs before runtime suspend
Runyu Xiao <runyu.xiao@seu.edu.cn> says: Both cs35l33 and cs35l34 can enter runtime suspend while their threaded IRQ handlers are still reachable. The suspend path then switches the driver into regcache cache-only mode and powers the codec down, while the IRQ thread still expects live status-register access. This issue was found by our static analysis tool and manually audited on Linux v6.18.21. Directed QEMU no-device validation further showed that, after runtime_suspend() completed, the real threaded handlers could still be injected and would continue past volatile regmap read failures into their release/update paths. This series keeps the fix on the suspend actor and applies the same runtime-suspend/threaded-IRQ ordering repair boundary to both drivers: - track whether request_threaded_irq() actually succeeded - disable_irq() before cache_only/power-off in runtime suspend - enable_irq() only after regcache_sync() in runtime resume That drains any in-flight threaded handler and blocks new IRQ handling while the codec is suspended, without mixing in larger IRQ-thread defensive cleanups. Build-tested by compiling cs35l33.o and cs35l34.o. No cs35l33/cs35l34 hardware was available for end-to-end runtime testing. Link: https://patch.msgid.link/20260611161553.3378721-1-runyu.xiao@seu.edu.cn
Diffstat (limited to 'include/linux/input.h')
-rw-r--r--include/linux/input.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/input.h b/include/linux/input.h
index 3022bb730898..76f7aa226202 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -19,7 +19,7 @@
#include <linux/device.h>
#include <linux/fs.h>
#include <linux/timer.h>
-#include <linux/mod_devicetable.h>
+#include <linux/device-id/input.h>
struct input_dev_poller;