diff options
author | Tom Hughes <tomhughes@chromium.org> | 2020-05-15 09:54:16 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-05-29 22:18:46 +0000 |
commit | 083d64cdac4b99cc59052dcb6e4dc278988a5c6c (patch) | |
tree | 1d96347fb6be96b2fc462800945c97ef09142f2f /common/rollback.c | |
parent | 87063754d48a046ad9a96149996fb3cf1e02f71c (diff) | |
download | chrome-ec-083d64cdac4b99cc59052dcb6e4dc278988a5c6c.tar.gz |
rollback: rollback region must be unlocked in order to erase it
BRANCH=none
BUG=b:151105339, b:155229277
TEST=Compile and flash "rollback" test on dragonclaw with region 0
On console: "runtest"
=> Reboots with "Data access violation, mfar = 8020000"
=> PASS
TEST=Compile and flash "rollback" test on dragonclaw with region 1
On console: "runtest"
=> Reboots with "Data access violation, mfar = 8040000"
=> PASS
TEST=Compile and flash "rollback" test on dragontalon with region 0
On console: "runtest"
=> Reboots with "Data access violation, mfar = 80c0000"
=> PASS
TEST=Compile and flash "rollback" test on dragontalon with region 1
On console: "runtest"
=> Reboots with "Data access violation, mfar = 80e0000"
=> PASS
Signed-off-by: Tom Hughes <tomhughes@chromium.org>
Change-Id: I1cf42fec99fa08932c2accc4604e829aaefe076f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2207998
Tested-by: Yicheng Li <yichengli@chromium.org>
Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'common/rollback.c')
-rw-r--r-- | common/rollback.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/common/rollback.c b/common/rollback.c index b448f0514f..d4f206b2b6 100644 --- a/common/rollback.c +++ b/common/rollback.c @@ -324,12 +324,13 @@ static int rollback_update(int32_t next_min_version, goto out; } + unlock_rollback(); if (flash_erase(offset, erase_size)) { ret = EC_ERROR_UNKNOWN; + lock_rollback(); goto out; } - unlock_rollback(); ret = flash_write(offset, sizeof(block), block); lock_rollback(); |