Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
        }
 
        status = ocfs2_mount_volume(sb);
-       if (osb->root_inode)
-               inode = igrab(osb->root_inode);
-
        if (status < 0)
                goto read_super_error;
 
+       if (osb->root_inode)
+               inode = igrab(osb->root_inode);
+
        if (!inode) {
                status = -EIO;
                mlog_errno(status);
 
        root = d_alloc_root(inode);
        if (!root) {
+               iput(inode);
                status = -ENOMEM;
                mlog_errno(status);
                goto read_super_error;
 read_super_error:
        brelse(bh);
 
-       if (inode)
-               iput(inode);
-
        if (osb) {
                atomic_set(&osb->vol_state, VOLUME_DISABLED);
                wake_up(&osb->osb_mount_event);