diff --git a/fs/super.c b/fs/super.c
index de41e1e46f0970b3c262fb577e0b6f332c6a59e5..6015c02296b7ad2adba75c7946b8fb4762a62265 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -1186,6 +1186,8 @@ int freeze_super(struct super_block *sb)
 			printk(KERN_ERR
 				"VFS:Filesystem freeze failed\n");
 			sb->s_frozen = SB_UNFROZEN;
+			smp_wmb();
+			wake_up(&sb->s_wait_unfrozen);
 			deactivate_locked_super(sb);
 			return ret;
 		}