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

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

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
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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;
+3 −0
Original line number Diff line number Diff line
@@ -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);

+3 −0
Original line number Diff line number Diff line
@@ -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);
+3 −0
Original line number Diff line number Diff line
@@ -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;
+3 −0
Original line number Diff line number Diff line
@@ -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: