goto bail2; 
goto bail; 
static int hfs_fill_super(struct super_block *sb, void *data, int silent){	struct hfs_sb_info *sbi;	struct hfs_find_data fd;	hfs_cat_rec rec;	struct inode *root_inode;	int res;	sbi = kmalloc(sizeof(struct hfs_sb_info), GFP_KERNEL);	if (!sbi)		return -ENOMEM;	sb->s_fs_info = sbi;	memset(sbi, 0, sizeof(struct hfs_sb_info));	INIT_HLIST_HEAD(&sbi->rsrc_inodes);	res = -EINVAL;	if (!parse_options((char *)data, sbi)) {		hfs_warn("hfs_fs: unable to parse mount options.\n");		goto bail3;	}	sb->s_op = &hfs_super_operations;	sb->s_flags |= MS_NODIRATIME;	init_MUTEX(&sbi->bitmap_lock);	res = hfs_mdb_get(sb);	if (res) {		if (!silent)			hfs_warn("VFS: Can't find a HFS filesystem on dev %s.\n",				hfs_mdb_name(sb));		res = -EINVAL;		goto bail2;	}	/* try to get the root inode */	hfs_find_init(HFS_SB(sb)->cat_tree, &fd);	res = hfs_cat_find_brec(sb, HFS_ROOT_CNID, &fd);	if (!res)		hfs_bnode_read(fd.bnode, &rec, fd.entryoffset, fd.entrylength);	if (res) {		hfs_find_exit(&fd);		goto bail_no_root;	}	root_inode = hfs_iget(sb, &fd.search_key->cat, &rec);	hfs_find_exit(&fd);	if (!root_inode)		goto bail_no_root;	sb->s_root = d_alloc_root(root_inode);	if (!sb->s_root)		goto bail_iput;	sb->s_root->d_op = &hfs_dentry_operations;	/* everything's okay */	return 0;bail_iput:	iput(root_inode);bail_no_root:	hfs_warn("hfs_fs: get root inode failed.\n");	hfs_mdb_put(sb);bail2:bail3:	kfree(sbi);	return res;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/945b092011c6af71a0107be96e119c8c08776f3f/super.c/buggy/fs/hfs/super.c