summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorVadim Bendebury <vbendeb@chromium.org>2019-04-29 12:13:25 -0700
committerchrome-bot <chrome-bot@chromium.org>2019-05-02 05:38:28 -0700
commit02f4e2d04df57464a9a3f7b72c3ad9aca2c372e6 (patch)
tree6b99b56fe35929607249b677526f6559ef1389b1 /common
parent6e97f4aab723afd67946c4fab2ecd59c1579deaf (diff)
downloadchrome-ec-02f4e2d04df57464a9a3f7b72c3ad9aca2c372e6.tar.gz
pinweaver: fix memory leak introduced when moving to new nevmem
Not all code paths were covered which results in leaking memory allocated for temporary storage of pinweaver variables. With this patch there memory is returned to the heap in all cases. BRANCH=cr50, cr50-mp BUG=b:69907320 TEST=multiple successive reboots of the Chromebook do not cause Cr50 resets due to memory allocation failures any more. Change-Id: I432bf44e25ce2a99df9ad580b350984f4b133b2c Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1588876 Reviewed-by: Andrey Pronin <apronin@chromium.org> Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/pinweaver.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/common/pinweaver.c b/common/pinweaver.c
index d65e1bad0c..9a2c0132af 100644
--- a/common/pinweaver.c
+++ b/common/pinweaver.c
@@ -713,10 +713,9 @@ static int load_merkle_tree(struct merkle_tree_t *merkle_tree)
tree->key_derivation_nonce,
sizeof(tree->key_derivation_nonce));
ret = derive_keys(merkle_tree);
- if (ret != EC_SUCCESS) {
- freevar(ptr);
+ freevar(ptr);
+ if (ret != EC_SUCCESS)
return ret;
- }
}
/* Handle the root hash. */
@@ -761,9 +760,9 @@ static int load_merkle_tree(struct merkle_tree_t *merkle_tree)
}
}
pw_restart_count = log->restart_count;
+ freevar(ptr);
}
- freevar(ptr);
cprints(CC_TASK, "PinWeaver: Loaded Tree. restart_count = %d",
pw_restart_count);