diff options
author | Aaron Durbin <adurbin@chromium.org> | 2014-01-13 11:39:04 -0600 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2014-05-15 05:05:21 +0200 |
commit | b013fff5a3c036864c8f545f5cf645e27100209c (patch) | |
tree | 684a75af8a69d3bdabeb3965c6c44d19b4627f19 | |
parent | 931e59074556988dfc4a2f32fe7fa7874a4e064e (diff) | |
download | coreboot-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.c | 5 |
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--; |