On Thu, 28 Mar 2024 15:04:52 +0100 Arnd Bergmann <arnd@xxxxxxxxxx> wrote: > From: Arnd Bergmann <arnd@xxxxxxxx> > > gcc-9 warns about a possibly non-terminated string copy: > > kernel/trace/blktrace.c: In function 'do_blk_trace_setup': > kernel/trace/blktrace.c:527:2: error: 'strncpy' specified bound 32 equals destination size [-Werror=stringop-truncation] > > Newer versions are fine here because they see the following explicit > nul-termination. Using strscpy_pad() avoids the warning and > simplifies the code a little. The padding helps give a clean > buffer to userspace. > > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > --- > kernel/trace/blktrace.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/kernel/trace/blktrace.c b/kernel/trace/blktrace.c > index d5d94510afd3..95a00160d465 100644 > --- a/kernel/trace/blktrace.c > +++ b/kernel/trace/blktrace.c > @@ -524,8 +524,7 @@ static int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev, > if (!buts->buf_size || !buts->buf_nr) > return -EINVAL; > > - strncpy(buts->name, name, BLKTRACE_BDEV_SIZE); > - buts->name[BLKTRACE_BDEV_SIZE - 1] = '\0'; > + strscpy(buts->name, name, BLKTRACE_BDEV_SIZE); The commit message says "Using strscpy_pad()" but it doesn't do so in the patch. Rule 12 of debugging: "When the comment and the code do not match, they are probably both wrong" -- Steve > > /* > * some device names have larger paths - convert the slashes