aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2017-02-02 14:04:21 -0500
committerRob Austein <sra@hactrn.net>2017-02-02 14:04:21 -0500
commit0345b661c6de52013788972b817320ad30b279ba (patch)
treefcad10029c2c4ff11a36e8e11d50b0f2184cbb08
parentb6e02ef2971ebc1dbe67c7417376e3657c47aa13 (diff)
Add locking around keystore operations.
-rw-r--r--Makefile1
-rw-r--r--projects/hsm/hsm.c11
2 files changed, 12 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 12ae4ef..2944aa9 100644
--- a/Makefile
+++ b/Makefile
@@ -102,6 +102,7 @@ CFLAGS += -mcpu=cortex-m4 -mthumb -mlittle-endian -mthumb-interwork
CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16
CFLAGS += -DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DSTM32F429xx
CFLAGS += -D__CORTEX_M4 -DTARGET_STM -DTARGET_STM32F4 -DTARGET_STM32F429ZI -DTOOLCHAIN_GCC -D__FPU_PRESENT=1 -D$(BOARD)
+CFLAGS += -DENABLE_WEAK_FUNCTIONS
CFLAGS += -ffunction-sections -fdata-sections -Wl,--gc-sections
CFLAGS += -std=c99
CFLAGS += -I$(TOPLEVEL)
diff --git a/projects/hsm/hsm.c b/projects/hsm/hsm.c
index 971d460..c2f6e0e 100644
--- a/projects/hsm/hsm.c
+++ b/projects/hsm/hsm.c
@@ -103,6 +103,15 @@ osMutexId uart_mutex;
osMutexDef(uart_mutex);
#endif
+#if NUM_RPC_TASK > 1
+/* A mutex to arbitrate concurrent access to the keystore.
+ */
+osMutexId ks_mutex;
+osMutexDef(ks_mutex);
+void hal_ks_lock(void) { osMutexWait(ks_mutex, osWaitForever); }
+void hal_ks_unlock(void) { osMutexRelease(ks_mutex); }
+#endif
+
static uint8_t uart_rx[2]; /* current character received from UART */
/* Callback for HAL_UART_Receive_DMA().
@@ -261,6 +270,8 @@ int main()
#if NUM_RPC_TASK > 1
if ((uart_mutex = osMutexCreate(osMutex(uart_mutex))) == NULL)
Error_Handler();
+ if ((ks_mutex = osMutexCreate(osMutex(ks_mutex))) == NULL)
+ Error_Handler();
#endif
if (hal_rpc_server_init() != LIBHAL_OK)