]> Pileus Git - ~andy/linux/commitdiff
cifs: Convert struct cifs_sb_info to use kuids and kgids
authorEric W. Biederman <ebiederm@xmission.com>
Wed, 6 Feb 2013 09:20:20 +0000 (01:20 -0800)
committerEric W. Biederman <ebiederm@xmission.com>
Wed, 13 Feb 2013 15:28:54 +0000 (07:28 -0800)
Cc: Steve French <smfrench@gmail.com>
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
fs/cifs/cifs_fs_sb.h
fs/cifs/cifsfs.c
fs/cifs/connect.c
fs/cifs/misc.c

index c865bfdfe8190e19cdc6052e398ac1b2598783e6..37e4a72a7d1c46389c35736d66f1636891874ba4 100644 (file)
@@ -55,10 +55,10 @@ struct cifs_sb_info {
        unsigned int wsize;
        unsigned long actimeo; /* attribute cache timeout (jiffies) */
        atomic_t active;
-       uid_t   mnt_uid;
-       gid_t   mnt_gid;
-       uid_t   mnt_backupuid;
-       gid_t   mnt_backupgid;
+       kuid_t  mnt_uid;
+       kgid_t  mnt_gid;
+       kuid_t  mnt_backupuid;
+       kgid_t  mnt_backupgid;
        umode_t mnt_file_mode;
        umode_t mnt_dir_mode;
        unsigned int mnt_cifs_flags;
index f653835d067b3323a1eea5f32774326a4937ac09..17590731786d09d16c4356fe46ec006611645fb8 100644 (file)
@@ -376,13 +376,15 @@ cifs_show_options(struct seq_file *s, struct dentry *root)
                                   (int)(srcaddr->sa_family));
        }
 
-       seq_printf(s, ",uid=%u", cifs_sb->mnt_uid);
+       seq_printf(s, ",uid=%u",
+                  from_kuid_munged(&init_user_ns, cifs_sb->mnt_uid));
        if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_OVERR_UID)
                seq_printf(s, ",forceuid");
        else
                seq_printf(s, ",noforceuid");
 
-       seq_printf(s, ",gid=%u", cifs_sb->mnt_gid);
+       seq_printf(s, ",gid=%u",
+                  from_kgid_munged(&init_user_ns, cifs_sb->mnt_gid));
        if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_OVERR_GID)
                seq_printf(s, ",forcegid");
        else
@@ -437,9 +439,13 @@ cifs_show_options(struct seq_file *s, struct dentry *root)
        if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_PERM)
                seq_printf(s, ",noperm");
        if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_BACKUPUID)
-               seq_printf(s, ",backupuid=%u", cifs_sb->mnt_backupuid);
+               seq_printf(s, ",backupuid=%u",
+                          from_kuid_munged(&init_user_ns,
+                                           cifs_sb->mnt_backupuid));
        if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_BACKUPGID)
-               seq_printf(s, ",backupgid=%u", cifs_sb->mnt_backupgid);
+               seq_printf(s, ",backupgid=%u",
+                          from_kgid_munged(&init_user_ns,
+                                           cifs_sb->mnt_backupgid));
 
        seq_printf(s, ",rsize=%u", cifs_sb->rsize);
        seq_printf(s, ",wsize=%u", cifs_sb->wsize);
index 9bd13a75602dfe5a4f23736ed363bbb447b861b1..01279b8f5d1fb955a292e9e0b7cccacb2986bde3 100644 (file)
@@ -2743,7 +2743,7 @@ compare_mount_options(struct super_block *sb, struct cifs_mnt_data *mnt_data)
        if (new->rsize && new->rsize < old->rsize)
                return 0;
 
-       if (old->mnt_uid != new->mnt_uid || old->mnt_gid != new->mnt_gid)
+       if (!uid_eq(old->mnt_uid, new->mnt_uid) || !gid_eq(old->mnt_gid, new->mnt_gid))
                return 0;
 
        if (old->mnt_file_mode != new->mnt_file_mode ||
index 3a00c0d0cead9d6836f4e449f679a6909f14a89e..1b15bf839f376c4611c06a4166281a4299acdce4 100644 (file)
@@ -569,7 +569,7 @@ bool
 backup_cred(struct cifs_sb_info *cifs_sb)
 {
        if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_BACKUPUID) {
-               if (cifs_sb->mnt_backupuid == current_fsuid())
+               if (uid_eq(cifs_sb->mnt_backupuid, current_fsuid()))
                        return true;
        }
        if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_BACKUPGID) {