diff options
author | Namjae Jeon <linkinjeon@kernel.org> | 2022-04-05 05:04:43 +0200 |
---|---|---|
committer | Steve French <stfrench@microsoft.com> | 2022-04-15 03:56:13 +0200 |
commit | 8510a043d334ecdf83d4604782f288db6bf21d60 (patch) | |
tree | 6657e6faccff11b94242c3edf8a92777c138ed14 | |
parent | ksmbd: remove filename in ksmbd_file (diff) | |
download | linux-8510a043d334ecdf83d4604782f288db6bf21d60.tar.xz linux-8510a043d334ecdf83d4604782f288db6bf21d60.zip |
ksmbd: increment reference count of parent fp
Add missing increment reference count of parent fp in
ksmbd_lookup_fd_inode().
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Reviewed-by: Hyunchul Lee <hyc.lee@gmail.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
-rw-r--r-- | fs/ksmbd/smb2pdu.c | 2 | ||||
-rw-r--r-- | fs/ksmbd/vfs_cache.c | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c index e38fb68ded21..62cc0f95ab87 100644 --- a/fs/ksmbd/smb2pdu.c +++ b/fs/ksmbd/smb2pdu.c @@ -5758,8 +5758,10 @@ static int set_rename_info(struct ksmbd_work *work, struct ksmbd_file *fp, if (parent_fp) { if (parent_fp->daccess & FILE_DELETE_LE) { pr_err("parent dir is opened with delete access\n"); + ksmbd_fd_put(work, parent_fp); return -ESHARE; } + ksmbd_fd_put(work, parent_fp); } next: return smb2_rename(work, fp, user_ns, rename_info, diff --git a/fs/ksmbd/vfs_cache.c b/fs/ksmbd/vfs_cache.c index 0974d2e972b9..c4d59d2735f0 100644 --- a/fs/ksmbd/vfs_cache.c +++ b/fs/ksmbd/vfs_cache.c @@ -496,6 +496,7 @@ struct ksmbd_file *ksmbd_lookup_fd_inode(struct inode *inode) list_for_each_entry(lfp, &ci->m_fp_list, node) { if (inode == file_inode(lfp->filp)) { atomic_dec(&ci->m_count); + lfp = ksmbd_fp_get(lfp); read_unlock(&ci->m_lock); return lfp; } |