lkml.org 
[lkml]   [2020]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 29/84] btrfs: handle NULL roots in btrfs_put/btrfs_grab_fs_root
    Date
    From: Josef Bacik <josef@toxicpanda.com>

    [ Upstream commit 4cdfd93002cb84471ed85b4999cd38077a317873 ]

    We want to use this for dropping all roots, and in some error cases we
    may not have a root, so handle this to make the cleanup code easier.
    Make btrfs_grab_fs_root the same so we can use it in cases where the
    root may not exist (like the quota root).

    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/btrfs/disk-io.h | 4 ++++
    1 file changed, 4 insertions(+)

    diff --git a/fs/btrfs/disk-io.h b/fs/btrfs/disk-io.h
    index a6958103d87e7..ee6a75f03b551 100644
    --- a/fs/btrfs/disk-io.h
    +++ b/fs/btrfs/disk-io.h
    @@ -97,6 +97,8 @@ struct btrfs_root *btrfs_alloc_dummy_root(struct btrfs_fs_info *fs_info);
    */
    static inline struct btrfs_root *btrfs_grab_fs_root(struct btrfs_root *root)
    {
    + if (!root)
    + return NULL;
    if (refcount_inc_not_zero(&root->refs))
    return root;
    return NULL;
    @@ -104,6 +106,8 @@ static inline struct btrfs_root *btrfs_grab_fs_root(struct btrfs_root *root)

    static inline void btrfs_put_fs_root(struct btrfs_root *root)
    {
    + if (!root)
    + return;
    if (refcount_dec_and_test(&root->refs))
    kfree(root);
    }
    --
    2.20.1
    \
     
     \ /
      Last update: 2020-04-15 14:28    [W:4.316 / U:0.536 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site