]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ovl: Check for casefold consistency when creating new dentries
authorAndré Almeida <andrealmeid@igalia.com>
Thu, 14 Aug 2025 17:22:19 +0000 (14:22 -0300)
committerAmir Goldstein <amir73il@gmail.com>
Tue, 23 Sep 2025 10:29:36 +0000 (12:29 +0200)
In a overlayfs with casefold enabled, all new dentries should have
casefold enabled as well. Check this at ovl_create_real().

Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: André Almeida <andrealmeid@igalia.com>
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
fs/overlayfs/dir.c

index dbd63a74df4b1c87b70f29115dcb881f7a74d11b..538a1b2dbb387cc3742b5fe42becfa503502b023 100644 (file)
@@ -187,6 +187,13 @@ struct dentry *ovl_create_real(struct ovl_fs *ofs, struct dentry *parent,
                        /* mkdir is special... */
                        newdentry =  ovl_do_mkdir(ofs, dir, newdentry, attr->mode);
                        err = PTR_ERR_OR_ZERO(newdentry);
+                       /* expect to inherit casefolding from workdir/upperdir */
+                       if (!err && ofs->casefold != ovl_dentry_casefolded(newdentry)) {
+                               pr_warn_ratelimited("wrong inherited casefold (%pd2)\n",
+                                                   newdentry);
+                               dput(newdentry);
+                               err = -EINVAL;
+                       }
                        break;
 
                case S_IFCHR: