From 9a74739026fb71d1197183a067eef657bb5fba77 Mon Sep 17 00:00:00 2001 From: Ze Tan Date: Fri, 14 Aug 2026 13:51:41 +0000 Subject: [PATCH] smb/server: warn if ksmbd_proc_create() fails Print a warning if the sessions procfs entry cannot be created. Signed-off-by: Ze Tan Reviewed-by: ChenXiaoSong Signed-off-by: Namjae Jeon --- fs/smb/server/connection.c | 3 ++- fs/smb/server/mgmt/user_session.c | 5 ++++- fs/smb/server/server.c | 8 ++++++-- fs/smb/server/vfs_cache.c | 6 ++++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/fs/smb/server/connection.c b/fs/smb/server/connection.c index d32f4f3cef93..91fdd1ddc61f 100644 --- a/fs/smb/server/connection.c +++ b/fs/smb/server/connection.c @@ -787,7 +787,8 @@ int ksmbd_conn_transport_init(void) } out: mutex_unlock(&init_lock); - create_proc_clients(); + if (create_proc_clients()) + pr_warn("Unable to create clients procfs entry\n"); return ret; } diff --git a/fs/smb/server/mgmt/user_session.c b/fs/smb/server/mgmt/user_session.c index 7e187d20828b..e22c07ea28bd 100644 --- a/fs/smb/server/mgmt/user_session.c +++ b/fs/smb/server/mgmt/user_session.c @@ -204,6 +204,8 @@ static int create_proc_session(struct ksmbd_session *sess) snprintf(name, sizeof(name), "sessions/%llu", sess->id); sess->proc_entry = ksmbd_proc_create(name, show_proc_session, sess); + if (!sess->proc_entry) + return -ENOMEM; return 0; } @@ -729,7 +731,8 @@ static struct ksmbd_session *__session_create(int protocol) hash_add(sessions_table, &sess->hlist, sess->id); up_write(&sessions_table_lock); - create_proc_session(sess); + if (create_proc_session(sess)) + pr_warn_ratelimited("Unable to create session %llu procfs entry\n", sess->id); ksmbd_counter_inc(KSMBD_COUNTER_SESSIONS); return sess; diff --git a/fs/smb/server/server.c b/fs/smb/server/server.c index 6cfe8148da85..0069d4e6a60a 100644 --- a/fs/smb/server/server.c +++ b/fs/smb/server/server.c @@ -663,8 +663,12 @@ static int __init ksmbd_server_init(void) ret = ksmbd_proc_init(); if (ret) goto err_unregister; - create_proc_sessions(); - create_proc_shares(); + + if (create_proc_sessions()) + pr_warn("Unable to create sessions procfs entry\n"); + + if (create_proc_shares()) + pr_warn("Unable to create shares procfs entry\n"); ksmbd_server_tcp_callbacks_init(); diff --git a/fs/smb/server/vfs_cache.c b/fs/smb/server/vfs_cache.c index 413997f393f0..81626d204249 100644 --- a/fs/smb/server/vfs_cache.c +++ b/fs/smb/server/vfs_cache.c @@ -180,7 +180,8 @@ static int proc_show_files(struct seq_file *m, void *v) static int create_proc_files(void) { - ksmbd_proc_create("files", proc_show_files, NULL); + if (!ksmbd_proc_create("files", proc_show_files, NULL)) + return -ENOMEM; return 0; } #else @@ -1828,7 +1829,8 @@ void ksmbd_close_session_fds(struct ksmbd_work *work) int ksmbd_init_global_file_table(void) { - create_proc_files(); + if (create_proc_files()) + pr_warn("Unable to create files procfs entry\n"); return ksmbd_init_file_table(&global_ft); }