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 | return; | 513 | return; |
| 514 | 514 | ||
| 515 | WRITE_ONCE(scfdone, true); | 515 | WRITE_ONCE(scfdone, true); |
| 516 | if (nthreads) | 516 | if (nthreads && scf_stats_p) |
| 517 | for (i = 0; i < nthreads; i++) | 517 | for (i = 0; i < nthreads; i++) |
| 518 | torture_stop_kthread("scftorture_invoker", scf_stats_p[i].task); | 518 | torture_stop_kthread("scftorture_invoker", scf_stats_p[i].task); |
| 519 | else | 519 | else |