]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/2.6.20.2/bcm43xx-fix-assertion-failures-in-interrupt-handler.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 2.6.20.2 / bcm43xx-fix-assertion-failures-in-interrupt-handler.patch
CommitLineData
1bbce966
GKH
1From stable-bounces@linux.kernel.org Mon Mar 5 17:29:50 2007
2From: Pavel Roskin <proski@gnu.org>
3Date: Mon, 05 Mar 2007 19:28:00 -0600
4Subject: bcm43xx: Fix assertion failures in interrupt handler
5To: stable@kernel.org
6Cc: linux-wireless@vger.kernel.org, Bcm43xx-dev@lists.berlios.de, Michael Buesch <mb@bu3sch.de>
7Message-ID: <45ecc3a0.8we8IxI7lp6G5Y6l%Larry.Finger@lwfinger.net>
8
9
10From: Pavel Roskin <proski@gnu.org>
11
12In the bcm43xx interrupt handler, sanity checks are wrongly done before the
13verification that the interrupt is for the bcm43xx.
14
15Signed-off-by: Pavel Roskin <proski@gnu.org>
16Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
17Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
18
19---
20 drivers/net/wireless/bcm43xx/bcm43xx_main.c | 6 +++---
21 1 file changed, 3 insertions(+), 3 deletions(-)
22
23--- linux-2.6.20.1.orig/drivers/net/wireless/bcm43xx/bcm43xx_main.c
24+++ linux-2.6.20.1/drivers/net/wireless/bcm43xx/bcm43xx_main.c
25@@ -1864,9 +1864,6 @@ static irqreturn_t bcm43xx_interrupt_han
26
27 spin_lock(&bcm->irq_lock);
28
29- assert(bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED);
30- assert(bcm->current_core->id == BCM43xx_COREID_80211);
31-
32 reason = bcm43xx_read32(bcm, BCM43xx_MMIO_GEN_IRQ_REASON);
33 if (reason == 0xffffffff) {
34 /* irq not for us (shared irq) */
35@@ -1877,6 +1874,9 @@ static irqreturn_t bcm43xx_interrupt_han
36 if (!reason)
37 goto out;
38
39+ assert(bcm43xx_status(bcm) == BCM43xx_STAT_INITIALIZED);
40+ assert(bcm->current_core->id == BCM43xx_COREID_80211);
41+
42 bcm->dma_reason[0] = bcm43xx_read32(bcm, BCM43xx_MMIO_DMA0_REASON)
43 & 0x0001DC00;
44 bcm->dma_reason[1] = bcm43xx_read32(bcm, BCM43xx_MMIO_DMA1_REASON)