• Uladzislau Rezki (Sony)'s avatar
    rcu/kvfree: Add debug check for GP complete for kfree_rcu_cpu list · f32276a3
    Uladzislau Rezki (Sony) authored
    Under low-memory conditions, kvfree_rcu() will use each object's
    rcu_head structure to queue objects in a singly linked list headed by
    the kfree_rcu_cpu structure's ->head field.  This list is passed to
    call_rcu() as a unit, but there is no indication of which grace period
    this list needs to wait for.  This in turn prevents adding debug checks
    in the kfree_rcu_work() as was done for the two page-of-pointers channels
    in the kfree_rcu_cpu structure.
    
    This commit therefore adds a ->head_free_gp_snap field to the
    kfree_rcu_cpu_work structure to record this grace-period number.  It also
    adds a WARN_ON_ONCE() to kfree_rcu_monitor() that checks to make sure
    that the required grace period has in fact elapsed.
    
    [ paulmck: Fix kerneldoc issue raised by Stephen Rothwell. ]
    Signed-off-by: default avatarUladzislau Rezki (Sony) <urezki@gmail.com>
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    f32276a3
tree.c 162 KB