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

Commit c14bac62 authored by Cyrill V. Gorcunov's avatar Cyrill V. Gorcunov Committed by Jeff Garzik
Browse files

SUN3/3X Lance trivial fix improved



This patch adds checking for allocated DVMA memory and granted IRQ line.

Signed-off-by: default avatarCyrill V. Gorcunov <gorcunov@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent fadac406
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -336,13 +336,27 @@ static int __init lance_probe( struct net_device *dev)

	/* XXX - leak? */
	MEM = dvma_malloc_align(sizeof(struct lance_memory), 0x10000);
	if (MEM == NULL) {
#ifdef CONFIG_SUN3
		iounmap((void __iomem *)ioaddr);
#endif
		printk(KERN_WARNING "SUN3 Lance couldn't allocate DVMA memory\n");
		return 0;
	}

	lp->iobase = (volatile unsigned short *)ioaddr;
	dev->base_addr = (unsigned long)ioaddr; /* informational only */

	REGA(CSR0) = CSR0_STOP;

	request_irq(LANCE_IRQ, lance_interrupt, IRQF_DISABLED, "SUN3 Lance", dev);
	if (request_irq(LANCE_IRQ, lance_interrupt, IRQF_DISABLED, "SUN3 Lance", dev) < 0) {
#ifdef CONFIG_SUN3
		iounmap((void __iomem *)ioaddr);
#endif
		dvma_free((void *)MEM);
		printk(KERN_WARNING "SUN3 Lance unable to allocate IRQ\n");
		return 0;
	}
	dev->irq = (unsigned short)LANCE_IRQ;