srcu: Release early_srcu resources when no longer in use
authorZqiang <qiang1.zhang@intel.com>
Thu, 10 Nov 2022 07:30:13 +0000 (15:30 +0800)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 4 Jan 2023 01:49:22 +0000 (17:49 -0800)
Kernels built with the CONFIG_TREE_SRCU Kconfig option set and then
booted with rcupdate.rcu_self_test=1 and srcutree.convert_to_big=1 will
test Tree SRCU during early boot.  The early_srcu structure's srcu_node
array will be allocated when init_srcu_struct_fields() is invoked,
but after the test completes this early_srcu structure will not be used.

This commit therefore invokes cleanup_srcu_struct() to free that srcu_node
structure.

Signed-off-by: Zqiang <qiang1.zhang@intel.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/update.c

index f5e6a2f95a2a0b00dad748219b1c9c5bbb64c68f..a5b4abbee64394090bb96c728880397c8e1e9458 100644 (file)
@@ -586,6 +586,7 @@ static int rcu_verify_early_boot_tests(void)
                early_boot_test_counter++;
                srcu_barrier(&early_srcu);
                WARN_ON_ONCE(!poll_state_synchronize_srcu(&early_srcu, early_srcu_cookie));
+               cleanup_srcu_struct(&early_srcu);
        }
        if (rcu_self_test_counter != early_boot_test_counter) {
                WARN_ON(1);