On Mon, 11 Feb 2008, Andi Kleen wrote: > > Without this patch a Opteron test system here oopses at boot with currentg git. > > Calling to_pci_dev() on a NULL pointer gives a negative value so the following NULL > pointer check never triggers and then an illegal address is referenced. Check the > unadjusted original device pointer for NULL instead. > > Signed-off-by: Andi Kleen <ak@xxxxxxx> > > Index: linux/include/linux/ide.h > =================================================================== > --- linux.orig/include/linux/ide.h > +++ linux/include/linux/ide.h > @@ -1294,7 +1294,7 @@ static inline void ide_dump_identify(u8 > static inline int hwif_to_node(ide_hwif_t *hwif) > { > struct pci_dev *dev = to_pci_dev(hwif->dev); > - return dev ? pcibus_to_node(dev->bus) : -1; > + return hwif->dev ? pcibus_to_node(dev->bus) : -1; > } Ok, I applied this, but it causes a *lot* of noise about "unused variable 'dev'" because pcibus_to_node() is defined to be -1 when you don't do any strange NUMA thing (so that "dev->bus" usage thing is never even seen by the compiler. So we should probably make pcibus_to_node() be an inline function for that case, or just make that thing be return hwif->dev ? pcibus_to_node(to_pci_dev(hwif->dev)->bus) : -1; or something. Because now things are really noisy. Preferences, anybody? Bartlomiej? Linus - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html