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:
parent
65f7800c7d
commit
1225f03eaa
|
|
@ -215,7 +215,7 @@ static int init_resource_list(struct resource_img_hdr *hdr)
|
||||||
|
|
||||||
hdr = (void *)andr_hdr;
|
hdr = (void *)andr_hdr;
|
||||||
ret = blk_dread(dev_desc, offset, 1, hdr);
|
ret = blk_dread(dev_desc, offset, 1, hdr);
|
||||||
if (ret < 0)
|
if (ret != 1)
|
||||||
goto out;
|
goto out;
|
||||||
ret = resource_image_check_header(hdr);
|
ret = resource_image_check_header(hdr);
|
||||||
if (ret < 0)
|
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,
|
ret = blk_dread(dev_desc, offset + hdr->c_offset,
|
||||||
hdr->e_blks * hdr->e_nums, content);
|
hdr->e_blks * hdr->e_nums, content);
|
||||||
if (ret < 0)
|
if (ret != (hdr->e_blks * hdr->e_nums))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
init_list:
|
init_list:
|
||||||
|
|
@ -300,7 +300,9 @@ int rockchip_read_resource_file(void *buf, const char *name,
|
||||||
dev_desc = rockchip_get_bootdev();
|
dev_desc = rockchip_get_bootdev();
|
||||||
ret = blk_dread(dev_desc, file->rsce_base + file->f_offset + offset,
|
ret = blk_dread(dev_desc, file->rsce_base + file->f_offset + offset,
|
||||||
blks, buf);
|
blks, buf);
|
||||||
if (!ret)
|
if (ret != blks)
|
||||||
|
ret = -EIO;
|
||||||
|
else
|
||||||
ret = len;
|
ret = len;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
||||||
|
|
@ -97,8 +97,11 @@ static int read_rockchip_image(struct blk_desc *dev_desc,
|
||||||
|
|
||||||
/* read first block with header imformation */
|
/* read first block with header imformation */
|
||||||
ret = blk_dread(dev_desc, part_info->start, 1, img);
|
ret = blk_dread(dev_desc, part_info->start, 1, img);
|
||||||
if (ret < 0)
|
if (ret != 1) {
|
||||||
|
ret = -EIO;
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
if (img->tag != TAG_KERNEL) {
|
if (img->tag != TAG_KERNEL) {
|
||||||
printf("%s: invalid image tag(0x%x)\n", part_info->name, img->tag);
|
printf("%s: invalid image tag(0x%x)\n", part_info->name, img->tag);
|
||||||
ret = -EINVAL;
|
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);
|
cnt = DIV_ROUND_UP(img->size + 8 + 4, RK_BLK_SIZE);
|
||||||
ret = blk_dread(dev_desc, part_info->start + 1, cnt - 1,
|
ret = blk_dread(dev_desc, part_info->start + 1, cnt - 1,
|
||||||
dst + RK_BLK_SIZE - header_len);
|
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;
|
ret = img->size;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ROCKCHIP_CRC
|
#ifdef CONFIG_ROCKCHIP_CRC
|
||||||
printf("%s image CRC32 verify... ", part_info->name);
|
printf("%s image CRC32 verify... ", part_info->name);
|
||||||
|
|
@ -192,8 +200,10 @@ int rockchip_get_boot_mode(void)
|
||||||
ret = blk_dread(dev_desc,
|
ret = blk_dread(dev_desc,
|
||||||
part_info.start + BOOTLOADER_MESSAGE_BLK_OFFSET,
|
part_info.start + BOOTLOADER_MESSAGE_BLK_OFFSET,
|
||||||
size >> 9, bmsg);
|
size >> 9, bmsg);
|
||||||
if (ret < 0)
|
if (ret != (size >> 9)) {
|
||||||
|
ret = -EIO;
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
if (!strcmp(bmsg->command, "boot-recovery")) {
|
if (!strcmp(bmsg->command, "boot-recovery")) {
|
||||||
printf("boot mode: recovery\n");
|
printf("boot mode: recovery\n");
|
||||||
|
|
|
||||||
|
|
@ -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,
|
ret = blk_dread(dev_desc, RK_PARAM_OFFSET, MAX_PARAM_SIZE >> 9,
|
||||||
(ulong *)param);
|
(ulong *)param);
|
||||||
if (ret < 0) {
|
if (ret != (MAX_PARAM_SIZE >> 9)) {
|
||||||
printf("%s param read fail\n", __func__);
|
printf("%s param read fail\n", __func__);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue