Fix a (rare) race condition in mv_interrupt() when using MSI. The value of hpriv->main_irq_mask_addr can change on on the fly, and without this patch we could end up writing back a stale copy to the hardware. Signed-off-by: Mark Lord <mlord@xxxxxxxxx> --- Duplicate of earlier patch submitted for #upstream-fixes (2.6.29). This one is for libata-dev #upstream --- old/drivers/ata/sata_mv.c 2009-03-10 14:04:49.000000000 -0400 +++ new/drivers/ata/sata_mv.c 2009-03-10 17:49:50.000000000 -0400 @@ -2631,12 +2631,13 @@ else handled = mv_host_intr(host, pending_irqs); } - spin_unlock(&host->lock); /* for MSI: unmask; interrupt cause bits will retrigger now */ if (using_msi) writel(hpriv->main_irq_mask, hpriv->main_irq_mask_addr); + spin_unlock(&host->lock); + return IRQ_RETVAL(handled); } -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html