The negative case check logic with XOR operation between the two variables with negated values is really hard to comprehend. Change it to positive case check with == instead of XOR. Signed-off-by: Andriy Tkachuk <andriy.tkachuk@xxxxxxxxxxx> --- fs/xattr.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fs/xattr.c b/fs/xattr.c index b3444e06cd..531562535d 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -66,13 +66,13 @@ xattr_resolve_name(struct inode *inode, const char **name) n = strcmp_prefix(*name, xattr_prefix(handler)); if (n) { - if (!handler->prefix ^ !*n) { - if (*n) - continue; - return ERR_PTR(-EINVAL); + if (!handler->prefix == !*n) { + *name = n; + return handler; } - *name = n; - return handler; + if (*n) + continue; + return ERR_PTR(-EINVAL); } } return ERR_PTR(-EOPNOTSUPP); -- 2.27.0