summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarsh Prateek Bora <harsh@linux.vnet.ibm.com>2010-08-18 06:01:52 (GMT)
committerEric Van Hensbergen <ericvh@gmail.com>2010-10-28 14:08:45 (GMT)
commit7c7298cffc8f4417c95117c2a432f962c066499d (patch)
tree76557c0e621724ee32ddea2748f8b84681ae1ceb
parent8812a3d5f873e28cd08ec8afe328c4182b72db49 (diff)
downloadlinux-7c7298cffc8f4417c95117c2a432f962c066499d.tar.xz
fs/9p: mkdir fix for setting S_ISGID bit as per parent directory
The current implementation of 9p client mkdir function does not set the S_ISGID mode bit for the directory being created if the parent directory has this bit set. This patch fixes this problem so that the newly created directory inherits the gid from parent directory and not from the process creating this directory, when the S_ISGID bit is set in parent directory. Signed-off-by: Harsh Prateek Bora <harsh@linux.vnet.ibm.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
-rw-r--r--fs/9p/vfs_inode.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c
index 88efc16..c3d200d 100644
--- a/fs/9p/vfs_inode.c
+++ b/fs/9p/vfs_inode.c
@@ -876,6 +876,8 @@ static int v9fs_vfs_mkdir_dotl(struct inode *dir, struct dentry *dentry,
v9ses = v9fs_inode2v9ses(dir);
mode |= S_IFDIR;
+ if (dir->i_mode & S_ISGID)
+ mode |= S_ISGID;
dir_dentry = v9fs_dentry_from_dir_inode(dir);
dfid = v9fs_fid_lookup(dir_dentry);
if (IS_ERR(dfid)) {