Re: oops in init_gendisk() (2.3.48)

From: Andre Hedrick (andre@suse.com)
Date: Mon Feb 28 2000 - 23:14:44 EST


On Tue, 29 Feb 2000, Richard Gooch wrote:

> > DRAT..............Richard, please check for NULL assignment possiblitiies
> > in the ATA/IDE sub-system
> > This is one of the "incestuous" natures that ATA/IDE has that Linus
> > referred to in the past.......... :-(
>
> Can you elaborate on this, please?

In general, the two hwif's of a given pci-device must know about each
other. This is because some hardware designs serialize, share, or some
other thing with the ISR.

Some of the IDE-PCI detection code verifies if the interface is enabled
or disabled in the BIOS. Thus you can have the case where the primary is
disabled in the BIOS but the secondary is set and used for the ATAPI
hardware.

> > > which works out (I think) to line 745 in ide-probe.c
> > > sprintf (name, "ide/host%d/bus%d/target%d/lun%d",
> > > hwif->channel ? hwif->mate->index : hwif->index,
> > > hwif->channel, unit, 0);
> > >
> > > probably hwif->mate == NULL.
> >
> > You NAIL that nasty!!!!!!
>
> So could you explain under what conditions (hwif->mate == NULL) ?

As above:

primary-hwif is disabled but secondary-hwif is enabled

(primary)hwif == NULL
(primary)hwif->mate != NULL
(secondary)hwif != NULL
(secondary)hwif->mate == NULL

The loop looks like:

(primary)hwif == (secondary)hwif->mate
(secondary)hwif == (primary)hwif->mate

(primary)hwif->mate == (secondary)hwif
(secondary)hwif->mate == (primary)hwif

Is this clear?

Andre Hedrick
The Linux ATA/IDE guy

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Feb 29 2000 - 21:00:21 EST