Thread (16 messages) 16 messages, 2 authors, 40m ago

[PATCH v4 00/11] seq_buf: Add seq_buf_strlen()

HOTtoday

From: Kees Cook <kees@kernel.org>
Date: 2026-10-03 03:59:21
Also in: bpf, linux-doc, linux-hardening, linux-security-module, linux-trace-kernel, lkml, nvdimm

Revision v4 of 4 in this series.

Revisions (4)
  1. v1 [diff vs current]
  2. v2 [diff vs current]
  3. v3 [diff vs current]
  4. v4 current
Hi,

While working on seq_buf conversions[1], we found there was a need for
seq_buf_strlen() (since calling strlen(seq_buf_str()) would be a waste
of time: seq_buf already knows the length), seq_buf_init_append() (to
start a seq_buf from an existing string buffer), and seq_buf_terminate()
(as there are many callers using seq_buf_str() just for its termination
side-effect). And while implementing that, we found a bunch of other
related things that needed fixing. This is that ever-growing series,
with tests for each fix.

 v4:
  - add trailers from v3
  - 03/11, 04/11: export seq_buf_putmem() and seq_buf_path(), which the
    tests call, so they also build as a module
  - 08/11: start out overflowed when the buffer has no NUL within its
    size, as strlcat() treats it as already truncated (Andy)
  - 09/11: use seq_buf_strlen() for flags_show()'s check whether any
    flag was printed, too (Madhavan)
  - 01/11, 05/11: drop doubled blank lines and re-wrap a declaration in
    the tests (Andy)
  - v3..v4 diff: https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/diff/?id=dev/v7.3-rc2/seq_buf/v4&id2=dev/v7.3-rc2/seq_buf/v3
 v3: https://lore.kernel.org/all/20260930235231.out.387-kees@kernel.org/ (local)
 v2: https://lore.kernel.org/all/20260919002658.stay.929-kees@kernel.org/ (local)
 v1: https://lore.kernel.org/all/20260917002312.i.923-kees@kernel.org/ (local)

Thanks!

-Kees

[1] https://lore.kernel.org/all/20260917011359.1585961-1-morbo@google.com/ (local)

Bill Wendling (1):
  seq_buf: Add seq_buf_init_append()

Kees Cook (10):
  seq_buf: Do not print an empty line from an overflowed
    seq_buf_do_printk()
  seq_buf: Do not pop from an overflowed seq_buf
  seq_buf: Copy what fits when seq_buf_puts() and seq_buf_putmem()
    overflow
  seq_buf: Clear what a writer did not claim when a seq_buf overflows
  seq_buf: Add seq_buf_strlen()
  seq_buf: Add seq_buf_terminate()
  bpf: Remove dead newline stripping from format_disasm_line()
  powerpc/papr_scm: Return the string length from the sysfs show
    functions
  nvdimm: ndtest: Return the string length from flags_show()
  docs: core-api: Document the seq_buf API

 Documentation/core-api/kernel-api.rst     |   9 +
 include/linux/seq_buf.h                   | 139 +++++-
 include/linux/trace_seq.h                 |   5 +-
 arch/powerpc/platforms/pseries/papr_scm.c |   6 +-
 kernel/bpf/diagnostics.c                  |   8 +-
 kernel/trace/trace_events.c               |   4 +-
 kernel/trace/trace_events_hist.c          |   6 +-
 lib/seq_buf.c                             |  37 +-
 lib/tests/seq_buf_kunit.c                 | 528 +++++++++++++++++++++-
 tools/testing/nvdimm/test/ndtest.c        |   2 +-
 10 files changed, 708 insertions(+), 36 deletions(-)

-- 
2.55.0

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help