summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/squashfs/xattr.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/squashfs/xattr.c b/fs/squashfs/xattr.c
index 14a2feef09b..c7655e8b31c 100644
--- a/fs/squashfs/xattr.c
+++ b/fs/squashfs/xattr.c
@@ -145,8 +145,12 @@ static int squashfs_xattr_get(struct inode *inode, int name_index,
type = le16_to_cpu(entry.type);
prefix = type & SQUASHFS_XATTR_PREFIX_MASK;
- err = squashfs_read_metadata(sb, target, &start, &offset,
- name_size);
+ if (prefix == name_index && name_size == name_len)
+ err = squashfs_read_metadata(sb, target, &start,
+ &offset, name_size);
+ else
+ err = squashfs_read_metadata(sb, NULL, &start,
+ &offset, name_size);
if (err < 0)
goto failed;