All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH UP] Make smp_call_function_single() match SMP semantics
@ 2020-02-05 14:34 Paul E. McKenney
  2020-02-07 14:37 ` [tip: smp/urgent] smp/up: " tip-bot2 for Paul E. McKenney
  0 siblings, 1 reply; 2+ messages in thread
From: Paul E. McKenney @ 2020-02-05 14:34 UTC (permalink / raw)
  To: linux-kernel; +Cc: kernel-team, tglx, gregkh, rmk+kernel, nico

In CONFIG_SMP=y kernels, smp_call_function_single() returns -ENXIO when
invoked for a non-existent CPU.  In contrast, in CONFIG_SMP=n kernels,
a splat is emitted and smp_call_function_single() otherwise silently
ignores its "cpu" argument, instead pretending that the caller intended
to have something happen on CPU 0.  Given that there is now code that
expects smp_call_function_single() to return an error if a bad CPU was
specified, this difference in semantics needs to be addressed.

This commit therefore brings the semantics of the CONFIG_SMP=n version
of smp_call_function_single() into alignment with its CONFIG_SMP=y
counterpart.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
 up.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/kernel/up.c b/kernel/up.c
index 862b460..a504e81 100644
--- a/kernel/up.c
+++ b/kernel/up.c
@@ -14,7 +14,8 @@ int smp_call_function_single(int cpu, void (*func) (void *info), void *info,
 {
 	unsigned long flags;
 
-	WARN_ON(cpu != 0);
+	if (cpu != 0)
+		return -ENXIO;
 
 	local_irq_save(flags);
 	func(info);

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-02-07 14:37 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-05 14:34 [PATCH UP] Make smp_call_function_single() match SMP semantics Paul E. McKenney
2020-02-07 14:37 ` [tip: smp/urgent] smp/up: " tip-bot2 for Paul E. McKenney

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.