diff options
author | Vinit Deshpande <vinitd@google.com> | 2015-07-23 11:46:52 -0700 |
---|---|---|
committer | The Android Automerger <android-build@google.com> | 2015-10-27 10:38:41 -0700 |
commit | c6249cce8c5025daf6f2a20fe36b7e517d5943ba (patch) | |
tree | 95b24822d1d92a44eba0a4096c130712738a55af | |
parent | 5921779b4827551735e9016c6b6a22adf176ec85 (diff) | |
download | wifi-lollipop-mr1-release.tar.gz |
Fix a race in WifiNative objectsandroid-cts-5.1_r9android-cts-5.1_r8android-cts-5.1_r7android-cts-5.1_r6android-cts-5.1_r28android-cts-5.1_r27android-cts-5.1_r26android-cts-5.1_r25android-cts-5.1_r24android-cts-5.1_r23android-cts-5.1_r22android-cts-5.1_r21android-cts-5.1_r20android-cts-5.1_r19android-cts-5.1_r18android-cts-5.1_r17android-cts-5.1_r16android-cts-5.1_r15android-cts-5.1_r14android-cts-5.1_r13android-cts-5.1_r10android-5.1.1_r38android-5.1.1_r37android-5.1.1_r36android-5.1.1_r35android-5.1.1_r34android-5.1.1_r33android-5.1.1_r30lollipop-mr1-releaselollipop-mr1-cts-release
disconnectFromSupplicant doesn't have any synchronization;
so it can cause problems when WifiStateMachine is disconnecting
and P2p statemachine is sending commands.
Bug: 22667667
Change-Id: I92e6ee44618813341e171f84442791a6403a5010
(cherry picked from commit b577f391af2c484e443c19b3df1d62cc0924692a)
-rw-r--r-- | service/java/com/android/server/wifi/WifiNative.java | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/service/java/com/android/server/wifi/WifiNative.java b/service/java/com/android/server/wifi/WifiNative.java index 864976c66..b95db2892 100644 --- a/service/java/com/android/server/wifi/WifiNative.java +++ b/service/java/com/android/server/wifi/WifiNative.java @@ -141,14 +141,17 @@ public class WifiNative { } public boolean connectToSupplicant() { - // No synchronization necessary .. it is implemented in WifiMonitor - localLog(mInterfacePrefix + "connectToSupplicant"); - return connectToSupplicantNative(); + synchronized(mLock) { + localLog(mInterfacePrefix + "connectToSupplicant"); + return connectToSupplicantNative(); + } } public void closeSupplicantConnection() { - localLog(mInterfacePrefix + "closeSupplicantConnection"); - closeSupplicantConnectionNative(); + synchronized(mLock) { + localLog(mInterfacePrefix + "closeSupplicantConnection"); + closeSupplicantConnectionNative(); + } } public String waitForEvent() { |