radix tree test suite: Register the main thread with the RCU library

[ Upstream commit 1bb4bd266c ]

Several test runners register individual worker threads with the
RCU library, but neglect to register the main thread, which can lead
to objects being freed while the main thread is in what appears to be
an RCU critical section.

Reported-by: Chris von Recklinghausen <crecklin@redhat.com>
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Matthew Wilcox (Oracle) 2021-03-31 14:59:19 -04:00 committed by Greg Kroah-Hartman
parent f5b60f26e3
commit cde89079ce
3 changed files with 6 additions and 0 deletions

View file

@ -577,6 +577,7 @@ void ida_tests(void)
int __weak main(void)
{
rcu_register_thread();
radix_tree_init();
idr_checks();
ida_tests();
@ -584,5 +585,6 @@ int __weak main(void)
rcu_barrier();
if (nr_allocated)
printf("nr_allocated = %d\n", nr_allocated);
rcu_unregister_thread();
return 0;
}

View file

@ -224,7 +224,9 @@ void multiorder_checks(void)
int __weak main(void)
{
rcu_register_thread();
radix_tree_init();
multiorder_checks();
rcu_unregister_thread();
return 0;
}

View file

@ -25,11 +25,13 @@ void xarray_tests(void)
int __weak main(void)
{
rcu_register_thread();
radix_tree_init();
xarray_tests();
radix_tree_cpu_dead(1);
rcu_barrier();
if (nr_allocated)
printf("nr_allocated = %d\n", nr_allocated);
rcu_unregister_thread();
return 0;
}