--- /dev/null
+From stable-bounces@linux.kernel.org Tue Jun 20 00:30:20 2006
+Date: Tue, 20 Jun 2006 00:29:41 -0700
+From: akpm@osdl.org
+To: aia21@cam.ac.uk, aia21@cantab.net, stable@kernel.org
+Cc:
+Subject: NTFS: Critical bug fix (affects MIPS and possibly others)
+
+From: Anton Altaparmakov <aia21@cam.ac.uk>
+
+It fixes a crash in NTFS on architectures where flush_dcache_page()
+is a real function. I never noticed this as all my testing is done on
+i386 where flush_dcache_page() is NULL.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=6700
+
+Many thanks to Pauline Ng for the detailed bug report and analysis!
+
+Signed-off-by: Anton Altaparmakov <aia21@cantab.net>
+Cc: <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@osdl.org>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+ fs/ntfs/file.c | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+--- linux-2.6.16.21.orig/fs/ntfs/file.c
++++ linux-2.6.16.21/fs/ntfs/file.c
+@@ -1489,14 +1489,15 @@ static inline void ntfs_flush_dcache_pag
+ unsigned nr_pages)
+ {
+ BUG_ON(!nr_pages);
++ /*
++ * Warning: Do not do the decrement at the same time as the call to
++ * flush_dcache_page() because it is a NULL macro on i386 and hence the
++ * decrement never happens so the loop never terminates.
++ */
+ do {
+- /*
+- * Warning: Do not do the decrement at the same time as the
+- * call because flush_dcache_page() is a NULL macro on i386
+- * and hence the decrement never happens.
+- */
++ --nr_pages;
+ flush_dcache_page(pages[nr_pages]);
+- } while (--nr_pages > 0);
++ } while (nr_pages > 0);
+ }
+
+ /**