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