From: Martin Bligh <mbligh@google.com>
To: Mathieu Desnoyers <compudj@krystal.dyndns.org>
Cc: prasanna@in.ibm.com, Andrew Morton <akpm@osdl.org>,
"Frank Ch. Eigler" <fche@redhat.com>, Ingo Molnar <mingo@elte.hu>,
Paul Mundt <lethal@linux-sh.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Jes Sorensen <jes@sgi.com>, Tom Zanussi <zanussi@us.ibm.com>,
Richard J Moore <richardj_moore@uk.ibm.com>,
Michel Dagenais <michel.dagenais@polymtl.ca>,
Christoph Hellwig <hch@infradead.org>,
Greg Kroah-Hartman <gregkh@suse.de>,
Thomas Gleixner <tglx@linutronix.de>,
William Cohen <wcohen@redhat.com>,
ltt-dev@shafik.org, systemtap@sources.redhat.com,
Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: [PATCH] Linux Kernel Markers
Date: Tue, 19 Sep 2006 11:01:46 -0700 [thread overview]
Message-ID: <4510308A.1070401@google.com> (raw)
In-Reply-To: <20060919175405.GC26339@Krystal>
Mathieu Desnoyers wrote:
> * Martin Bligh (mbligh@google.com) wrote:
>
>>How about we combine all three ideas together ...
>>
>>1. Load modified copy of the function in question.
>>2. overwrite the first instruction of the routine with an int3 that
>>does what you say (atomically)
>>3. Then overwrite the second instruction with a jump that's faster
>>4. Now atomically overwrite the int3 with a nop, and let the jump
>>take over.
>>
>
>
> Very good idea.. However, overwriting the second instruction with a jump could
> be dangerous on preemptible and SMP kernels, because we never know if a thread
> has an IP in any of its contexts that would return exactly at the middle of the
> jump. I think it would be doable to overwrite a 5+ bytes instruction with a NOP
> non-atomically in all cases, but as the instructions nin the prologue seems to
> be smaller :
>
> prologue on x86
> 0: 55 push %ebp
> 1: 89 e5 mov %esp,%ebp
> epilogue on x86
> 3: 5d pop %ebp
> 4: c3 ret
>
> Then is can be a problem. Ideas are welcome.
Ugh, yes that's somewhat problematic. It does seem rather unlikely that
there's a function call in the function prologue when we're busy
offloading stuff onto the stack, but still ...
For the cases where we're prepared to overwrite the call instruction in
the caller, rather than insert an extra jump in the callee, can we not
do that atomically by overwriting the address we're jumping to (the
call is obviously there already)? Doesn't fix function pointers, etc,
but might work well for the simple case at least.
M.
next prev parent reply other threads:[~2006-09-19 18:03 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-09-18 23:45 [PATCH] Linux Kernel Markers Mathieu Desnoyers
2006-09-19 0:41 ` Alan Cox
2006-09-19 1:10 ` Dave Jones
2006-09-19 8:11 ` Ingo Molnar
2006-09-19 8:13 ` Ingo Molnar
2006-09-19 15:11 ` Martin J. Bligh
2006-09-19 15:31 ` Ingo Molnar
2006-09-20 11:19 ` Andi Kleen
2006-09-19 15:46 ` Frank Ch. Eigler
2006-09-19 16:04 ` Martin Bligh
2006-09-19 16:39 ` Andrew Morton
2006-09-19 16:41 ` Martin Bligh
2006-09-19 6:38 ` S. P. Prasanna
2006-09-19 17:17 ` Martin Bligh
2006-09-19 7:05 ` S. P. Prasanna
2006-09-19 18:02 ` Martin Bligh
2006-09-19 21:04 ` Karim Yaghmour
2006-09-20 13:27 ` Masami Hiramatsu
2006-09-20 17:21 ` Karim Yaghmour
2006-09-20 17:15 ` Mathieu Desnoyers
2006-09-20 17:35 ` Karim Yaghmour
2006-09-20 18:08 ` Frank Ch. Eigler
2006-09-20 18:22 ` Martin Bligh
2006-09-20 18:50 ` Karim Yaghmour
2006-09-20 19:22 ` Martin Bligh
2006-09-20 19:43 ` Karim Yaghmour
2006-09-20 19:40 ` Martin Bligh
2006-09-20 19:58 ` Karim Yaghmour
2006-09-20 18:25 ` Karim Yaghmour
2006-09-20 17:41 ` Karim Yaghmour
2006-09-19 17:54 ` Mathieu Desnoyers
2006-09-19 18:01 ` Martin Bligh [this message]
2006-09-19 18:11 ` Mathieu Desnoyers
2006-09-20 0:08 ` Alan Cox
2006-09-20 0:52 ` Karim Yaghmour
2006-09-20 10:44 ` Alan Cox
2006-09-20 23:00 ` Richard J Moore
2006-09-23 15:34 ` score-boarding [was Re: [PATCH] Linux Kernel Markers] Hugh Dickins
2006-09-26 8:43 ` Richard J Moore
2006-09-20 1:08 ` [PATCH] Linux Kernel Markers S. P. Prasanna
2006-09-20 8:18 ` Richard J Moore
2006-09-20 10:32 ` Alan Cox
2006-09-20 11:50 ` Andi Kleen
2006-09-20 13:45 ` Richard J Moore
2006-09-22 12:33 ` Pavel Machek
2006-09-20 1:09 ` Mathieu Desnoyers
2006-09-19 19:13 ` Vara Prasad
2006-09-19 19:16 ` Mathieu Desnoyers
2006-09-19 19:24 ` Martin Bligh
2006-09-19 22:27 ` Satoshi Oshima
2006-09-19 19:26 ` Martin Bligh
2006-09-19 9:30 ` S. P. Prasanna
2006-09-19 20:12 ` Mathieu Desnoyers
2006-09-20 11:00 ` Masami Hiramatsu
2006-09-20 9:39 ` Helge Hafting
2006-09-20 10:30 ` Alan Cox
2006-09-20 13:23 ` Masami Hiramatsu
2006-09-19 16:36 ` Ingo Molnar
2006-09-19 16:41 ` Richard J Moore
2006-09-19 16:49 ` Frank Ch. Eigler
2006-09-19 16:52 ` Martin Bligh
2006-09-19 17:02 ` Frank Ch. Eigler
2006-09-19 16:06 ` Vara Prasad
2006-09-19 16:14 ` Martin Bligh
2006-09-19 17:43 ` Mathieu Desnoyers
2006-09-19 16:23 ` Karim Yaghmour
2006-09-19 16:17 ` Martin Bligh
2006-09-19 16:29 ` Karim Yaghmour
2006-09-19 16:55 ` Karim Yaghmour
2006-09-19 17:41 ` Mathieu Desnoyers
2006-09-20 17:33 ` Karim Yaghmour
2006-09-19 15:21 ` Frank Ch. Eigler
2006-09-20 13:20 ` Masami Hiramatsu
2006-09-20 13:32 ` Mathieu Desnoyers
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=4510308A.1070401@google.com \
--to=mbligh@google.com \
--cc=akpm@osdl.org \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=compudj@krystal.dyndns.org \
--cc=fche@redhat.com \
--cc=gregkh@suse.de \
--cc=hch@infradead.org \
--cc=jes@sgi.com \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ltt-dev@shafik.org \
--cc=michel.dagenais@polymtl.ca \
--cc=mingo@elte.hu \
--cc=prasanna@in.ibm.com \
--cc=richardj_moore@uk.ibm.com \
--cc=systemtap@sources.redhat.com \
--cc=tglx@linutronix.de \
--cc=wcohen@redhat.com \
--cc=zanussi@us.ibm.com \
/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