From 0a156b79bc781362b4188bd7a84e0174c3e5b098 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 17 Apr 2018 16:22:15 +0200 Subject: [PATCH] drop 4.15 ovl broken patch --- ...vl-set-d-last-properly-during-lookup.patch | 81 ------------------- queue-4.15/series | 1 - 2 files changed, 82 deletions(-) delete mode 100644 queue-4.15/ovl-set-d-last-properly-during-lookup.patch diff --git a/queue-4.15/ovl-set-d-last-properly-during-lookup.patch b/queue-4.15/ovl-set-d-last-properly-during-lookup.patch deleted file mode 100644 index 513d73f25b6..00000000000 --- a/queue-4.15/ovl-set-d-last-properly-during-lookup.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 452061fd4521b2bf3225fc391dbe536e5f9c05e2 Mon Sep 17 00:00:00 2001 -From: Vivek Goyal -Date: Fri, 9 Mar 2018 15:44:41 -0500 -Subject: ovl: Set d->last properly during lookup - -From: Vivek Goyal - -commit 452061fd4521b2bf3225fc391dbe536e5f9c05e2 upstream. - -d->last signifies that this is the last layer we are looking into and there -is no more. And that means this allows for some optimzation opportunities -during lookup. For example, in ovl_lookup_single() we don't have to check -for opaque xattr of a directory is this is the last layer we are looking -into (d->last = true). - -But knowing for sure whether we are looking into last layer can be very -tricky. If redirects are not enabled, then we can look at poe->numlower and -figure out if the lookup we are about to is last layer or not. But if -redircts are enabled then it is possible poe->numlower suggests that we are -looking in last layer, but there is an absolute redirect present in found -element and that redirects us to a layer in root and that means lookup will -continue in lower layers further. - -For example, consider following. - -/upperdir/pure (opaque=y) -/upperdir/pure/foo (opaque=y,redirect=/bar) -/lowerdir/bar - -In this case pure is "pure upper". When we look for "foo", that time -poe->numlower=0. But that alone does not mean that we will not search for a -merge candidate in /lowerdir. Absolute redirect changes that. - -IOW, d->last should not be set just based on poe->numlower if redirects are -enabled. That can lead to setting d->last while it should not have and that -means we will not check for opaque xattr while we should have. - -So do this. - - - If redirects are not enabled, then continue to rely on poe->numlower - information to determine if it is last layer or not. - - - If redirects are enabled, then set d->last = true only if this is the - last layer in root ovl_entry (roe). - -Suggested-by: Amir Goldstein -Reviewed-by: Amir Goldstein -Signed-off-by: Vivek Goyal -Signed-off-by: Miklos Szeredi -Fixes: 02b69b284cd7 ("ovl: lookup redirects") -Cc: #v4.10 -Signed-off-by: Greg Kroah-Hartman - ---- - fs/overlayfs/namei.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - ---- a/fs/overlayfs/namei.c -+++ b/fs/overlayfs/namei.c -@@ -607,7 +607,7 @@ struct dentry *ovl_lookup(struct inode * - .is_dir = false, - .opaque = false, - .stop = false, -- .last = !poe->numlower, -+ .last = ofs->config.redirect_follow ? false : !poe->numlower, - .redirect = NULL, - }; - -@@ -666,7 +666,11 @@ struct dentry *ovl_lookup(struct inode * - for (i = 0; !d.stop && i < poe->numlower; i++) { - struct ovl_path lower = poe->lowerstack[i]; - -- d.last = i == poe->numlower - 1; -+ if (!ofs->config.redirect_follow) -+ d.last = i == poe->numlower - 1; -+ else -+ d.last = lower.layer->idx == roe->numlower; -+ - err = ovl_lookup_layer(lower.dentry, &d, &this); - if (err) - goto out_put; diff --git a/queue-4.15/series b/queue-4.15/series index 882d5b39581..74e9a454b0b 100644 --- a/queue-4.15/series +++ b/queue-4.15/series @@ -30,7 +30,6 @@ nvme-skip-checking-heads-without-namespaces.patch lib-fix-stall-in-__bitmap_parselist.patch blk-mq-order-getting-budget-and-driver-tag.patch blk-mq-don-t-keep-offline-cpus-mapped-to-hctx-0.patch -ovl-set-d-last-properly-during-lookup.patch ovl-fix-lookup-with-middle-layer-opaque-dir-and-absolute-path-redirects.patch xen-xenbus_dev_frontend-fix-xs_transaction_end-handling.patch hugetlbfs-fix-bug-in-pgoff-overflow-checking.patch -- 2.47.3