if (f) kfree(f); 
kfree(f); 
__tcindex_delete(struct tcf_proto *tp, unsigned long arg, int lock){	struct tcindex_data *p = PRIV(tp);	struct tcindex_filter_result *r = (struct tcindex_filter_result *) arg;	struct tcindex_filter *f = NULL;	DPRINTK("tcindex_delete(tp %p,arg 0x%lx),p %p,f %p\n",tp,arg,p,f);	if (p->perfect) {		if (!r->res.class)			return -ENOENT;	} else {		int i;		struct tcindex_filter **walk = NULL;		for (i = 0; i < p->hash; i++)			for (walk = p->h+i; *walk; walk = &(*walk)->next)				if (&(*walk)->result == r)					goto found;		return -ENOENT;found:		f = *walk;		if (lock)			tcf_tree_lock(tp);		*walk = f->next;		if (lock)			tcf_tree_unlock(tp);	}	tcf_unbind_filter(tp, &r->res);	tcf_exts_destroy(tp, &r->exts);	if (f)		kfree(f);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/a51482bde22f99c63fbbb57d5d46cc666384e379/cls_tcindex.c/buggy/net/sched/cls_tcindex.c