Acquire the global lock when the
dump method is called.
This should prevent a race condition
between stop() and dump().
stop() already acquires the global lock
when it calls validateAndCall().
Bug: 274641043
Test: adb shell dumpsys wifi # validates dump()
Change-Id: Ie2df0861308954cd2e399c9604d4ae0dcddf95fb
diff --git a/wifi/aidl/default/wifi.cpp b/wifi/aidl/default/wifi.cpp
index e30c38a..d6a85da 100644
--- a/wifi/aidl/default/wifi.cpp
+++ b/wifi/aidl/default/wifi.cpp
@@ -19,6 +19,7 @@
#include <android-base/logging.h>
#include "aidl_return_util.h"
+#include "aidl_sync_util.h"
#include "wifi_status_util.h"
namespace {
@@ -32,6 +33,7 @@
namespace wifi {
using aidl_return_util::validateAndCall;
using aidl_return_util::validateAndCallWithLock;
+using aidl_sync_util::acquireGlobalLock;
Wifi::Wifi(const std::shared_ptr<::android::wifi_system::InterfaceTool> iface_tool,
const std::shared_ptr<legacy_hal::WifiLegacyHalFactory> legacy_hal_factory,
@@ -78,6 +80,7 @@
}
binder_status_t Wifi::dump(int fd, const char** args, uint32_t numArgs) {
+ const auto lock = acquireGlobalLock();
LOG(INFO) << "-----------Debug was called----------------";
if (chips_.size() == 0) {
LOG(INFO) << "No chips to display.";