/* unhash a timewait socket from established hash, if hashed. ehash lock must be held by caller. Returns 1 if caller should call inet_twsk_put() after lock release.  */
int inet_twsk_unhash(struct inet_timewait_sock *tw)
/* unhash a timewait socket from established hash, if hashed. ehash lock must be held by caller. Returns 1 if caller should call inet_twsk_put() after lock release.  */
int inet_twsk_unhash(struct inet_timewait_sock *tw)
{
	if (hlist_nulls_unhashed(&tw->tw_node))
		return 0;
	hlist_nulls_del_rcu(&tw->tw_node);
	sk_nulls_node_init(&tw->tw_node);
	return 1;
}