lkml.org 
[lkml]   [2012]   [Jun]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH -tip v2 5/9] kprobes: Inverse taking of module_mutex with kprobe_mutex
    Date
    From: Steven Rostedt <srostedt@redhat.com>

    Currently module_mutex is taken before kprobe_mutex, but this
    can cause issues when we have kprobes register ftrace, as the ftrace
    mutex is taken before enabling a tracepoint, which currently takes
    the module mutex.

    If module_mutex is taken before kprobe_mutex, then we can not
    have kprobes use the ftrace infrastructure.

    There seems to be no reason that the kprobe_mutex can't be taken
    before the module_mutex. Running lockdep shows that it is safe
    among the kernels I've run.

    Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    ---

    kernel/kprobes.c | 4 ++--
    1 files changed, 2 insertions(+), 2 deletions(-)

    diff --git a/kernel/kprobes.c b/kernel/kprobes.c
    index c62b854..7a8a122 100644
    --- a/kernel/kprobes.c
    +++ b/kernel/kprobes.c
    @@ -561,9 +561,9 @@ static __kprobes void kprobe_optimizer(struct work_struct *work)
    {
    LIST_HEAD(free_list);

    + mutex_lock(&kprobe_mutex);
    /* Lock modules while optimizing kprobes */
    mutex_lock(&module_mutex);
    - mutex_lock(&kprobe_mutex);

    /*
    * Step 1: Unoptimize kprobes and collect cleaned (unused and disarmed)
    @@ -586,8 +586,8 @@ static __kprobes void kprobe_optimizer(struct work_struct *work)
    /* Step 4: Free cleaned kprobes after quiesence period */
    do_free_cleaned_kprobes(&free_list);

    - mutex_unlock(&kprobe_mutex);
    mutex_unlock(&module_mutex);
    + mutex_unlock(&kprobe_mutex);

    /* Step 5: Kick optimizer again if needed */
    if (!list_empty(&optimizing_list) || !list_empty(&unoptimizing_list))


    \
     
     \ /
      Last update: 2012-06-05 13:21    [W:0.031 / U:31.320 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site