/* unhash a timewait socket from bind hash, if hashed. bind hash lock must be held by caller. Returns 1 if caller should call inet_twsk_put() after lock release.  */
int inet_twsk_bind_unhash(struct inet_timewait_sock *tw, struct inet_hashinfo *hashinfo)
/* unhash a timewait socket from bind hash, if hashed. bind hash lock must be held by caller. Returns 1 if caller should call inet_twsk_put() after lock release.  */
int inet_twsk_bind_unhash(struct inet_timewait_sock *tw, struct inet_hashinfo *hashinfo)
{
	struct inet_bind_bucket *tb = tw->tw_tb;
	if (!tb)
		return 0;
	__hlist_del(&tw->tw_bind_node);
	tw->tw_tb = NULL;
	inet_bind_bucket_destroy(hashinfo->bind_bucket_cachep, tb);
	return 1;
}