lkml.org 
[lkml]   [2022]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 104/298] block: make bioset_exit() fully resilient against being called twice
    Date
    From: Jens Axboe <axboe@kernel.dk>

    [ Upstream commit 605f7415ecfb426610195dd6c7577b30592b3369 ]

    Most of bioset_exit() is fine being called twice, as it clears the
    various allocations etc when they are freed. The exception is
    bio_alloc_cache_destroy(), which does not clear ->cache when it has
    freed it.

    This isn't necessarily a bug, but can be if buggy users does call the
    exit path more then once, or with just a memset() bioset which has
    never been initialized. dm appears to be one such user.

    Fixes: be4d234d7aeb ("bio: add allocation cache abstraction")
    Link: https://lore.kernel.org/linux-block/YpK7m+14A+pZKs5k@casper.infradead.org/
    Reported-by: Matthew Wilcox <willy@infradead.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    block/bio.c | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/block/bio.c b/block/bio.c
    index 738fea03edbf..dc6940621d7d 100644
    --- a/block/bio.c
    +++ b/block/bio.c
    @@ -668,6 +668,7 @@ static void bio_alloc_cache_destroy(struct bio_set *bs)
    bio_alloc_cache_prune(cache, -1U);
    }
    free_percpu(bs->cache);
    + bs->cache = NULL;
    }

    /**
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-13 16:26    [W:3.509 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site