unmap_cmd_data(&evt_struct->iu.srp.cmd, hostdata->dev); 
unmap_cmd_data(&evt_struct->iu.srp.cmd, evt_struct, hostdata->dev); 
static int ibmvscsi_send_srp_event(struct srp_event_struct *evt_struct,				   struct ibmvscsi_host_data *hostdata){	struct scsi_cmnd *cmnd;	u64 *crq_as_u64 = (u64 *) &evt_struct->crq;	int rc;	/* If we have exhausted our request limit, just fail this request.	 * Note that there are rare cases involving driver generated requests 	 * (such as task management requests) that the mid layer may think we	 * can handle more requests (can_queue) when we actually can't	 */	if ((evt_struct->crq.format == VIOSRP_SRP_FORMAT) &&	    (atomic_dec_if_positive(&hostdata->request_limit) < 0)) {		/* See if the adapter is disabled */		if (atomic_read(&hostdata->request_limit) < 0)			goto send_error;			printk(KERN_WARNING 		       "ibmvscsi: Warning, request_limit exceeded\n");		unmap_cmd_data(&evt_struct->iu.srp.cmd,			       hostdata->dev);		free_event_struct(&hostdata->pool, evt_struct);		return SCSI_MLQUEUE_HOST_BUSY;	}	/* Copy the IU into the transfer area */	*evt_struct->xfer_iu = evt_struct->iu;	evt_struct->xfer_iu->srp.generic.tag = (u64)evt_struct;	/* Add this to the sent list.  We need to do this 	 * before we actually send 	 * in case it comes back REALLY fast	 */	list_add_tail(&evt_struct->list, &hostdata->sent);	if ((rc =	     ibmvscsi_send_crq(hostdata, crq_as_u64[0], crq_as_u64[1])) != 0) {		list_del(&evt_struct->list);		printk(KERN_ERR "ibmvscsi: failed to send event struct rc %d\n",		       rc);		goto send_error;	}	return 0; send_error:	unmap_cmd_data(&evt_struct->iu.srp.cmd, hostdata->dev);	if ((cmnd = evt_struct->cmnd) != NULL) {		cmnd->result = DID_ERROR << 16;		evt_struct->cmnd_done(cmnd);	} else if (evt_struct->done)		evt_struct->done(evt_struct);		free_event_struct(&hostdata->pool, evt_struct);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4dddbc26c3895ecdab1f4b16435685b47f96f599/ibmvscsi.c/buggy/drivers/scsi/ibmvscsi/ibmvscsi.c