From: Zachary Amsden <zach@vmware.com>
To: Chris Wright <chrisw@sous-sol.org>
Cc: Ingo Molnar <mingo@elte.hu>,
Rusty Russell <rusty@rustcorp.com.au>,
lkml - Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linus Torvalds <torvalds@osdl.org>,
virtualization <virtualization@lists.osdl.org>,
Gerd Hoffmann <kraxel@suse.de>
Subject: Re: [PATCH] Gerd Hoffman's move-vsyscall-into-user-address-range patch
Date: Tue, 16 May 2006 01:59:08 -0700 [thread overview]
Message-ID: <4469945C.90104@vmware.com> (raw)
In-Reply-To: <20060516084047.GH2697@moss.sous-sol.org>
Chris Wright wrote:
> * Zachary Amsden (zach@vmware.com) wrote:
>
>> Let's dive into it. How do you get the randomization without
>> sacrificing syscall performance? Do you randomize on boot, dynamically,
>> or on a per-process level?
>>
>
> The latter, on exec.
>
>
>> Because I can see some issues with
>> per-process randomization that will certainly cost some amount of cycles
>> on the system call path. Marginal perhaps, but that is exactly where
>> you don't want to shed cycles unnecessarily, and the complexity of the
>> whole thing will go up quite a bit I think.
>>
>
> The crux is here:
>
> + OFFSET(TI_sysenter_return, thread_info, sysenter_return);
> ...
>
> - pushl $SYSENTER_RETURN
> -
> + /*
> + * Push current_thread_info()->sysenter_return to the stack.
> + * A tiny bit of offset fixup is necessary - 4*4 means the 4 words
> + * pushed above; +8 corresponds to copy_thread's esp0 setting.
> + */
> + pushl (TI_sysenter_return-THREAD_SIZE+8+4*4)(%esp)
>
> ...
>
> and in binfmt_elf during exec thread_info->sysenter_return is setup
> based on the randomized mapping it does for vdso
>
> + ti->sysenter_return = &SYSENTER_RETURN_OFFSET + addr;
>
>
> I think it's not so bad, but I can't say I've benchmarked the cost.
>
Now that I see it, it doesn't look bad at all. I had imagined a host of
holy horrors unfolding from it, but clearly that is not the case. I
think there is still the sysexit path that needs some change, but in
total, there should be almost zero cycle impact. I envisioned trying to
get the thread info for the return address would be awkward, but you've
already switched the stack at this point, so it is really almost free.
Zach
next prev parent reply other threads:[~2006-05-16 9:02 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-16 6:03 [PATCH] Gerd Hoffman's move-vsyscall-into-user-address-range patch Rusty Russell
2006-05-16 6:47 ` Ingo Molnar
2006-05-16 8:16 ` Zachary Amsden
2006-05-16 8:40 ` Chris Wright
2006-05-16 8:59 ` Zachary Amsden [this message]
2006-05-17 7:49 ` Rusty Russell
2006-05-18 7:54 ` Ingo Molnar
2006-05-18 8:29 ` Gerd Hoffmann
2006-05-20 0:43 ` Andrew Morton
2006-05-20 1:03 ` Ingo Molnar
2006-05-20 1:11 ` Andrew Morton
2006-05-20 1:15 ` Linus Torvalds
2006-05-20 8:53 ` [patch] i386, vdso=[0|1] boot option and /proc/sys/vm/vdso_enabled Ingo Molnar
2006-05-20 9:26 ` Andrew Morton
2006-05-20 9:30 ` Zachary Amsden
2006-05-20 9:43 ` Zachary Amsden
2006-05-20 9:48 ` Andrew Morton
2006-05-20 10:04 ` Zachary Amsden
2006-05-21 4:38 ` Rusty Russell
2006-05-21 9:35 ` Rusty Russell
2006-05-21 9:52 ` Andrew Morton
2006-05-21 10:41 ` Ingo Molnar
2006-05-21 11:06 ` Rusty Russell
2006-05-20 9:54 ` Ingo Molnar
2006-05-20 10:16 ` [patch] add print_fatal_signals support Ingo Molnar
2006-05-21 11:03 ` [patch] i386, vdso=[0|1] boot option and /proc/sys/vm/vdso_enabled Ingo Molnar
2006-05-21 11:38 ` Ingo Molnar
2006-05-21 12:33 ` Andrew Morton
2006-05-21 14:10 ` Arjan van de Ven
2006-05-22 14:32 ` Alexey Kuznetsov
2006-05-20 1:16 ` [PATCH] Gerd Hoffman's move-vsyscall-into-user-address-range patch Zachary Amsden
2006-05-20 1:49 ` Andi Kleen
2006-05-20 1:24 ` Arjan van de Ven
2006-05-22 16:29 ` Jakub Jelinek
2006-05-22 16:44 ` Zachary Amsden
2006-05-22 17:14 ` Andrew Morton
2006-05-22 17:27 ` Ingo Molnar
2006-05-22 17:46 ` Linus Torvalds
2006-05-22 19:09 ` Ingo Molnar
2006-05-22 19:40 ` Linus Torvalds
2006-05-22 19:14 ` Adrian Bunk
2006-05-22 19:45 ` Linus Torvalds
2006-05-22 17:53 ` Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4469945C.90104@vmware.com \
--to=zach@vmware.com \
--cc=chrisw@sous-sol.org \
--cc=kraxel@suse.de \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rusty@rustcorp.com.au \
--cc=torvalds@osdl.org \
--cc=virtualization@lists.osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox