down_read(&interfaces_sem); write_lock_irqsave(&intf->users_lock, flags); rv = ipmi_destroy_user_nolock(user); if (!rv) { module_put(intf->handlers->owner); if (intf->handlers->dec_usecount) intf->handlers->dec_usecount(intf->send_info);
user->valid = 1;   spin_lock_irqsave(&intf->seq_lock, flags); list_del_rcu(&user->link);  for (i = 0; i < IPMI_IPMB_NUM_SEQ; i++) { if (intf->seq_table[i].inuse && (intf->seq_table[i].recv_msg->user == user)) { intf->seq_table[i].inuse = 0; }
int ipmi_destroy_user(ipmi_user_t user){	int           rv;	ipmi_smi_t    intf = user->intf;	unsigned long flags;	down_read(&interfaces_sem);	write_lock_irqsave(&intf->users_lock, flags);	rv = ipmi_destroy_user_nolock(user);	if (!rv) {		module_put(intf->handlers->owner);		if (intf->handlers->dec_usecount)			intf->handlers->dec_usecount(intf->send_info);	}			write_unlock_irqrestore(&intf->users_lock, flags);	up_read(&interfaces_sem);	return rv;}