Patchwork [10/11] cifs: on multises mount, set ownership to current_fsuid/current_fsgid

login
register
mail settings
Submitter Jeff Layton
Date April 20, 2010, 8:07 p.m.
Message ID <1271794039-22787-11-git-send-email-jlayton@redhat.com>
Download mbox | patch
Permalink /patch/50566/
State New
Headers show

Comments

Jeff Layton - April 20, 2010, 8:07 p.m.
...when unix extensions aren't enabled. This makes everything on
the mount appear to be owned by the current user.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
 fs/cifs/inode.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

Patch

diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c
index 100ad85..d425d08 100644
--- a/fs/cifs/inode.c
+++ b/fs/cifs/inode.c
@@ -1661,11 +1661,19 @@  check_inval:
 int cifs_getattr(struct vfsmount *mnt, struct dentry *dentry,
 	struct kstat *stat)
 {
+	struct cifs_sb_info *cifs_sb = CIFS_SB(dentry->d_sb);
+	struct cifsTconInfo *tcon = cifs_sb_tcon(cifs_sb);
 	int err = cifs_revalidate_dentry(dentry);
+
 	if (!err) {
 		generic_fillattr(dentry->d_inode, stat);
 		stat->blksize = CIFS_MAX_MSGSIZE;
 		stat->ino = CIFS_I(dentry->d_inode)->uniqueid;
+		if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MULTISES &&
+		    !tcon->unix_ext) {
+			stat->uid = current_fsuid();
+			stat->gid = current_fsgid();
+		}
 	}
 	return err;
 }