aboutsummaryrefslogtreecommitdiff
path: root/core.c
diff options
context:
space:
mode:
authorPaul Selkirk <paul@psgd.org>2018-09-19 17:09:56 -0400
committerPaul Selkirk <paul@psgd.org>2018-09-19 17:09:56 -0400
commita4469079c753ff2c3146704f1e4eec3e3e1bb30b (patch)
tree99b35bb1a3b834aa42825c132703d49b9589dd1c /core.c
parent7219e78b554a7b7e792a344b0c6cf133affe88b2 (diff)
Make hal_core_alloc2 a little smarter.hal_core_alloc2-fix
Currently the only use of hal_core_alloc2 is to allocate two modexp cores. If the bitstream only has one, we'd allocate that one, then try to allocate it again, and spin forever. Added a check for that, and let rsa_crt fall back to trying with one modexp core if it can't find two.
Diffstat (limited to 'core.c')
-rw-r--r--core.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/core.c b/core.c
index e170210..0905541 100644
--- a/core.c
+++ b/core.c
@@ -254,6 +254,13 @@ hal_error_t hal_core_alloc2(const char *name1, hal_core_t **pcore1, hal_core_lru
{
const int clear = pcore1 != NULL && *pcore1 == NULL;
+ if (name1 == name2 || strcmp(name1, name2) == 0) {
+ hal_core_t *core1;
+ if (((core1 = hal_core_find(name1, NULL)) == NULL) ||
+ (hal_core_find(name1, core1) == NULL))
+ return HAL_ERROR_CORE_NOT_FOUND;
+ }
+
for (;;) {
hal_error_t err = hal_core_alloc_no_wait(name1, pcore1, pomace1);