Patch "ovl: setattr: check permissions before copy-up" has been added to the 4.4-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ovl: setattr: check permissions before copy-up
to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ovl-setattr-check-permissions-before-copy-up.patch
and it can be found in the queue-4.4 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
cf9a6784f7c1b5ee2b9159a1246e327c331c5697Mon Sep 17 00:00:00 2001
From: Miklos Szeredi <[email protected]>
Date: Fri, 11 Dec 2015 16:30:49 +0100
Subject: ovl: setattr: check permissions before copy-up
From: Miklos Szeredi <[email protected]>
commit cf9a6784f7c1b5ee2b9159a1246e327c331c5697 upstream.
Without this copy-up of a file can be forced, even without actually being allowed to do anything on the file.
[Arnd Bergmann] include <linux/pagemap.h> for PAGE_CACHE_SIZE (used by MAX_LFS_FILESIZE definition).
--- fs/overlayfs/inode.c | 13 +++++++++++++ fs/overlayfs/super.c | 2 ++ 2 files changed, 15 insertions(+)
fs/overlayfs/inode.c +13 -0
@@ -42,6 +42,19 @@ int ovl_setattr(struct dentry *dentry, sint err;struct dentry *upperdentry; +/* +* Check for permissions before trying to copy-up. This is redundant +* since it will be rechecked later by ->setattr() on upper dentry. But +* without this, copy-up can be triggered by just about anybody. +* +* We don't initialize inode->size, which just means that +* inode_newsize_ok() will always check against MAX_LFS_FILESIZE and not +* check for a swapfile (which this won't be anyway). +*/ + err =inode_change_ok (dentry->d_inode, attr); +if (err) +return err; + err =ovl_want_write (dentry);if (err) goto out;
fs/overlayfs/super.c +2 -0
@@ -9,6 +9,7 @@#include <linux/fs.h> #include <linux/namei.h> +#include <linux/pagemap.h> #include <linux/xattr.h> #include <linux/security.h> #include <linux/mount.h>
@@ -910,6 +911,7 @@ static int ovl_fill_super(struct super_b } sb->s_stack_depth =0 ; + sb->s_maxbytes =MAX_LFS_FILESIZE ;if (ufs->config.upperdir) {if (!ufs->config.workdir) {pr_err ("overlayfs: missing 'workdir'\n" );
Patches currently in stable-queue which might be from [email protected] are
queue-4.4/ovl-allow-zero-size-xattr.patch queue-4.4/ovl-root-copy-attr.patch queue-4.4/ovl-check-dentry-positiveness-in-ovl_cleanup_whiteouts.patch queue-4.4/ovl-setattr-check-permissions-before-copy-up.patch queue-4.4/ovl-use-a-minimal-buffer-in-ovl_copy_xattr.patch