From: Jean-Pierre A. <jp...@us...> - 2009-09-18 16:31:56
|
Update of /cvsroot/ntfs-3g/ntfs-3g/src In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv10797/ntfs-3g/src Modified Files: Tag: PERMISSION_HANDLING_BRANCH ntfs-3g.c Log Message: Avoided a double opening of an inode in create() Index: ntfs-3g.c =================================================================== RCS file: /cvsroot/ntfs-3g/ntfs-3g/src/ntfs-3g.c,v retrieving revision 1.64.2.116 retrieving revision 1.64.2.117 diff -u -d -r1.64.2.116 -r1.64.2.117 --- ntfs-3g.c 18 Sep 2009 16:28:22 -0000 1.64.2.116 +++ ntfs-3g.c 18 Sep 2009 16:31:46 -0000 1.64.2.117 @@ -1464,9 +1464,17 @@ && (ni->flags & FILE_ATTR_ENCRYPTED)) fi->fh |= CLOSE_ENCRYPTED; NInoSetDirty(ni); + /* + * closing ni will necessitate to open dir_ni to + * synchronize the index, which will update the change + * time again. Better avoid a dangerous double opening. + */ + ntfs_fuse_update_times(dir_ni, NTFS_UPDATE_MCTIME); + if (ntfs_inode_close(dir_ni)) + set_fuse_error(&res); + dir_ni = (ntfs_inode*)NULL; if (ntfs_inode_close(ni)) set_fuse_error(&res); - ntfs_fuse_update_times(dir_ni, NTFS_UPDATE_MCTIME); } else res = -errno; #if POSIXACLS |