• Stefan Richter's avatar
    firewire: fw-core: react on bus resets while the config ROM is being fetched · f8d2dc39
    Stefan Richter authored
    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: default avatarStefan 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: default avatarJarod Wilson <jwilson@redhat.com>
    f8d2dc39
fw-device.c 21.9 KB