lkml.org 
[lkml]   [2011]   [May]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 07/10] x86-64: Fill unused parts of the vsyscall page with 0xcc
    Date
    Jumping to 0x00 might do something depending on the following bytes.
    Jumping to 0xcc is a trap. So fill the unused parts of the vsyscall
    page with 0xcc to make it useless for exploits to jump there.

    Signed-off-by: Andy Lutomirski <luto@mit.edu>
    ---
    arch/x86/kernel/vmlinux.lds.S | 16 +++++++---------
    1 files changed, 7 insertions(+), 9 deletions(-)

    diff --git a/arch/x86/kernel/vmlinux.lds.S b/arch/x86/kernel/vmlinux.lds.S
    index dc8ac70..c3b37d6 100644
    --- a/arch/x86/kernel/vmlinux.lds.S
    +++ b/arch/x86/kernel/vmlinux.lds.S
    @@ -166,22 +166,20 @@ SECTIONS
    __vsyscall_0 = .;

    . = VSYSCALL_ADDR;
    - .vsyscall_0 : AT(VLOAD(.vsyscall_0)) {
    + .vsyscall : AT(VLOAD(.vsyscall)) {
    *(.vsyscall_0)
    - } :user

    - . = ALIGN(L1_CACHE_BYTES);
    - .vsyscall_fn : AT(VLOAD(.vsyscall_fn)) {
    + . = ALIGN(L1_CACHE_BYTES);
    *(.vsyscall_fn)
    - }

    - .vsyscall_1 ADDR(.vsyscall_0) + 1024: AT(VLOAD(.vsyscall_1)) {
    + . = 1024;
    *(.vsyscall_1)
    - }
    - .vsyscall_2 ADDR(.vsyscall_0) + 2048: AT(VLOAD(.vsyscall_2)) {
    +
    + . = 2048;
    *(.vsyscall_2)
    - }

    + . = 4096; /* Pad the whole page. */
    + } :user =0xcc
    . = ALIGN(__vsyscall_0 + PAGE_SIZE, PAGE_SIZE);

    #undef VSYSCALL_ADDR
    --
    1.7.5.1


    \
     
     \ /
      Last update: 2011-05-31 16:19    [W:0.050 / U:31.916 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site