Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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);
	icom_free_adapter(icom_adapter);
	pci_release_regions(icom_adapter->pci_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->irq_number = dev->irq;
	 icom_adapter->pci_dev = dev;
	 icom_adapter->version = ent->driver_data;
	 icom_adapter->subsystem_id = ent->subdevice;
@@ -1570,7 +1569,7 @@ static int __devinit icom_probe(struct pci_dev *dev,
		icom_port = &icom_adapter->port_info[index];

		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.iotype = UPIO_MEM;
			icom_port->uart_port.membase =
+0 −1
Original line number Diff line number Diff line
@@ -258,7 +258,6 @@ struct icom_port {
struct icom_adapter {
	void __iomem * base_addr;
	unsigned long base_addr_pci;
	unsigned char irq_number;
	struct pci_dev *pci_dev;
	struct icom_port port_info[4];
	int index;