aboutsummaryrefslogtreecommitdiff
path: root/drivers/firewire/fw-transaction.c
diff options
context:
space:
mode:
authorStefan Richter <stefanr@s5r6.in-berlin.de>2008-01-25 17:53:49 +0100
committerStefan Richter <stefanr@s5r6.in-berlin.de>2008-01-30 22:22:28 +0100
commitf8d2dc39389d6ccc0def290dc4b7eb71d68645a2 (patch)
tree7576ee70223a9ad550b8dd7dbad339d9f6b03052 /drivers/firewire/fw-transaction.c
parentb5d2a5e04e6a26cb3f77af8cbc31e74c361d706c (diff)
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>
Diffstat (limited to 'drivers/firewire/fw-transaction.c')
0 files changed, 0 insertions, 0 deletions