From: Masami Hiramatsu <mhiramat@redhat.com>
To: hpa@zytor.com, mingo@redhat.com, torvalds@linux-foundation.org,
akpm@linux-foundation.org, tglx@linutronix.de,
mhiramat@redhat.com, mingo@elte.hu, linux-kernel@vger.kernel.org
Cc: linux-tip-commits@vger.kernel.org
Subject: Re: [tip:x86/mm] x86, mm, kprobes: fault.c, simplify notify_page_fault()
Date: Fri, 20 Feb 2009 18:09:47 -0500 [thread overview]
Message-ID: <499F383B.6060700@redhat.com> (raw)
In-Reply-To: <tip-b18018126f422f5b706fd750373425e10e84b486@kernel.org>
Ingo Molnar wrote:
> Author: Ingo Molnar <mingo@elte.hu>
> AuthorDate: Fri, 20 Feb 2009 22:42:57 +0100
> Commit: Ingo Molnar <mingo@elte.hu>
> CommitDate: Sat, 21 Feb 2009 00:09:42 +0100
>
> x86, mm, kprobes: fault.c, simplify notify_page_fault()
>
> Impact: cleanup
>
> Remove an #ifdef from notify_page_fault(). The function still
> compiles to nothing in the !CONFIG_KPROBES case.
>
> Introduce kprobes_built_in() and kprobe_fault_handler() helpers
> to allow this - they returns 0 if !CONFIG_KPROBES.
>
> No code changed:
>
> text data bss dec hex filename
> 4618 32 24 4674 1242 fault.o.before
> 4618 32 24 4674 1242 fault.o.after
It seems good for me. Thank you for cleanup!
Acked-by: Masami Hiramatsu <mhiramat@redhat.com>
>
> Cc: Masami Hiramatsu <mhiramat@redhat.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Linus Torvalds <torvalds@linux-foundation.org>
> Signed-off-by: Ingo Molnar <mingo@elte.hu>
>
>
> ---
> arch/x86/mm/fault.c | 6 +-----
> include/linux/kprobes.h | 22 +++++++++++++++++++---
> 2 files changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
> index fe99af4..379beae 100644
> --- a/arch/x86/mm/fault.c
> +++ b/arch/x86/mm/fault.c
> @@ -68,11 +68,10 @@ static inline int kmmio_fault(struct pt_regs *regs, unsigned long addr)
>
> static inline int notify_page_fault(struct pt_regs *regs)
> {
> -#ifdef CONFIG_KPROBES
> int ret = 0;
>
> /* kprobe_running() needs smp_processor_id() */
> - if (!user_mode_vm(regs)) {
> + if (kprobes_built_in() && !user_mode_vm(regs)) {
> preempt_disable();
> if (kprobe_running() && kprobe_fault_handler(regs, 14))
> ret = 1;
> @@ -80,9 +79,6 @@ static inline int notify_page_fault(struct pt_regs *regs)
> }
>
> return ret;
> -#else
> - return 0;
> -#endif
> }
>
> /*
> diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h
> index 32851ee..2ec6cc1 100644
> --- a/include/linux/kprobes.h
> +++ b/include/linux/kprobes.h
> @@ -182,6 +182,14 @@ struct kprobe_blackpoint {
> DECLARE_PER_CPU(struct kprobe *, current_kprobe);
> DECLARE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
>
> +/*
> + * For #ifdef avoidance:
> + */
> +static inline int kprobes_built_in(void)
> +{
> + return 1;
> +}
> +
> #ifdef CONFIG_KRETPROBES
> extern void arch_prepare_kretprobe(struct kretprobe_instance *ri,
> struct pt_regs *regs);
> @@ -271,8 +279,16 @@ void unregister_kretprobes(struct kretprobe **rps, int num);
> void kprobe_flush_task(struct task_struct *tk);
> void recycle_rp_inst(struct kretprobe_instance *ri, struct hlist_head *head);
>
> -#else /* CONFIG_KPROBES */
> +#else /* !CONFIG_KPROBES: */
>
> +static inline int kprobes_built_in(void)
> +{
> + return 0;
> +}
> +static inline int kprobe_fault_handler(struct pt_regs *regs, int trapnr)
> +{
> + return 0;
> +}
> static inline struct kprobe *get_kprobe(void *addr)
> {
> return NULL;
> @@ -329,5 +345,5 @@ static inline void unregister_kretprobes(struct kretprobe **rps, int num)
> static inline void kprobe_flush_task(struct task_struct *tk)
> {
> }
> -#endif /* CONFIG_KPROBES */
> -#endif /* _LINUX_KPROBES_H */
> +#endif /* CONFIG_KPROBES */
> +#endif /* _LINUX_KPROBES_H */
--
Masami Hiramatsu
Software Engineer
Hitachi Computer Products (America) Inc.
Software Solutions Division
e-mail: mhiramat@redhat.com
next parent reply other threads:[~2009-02-20 23:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <tip-b18018126f422f5b706fd750373425e10e84b486@kernel.org>
2009-02-20 23:09 ` Masami Hiramatsu [this message]
2009-02-22 9:31 ` [tip:x86/mm] x86, mm, kprobes: fault.c, simplify notify_page_fault() Ingo Molnar
2009-02-23 16:21 ` Masami Hiramatsu
2009-02-23 18:46 ` Ananth N Mavinakayanahalli
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=499F383B.6060700@redhat.com \
--to=mhiramat@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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 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.