In theory overlayfs could support upper layer directly referring to a data layer, but there's no current use case for this.
Originally, when data-only layers were introduced, this wasn't allowed, only introduced by the "datadir+" feature, but without actually handling this case, resulting in an Oops.
Fix by disallowing datadir without lowerdir.
Reported-by: Giuseppe Scrivano gscrivan@redhat.com Fixes: 24e16e385f22 ("ovl: add support for appending lowerdirs one by one") Cc: stable@vger.kernel.org # v6.7 Reviewed-by: Amir Goldstein amir73il@gmail.com Signed-off-by: Miklos Szeredi mszeredi@redhat.com --- fs/overlayfs/super.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c index 86ae6f6da36b..b11094acdd8f 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c @@ -1137,6 +1137,11 @@ static struct ovl_entry *ovl_get_lowerstack(struct super_block *sb, return ERR_PTR(-EINVAL); }
+ if (ctx->nr == ctx->nr_data) { + pr_err("at least one non-data lowerdir is required\n"); + return ERR_PTR(-EINVAL); + } + err = -EINVAL; for (i = 0; i < ctx->nr; i++) { l = &ctx->lower[i];
On Tue, 2025-03-25 at 11:46 +0100, Miklos Szeredi wrote:
In theory overlayfs could support upper layer directly referring to a data layer, but there's no current use case for this.
Originally, when data-only layers were introduced, this wasn't allowed, only introduced by the "datadir+" feature, but without actually handling this case, resulting in an Oops.
Fix by disallowing datadir without lowerdir.
Reported-by: Giuseppe Scrivano gscrivan@redhat.com Fixes: 24e16e385f22 ("ovl: add support for appending lowerdirs one by one") Cc: stable@vger.kernel.org # v6.7 Reviewed-by: Amir Goldstein amir73il@gmail.com Signed-off-by: Miklos Szeredi mszeredi@redhat.com
Reviewed-by: Alexander Larsson alexl@redhat.com
return ERR_PTR(-EINVAL); }
- if (ctx->nr == ctx->nr_data) {
pr_err("at least one non-data lowerdir is
required\n");
return ERR_PTR(-EINVAL);
- }
err = -EINVAL; for (i = 0; i < ctx->nr; i++) { l = &ctx->lower[i];
On Tue, Mar 25, 2025 at 11:46:29AM +0100, Miklos Szeredi wrote:
In theory overlayfs could support upper layer directly referring to a data layer, but there's no current use case for this.
Originally, when data-only layers were introduced, this wasn't allowed, only introduced by the "datadir+" feature, but without actually handling this case, resulting in an Oops.
Fix by disallowing datadir without lowerdir.
Reported-by: Giuseppe Scrivano gscrivan@redhat.com Fixes: 24e16e385f22 ("ovl: add support for appending lowerdirs one by one") Cc: stable@vger.kernel.org # v6.7 Reviewed-by: Amir Goldstein amir73il@gmail.com Signed-off-by: Miklos Szeredi mszeredi@redhat.com
Reviewed-by: Christian Brauner brauner@kernel.org
linux-stable-mirror@lists.linaro.org