Fix SGID problem
authorcharles <charles>
Thu, 25 May 2006 01:26:57 +0000 (01:26 +0000)
committercharles <charles>
Thu, 25 May 2006 01:26:57 +0000 (01:26 +0000)
yaffs_fs.c

index f28a6e8dac80b046dd4782627a6ca8dddc46f380..08494c8fd9739c35da973eaf8fab88af7ef98d85 100644 (file)
@@ -31,7 +31,7 @@
  */
 
 const char *yaffs_fs_c_version =
  */
 
 const char *yaffs_fs_c_version =
-    "$Id: yaffs_fs.c,v 1.48 2006-05-21 09:39:12 charles Exp $";
+    "$Id: yaffs_fs.c,v 1.49 2006-05-25 01:26:57 charles Exp $";
 extern const char *yaffs_guts_c_version;
 
 #include <linux/config.h>
 extern const char *yaffs_guts_c_version;
 
 #include <linux/config.h>
@@ -910,6 +910,9 @@ static int yaffs_mknod(struct inode *dir, struct dentry *dentry, int mode,
        int error = -ENOSPC;
        uid_t uid = current->fsuid;
        gid_t gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->fsgid;
        int error = -ENOSPC;
        uid_t uid = current->fsuid;
        gid_t gid = (dir->i_mode & S_ISGID) ? dir->i_gid : current->fsgid;
+       
+       if((dir->i_mode & S_ISGID) && S_ISDIR(mode))
+               mode |= S_ISGID;
 
        if (parent) {
                T(YAFFS_TRACE_OS,
 
        if (parent) {
                T(YAFFS_TRACE_OS,