Per definition, this function should return the number of bytes consumed. Also take care of the unlikely case when buflen is not a multiple of four; while transferring, the division cuts the remaining bytes, so alter the return value accordingly. Signed-off-by: Phil Sutter --- --- a/drivers/ata/pata_rb532_cf.c +++ b/drivers/ata/pata_rb532_cf.c @@ -88,7 +88,7 @@ static unsigned int rb532_pata_data_xfer readsl(ioaddr, buf, buflen / sizeof(u32)); rb532_pata_finish_io(adev->link->ap); - return retlen; + return buflen - (buflen % sizeof(u32));; } static void rb532_pata_freeze(struct ata_port *ap)