[SCSI] pm80xx: fix for memory region free
authorSakthivel K <Sakthivel.SaravananKamalRaju@pmcs.com>
Mon, 4 Feb 2013 06:40:02 +0000 (12:10 +0530)
committerJames Bottomley <JBottomley@Parallels.com>
Fri, 22 Feb 2013 15:44:40 +0000 (15:44 +0000)
All memory regions are allocated based on variables total_len
and alignment but free was based on element_size.

Signed-off-by: Sakthivel K <DL.Team.PMC.SPC.Linux.open.source@pmcs.com>
Signed-off-by: Anand Kumar S <DL.Team.PMC.SPC.Linux.open.source@pmcs.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/pm8001/pm8001_init.c

index 4c9fe73..3d5e522 100644 (file)
@@ -140,7 +140,8 @@ static void pm8001_free(struct pm8001_hba_info *pm8001_ha)
        for (i = 0; i < USI_MAX_MEMCNT; i++) {
                if (pm8001_ha->memoryMap.region[i].virt_ptr != NULL) {
                        pci_free_consistent(pm8001_ha->pdev,
-                               pm8001_ha->memoryMap.region[i].element_size,
+                               (pm8001_ha->memoryMap.region[i].total_len +
+                               pm8001_ha->memoryMap.region[i].alignment),
                                pm8001_ha->memoryMap.region[i].virt_ptr,
                                pm8001_ha->memoryMap.region[i].phys_addr);
                        }