diff options
author | Tahsin Erdogan <tahsin@google.com> | 2017-06-22 05:14:30 +0300 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2017-06-22 05:14:30 +0300 |
commit | 7cec191894e4e2200d942415c3ebccb146214d26 (patch) | |
tree | 3d8bed994b49acd4e9afa0e69e3ac4321e1e2670 | |
parent | f6109100ba8692c677cfdc88af1887a43263e63a (diff) | |
download | linux-7cec191894e4e2200d942415c3ebccb146214d26.tar.xz |
ext4: fix ext4_xattr_cmp()
When a xattr entry refers to an external inode, the value data is not
available in the inline area so we should not attempt to read it using
value offset.
Signed-off-by: Tahsin Erdogan <tahsin@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r-- | fs/ext4/xattr.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index bd1e61a0c228..ed27b5241e69 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c @@ -2167,7 +2167,8 @@ ext4_xattr_cmp(struct ext4_xattr_header *header1, entry1->e_value_inum != entry2->e_value_inum || memcmp(entry1->e_name, entry2->e_name, entry1->e_name_len)) return 1; - if (memcmp((char *)header1 + le16_to_cpu(entry1->e_value_offs), + if (!entry1->e_value_inum && + memcmp((char *)header1 + le16_to_cpu(entry1->e_value_offs), (char *)header2 + le16_to_cpu(entry2->e_value_offs), le32_to_cpu(entry1->e_value_size))) return 1; |