2.6.27-rc3: IP: [<ffffffffa0038b77>] init_irq+0x18d/0x31c [ide_core]

Larry Finger Larry.Finger at lwfinger.net
Thu Aug 21 13:34:59 EDT 2008


Martin Michlmayr wrote:
> * Larry Finger <Larry.Finger at lwfinger.net> [2008-08-20 14:34]:
>> Please do the following, which will require the package containing  
>> objdump. First of all, do the command
>>
>> objdump -d -l drivers/ide/ide-core.o > ide_core.dump
>>
>> Next, open ide_core.dump with less or your favorite editor and search for 
>> the start of init_irq. Note that address. Add your offset of 0x18D to that 
>> value and find the instruction at that address. Move up in the file until 
>> you find a line that looks like
>> /home/finger/linux-2.6/drivers/ide/ide-probe.c:1054
> 
> Hey Larry,
> 
> The dump file doesn't contain any line numbers.  See the attached
> file.

I think the error is in hwif_to_node with dev set to NULL in the 
dereference of dev->bus. This inline routine is called from the 
following code fragment from ide-probe.c:

         if (match) {
                 hwgroup = match->hwgroup;
                 hwif->hwgroup = hwgroup;
                 /*
                  * Link us into the hwgroup.
                  * This must be done early, do ensure that 
unexpected_intr
                  * can find the hwif and prevent irq storms.
                  * No drives are attached to the new hwif, choose_drive
                  * can't do anything stupid (yet).
                  * Add ourself as the 2nd entry to the hwgroup->hwif
                  * linked list, the first entry is the hwif that owns
                  * hwgroup->handler - do not change that.
                  */
                 spin_lock_irq(&ide_lock);
                 hwif->next = hwgroup->hwif->next;
                 hwgroup->hwif->next = hwif;
                 BUG_ON(hwif->next == hwif);
                 spin_unlock_irq(&ide_lock);
         } else {
                 hwgroup = kmalloc_node(sizeof(*hwgroup), 
GFP_KERNEL|__GFP_ZERO,
                                        hwif_to_node(hwif));

The line above triggers the fault.

I don't know enough about the code to figure the rest out, but I 
expect that the experts will.

Did this work with precious versions? If so, it should be posted as a 
regression.

Larry




More information about the linux-pcmcia mailing list