From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757367AbZBFXvY (ORCPT ); Fri, 6 Feb 2009 18:51:24 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752261AbZBFXvO (ORCPT ); Fri, 6 Feb 2009 18:51:14 -0500 Received: from smtp1.linux-foundation.org ([140.211.169.13]:33637 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751944AbZBFXvN (ORCPT ); Fri, 6 Feb 2009 18:51:13 -0500 Date: Fri, 6 Feb 2009 15:50:38 -0800 From: Andrew Morton To: "Morten P.D. Stevens" Cc: linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org Subject: Re: linux 2.6.29-rc3 kernel failure with mptsas Message-Id: <20090206155038.67847521.akpm@linux-foundation.org> In-Reply-To: References: X-Mailer: Sylpheed version 2.2.4 (GTK+ 2.8.20; i486-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 5 Feb 2009 23:29:10 +0100 "Morten P.D. Stevens" wrote: > Hi, > > I get a kernel failure with linux 2.6.29-rc3 on my Dell T7400 > Workstation. > > failure message: > > WARNING: at lib/debugobjects.c:253 __debug_object_init+0x2a8/0x353() > (Tainted: G W ) > Hardware name: Precision WorkStation T7400 > Modules linked in: ata_generic pata_acpi mptsas(+) mptscsih mptbase > scsi_transport_sas > Pid: 35, comm: work_on_cpu/0 Tainted: G W > 2.6.29-0.66.rc3.fc11.x86_64 #1 > Call Trace: > [] warn_slowpath+0xb9/0xfe > [] ? printk+0x3c/0x43 > [] __debug_object_init+0x2a8/0x353 > [] ? trace_hardirqs_on+0xd/0xf > [] debug_object_init+0x14/0x19 > [] init_timer+0x18/0x5b > [] mpt_config+0x1e4/0x305 [mptbase] > [] ? pci_free_consistent+0x75/0x81 [mptbase] > [] mpt_do_ioc_recovery+0x142a/0x15e8 [mptbase] > [] ? finish_task_switch+0x5f/0xf6 > [] ? finish_task_switch+0x0/0xf6 > [] ? mpt_timer_expired+0x0/0x60 [mptbase] > [] ? dump_trace+0x269/0x27b > [] ? save_stack_trace+0x2a/0x48 > [] ? save_trace+0x3f/0x95 > [] ? mark_lock+0x22/0x3ad > [] ? mark_lock+0x22/0x3ad > [] ? mark_held_locks+0x67/0x83 > [] ? _spin_unlock_irqrestore+0x47/0x57 > [] ? trace_hardirqs_on_caller+0x12f/0x153 > [] ? trace_hardirqs_on+0xd/0xf > [] ? __up_read+0x7c/0x85 > [] ? up_read+0x26/0x2a > [] mpt_attach+0xa1b/0xb80 [mptbase] > [] mptsas_probe+0x1a/0x487 [mptsas] > [] local_pci_probe+0x12/0x16 > [] do_work_for_cpu+0x13/0x1b > [] run_workqueue+0x103/0x20a > [] ? run_workqueue+0xb1/0x20a > [] ? trace_hardirqs_on_caller+0x12f/0x153 > [] ? do_work_for_cpu+0x0/0x1b > [] worker_thread+0xe0/0xf1 > [] ? autoremove_wake_function+0x0/0x38 > [] ? worker_thread+0x0/0xf1 > [] kthread+0x49/0x76 > [] child_rip+0xa/0x20 > [] ? restore_args+0x0/0x30 > [] ? kthreadd+0x176/0x19b > [] ? kthread+0x0/0x76 > [] ? child_rip+0x0/0x20 > ---[ end trace af29b8e50456f967 ]--- > > > Kernel failure message 2: > ODEBUG: object is on stack, but not annotated This should fix it: From: "Eric Paris" ODEBUG: object is on stack, but not annotated ------------[ cut here ]------------ WARNING: at lib/debugobjects.c:253 __debug_object_init+0x1f3/0x276() Hardware name: VMware Virtual Platform Modules linked in: mptspi(+) mptscsih mptbase scsi_transport_spi ext3 jbd mbcache Pid: 540, comm: insmod Not tainted 2.6.28-mm1 #2 Call Trace: [] warn_slowpath+0x74/0x8a [] ? start_critical_timing+0x96/0xb7 [] ? _spin_unlock_irqrestore+0x2f/0x3c [] ? trace_hardirqs_off_caller+0x18/0xaf [] ? trace_hardirqs_off+0xb/0xd [] ? _spin_unlock_irqrestore+0x2f/0x3c [] ? release_console_sem+0x1a5/0x1ad [] __debug_object_init+0x1f3/0x276 [] debug_object_init+0x13/0x17 [] init_timer+0x10/0x1a [] mpt_config+0x1c1/0x2b7 [mptbase] [] ? kmalloc+0x8/0xa [mptbase] [] ? kmalloc+0x8/0xa [mptbase] [] mpt_do_ioc_recovery+0x950/0x1212 [mptbase] [] ? __lock_acquire+0xa69/0xacc [] ? _spin_unlock_irqrestore+0x36/0x3c [] ? _spin_unlock_irq+0x22/0x26 [] ? string+0x2b/0x76 [] ? vsnprintf+0x338/0x7b3 [] ? __lock_acquire+0xa69/0xacc [] ? _spin_unlock_irqrestore+0x2f/0x3c [] ? __lock_acquire+0xa69/0xacc [] ? debug_check_no_locks_freed+0xeb/0x105 [] ? _spin_unlock_irqrestore+0x36/0x3c [] ? debug_check_no_locks_freed+0x2a/0x105 [] ? lock_release_holdtime+0x43/0x48 [] ? up_read+0x16/0x29 [] ? pci_get_slot+0x66/0x72 [] mpt_attach+0x881/0x9b1 [mptbase] [] mptspi_probe+0x11/0x354 [mptspi] Noticing that every caller of mpt_config has its CONFIGPARMS struct declared on the stack and thus the &pCfg->timer is always on the stack I changed init_timer() to init_timer_on_stack() and it seems to have shut up..... Cc: "Moore, Eric Dean" Cc: James Bottomley Cc: Thomas Gleixner Signed-off-by: Andrew Morton --- drivers/message/fusion/mptbase.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff -puN drivers/message/fusion/mptbase.c~scsi-mpt-suppress-debugobjects-warning drivers/message/fusion/mptbase.c --- a/drivers/message/fusion/mptbase.c~scsi-mpt-suppress-debugobjects-warning +++ a/drivers/message/fusion/mptbase.c @@ -5934,7 +5934,7 @@ mpt_config(MPT_ADAPTER *ioc, CONFIGPARMS /* Initalize the timer */ - init_timer(&pCfg->timer); + init_timer_on_stack(&pCfg->timer); pCfg->timer.data = (unsigned long) ioc; pCfg->timer.function = mpt_timer_expired; pCfg->wait_done = 0; _