if (i == V2_DQBLKSIZE) { 
/* Don't put the root block into the free block list */ if (i == V2_DQBLKSIZE && *blk != V2_DQTREEOFF) { 
static int remove_tree(struct dquot *dquot, uint *blk, int depth){	struct super_block *sb = dquot->dq_sb;	int type = dquot->dq_type;	dqbuf_t buf = getdqbuf();	int ret = 0;	uint newblk;	__le32 *ref = (__le32 *)buf;		if (!buf)		return -ENOMEM;	if ((ret = read_blk(sb, type, *blk, buf)) < 0) {		printk(KERN_ERR "VFS: Can't read quota data block %u\n", *blk);		goto out_buf;	}	newblk = le32_to_cpu(ref[GETIDINDEX(dquot->dq_id, depth)]);	if (depth == V2_DQTREEDEPTH-1) {		ret = free_dqentry(dquot, newblk);		newblk = 0;	}	else		ret = remove_tree(dquot, &newblk, depth+1);	if (ret >= 0 && !newblk) {		int i;		ref[GETIDINDEX(dquot->dq_id, depth)] = cpu_to_le32(0);		for (i = 0; i < V2_DQBLKSIZE && !buf[i]; i++);	/* Block got empty? */		if (i == V2_DQBLKSIZE) {			put_free_dqblk(sb, type, buf, *blk);			*blk = 0;		}		else			if ((ret = write_blk(sb, type, *blk, buf)) < 0)				printk(KERN_ERR "VFS: Can't write quota tree "				  "block %u.\n", *blk);	}out_buf:	freedqbuf(buf);	return ret;	}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/e821d94d34af23a31a16ead78e8b685b750c8c3d/quota_v2.c/buggy/fs/quota_v2.c