t->trie = trie_rebalance(t, tp); 
rcu_assign_pointer(t->trie, trie_rebalance(t, tp)); 
static int trie_leaf_remove(struct trie *t, t_key key){	t_key cindex;	struct tnode *tp = NULL;	struct node *n = t->trie;	struct leaf *l;	pr_debug("entering trie_leaf_remove(%p)\n", n);	/* Note that in the case skipped bits, those bits are *not* checked!	 * When we finish this, we will have NULL or a T_LEAF, and the	 * T_LEAF may or may not match our key.	 */	while (n != NULL && IS_TNODE(n)) {		struct tnode *tn = (struct tnode *) n;		check_tnode(tn);		n = tnode_get_child(tn ,tkey_extract_bits(key, tn->pos, tn->bits));		BUG_ON(n && NODE_PARENT(n) != tn);	}	l = (struct leaf *) n;	if (!n || !tkey_equals(l->key, key))		return 0;	/*	 * Key found.	 * Remove the leaf and rebalance the tree	 */	t->revision++;	t->size--;	tp = NODE_PARENT(n);	tnode_free((struct tnode *) n);	if (tp) {		cindex = tkey_extract_bits(key, tp->pos, tp->bits);		put_child(t, (struct tnode *)tp, cindex, NULL);		t->trie = trie_rebalance(t, tp);	} else		t->trie = NULL;	return 1;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/2373ce1ca04dd46bf2b8b0f9a799eb2a90da92fb/fib_trie.c/buggy/net/ipv4/fib_trie.c