diff options
author | Solomon Peachy <pizza@shaftnet.org> | 2013-10-09 12:15:11 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-10-10 14:05:42 -0400 |
commit | 4978705d26149a629b9f50ff221caed6f1ae3048 (patch) | |
tree | 3fabc899e9b591ad1fbe8c5a332a50ac8eaf58c5 | |
parent | 9473ca6e920a3b9ca902753ce52833657f9221cc (diff) |
wireless: cw1200: acquire hwbus lock around cw1200_irq_handler() call.
This fixes "lost interrupt" problems that occurred on SPI-based systems.
cw1200_irq_handler() expects the hwbus to be locked, but on the
SPI-path, that lock wasn't taken (unlike in the SDIO-path, where the
generic SDIO-code takes care of acquiring the lock).
Cc: stable@vger.kernel.org
Signed-off-by: David Mosberger <davidm@egauge.net>
Signed-off-by: Solomon Peachy <pizza@shaftnet.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/cw1200/cw1200_spi.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/wireless/cw1200/cw1200_spi.c b/drivers/net/wireless/cw1200/cw1200_spi.c index 899cad34ccd3..755a0c8edfe1 100644 --- a/drivers/net/wireless/cw1200/cw1200_spi.c +++ b/drivers/net/wireless/cw1200/cw1200_spi.c | |||
@@ -237,7 +237,9 @@ static irqreturn_t cw1200_spi_irq_handler(int irq, void *dev_id) | |||
237 | struct hwbus_priv *self = dev_id; | 237 | struct hwbus_priv *self = dev_id; |
238 | 238 | ||
239 | if (self->core) { | 239 | if (self->core) { |
240 | cw1200_spi_lock(self); | ||
240 | cw1200_irq_handler(self->core); | 241 | cw1200_irq_handler(self->core); |
242 | cw1200_spi_unlock(self); | ||
241 | return IRQ_HANDLED; | 243 | return IRQ_HANDLED; |
242 | } else { | 244 | } else { |
243 | return IRQ_NONE; | 245 | return IRQ_NONE; |