From 0345b661c6de52013788972b817320ad30b279ba Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Thu, 2 Feb 2017 14:04:21 -0500 Subject: Add locking around keystore operations. --- Makefile | 1 + projects/hsm/hsm.c | 11 +++++++++++ 2 files changed, 12 insertions(+) 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) -- cgit v1.2.3