rockchip: fix blk_dread return value check error

blk_dread returns negtive error code or blocks number
that read successfully.

Change-Id: I0f2afe98cfb64fe8e83a065fa64b91481856f5be
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
This commit is contained in:
Joseph Chen 2017-12-27 16:57:57 +08:00 committed by Kever Yang
parent 65f7800c7d
commit 1225f03eaa
3 changed files with 19 additions and 7 deletions

View File

@ -215,7 +215,7 @@ static int init_resource_list(struct resource_img_hdr *hdr)
hdr = (void *)andr_hdr;
ret = blk_dread(dev_desc, offset, 1, hdr);
if (ret < 0)
if (ret != 1)
goto out;
ret = resource_image_check_header(hdr);
if (ret < 0)
@ -228,7 +228,7 @@ static int init_resource_list(struct resource_img_hdr *hdr)
}
ret = blk_dread(dev_desc, offset + hdr->c_offset,
hdr->e_blks * hdr->e_nums, content);
if (ret < 0)
if (ret != (hdr->e_blks * hdr->e_nums))
goto err;
init_list:
@ -300,7 +300,9 @@ int rockchip_read_resource_file(void *buf, const char *name,
dev_desc = rockchip_get_bootdev();
ret = blk_dread(dev_desc, file->rsce_base + file->f_offset + offset,
blks, buf);
if (!ret)
if (ret != blks)
ret = -EIO;
else
ret = len;
return ret;

View File

@ -97,8 +97,11 @@ static int read_rockchip_image(struct blk_desc *dev_desc,
/* read first block with header imformation */
ret = blk_dread(dev_desc, part_info->start, 1, img);
if (ret < 0)
if (ret != 1) {
ret = -EIO;
goto err;
}
if (img->tag != TAG_KERNEL) {
printf("%s: invalid image tag(0x%x)\n", part_info->name, img->tag);
ret = -EINVAL;
@ -113,8 +116,13 @@ static int read_rockchip_image(struct blk_desc *dev_desc,
cnt = DIV_ROUND_UP(img->size + 8 + 4, RK_BLK_SIZE);
ret = blk_dread(dev_desc, part_info->start + 1, cnt - 1,
dst + RK_BLK_SIZE - header_len);
if (!ret)
if (ret != (cnt - 1)) {
printf("%s try to read %d blocks failed, only read %d blocks\n",
part_info->name, cnt - 1, ret);
ret = -EIO;
} else {
ret = img->size;
}
#ifdef CONFIG_ROCKCHIP_CRC
printf("%s image CRC32 verify... ", part_info->name);
@ -192,8 +200,10 @@ int rockchip_get_boot_mode(void)
ret = blk_dread(dev_desc,
part_info.start + BOOTLOADER_MESSAGE_BLK_OFFSET,
size >> 9, bmsg);
if (ret < 0)
if (ret != (size >> 9)) {
ret = -EIO;
goto err;
}
if (!strcmp(bmsg->command, "boot-recovery")) {
printf("boot mode: recovery\n");

View File

@ -94,7 +94,7 @@ static int rkparm_init_param(struct blk_desc *dev_desc,
ret = blk_dread(dev_desc, RK_PARAM_OFFSET, MAX_PARAM_SIZE >> 9,
(ulong *)param);
if (ret < 0) {
if (ret != (MAX_PARAM_SIZE >> 9)) {
printf("%s param read fail\n", __func__);
return -EINVAL;
}