diff options
author | Christoph Hellwig <hch@lst.de> | 2021-02-24 08:24:07 +0100 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2021-02-24 08:55:00 -0700 |
commit | 47dc096ac183f465ffb03e86a203a38661695d72 (patch) | |
tree | c9759e70a15f502b69a046a7853a2264d6d5cfbb /block/bounce.c | |
parent | ebfe4183c77ed18e1d4237ad3b13f32114d9ae1e (diff) |
block: memory allocations in bounce_clone_bio must not fail
The caller can't cope with a failure from bounce_clone_bio, so
use __GFP_NOFAIL for the passthrough case. bio_alloc_bioset already
won't fail due to the use of mempools.
And yes, we need to get rid of this bock layer bouncing code entirely
sooner or later..
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/bounce.c')
-rw-r--r-- | block/bounce.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/block/bounce.c b/block/bounce.c index 417faaac36b6..87983a35079c 100644 --- a/block/bounce.c +++ b/block/bounce.c @@ -242,12 +242,11 @@ static struct bio *bounce_clone_bio(struct bio *bio_src) * __bio_clone_fast() anyways. */ if (bio_is_passthrough(bio_src)) - bio = bio_kmalloc(GFP_NOIO, bio_segments(bio_src)); + bio = bio_kmalloc(GFP_NOIO | __GFP_NOFAIL, + bio_segments(bio_src)); else bio = bio_alloc_bioset(GFP_NOIO, bio_segments(bio_src), &bounce_bio_set); - if (!bio) - return NULL; bio->bi_bdev = bio_src->bi_bdev; if (bio_flagged(bio_src, BIO_REMAPPED)) bio_set_flag(bio, BIO_REMAPPED); |