mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
[SCSI] 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@servergy.com> Acked-by: Sumit Saxena <sumit.saxena@lsi.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
6ad55502c6
commit
11f8a7b31f
@ -1527,7 +1527,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];
|
||||
|
@ -3615,6 +3615,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;
|
||||
@ -3623,14 +3624,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");
|
||||
|
Loading…
Reference in New Issue
Block a user