lkml.org 
[lkml]   [2013]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH -tip v5 17/18] kprobes: Use NOKPROBE_SYMBOL() in sample modules
    From
    Date
    Use NOKPROBE_SYMBOL() to protect handlers from kprobes
    in sample modules.

    Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Ananth N Mavinakayanahalli <ananth@in.ibm.com>
    ---
    samples/kprobes/jprobe_example.c | 1 +
    samples/kprobes/kprobe_example.c | 3 +++
    samples/kprobes/kretprobe_example.c | 2 ++
    3 files changed, 6 insertions(+)

    diff --git a/samples/kprobes/jprobe_example.c b/samples/kprobes/jprobe_example.c
    index b754135..40114ac 100644
    --- a/samples/kprobes/jprobe_example.c
    +++ b/samples/kprobes/jprobe_example.c
    @@ -35,6 +35,7 @@ static long jdo_fork(unsigned long clone_flags, unsigned long stack_start,
    jprobe_return();
    return 0;
    }
    +NOKPROBE_SYMBOL(jdo_fork);

    static struct jprobe my_jprobe = {
    .entry = jdo_fork,
    diff --git a/samples/kprobes/kprobe_example.c b/samples/kprobes/kprobe_example.c
    index 366db1a..462d90f 100644
    --- a/samples/kprobes/kprobe_example.c
    +++ b/samples/kprobes/kprobe_example.c
    @@ -46,6 +46,7 @@ static int handler_pre(struct kprobe *p, struct pt_regs *regs)
    /* A dump_stack() here will give a stack backtrace */
    return 0;
    }
    +NOKPROBE_SYMBOL(handler_pre);

    /* kprobe post_handler: called after the probed instruction is executed */
    static void handler_post(struct kprobe *p, struct pt_regs *regs,
    @@ -68,6 +69,7 @@ static void handler_post(struct kprobe *p, struct pt_regs *regs,
    p->addr, regs->ex1);
    #endif
    }
    +NOKPROBE_SYMBOL(handler_post);

    /*
    * fault_handler: this is called if an exception is generated for any
    @@ -81,6 +83,7 @@ static int handler_fault(struct kprobe *p, struct pt_regs *regs, int trapnr)
    /* Return 0 because we don't handle the fault. */
    return 0;
    }
    +NOKPROBE_SYMBOL(handler_fault);

    static int __init kprobe_init(void)
    {
    diff --git a/samples/kprobes/kretprobe_example.c b/samples/kprobes/kretprobe_example.c
    index 1041b67..d932c52 100644
    --- a/samples/kprobes/kretprobe_example.c
    +++ b/samples/kprobes/kretprobe_example.c
    @@ -47,6 +47,7 @@ static int entry_handler(struct kretprobe_instance *ri, struct pt_regs *regs)
    data->entry_stamp = ktime_get();
    return 0;
    }
    +NOKPROBE_SYMBOL(entry_handler);

    /*
    * Return-probe handler: Log the return value and duration. Duration may turn
    @@ -66,6 +67,7 @@ static int ret_handler(struct kretprobe_instance *ri, struct pt_regs *regs)
    func_name, retval, (long long)delta);
    return 0;
    }
    +NOKPROBE_SYMBOL(ret_handler);

    static struct kretprobe my_kretprobe = {
    .handler = ret_handler,



    \
     
     \ /
      Last update: 2013-12-09 14:21    [W:4.481 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site