lkml.org 
[lkml]   [2021]   [Mar]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2] ftrace: Update ftrace_ops->next pointer with rcu_assign_pointer()
    Date
    The unregistered ftrace_ops may be freed by the caller, so we should use
    rcu_assign_pointer() in remove_ftrace_ops() to remove the ftrace_ops,
    which ensures that no more users will reference the ftrace_ops after
    synchronize_rcu() is called.

    Signed-off-by: Li Huafei <lihuafei1@huawei.com>
    ---
    kernel/trace/ftrace.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
    index 4d8e35575549..2e315a145d20 100644
    --- a/kernel/trace/ftrace.c
    +++ b/kernel/trace/ftrace.c
    @@ -282,7 +282,7 @@ static int remove_ftrace_ops(struct ftrace_ops __rcu **list,
    lockdep_is_held(&ftrace_lock)) == ops &&
    rcu_dereference_protected(ops->next,
    lockdep_is_held(&ftrace_lock)) == &ftrace_list_end) {
    - *list = &ftrace_list_end;
    + rcu_assign_pointer(*list, &ftrace_list_end);
    return 0;
    }

    @@ -293,7 +293,7 @@ static int remove_ftrace_ops(struct ftrace_ops __rcu **list,
    if (*p != ops)
    return -1;

    - *p = (*p)->next;
    + rcu_assign_pointer(*p, (*p)->next);
    return 0;
    }

    --
    2.17.1
    \
     
     \ /
      Last update: 2021-03-17 11:27    [W:2.940 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site