diff --git a/fs/nfs/super.c b/fs/nfs/super.c
index 75bcc3f0e0b5371fa3e6dc09918ecff843af14cb..e288f06d3fa7de5f6d06e134b1854230aa9b7611 100644
--- a/fs/nfs/super.c
+++ b/fs/nfs/super.c
@@ -1977,6 +1977,15 @@ nfs_remount(struct super_block *sb, int *flags, char *raw_data)
 	if (error < 0)
 		goto out;
 
+	/*
+	 * noac is a special case. It implies -o sync, but that's not
+	 * necessarily reflected in the mtab options. do_remount_sb
+	 * will clear MS_SYNCHRONOUS if -o sync wasn't specified in the
+	 * remount options, so we have to explicitly reset it.
+	 */
+	if (data->flags & NFS_MOUNT_NOAC)
+		*flags |= MS_SYNCHRONOUS;
+
 	/* compare new mount options with old ones */
 	error = nfs_compare_remount_data(nfss, data);
 out: