page_mapping must avoid slub pages
Nicolas Ferre reports oops from flush_dcache_page() on ARM when using SLUB: which reuses page->mapping as page->slab. The page_mapping() function, used by ARM and PA-RISC flush_dcache_page() implementations, must not confuse SLUB pages with those which have page->mapping set. Signed-off-by: Hugh Dickins <hugh@veritas.com> Cc: Nicolas Ferre <nicolas.ferre@rfo.atmel.com> Cc: Christoph Lameter <clameter@sgi.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
f1518a088b
commit
b9bae34025
|
@ -603,6 +603,10 @@ static inline struct address_space *page_mapping(struct page *page)
|
|||
|
||||
if (unlikely(PageSwapCache(page)))
|
||||
mapping = &swapper_space;
|
||||
#ifdef CONFIG_SLUB
|
||||
else if (unlikely(PageSlab(page)))
|
||||
mapping = NULL;
|
||||
#endif
|
||||
else if (unlikely((unsigned long)mapping & PAGE_MAPPING_ANON))
|
||||
mapping = NULL;
|
||||
return mapping;
|
||||
|
|
Loading…
Reference in a new issue