Message ID | 20220228234833.10434-3-linkinjeon@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [1/4] ksmbd: remove internal.h include | expand |
On (22/03/01 08:48), Namjae Jeon wrote: > diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c > index 3151ab7d7410..03c3733e54e4 100644 > --- a/fs/ksmbd/smb2pdu.c > +++ b/fs/ksmbd/smb2pdu.c > @@ -5764,8 +5764,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); > } And also in ksmbd_validate_entry_in_use()? > 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; > } > -- > 2.25.1 >
2022-03-01 13:21 GMT+09:00, Sergey Senozhatsky <senozhatsky@chromium.org>: > On (22/03/01 08:48), Namjae Jeon wrote: >> diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c >> index 3151ab7d7410..03c3733e54e4 100644 >> --- a/fs/ksmbd/smb2pdu.c >> +++ b/fs/ksmbd/smb2pdu.c >> @@ -5764,8 +5764,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); >> } > > And also in ksmbd_validate_entry_in_use()? ksmbd_validate_entry_in_use() is removed in 4/4 patch. I need to change the order of the patches to avoid confusion. Thanks! > >> 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; >> } >> -- >> 2.25.1 >> >
diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c index 3151ab7d7410..03c3733e54e4 100644 --- a/fs/ksmbd/smb2pdu.c +++ b/fs/ksmbd/smb2pdu.c @@ -5764,8 +5764,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; }
Add missing increment reference count of parent fp in ksmbd_lookup_fd_inode(). Cc: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> --- fs/ksmbd/smb2pdu.c | 2 ++ fs/ksmbd/vfs_cache.c | 1 + 2 files changed, 3 insertions(+)