>-----Original Message-----
>From: Ben Collins [mailto:[email protected]]
>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 <[email protected]>
>Cc: Sumit Saxena <[email protected]>
>Cc: DL-MegaRAID Linux <[email protected]>
>---
> 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 <[email protected]>


--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to