]> Pileus Git - ~andy/linux/blobdiff - fs/cifs/cifssmb.c
Merge tag 'vfio-v3.9-rc1' of git://github.com/awilliam/linux-vfio
[~andy/linux] / fs / cifs / cifssmb.c
index 76d0d29988507625c4d679b00e2a7cf695e86630..00e12f2d626b92c97540950f8dad5fa70bb4d485 100644 (file)
@@ -5819,8 +5819,14 @@ static void
 cifs_fill_unix_set_info(FILE_UNIX_BASIC_INFO *data_offset,
                        const struct cifs_unix_set_info_args *args)
 {
+       u64 uid = NO_CHANGE_64, gid = NO_CHANGE_64;
        u64 mode = args->mode;
 
+       if (uid_valid(args->uid))
+               uid = from_kuid(&init_user_ns, args->uid);
+       if (gid_valid(args->gid))
+               gid = from_kgid(&init_user_ns, args->gid);
+
        /*
         * Samba server ignores set of file size to zero due to bugs in some
         * older clients, but we should be precise - we use SetFileSize to
@@ -5833,8 +5839,8 @@ cifs_fill_unix_set_info(FILE_UNIX_BASIC_INFO *data_offset,
        data_offset->LastStatusChange = cpu_to_le64(args->ctime);
        data_offset->LastAccessTime = cpu_to_le64(args->atime);
        data_offset->LastModificationTime = cpu_to_le64(args->mtime);
-       data_offset->Uid = cpu_to_le64(args->uid);
-       data_offset->Gid = cpu_to_le64(args->gid);
+       data_offset->Uid = cpu_to_le64(uid);
+       data_offset->Gid = cpu_to_le64(gid);
        /* better to leave device as zero when it is  */
        data_offset->DevMajor = cpu_to_le64(MAJOR(args->device));
        data_offset->DevMinor = cpu_to_le64(MINOR(args->device));