On Fri, Feb 2, 2018 at 4:23 PM, Vivek Goyal <vgoyal@xxxxxxxxxx> wrote: > redirect_dir=nofollow should not follow a redirect. But in a specific > configuration it can still follow it. For example try this. > > $ mkdir -p lower0 lower1/foo upper work merged > $ touch lower1/foo/lower-file.txt > $ setfattr -n "trusted.overlay.opaque" -v "y" lower1/foo > $ mount -t overlay -o lowerdir=lower1:lower0,workdir=work,upperdir=upper,redirect_dir=on none merged > $ cd merged > $ mv foo foo-renamed > $ umount merged > > # mount again. This time with redirect_dir=nofollow > $ mount -t overlay -o lowerdir=lower1:lower0,workdir=work,upperdir=upper,redirect_dir=nofollow none merged > $ ls merged/foo-renamed/ > # This lists lower-file.txt, while it should not have. > > Basically, we are doing redirect check after we check for d.stop. And > if this is not last lower, and we find an opaque lower, d.stop will be > set. > > ovl_lookup_single() > if (!d->last && ovl_is_opaquedir(this)) { > d->stop = d->opaque = true; > goto out; > } > > To fix this, first check redirect is allowed. And after that check if > d.stop has been set or not. > > Signed-off-by: Vivek Goyal <vgoyal@xxxxxxxxxx> Thanks, applied. Miklos -- To unsubscribe from this list: send the line "unsubscribe linux-unionfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html