mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
block: fix memory leak in __blkdev_issue_zero_pages
[ Upstream commitf7e3f852a4] Move the fatal signal check before bio_alloc() to prevent a memory leak when BLKDEV_ZERO_KILLABLE is set and a fatal signal is pending. Previously, the bio was allocated before checking for a fatal signal. If a signal was pending, the code would break out of the loop without freeing or chaining the just-allocated bio, causing a memory leak. This matches the pattern already used in __blkdev_issue_write_zeroes() where the signal check precedes the allocation. Fixes:bf86bcdb40("blk-lib: check for kill signal in ioctl BLKZEROOUT") Reported-by: syzbot+527a7e48a3d3d315d862@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=527a7e48a3d3d315d862 Signed-off-by: Shaurya Rane <ssrane_b23@ee.vjti.ac.in> Reviewed-by: Keith Busch <kbusch@kernel.org> Tested-by: syzbot+527a7e48a3d3d315d862@syzkaller.appspotmail.com Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2864db01b3
commit
7193407bc4
+3
-3
@@ -202,13 +202,13 @@ static void __blkdev_issue_zero_pages(struct block_device *bdev,
|
||||
unsigned int nr_vecs = __blkdev_sectors_to_bio_pages(nr_sects);
|
||||
struct bio *bio;
|
||||
|
||||
bio = bio_alloc(bdev, nr_vecs, REQ_OP_WRITE, gfp_mask);
|
||||
bio->bi_iter.bi_sector = sector;
|
||||
|
||||
if ((flags & BLKDEV_ZERO_KILLABLE) &&
|
||||
fatal_signal_pending(current))
|
||||
break;
|
||||
|
||||
bio = bio_alloc(bdev, nr_vecs, REQ_OP_WRITE, gfp_mask);
|
||||
bio->bi_iter.bi_sector = sector;
|
||||
|
||||
do {
|
||||
unsigned int len;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user