kernel: fix off-by-one benign bugs

We were wasting a byte due to an off-by-one bug.  s[c]nprintf() doesn't
write more than $2 bytes including the null byte, so trying to pass
'size-1' there is wasting one byte.

This is essentially the same as the previous commit, in a different
file.

Link: https://lkml.kernel.org/r/b4a945a4d40b7104364244f616eb9fb9f1fa691f.1765449750.git.alx@kernel.org
Signed-off-by: Alejandro Colomar <alx@kernel.org>
Cc: Marco Elver <elver@google.com>
Cc: Kees Cook <kees@kernel.org>
Cc: Christopher Bazley <chris.bazley.wg14@gmail.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Jann Horn <jannh@google.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Cc: Marco Elver <elver@google.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Maciej W. Rozycki <macro@orcam.me.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Alejandro Colomar 2025-12-11 11:44:00 +01:00 committed by Andrew Morton
parent 8118f197b7
commit a9e5620c9a

View File

@ -176,7 +176,7 @@ static bool __report_matches(const struct expect_report *r)
/* Title */ /* Title */
cur = expect[0]; cur = expect[0];
end = &expect[0][sizeof(expect[0]) - 1]; end = ARRAY_END(expect[0]);
cur += scnprintf(cur, end - cur, "BUG: KCSAN: %s in ", cur += scnprintf(cur, end - cur, "BUG: KCSAN: %s in ",
is_assert ? "assert: race" : "data-race"); is_assert ? "assert: race" : "data-race");
if (r->access[1].fn) { if (r->access[1].fn) {
@ -200,7 +200,7 @@ static bool __report_matches(const struct expect_report *r)
/* Access 1 */ /* Access 1 */
cur = expect[1]; cur = expect[1];
end = &expect[1][sizeof(expect[1]) - 1]; end = ARRAY_END(expect[1]);
if (!r->access[1].fn) if (!r->access[1].fn)
cur += scnprintf(cur, end - cur, "race at unknown origin, with "); cur += scnprintf(cur, end - cur, "race at unknown origin, with ");