Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-11790

ext4: include terminating u32 in size of xattr entries when expanding inodes

    Details

    • Severity:
      3
    • Rank (Obsolete):
      9223372036854775807

      Description

      From: Theodore Ts'o <tytso@mit.edu>
      Subject: [PATCH] ext4: include terminating u32 in size of xattr entries when expanding inodes
      
      In ext4_expand_extra_isize_ea(), we calculate the total size of the xattr header, plus the xattr entries so we know how much of the beginning part of the xattrs to move when expanding the inode extra size. We need to include the terminating u32 at the end of the xattr entries, or else if there is uninitialized, non-zero bytes after the xattr entries and before the xattr values, the list of xattr entries won't be properly terminated.
      
      Reported-by: Steve Graham <stgraham2000@gmail.com>
      Signed-off-by: Theodore Ts'o <tytso@mit.edu>
      ---
      fs/ext4/xattr.c | 2 +-
      1 file changed, 1 insertion(+), 1 deletion(-)
      
      diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
      index 7fddd519adae..86ed9c686249 100644
      --- a/fs/ext4/xattr.c
      +++ b/fs/ext4/xattr.c
      @@ -2722,7 +2722,7 @@ int ext4_expand_extra_isize_ea(struct inode *inode,
               base = IFIRST(header);
               end = (void *)raw_inode + EXT4_SB(inode->i_sb)->s_inode_size;
               min_offs = end - base;
      -        total_ino = sizeof(struct ext4_xattr_ibody_header);
      +        total_ino = sizeof(struct ext4_xattr_ibody_header) + sizeof(u32);
      
               error = xattr_check_inode(inode, header, end);
               if (error)
      

        Attachments

          Activity

            People

            • Assignee:
              dongyang Dongyang Li
              Reporter:
              adilger Andreas Dilger
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: