Message ID | 1465317133-13266-1-git-send-email-shaun@tancheff.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Looks fine,
Reviewed-by: Christoph Hellwig <hch@lst.de>
On 06/07/2016 10:32 AM, Shaun Tancheff wrote: > 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 9082e87bfbf8 ("block: remove struct bio_batch") > > Signed-off-by: Shaun Tancheff <shaun.tancheff@seagate.com> > Tested-by: Catalin Marinas <catalin.marinas@arm.com> > Tested-by: Larry Finger@lwfinger.net > Tested-by: David Drysdale <drysdale@google.com> Thanks, applied.
diff --git a/block/blk-lib.c b/block/blk-lib.c index 23d7f30..9e29dc3 100644 --- a/block/blk-lib.c +++ b/block/blk-lib.c @@ -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; }