From: Abhishek Sagar <sagar.abhishek@gmail.com>
To: Sam Ravnborg <sam@ravnborg.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
jkenisto@us.ibm.com, ananth@in.ibm.com,
Masami Hiramatsu <mhiramat@redhat.com>,
Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH 2/3] x86: Macrofy resuable code
Date: Sun, 27 Jan 2008 19:01:01 +0530 [thread overview]
Message-ID: <479C8795.1080709@gmail.com> (raw)
In-Reply-To: <20080127092344.GB18116@uranus.ravnborg.org>
Sam Ravnborg wrote:
> Small static functions are preferred over macros.
> Any particular reason to use a macro here?
>
> Sam
These macros have very limited(two) instantiations. But here's an alternative patch inlined.
Signed-off-by: Abhishek Sagar <sagar.abhishek@gmail.com>
---
diff --git a/arch/x86/kernel/kprobes.c b/arch/x86/kernel/kprobes.c
index a99e764..b7c2d20 100644
--- a/arch/x86/kernel/kprobes.c
+++ b/arch/x86/kernel/kprobes.c
@@ -159,6 +159,16 @@ struct kretprobe_blackpoint kretprobe_blacklist[] = {
};
const int kretprobe_blacklist_size = ARRAY_SIZE(kretprobe_blacklist);
+static inline unsigned long kprobe_bkpt_addr(struct pt_regs *regs)
+{
+ return (instruction_pointer(regs) - sizeof(kprobe_opcode_t));
+}
+
+static inline int is_jprobe_bkpt(u8 *ptr)
+{
+ return (ptr > (u8 *)jprobe_return) && (ptr < (u8 *)jprobe_return_end);
+}
+
/* Insert a jump instruction at address 'from', which jumps to address 'to'.*/
static void __kprobes set_jmp_op(void *from, void *to)
{
@@ -519,7 +529,7 @@ static int __kprobes kprobe_handler(struct pt_regs *regs)
struct kprobe *p;
struct kprobe_ctlblk *kcb;
- addr = (kprobe_opcode_t *)(regs->ip - sizeof(kprobe_opcode_t));
+ addr = (kprobe_opcode_t *)kprobe_bkpt_addr(regs);
if (*addr != BREAKPOINT_INSTRUCTION) {
/*
* The breakpoint instruction was removed right
@@ -1032,8 +1042,7 @@ int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
u8 *addr = (u8 *) (regs->ip - 1);
struct jprobe *jp = container_of(p, struct jprobe, kp);
- if ((addr > (u8 *) jprobe_return) &&
- (addr < (u8 *) jprobe_return_end)) {
+ if (is_jprobe_bkpt(addr)) {
if (stack_addr(regs) != kcb->jprobe_saved_sp) {
struct pt_regs *saved_regs = &kcb->jprobe_saved_regs;
printk(KERN_ERR
prev parent reply other threads:[~2008-01-27 13:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-27 9:09 [PATCH 2/3] x86: Macrofy resuable code Abhishek Sagar
2008-01-27 9:23 ` Sam Ravnborg
2008-01-27 13:31 ` Abhishek Sagar [this message]
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=479C8795.1080709@gmail.com \
--to=sagar.abhishek@gmail.com \
--cc=ananth@in.ibm.com \
--cc=jkenisto@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@redhat.com \
--cc=mingo@elte.hu \
--cc=sam@ravnborg.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.