The @modname and @modbuildid optional return parameters are set only
when the symbol is in a module.

Always initialize them so that they do not need to be cleared when
the module is not in a module. It simplifies the logic and makes
the code even slightly more safe.

Note that bpf_address_lookup() function will get updated in a separate
patch.

Signed-off-by: Petr Mladek <[email protected]>
---
 kernel/kallsyms.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/kernel/kallsyms.c b/kernel/kallsyms.c
index e08c1e57fc0d..ffb64eaa0505 100644
--- a/kernel/kallsyms.c
+++ b/kernel/kallsyms.c
@@ -359,6 +359,14 @@ static int kallsyms_lookup_buildid(unsigned long addr,
         * or empty string.
         */
        namebuf[0] = 0;
+       /*
+        * Initialize the module-related return values. They are not set
+        * when the symbol is in vmlinux or it is a bpf address.
+        */
+       if (modname)
+               *modname = NULL;
+       if (modbuildid)
+               *modbuildid = NULL;
 
        if (is_ksym_addr(addr)) {
                unsigned long pos;
@@ -367,10 +375,6 @@ static int kallsyms_lookup_buildid(unsigned long addr,
                /* Grab name */
                kallsyms_expand_symbol(get_symbol_offset(pos),
                                       namebuf, KSYM_NAME_LEN);
-               if (modname)
-                       *modname = NULL;
-               if (modbuildid)
-                       *modbuildid = NULL;
 
                return strlen(namebuf);
        }
-- 
2.52.0


Reply via email to