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);