Skip to contentSkip to conversation

2.4.23 IDE hang on boot with two single-channel controllers

DISCUSSION Jeremy Jackson 1 participant 1 message Jan 26, 2004

lore
Share & tools
lore
#0 lore raw

Hi All,

kdb shows proc_ide_create() stuck in a loop when booting on a Compaq Armada 7730MT while attached to the docking station.

This is a unique IDE hardware setup. Channel ide0's controller is in the laptop, while ide1 is a separate controller (pci device) in the docking station and is not always present.

This seems to be triggering a bug in ide-proc.c:

void proc_ide_create(void)
{

#ifdef CONFIG_BLK_DEV_IDEPCI
        ide_pci_host_proc_t *p = ide_pci_host_proc_list;

#endif /* CONFIG_BLK_DEV_IDEPCI */

        proc_ide_root = proc_mkdir("ide", 0);
        if (!proc_ide_root) return;

        create_proc_ide_interfaces();

        create_proc_read_entry("drivers", 0, proc_ide_root,
                                proc_ide_read_drivers, NULL);
#ifdef CONFIG_BLK_DEV_IDEPCI
        while (p != NULL)  <------------------- INFINITE LOOP HERE
        {
                if (p->name != NULL && p->set == 1 && p->get_info != NULL)
                {
                        p->parent = proc_ide_root;
                        create_proc_info_entry(p->name, 0, p->parent, 
p->get_info);
                        p->set = 2;
                }
                p = p->next;
        }

#endif /* CONFIG_BLK_DEV_IDEPCI */
}

I'm not sure if the problem is in the loop or bad data being setup before it starts.

Assistance fixing it would be appreciated.

Regards,

Jeremy Jackson