diff options
author | Ernie Petrides <petrides@redhat.com> | 2006-12-06 20:14:09 -0500 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-12-06 20:14:09 -0500 |
commit | 103efcd9aac1de4da6a1477f2f3b9fcf35273a18 (patch) | |
tree | ac8e8a1f379a35cfaa96992fb3f8c69e1c88195e /include/asm-x86_64/vsyscall.h | |
parent | c55d92d141b9c40c67db249de91f5c224eb49859 (diff) |
[PATCH] x86-64: fix perms/range of vsyscall vma in /proc/*/maps
The final line of /proc/<pid>/maps on x86_64 for native 64-bit
tasks shows an incorrect ending address and incorrect permissions. There
is only a single page mapped in this vsyscall region, and it is accessible
for both read and execute.
The patch below fixes this. (Since 32-bit-compat tasks have a real vma
with correct perms/range, no change is necessary for that scenario.)
Before the patch, a "cat /proc/self/maps | tail -1" shows this:
ffffffffff600000-ffffffffffe00000 ---p 00000000 [...]
After the patch, this is the output:
ffffffffff600000-ffffffffff601000 r-xp 00000000 [...]
Signed-off-by: Ernie Petrides <petrides@redhat.com>
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'include/asm-x86_64/vsyscall.h')
-rw-r--r-- | include/asm-x86_64/vsyscall.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/asm-x86_64/vsyscall.h b/include/asm-x86_64/vsyscall.h index 01d1c17e2849..05cb8dd200de 100644 --- a/include/asm-x86_64/vsyscall.h +++ b/include/asm-x86_64/vsyscall.h | |||
@@ -10,6 +10,7 @@ enum vsyscall_num { | |||
10 | #define VSYSCALL_START (-10UL << 20) | 10 | #define VSYSCALL_START (-10UL << 20) |
11 | #define VSYSCALL_SIZE 1024 | 11 | #define VSYSCALL_SIZE 1024 |
12 | #define VSYSCALL_END (-2UL << 20) | 12 | #define VSYSCALL_END (-2UL << 20) |
13 | #define VSYSCALL_MAPPED_PAGES 1 | ||
13 | #define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr)) | 14 | #define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr)) |
14 | 15 | ||
15 | #ifdef __KERNEL__ | 16 | #ifdef __KERNEL__ |