On Thu, Aug 14, 2025 at 06:32:34PM +0200, Thorsten Blum wrote: > strcpy() is deprecated; use strscpy() and memcpy() instead and remove > several manual NUL-terminations. > > In parse_grep(), we can safely use memcpy() because we already know the > length of the source string 'cp' and that it is guaranteed to be > NUL-terminated within the first KDB_GREP_STRLEN bytes. > > Since the destination buffers 'cmd_cur' and 'cmd_hist[cmd_head]' have > the fixed length CMD_BUFLEN, strscpy() automatically determines their > size using sizeof() when the size argument is omitted. This makes the > explicit size arguments for the existing strscpy() calls unnecessary, > remove them. > > No functional changes intended. > > Link: https://github.com/KSPP/linux/issues/88 > Signed-off-by: Thorsten Blum <thorsten.b...@linux.dev> > --- > Changes in v2: > - Use memcpy() instead of strscpy() in parse_grep() as suggested by Greg > - Compile-tested only so far > - Link to v1: > https://lore.kernel.org/lkml/20250814120338.219585-2-thorsten.b...@linux.dev/ > --- > kernel/debug/kdb/kdb_main.c | 32 ++++++++++++++------------------ > 1 file changed, 14 insertions(+), 18 deletions(-) > > diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c > index 7a4d2d4689a5..048dbbcd91a4 100644 > --- a/kernel/debug/kdb/kdb_main.c > +++ b/kernel/debug/kdb/kdb_main.c > @@ -727,14 +727,10 @@ static int kdb_defcmd(int argc, const char **argv) > mp->help = kdb_strdup(argv[3], GFP_KDB); > if (!mp->help) > goto fail_help; > - if (mp->usage[0] == '"') { > - strcpy(mp->usage, argv[2]+1); > - mp->usage[strlen(mp->usage)-1] = '\0'; > - } > - if (mp->help[0] == '"') { > - strcpy(mp->help, argv[3]+1); > - mp->help[strlen(mp->help)-1] = '\0'; > - } > + if (mp->usage[0] == '"') > + strscpy(mp->usage, argv[2] + 1, strlen(argv[2]) - 1); > + if (mp->help[0] == '"') > + strscpy(mp->help, argv[3] + 1, strlen(argv[3]) - 1); > > INIT_LIST_HEAD(&kdb_macro->statements); > defcmd_in_progress = true; > @@ -860,7 +856,7 @@ static void parse_grep(const char *str) > kdb_printf("search string too long\n"); > return; > } > - strcpy(kdb_grep_string, cp); > + memcpy(kdb_grep_string, cp, len + 1); > kdb_grepping_flag++; > return; > } > @@ -1076,12 +1072,12 @@ static int handle_ctrl_cmd(char *cmd) > if (cmdptr != cmd_tail) > cmdptr = (cmdptr + KDB_CMD_HISTORY_COUNT - 1) % > KDB_CMD_HISTORY_COUNT; > - strscpy(cmd_cur, cmd_hist[cmdptr], CMD_BUFLEN); > + strscpy(cmd_cur, cmd_hist[cmdptr]);
Again, you are doing two different things in this patch, it should be 2 different patches. thanks, greg k-h