diff options
Diffstat (limited to 'block/blk-lib.c')
-rw-r--r-- | block/blk-lib.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/block/blk-lib.c b/block/blk-lib.c index e371f83..083e56f 100644 --- a/block/blk-lib.c +++ b/block/blk-lib.c @@ -123,6 +123,7 @@ int blkdev_issue_discard(struct block_device *bdev, sector_t sector, ret = submit_bio_wait(bio); if (ret == -EOPNOTSUPP && !(flags & BLKDEV_DISCARD_ZERO)) ret = 0; + bio_put(bio); } blk_finish_plug(&plug); @@ -176,8 +177,10 @@ int blkdev_issue_write_same(struct block_device *bdev, sector_t sector, } } - if (bio) + if (bio) { ret = submit_bio_wait(bio); + bio_put(bio); + } return ret; } EXPORT_SYMBOL(blkdev_issue_write_same); @@ -217,8 +220,11 @@ static int __blkdev_issue_zeroout(struct block_device *bdev, sector_t sector, } } - if (bio) - return submit_bio_wait(bio); + if (bio) { + ret = submit_bio_wait(bio); + bio_put(bio); + return ret; + } return 0; } |