[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.