| Submitter | Kamal Dasu |
|---|---|
| Date | June 14, 2013, 6:10 p.m. |
| Message ID | <-> |
| Download | mbox | patch |
| Permalink | /patch/5469/ |
| State | Accepted |
| Delegated to: | Ralf Baechle |
| Headers | show |
Comments
On Fri, Jun 14, 2013 at 02:10:03PM -0400, Kamal Dasu wrote: > get_user_pages_fast() is missing cache flushes for MIPS platforms > with cache alias. Filesystem failures observed with DirectIO > operations due to missing flush_anon_page() that use page coloring > logic to work with cache aliases. This fix falls through to take > slow_irqon path that calls get_user_pages() that has required > logic for platforms where cpu_has_dc_aliases is true. A bit unsatisfying to always fall back to the slow variant yet I like the patch because of it's simplicity but I wonder if there's not a better solution. Ralf
On Tue, Jun 18, 2013 at 9:47 AM, Ralf Baechle <> wrote: > On Fri, Jun 14, 2013 at 02:10:03PM -0400, Kamal Dasu wrote: > >> get_user_pages_fast() is missing cache flushes for MIPS platforms >> with cache alias. Filesystem failures observed with DirectIO >> operations due to missing flush_anon_page() that use page coloring >> logic to work with cache aliases. This fix falls through to take >> slow_irqon path that calls get_user_pages() that has required >> logic for platforms where cpu_has_dc_aliases is true. > > A bit unsatisfying to always fall back to the slow variant yet I like > the patch because of it's simplicity but I wonder if there's not a > better solution. Hi Ralf, What are your thoughts on pushing this fix to the stable tree for 3.4+? Without Kamal's patch, ntfs-3g is completely broken on MIPS platforms that have cache aliases. Thanks.
Patch
diff --git a/arch/mips/mm/gup.c b/arch/mips/mm/gup.c index d4ea5c9..346fb7e 100644 --- a/arch/mips/mm/gup.c +++ b/arch/mips/mm/gup.c @@ -273,7 +273,7 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write, len = (unsigned long) nr_pages << PAGE_SHIFT; end = start + len; - if (end < start) + if (end < start || cpu_has_dc_aliases) goto slow_irqon; /* XXX: batch / limit 'nr' */
get_user_pages_fast() is missing cache flushes for MIPS platforms with cache alias. Filesystem failures observed with DirectIO operations due to missing flush_anon_page() that use page coloring logic to work with cache aliases. This fix falls through to take slow_irqon path that calls get_user_pages() that has required logic for platforms where cpu_has_dc_aliases is true. Signed-off-by: Kamal Dasu <> --- arch/mips/mm/gup.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)