summaryrefslogtreecommitdiff
path: root/lib/chromeos
diff options
context:
space:
mode:
authorChe-Liang Chiou <clchiou@chromium.org>2011-06-16 11:48:53 -0700
committerSimon Glass <sjg@chromium.org>2011-08-29 10:39:29 -0700
commitfcb9de923b48decb424be5bf0d34a2542aa5f494 (patch)
tree38fa12a6826152d2fc8220f81fd17e995d4013f8 /lib/chromeos
parent9bb5586dad87d68082e703e767cca987afac78bd (diff)
CHROMIUM: strictly check return value of block_{read,write}
The block device read/write functions return how many blocks are read or written. Instead of checking whether the return value is negative, we should check whether the requested number of blocks are actually read or written. BUG=chromium-os:16508 TEST=manual make ARCH=arm \ CROSS_COMPILE=armv7a-cros-linux-gnueabi- \ USE_PRIVATE_LIBGCC=yes \ VBOOT=/build/tegra2_seaboard/usr \ chromeos_seaboard_onestop_config make ARCH=arm \ CROSS_COMPILE=armv7a-cros-linux-gnueabi- \ USE_PRIVATE_LIBGCC=yes \ VBOOT=/build/tegra2_seaboard/usr \ all Change-Id: Ie6faada844a7b92e8f2a477b5e64b99d5cbf40fa Reviewed-on: http://gerrit.chromium.org/gerrit/2783 Tested-by: Che-Liang Chiou <clchiou@chromium.org> Reviewed-by: Tom Wai-Hong Tam <waihong@chromium.org>
Diffstat (limited to 'lib/chromeos')
-rw-r--r--lib/chromeos/os_storage.c8
-rw-r--r--lib/chromeos/vboot_nvstorage_helper.c13
2 files changed, 10 insertions, 11 deletions
diff --git a/lib/chromeos/os_storage.c b/lib/chromeos/os_storage.c
index c06eb45e061..1bbd1cf8ac8 100644
--- a/lib/chromeos/os_storage.c
+++ b/lib/chromeos/os_storage.c
@@ -155,9 +155,9 @@ int BootDeviceReadLBA(uint64_t lba_start, uint64_t lba_count, void *buffer)
if (lba_start + lba_count > bootdev_config.limit)
return 1; /* read out of range */
- if (dev_desc->block_read(dev_desc->dev,
+ if (lba_count != dev_desc->block_read(dev_desc->dev,
bootdev_config.offset + lba_start, lba_count,
- buffer) < 0)
+ buffer))
return 1; /* error reading blocks */
return 0;
@@ -174,9 +174,9 @@ int BootDeviceWriteLBA(uint64_t lba_start, uint64_t lba_count,
if (lba_start + lba_count > bootdev_config.limit)
return 1; /* read out of range */
- if (dev_desc->block_write(dev_desc->dev,
+ if (lba_count != dev_desc->block_write(dev_desc->dev,
bootdev_config.offset + lba_start, lba_count,
- buffer) < 0)
+ buffer))
return 1; /* error reading blocks */
return 0;
diff --git a/lib/chromeos/vboot_nvstorage_helper.c b/lib/chromeos/vboot_nvstorage_helper.c
index c18810eb5dc..4981221c954 100644
--- a/lib/chromeos/vboot_nvstorage_helper.c
+++ b/lib/chromeos/vboot_nvstorage_helper.c
@@ -46,7 +46,7 @@ static int load_nvcxt(block_dev_desc_t **dev_desc_ptr, uint8_t **buf_ptr)
return -1;
}
- if (dev_desc->block_read(dev_desc->dev, NVCONTEXT_LBA, 1, buf) < 0) {
+ if (1 != dev_desc->block_read(dev_desc->dev, NVCONTEXT_LBA, 1, buf)) {
VBDEBUG(PREFIX "block_read fail\n");
free(buf);
return -1;
@@ -75,18 +75,17 @@ int write_nvcontext(VbNvContext *nvcxt)
{
block_dev_desc_t *dev_desc;
uint8_t *buf;
- int ret = 0;
+ int nblk;
if (load_nvcxt(&dev_desc, &buf))
return -1;
memcpy(buf, nvcxt->raw, VBNV_BLOCK_SIZE);
- ret = dev_desc->block_write(dev_desc->dev, NVCONTEXT_LBA, 1, buf);
- free(buf);
-
- if (ret < 0)
+ nblk = dev_desc->block_write(dev_desc->dev, NVCONTEXT_LBA, 1, buf);
+ if (1 != nblk)
VBDEBUG(PREFIX "block_write fail\n");
- return ret;
+ free(buf);
+ return 1 != nblk;
}