[PATCH samba 1/1] smbd: remove redundant rename destination open check
ChenXiaoSong <[email protected]>
| Newsgroups | org.kernel.vger.linux-cifs |
|---|---|
| Message-ID | <[email protected]> |
From: ChenXiaoSong <[email protected]> It already checks the destination in smbd_smb2_setinfo_rename_dst_check() or smbd_smb2_setinfo_rename_dst_delay_done(). Link[1]: https://lore.kernel.org/linux-cifs/[email protected]/ Link[2]: https://lore.kernel.org/linux-cifs/[email protected]/ Suggested-by: Ralph Boehme <[email protected]> Signed-off-by: ChenXiaoSong <[email protected]> --- source3/smbd/smb2_reply.c | 43 --------------------------------------- 1 file changed, 43 deletions(-) diff --git a/source3/smbd/smb2_reply.c b/source3/smbd/smb2_reply.c index 6bdc02c2374..5209c0046de 100644 --- a/source3/smbd/smb2_reply.c +++ b/source3/smbd/smb2_reply.c @@ -1312,31 +1312,6 @@ static void notify_rename(struct connection_struct *conn, TALLOC_FREE(parent_dir_dst); } -struct rename_check_open_state { - struct files_struct *dst_fsp; - struct file_id fileid; -}; - -static struct files_struct *rename_check_open_fn(struct files_struct *fsp, - void *private_data) -{ - struct rename_check_open_state *state = private_data; - - if (fsp == state->dst_fsp) { - return NULL; - } - - if (!fsp->fsp_flags.is_fsa) { - return NULL; - } - - if (!file_id_equal(&fsp->file_id, &state->fileid)) { - return NULL; - } - - return fsp; -} - /**************************************************************************** Rename an open file - given an fsp. ****************************************************************************/ @@ -1483,12 +1458,6 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, } if (VALID_STAT(smb_fname_dst->st)) { - - struct rename_check_open_state check_state = { - .dst_fsp = smb_fname_dst->fsp, - }; - struct files_struct *found_open = NULL; - if (!replace_if_exists) { DBG_NOTICE("dest exists doing rename " "%s -> %s\n", @@ -1497,18 +1466,6 @@ NTSTATUS rename_internals_fsp(connection_struct *conn, status = NT_STATUS_OBJECT_NAME_COLLISION; goto out; } - - check_state.fileid = vfs_file_id_from_sbuf(conn, - &smb_fname_dst->st); - - found_open = files_forall(conn->sconn, - rename_check_open_fn, - &check_state); - if (found_open != NULL) { - DBG_NOTICE("Target file open\n"); - status = NT_STATUS_ACCESS_DENIED; - goto out; - } } status = can_rename(conn, fsp, attrs); -- 2.54.0