diff options
author | 2011-07-05 10:04:27 -0700 | |
---|---|---|
committer | 2011-07-05 10:04:27 -0700 | |
commit | a8728d35549d3203a8cb0055b9d2c217a21ac7eb (patch) | |
tree | 64c3fa6e2ccf72dc5ee0876259349f62481df9d8 | |
parent | Linux 3.0-rc6 (diff) | |
parent | hfsplus: Fix double iput of the same inode in hfsplus_fill_super() (diff) | |
download | linux-a8728d35549d3203a8cb0055b9d2c217a21ac7eb.tar.gz linux-a8728d35549d3203a8cb0055b9d2c217a21ac7eb.tar.bz2 linux-a8728d35549d3203a8cb0055b9d2c217a21ac7eb.zip |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hch/hfsplus
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hch/hfsplus:
hfsplus: Fix double iput of the same inode in hfsplus_fill_super()
hfsplus: add missing call to bio_put()
-rw-r--r-- | fs/hfsplus/super.c | 2 | ||||
-rw-r--r-- | fs/hfsplus/wrapper.c | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index b49b55584c84..84a47b709f51 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c @@ -500,7 +500,7 @@ static int hfsplus_fill_super(struct super_block *sb, void *data, int silent) out_put_hidden_dir: iput(sbi->hidden_dir); out_put_root: - iput(sbi->alloc_file); + iput(root); out_put_alloc_file: iput(sbi->alloc_file); out_close_cat_tree: diff --git a/fs/hfsplus/wrapper.c b/fs/hfsplus/wrapper.c index 3031d81f5f0f..4ac88ff79aa6 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) |