]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - fs/proc/base.c
KVM: arm64: vgic-v3: Add ICV_IAR1_EL1 handler
[mirror_ubuntu-zesty-kernel.git] / fs / proc / base.c
index 87c9a9aacda3601e2686e239243f447728137943..4d8dec07771fe45b625d401e2651146463844ce9 100644 (file)
@@ -691,10 +691,17 @@ int proc_setattr(struct dentry *dentry, struct iattr *attr)
 {
        int error;
        struct inode *inode = d_inode(dentry);
+       struct user_namespace *s_user_ns;
 
        if (attr->ia_valid & ATTR_MODE)
                return -EPERM;
 
+       /* Don't let anyone mess with weird proc files */
+       s_user_ns = inode->i_sb->s_user_ns;
+       if (!kuid_has_mapping(s_user_ns, inode->i_uid) ||
+           !kgid_has_mapping(s_user_ns, inode->i_gid))
+               return -EPERM;
+
        error = setattr_prepare(dentry, attr);
        if (error)
                return error;
@@ -1958,7 +1965,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
        down_read(&mm->mmap_sem);
        vma = find_exact_vma(mm, vm_start, vm_end);
        if (vma && vma->vm_file) {
-               *path = vma->vm_file->f_path;
+               *path = vma_pr_or_file(vma)->f_path;
                path_get(path);
                rc = 0;
        }