[PATCH v3 2/3] Input: applespi - cancel pending work on driver remove
From: Shih-Yuan Lee
Date: Sat Jul 11 2026 - 05:23:09 EST
During driver removal in applespi_remove(), the managed private data
structure is freed by devres. However, the driver does not cancel the
asynchronous work applespi->work, which registers the touchpad input
device.
This creates a use-after-free (UAF) vulnerability if a pending or
running worker thread attempts to access the private data after the
remove function returns.
Fix this by explicitly calling cancel_work_sync(&applespi->work) in
applespi_remove() before cleanups.
Signed-off-by: Shih-Yuan Lee <fourdollars@xxxxxxxxxx>
---
drivers/input/keyboard/applespi.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/input/keyboard/applespi.c b/drivers/input/keyboard/applespi.c
index 79e5cb5001c7..fd785dba1174 100644
--- a/drivers/input/keyboard/applespi.c
+++ b/drivers/input/keyboard/applespi.c
@@ -1861,6 +1861,8 @@ static void applespi_remove(struct spi_device *spi)
applespi_drain_reads(applespi);
+ cancel_work_sync(&applespi->work);
+
if (override_dma)
spi->controller->can_dma = applespi->original_can_dma;
--
2.39.5