Commit 0f734484 authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Linus Torvalds

m68k: Some network drivers do not check the platform

Some network drivers do not check whether they're actually running on the
correct platform, causing multi-platform kernels to crash if they are not.
Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent d6497700
...@@ -1162,6 +1162,7 @@ struct net_device * __init i82596_probe(int unit) ...@@ -1162,6 +1162,7 @@ struct net_device * __init i82596_probe(int unit)
memcpy(eth_addr, (void *) 0xfffc1f2c, 6); /* YUCK! Get addr from NOVRAM */ memcpy(eth_addr, (void *) 0xfffc1f2c, 6); /* YUCK! Get addr from NOVRAM */
dev->base_addr = MVME_I596_BASE; dev->base_addr = MVME_I596_BASE;
dev->irq = (unsigned) MVME16x_IRQ_I596; dev->irq = (unsigned) MVME16x_IRQ_I596;
goto found;
} }
#endif #endif
#ifdef ENABLE_BVME6000_NET #ifdef ENABLE_BVME6000_NET
...@@ -1176,6 +1177,7 @@ struct net_device * __init i82596_probe(int unit) ...@@ -1176,6 +1177,7 @@ struct net_device * __init i82596_probe(int unit)
rtc[3] = msr; rtc[3] = msr;
dev->base_addr = BVME_I596_BASE; dev->base_addr = BVME_I596_BASE;
dev->irq = (unsigned) BVME_IRQ_I596; dev->irq = (unsigned) BVME_IRQ_I596;
goto found;
} }
#endif #endif
#ifdef ENABLE_APRICOT #ifdef ENABLE_APRICOT
...@@ -1212,8 +1214,13 @@ struct net_device * __init i82596_probe(int unit) ...@@ -1212,8 +1214,13 @@ struct net_device * __init i82596_probe(int unit)
} }
dev->irq = 10; dev->irq = 10;
goto found;
} }
#endif #endif
err = -ENODEV;
goto out;
found:
dev->mem_start = (int)__get_free_pages(GFP_ATOMIC, 0); dev->mem_start = (int)__get_free_pages(GFP_ATOMIC, 0);
if (!dev->mem_start) { if (!dev->mem_start) {
err = -ENOMEM; err = -ENOMEM;
......
...@@ -127,6 +127,9 @@ struct net_device * __init apne_probe(int unit) ...@@ -127,6 +127,9 @@ struct net_device * __init apne_probe(int unit)
#endif #endif
int err; int err;
if (!MACH_IS_AMIGA)
return ERR_PTR(-ENODEV);
if (apne_owned) if (apne_owned)
return ERR_PTR(-ENODEV); return ERR_PTR(-ENODEV);
......
...@@ -183,6 +183,9 @@ struct net_device * __init mac89x0_probe(int unit) ...@@ -183,6 +183,9 @@ struct net_device * __init mac89x0_probe(int unit)
int err = -ENODEV; int err = -ENODEV;
DECLARE_MAC_BUF(mac); DECLARE_MAC_BUF(mac);
if (!MACH_IS_MAC)
return ERR_PTR(-ENODEV);
dev = alloc_etherdev(sizeof(struct net_local)); dev = alloc_etherdev(sizeof(struct net_local));
if (!dev) if (!dev)
return ERR_PTR(-ENOMEM); return ERR_PTR(-ENOMEM);
......
...@@ -781,6 +781,9 @@ static int __init mac_mace_init_module(void) ...@@ -781,6 +781,9 @@ static int __init mac_mace_init_module(void)
{ {
int err; int err;
if (!MACH_IS_MAC)
return -ENODEV;
if ((err = platform_driver_register(&mac_mace_driver))) { if ((err = platform_driver_register(&mac_mace_driver))) {
printk(KERN_ERR "Driver registration failed\n"); printk(KERN_ERR "Driver registration failed\n");
return err; return err;
......
...@@ -250,6 +250,9 @@ struct net_device * __init sun3lance_probe(int unit) ...@@ -250,6 +250,9 @@ struct net_device * __init sun3lance_probe(int unit)
static int found; static int found;
int err = -ENODEV; int err = -ENODEV;
if (!MACH_IS_SUN3 && !MACH_IS_SUN3X)
return ERR_PTR(-ENODEV);
/* check that this machine has an onboard lance */ /* check that this machine has an onboard lance */
switch(idprom->id_machtype) { switch(idprom->id_machtype) {
case SM_SUN3|SM_3_50: case SM_SUN3|SM_3_50:
......
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