summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJian Zhang <zhangjian.3032@bytedance.com>2026-04-03 12:05:58 +0300
committerCorey Minyard <corey@minyard.net>2026-04-03 15:49:45 +0300
commit7fc3e2546cf3fa9a28a2acc92a512c779a8e5038 (patch)
tree721e87aca170efb67cd197337f203c3553a90555
parent122d16da1313f1746a4cdd31a620bbb141be7060 (diff)
downloadlinux-7fc3e2546cf3fa9a28a2acc92a512c779a8e5038.tar.xz
ipmi: ssif_bmc: cancel response timer on remove
The response timer can stay armed across device teardown. If it fires after remove, the callback dereferences the SSIF context and the i2c client after teardown has started. Cancel the timer in remove so the callback cannot run after the device is unregistered. Signed-off-by: Jian Zhang <zhangjian.3032@bytedance.com> Message-ID: <20260403090603.3988423-1-zhangjian.3032@bytedance.com> Signed-off-by: Corey Minyard <corey@minyard.net>
-rw-r--r--drivers/char/ipmi/ssif_bmc.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/char/ipmi/ssif_bmc.c b/drivers/char/ipmi/ssif_bmc.c
index 7a52e3ea49ed..dc1d5bb4a460 100644
--- a/drivers/char/ipmi/ssif_bmc.c
+++ b/drivers/char/ipmi/ssif_bmc.c
@@ -843,6 +843,7 @@ static void ssif_bmc_remove(struct i2c_client *client)
{
struct ssif_bmc_ctx *ssif_bmc = i2c_get_clientdata(client);
+ timer_delete_sync(&ssif_bmc->response_timer);
i2c_slave_unregister(client);
misc_deregister(&ssif_bmc->miscdev);
}