Re: fuse, get_user_pages, flush_anon_page, aliasing caches and all that again

From: Russell King
Date: Fri Dec 22 2006 - 03:43:56 EST


On Fri, Dec 22, 2006 at 07:51:34AM +0800, Randolph Chung wrote:
> >I understand now. I'm not sure how the PARISC implementation can be
> >correct in this light.
>
> According to cachetlb.txt:
>
> void flush_anon_page(struct page *page, unsigned long vmaddr)
> When the kernel needs to access the contents of an anonymous
> page, it calls this function (currently only
> get_user_pages()). Note: flush_dcache_page() deliberately
> doesn't work for an anonymous page. The default
> implementation is a nop (and should remain so for all coherent
> architectures). For incoherent architectures, it should flush
> the cache of the page at vmaddr in the current user process.
> ^^^^^^^^^^^^^^^^^^^^
>
> Is the documentation wrong?

Yes. As I've already explained there is no guarantee that
get_user_pages() is only called to obtain pages for the current
process, and flush_anon_pages() is called irrespective of which
user process is being 'got'.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of:
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/