[Samba] Re: Issues with cifs mounts following Samba upgrade to 3.0.23a

Jeremy Allison jra at samba.org
Wed Aug 2 01:36:45 GMT 2006


On Tue, Aug 01, 2006 at 08:28:57PM -0300, Andreas Hasenack wrote:
> On Tuesday 01 August 2006 17:47, Jeremy Allison wrote:
> > On Tue, Aug 01, 2006 at 08:18:42PM +0000, Damian Sinclair wrote:
> > >  I guess there's a bit of concern that this problem will cause a fair
> > > number of systems to stop working in a way that isn't entirely easy to
> > > diagnose or resolve, so causing a lot of frustration. I have no idea how
> > > the community handles issues like these, but have the samba team notified
> > > the relevant repository and distro managers about the bug?
> >
> > I'm sorry about the problem but fixed it as soon as I knew about it,
> > and we'll be releasing a 3.0.23b asap to fix this issue. Package
> > maintainers for Samba on distros should be on samba-technical, so
> > we haven't done any asynchronous notification - we only do that
> > for security bugs via vendor-sec.
> 
> Why not publish a patch for 3.0.23a? Many people find it easier to apply a 
> patch than to browse svn and fetch patches from it (once they know which 
> revision as the correct fix).

Here's the patch for 3.0.23a.

Jeremy.
-------------- next part --------------
Index: smbd/open.c
===================================================================
--- smbd/open.c	(revision 17258)
+++ smbd/open.c	(revision 17259)
@@ -1204,14 +1204,12 @@
 			/* If file exists replace/overwrite. If file doesn't
 			 * exist create. */
 			flags2 |= (O_CREAT | O_TRUNC);
-			open_access_mask |= FILE_WRITE_DATA; /* This will cause oplock breaks. */
 			break;
 
 		case FILE_OVERWRITE_IF:
 			/* If file exists replace/overwrite. If file doesn't
 			 * exist create. */
 			flags2 |= (O_CREAT | O_TRUNC);
-			open_access_mask |= FILE_WRITE_DATA; /* This will cause oplock breaks. */
 			break;
 
 		case FILE_OPEN:
@@ -1238,7 +1236,6 @@
 				return NULL;
 			}
 			flags2 |= O_TRUNC;
-			open_access_mask |= FILE_WRITE_DATA; /* This will cause oplock breaks. */
 			break;
 
 		case FILE_CREATE:
@@ -1292,9 +1289,6 @@
 	/* This is a nasty hack - must fix... JRA. */
 	if (access_mask == MAXIMUM_ALLOWED_ACCESS) {
 		open_access_mask = access_mask = FILE_GENERIC_ALL;
-		if (flags2 & O_TRUNC) {
-			open_access_mask |= FILE_WRITE_DATA; /* This will cause oplock breaks. */
-		}
 	}
 
 	/*
@@ -1302,7 +1296,12 @@
 	 */
 
 	se_map_generic(&access_mask, &file_generic_mapping);
+	open_access_mask = access_mask;
 
+	if (flags2 & O_TRUNC) {
+		open_access_mask |= FILE_WRITE_DATA; /* This will cause oplock breaks. */
+	}
+
 	DEBUG(10, ("open_file_ntcreate: fname=%s, after mapping "
 		   "access_mask=0x%x\n", fname, access_mask ));
 
@@ -1539,9 +1538,11 @@
 		unx_mode = 0777;
 	}
 
-	DEBUG(4,("calling open_file with flags=0x%X flags2=0x%X mode=0%o\n",
+	DEBUG(4,("calling open_file with flags=0x%X flags2=0x%X mode=0%o, "
+		"access_mask = 0x%x, open_access_mask = 0x%x\n",
 		 (unsigned int)flags, (unsigned int)flags2,
-		 (unsigned int)unx_mode));
+		 (unsigned int)unx_mode, (unsigned int)access_mask,
+		 (unsigned int)open_access_mask));
 
 	/*
 	 * open_file strips any O_TRUNC flags itself.


More information about the samba mailing list