Skip to content

Commit 9049015

Browse files
Jeremy Laratrosmfrench
authored andcommitted
ksmbd: fix null pointer dereference in proc_show_files()
When a SMB2 client opens a file with a durable v2 handle and then issues SMB2 SESSION_LOGOFF, session_fd_check() clears fp->tcon = NULL on the reconnectable file pointer but leaves the fp registered in global_ft.idr until the durable scavenger fires (up to fp->durable_timeout seconds later). During that window any read of /proc/fs/ksmbd/files (mode 0400) panics the kernel because proc_show_files() walks global_ft.idr and unconditionally dereferences fp->tcon->id with no NULL guard. Reproducer requires only a successful SMB2 SESSION_SETUP and a share configured with 'durable handles = yes'. KASAN report on mainline 7039050: general protection fault, probably for non-canonical address 0xdffffc0000000000: 0000 [#1] SMP KASAN PTI KASAN: null-ptr-deref in range [0x0000000000000000-0x0000000000000007] RIP: 0010:proc_show_files+0x118/0x740 Call Trace: proc_show_files+0x118/0x740 seq_read_iter+0x4ef/0xe10 proc_reg_read_iter+0x1b7/0x280 ... Guard the dereference. A durable-disconnected fp legitimately has no tcon; report its tree id as 0 rather than oopsing. Fixes: b38f99c ("ksmbd: add procfs interface for runtime monitoring and statistics") Cc: stable@vger.kernel.org Signed-off-by: Jeremy Laratro <research@aradex.io> Acked-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent af92ee9 commit 9049015

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

fs/smb/server/vfs_cache.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ static int proc_show_files(struct seq_file *m, void *v)
8181
read_lock(&global_ft.lock);
8282
idr_for_each_entry(global_ft.idr, fp, id) {
8383
seq_printf(m, "%#-10x %#-10llx %#-10llx %#-10x",
84-
fp->tcon->id,
84+
fp->tcon ? fp->tcon->id : 0,
8585
fp->persistent_id,
8686
fp->volatile_id,
8787
atomic_read(&fp->refcount));

0 commit comments

Comments
 (0)