set gid/uid to 0 in ofd_release_sr
authorYiannis Pericleous <yiannos@agora2.fsl.cs.sunysb.edu>
Wed, 23 May 2007 22:43:40 +0000 (18:43 -0400)
committerRachita Kothiyal <rachita@dewey.fsl.cs.sunysb.edu>
Thu, 1 May 2008 23:02:29 +0000 (19:02 -0400)
fs/unionfs/odf.c

index 8ad279f5336e11662d30481ece4b3725b1658a23..1d4816bc04da0de754f080d1c9ab7fd6bb35d984 100644 (file)
@@ -367,6 +367,8 @@ int odf_release_sr(struct inode *inode)
        struct odf_dentry_info *odi_sr, *odi_rc;
        char name[ODF_INAME_LEN];
        int err = 0;
+       uid_t olduid = current->fsuid;
+       gid_t oldgid = current->fsgid;
 
        odi_sr = UNIONFS_SB(inode->i_sb)->odf->odi_sr;
        odi_rc = UNIONFS_SB(inode->i_sb)->odf->odi_rc;
@@ -399,8 +401,12 @@ int odf_release_sr(struct inode *inode)
        }
 
        lock_rename(old_dentry->d_parent, new_dentry->d_parent);
+       current->fsuid = 0;
+       current->fsgid = 0;
        err = vfs_rename(old_dentry->d_parent->d_inode, old_dentry,
                                new_dentry->d_parent->d_inode, new_dentry);
+       current->fsuid = olduid;
+       current->fsgid = oldgid;
        unlock_rename(old_dentry->d_parent, new_dentry->d_parent);
 
 out_unlock: