Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46b6454d authored by Roshan Pius's avatar Roshan Pius
Browse files

wifi(implementation): Move out clearing on stop complete

Currently, we invoke WifiLegacyHal.invalidate() inside the
|on_stop_complete_internal_callback| std::function. |invalidate|
nulls out |on_stop_complete_internal_callback| inside it which might be
considered a violation since we're deleting the std::function object
as we're executing it.

Bug: 36095153
Test: Compiles, start/stop wifi multiple times.
Test: Verified that a crash is not seen in asan build.
Change-Id: If83c1cbee78a1b6eca12686fcc1ec1de67134f13
parent 3819e419
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -59,6 +59,8 @@ void onAsyncStopComplete(wifi_handle handle) {
  const auto lock = hidl_sync_util::acquireGlobalLock();
  if (on_stop_complete_internal_callback) {
    on_stop_complete_internal_callback(handle);
    // Invalidate this callback since we don't want this firing again.
    on_stop_complete_internal_callback = nullptr;
  }
}

@@ -1261,7 +1263,6 @@ WifiLegacyHal::getGscanCachedResults() {
void WifiLegacyHal::invalidate() {
  global_handle_ = nullptr;
  wlan_interface_handle_ = nullptr;
  on_stop_complete_internal_callback = nullptr;
  on_driver_memory_dump_internal_callback = nullptr;
  on_firmware_memory_dump_internal_callback = nullptr;
  on_gscan_event_internal_callback = nullptr;