By the time we reach strcmp_xattr_finder_info(), hfsplus_osx_getxattr() has already prefixed the user-provided xattr name with "osx.", so the existing check for the special FinderInfo attribute will always fail, and ENODATA will be returned to userspace. Since hfsplus_listxattr() reports the FinderInfo attribute, this behavior causes certain userspace utilities (e.g. patch) to fail, since the kernel lists an attribute that doesn't exist. Cc: stable@xxxxxxxxxxxxxxx Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Cc: Hin-Tak Leung <htl10@xxxxxxxxxxxxxxxxxxxxx> Cc: Sergei Antonov <saproj@xxxxxxxxx> Cc: Anton Altaparmakov <anton@xxxxxxxxxx> Cc: Fabian Frederick <fabf@xxxxxxxxx> Cc: Christian Kujau <lists@xxxxxxxxxxxxxxx> Signed-off-by: Thomas Hebb <tommyhebb@xxxxxxxxx> --- fs/hfsplus/xattr.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/fs/hfsplus/xattr.c b/fs/hfsplus/xattr.c index d98094a..da0664e 100644 --- a/fs/hfsplus/xattr.c +++ b/fs/hfsplus/xattr.c @@ -28,8 +28,16 @@ const struct xattr_handler *hfsplus_xattr_handlers[] = { static int strcmp_xattr_finder_info(const char *name) { + int err = 0; + if (name) { - return strncmp(name, HFSPLUS_XATTR_FINDER_INFO_NAME, + err = strncmp(name, XATTR_MAC_OSX_PREFIX, + XATTR_MAC_OSX_PREFIX_LEN); + if (err) + return err; + + return strncmp(name + XATTR_MAC_OSX_PREFIX_LEN, + HFSPLUS_XATTR_FINDER_INFO_NAME, sizeof(HFSPLUS_XATTR_FINDER_INFO_NAME)); } return -1; -- 2.3.4 -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html