Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05bd92dd authored by Shaun Tancheff's avatar Shaun Tancheff Committed by Jens Axboe
Browse files

block: missing bio_put following submit_bio_wait



submit_bio_wait() gives the caller an opportunity to examine
struct bio and so expects the caller to issue the put_bio()

This fixes a memory leak reported by a few people in 4.7-rc2
kmemleak report after 9082e87b ("block: remove struct bio_batch")

Signed-off-by: default avatarShaun Tancheff <shaun.tancheff@seagate.com>
Tested-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Tested-by: default avatarLarry <Finger@lwfinger.net>
Tested-by: default avatarDavid Drysdale <drysdale@google.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent 87c279e6
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector,
		ret = submit_bio_wait(type, bio);
		if (ret == -EOPNOTSUPP)
			ret = 0;
		bio_put(bio);
	}
	blk_finish_plug(&plug);

@@ -165,8 +166,10 @@ int blkdev_issue_write_same(struct block_device *bdev, sector_t sector,
		}
	}

	if (bio)
	if (bio) {
		ret = submit_bio_wait(REQ_WRITE | REQ_WRITE_SAME, bio);
		bio_put(bio);
	}
	return ret != -EOPNOTSUPP ? ret : 0;
}
EXPORT_SYMBOL(blkdev_issue_write_same);
@@ -206,8 +209,11 @@ static int __blkdev_issue_zeroout(struct block_device *bdev, sector_t sector,
		}
	}

	if (bio)
		return submit_bio_wait(WRITE, bio);
	if (bio) {
		ret = submit_bio_wait(WRITE, bio);
		bio_put(bio);
		return ret;
	}
	return 0;
}