JFS: skip bad iput() call in error path
authorDave Kleikamp <shaggy@linux.vnet.ibm.com>
Wed, 21 May 2008 15:45:16 +0000 (10:45 -0500)
committerDave Kleikamp <shaggy@linux.vnet.ibm.com>
Wed, 21 May 2008 15:45:16 +0000 (10:45 -0500)
If jfs_iget() fails, we can't call iput() on the returned error.
Thanks to Eric Sesterhenn's fuzzer testing for reporting the problem.

Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
fs/jfs/super.c

index 50ea65451732edf196c7750c2e1f0ee60b547bba..0288e6d7936a200e51b585914cf5ae76847b91a3 100644 (file)
@@ -499,7 +499,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
        inode = jfs_iget(sb, ROOT_I);
        if (IS_ERR(inode)) {
                ret = PTR_ERR(inode);
-               goto out_no_root;
+               goto out_no_rw;
        }
        sb->s_root = d_alloc_root(inode);
        if (!sb->s_root)
@@ -521,9 +521,8 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
        return 0;
 
 out_no_root:
-       jfs_err("jfs_read_super: get root inode failed");
-       if (inode)
-               iput(inode);
+       jfs_err("jfs_read_super: get root dentry failed");
+       iput(inode);
 
 out_no_rw:
        rc = jfs_umount(sb);