xtensa: fix stop_machine_cpuslocked call in patch_text
authorMax Filippov <jcmvbkbc@gmail.com>
Wed, 16 Mar 2022 09:04:17 +0000 (02:04 -0700)
committerMax Filippov <jcmvbkbc@gmail.com>
Wed, 16 Mar 2022 09:14:20 +0000 (02:14 -0700)
patch_text must invoke patch_text_stop_machine on all online CPUs, but
it calls stop_machine_cpuslocked with NULL cpumask. As a result only one
CPU runs patch_text_stop_machine potentially leaving stale icache
entries on other CPUs. Fix that by calling stop_machine_cpuslocked with
cpu_online_mask as the last argument.

Cc: stable@vger.kernel.org
Fixes: 64711f9a47d4 ("xtensa: implement jump_label support")
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
arch/xtensa/kernel/jump_label.c

index 61cf6497a646b7ec0273f0c8e823df64cffd9824..0dde21e0d3de4c2836bbce5c7fee361811863ec8 100644 (file)
@@ -61,7 +61,7 @@ static void patch_text(unsigned long addr, const void *data, size_t sz)
                        .data = data,
                };
                stop_machine_cpuslocked(patch_text_stop_machine,
-                                       &patch, NULL);
+                                       &patch, cpu_online_mask);
        } else {
                unsigned long flags;