On Tue, 2015-03-31 at 23:41 -0400, Thomas Hebb 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. > Could you describe in more details how do you use userspace utilities for extracting xattr? I suspect that you simply use it in incorrect way. Thanks, Vyacheslav Dubeyko. > 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; -- 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