| From stable-bounces@linux.kernel.org Mon Mar 5 17:29:50 2007 |
| From: Pavel Roskin <proski@gnu.org> |
| Date: Mon, 05 Mar 2007 19:28:00 -0600 |
| Subject: bcm43xx: Fix assertion failures in interrupt handler |
| To: stable@kernel.org |
| Cc: linux-wireless@vger.kernel.org, Bcm43xx-dev@lists.berlios.de, Michael Buesch <mb@bu3sch.de> |
| Message-ID: <45ecc3a0.8we8IxI7lp6G5Y6l%Larry.Finger@lwfinger.net> |
| |
| |
| From: Pavel Roskin <proski@gnu.org> |
| |
| In the bcm43xx interrupt handler, sanity checks are wrongly done before the |
| verification that the interrupt is for the bcm43xx. |
| |
| Signed-off-by: Pavel Roskin <proski@gnu.org> |
| Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/net/wireless/bcm43xx/bcm43xx_main.c | 6 +++--- |
| 1 file changed, 3 insertions(+), 3 deletions(-) |
| |
| --- linux-2.6.20.1.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c |
| +++ linux-2.6.20.1/drivers/net/wireless/bcm43xx/bcm43xx_main.c |
| @@ -1864,9 +1864,6 @@ static irqreturn_t bcm43xx_interrupt_han |
| |
| spin_lock(&bcm->irq_lock); |
| |
| - assert(bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED); |
| - assert(bcm->current_core->id == BCM43xx_COREID_80211); |
| - |
| reason = bcm43xx_read32(bcm, BCM43xx_MMIO_GEN_IRQ_REASON); |
| if (reason == 0xffffffff) { |
| /* irq not for us (shared irq) */ |
| @@ -1877,6 +1874,9 @@ static irqreturn_t bcm43xx_interrupt_han |
| if (!reason) |
| goto out; |
| |
| + assert(bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED); |
| + assert(bcm->current_core->id == BCM43xx_COREID_80211); |
| + |
| bcm->dma_reason[0] = bcm43xx_read32(bcm, BCM43xx_MMIO_DMA0_REASON) |
| & 0x0001DC00; |
| bcm->dma_reason[1] = bcm43xx_read32(bcm, BCM43xx_MMIO_DMA1_REASON) |