When scftorture finds an error in the module parameters controlling the relative frequencies of smp_call_function*() variants, it takes an early exit. So early that it has not allocated memory to track the kthreads running the test, which results in a segfault. This commit therefore checks for the existence of the memory before attempting to stop the kthreads that would otherwise have been recorded in that non-existent memory.
Showing the changes to kernel (1 of 1 file). Show all
Unified · Split
| @@ -513,7 +513,7 @@ static void scf_torture_cleanup(void) · 512 unmodified lines | ||
| 513 | 513 | return; |
| 514 | 514 | |
| 515 | 515 | WRITE_ONCE(scfdone, true); |
| 516 | − if (nthreads) | |
| 516 | + if (nthreads && scf_stats_p) | |
| 517 | 517 | for (i = 0; i < nthreads; i++) |
| 518 | 518 | torture_stop_kthread("scftorture_invoker", scf_stats_p[i].task); |
| 519 | 519 | else |