x86: Use __stop_machine() in text_poke_smp()
authorMasami Hiramatsu <[email protected]>
Thu, 14 Oct 2010 03:10:36 +0000 (12:10 +0900)
committerIngo Molnar <[email protected]>
Thu, 14 Oct 2010 06:55:28 +0000 (08:55 +0200)
Use __stop_machine() in text_poke_smp() because the caller
must get online_cpus before calling text_poke_smp(), but
stop_machine() do it again. We don't need it.

Signed-off-by: Masami Hiramatsu <[email protected]>
Cc: Rusty Russell <[email protected]>
Cc: Ananth N Mavinakayanahalli <[email protected]>
Cc: [email protected]
Cc: Mathieu Desnoyers <[email protected]>
LKML-Reference: <20101014031036[email protected]>
Signed-off-by: Ingo Molnar <[email protected]>
arch/x86/kernel/alternative.c

index cb0e6d385f6d6e5a78527a738788904a092bc180..a36bb90aef5383d68bcf4af0b0c33749d572163a 100644 (file)
@@ -637,7 +637,8 @@ void *__kprobes text_poke_smp(void *addr, const void *opcode, size_t len)
        tpp.len = len;
        atomic_set(&stop_machine_first, 1);
        wrote_text = 0;
-       stop_machine(stop_machine_text_poke, (void *)&tpp, NULL);
+       /* Use __stop_machine() because the caller already got online_cpus. */
+       __stop_machine(stop_machine_text_poke, (void *)&tpp, NULL);
        return addr;
 }