lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 328/633] rcutorture: Properly set rcu_fwds for OOM handling
    Date
    From: Paul E. McKenney <paulmck@kernel.org>

    [ Upstream commit c8fa63714763b7795a3f5fb7ed6d000763e6dccc ]

    The conversion of rcu_fwds to dynamic allocation failed to actually
    allocate the required structure. This commit therefore allocates it,
    frees it, and updates rcu_fwds accordingly. While in the area, it
    abstracts the cleanup actions into rcu_torture_fwd_prog_cleanup().

    Fixes: 5155be9994e5 ("rcutorture: Dynamically allocate rcu_fwds structure")
    Reported-by: kernel test robot <rong.a.chen@intel.com>
    Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    kernel/rcu/rcutorture.c | 13 ++++++++++++-
    1 file changed, 12 insertions(+), 1 deletion(-)

    diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
    index efb792e13fca9..23ec68d8ff3aa 100644
    --- a/kernel/rcu/rcutorture.c
    +++ b/kernel/rcu/rcutorture.c
    @@ -2154,9 +2154,20 @@ static int __init rcu_torture_fwd_prog_init(void)
    return -ENOMEM;
    spin_lock_init(&rfp->rcu_fwd_lock);
    rfp->rcu_fwd_cb_tail = &rfp->rcu_fwd_cb_head;
    + rcu_fwds = rfp;
    return torture_create_kthread(rcu_torture_fwd_prog, rfp, fwd_prog_task);
    }

    +static void rcu_torture_fwd_prog_cleanup(void)
    +{
    + struct rcu_fwd *rfp;
    +
    + torture_stop_kthread(rcu_torture_fwd_prog, fwd_prog_task);
    + rfp = rcu_fwds;
    + rcu_fwds = NULL;
    + kfree(rfp);
    +}
    +
    /* Callback function for RCU barrier testing. */
    static void rcu_torture_barrier_cbf(struct rcu_head *rcu)
    {
    @@ -2360,7 +2371,7 @@ rcu_torture_cleanup(void)

    show_rcu_gp_kthreads();
    rcu_torture_barrier_cleanup();
    - torture_stop_kthread(rcu_torture_fwd_prog, fwd_prog_task);
    + rcu_torture_fwd_prog_cleanup();
    torture_stop_kthread(rcu_torture_stall, stall_task);
    torture_stop_kthread(rcu_torture_writer, writer_task);

    --
    2.25.1


    \
     
     \ /
      Last update: 2022-09-17 16:09    [W:3.040 / U:0.488 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site