x86, pat: add large-PAT check to split_large_page()
authorIngo Molnar <mingo@elte.hu>
Fri, 20 Feb 2009 16:44:21 +0000 (17:44 +0100)
committerIngo Molnar <mingo@elte.hu>
Fri, 20 Feb 2009 16:48:49 +0000 (17:48 +0100)
commit7a5714e0186030676d79a7b4b9830c8e45c3b0a1
tree7d76720d333893db5b5fa4bb492d69a823ba76db
parent609162850db11dfe3b23f43b36888aa8b3ad7685
x86, pat: add large-PAT check to split_large_page()

Impact: future-proof the split_large_page() function

Linus noticed that split_large_page() is not safe wrt. the
PAT bit: it is bit 12 on the 1GB and 2MB page table level
(_PAGE_BIT_PAT_LARGE), and it is bit 7 on the 4K page
table level (_PAGE_BIT_PAT).

Currently it is not a problem because we never set
_PAGE_BIT_PAT_LARGE on any of the large-page mappings - but
should this happen in the future the split_large_page() would
silently lift bit 12 into the lowlevel 4K pte and would start
corrupting the physical page frame offset. Not fun.

So add a debug warning, to make sure if something ever sets
the PAT bit then this function gets updated too.

Cc: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/mm/pageattr.c