spi/bfin_spi: use nosync when disabling the IRQ from the IRQ handler
authorYi Li <yi.li@analog.com>
Mon, 7 Dec 2009 08:07:01 +0000 (08:07 +0000)
committerMike Frysinger <vapier@gentoo.org>
Mon, 18 Oct 2010 06:49:38 +0000 (02:49 -0400)
Using disable_irq() on the IRQ whose handler we are currently executing in
can easily lead to a hang.  So use the nosync variant here.

Signed-off-by: Yi Li <yi.li@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
drivers/spi/spi_bfin5xx.c

index 54f9dbb..d446524 100644 (file)
@@ -448,7 +448,7 @@ static irqreturn_t bfin_spi_pio_irq_handler(int irq, void *dev_id)
                /* Move to next transfer */
                msg->state = bfin_spi_next_transfer(drv_data);
 
-               disable_irq(drv_data->spi_irq);
+               disable_irq_nosync(drv_data->spi_irq);
 
                /* Schedule transfer tasklet */
                tasklet_schedule(&drv_data->pump_transfers);