--- /dev/null
+From 87421cb6010a2f6494938fbe0a95e1b096b3b7af Mon Sep 17 00:00:00 2001
+From: Solomon Peachy <pizza@shaftnet.org>
+Date: Mon, 23 Sep 2013 16:00:04 -0400
+Subject: cw1200: Use a threaded oneshot irq handler for cw1200_spi
+
+From: Solomon Peachy <pizza@shaftnet.org>
+
+commit 87421cb6010a2f6494938fbe0a95e1b096b3b7af upstream.
+
+This supercedes the older patch ("cw1200: Don't perform SPI transfers in
+interrupt context") that badly attempted to fix this problem.
+
+This is a far simpler solution, which has the added benefit of
+actually working.
+
+Signed-off-by: Solomon Peachy <pizza@shaftnet.org>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/net/wireless/cw1200/cw1200_spi.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+--- a/drivers/net/wireless/cw1200/cw1200_spi.c
++++ b/drivers/net/wireless/cw1200/cw1200_spi.c
+@@ -250,9 +250,10 @@ static int cw1200_spi_irq_subscribe(stru
+
+ pr_debug("SW IRQ subscribe\n");
+
+- ret = request_any_context_irq(self->func->irq, cw1200_spi_irq_handler,
+- IRQF_TRIGGER_HIGH,
+- "cw1200_wlan_irq", self);
++ ret = request_threaded_irq(self->func->irq, NULL,
++ cw1200_spi_irq_handler,
++ IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
++ "cw1200_wlan_irq", self);
+ if (WARN_ON(ret < 0))
+ goto exit;
+