Skip to contentSkip to conversation

lpfc 8.3.3 : Fix a couple of spin_lock and memory issues and a crash

PATCH New James Smart 1 participant 1 message Jun 10, 2009

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 3/5 lpfc 8.3.3 : Fix a couple of spin_lock and memory issues and a crash

Fix a couple of spin_lock and memory issues and a crash

Contains the following changes:
- Fixed error paths retaking a spin lock which they already hold
- Added code to free memory in a couple of error paths
- Added code to free RPI bit map while unloading driver
- Added code to write zero to memory object allocated through dma_alloc_coherent
- Fixed crash/hang with target or LUN resets

---

 drivers/scsi/lpfc/lpfc_init.c |    1 +
 drivers/scsi/lpfc/lpfc_mbox.c |    1 +
 drivers/scsi/lpfc/lpfc_sli.c  |   42 ++++++++++++++++++++++++++++++++---------
 3 files changed, 35 insertions(+), 9 deletions(-)
drivers/scsi/lpfc/lpfc_init.c +1 -0
@@ -3540,6 +3540,7 @@ lpfc_sli4_driver_resource_unset(struct lpfc_hba *phba)
 
 	/* Free the allocated rpi headers. */
 	lpfc_sli4_remove_rpi_hdrs(phba);
+	lpfc_sli4_remove_rpis(phba);
 
 	/* Free the ELS sgl list */
 	lpfc_free_active_sgl(phba);
drivers/scsi/lpfc/lpfc_mbox.c +1 -0
@@ -1631,6 +1631,7 @@ lpfc_sli4_config(struct lpfc_hba *phba, struct lpfcMboxq *mbox,
 		/* In case of malloc fails, proceed with whatever we have */
 		if (!viraddr)
 			break;
+		memset(viraddr, 0, PAGE_SIZE);
 		mbox->sge_array->addr[pagen] = viraddr;
 		/* Keep the first page for later sub-header construction */
 		if (pagen == 0)
drivers/scsi/lpfc/lpfc_sli.c +33 -9

99 lines not on this page · raw message