mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-24 01:01:52 +02:00
[uboot-xbust] fixed the [src] overflow when
it calculate by block-num * blokc-size Signed-off-by: Xiangfu Liu <xiangfu@sharism.cc>
This commit is contained in:
parent
2f3b1982ce
commit
d0d0131a0e
@ -558,8 +558,8 @@ int mmc_block_read(u8 *dst, ulong src, ulong len)
|
|||||||
if (retval = mmc_unpack_r1(&request, &r1, 0))
|
if (retval = mmc_unpack_r1(&request, &r1, 0))
|
||||||
goto exit;
|
goto exit;
|
||||||
|
|
||||||
if (sd2_0)
|
if (!sd2_0)
|
||||||
src /= len;
|
src *= mmcinfo.block_len;
|
||||||
|
|
||||||
mmc_send_cmd(&request, MMC_CMD_READ_SINGLE_BLOCK, src, 1, len, RESPONSE_R1, dst);
|
mmc_send_cmd(&request, MMC_CMD_READ_SINGLE_BLOCK, src, 1, len, RESPONSE_R1, dst);
|
||||||
if (retval = mmc_unpack_r1(&request, &r1, 0))
|
if (retval = mmc_unpack_r1(&request, &r1, 0))
|
||||||
@ -571,24 +571,23 @@ exit:
|
|||||||
|
|
||||||
ulong mmc_bread(int dev_num, ulong blkstart, ulong blkcnt, ulong *dst)
|
ulong mmc_bread(int dev_num, ulong blkstart, ulong blkcnt, ulong *dst)
|
||||||
{
|
{
|
||||||
if (!mmc_ready) {
|
if (!mmc_ready) {
|
||||||
printf("Please initial the MMC first\n");
|
printf("Please initial the MMC first\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
ulong src = blkstart * mmcinfo.block_len;
|
ulong dst_tmp = dst;
|
||||||
ulong dst_tmp = dst;
|
|
||||||
|
|
||||||
for (i = 0; i < blkcnt; i++) {
|
for (i = 0; i < blkcnt; i++) {
|
||||||
if ((mmc_block_read((uchar *)(dst_tmp), src, mmcinfo.block_len)) < 0)
|
if ((mmc_block_read((uchar *)(dst_tmp), blkstart, mmcinfo.block_len)) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
dst_tmp += mmcinfo.block_len;
|
dst_tmp += mmcinfo.block_len;
|
||||||
src += mmcinfo.block_len;
|
blkstart++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
int mmc_select_card(void)
|
int mmc_select_card(void)
|
||||||
@ -1165,7 +1164,7 @@ u32 mmc_tran_speed(u8 ts)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void mmc_send_cmd(struct mmc_request *request, int cmd, u32 arg,
|
void mmc_send_cmd(struct mmc_request *request, int cmd, u32 arg,
|
||||||
u16 nob, u16 block_len, enum mmc_rsp_t rtype, u8 *buffer)
|
u16 nob, u16 block_len, enum mmc_rsp_t rtype, u8 *buffer)
|
||||||
{
|
{
|
||||||
request->cmd = cmd;
|
request->cmd = cmd;
|
||||||
request->arg = arg;
|
request->arg = arg;
|
||||||
|
Loading…
Reference in New Issue
Block a user