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

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
...@@ -633,12 +633,10 @@ static void __init cmd640_init_dev(ide_drive_t *drive) ...@@ -633,12 +633,10 @@ static void __init cmd640_init_dev(ide_drive_t *drive)
static int cmd640_test_irq(ide_hwif_t *hwif) 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; 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; CFR_IDE01INTR;
u8 irq_stat = get_cmd640_reg(irq_reg);
pci_read_config_byte(dev, irq_reg, &irq_stat);
return (irq_stat & irq_mask) ? 1 : 0; return (irq_stat & irq_mask) ? 1 : 0;
} }
......
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