mkdir-dup test flapping

Andrew Bartlett abartlet at samba.org
Fri Mar 11 19:27:11 UTC 2016


On Thu, 2016-03-10 at 16:49 -0800, Jeremy Allison wrote:
> On Fri, Mar 11, 2016 at 01:37:17PM +1300, Andrew Bartlett wrote:
> > 
> > Isn't there still a race between whatever code first calls stat()
> > and
> > fills in smb_dname->st and the fstat() in vfs_stat_fsp()?
> > 
> > The directory could have been crated by the time we enter this
> > function, but not be chowned() until just before vfs_stat_fsp().
> 
> There's always the possibility of a race with 2 clients
> talking to different smbd's.
> 
> The code is trying to ensure that after it's done
> an open(dname, O_DIRECTORY) that the handle is
> pointing to the same file stat that came into
> the function - to make sure no one did a directory
> rename or rmdir/mkdir in between.
> 
> We need that so fsp->file_id is correct (and
> we can detect if the underlying dir changed).
> fsp is passed into the fd_open() -> open()
> so we need it to match (a VFS module might
> use it). Chicken and egg problem.
> 
> > Is there anything that checking the file ownership (rather than
> > checking the IS_DIR and dev/inode) is protecting?  Why do we stat()
> > this twice in any case?
> 
> Actually, checking the file ownership - probably
> not. The actual open itself is safe enough as underlying
> file system perms protect us. I remember having check_same_stat()
> already around so re-used it. check_same_dev_ino() is
> almost certainly safe enough and is used inside
> open_file_ntcreate() in the same place.

With this patch we pass > 10 autobuilds on the Catalyst Cloud, either
succeeding or failing on later tests (mostly that...).

Can you look over this carefully for me please?

Thanks,

Andrew Bartlett

-- 
Andrew Bartlett                       http://samba.org/~abartlet/
Authentication Developer, Samba Team  http://samba.org
Samba Developer, Catalyst IT          http://catalyst.net.nz/services/samba


-------------- next part --------------
A non-text attachment was scrubbed...
Name: samba.git-475a812828c00fd6383bade37b000b17d17e2f90.patch
Type: text/x-patch
Size: 1732 bytes
Desc: not available
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20160312/d549ffdf/samba.git-475a812828c00fd6383bade37b000b17d17e2f90.bin>


More information about the samba-technical mailing list