]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
smb/server: fix refcount leak in smb2_open()
authorZhangGuoDong <zhangguodong@kylinos.cn>
Mon, 29 Dec 2025 03:15:18 +0000 (11:15 +0800)
committerSteve French <stfrench@microsoft.com>
Mon, 29 Dec 2025 23:39:58 +0000 (17:39 -0600)
When ksmbd_vfs_getattr() fails, the reference count of ksmbd_file
must be released.

Suggested-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: ZhangGuoDong <zhangguodong@kylinos.cn>
Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/server/smb2pdu.c

index ec9e4cd24c4cb1a1b780b256605565c692ee5af4..2fcd0d4d1fb0ded3b2541e1bbf48fa50997d9ad6 100644 (file)
@@ -3010,10 +3010,10 @@ int smb2_open(struct ksmbd_work *work)
                        file_info = FILE_OPENED;
 
                        rc = ksmbd_vfs_getattr(&fp->filp->f_path, &stat);
+                       ksmbd_put_durable_fd(fp);
                        if (rc)
                                goto err_out2;
 
-                       ksmbd_put_durable_fd(fp);
                        goto reconnected_fp;
                }
        } else if (req_op_level == SMB2_OPLOCK_LEVEL_LEASE)