Commit 179fb0c7 authored by Olaf Hering's avatar Olaf Hering Committed by Linus Torvalds

do not truncate irq number for icom adapter

irq values are u32, not u8. Large irq numbers will be truncated,
free_irq may free a different irq.

Remove incorrectly sized struct member and use the one from pci_dev.
Signed-off-by: default avatarOlaf Hering <olaf@aepfle.de>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 91fcd412
...@@ -1473,7 +1473,7 @@ static void icom_remove_adapter(struct icom_adapter *icom_adapter) ...@@ -1473,7 +1473,7 @@ static void icom_remove_adapter(struct icom_adapter *icom_adapter)
} }
} }
free_irq(icom_adapter->irq_number, (void *) icom_adapter); free_irq(icom_adapter->pci_dev->irq, (void *) icom_adapter);
iounmap(icom_adapter->base_addr); iounmap(icom_adapter->base_addr);
icom_free_adapter(icom_adapter); icom_free_adapter(icom_adapter);
pci_release_regions(icom_adapter->pci_dev); pci_release_regions(icom_adapter->pci_dev);
...@@ -1539,7 +1539,6 @@ static int __devinit icom_probe(struct pci_dev *dev, ...@@ -1539,7 +1539,6 @@ static int __devinit icom_probe(struct pci_dev *dev,
} }
icom_adapter->base_addr_pci = pci_resource_start(dev, 0); icom_adapter->base_addr_pci = pci_resource_start(dev, 0);
icom_adapter->irq_number = dev->irq;
icom_adapter->pci_dev = dev; icom_adapter->pci_dev = dev;
icom_adapter->version = ent->driver_data; icom_adapter->version = ent->driver_data;
icom_adapter->subsystem_id = ent->subdevice; icom_adapter->subsystem_id = ent->subdevice;
...@@ -1570,7 +1569,7 @@ static int __devinit icom_probe(struct pci_dev *dev, ...@@ -1570,7 +1569,7 @@ static int __devinit icom_probe(struct pci_dev *dev,
icom_port = &icom_adapter->port_info[index]; icom_port = &icom_adapter->port_info[index];
if (icom_port->status == ICOM_PORT_ACTIVE) { if (icom_port->status == ICOM_PORT_ACTIVE) {
icom_port->uart_port.irq = icom_port->adapter->irq_number; icom_port->uart_port.irq = icom_port->adapter->pci_dev->irq;
icom_port->uart_port.type = PORT_ICOM; icom_port->uart_port.type = PORT_ICOM;
icom_port->uart_port.iotype = UPIO_MEM; icom_port->uart_port.iotype = UPIO_MEM;
icom_port->uart_port.membase = icom_port->uart_port.membase =
......
...@@ -258,7 +258,6 @@ struct icom_port { ...@@ -258,7 +258,6 @@ struct icom_port {
struct icom_adapter { struct icom_adapter {
void __iomem * base_addr; void __iomem * base_addr;
unsigned long base_addr_pci; unsigned long base_addr_pci;
unsigned char irq_number;
struct pci_dev *pci_dev; struct pci_dev *pci_dev;
struct icom_port port_info[4]; struct icom_port port_info[4];
int index; int index;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment