]> git.ipfire.org Git - people/ms/u-boot.git/commit - drivers/mmc/mmc.c
Fix block device accesses beyond 2TiB
authorSascha Silbe <t-uboot@infra-silbe.de>
Fri, 14 Jun 2013 11:07:25 +0000 (13:07 +0200)
committerTom Rini <trini@ti.com>
Wed, 26 Jun 2013 14:26:06 +0000 (10:26 -0400)
commitff8fef566601ba27767e885386cb2074c4f09886
tree73a5ae4d090fdb0df6749d954daa2fdc0f937fd9
parenteeaef5e4305497537bd47308724de39c7d6cbf19
Fix block device accesses beyond 2TiB

With CONFIG_SYS_64BIT_LBA, lbaint_t gets defined as a 64-bit type,
which is required to represent block numbers for storage devices that
exceed 2TiB (the block size usually is 512B), e.g. recent hard drives.

For some obscure reason, the current U-Boot code uses lbaint_t for the
number of blocks to read (a rather optimistic estimation of how RAM
sizes will evolve), but not for the starting address. Trying to access
blocks beyond the 2TiB boundary will simply wrap around and read a
block within the 0..2TiB range.

We now use lbaint_t for block start addresses, too. This required
changes to all block drivers as the signature of block_read(),
block_write() and block_erase() in block_dev_desc_t changed.

Signed-off-by: Sascha Silbe <t-uboot@infra-silbe.de>
common/cmd_ide.c
common/usb_storage.c
drivers/mmc/mmc.c
include/ide.h
include/part.h