All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Jim Cromie" <jim.cromie@gmail.com>
Cc: dri-devel@lists.freedesktop.org, linux-modules@vger.kernel.org
Subject: Re: [PATCH v6 20/24] dyndbg,module: make proper substructs in _ddebug_info
Date: Wed, 08 Jul 2026 02:30:11 +0000	[thread overview]
Message-ID: <20260708023012.3B36C1F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260707-dd-maint-2-v6-20-381f3edb0045@gmail.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] Built-in modules without class maps erroneously inherit all global class maps
- [Low] Build failure in DRM subsystem due to struct name typo
--

--- Patch [20]: [PATCH v6 20/24] dyndbg,module: make proper substructs in _ddebug_info ---
commit 715ff68bbb0cbb69dec753531f42001f8daeef9e
Author: Jim Cromie <jim.cromie@gmail.com>

dyndbg,module: make proper substructs in _ddebug_info

recompose struct _ddebug_info, inserting proper sub-structs.

The struct _ddebug_info has 2 pairs of _vec, num_##_vec fields, for
descs and classes respectively.  for_subvec() makes walking these
vectors less cumbersome, now lets move those field pairs into their
own "vec" structs: _ddebug_descs & _ddebug_class_maps, and re-compose
struct _ddebug_info to contain them cleanly.  This also lets us get
rid of for_subvec()'s num_##_vec paste-up.

> diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c
> index 711ae6606c6ea..da2171186c6bf 100644
> --- a/drivers/gpu/drm/drm_print.c
> +++ b/drivers/gpu/drm/drm_print.c
> @@ -69,7 +69,7 @@ DECLARE_DYNDBG_CLASSMAP(drm_debug_classes, DD_CLASS_TYPE_DISJOINT_BITS, 0,
>  			"DRM_UT_DP",
>  			"DRM_UT_DRMRES");
>  
> -static struct ddebug_class_param drm_debug_bitmap = {
> +static struct _ddebug_class_param drm_debug_bitmap = {

[Severity: Low]
Will this cause a build failure? 

The struct defined in include/linux/dynamic_debug.h is named 
ddebug_class_param, without the leading underscore.

[ ... ]

> diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
> index af05f4ae3b55e..5a884cbd6294a 100644
> --- a/lib/dynamic_debug.c
> +++ b/lib/dynamic_debug.c

[ ... ]

> @@ -1184,12 +1185,12 @@ static void ddebug_attach_module_classes(struct ddebug_table *dt, struct _ddebug
>  	 * the builtin/modular classmap vector/section.  Save the start
>  	 * and length of the subrange at its edges.
>  	 */
> -	for_subvec(i, cm, di, classes) {
> +	for_subvec(i, cm, di, maps) {

[ ... ]

>  	if (nc) {
> -		dt->num_classes = nc;
> +		dt->info.maps.len = nc;
>  		vpr_info("module:%s attached %d classes\n", dt->mod_name, nc);
>  	}
>  }
> @@ -1211,10 +1212,10 @@ static int ddebug_add_module(struct _ddebug_info *di, const char *modname)

[ ... ]

>  	dt->mod_name = modname;
> -	dt->ddebugs = di->descs;
> -	dt->num_ddebugs = di->num_descs;
> +	dt->info = *di;
>  
>  	INIT_LIST_HEAD(&dt->link);
>  
> -	if (di->classes && di->num_classes)
> +	if (di->maps.len)
>  		ddebug_attach_module_classes(dt, di);

[Severity: Medium]
If a built-in module has no class maps, does it unintentionally inherit 
the global list of class maps here?
        
When dt->info is assigned *di, it copies the global maps array, including 
the global di->maps.len. 

If the module has no class maps, ddebug_attach_module_classes() will run, 
but nc remains 0. Since dt->info.maps.len is only updated when nc > 0:

	if (nc) {
		dt->info.maps.len = nc;
		vpr_info("module:%s attached %d classes\n", dt->mod_name, nc);
	}

It won't be cleared to 0, leaving the module with the full global list of 
class maps. Should dt->info.maps.len be explicitly cleared when no module
classes are found?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260707-dd-maint-2-v6-0-381f3edb0045@gmail.com?part=20

  reply	other threads:[~2026-07-08  2:30 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-08  2:18 [PATCH v6 00/24] fix dynamic-debug classmaps API for DRM Jim Cromie
2026-07-08  2:18 ` [PATCH v6 01/24] vmlinux.lds.h: refactor BOUNDED_SECTION_* macros into bounded_sections.lds.h Jim Cromie
2026-07-08  2:18 ` [PATCH v6 02/24] vmlinux.lds.h: drop unused HEADERED_SECTION* macros Jim Cromie
2026-07-08  2:18 ` [PATCH v6 03/24] vmlinux.lds.h: Fix ALIGN(8) omission causing NULL ptr on i386 Jim Cromie
2026-07-08  2:18 ` [PATCH v6 04/24] vmlinux.lds.h: remove redundant ALIGN(8) directives Jim Cromie
2026-07-08  2:18 ` [PATCH v6 05/24] dyndbg.lds.S: fix lost dyndbg sections in modules Jim Cromie
2026-07-08  2:18 ` [PATCH v6 06/24] dyndbg: factor ddebug_match_desc out from ddebug_change Jim Cromie
2026-07-08  2:18 ` [PATCH v6 07/24] dyndbg: add stub macro for DECLARE_DYNDBG_CLASSMAP Jim Cromie
2026-07-08  2:18 ` [PATCH v6 08/24] dyndbg: reword "class unknown," to "class:_UNKNOWN_" Jim Cromie
2026-07-08  2:18 ` [PATCH v6 09/24] dyndbg-API: remove DD_CLASS_TYPE_(DISJOINT|LEVEL)_NAMES and code Jim Cromie
2026-07-08  2:18 ` [PATCH v6 10/24] dyndbg: drop NUM_TYPE_ARGS Jim Cromie
2026-07-08  2:24   ` sashiko-bot
2026-07-08 19:30     ` jim.cromie
2026-07-08  2:18 ` [PATCH v6 11/24] dyndbg: bump num-tokens in a query-cmd from 9 to 15 Jim Cromie
2026-07-08  2:18 ` [PATCH v6 12/24] dyndbg: reduce verbose/debug clutter Jim Cromie
2026-07-08  2:18 ` [PATCH v6 13/24] lib/parser: add match_wildcard_hyphen() for agnostic matching Jim Cromie
2026-07-08  2:18 ` [PATCH v6 14/24] dyndbg: use KBUILD_MODFILE for unique builtin module names Jim Cromie
2026-07-08  2:18 ` [PATCH v6 15/24] dyndbg: refactor param_set_dyndbg_classes and below Jim Cromie
2026-07-08  2:29   ` sashiko-bot
2026-07-08 19:28     ` jim.cromie
2026-07-08  2:18 ` [PATCH v6 16/24] dyndbg: tighten fn-sig of ddebug_apply_class_bitmap Jim Cromie
2026-07-08  2:18 ` [PATCH v6 17/24] dyndbg: replace classmap list with an array-slice Jim Cromie
2026-07-08  2:18 ` [PATCH v6 18/24] dyndbg: macrofy a 2-index for-loop pattern Jim Cromie
2026-07-08  2:18 ` [PATCH v6 19/24] dyndbg: pin class param storage to u32 Jim Cromie
2026-07-08  2:37   ` sashiko-bot
2026-07-08 20:48     ` jim.cromie
2026-07-08  2:18 ` [PATCH v6 20/24] dyndbg,module: make proper substructs in _ddebug_info Jim Cromie
2026-07-08  2:30   ` sashiko-bot [this message]
2026-07-08  2:18 ` [PATCH v6 21/24] dyndbg: move mod_name down from struct ddebug_table to _ddebug_info Jim Cromie
2026-07-08  2:18 ` [PATCH v6 22/24] dyndbg: hoist classmap-filter-by-modname up to ddebug_add_module Jim Cromie
2026-07-08  2:18 ` [PATCH v6 23/24] dyndbg: change __dynamic_func_call_cls* macros into expressions Jim Cromie
2026-07-08  2:41   ` sashiko-bot
2026-07-08  2:18 ` [PATCH v6 24/24] dyndbg-API: replace DECLARE_DYNDBG_CLASSMAP Jim Cromie
2026-07-08  2:36   ` sashiko-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260708023012.3B36C1F00A3A@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jim.cromie@gmail.com \
    --cc=linux-modules@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.