Re: [PATCH] rcuscale: Consolidate per-writer arrays into struct writer_state

From: Paul E. McKenney

Date: Tue Oct 06 2026 - 14:03:32 EST


On Tue, Oct 06, 2026 at 03:41:54AM -0700, Davidlohr Bueso wrote:
> On Sun, 04 Oct 2026, Joel Fernandes wrote:
>
> > The writer kthreads keep their state in five parallel arrays indexed by
> > writer number: writer_tasks, writer_durations, writer_n_durations,
> > writer_done and writer_freelists. Each must be allocated, NULL-checked,
> > freed and cleared separately, and the cleanup path needs several
> > guards to cope with any one of them being missing.
> >
> > Collapse them into a single array of struct writer_state, holding the
> > task pointer, the duration buffer, the measurement count, the done flag
> > and the existing struct writer_freelist.
> >
> > This reduces initialization to one allocation and one out-of-memory
> > check, and cleanup to a single kfree(). As a side effect, this also
> > fixes a leak: cleanup only ran its frees under "if (writer_tasks)", so
> > if the writer_tasks allocation failed while a later allocation (for
> > example writer_durations or writer_n_durations) still succeeded, those
> > already-allocated arrays were never freed. With a single allocation,
> > that partial-allocation state can no longer occur.
> >
> > Assisted-by: Codex
> > Fixes: 8704baab9bc8 ("rcutorture: Add RCU grace-period performance tests")
> > Signed-off-by: Joel Fernandes <joelagnelf@xxxxxxxxxx>
>
> Acked-by: Davidlohr Bueso <dave@xxxxxxxxxxxx>

Queued testing and further review, and for v4.5 (the merge window after
this coming one), thank you all!

Thanx, Paul