rem: list_del( lh );
add: list_del_zero( lh );
context: void destroy_peer_manager(struct p_table *peer_table){	struct list_head  *lh, *foo;	struct peer       *p;	if (peer_table) {		/* destroy all the peers */		list_for_each_safe( lh, foo, &(peer_table->peers)) {			/* free the peer */			list_del( lh );			p = list_entry( lh, struct peer, all_peer_lh);			destroy_peer( p );		}		/* destroy the mutex */		if (peer_table->mutex)			destroy_locks( peer_table->mutex, 1);		/* free the buffers */		if (peer_table->std_req.s)			shm_free(peer_table->std_req.s);		if (peer_table->std_ans.s)			shm_free(peer_table->std_ans.s);		if (peer_table->ce_avp_ipv4.s)			shm_free(peer_table->ce_avp_ipv4.s);		if (peer_table->ce_avp_ipv6.s)			shm_free(peer_table->ce_avp_ipv6.s);		if (peer_table->dpr_avp.s)			shm_free(peer_table->dpr_avp.s);		/* destroy the table */		shm_free( peer_table );	}	if (wait_cer_timer)		destroy_timer_list( wait_cer_timer );	if (reconn_timer)		destroy_timer_list( reconn_timer );	destroy_locks( activ_peers.mutex, 1);	LOG(L_INFO,"INFO:destroy_peer_manager: peer manager stoped\n");}