From: Ingo Molnar <mingo@elte.hu>
To: Jason Baron <jbaron@redhat.com>
Cc: linux-kernel@vger.kernel.org, mathieu.desnoyers@polymtl.ca,
tglx@linutronix.de, rostedt@goodmis.org, ak@suse.de,
roland@redhat.com, rth@redhat.com, mhiramat@redhat.com
Subject: Re: [PATCH 1/4] jump label - make init_kernel_text() global
Date: Thu, 1 Oct 2009 13:20:03 +0200 [thread overview]
Message-ID: <20091001112003.GA2962@elte.hu> (raw)
In-Reply-To: <77d69d0f3c8e1f98a4c2392ea4e4f6c25ed177f4.1253831946.git.jbaron@redhat.com>
* Jason Baron <jbaron@redhat.com> wrote:
> allow usage of init_kernel_text - we need this in jump labeling to
> avoid attemtpting to patch code that has been freed as in the __init
> sections
s/attemtpting/attempting
> Signed-off-by: Jason Baron <jbaron@redhat.com>
> ---
> include/linux/kernel.h | 1 +
> kernel/extable.c | 2 +-
> 2 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/kernel.h b/include/linux/kernel.h
> index f61039e..9d3419f 100644
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -295,6 +295,7 @@ extern int get_option(char **str, int *pint);
> extern char *get_options(const char *str, int nints, int *ints);
> extern unsigned long long memparse(const char *ptr, char **retptr);
>
> +extern int init_kernel_text(unsigned long addr);
> extern int core_kernel_text(unsigned long addr);
> extern int __kernel_text_address(unsigned long addr);
> extern int kernel_text_address(unsigned long addr);
> diff --git a/kernel/extable.c b/kernel/extable.c
> index 7f8f263..f6893ad 100644
> --- a/kernel/extable.c
> +++ b/kernel/extable.c
> @@ -52,7 +52,7 @@ const struct exception_table_entry *search_exception_tables(unsigned long addr)
> return e;
> }
>
> -static inline int init_kernel_text(unsigned long addr)
> +int init_kernel_text(unsigned long addr)
> {
> if (addr >= (unsigned long)_sinittext &&
> addr <= (unsigned long)_einittext)
i'm confused. Later on jump_label_update() does:
+ if (!(system_state == SYSTEM_RUNNING &&
+ (init_kernel_text(iter->code))))
+ jump_label_transform(iter, type);
which is:
+ if (system_state != SYSTEM_RUNNING ||
+ !init_kernel_text(iter->code)))
+ jump_label_transform(iter, type);
What is the logic behind that? System going into SYSTEM_RUNNING does not
coincide with free_initmem() precisely.
Also, do we ever want to patch init-text tracepoints? I think we want to
stay away from them as much as possible.
It appears to me that what we want here is a straight:
if (kernel_text(iter->code))
jump_label_transform(iter, type);
Also, maybe a WARN_ONCE(!kernel_text()) - we should never even attempt
to transform non-patchable code. If yes then we want to know about that
in a noisy way and not skip it silently.
Ingo
next prev parent reply other threads:[~2009-10-01 11:20 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-24 23:17 [PATCH 0/4] jump label patches Jason Baron
2009-09-24 23:17 ` [PATCH 1/4] jump label - make init_kernel_text() global Jason Baron
2009-10-01 11:20 ` Ingo Molnar [this message]
2009-10-01 12:58 ` Mathieu Desnoyers
2009-10-01 20:39 ` Jason Baron
2009-10-03 10:43 ` Ingo Molnar
2009-10-03 12:39 ` Mathieu Desnoyers
2009-10-07 1:54 ` Steven Rostedt
2009-10-07 2:32 ` Mathieu Desnoyers
2009-10-07 3:10 ` Masami Hiramatsu
2009-10-07 3:23 ` Mathieu Desnoyers
2009-10-07 3:29 ` Mathieu Desnoyers
2009-10-07 12:56 ` Steven Rostedt
2009-10-07 13:35 ` Mathieu Desnoyers
2009-09-24 23:17 ` [PATCH 2/4] jump label - base patch Jason Baron
2009-09-25 0:49 ` Roland McGrath
2009-09-26 10:21 ` Steven Rostedt
2009-10-01 11:36 ` Ingo Molnar
2009-09-24 23:17 ` [PATCH 3/4] jump label - add module support Jason Baron
2009-09-24 23:18 ` [PATCH 4/4] jump label - tracepoint implementation Jason Baron
2009-10-06 5:39 ` [PATCH 0/4] jump label patches Roland McGrath
2009-10-06 14:07 ` Jason Baron
2009-10-06 23:24 ` Richard Henderson
2009-10-07 0:14 ` Roland McGrath
2009-10-07 15:35 ` Richard Henderson
2009-10-06 6:04 ` Roland McGrath
2009-10-06 14:09 ` Steven Rostedt
2009-10-06 14:13 ` Masami Hiramatsu
2009-10-06 14:30 ` 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=20091001112003.GA2962@elte.hu \
--to=mingo@elte.hu \
--cc=ak@suse.de \
--cc=jbaron@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@polymtl.ca \
--cc=mhiramat@redhat.com \
--cc=roland@redhat.com \
--cc=rostedt@goodmis.org \
--cc=rth@redhat.com \
--cc=tglx@linutronix.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.