Messages in this thread | | | Date | Wed, 23 Nov 2022 14:28:24 +0100 | From | Petr Mladek <> | Subject | Re: [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
| |