linux/drivers/firewire
Stefan Richter f8d2dc3938 firewire: fw-core: react on bus resets while the config ROM is being fetched
read_rom() obtained a fresh new fw_device.generation for each read
transaction.  Hence it was able to continue reading in the middle of the
ROM even if a bus reset happened.  However the device may have modified
the ROM during the reset.  We would end up with a corrupt fetched ROM
image then.

Although all of this is quite unlikely, it is not impossible.
Therefore we now restart reading the ROM if the bus generation changed.

Note, the memory barrier in read_rom() is still necessary according to
tests by Jarod Wilson, despite of the ->generation access being moved up
in the call chain.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>

This is essentially what I've been beating on locally, and I've yet to hit
another config rom read failure with it.

Signed-off-by: Jarod Wilson <jwilson@redhat.com>
2008-01-30 22:22:28 +01:00
..
fw-card.c firewire: fix unloading of fw-ohci while devices are attached 2007-08-25 18:00:27 +02:00
fw-cdev.c firewire: enforce access order between generation and node ID, fix "giving up on config rom" 2008-01-30 22:22:27 +01:00
fw-device.c firewire: fw-core: react on bus resets while the config ROM is being fetched 2008-01-30 22:22:28 +01:00
fw-device.h firewire: enforce access order between generation and node ID, fix "giving up on config rom" 2008-01-30 22:22:27 +01:00
fw-iso.c firewire: Clean up comment style. 2007-05-10 18:24:13 +02:00
fw-ohci.c firewire: fw-ohci: Dynamically allocate buffers for DMA descriptors 2008-01-30 22:22:24 +01:00
fw-ohci.h firewire: fw-ohci: check for misconfigured bus (phyID == 63) 2007-10-17 00:00:08 +02:00
fw-sbp2.c firewire: enforce access order between generation and node ID, fix "giving up on config rom" 2008-01-30 22:22:27 +01:00
fw-topology.c firewire: enforce access order between generation and node ID, fix "giving up on config rom" 2008-01-30 22:22:27 +01:00
fw-topology.h firewire: a header cleanup 2007-10-17 00:00:09 +02:00
fw-transaction.c firewire: Fix extraction of source node id 2008-01-30 22:22:24 +01:00
fw-transaction.h firewire: fw-sbp2: set correct maximum payload (fixes CardBus adapters) 2007-08-02 20:34:16 +02:00
Kconfig firewire: point to migration document 2007-10-07 13:48:41 +02:00
Makefile firewire: prefix modules with firewire- instead of fw- 2007-05-27 23:21:01 +02:00