]> Pileus Git - ~andy/linux/blobdiff - fs/fuse/dir.c
Merge tag 'vfio-for-v3.8-v2' of git://github.com/awilliam/linux-vfio
[~andy/linux] / fs / fuse / dir.c
index 324bc085053447665eccaacdc8fcf169cb418413..b7c09f9eb40cd7ac26f626a5bcadd26aeaf06ec5 100644 (file)
@@ -818,8 +818,8 @@ static void fuse_fillattr(struct inode *inode, struct fuse_attr *attr,
        stat->ino = attr->ino;
        stat->mode = (inode->i_mode & S_IFMT) | (attr->mode & 07777);
        stat->nlink = attr->nlink;
-       stat->uid = attr->uid;
-       stat->gid = attr->gid;
+       stat->uid = make_kuid(&init_user_ns, attr->uid);
+       stat->gid = make_kgid(&init_user_ns, attr->gid);
        stat->rdev = inode->i_rdev;
        stat->atime.tv_sec = attr->atime;
        stat->atime.tv_nsec = attr->atimensec;
@@ -1007,12 +1007,12 @@ int fuse_allow_task(struct fuse_conn *fc, struct task_struct *task)
        rcu_read_lock();
        ret = 0;
        cred = __task_cred(task);
-       if (cred->euid == fc->user_id &&
-           cred->suid == fc->user_id &&
-           cred->uid  == fc->user_id &&
-           cred->egid == fc->group_id &&
-           cred->sgid == fc->group_id &&
-           cred->gid  == fc->group_id)
+       if (uid_eq(cred->euid, fc->user_id) &&
+           uid_eq(cred->suid, fc->user_id) &&
+           uid_eq(cred->uid,  fc->user_id) &&
+           gid_eq(cred->egid, fc->group_id) &&
+           gid_eq(cred->sgid, fc->group_id) &&
+           gid_eq(cred->gid,  fc->group_id))
                ret = 1;
        rcu_read_unlock();
 
@@ -1306,9 +1306,9 @@ static void iattr_to_fattr(struct iattr *iattr, struct fuse_setattr_in *arg)
        if (ivalid & ATTR_MODE)
                arg->valid |= FATTR_MODE,   arg->mode = iattr->ia_mode;
        if (ivalid & ATTR_UID)
-               arg->valid |= FATTR_UID,    arg->uid = iattr->ia_uid;
+               arg->valid |= FATTR_UID,    arg->uid = from_kuid(&init_user_ns, iattr->ia_uid);
        if (ivalid & ATTR_GID)
-               arg->valid |= FATTR_GID,    arg->gid = iattr->ia_gid;
+               arg->valid |= FATTR_GID,    arg->gid = from_kgid(&init_user_ns, iattr->ia_gid);
        if (ivalid & ATTR_SIZE)
                arg->valid |= FATTR_SIZE,   arg->size = iattr->ia_size;
        if (ivalid & ATTR_ATIME) {