lkml.org 
[lkml]   [2022]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 187/287] ext4: add EXT4_INODE_HAS_XATTR_SPACE macro in xattr.h
    Date
    From: Baokun Li <libaokun1@huawei.com>

    commit 179b14152dcb6a24c3415200603aebca70ff13af upstream.

    When adding an xattr to an inode, we must ensure that the inode_size is
    not less than EXT4_GOOD_OLD_INODE_SIZE + extra_isize + pad. Otherwise,
    the end position may be greater than the start position, resulting in UAF.

    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
    Link: https://lore.kernel.org/r/20220616021358.2504451-2-libaokun1@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/ext4/xattr.h | 13 +++++++++++++
    1 file changed, 13 insertions(+)

    --- a/fs/ext4/xattr.h
    +++ b/fs/ext4/xattr.h
    @@ -95,6 +95,19 @@ struct ext4_xattr_entry {

    #define EXT4_ZERO_XATTR_VALUE ((void *)-1)

    +/*
    + * If we want to add an xattr to the inode, we should make sure that
    + * i_extra_isize is not 0 and that the inode size is not less than
    + * EXT4_GOOD_OLD_INODE_SIZE + extra_isize + pad.
    + * EXT4_GOOD_OLD_INODE_SIZE extra_isize header entry pad data
    + * |--------------------------|------------|------|---------|---|-------|
    + */
    +#define EXT4_INODE_HAS_XATTR_SPACE(inode) \
    + ((EXT4_I(inode)->i_extra_isize != 0) && \
    + (EXT4_GOOD_OLD_INODE_SIZE + EXT4_I(inode)->i_extra_isize + \
    + sizeof(struct ext4_xattr_ibody_header) + EXT4_XATTR_PAD <= \
    + EXT4_INODE_SIZE((inode)->i_sb)))
    +
    struct ext4_xattr_info {
    const char *name;
    const void *value;

    \
     
     \ /
      Last update: 2022-08-23 12:49    [W:4.047 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site