• Paul E. McKenney's avatar
    rcutorture: Test SRCU cleanup code path · ca1d51ed
    Paul E. McKenney authored
    The current rcutorture testing does not do any cleanup operations.
    This works because the srcu_struct is statically allocated, but it
    does represent a memory leak of the associated dynamically allocated
    ->per_cpu_ref per-CPU variables.  However, rcutorture currently uses
    a statically allocated srcu_struct, which cannot legally be passed to
    cleanup_srcu_struct().  Therefore, this commit adds a second form
    of srcu (called srcud) that dynamically allocates and frees the
    associated per-CPU variables.  This commit also adds a ->cleanup()
    member to rcu_torture_ops that is invoked at the end of the test,
    after ->cb_barriers().  This ->cleanup() pointer is NULL for all
    existing tests, and thus only used for scrud.  Finally, the SRCU-P
    torture-test configuration selects scrud instead of srcu, with SRCU-N
    continuing to use srcu, thereby testing both static and dynamic
    srcu_struct structures.
    Reported-by: default avatar"Ahmed, Iftekhar" <ahmedi@onid.oregonstate.edu>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
    Reviewed-by: default avatarJosh Triplett <josh@joshtriplett.org>
    ca1d51ed
rcutorture.c 53.6 KB