On Saturday 19 January 2008, Alan Cox wrote: > On Sat, 19 Jan 2008 19:54:03 +0300 > Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx> wrote: > > > Hello. > > > > Alan Cox wrote: > > > > > Signed-off-by: Alan Cox <alan@xxxxxxxxxx> > > > > > diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.24-rc8-mm1/drivers/ide/pci/pdc202xx_old.c linux-2.6.24-rc8-mm1/drivers/ide/pci/pdc202xx_old.c > > > --- linux.vanilla-2.6.24-rc8-mm1/drivers/ide/pci/pdc202xx_old.c 2008-01-19 14:47:56.000000000 +0000 > > > +++ linux-2.6.24-rc8-mm1/drivers/ide/pci/pdc202xx_old.c 2008-01-19 15:00:08.000000000 +0000 > > > @@ -138,7 +138,7 @@ > > > static u8 __devinit pdc2026x_old_cable_detect(ide_hwif_t *hwif) > > > { > > > struct pci_dev *dev = to_pci_dev(hwif->dev); > > > - u16 CIS = 0, mask = (hwif->channel) ? (1<<11) : (1<<10); > > > + u16 CIS, mask = (hwif->channel) ? (1<<11) : (1<<10); > > > > > > pci_read_config_word(dev, 0x50, &CIS); > > > > Since we ignore the result of this function, if it fails CIS may be left > > uninitialized if the function fails. So, the initializer is not as useless as pci_[bus]_read_config_*() functions always assign some value according to drivers/pci/access.c (except for unaligned access to word/dword register). > > it seems (and there's a lot more of such cases in drivers/ide/pci/ :-).. A lot of "patch" opportunities! > If pci_read_config_word fails you are in very deep doodoo anyway. I don't > think anyone checks it because there isn't an answer to "now what" Yep, moreover we cannot just assume that "0" is a safe default value because it doesn't have to be (i.e. in the above case cable bit set to "0" means 80-wires cable). Thanks, Bart - 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