diff --git a/fs/inode.c b/fs/inode.c
index b2ba83d2c4e12425629ed3681f2d2ca2d147f2e1..a99b46498199c646c8a967e44e399f270e9e5ed3 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -702,6 +702,7 @@ void unlock_new_inode(struct inode *inode)
 	 * just created it (so there can be no old holders
 	 * that haven't tested I_LOCK).
 	 */
+	smp_mb();
 	WARN_ON((inode->i_state & (I_LOCK|I_NEW)) != (I_LOCK|I_NEW));
 	inode->i_state &= ~(I_LOCK|I_NEW);
 	wake_up_inode(inode);