diff options
author | James Bottomley <James.Bottomley@HansenPartnership.com> | 2011-04-14 19:25:21 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2011-04-15 13:55:18 -0400 |
commit | d7dd2ff11b7fcd425aca5a875983c862d19a67ae (patch) | |
tree | 6ad74d89d2355861b513eefb763ea6103a8d68e7 /arch/parisc/kernel/vmlinux.lds.S | |
parent | e38f5b745075828ac51b12c8c95c85a7be4a3ec7 (diff) |
[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 8f1e4efd143e..bf6a43a322ec 100644 --- a/arch/parisc/kernel/vmlinux.lds.S +++ b/arch/parisc/kernel/vmlinux.lds.S | |||
@@ -134,6 +134,7 @@ SECTIONS | |||
134 | . = ALIGN(16384); | 134 | . = ALIGN(16384); |
135 | __init_begin = .; | 135 | __init_begin = .; |
136 | INIT_TEXT_SECTION(16384) | 136 | INIT_TEXT_SECTION(16384) |
137 | . = ALIGN(PAGE_SIZE); | ||
137 | INIT_DATA_SECTION(16) | 138 | INIT_DATA_SECTION(16) |
138 | /* we have to discard exit text and such at runtime, not link time */ | 139 | /* we have to discard exit text and such at runtime, not link time */ |
139 | .exit.text : | 140 | .exit.text : |