lkml.org 
[lkml]   [2022]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v8 6/9] livepatch: Use kallsyms_on_each_match_symbol() to improve performance
    Hi,

    I am sorry for the late review. I have been snowed under another
    tasks.

    On Wed 2022-11-02 16:49:18, Zhen Lei wrote:
    > Based on the test results of kallsyms_on_each_match_symbol() and
    > kallsyms_on_each_symbol(), the average performance can be improved by
    > more than 1500 times.

    Sounds great.

    > --- a/kernel/livepatch/core.c
    > +++ b/kernel/livepatch/core.c
    > @@ -153,6 +153,24 @@ static int klp_find_callback(void *data, const char *name,
    > return 0;
    > }
    >
    > +static int klp_match_callback(void *data, unsigned long addr)
    > +{
    > + struct klp_find_arg *args = data;
    > +
    > + args->addr = addr;
    > + args->count++;
    > +
    > + /*
    > + * Finish the search when the symbol is found for the desired position
    > + * or the position is not defined for a non-unique symbol.
    > + */
    > + if ((args->pos && (args->count == args->pos)) ||
    > + (!args->pos && (args->count > 1)))
    > + return 1;
    > +
    > + return 0;

    This duplicates most of the klp_find_callback(). Please, call this
    new function in klp_find_callback() instead of the duplicated code.
    I mean to do:

    static int klp_find_callback(void *data, const char *name, unsigned long addr)
    {
    struct klp_find_arg *args = data;

    if (strcmp(args->name, name))
    return 0;

    return klp_match_callback(data, addr);
    }

    Otherwise, it looks good.

    Best Regards,
    Petr

    \
     
     \ /
      Last update: 2022-11-23 14:42    [W:4.386 / U:0.096 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site