summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Durbin <adurbin@chromium.org>2014-01-13 11:39:04 -0600
committerKyösti Mälkki <kyosti.malkki@gmail.com>2014-05-15 05:05:21 +0200
commitb013fff5a3c036864c8f545f5cf645e27100209c (patch)
tree684a75af8a69d3bdabeb3965c6c44d19b4627f19
parent931e59074556988dfc4a2f32fe7fa7874a4e064e (diff)
downloadcoreboot-b013fff5a3c036864c8f545f5cf645e27100209c.tar.xz
baytrail: nvm: use proper types for checking erase
The current byte value was being converted to an int when checking against literal 0xff. As the type of the current pointer was char (signed) it was sign extending the value leading to 0xffffffff != 0xff. Fix this by using an unsigned type and using a constant type for expected erase value. BUG=chrome-os-partner:24916 BRANCH=baytrail TEST=Booted after chromeos-firmwareupdate. Noted that MRC cache doesn't think the erased region isn't erased. Change-Id: If95425fe26da050acb25f52bea060e288ad3633c Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/182154 Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: http://review.coreboot.org/5044 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
-rw-r--r--src/soc/intel/baytrail/nvm.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/soc/intel/baytrail/nvm.c b/src/soc/intel/baytrail/nvm.c
index dccc8014dc..843bc5aa8b 100644
--- a/src/soc/intel/baytrail/nvm.c
+++ b/src/soc/intel/baytrail/nvm.c
@@ -54,10 +54,11 @@ static inline uint32_t to_flash_offset(void *p)
int nvm_is_erased(const void *start, size_t size)
{
- const char *cur = start;
+ const uint8_t *cur = start;
+ const uint8_t erased_value = 0xff;
while (size > 0) {
- if (*cur != 0xff)
+ if (*cur != erased_value)
return 0;
cur++;
size--;