diff options
author | Seth Forshee <seth.forshee@canonical.com> | 2011-05-31 16:35:50 -0500 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2011-06-30 13:28:32 +0200 |
commit | 50176ddefa4a942419cb693dd2d8345bfdcde67c (patch) | |
tree | 922781d0151cf2e2939056b7dd44932f0b7e559f /fs/hfsplus | |
parent | ca56a95eedcc95f8fea7b49c87565cd961d74fe2 (diff) | |
download | op-kernel-dev-50176ddefa4a942419cb693dd2d8345bfdcde67c.zip op-kernel-dev-50176ddefa4a942419cb693dd2d8345bfdcde67c.tar.gz |
hfsplus: add missing call to bio_put()
hfsplus leaks bio objects by failing to call bio_put() on the bios
it allocates. Add the missing call to fix the leak.
Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
Cc: <stable@kernel.org> # .38.x, .39.x
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'fs/hfsplus')
-rw-r--r-- | fs/hfsplus/wrapper.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/hfsplus/wrapper.c b/fs/hfsplus/wrapper.c index 3031d81..4ac88ff 100644 --- a/fs/hfsplus/wrapper.c +++ b/fs/hfsplus/wrapper.c @@ -36,6 +36,7 @@ int hfsplus_submit_bio(struct block_device *bdev, sector_t sector, { DECLARE_COMPLETION_ONSTACK(wait); struct bio *bio; + int ret = 0; bio = bio_alloc(GFP_NOIO, 1); bio->bi_sector = sector; @@ -54,8 +55,10 @@ int hfsplus_submit_bio(struct block_device *bdev, sector_t sector, wait_for_completion(&wait); if (!bio_flagged(bio, BIO_UPTODATE)) - return -EIO; - return 0; + ret = -EIO; + + bio_put(bio); + return ret; } static int hfsplus_read_mdb(void *bufptr, struct hfsplus_wd *wd) |