lkml.org 
[lkml]   [2019]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 25/51] btrfs: tree-check: reduce stack consumption in check_dir_item
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: David Sterba <dsterba@suse.com>

    commit e2683fc9d219430f5b78889b50cde7f40efeba7b upstream.

    I've noticed that the updated item checker stack consumption increased
    dramatically in 542f5385e20cf97447 ("btrfs: tree-checker: Add checker
    for dir item")

    tree-checker.c:check_leaf +552 (176 -> 728)

    The array is 255 bytes long, dynamic allocation would slow down the
    sanity checks so it's more reasonable to keep it on-stack. Moving the
    variable to the scope of use reduces the stack usage again

    tree-checker.c:check_leaf -264 (728 -> 464)

    Reviewed-by: Josef Bacik <jbacik@fb.com>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/btrfs/tree-checker.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/fs/btrfs/tree-checker.c
    +++ b/fs/btrfs/tree-checker.c
    @@ -212,7 +212,6 @@ static int check_dir_item(struct btrfs_r

    di = btrfs_item_ptr(leaf, slot, struct btrfs_dir_item);
    while (cur < item_size) {
    - char namebuf[max(BTRFS_NAME_LEN, XATTR_NAME_MAX)];
    u32 name_len;
    u32 data_len;
    u32 max_name_len;
    @@ -295,6 +294,8 @@ static int check_dir_item(struct btrfs_r
    */
    if (key->type == BTRFS_DIR_ITEM_KEY ||
    key->type == BTRFS_XATTR_ITEM_KEY) {
    + char namebuf[max(BTRFS_NAME_LEN, XATTR_NAME_MAX)];
    +
    read_extent_buffer(leaf, namebuf,
    (unsigned long)(di + 1), name_len);
    name_hash = btrfs_name_hash(namebuf, name_len);

    \
     
     \ /
      Last update: 2019-01-15 18:02    [W:2.086 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site