unsigned long        flags; 
static int handle_bmc_rsp(ipmi_smi_t          intf,			  struct ipmi_smi_msg *msg){	struct ipmi_recv_msg *recv_msg;	int                  found = 0;	struct ipmi_user     *user;	unsigned long        flags;	recv_msg = (struct ipmi_recv_msg *) msg->user_data;	if (recv_msg == NULL)	{		printk(KERN_WARNING"IPMI message received with no owner. This\n"			"could be because of a malformed message, or\n"			"because of a hardware error.  Contact your\n"			"hardware vender for assistance\n");		return 0;	}	/* Make sure the user still exists. */	list_for_each_entry(user, &(intf->users), link) {		if (user == recv_msg->user) {			/* Found it, so we can deliver it */			found = 1;			break;		}	}	if ((! found) && recv_msg->user) {		/* The user for the message went away, so give up. */		spin_lock_irqsave(&intf->counter_lock, flags);		intf->unhandled_local_responses++;		spin_unlock_irqrestore(&intf->counter_lock, flags);		ipmi_free_recv_msg(recv_msg);	} else {		struct ipmi_system_interface_addr *smi_addr;		spin_lock_irqsave(&intf->counter_lock, flags);		intf->handled_local_responses++;		spin_unlock_irqrestore(&intf->counter_lock, flags);		recv_msg->recv_type = IPMI_RESPONSE_RECV_TYPE;		recv_msg->msgid = msg->msgid;		smi_addr = ((struct ipmi_system_interface_addr *)			    &(recv_msg->addr));		smi_addr->addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE;		smi_addr->channel = IPMI_BMC_CHANNEL;		smi_addr->lun = msg->rsp[0] & 3;		recv_msg->msg.netfn = msg->rsp[0] >> 2;		recv_msg->msg.cmd = msg->rsp[1];		memcpy(recv_msg->msg_data,		       &(msg->rsp[2]),		       msg->rsp_size - 2);		recv_msg->msg.data = recv_msg->msg_data;		recv_msg->msg.data_len = msg->rsp_size - 2;		deliver_response(recv_msg);	}	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/393d2cc354d150b8b4bb888a9da7db4c935e12bd/ipmi_msghandler.c/clean/drivers/char/ipmi/ipmi_msghandler.c