diff options
author | James Bottomley <James.Bottomley@HansenPartnership.com> | 2011-04-14 18:25:21 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2011-04-15 12:55:18 -0500 |
commit | d7dd2ff11b7fcd425aca5a875983c862d19a67ae (patch) | |
tree | 6ad74d89d2355861b513eefb763ea6103a8d68e7 /arch/parisc/kernel/vmlinux.lds.S | |
parent | e38f5b745075828ac51b12c8c95c85a7be4a3ec7 (diff) | |
download | op-kernel-dev-d7dd2ff11b7fcd425aca5a875983c862d19a67ae.zip op-kernel-dev-d7dd2ff11b7fcd425aca5a875983c862d19a67ae.tar.gz |
[PARISC] only make executable areas executable
Currently parisc has the whole kernel marked as RWX, meaning any
kernel page at all is eligible to be executed. This can cause a
theoretical problem on systems with combined I/D TLB because the act
of referencing a page causes a TLB insertion with an executable bit.
This TLB entry may be used by the CPU as the basis for speculating the
page into the I-Cache. If this speculated page is subsequently used
for a user process, there is the possibility we will get a stale
I-cache line picked up as the binary executes.
As a point of good practise, only mark actual kernel text pages as
executable. The same has to be done for init_text pages, but they're
converted to data pages (and the I-Cache flushed) when the init memory
is released.
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'arch/parisc/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/parisc/kernel/vmlinux.lds.S | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S index 8f1e4ef..bf6a43a 100644 --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S @@ -134,6 +134,7 @@ SECTIONS . = ALIGN(16384); __init_begin = .; INIT_TEXT_SECTION(16384) + . = ALIGN(PAGE_SIZE); INIT_DATA_SECTION(16) /* we have to discard exit text and such at runtime, not link time */ .exit.text : |