diff options
Diffstat (limited to 'fs/cifs/inode.c')
-rw-r--r-- | fs/cifs/inode.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index 737643940540..9638233964fc 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c | |||
@@ -247,15 +247,21 @@ cifs_unix_basic_to_fattr(struct cifs_fattr *fattr, FILE_UNIX_BASIC_INFO *info, | |||
247 | fattr->cf_uid = cifs_sb->mnt_uid; | 247 | fattr->cf_uid = cifs_sb->mnt_uid; |
248 | if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_OVERR_UID)) { | 248 | if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_OVERR_UID)) { |
249 | u64 id = le64_to_cpu(info->Uid); | 249 | u64 id = le64_to_cpu(info->Uid); |
250 | if (id < ((uid_t)-1)) | 250 | if (id < ((uid_t)-1)) { |
251 | fattr->cf_uid = id; | 251 | kuid_t uid = make_kuid(&init_user_ns, id); |
252 | if (uid_valid(uid)) | ||
253 | fattr->cf_uid = uid; | ||
254 | } | ||
252 | } | 255 | } |
253 | 256 | ||
254 | fattr->cf_gid = cifs_sb->mnt_gid; | 257 | fattr->cf_gid = cifs_sb->mnt_gid; |
255 | if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_OVERR_GID)) { | 258 | if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_OVERR_GID)) { |
256 | u64 id = le64_to_cpu(info->Gid); | 259 | u64 id = le64_to_cpu(info->Gid); |
257 | if (id < ((gid_t)-1)) | 260 | if (id < ((gid_t)-1)) { |
258 | fattr->cf_gid = id; | 261 | kgid_t gid = make_kgid(&init_user_ns, id); |
262 | if (gid_valid(gid)) | ||
263 | fattr->cf_gid = gid; | ||
264 | } | ||
259 | } | 265 | } |
260 | 266 | ||
261 | fattr->cf_nlink = le64_to_cpu(info->Nlinks); | 267 | fattr->cf_nlink = le64_to_cpu(info->Nlinks); |