diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/overlayfs/namei.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/overlayfs/namei.c b/fs/overlayfs/namei.c index 03d8c5132477..35418317ecf2 100644 --- a/fs/overlayfs/namei.c +++ b/fs/overlayfs/namei.c | |||
@@ -56,6 +56,15 @@ static int ovl_check_redirect(struct dentry *dentry, struct ovl_lookup_data *d, | |||
56 | if (s == next) | 56 | if (s == next) |
57 | goto invalid; | 57 | goto invalid; |
58 | } | 58 | } |
59 | /* | ||
60 | * One of the ancestor path elements in an absolute path | ||
61 | * lookup in ovl_lookup_layer() could have been opaque and | ||
62 | * that will stop further lookup in lower layers (d->stop=true) | ||
63 | * But we have found an absolute redirect in decendant path | ||
64 | * element and that should force continue lookup in lower | ||
65 | * layers (reset d->stop). | ||
66 | */ | ||
67 | d->stop = false; | ||
59 | } else { | 68 | } else { |
60 | if (strchr(buf, '/') != NULL) | 69 | if (strchr(buf, '/') != NULL) |
61 | goto invalid; | 70 | goto invalid; |