• Mikael Pettersson's avatar
    sata_promise: fix endianess bug in ASIC PRD bug workaround · 03116d67
    Mikael Pettersson authored
    The original workaround for the Promise ASIC PRD bug
    contained an endianess bug which I failed to detect:
    the adjustment of the last PRD entry's length field
    applied host arithmetic to little-endian data, which
    is incorrect on big-endian machines.
    
    We have the length available in host-endian format, so
    do the adjustment on host-endian data and then convert
    and store it in the PRD entry's little-endian data field.
    
    Thanks to an anonymous reviewer for detecting this bug.
    Signed-off-by: default avatarMikael Pettersson <mikpe@it.uu.se>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    03116d67
sata_promise.c 29.8 KB