The Samba-Bugzilla – Attachment 6175 Details for
Bug 7892
open_file_fchmod() leaves a stale lock.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
git-am patch for 3.5.next
0001-Fix-bug-7892-open_file_fchmod-leaves-a-stale-lock.patch (text/plain), 5.42 KB, created by
Jeremy Allison
on 2010-12-28 19:26:59 UTC
(
hide
)
Description:
git-am patch for 3.5.next
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2010-12-28 19:26:59 UTC
Size:
5.42 KB
patch
obsolete
>From 1899c9c01a6ca7e24077cd80009ea73601924baa Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Tue, 28 Dec 2010 17:24:27 -0800 >Subject: [PATCH] Fix bug #7892 - open_file_fchmod() leaves a stale lock. > >--- > source3/include/proto.h | 3 +-- > source3/smbd/dosmode.c | 11 ++++------- > source3/smbd/open.c | 40 ++++------------------------------------ > source3/smbd/posix_acls.c | 4 ++-- > 4 files changed, 11 insertions(+), 47 deletions(-) > >diff --git a/source3/include/proto.h b/source3/include/proto.h >index 5dfd046..bfcd012 100644 >--- a/source3/include/proto.h >+++ b/source3/include/proto.h >@@ -6630,10 +6630,9 @@ bool map_open_params_to_ntcreate(const struct smb_filename *smb_fname, > uint32 *pshare_mode, > uint32 *pcreate_disposition, > uint32 *pcreate_options); >-NTSTATUS open_file_fchmod(struct smb_request *req, connection_struct *conn, >+NTSTATUS open_file_fchmod(connection_struct *conn, > struct smb_filename *smb_fname, > files_struct **result); >-NTSTATUS close_file_fchmod(struct smb_request *req, files_struct *fsp); > NTSTATUS create_directory(connection_struct *conn, struct smb_request *req, > struct smb_filename *smb_dname); > void msg_file_was_renamed(struct messaging_context *msg, >diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c >index c061b21..74f54a0 100644 >--- a/source3/smbd/dosmode.c >+++ b/source3/smbd/dosmode.c >@@ -411,7 +411,7 @@ static bool set_ea_dos_attribute(connection_struct *conn, > * are not violating security in doing the setxattr. > */ > >- if (!NT_STATUS_IS_OK(open_file_fchmod(NULL, conn, smb_fname, >+ if (!NT_STATUS_IS_OK(open_file_fchmod(conn, smb_fname, > &fsp))) > return ret; > become_root(); >@@ -421,7 +421,7 @@ static bool set_ea_dos_attribute(connection_struct *conn, > ret = true; > } > unbecome_root(); >- close_file_fchmod(NULL, fsp); >+ close_file(NULL, fsp, NORMAL_CLOSE); > return ret; > } > DEBUG(10,("set_ea_dos_attribute: set EA 0x%x on file %s\n", >@@ -820,18 +820,15 @@ int file_set_dosmode(connection_struct *conn, struct smb_filename *smb_fname, > * We need to open the file with write access whilst > * still in our current user context. This ensures we > * are not violating security in doing the fchmod. >- * This file open does *not* break any oplocks we are >- * holding. We need to review this.... may need to >- * break batch oplocks open by others. JRA. > */ > files_struct *fsp; >- if (!NT_STATUS_IS_OK(open_file_fchmod(NULL, conn, smb_fname, >+ if (!NT_STATUS_IS_OK(open_file_fchmod(conn, smb_fname, > &fsp))) > return -1; > become_root(); > ret = SMB_VFS_FCHMOD(fsp, unixmode); > unbecome_root(); >- close_file_fchmod(NULL, fsp); >+ close_file(NULL, fsp, NORMAL_CLOSE); > if (!newfile) { > notify_fname(conn, NOTIFY_ACTION_MODIFIED, > FILE_NOTIFY_CHANGE_ATTRIBUTES, >diff --git a/source3/smbd/open.c b/source3/smbd/open.c >index b85b0f7..f7ed495 100644 >--- a/source3/smbd/open.c >+++ b/source3/smbd/open.c >@@ -2271,23 +2271,15 @@ static NTSTATUS open_file_ntcreate(connection_struct *conn, > Open a file for for write to ensure that we can fchmod it. > ****************************************************************************/ > >-NTSTATUS open_file_fchmod(struct smb_request *req, connection_struct *conn, >+NTSTATUS open_file_fchmod(connection_struct *conn, > struct smb_filename *smb_fname, > files_struct **result) > { >- files_struct *fsp = NULL; >- NTSTATUS status; >- > if (!VALID_STAT(smb_fname->st)) { > return NT_STATUS_INVALID_PARAMETER; > } > >- status = file_new(req, conn, &fsp); >- if(!NT_STATUS_IS_OK(status)) { >- return status; >- } >- >- status = SMB_VFS_CREATE_FILE( >+ return SMB_VFS_CREATE_FILE( > conn, /* conn */ > NULL, /* req */ > 0, /* root_dir_fid */ >@@ -2298,36 +2290,12 @@ NTSTATUS open_file_fchmod(struct smb_request *req, connection_struct *conn, > FILE_OPEN, /* create_disposition*/ > 0, /* create_options */ > 0, /* file_attributes */ >- 0, /* oplock_request */ >+ INTERNAL_OPEN_ONLY, /* oplock_request */ > 0, /* allocation_size */ > NULL, /* sd */ > NULL, /* ea_list */ >- &fsp, /* result */ >+ result, /* result */ > NULL); /* pinfo */ >- >- /* >- * This is not a user visible file open. >- * Don't set a share mode. >- */ >- >- if (!NT_STATUS_IS_OK(status)) { >- file_free(req, fsp); >- return status; >- } >- >- *result = fsp; >- return NT_STATUS_OK; >-} >- >-/**************************************************************************** >- Close the fchmod file fd - ensure no locks are lost. >-****************************************************************************/ >- >-NTSTATUS close_file_fchmod(struct smb_request *req, files_struct *fsp) >-{ >- NTSTATUS status = fd_close(fsp); >- file_free(req, fsp); >- return status; > } > > static NTSTATUS mkdir_internal(connection_struct *conn, >diff --git a/source3/smbd/posix_acls.c b/source3/smbd/posix_acls.c >index 39b1c0e..aaca9f4 100644 >--- a/source3/smbd/posix_acls.c >+++ b/source3/smbd/posix_acls.c >@@ -3599,7 +3599,7 @@ int try_chown(connection_struct *conn, struct smb_filename *smb_fname, > return -1; > } > >- if (!NT_STATUS_IS_OK(open_file_fchmod(NULL, conn, smb_fname, &fsp))) { >+ if (!NT_STATUS_IS_OK(open_file_fchmod(conn, smb_fname, &fsp))) { > return -1; > } > >@@ -3618,7 +3618,7 @@ int try_chown(connection_struct *conn, struct smb_filename *smb_fname, > } > unbecome_root(); > >- close_file_fchmod(NULL, fsp); >+ close_file(NULL, fsp, NORMAL_CLOSE); > > return ret; > } >-- >1.7.0.4 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
vl
:
review+
Actions:
View
Attachments on
bug 7892
: 6175 |
6176