Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Fri, 28 Dec 2001 01:23:50 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Fri, 28 Dec 2001 01:23:40 -0500 Received: from netfinity.realnet.co.sz ([196.28.7.2]:41627 "HELO netfinity.realnet.co.sz") by vger.kernel.org with SMTP id ; Fri, 28 Dec 2001 01:23:29 -0500 Date: Fri, 28 Dec 2001 08:22:08 +0200 (SAST) From: Zwane Mwaikambo X-X-Sender: To: Cc: Linux Kernel Subject: Re: BUG and Kernel Panic on 2.5.2-pre1 with loop and cdrom In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Ok looks like the floppy and the cdrom oops are two different thing entirely. A newly decoded cdrom oops is at the end. I'm a bit confused here because it looks like a spinlock magic thing, but then again that spinlock is _definately_ initialised properly (spin_lock_init) loop.c static int loop_end_io_transfer(struct bio *bio, int nr_sectors) { struct loop_device *lo = &loop_dev[MINOR(bio->bi_dev)]; <- evals to loop_dev[0] int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags); if (!uptodate || bio_rw(bio) == WRITE) { struct bio *rbh = bio->bi_private; bio_endio(rbh, uptodate, nr_sectors); if (atomic_dec_and_test(&lo->lo_pending)) up(&lo->lo_bh_mutex); loop_put_buffer(bio); } else loop_add_bio(lo, bio); <== return 0; } static void loop_add_bio(struct loop_device *lo, struct bio *bio) { unsigned long flags; spin_lock_irqsave(&lo->lo_lock, flags); <== we puke here i think if (lo->lo_biotail) { lo->lo_biotail->bi_next = bio; lo->lo_biotail = bio; } else lo->lo_bio = lo->lo_biotail = bio; spin_unlock_irqrestore(&lo->lo_lock, flags); up(&lo->lo_bh_mutex); } (gdb) disassemble loop_add_bio Dump of assembler code for function loop_add_bio: 0x740 : push %edi 0x741 : push %esi 0x742 : push %ebx 0x743 : mov 0x10(%esp,1),%ebx 0x747 : mov 0x14(%esp,1),%esi 0x74b : pushf 0x74c : pop %edi 0x74d : cli 0x74e : cmpl $0xdead4ead,0xd0(%ebx) 0x758 : je 0x780 0x75a : push $0x740 0x75f : push $0x0 0x764 : call 0x765 0x769 : pop %edx 0x76a : pop %ecx 0x76b : push $0x85 0x770 : push $0x0 0x775 : call 0x776 0x77a : ud2a <== we fail at spin_lock_irqsave magic 0x77c : pop %ecx 0x77d : pop %eax 0x77e : mov %esi,%esi <--snip--> invalid operand: 0000 CPU: 0 EIP: 0010:[] Not tainted EFLAGS: 00010086 eax: 00000044 ebx: cb18ab00 ecx: c0304d24 edx: 0003a5a9 esi: cb281d24 edi: 00000096 ebp: c156d5d4 esp: c031bc30 ds: 0018 es: 0018 ss: 0018 Process swapper (pid: 0, stackpage=c031b000) Stack: cc918240 00000085 cb18ab00 cb281d24 00000004 cc9169f7 cb18ab00 cb281d24 cb281d24 00000004 c014dd33 cb281d24 00000004 c020c56e cb281d24 00000001 00000004 00000004 00000000 00000008 c031bcc0 20000000 c156d5d4 00000001 Call Trace: [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] Code: 0f 0b 59 58 89 f6 f0 fe 8b cc 00 00 00 0f 88 21 19 00 00 8b <0>Kernel panic: Aiee, killing interrupt handler! In interrupt handler - not syncing >>EIP; cc9167da <[loop]loop_add_bio+3a/f0> <===== Trace; cc918240 <[loop].text.end+161/861> Trace; cc9169f7 <[loop]loop_end_io_transfer+77/80> Trace; c014dd33 Trace; c020c56e Trace; c021c56b <__ide_end_request+bb/150> Trace; c0223b6e Trace; c014d39d Trace; c014d565 Trace; c020c098 Trace; c014dd33 Trace; c0145794 Trace; c014d39d Trace; c014d565 Trace; c020c098 Trace; c014dd33 Trace; c01f71e1 Trace; cc835198 <[usb-ohci]roothub_portstatus+28/70> Trace; cc83ad45 <[usb-ohci].text.end+876/8e1> Trace; cc83889a <[usb-ohci]rh_send_irq+fa/1a0> Trace; cc838940 <[usb-ohci]rh_int_timer_do+0/70> Trace; c0223ad0 Trace; c02197f2 Trace; c010a9ae Trace; c010ad09 Trace; c0106dd0 Trace; c0106dd0 Trace; c01e0018 Trace; c01ed533 Trace; c0106dd0 Trace; c01ed420 Trace; c0106e82 Trace; c0105000 <_stext+0/0> Code; cc9167da <[loop]loop_add_bio+3a/f0> 00000000 <_EIP>: Code; cc9167da <[loop]loop_add_bio+3a/f0> <===== 0: 0f 0b ud2a <===== Code; cc9167dc <[loop]loop_add_bio+3c/f0> 2: 59 pop %ecx Code; cc9167dd <[loop]loop_add_bio+3d/f0> 3: 58 pop %eax Code; cc9167de <[loop]loop_add_bio+3e/f0> 4: 89 f6 mov %esi,%esi Code; cc9167e0 <[loop]loop_add_bio+40/f0> 6: f0 fe 8b cc 00 00 00 lock decb 0xcc(%ebx) Code; cc9167e7 <[loop]loop_add_bio+47/f0> d: 0f 88 21 19 00 00 js 1934 <_EIP+0x1934> cc91810e <[loop].text.end+2f/861> Code; cc9167ed <[loop]loop_add_bio+4d/f0> 13: 8b 00 mov (%eax),%eax <0>Kernel panic: Aiee, killing interrupt handler! - 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/