From: Jim Cromie <jim.cromie@gmail.com>
To: jbaron@akamai.com, gregkh@linuxfoundation.org,
linux-kernel@vger.kernel.org
Cc: ukaszb@chromium.org, linux@rasmusvillemoes.dk, joe@perches.com,
mcgrof@kernel.org, daniel.vetter@ffwll.ch,
tvrtko.ursulin@linux.intel.com, jani.nikula@intel.com,
ville.syrjala@linux.intel.com, seanpaul@chromium.org,
robdclark@gmail.com, groeck@google.com, yanivt@google.com,
bleung@google.com, Jim Cromie <jim.cromie@gmail.com>
Subject: [PATCH v8-RESEND 12/33] dyndbg: tighten fn-sig of ddebug_apply_class_bitmap
Date: Thu, 16 May 2024 11:43:36 -0600 [thread overview]
Message-ID: <20240516174357.26755-13-jim.cromie@gmail.com> (raw)
In-Reply-To: <20240516174357.26755-1-jim.cromie@gmail.com>
old_bits arg is currently a pointer to the input bits, but this could
allow inadvertent changes to the input by the fn. Disallow this.
And constify new_bits while here.
Signed-off-by: Jim Cromie <jim.cromie@gmail.com>
---
lib/dynamic_debug.c | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/lib/dynamic_debug.c b/lib/dynamic_debug.c
index 882354e1e78f..d4a0ae31d059 100644
--- a/lib/dynamic_debug.c
+++ b/lib/dynamic_debug.c
@@ -597,7 +597,8 @@ static int ddebug_exec_queries(char *query, const char *modname)
/* apply a new class-param setting */
static int ddebug_apply_class_bitmap(const struct ddebug_class_param *dcp,
- unsigned long *new_bits, unsigned long *old_bits,
+ const unsigned long *new_bits,
+ const unsigned long old_bits,
const char *query_modname)
{
#define QUERY_SIZE 128
@@ -606,12 +607,12 @@ static int ddebug_apply_class_bitmap(const struct ddebug_class_param *dcp,
int matches = 0;
int bi, ct;
- if (*new_bits != *old_bits)
+ if (*new_bits != old_bits)
v2pr_info("apply bitmap: 0x%lx to: 0x%lx for %s\n", *new_bits,
- *old_bits, query_modname ?: "'*'");
+ old_bits, query_modname ?: "'*'");
for (bi = 0; bi < map->length; bi++) {
- if (test_bit(bi, new_bits) == test_bit(bi, old_bits))
+ if (test_bit(bi, new_bits) == test_bit(bi, &old_bits))
continue;
snprintf(query, QUERY_SIZE, "class %s %c%s", map->class_names[bi],
@@ -623,9 +624,9 @@ static int ddebug_apply_class_bitmap(const struct ddebug_class_param *dcp,
v2pr_info("bit_%d: %d matches on class: %s -> 0x%lx\n", bi,
ct, map->class_names[bi], *new_bits);
}
- if (*new_bits != *old_bits)
+ if (*new_bits != old_bits)
v2pr_info("applied bitmap: 0x%lx to: 0x%lx for %s\n", *new_bits,
- *old_bits, query_modname ?: "'*'");
+ old_bits, query_modname ?: "'*'");
return matches;
}
@@ -681,7 +682,7 @@ static int param_set_dyndbg_classnames(const char *instr, const struct kernel_pa
continue;
}
curr_bits ^= BIT(cls_id);
- totct += ddebug_apply_class_bitmap(dcp, &curr_bits, dcp->bits, NULL);
+ totct += ddebug_apply_class_bitmap(dcp, &curr_bits, *dcp->bits, NULL);
*dcp->bits = curr_bits;
v2pr_info("%s: changed bit %d:%s\n", KP_NAME(kp), cls_id,
map->class_names[cls_id]);
@@ -691,7 +692,7 @@ static int param_set_dyndbg_classnames(const char *instr, const struct kernel_pa
old_bits = CLASSMAP_BITMASK(*dcp->lvl);
curr_bits = CLASSMAP_BITMASK(cls_id + (wanted ? 1 : 0 ));
- totct += ddebug_apply_class_bitmap(dcp, &curr_bits, &old_bits, NULL);
+ totct += ddebug_apply_class_bitmap(dcp, &curr_bits, old_bits, NULL);
*dcp->lvl = (cls_id + (wanted ? 1 : 0));
v2pr_info("%s: changed bit-%d: \"%s\" %lx->%lx\n", KP_NAME(kp), cls_id,
map->class_names[cls_id], old_bits, curr_bits);
@@ -745,7 +746,7 @@ static int param_set_dyndbg_module_classes(const char *instr,
inrep &= CLASSMAP_BITMASK(map->length);
}
v2pr_info("bits:0x%lx > %s.%s\n", inrep, modnm ?: "*", KP_NAME(kp));
- totct += ddebug_apply_class_bitmap(dcp, &inrep, dcp->bits, modnm);
+ totct += ddebug_apply_class_bitmap(dcp, &inrep, *dcp->bits, modnm);
*dcp->bits = inrep;
break;
case DD_CLASS_TYPE_LEVEL_NUM:
@@ -758,7 +759,7 @@ static int param_set_dyndbg_module_classes(const char *instr,
old_bits = CLASSMAP_BITMASK(*dcp->lvl);
new_bits = CLASSMAP_BITMASK(inrep);
v2pr_info("lvl:%ld bits:0x%lx > %s\n", inrep, new_bits, KP_NAME(kp));
- totct += ddebug_apply_class_bitmap(dcp, &new_bits, &old_bits, modnm);
+ totct += ddebug_apply_class_bitmap(dcp, &new_bits, old_bits, modnm);
*dcp->lvl = inrep;
break;
default:
--
2.45.0
next prev parent reply other threads:[~2024-05-16 17:44 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-16 17:43 [PATCH v8-RESEND 00/33] Fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y regression Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 01/33] docs/dyndbg: update examples \012 to \n Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 02/33] test-dyndbg: fixup CLASSMAP usage error Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 03/33] dyndbg: reword "class unknown," to "class:_UNKNOWN_" Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 04/33] dyndbg: make ddebug_class_param union members same size Jim Cromie
2024-05-21 11:42 ` Łukasz Bartosik
2024-05-21 14:41 ` jim.cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 05/33] dyndbg: replace classmap list with a vector Jim Cromie
2024-05-21 11:45 ` Łukasz Bartosik
2024-05-21 14:44 ` jim.cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 06/33] dyndbg: ddebug_apply_class_bitmap - add module arg, select on it Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 07/33] dyndbg: split param_set_dyndbg_classes to _module & wrapper fns Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 08/33] dyndbg: drop NUM_TYPE_ARRAY Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 09/33] dyndbg: reduce verbose/debug clutter Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 10/33] dyndbg: silence debugs with no-change updates Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 11/33] dyndbg: tighten ddebug_class_name() 1st arg type Jim Cromie
2024-05-16 17:43 ` Jim Cromie [this message]
2024-05-16 17:43 ` [PATCH v8-RESEND 13/33] dyndbg: reduce verbose=3 messages in ddebug_add_module Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 14/33] dyndbg-API: remove DD_CLASS_TYPE_(DISJOINT|LEVEL)_NAMES and code Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 15/33] dyndbg-API: fix DECLARE_DYNDBG_CLASSMAP Jim Cromie
2024-05-21 11:46 ` Łukasz Bartosik
2024-05-21 16:31 ` jim.cromie
2024-05-22 18:52 ` jim.cromie
2024-05-24 10:38 ` Łukasz Bartosik
2024-05-16 17:43 ` [PATCH v8-RESEND 16/33] selftests-dyndbg: add tools/testing/selftests/dynamic_debug/* Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 17/33] selftests-dyndbg: exit 127 if no facility Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 18/33] dyndbg-API: promote DYNDBG_CLASSMAP_PARAM to API Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 19/33] dyndbg-doc: add classmap info to howto Jim Cromie
2024-05-21 11:57 ` Łukasz Bartosik
2024-05-21 14:57 ` jim.cromie
2024-05-22 14:01 ` Łukasz Bartosik
2024-05-16 17:43 ` [PATCH v8-RESEND 20/33] dyndbg: treat comma as a token separator Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 21/33] selftests-dyndbg: add comma_terminator_tests Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 22/33] dyndbg: split multi-query strings with % Jim Cromie
2024-05-21 11:58 ` Łukasz Bartosik
2024-05-21 16:08 ` jim.cromie
2024-05-22 16:57 ` Łukasz Bartosik
2024-05-22 18:33 ` jim.cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 23/33] selftests-dyndbg: test_percent_splitting multi-cmds on module classes Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 24/33] docs/dyndbg: explain new delimiters: comma, percent Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 25/33] selftests-dyndbg: add test_mod_submod Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 26/33] selftests-dyndbg: test dyndbg-to-tracefs Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 27/33] dyndbg-doc: explain flags parse 1st Jim Cromie
2024-05-21 11:58 ` Łukasz Bartosik
2024-05-16 17:43 ` [PATCH v8-RESEND 28/33] drm+drivers: adapt to use DYNDBG_CLASSMAP_{DEFINE,USE} Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 29/33] drm-dyndbg: adapt to use DYNDBG_CLASSMAP_PARAM Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 30/33] drm: use correct ccflags-y spelling Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 31/33] drm-drivers: DRM_CLASSMAP_USE in 2nd batch of drivers, helpers Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 32/33] drm: restore CONFIG_DRM_USE_DYNAMIC_DEBUG un-BROKEN Jim Cromie
2024-05-16 17:43 ` [PATCH v8-RESEND 33/33] drm-print: workaround compiler meh Jim Cromie
2024-05-21 11:40 ` [PATCH v8-RESEND 00/33] Fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y regression Łukasz Bartosik
2024-05-21 19:10 ` jim.cromie
2024-05-22 17:36 ` Łukasz Bartosik
2024-05-26 22:36 ` Łukasz Bartosik
2024-05-27 15:45 ` jim.cromie
2024-05-29 22:01 ` Łukasz Bartosik
2024-06-05 17:05 ` jim.cromie
[not found] ` <CAJfuBxyZdxziS-d=3Ctjr4xyKoUX_GXEskKRMWco32c9Y1_WFA@mail.gmail.com>
2024-06-08 23:59 ` Łukasz Bartosik
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=20240516174357.26755-13-jim.cromie@gmail.com \
--to=jim.cromie@gmail.com \
--cc=bleung@google.com \
--cc=daniel.vetter@ffwll.ch \
--cc=gregkh@linuxfoundation.org \
--cc=groeck@google.com \
--cc=jani.nikula@intel.com \
--cc=jbaron@akamai.com \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=mcgrof@kernel.org \
--cc=robdclark@gmail.com \
--cc=seanpaul@chromium.org \
--cc=tvrtko.ursulin@linux.intel.com \
--cc=ukaszb@chromium.org \
--cc=ville.syrjala@linux.intel.com \
--cc=yanivt@google.com \
/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.