ohci_set_hw_config_rom() does not follow the mandatory procedure described in
OHCI 1.1 clause 5.5.6. This may expose invalid configuration ROM data to
external FireWire peers.
How to solve this:
- Copy new ROM data into a separate DMA area and point ConfigROMmap to it.
- Keep track of existence of old and new DMA area. Do not run
ohci_set_hw_config_rom() if there are already both new + old DMA areas.
- In a bus reset interrupt event, free the old DMA area if there is one.
> Do not run ohci_set_hw_config_rom() if there are already both
> new + old DMA areas.
Correction: If there are already both new + old DMA areas, IOW if
ohci_set_hw_config_rom() is re-entered before the bus reset was performed, point
ConfigROMmap to the newest DMA area and free the not-anymore-so-new DMA area.
This bug is a candidate for WILL_NOT_FIX, since the alternative drivers from
I will update the status of this bug once we got a better impression on how Kristian's drivers fare in practice. (They are now available to the broader public through Linus' 2.6.22-rc1 and later and already have replaced the old ieee1394 drivers in Fedora 7's kernel.)
There are currently no resources to fix this in drivers/ieee1394/.
drivers/firewire/ does not feature this problem.