From 91402f4d77f7fc74971697c8820506c6f70d8f9f Mon Sep 17 00:00:00 2001 From: Paul Thompson Date: Tue, 18 Jun 2019 14:53:02 -0700 Subject: [PATCH] Make the sys_arch_protect() mutex be recursive. Fixes #9744 Appears to be a lwIP porting bug. Comments in our porting layer say: This function should support recursive calls from the same task or interrupt. In other words, sys_arch_protect() could be called while already protected. --- features/lwipstack/lwip-sys/arch/lwip_sys_arch.c | 1 + 1 file changed, 1 insertion(+) diff --git a/features/lwipstack/lwip-sys/arch/lwip_sys_arch.c b/features/lwipstack/lwip-sys/arch/lwip_sys_arch.c index 552f622a68..183400eace 100644 --- a/features/lwipstack/lwip-sys/arch/lwip_sys_arch.c +++ b/features/lwipstack/lwip-sys/arch/lwip_sys_arch.c @@ -432,6 +432,7 @@ void sys_init(void) { lwip_sys_mutex_attr.name = "lwip_sys_mutex"; lwip_sys_mutex_attr.cb_mem = &lwip_sys_mutex_data; lwip_sys_mutex_attr.cb_size = sizeof(lwip_sys_mutex_data); + lwip_sys_mutex_attr.attr_bits = osMutexPrioInherit | osMutexRecursive; lwip_sys_mutex = osMutexNew(&lwip_sys_mutex_attr); if (lwip_sys_mutex == NULL) MBED_ERROR(MBED_MAKE_ERROR(MBED_MODULE_NETWORK_STACK, MBED_ERROR_CODE_INITIALIZATION_FAILED), "sys_init error, mutex initialization failed\n");