On 1 April 2015 at 05:41, Thomas Hebb <tommyhebb@xxxxxxxxx> wrote: > 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 > Your patch does fix a bug (reproduced through listxattr/getxattr/setxattr apis). But I'd recommend a more elegant code: --- a/fs/hfsplus/xattr.c +++ b/fs/hfsplus/xattr.c @@ -29,7 +29,9 @@ const struct xattr_handler *hfsplus_xattr_handlers[] = { static int strcmp_xattr_finder_info(const char *name) { if (name) { - return strncmp(name, HFSPLUS_XATTR_FINDER_INFO_NAME, + return strncmp(name, XATTR_MAC_OSX_PREFIX + HFSPLUS_XATTR_FINDER_INFO_NAME, + XATTR_MAC_OSX_PREFIX_LEN + sizeof(HFSPLUS_XATTR_FINDER_INFO_NAME)); } return -1; If you resubmit it, make it Reviewed-by: Sergei Antonov <saproj@xxxxxxxxx> -- 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