Просмотр исходного кода

ble_mesh: Check buf->ref before unref the buffer

lly 6 лет назад
Родитель
Сommit
c5b2f693b8
1 измененных файлов с 4 добавлено и 1 удалено
  1. 4 1
      components/bt/esp_ble_mesh/mesh_core/adv.c

+ 4 - 1
components/bt/esp_ble_mesh/mesh_core/adv.c

@@ -329,8 +329,8 @@ void bt_mesh_unref_buf_from_pool(struct net_buf_pool *pool)
         struct net_buf *buf = &pool->__bufs[i];
         if (buf->ref > 1U) {
             buf->ref = 1U;
-            net_buf_unref(buf);
         }
+        net_buf_unref(buf);
     }
 }
 
@@ -372,6 +372,9 @@ static void bt_mesh_unref_buf(bt_mesh_msg_t *msg)
     if (msg->arg) {
         buf = (struct net_buf *)msg->arg;
         BLE_MESH_ADV(buf)->busy = 0U;
+        if (buf->ref > 1U) {
+            buf->ref = 1U;
+        }
         net_buf_unref(buf);
     }