On Wed, Nov 05, 2025 at 03:23:17PM +0100, Petr Mladek wrote: > The function kallsyms_lookup_buildid() initializes the given @namebuf > by clearing the first and the last byte. It is not clear why. > > The 1st byte makes sense because some callers ignore the return code > and expect that the buffer contains a valid string, for example: > > - function_stat_show() > - kallsyms_lookup() > - kallsyms_lookup_buildid() > > The initialization of the last byte does not make much sense because it > can later be overwritten. Fortunately, it seems that all called > functions behave correctly: > > - kallsyms_expand_symbol() explicitly adds the trailing '\0' > at the end of the function. > > - All *__address_lookup() functions either use the safe strscpy() > or they do not touch the buffer at all. > > Document the reason for clearing the first byte. And remove the useless > initialization of the last byte. > > Signed-off-by: Petr Mladek <[email protected]> > --- > kernel/kallsyms.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c > index 71868a76e9a1..ff7017337535 100644 > --- a/kernel/kallsyms.c > +++ b/kernel/kallsyms.c > @@ -352,7 +352,12 @@ static int kallsyms_lookup_buildid(unsigned long addr, > { > int ret; > > - namebuf[KSYM_NAME_LEN - 1] = 0; > + /* > + * kallsyms_lookus() returns pointer to namebuf on success and > + * NULL on error. But some callers ignore the return value. > + * Instead they expect @namebuf filled either with valid > + * or empty string. > + */ > namebuf[0] = 0; > > if (is_ksym_addr(addr)) { > -- > 2.51.1 > >
Reviewed-by: Aaron Tomlin <[email protected]> -- Aaron Tomlin
