x86, cpa: Fix kernel text RO checks in static_protection()
authorSuresh Siddha <suresh.b.siddha@intel.com>
Thu, 29 Oct 2009 02:46:56 +0000 (18:46 -0800)
committerIngo Molnar <mingo@elte.hu>
Mon, 2 Nov 2009 16:16:35 +0000 (17:16 +0100)
commit502f660466ba7a66711ffdf414b1f7f1131dcbf7
tree9b5ac4309f392855108365d3d17406ce3199d2eb
parent883242dd0e5faaba041528a9a99f483f2a656c83
x86, cpa: Fix kernel text RO checks in static_protection()

Steven Rostedt reported that we are unconditionally making the
kernel text mapping as read-only. i.e., if someone does cpa() to
the kernel text area for setting/clearing any page table
attribute, we unconditionally clear the read-write attribute for
the kernel text mapping that is set at compile time.

We should delay (to forbid the write attribute) and enforce only
after the kernel has mapped the text as read-only.

Reported-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Tested-by: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <20091029024820.996634347@sbs-t61.sc.intel.com>
[ marked kernel_set_to_readonly as __read_mostly ]
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/include/asm/cacheflush.h
arch/x86/mm/init_32.c
arch/x86/mm/init_64.c
arch/x86/mm/pageattr.c