Skip to content

Commit

Permalink
m68k: Some network drivers do not check the platform
Browse files Browse the repository at this point in the history
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: Geert Uytterhoeven <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
geertu authored and torvalds committed May 18, 2008
1 parent d649770 commit 0f73448
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 0 deletions.
7 changes: 7 additions & 0 deletions drivers/net/82596.c
Original file line number Diff line number Diff line change
Expand Up @@ -1162,6 +1162,7 @@ struct net_device * __init i82596_probe(int unit)
memcpy(eth_addr, (void *) 0xfffc1f2c, 6); /* YUCK! Get addr from NOVRAM */
dev->base_addr = MVME_I596_BASE;
dev->irq = (unsigned) MVME16x_IRQ_I596;
goto found;
}
#endif
#ifdef ENABLE_BVME6000_NET
Expand All @@ -1176,6 +1177,7 @@ struct net_device * __init i82596_probe(int unit)
rtc[3] = msr;
dev->base_addr = BVME_I596_BASE;
dev->irq = (unsigned) BVME_IRQ_I596;
goto found;
}
#endif
#ifdef ENABLE_APRICOT
Expand Down Expand Up @@ -1212,8 +1214,13 @@ struct net_device * __init i82596_probe(int unit)
}

dev->irq = 10;
goto found;
}
#endif
err = -ENODEV;
goto out;

found:
dev->mem_start = (int)__get_free_pages(GFP_ATOMIC, 0);
if (!dev->mem_start) {
err = -ENOMEM;
Expand Down
3 changes: 3 additions & 0 deletions drivers/net/apne.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,9 @@ struct net_device * __init apne_probe(int unit)
#endif
int err;

if (!MACH_IS_AMIGA)
return ERR_PTR(-ENODEV);

if (apne_owned)
return ERR_PTR(-ENODEV);

Expand Down
3 changes: 3 additions & 0 deletions drivers/net/mac89x0.c
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,9 @@ struct net_device * __init mac89x0_probe(int unit)
int err = -ENODEV;
DECLARE_MAC_BUF(mac);

if (!MACH_IS_MAC)
return ERR_PTR(-ENODEV);

dev = alloc_etherdev(sizeof(struct net_local));
if (!dev)
return ERR_PTR(-ENOMEM);
Expand Down
3 changes: 3 additions & 0 deletions drivers/net/macmace.c
Original file line number Diff line number Diff line change
Expand Up @@ -781,6 +781,9 @@ static int __init mac_mace_init_module(void)
{
int err;

if (!MACH_IS_MAC)
return -ENODEV;

if ((err = platform_driver_register(&mac_mace_driver))) {
printk(KERN_ERR "Driver registration failed\n");
return err;
Expand Down
3 changes: 3 additions & 0 deletions drivers/net/sun3lance.c
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,9 @@ struct net_device * __init sun3lance_probe(int unit)
static int found;
int err = -ENODEV;

if (!MACH_IS_SUN3 && !MACH_IS_SUN3X)
return ERR_PTR(-ENODEV);

/* check that this machine has an onboard lance */
switch(idprom->id_machtype) {
case SM_SUN3|SM_3_50:
Expand Down

0 comments on commit 0f73448

Please sign in to comment.