diff options
author | Vadim Bendebury <vbendeb@chromium.org> | 2019-04-29 12:13:25 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-05-02 05:38:28 -0700 |
commit | 02f4e2d04df57464a9a3f7b72c3ad9aca2c372e6 (patch) | |
tree | 6b99b56fe35929607249b677526f6559ef1389b1 /common | |
parent | 6e97f4aab723afd67946c4fab2ecd59c1579deaf (diff) | |
download | chrome-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.c | 7 |
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); |