Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756596AbYFWKhh (ORCPT ); Mon, 23 Jun 2008 06:37:37 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754439AbYFWKh3 (ORCPT ); Mon, 23 Jun 2008 06:37:29 -0400 Received: from e28smtp05.in.ibm.com ([59.145.155.5]:54869 "EHLO e28esmtp05.in.ibm.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754250AbYFWKh2 (ORCPT ); Mon, 23 Jun 2008 06:37:28 -0400 Date: Mon, 23 Jun 2008 16:07:00 +0530 From: Dhaval Giani To: paulmck@linux.vnet.ibm.com, Dipankar Sarma , Gautham Shenoy , laijs@cn.fujitsu.com, Ingo Molnar , Peter Zijlstra Cc: lkml Subject: [PATCH] fix rcu vs hotplug race Message-ID: <20080623103700.GA4043@linux.vnet.ibm.com> Reply-To: Dhaval Giani MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2022 Lines: 59 On running kernel compiles in parallel with cpu hotplug, ------------[ cut here ]------------ WARNING: at arch/x86/kernel/smp.c:118 native_smp_send_reschedule+0x21/0x36() Modules linked in: Pid: 27483, comm: cc1 Not tainted 2.6.26-rc7 #1 [] warn_on_slowpath+0x41/0x5d [] ? generic_file_aio_read+0x10f/0x137 [] ? file_read_actor+0x0/0xf7 [] ? validate_chain+0xaa/0x29c [] ? __lock_acquire+0x612/0x666 [] ? __lock_acquire+0x612/0x666 [] ? validate_chain+0xaa/0x29c [] ? file_kill+0x2d/0x30 [] ? __lock_release+0x4b/0x51 [] ? file_kill+0x2d/0x30 [] native_smp_send_reschedule+0x21/0x36 [] force_quiescent_state+0x47/0x57 [] call_rcu+0x51/0x6d [] __fput+0x130/0x158 [] fput+0x17/0x19 [] filp_close+0x4d/0x57 [] sys_close+0x5c/0x97 [] sysenter_past_esp+0x6a/0xb1 ======================= ---[ end trace aa35f3913ddf2d06 ]--- This is because a reschedule is sent to a CPU which is offline. Just ensure that the CPU we send the smp_send_reschedule is actually online. Signed-off-by: Dhaval Giani --- kernel/rcuclassic.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) Index: linux-2.6.26-rc7/kernel/rcuclassic.c =================================================================== --- linux-2.6.26-rc7.orig/kernel/rcuclassic.c +++ linux-2.6.26-rc7/kernel/rcuclassic.c @@ -93,7 +93,8 @@ static void force_quiescent_state(struct cpumask = rcp->cpumask; cpu_clear(rdp->cpu, cpumask); for_each_cpu_mask(cpu, cpumask) - smp_send_reschedule(cpu); + if (cpu_online(cpu)) + smp_send_reschedule(cpu); } } #else -- regards, Dhaval -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/