>-----Original Message----- >From: Ben Collins [mailto:ben.c@xxxxxxxxxxxx] >Sent: Friday, September 13, 2013 10:17 PM >To: linux-scsi >Cc: Saxena, Sumit; DL-MegaRAID Linux >Subject: [PATCH] megaraid: Use resource_size_t for PCI resources, not >long > >The assumption that sizeof(long) >= sizeof(resource_size_t) can lead to >truncation of the PCI resource address, meaning this driver didn't work >on 32-bit systems with 64-bit PCI adressing ranges. > >Signed-off-by: Ben Collins <ben.c@xxxxxxxxxxxx> >Cc: Sumit Saxena <Sumit.Saxena@xxxxxxx> >Cc: DL-MegaRAID Linux <megaraidlinux@xxxxxxx> >--- > drivers/scsi/megaraid/megaraid_sas.h | 1 - > drivers/scsi/megaraid/megaraid_sas_base.c | 5 +++-- > 2 files changed, 3 insertions(+), 3 deletions(-) > >diff --git a/drivers/scsi/megaraid/megaraid_sas.h >b/drivers/scsi/megaraid/megaraid_sas.h >index 04a42a5..2f58758 100644 >--- a/drivers/scsi/megaraid/megaraid_sas.h >+++ b/drivers/scsi/megaraid/megaraid_sas.h >@@ -1460,7 +1460,6 @@ struct megasas_instance { > u32 *reply_queue; > dma_addr_t reply_queue_h; > >- unsigned long base_addr; > struct megasas_register_set __iomem *reg_set; > u32 *reply_post_host_index_addr[MR_MAX_MSIX_REG_ARRAY]; > struct megasas_pd_list pd_list[MEGASAS_MAX_PD]; >diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c >b/drivers/scsi/megaraid/megaraid_sas_base.c >index 1f0ca68..5df5522 100644 >--- a/drivers/scsi/megaraid/megaraid_sas_base.c >+++ b/drivers/scsi/megaraid/megaraid_sas_base.c >@@ -3498,6 +3498,7 @@ static int megasas_init_fw(struct megasas_instance >*instance) > u32 max_sectors_1; > u32 max_sectors_2; > u32 tmp_sectors, msix_enable, scratch_pad_2; >+ resource_size_t base_addr; > struct megasas_register_set __iomem *reg_set; > struct megasas_ctrl_info *ctrl_info; > unsigned long bar_list; >@@ -3506,14 +3507,14 @@ static int megasas_init_fw(struct >megasas_instance *instance) > /* Find first memory bar */ > bar_list = pci_select_bars(instance->pdev, IORESOURCE_MEM); > instance->bar = find_first_bit(&bar_list, sizeof(unsigned long)); >- instance->base_addr = pci_resource_start(instance->pdev, instance- >>bar); > if (pci_request_selected_regions(instance->pdev, instance->bar, > "megasas: LSI")) { > printk(KERN_DEBUG "megasas: IO memory region busy!\n"); > return -EBUSY; > } > >- instance->reg_set = ioremap_nocache(instance->base_addr, 8192); >+ base_addr = pci_resource_start(instance->pdev, instance->bar); >+ instance->reg_set = ioremap_nocache(base_addr, 8192); > > if (!instance->reg_set) { > printk(KERN_DEBUG "megasas: Failed to map IO mem\n"); >-- >1.8.3.2 > > >-- >Ben Collins - Principal Architect >Servergy, Inc. - www.servergy.com Acked-by: Sumit Saxena <sumit.saxena@xxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html