summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-05-25 15:54:35 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2016-05-25 15:54:35 -0700
commit55c1c7b2b66e3011f981d81aaf21fa810935908a (patch)
treeaa3ddd06f7b0224236b64661c15d6b304abcc58c
parente92677dfce88b96ade9100c77eb3f76d98d29d74 (diff)
parent0040773bff7b585fc948565a0558e5a6a4680e96 (diff)
downloadlinux-55c1c7b2b66e3011f981d81aaf21fa810935908a.tar.gz
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs xattr regression fixes from Al Viro. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: make xattr_resolve_handlers() safe to use with NULL ->s_xattr xattr: Fail with -EINVAL for NULL attribute names
-rw-r--r--fs/xattr.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/xattr.c b/fs/xattr.c
index b11945e15fde..fc81e771488a 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;