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:
committed by
Linus Torvalds
parent
f1518a088b
commit
b9bae34025
@@ -603,6 +603,10 @@ static inline struct address_space *page_mapping(struct page *page)
|
|||||||
|
|
||||||
if (unlikely(PageSwapCache(page)))
|
if (unlikely(PageSwapCache(page)))
|
||||||
mapping = &swapper_space;
|
mapping = &swapper_space;
|
||||||
|
#ifdef CONFIG_SLUB
|
||||||
|
else if (unlikely(PageSlab(page)))
|
||||||
|
mapping = NULL;
|
||||||
|
#endif
|
||||||
else if (unlikely((unsigned long)mapping & PAGE_MAPPING_ANON))
|
else if (unlikely((unsigned long)mapping & PAGE_MAPPING_ANON))
|
||||||
mapping = NULL;
|
mapping = NULL;
|
||||||
return mapping;
|
return mapping;
|
||||||
|
Reference in New Issue
Block a user