[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <E1GxS8x-0000q5-00@dorka.pomaz.szeredi.hu>
Date: Thu, 21 Dec 2006 18:55:47 +0100
From: Miklos Szeredi <miklos@...redi.hu>
To: rmk+lkml@....linux.org.uk
CC: linux-kernel@...r.kernel.org, linux-arch@...r.kernel.org
Subject: Re: fuse, get_user_pages, flush_anon_page, aliasing caches and all that again
> > Yes, note the flush_dcache_page() call in fuse_copy_finish(). That
> > could be replaced by the flush_kernel_dcache_page() (added by James
> > Bottomley together with flush_anon_page()) when all relevant
> > architectures have defined it.
>
> I should say that flush_anon_page() in its current form is going to be
> problematic for ARM. It is passed:
>
> 1. the struct page
> 2. the virtual address in process memory for the page
>
> It is not passed the mm or vma. This means that we have no idea whether
> the virtual address is in the currently mapped VM space or not. The
> common use of get_area_pages() is to get pages from other address
> spaces.
I'm not sure I understand. flush_anon_page() needs only to flush the
mapping for the given virtual address, no? It's always mapped at that
address (since it was just accessed through that). Any other mappings
of the anonymous page are irrelevant, they don't need to be flushed.
> If we use the supplied virtual address to perform cache maintainence of
> the userspace mapping, we might end up hitting a completely different
> processes address space, which may contain some page sensitive to such
> operations, or may not contain any page and thereby could cause a page
> fault on some ARM CPUs.
I think calling get_user_pages() from a different process' address
space simply doesn't make any sense.
Miklos
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists