DragonFlyBSD Kernel Audit
DF-2070 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/disk/nata/chipsets/ata-serverworks.c b/sys/dev/disk/nata/chipsets/ata-serverworks.c
--- a/sys/dev/disk/nata/chipsets/ata-serverworks.c
+++ b/sys/dev/disk/nata/chipsets/ata-serverworks.c
@@ -176,13 +176,13 @@
 	request->u.ata.count = ATA_IDX_INW(ch, ATA_COUNT);
 	temp = ATA_IDX_INW(ch, ATA_SECTOR);
 	request->u.ata.lba = (u_int64_t)(temp & 0x00ff) |
-			     ((u_int64_t)(temp & 0xff00) << 24);
+			     ((u_int64_t)(temp & 0xff00) << 16);
 	temp = ATA_IDX_INW(ch, ATA_CYL_LSB);
 	request->u.ata.lba |= ((u_int64_t)(temp & 0x00ff) << 8) |
-			      ((u_int64_t)(temp & 0xff00) << 32);
+			      ((u_int64_t)(temp & 0xff00) << 24);
 	temp = ATA_IDX_INW(ch, ATA_CYL_MSB);
 	request->u.ata.lba |= ((u_int64_t)(temp & 0x00ff) << 16) |
-			      ((u_int64_t)(temp & 0xff00) << 40);
+			      ((u_int64_t)(temp & 0xff00) << 32);
     }
     else {
 	request->u.ata.count = ATA_IDX_INW(ch, ATA_COUNT) & 0x00ff;