if (mp) kfree(mp);  
kfree(mp); 
lpfc_reg_login(struct lpfc_hba * phba,	       uint32_t did, uint8_t * param, LPFC_MBOXQ_t * pmb, uint32_t flag){	uint8_t *sparam;	struct lpfc_dmabuf *mp;	MAILBOX_t *mb;	struct lpfc_sli *psli;	psli = &phba->sli;	mb = &pmb->mb;	memset(pmb, 0, sizeof (LPFC_MBOXQ_t));	mb->un.varRegLogin.rpi = 0;	mb->un.varRegLogin.did = did;	mb->un.varWords[30] = flag;	/* Set flag to issue action on cmpl */	mb->mbxOwner = OWN_HOST;	/* Get a buffer to hold NPorts Service Parameters */	if (((mp = kmalloc(sizeof (struct lpfc_dmabuf), GFP_KERNEL)) == NULL) ||	    ((mp->virt = lpfc_mbuf_alloc(phba, 0, &(mp->phys))) == 0)) {		if (mp)			kfree(mp);		mb->mbxCommand = MBX_REG_LOGIN64;		/* REG_LOGIN: no buffers */		lpfc_printf_log(phba,			       KERN_WARNING,			       LOG_MBOX,			       "%d:0302 REG_LOGIN: no buffers Data x%x x%x\n",			       phba->brd_no,			       (uint32_t) did, (uint32_t) flag);		return (1);	}	INIT_LIST_HEAD(&mp->list);	sparam = mp->virt;	/* Copy param's into a new buffer */	memcpy(sparam, param, sizeof (struct serv_parm));	/* save address for completion */	pmb->context1 = (uint8_t *) mp;	mb->mbxCommand = MBX_REG_LOGIN64;	mb->un.varRegLogin.un.sp64.tus.f.bdeSize = sizeof (struct serv_parm);	mb->un.varRegLogin.un.sp64.addrHigh = putPaddrHigh(mp->phys);	mb->un.varRegLogin.un.sp64.addrLow = putPaddrLow(mp->phys);	return (0);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/c9475cb0c358ff0dd473544280d92482df491913/lpfc_mbox.c/buggy/drivers/scsi/lpfc/lpfc_mbox.c