summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBalaji Selvanathan <[email protected]>2025-12-22 14:31:05 +0530
committerTom Rini <[email protected]>2025-12-22 16:19:39 -0600
commitc0add0039825fbd40620284c202f7c4569154605 (patch)
tree0a9ff4064af95e19d6066d8219870956cc65dfe8
parentf26db83ca964e81d7f2b3c2c984afdb8bb104678 (diff)
drivers: scsi: fix double decrement of block count in 64-bit LBA path
The scsi_read function incorrectly decrements the block count twice when handling large disks that trigger the CONFIG_SYS_64BIT_LBA code path (reads beyond block 268,435,455). The variable 'blks' was being decremented both inside the 64-bit LBA block and after the successful scsi_exec() call, causing incorrect block count tracking and data abort errors on large capacity disks. Signed-off-by: Balaji Selvanathan <[email protected]> Tested-by: Tony Dinh <[email protected]>
-rw-r--r--drivers/scsi/scsi.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index b414d022f3f..8fe6b38a8c7 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -220,7 +220,6 @@ static ulong scsi_read(struct udevice *dev, lbaint_t blknr, lbaint_t blkcnt,
pccb->datalen = block_dev->blksz * blocks;
scsi_setup_read16(pccb, start, blocks);
start += blocks;
- blks -= blocks;
} else
#endif
if (blks > max_blks) {