[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20081104192357.2b0dbe22@redhat.com>
Date: Tue, 4 Nov 2008 19:23:57 -0500
From: Chuck Ebbert <cebbert@...hat.com>
To: netdev@...r.kernel.org
Subject: [proposed patch] via-rhine: prevent oops when requesting an IRQ
via-rhine: prevent oops when requesting an IRQ
via-rhine requests an IRQ before it's ready to handle an interrupt.
It oopses when CONFIG_DEBUG_SHIRQ is enabled.
https://bugzilla.redhat.com/show_bug.cgi?id=469303
---
NOTE: UNTESTED: Is it okay to init the hardware before requesting the
IRQ, or should that be done afterward?
Index: linux-2.6.27.noarch/drivers/net/via-rhine.c
===================================================================
--- linux-2.6.27.noarch.orig/drivers/net/via-rhine.c
+++ linux-2.6.27.noarch/drivers/net/via-rhine.c
@@ -1141,24 +1141,27 @@ static int rhine_open(struct net_device
void __iomem *ioaddr = rp->base;
int rc;
- rc = request_irq(rp->pdev->irq, &rhine_interrupt, IRQF_SHARED, dev->name,
- dev);
+ rc = alloc_ring(dev);
if (rc)
return rc;
- if (debug > 1)
- printk(KERN_DEBUG "%s: rhine_open() irq %d.\n",
- dev->name, rp->pdev->irq);
-
- rc = alloc_ring(dev);
- if (rc) {
- free_irq(rp->pdev->irq, dev);
- return rc;
- }
alloc_rbufs(dev);
alloc_tbufs(dev);
rhine_chip_reset(dev);
init_registers(dev);
+
+ rc = request_irq(rp->pdev->irq, &rhine_interrupt, IRQF_SHARED, dev->name,
+ dev);
+ if (rc) {
+ free_tbufs(dev);
+ free_rbufs(dev);
+ free_ring(dev);
+ return rc;
+ }
+
+ if (debug > 1)
+ printk(KERN_DEBUG "%s: rhine_open() irq %d.\n",
+ dev->name, rp->pdev->irq);
if (debug > 2)
printk(KERN_DEBUG "%s: Done rhine_open(), status %4.4x "
"MII status: %4.4x.\n",
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists