Re: [PATCH v3] watchdog/perf: one digit too short in the raw event config copy
From: Doug Anderson
Date: Sun Oct 04 2026 - 09:16:00 EST
Hi,
On Sat, Oct 3, 2026 at 3:40 AM Bradley Morgan <brads@xxxxxxxxxxxxxx> wrote:
>
> Commit 6164be01f179 ("watchdog/perf: optimize bytes copied and remove
> manual NUL-termination") swapped strscpy(buf, str, sizeof(buf)) plus a
> manual buf[len] = 0 for strscpy(buf, str, len), and that count is one
> short. strscpy() keeps the last byte of the destination for the NUL,
> so the config loses its final digit, nmi_watchdog=r300,panic for
> example ends up with buf = "30" and arms the raw event with the wrong
> config.
>
> The empty case falls over too, strscpy() with a zero count writes
> nothing at all, so nmi_watchdog=r,1 leaves buf uninitialized and
> kstrtoull() reads whatever stack garbage is sitting there.
>
> The old code was safe on both by accident, it filled the whole buffer
> first and buf[len] = 0 then stomped the comma position, so the worst
> you got was a truncated parse failure.
>
> Pass len + 1 so the copy includes the character the NUL replaces, and
> reject len >= sizeof(buf) like it was before the optimization, which
> also turns an empty config back into a clean parse failure.
>
> Fixes: 6164be01f179 ("watchdog/perf: optimize bytes copied and remove manual NUL-termination")
> Signed-off-by: Bradley Morgan <brads@xxxxxxxxxxxxxx>
> Changes since v2:
>
> - rebased on pristine mainline, v2 was cut on top of v1 so the diff
> carried v1's hunks
> - the intro note moved below the cut, it ended up in the commit
> message in v2
> - dropped the Suggested-by, review feedback doesn't warrant one
>
> ---
> kernel/watchdog_perf.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
Other than your changelog being "before the cut" instead of "after the
cut", this version looks right to me. I assume it's easier for Andrew
to just delete the changelog when applying than dealing with another
version of the patch. He'll presumably yell if he wants you to send a
new version.
Reviewed-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
BTW: have you considered using a tool like "b4" or "patman". Those
should be able to send the email directly for you, resulting in fewer
goofups...