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

Commit a9ddabc5 authored by Sergei Shtylyov's avatar Sergei Shtylyov Committed by David S. Miller
Browse files

cmd640: fix kernel oops in test_irq() method



When implementing the test_iqr() method, I forgot that this driver is not an
ordinary PCI driver and also needs to support VLB variant of the chip. Moreover,
'hwif->dev' should be NULL, potentially causing oops in pci_read_config_byte().

Signed-off-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f693be4d
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -633,12 +633,10 @@ static void __init cmd640_init_dev(ide_drive_t *drive)

static int cmd640_test_irq(ide_hwif_t *hwif)
{
	struct pci_dev *dev	= to_pci_dev(hwif->dev);
	int irq_reg		= hwif->channel ? ARTTIM23 : CFR;
	u8  irq_stat, irq_mask	= hwif->channel ? ARTTIM23_IDE23INTR :
	u8  irq_mask		= hwif->channel ? ARTTIM23_IDE23INTR :
						  CFR_IDE01INTR;

	pci_read_config_byte(dev, irq_reg, &irq_stat);
	u8  irq_stat		= get_cmd640_reg(irq_reg);

	return (irq_stat & irq_mask) ? 1 : 0;
}