This adds locking around the register access in the interrupt service routine.
Signed-off-by: Michael Buesch <m...@bu3sch.de> Reported-by: Felipe Balbi <ba...@ti.com> --- Index: linux-omap-2.6/drivers/cbus/retu.c =================================================================== --- linux-omap-2.6.orig/drivers/cbus/retu.c 2011-02-28 16:59:10.767302605 +0100 +++ linux-omap-2.6/drivers/cbus/retu.c 2011-02-28 16:59:58.629389762 +0100 @@ -198,10 +198,12 @@ static irqreturn_t retu_irq_handler(int u16 idr; u16 imr; + mutex_lock(&retu->mutex); idr = __retu_read_reg(retu, RETU_REG_IDR); imr = __retu_read_reg(retu, RETU_REG_IMR); - idr &= ~imr; + mutex_unlock(&retu->mutex); + idr &= ~imr; if (!idr) { dev_vdbg(retu->dev, "No IRQ, spurious?\n"); return IRQ_NONE; -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html