Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:
- [Medium] dyndbg: classmaps for loadable modules are dropped if DDEBUG_MODNAME 
is overridden
--

commit 5e35c3cb693ea4379aa99e08e89d78671956f5c5
Author: Jim Cromie <[email protected]>

dyndbg: Bind callsites and classmaps to DDEBUG_MODNAME
    
Currently, dyndbg binds KBUILD_MODNAME directly into callsite and
classmap declarator macros.

For built-ins, KBUILD_MODNAME defaults to the basename of the source
file. For many subsystems, this fragments what should be a single
module into separate file basenames: kernel/power/ produces "main",
"suspend", "hibernate", "snapshot", and "swap" when all should be
"power". Conversely, multiple unrelated built-in files across the tree
(init/main.c, kernel/power/main.c) all collide under "main".

[ ... ]

> diff --git a/include/linux/dynamic_debug.h b/include/linux/dynamic_debug.h
> index baf5c0853f459..85863e24ad134 100644
> --- a/include/linux/dynamic_debug.h
> +++ b/include/linux/dynamic_debug.h
[ ... ]
> @@ -121,7 +129,7 @@ struct ddebug_class_param {
>       static struct ddebug_class_map __aligned(8) __used              \
>               __section("__dyndbg_classes") _var = {                  \
>               .mod = THIS_MODULE,                                     \
> -             .mod_name = KBUILD_MODNAME,                             \
> +             .mod_name = DDEBUG_MODNAME,                             \
>               .base = _base,                                          \
>               .map_type = _maptype,                                   \
>               .class_names = _var##_classnames,                       \

[Severity: Medium]
Will this drop classmaps for loadable modules if a maintainer overrides
DDEBUG_MODNAME?

When a loadable module is loaded, ddebug_module_notify() calls
ddebug_add_module() using the module's actual load name (mod->name) to
initialize the ddebug_table's module name.

During initialization, ddebug_attach_module_classes() attempts to match the
classmap to the module by comparing strings:

lib/dynamic_debug.c:ddebug_attach_module_classes() {
    ...
    if (!strcmp(cm->mod_name, dt->mod_name)) {
    ...
}

If a maintainer uses the opt-in hook (e.g., ccflags-y += 
-DDDEBUG_MODNAME='"power"')
on a loadable module whose load name is "suspend", cm->mod_name will be "power"
while dt->mod_name is "suspend".

Since the string comparison fails, will all classmaps for the loadable module
be silently dropped, causing class'd pr_debug calls to lose their functionality
and trigger pr_warn spam on load due to unknown class IDs?

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/[email protected]?part=14

Reply via email to