summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhangGuoDong <zhangguodong@kylinos.cn>2026-07-31 11:50:05 +0000
committerNamjae Jeon <linkinjeon@kernel.org>2026-08-17 15:00:58 +0900
commitbef46b604732d83f8da29f782868de4d25bf972c (patch)
tree831723ef3fa807d415aa255a67d82d89afd5fa93
parent3ce2f9491963c9c9c02129deaf7e8a0809775e97 (diff)
downloadlinux-bef46b604732d83f8da29f782868de4d25bf972c.tar.gz
linux-bef46b604732d83f8da29f782868de4d25bf972c.zip
smb/server: fix invalid pointer dereference in ksmbd_stop_durable_scavenger()
See the procedure below: ksmbd_launch_ksmbd_durable_scavenger durable_scavenger_running = true server_conf.dh_task = kthread_run() // fail, dh_task is an ERR_PTR() server_ctrl_handle_reset ksmbd_stop_durable_scavenger kthread_stop(server_conf.dh_task) // invalid pointer Fixes: d484d621d40f ("ksmbd: add durable scavenger timer") Signed-off-by: ZhangGuoDong <zhangguodong@kylinos.cn> Reviewed-by: ChenXiaoSong <chenxiaosong@kylinos.cn> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
-rw-r--r--fs/smb/server/vfs_cache.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/smb/server/vfs_cache.c b/fs/smb/server/vfs_cache.c
index 5acd06020d42..a35df2ab59c9 100644
--- a/fs/smb/server/vfs_cache.c
+++ b/fs/smb/server/vfs_cache.c
@@ -1618,9 +1618,12 @@ void ksmbd_launch_ksmbd_durable_scavenger(void)
server_conf.dh_task = kthread_run(ksmbd_durable_scavenger,
(void *)NULL, "ksmbd-durable-scavenger");
- if (IS_ERR(server_conf.dh_task))
+ if (IS_ERR(server_conf.dh_task)) {
pr_err("cannot start conn thread, err : %ld\n",
PTR_ERR(server_conf.dh_task));
+ server_conf.dh_task = NULL;
+ durable_scavenger_running = false;
+ }
mutex_unlock(&durable_scavenger_lock);
}