[RFC/PATCH 1/1] ARM: Handle user space mapped pages in flush_kernel_dcache_page
Simon Baatz
gmbnomis at gmail.com
Mon May 28 01:35:59 EDT 2012
Hi Catalin,
On Mon, May 28, 2012 at 12:32:44PM +0800, Catalin Marinas wrote:
> On Mon, May 28, 2012 at 12:11:58AM +0100, Simon Baatz wrote:
> ...
> > +void __flush_kernel_dcache_page(struct page *page)
> > +{
> > + struct address_space *mapping;
> > +
> > + mapping = page_mapping(page);
> > +
> > + if (!mapping || mapping_mapped(mapping))
> > + __cpuc_flush_dcache_area(page_address(page), PAGE_SIZE);
> > +}
> > +EXPORT_SYMBOL(__flush_kernel_dcache_page);
>
> I wonder whether the above condition isn't always true after
> get_user_pages().
>
Not sure about corner cases, but I would assume that yes, this is the
case. However, the block layer sees the pages from get_user_pages()
directly only in the O_DIRECT case. Usually (read fault for page
cache), flush_kernel_dcache_page() gets pages with mapping != NULL
and mapping_mapped() == NULL (i.e. no user space mapping (yet)).
- Simon
More information about the linux-arm-kernel
mailing list