]>
Commit | Line | Data |
---|---|---|
1bbce966 GKH |
1 | From stable-bounces@linux.kernel.org Mon Mar 5 17:29:50 2007 |
2 | From: Pavel Roskin <proski@gnu.org> | |
3 | Date: Mon, 05 Mar 2007 19:28:00 -0600 | |
4 | Subject: bcm43xx: Fix assertion failures in interrupt handler | |
5 | To: stable@kernel.org | |
6 | Cc: linux-wireless@vger.kernel.org, Bcm43xx-dev@lists.berlios.de, Michael Buesch <mb@bu3sch.de> | |
7 | Message-ID: <45ecc3a0.8we8IxI7lp6G5Y6l%Larry.Finger@lwfinger.net> | |
8 | ||
9 | ||
10 | From: Pavel Roskin <proski@gnu.org> | |
11 | ||
12 | In the bcm43xx interrupt handler, sanity checks are wrongly done before the | |
13 | verification that the interrupt is for the bcm43xx. | |
14 | ||
15 | Signed-off-by: Pavel Roskin <proski@gnu.org> | |
16 | Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net> | |
17 | Signed-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) |