On Wed, May 25, 2016 at 11:51 PM, Al Viro <v...@zeniv.linux.org.uk> wrote: > On Wed, May 25, 2016 at 05:30:22PM +0800, Jeff Chua wrote: >> On Wed, May 25, 2016 at 2:37 AM, Al Viro <v...@zeniv.linux.org.uk> wrote: >> > On Tue, May 24, 2016 at 04:59:02PM +0100, Al Viro wrote: >> > >> >> Umm... Any chance of getting the function names to go with the addresses? >> >> I'll try to reproduce it here, but the things would be easier with that >> >> information... >> > >> > See if this fixes your reproducer. >> > >> > diff --git a/fs/xattr.c b/fs/xattr.c >> > index b11945e..49b8eab 100644 >> > --- a/fs/xattr.c >> > +++ b/fs/xattr.c >> > @@ -667,6 +667,9 @@ xattr_resolve_name(const struct xattr_handler >> > **handlers, const char **name) >> > { >> > const struct xattr_handler *handler; >> > >> > + if (!handlers) >> > + return NULL; >> > + >> > if (!*name) >> > return NULL; >> > >> >> Tried, but doesn't work. > > D'oh... Since "vfs: Distinguish between full xattr names and proper prefixes" > we really need to return ERR_PTR() there (and I even have a patch from Andreas > fixing that if (!*name) return NULL; in my queue). Combined delta to test > (that'll go as two commits, one mine, one his): >
Al, Linus, Great that worked! And I see the patch is already in Linus's tree. Thanks for the quick response and fixes. Jeff. > diff --git a/fs/xattr.c b/fs/xattr.c > index b11945e..fc81e77 100644 > --- a/fs/xattr.c > +++ b/fs/xattr.c > @@ -655,6 +655,7 @@ strcmp_prefix(const char *a, const char *a_prefix) > * operations to the correct xattr_handler. > */ > #define for_each_xattr_handler(handlers, handler) \ > + if (handlers) \ > for ((handler) = *(handlers)++; \ > (handler) != NULL; \ > (handler) = *(handlers)++) > @@ -668,7 +669,7 @@ xattr_resolve_name(const struct xattr_handler **handlers, > const char **name) > const struct xattr_handler *handler; > > if (!*name) > - return NULL; > + return ERR_PTR(-EINVAL); > > for_each_xattr_handler(handlers, handler) { > const char *n;