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 @@
/* 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);