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 <[email protected]>
Acked-by: Davidlohr Bueso <[email protected]>

