[PATCH v4 08/11] seq_buf: Add seq_buf_init_append()

bot+bpf-ci at kernel.org bot+bpf-ci at kernel.org
Sat Oct 3 04:33:59 UTC 2026


> seq_buf: Add seq_buf_init_append()

TL;DR: Commit message only: it says seq_buf_init() sets the buffer size to 0
via seq_buf_clear(), but it resets the length, not the size. The code is not
reported as buggy.

> seq_buf: Add seq_buf_init_append()
>
> Several strlcat() call sites being converted to seq_buf need behavior
> seq_buf doesn't currently provide. The normal seq_buf_init() always
> sets the new buffer size to 0 via seq_buf_clear(). Code migrating from
> strlcat(buf, ...), which appends to whatever buf already contains,
> can't use seq_buf_init() without discarding that existing content. Add
> seq_buf_init_append(), which preserves the existing contents and positions
> the seq_buf to append after it. A buffer with no NUL within its size
> starts out overflowed, as strlcat() treats it as already truncated.
> Add KUnit tests for behavior coverage.
>
> Tests passed under qemu on ARCH=x86_64 with GCC 16.2.0 and CONFIG_KASAN=y,
> and on big-endian ARCH=s390 with GCC s390x-linux-gnu 16.2.0.
>
> Assisted-by: LLM
> Signed-off-by: Bill Wendling <morbo at google.com>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com>
> Co-developed-by: Kees Cook <kees at kernel.org>
> Signed-off-by: Kees Cook <kees at kernel.org>

This isn't a bug in the code, but is the changelog accurate when it says
seq_buf_init() "always sets the new buffer size to 0 via seq_buf_clear()"?

seq_buf_init() stores the size it was given in s->size, and seq_buf_clear()
leaves s->size alone.  It only resets the length and terminates the first
byte:

    static inline void seq_buf_clear(struct seq_buf *s)
    {
    	s->len = 0;
    	if (s->size)
    		s->buffer[0] = '\0';
    }

Should the sentence say that seq_buf_init() always sets the length (s->len)
to 0 via seq_buf_clear(), rather than the buffer size?


---
AI reviewed your patch. Please fix the bug or email reply why it's not a bug.
See: https://github.com/kernel-patches/vmtest/blob/master/ci/claude/README.md

CI run summary: https://github.com/kernel-patches/bpf/actions/runs/37096036516


More information about the Linux-security-module-archive mailing list