From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758948AbYDUMsX (ORCPT ); Mon, 21 Apr 2008 08:48:23 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756688AbYDUMsP (ORCPT ); Mon, 21 Apr 2008 08:48:15 -0400 Received: from pentafluge.infradead.org ([213.146.154.40]:38376 "EHLO pentafluge.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753598AbYDUMsO (ORCPT ); Mon, 21 Apr 2008 08:48:14 -0400 Subject: Re: v2.6.25: WARNING: at kernel/lockdep.c:2437 __lock_acquire+0xc69/0xfa0() From: Peter Zijlstra To: Vegard Nossum Cc: LKML , Tejun Heo , Jeff Garzik , Ingo Molnar In-Reply-To: <19f34abd0804200329j3308b081vc0732c3ec5c0b721@mail.gmail.com> References: <19f34abd0804200329j3308b081vc0732c3ec5c0b721@mail.gmail.com> Content-Type: text/plain Date: Mon, 21 Apr 2008 14:48:10 +0200 Message-Id: <1208782090.7115.179.camel@twins> Mime-Version: 1.0 X-Mailer: Evolution 2.22.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, 2008-04-20 at 12:29 +0200, Vegard Nossum wrote: > Hi, > > This appears in clean v2.6.25: > > ------------[ cut here ]------------ > WARNING: at kernel/lockdep.c:2437 __lock_acquire+0xc69/0xfa0() > Pid: 1002, comm: scsi_eh_4 Not tainted 2.6.25 #379 > [] warn_on_slowpath+0x3c/0x50 > [] ? __lock_acquire+0x219/0xfa0 > [] ? __lock_acquire+0x219/0xfa0 > [] ? __kernel_text_address+0x8/0x20 > [] ? dump_trace+0xce/0x120 > [] ? save_stack_trace+0x1c/0x40 > [] ? save_trace+0x39/0xa0 > [] ? mark_lock+0x61/0x540 > [] __lock_acquire+0xc69/0xfa0 > [] ? __cancel_work_timer+0x5a/0x140 > [] ? native_sched_clock+0x5c/0xb0 > [] lock_acquire+0x6e/0x90 > [] ? ata_scsi_error+0x33/0x6a0 > [] _spin_lock_irqsave+0x26/0x60 > [] ? ata_scsi_error+0x33/0x6a0 > [] ? ata_bmdma_error_handler+0x0/0x50 > [] ata_scsi_error+0x33/0x6a0 > [] ? schedule+0x27a/0x410 > [] ? __scsi_iterate_devices+0x51/0x70 > [] ? scsi_run_host_queues+0x21/0x30 > [] scsi_error_handler+0x9e/0x4e0 > [] ? schedule+0x27a/0x410 > [] ? scsi_error_handler+0x0/0x4e0 > [] kthread+0x36/0x60 > [] ? kthread+0x0/0x60 > [] kernel_thread_helper+0x7/0x10 > ======================= > ---[ end trace 5e5d737e76fd4940 ]--- Indeed, quite easy to reproduce: diff --git a/kernel/lockdep.c b/kernel/lockdep.c index 81a4e4a..33901ef 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c @@ -2434,6 +2434,13 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, * the hash, not class->key. */ id = class - lock_classes; + if (id >= MAX_LOCKDEP_KEYS) { + spinlock_t *slock = container_of(lock, spinlock_t, dep_map); + + printk(KERN_EMERG "magic: %x\n", slock->magic); + printk(KERN_EMERG "class: %p\n", class); + printk(KERN_EMERG "id: %u\n", id); + } if (DEBUG_LOCKS_WARN_ON(id >= MAX_LOCKDEP_KEYS)) return 0; gives me: ata3: PATA max PIO4 cmd 0x1e8 ctl 0x3ee irq 11 magic: c050cf60 class: c7c20e54 id: 2265185251 ------------[ cut here ]------------ WARNING: at /mnt/md0/src/linux-2.6-2/kernel/lockdep.c:2444 __lock_acquire+0x57b/0xfd0() Looks like someone is stomping on the spinlock or just passing us garbage.