From f95826144e25b8ce4ad0ffe0269b147c1bb6926a Mon Sep 17 00:00:00 2001 From: baohongde Date: Wed, 24 Apr 2019 11:34:06 +0800 Subject: [PATCH] components/bt: Fix abort if call esp_spp_deinit without calling esp_spp_init --- components/bt/bluedroid/btc/profile/std/spp/btc_spp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/components/bt/bluedroid/btc/profile/std/spp/btc_spp.c b/components/bt/bluedroid/btc/profile/std/spp/btc_spp.c index ad39ac757..bc2d62427 100644 --- a/components/bt/bluedroid/btc/profile/std/spp/btc_spp.c +++ b/components/bt/bluedroid/btc/profile/std/spp/btc_spp.c @@ -315,6 +315,7 @@ static void btc_spp_init(btc_spp_args_t *arg) { if (osi_mutex_new(&spp_local_param.spp_slot_mutex) != 0) { BTC_TRACE_ERROR("%s osi_mutex_new failed\n", __func__); + return; } spp_local_param.spp_mode = arg->init.mode; spp_local_param.spp_slot_id = 0; @@ -323,6 +324,10 @@ static void btc_spp_init(btc_spp_args_t *arg) static void btc_spp_uninit(void) { + if (!spp_local_param.spp_slot_mutex) { + BTC_TRACE_ERROR("%s SPP have not been init\n", __func__); + return; + } osi_mutex_lock(&spp_local_param.spp_slot_mutex, OSI_MUTEX_MAX_TIMEOUT); for (size_t i = 1; i <= BTA_JV_MAX_RFC_SR_SESSION; i++) { if (spp_local_param.spp_slots[i] != NULL && spp_local_param.spp_slots[i]->connected) {