Messages in this thread | | | From | Jesse Barnes <> | Subject | pci_map_rom bug? | Date | Wed, 16 Feb 2005 16:00:47 -0800 |
| |
Jon, it looks like the loop at the bottom of pci_map_rom is busted?
do { void __iomem *pds; /* Standard PCI ROMs start out with these bytes 55 AA */ if (readb(image) != 0x55) break; if (readb(image + 1) != 0xAA) break; /* get the PCI data structure and check its signature */ pds = image + readw(image + 24); if (readb(pds) != 'P') break; if (readb(pds + 1) != 'C') break; if (readb(pds + 2) != 'I') break; if (readb(pds + 3) != 'R') break; last_image = readb(pds + 21) & 0x80; /* this length is reliable */ image += readw(pds + 16) * 512; } while (!last_image);
It looks like it's trying to verify all the ROMs on a given PCI device rather than just the one we just ioremap'd above. Should this check just be inline and the loop deleted? In that case, all of the breaks would turn into return NULLs (though the code should probably be refactored to make that a little clearer) along with an iounmap?
Thanks, Jesse - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |