lkml.org 
[lkml]   [2024]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH 4/7] ftrace: Add swap_func to ftrace_process_locs()
    Date
    From: Song Liu <song@kernel.org>

    ftrace_process_locs sorts module mcount, which is inside RO memory. Add a
    ftrace_swap_func so that archs can use RO-memory-poke function to do the
    sorting.

    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Mike Rapoport (IBM) <rppt@kernel.org>
    ---
    include/linux/ftrace.h | 2 ++
    kernel/trace/ftrace.c | 13 ++++++++++++-
    2 files changed, 14 insertions(+), 1 deletion(-)

    diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
    index 54d53f345d14..54393ce57f08 100644
    --- a/include/linux/ftrace.h
    +++ b/include/linux/ftrace.h
    @@ -1172,4 +1172,6 @@ unsigned long arch_syscall_addr(int nr);

    #endif /* CONFIG_FTRACE_SYSCALLS */

    +void ftrace_swap_func(void *a, void *b, int n);
    +
    #endif /* _LINUX_FTRACE_H */
    diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
    index da1710499698..95f11c8cdc5e 100644
    --- a/kernel/trace/ftrace.c
    +++ b/kernel/trace/ftrace.c
    @@ -6480,6 +6480,17 @@ static void test_is_sorted(unsigned long *start, unsigned long count)
    }
    #endif

    +void __weak ftrace_swap_func(void *a, void *b, int n)
    +{
    + unsigned long t;
    +
    + WARN_ON_ONCE(n != sizeof(t));
    +
    + t = *((unsigned long *)a);
    + *(unsigned long *)a = *(unsigned long *)b;
    + *(unsigned long *)b = t;
    +}
    +
    static int ftrace_process_locs(struct module *mod,
    unsigned long *start,
    unsigned long *end)
    @@ -6507,7 +6518,7 @@ static int ftrace_process_locs(struct module *mod,
    */
    if (!IS_ENABLED(CONFIG_BUILDTIME_MCOUNT_SORT) || mod) {
    sort(start, count, sizeof(*start),
    - ftrace_cmp_ips, NULL);
    + ftrace_cmp_ips, ftrace_swap_func);
    } else {
    test_is_sorted(start, count);
    }
    --
    2.43.0

    \
     
     \ /
      Last update: 2024-05-27 16:36    [W:8.466 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site