public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] smp: Fix offline cpu check in flush_smp_call_function_queue
@ 2022-03-19  7:20 Nadav Amit
  2022-04-13 16:51 ` [tip: smp/urgent] smp: Fix offline cpu check in flush_smp_call_function_queue() tip-bot2 for Nadav Amit
  0 siblings, 1 reply; 2+ messages in thread
From: Nadav Amit @ 2022-03-19  7:20 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: linux-kernel, Nadav Amit, Peter Zijlstra, Srivatsa S . Bhat

From: Nadav Amit <namit@vmware.com>

The check in flush_smp_call_function_queue() for callbacks that are sent
to offline CPUs currently checks whether the queue is empty.

However, flush_smp_call_function_queue() has just deleted all the
callbacks from the queue and moved all the entries into a local list.
This checks would only be positive if some callbacks were added in the
short time after llist_del_all() was called. This does not seem to be
the intention of this check.

Change the check to look at the local list to which the entries were
moved instead of the queue from which all the callbacks were just
removed.

Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Fixes: 8d056c48e4862 ("CPU hotplug, smp: flush any pending IPI callbacks before CPU offline")
Signed-off-by: Nadav Amit <namit@vmware.com>
---
 kernel/smp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/smp.c b/kernel/smp.c
index d82439bac401..eb275b69d5f3 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -582,7 +582,7 @@ static void flush_smp_call_function_queue(bool warn_cpu_offline)
 
 	/* There shouldn't be any pending callbacks on an offline CPU. */
 	if (unlikely(warn_cpu_offline && !cpu_online(smp_processor_id()) &&
-		     !warned && !llist_empty(head))) {
+		     !warned && entry != NULL)) {
 		warned = true;
 		WARN(1, "IPI on offline CPU %d\n", smp_processor_id());
 
-- 
2.25.1


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

* [tip: smp/urgent] smp: Fix offline cpu check in flush_smp_call_function_queue()
  2022-03-19  7:20 [PATCH] smp: Fix offline cpu check in flush_smp_call_function_queue Nadav Amit
@ 2022-04-13 16:51 ` tip-bot2 for Nadav Amit
  0 siblings, 0 replies; 2+ messages in thread
From: tip-bot2 for Nadav Amit @ 2022-04-13 16:51 UTC (permalink / raw)
  To: linux-tip-commits; +Cc: Nadav Amit, Thomas Gleixner, x86, linux-kernel

The following commit has been merged into the smp/urgent branch of tip:

Commit-ID:     9e949a3886356fe9112c6f6f34a6e23d1d35407f
Gitweb:        https://git.kernel.org/tip/9e949a3886356fe9112c6f6f34a6e23d1d35407f
Author:        Nadav Amit <namit@vmware.com>
AuthorDate:    Sat, 19 Mar 2022 00:20:15 -07:00
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Wed, 13 Apr 2022 18:44:35 +02:00

smp: Fix offline cpu check in flush_smp_call_function_queue()

The check in flush_smp_call_function_queue() for callbacks that are sent
to offline CPUs currently checks whether the queue is empty.

However, flush_smp_call_function_queue() has just deleted all the
callbacks from the queue and moved all the entries into a local list.
This checks would only be positive if some callbacks were added in the
short time after llist_del_all() was called. This does not seem to be
the intention of this check.

Change the check to look at the local list to which the entries were
moved instead of the queue from which all the callbacks were just
removed.

Fixes: 8d056c48e4862 ("CPU hotplug, smp: flush any pending IPI callbacks before CPU offline")
Signed-off-by: Nadav Amit <namit@vmware.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20220319072015.1495036-1-namit@vmware.com
---
 kernel/smp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/smp.c b/kernel/smp.c
index 01a7c17..65a630f 100644
--- a/kernel/smp.c
+++ b/kernel/smp.c
@@ -579,7 +579,7 @@ static void flush_smp_call_function_queue(bool warn_cpu_offline)
 
 	/* There shouldn't be any pending callbacks on an offline CPU. */
 	if (unlikely(warn_cpu_offline && !cpu_online(smp_processor_id()) &&
-		     !warned && !llist_empty(head))) {
+		     !warned && entry != NULL)) {
 		warned = true;
 		WARN(1, "IPI on offline CPU %d\n", smp_processor_id());
 

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

end of thread, other threads:[~2022-04-13 16:51 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-19  7:20 [PATCH] smp: Fix offline cpu check in flush_smp_call_function_queue Nadav Amit
2022-04-13 16:51 ` [tip: smp/urgent] smp: Fix offline cpu check in flush_smp_call_function_queue() tip-bot2 for Nadav Amit

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox