• Wenwen Wang's avatar
    btrfs: ref-verify: fix memory leaks · f311ade3
    Wenwen Wang authored
    In btrfs_ref_tree_mod(), 'ref' and 'ra' are allocated through kzalloc() and
    kmalloc(), respectively. In the following code, if an error occurs, the
    execution will be redirected to 'out' or 'out_unlock' and the function will
    be exited. However, on some of the paths, 'ref' and 'ra' are not
    deallocated, leading to memory leaks. For example, if 'action' is
    BTRFS_ADD_DELAYED_EXTENT, add_block_entry() will be invoked. If the return
    value indicates an error, the execution will be redirected to 'out'. But,
    'ref' is not deallocated on this path, causing a memory leak.
    
    To fix the above issues, deallocate both 'ref' and 'ra' before exiting from
    the function when an error is encountered.
    
    CC: stable@vger.kernel.org # 4.15+
    Signed-off-by: default avatarWenwen Wang <wenwen@cs.uga.edu>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    f311ade3
ref-verify.c 25.1 KB