• Eric Whitney's avatar
    ext4: correct inline offset when handling xattrs in inode body · 6909cf5c
    Eric Whitney authored
    When run on a file system where the inline_data feature has been
    enabled, xfstests generic/269, generic/270, and generic/476 cause ext4
    to emit error messages indicating that inline directory entries are
    corrupted.  This occurs because the inline offset used to locate
    inline directory entries in the inode body is not updated when an
    xattr in that shared region is deleted and the region is shifted in
    memory to recover the space it occupied.  If the deleted xattr precedes
    the system.data attribute, which points to the inline directory entries,
    that attribute will be moved further up in the region.  The inline
    offset continues to point to whatever is located in system.data's former
    location, with unfortunate effects when used to access directory entries
    or (presumably) inline data in the inode body.
    
    Cc: stable@kernel.org
    Signed-off-by: default avatarEric Whitney <enwlinux@gmail.com>
    Link: https://lore.kernel.org/r/20230522181520.1570360-1-enwlinux@gmail.comSigned-off-by: default avatarTheodore Ts'o <tytso@mit.edu>
    6909cf5c
xattr.c 84.4 KB