ovl: fix trusted xattr escape prefix matching
authorYichong Chen <chenyichong@uniontech.com>
Wed, 8 Jul 2026 08:22:21 +0000 (16:22 +0800)
committerChristian Brauner <brauner@kernel.org>
Wed, 22 Jul 2026 11:48:00 +0000 (13:48 +0200)
commita8e72879cd0d8422c0b47d6d3c1802274fe73b98
tree546508d899d3f1f86819dd243ea7c54e0d91bf91
parentf80aa785767d778e7620da67b30f6e1b5e64156d
ovl: fix trusted xattr escape prefix matching

In the trusted.* xattr namespace, ovl_is_escaped_xattr() compares
one byte less than the escaped overlay xattr prefix length. This makes
it match "trusted.overlay.overlay" without requiring the trailing dot.

As a result, an xattr such as "trusted.overlay.overlayfoo" is
incorrectly treated as an escaped overlay xattr. This can be reproduced
by setting "trusted.overlay.overlayfoo" on a lower file and listing xattrs
through an overlay mount. listxattr() then exposes it as
"trusted.overlay.oo", and a following getxattr() on that listed name fails
with ENODATA.

Compare the full escaped prefix, including the trailing dot, so
similarly-prefixed private xattrs are not misclassified.

Fixes: dad02fad84cbc ("ovl: Support escaped overlay.* xattrs")
Signed-off-by: Yichong Chen <chenyichong@uniontech.com>
Link: https://patch.msgid.link/20260708082221.633602-1-chenyichong@uniontech.com
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
fs/overlayfs/xattrs.c