/* tipc_nametbl_unsubscribe - remove a subscription object from name table  */
void tipc_nametbl_unsubscribe(struct subscription *s)
/* tipc_nametbl_unsubscribe - remove a subscription object from name table  */
void tipc_nametbl_unsubscribe(struct subscription *s)
{
	struct name_seq *seq;
	write_lock_bh(&tipc_nametbl_lock);
	seq = nametbl_find_seq(s->seq.type);
	if (seq != NULL){
		spin_lock_bh(&seq->lock);
		list_del_init(&s->nameseq_list);
		spin_unlock_bh(&seq->lock);
		if ((seq->first_free == 0) && list_empty(&seq->subscriptions)) {
			hlist_del_init(&seq->ns_list);
			kfree(seq->sseqs);
			kfree(seq);
		}
	}
	write_unlock_bh(&tipc_nametbl_lock);
}