On Mon, Dec 22, 2025 at 1:01 AM Balaji Selvanathan <[email protected]> wrote: > > 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]> All the best, Tony > --- > v2: > - No changes from v1; just a resend > - Link to v1: > https://lore.kernel.org/u-boot/[email protected]/ > --- > drivers/scsi/scsi.c | 1 - > 1 file changed, 1 deletion(-) > > 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) { > -- > 2.34.1 >

