drivers/ata/libata-eh: Add smp_mb() before spin_unlock_wait() Many spin_unlock_wait() implementations do not provide release semantics and it is not clear that this use case does not require them. This commit therefore adds an smp_mb() before the spin_unlock_wait() to ensure that any needed release semantics are provided. Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index ef68232..cc01b77 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c
@@ -704,8 +704,10 @@ void ata_scsi_cmd_error_handler(struct Scsi_Host *host, struct ata_port *ap, /* initialize eh_tries */ ap->eh_tries = ATA_EH_MAX_TRIES; - } else + } else { + smp_mb(); /* Add release semantics for spin_unlock_wait(). */ spin_unlock_wait(ap->lock); + } } EXPORT_SYMBOL(ata_scsi_cmd_error_handler);