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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 8 Apr 2022 12:23:03 +0000 (14:23 +0200)
commit f406f2d03e07afc199dd8cf501f361dde6be8a69 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/xtensa/kernel/jump_label.c

index 61cf649..0dde21e 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;