summaryrefslogtreecommitdiff
path: root/src/ext4_xattr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ext4_xattr.c')
-rw-r--r--src/ext4_xattr.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/ext4_xattr.c b/src/ext4_xattr.c
index d0b7457..f177eaa 100644
--- a/src/ext4_xattr.c
+++ b/src/ext4_xattr.c
@@ -343,12 +343,14 @@ static int ext4_xattr_inode_fetch(struct ext4_xattr_ref *xattr_ref)
struct ext4_xattr_ibody_header *header = NULL;
struct ext4_xattr_entry *entry = NULL;
uint16_t inode_size = ext4_get16(&xattr_ref->fs->sb, inode_size);
+ uint16_t extra_isize = ext4_inode_get_extra_isize(&xattr_ref->fs->sb,
+ xattr_ref->inode_ref->inode);
header = EXT4_XATTR_IHDR(xattr_ref->inode_ref->inode);
entry = EXT4_XATTR_IFIRST(header);
size_rem = inode_size - EXT4_GOOD_OLD_INODE_SIZE -
- xattr_ref->inode_ref->inode->extra_isize;
+ extra_isize;
for (; size_rem > 0 && !EXT4_XATTR_IS_LAST_ENTRY(entry);
entry = EXT4_XATTR_NEXT(entry),
size_rem -= EXT4_XATTR_LEN(entry->e_name_len)) {
@@ -385,8 +387,10 @@ Finish:
static size_t ext4_xattr_inode_space(struct ext4_xattr_ref *xattr_ref)
{
uint16_t inode_size = ext4_get16(&xattr_ref->fs->sb, inode_size);
+ uint16_t extra_isize = ext4_inode_get_extra_isize(&xattr_ref->fs->sb,
+ xattr_ref->inode_ref->inode);
uint16_t size_rem = inode_size - EXT4_GOOD_OLD_INODE_SIZE -
- xattr_ref->inode_ref->inode->extra_isize;
+ extra_isize;
return size_rem;
}