Commit 40b61cc4 authored by Anton Altaparmakov's avatar Anton Altaparmakov Committed by Chris Wright

[PATCH] NTFS: Critical bug fix (affects MIPS and possibly others)

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: default avatarAnton Altaparmakov <aia21@cantab.net>
Cc: <stable@kernel.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarChris Wright <chrisw@sous-sol.org>
parent bb2f2dbc
...@@ -1489,14 +1489,15 @@ static inline void ntfs_flush_dcache_pages(struct page **pages, ...@@ -1489,14 +1489,15 @@ static inline void ntfs_flush_dcache_pages(struct page **pages,
unsigned nr_pages) unsigned nr_pages)
{ {
BUG_ON(!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 { do {
/* --nr_pages;
* 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.
*/
flush_dcache_page(pages[nr_pages]); flush_dcache_page(pages[nr_pages]);
} while (--nr_pages > 0); } while (nr_pages > 0);
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment