+Index: linux-2.6.25.1/drivers/ata/pata_rb153_cf.c
+===================================================================
+--- linux-2.6.25.1.orig/drivers/ata/pata_rb153_cf.c
++++ linux-2.6.25.1/drivers/ata/pata_rb153_cf.c
+@@ -68,20 +68,23 @@ static void rb153_pata_exec_command(stru
+ rb153_pata_finish_io(ap);
+ }
+
+-static void rb153_pata_data_xfer(struct ata_device *adev, unsigned char *buf,
++static unsigned int rb153_pata_data_xfer(struct ata_device *adev, unsigned char *buf,
+ unsigned int buflen, int write_data)
+ {
+ void __iomem *ioaddr = adev->link->ap->ioaddr.data_addr;
+-
++ unsigned int t;
++
++ t = buflen;
+ if (write_data) {
+- for (; buflen > 0; buflen--, buf++)
++ for (; t > 0; t--, buf++)
+ writeb(*buf, ioaddr);
+ } else {
+- for (; buflen > 0; buflen--, buf++)
++ for (; t > 0; t--, buf++)
+ *buf = readb(ioaddr);
+ }
+
+ rb153_pata_finish_io(adev->link->ap);
++ return buflen;
+ }
+
+ static void rb153_pata_freeze(struct ata_port *ap)