summaryrefslogtreecommitdiffstats
path: root/target/linux/generic/patches-4.4/051-0003-ovl-don-t-copy-up-opaqueness.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic/patches-4.4/051-0003-ovl-don-t-copy-up-opaqueness.patch')
-rw-r--r--target/linux/generic/patches-4.4/051-0003-ovl-don-t-copy-up-opaqueness.patch73
1 files changed, 0 insertions, 73 deletions
diff --git a/target/linux/generic/patches-4.4/051-0003-ovl-don-t-copy-up-opaqueness.patch b/target/linux/generic/patches-4.4/051-0003-ovl-don-t-copy-up-opaqueness.patch
deleted file mode 100644
index da9e380a32..0000000000
--- a/target/linux/generic/patches-4.4/051-0003-ovl-don-t-copy-up-opaqueness.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 0956254a2d5b9e2141385514553aeef694dfe3b5 Mon Sep 17 00:00:00 2001
-From: Miklos Szeredi <mszeredi@redhat.com>
-Date: Mon, 8 Aug 2016 15:08:49 +0200
-Subject: [PATCH] ovl: don't copy up opaqueness
-
-When a copy up of a directory occurs which has the opaque xattr set, the
-xattr remains in the upper directory. The immediate behavior with overlayfs
-is that the upper directory is not treated as opaque, however after a
-remount the opaque flag is used and upper directory is treated as opaque.
-This causes files created in the lower layer to be hidden when using
-multiple lower directories.
-
-Fix by not copying up the opaque flag.
-
-To reproduce:
-
- ----8<---------8<---------8<---------8<---------8<---------8<----
-mkdir -p l/d/s u v w mnt
-mount -t overlay overlay -olowerdir=l,upperdir=u,workdir=w mnt
-rm -rf mnt/d/
-mkdir -p mnt/d/n
-umount mnt
-mount -t overlay overlay -olowerdir=u:l,upperdir=v,workdir=w mnt
-touch mnt/d/foo
-umount mnt
-mount -t overlay overlay -olowerdir=u:l,upperdir=v,workdir=w mnt
-ls mnt/d
- ----8<---------8<---------8<---------8<---------8<---------8<----
-
-output should be: "foo n"
-
-Reported-by: Derek McGowan <dmcg@drizz.net>
-Link: https://bugzilla.kernel.org/show_bug.cgi?id=151291
-Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
-Cc: <stable@vger.kernel.org>
----
- fs/overlayfs/copy_up.c | 2 ++
- fs/overlayfs/inode.c | 2 +-
- fs/overlayfs/overlayfs.h | 1 +
- 3 files changed, 4 insertions(+), 1 deletion(-)
-
---- a/fs/overlayfs/copy_up.c
-+++ b/fs/overlayfs/copy_up.c
-@@ -48,6 +48,8 @@ int ovl_copy_xattr(struct dentry *old, s
- }
-
- for (name = buf; name < (buf + list_size); name += strlen(name) + 1) {
-+ if (ovl_is_private_xattr(name))
-+ continue;
- retry:
- size = vfs_getxattr(old, name, value, value_size);
- if (size == -ERANGE)
---- a/fs/overlayfs/inode.c
-+++ b/fs/overlayfs/inode.c
-@@ -219,7 +219,7 @@ static int ovl_readlink(struct dentry *d
- }
-
-
--static bool ovl_is_private_xattr(const char *name)
-+bool ovl_is_private_xattr(const char *name)
- {
- return strncmp(name, OVL_XATTR_PRE_NAME, OVL_XATTR_PRE_LEN) == 0;
- }
---- a/fs/overlayfs/overlayfs.h
-+++ b/fs/overlayfs/overlayfs.h
-@@ -175,6 +175,7 @@ ssize_t ovl_getxattr(struct dentry *dent
- ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size);
- int ovl_removexattr(struct dentry *dentry, const char *name);
- struct inode *ovl_d_select_inode(struct dentry *dentry, unsigned file_flags);
-+bool ovl_is_private_xattr(const char *name);
-
- struct inode *ovl_new_inode(struct super_block *sb, umode_t mode,
- struct ovl_entry *oe);