Re: [PATCH v5 06/12] seq_buf: Add seq_buf_strlen()

From: Steven Rostedt

Date: Thu Oct 22 2026 - 16:05:18 EST


On Thu, 22 Oct 2026 15:57:51 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> It's not an off-by-one error here. The s->len = size - 1 is correct, but it
> also has a side effect of removing a character without marking it
> overflowed. The seq_buf defines being "overflowed" as s->len == s->size + 1.
> What the else statement should have is:
>
> else
> seq_buf_set_overflow(s);
>
> Which would be less confusing to reviewers as that is defined as:
>
> static inline void
> seq_buf_set_overflow(struct seq_buf *s)
> {
> s->len = s->size + 1;
> }

More exactly:

static inline size_t __seq_buf_terminate(struct seq_buf *s)
{
size_t end;

if (seq_buf_buffer_left(s)) {
end = s->len;
} else {
end = s->size - 1;
seq_buf_set_overflow(s);
}

s->buffer[end] = 0;

return end;
}