diff options
author | Etan Cohen <etancohen@google.com> | 2019-10-04 16:03:19 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-10-04 16:03:19 -0700 |
commit | 0c73c6c9016f0125c5a36ad9d6cf756a2f9dc133 (patch) | |
tree | f5e3c9302870db1e80eedba0addaaabb4d09fa74 | |
parent | 20888f4caab6995eb0a82ff697a408ca8dbcbc67 (diff) | |
parent | 718bf7a21502446f0b8ac133db4ad77ab60a9940 (diff) |
Merge "Add synchroniztaion to prevent concurrent modification exception" into qt-qpr1-dev
am: 718bf7a215
Change-Id: I7da15ad00095aaab8dde7d7e7377785061429446
-rw-r--r-- | service/java/com/android/server/wifi/HalDeviceManager.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/service/java/com/android/server/wifi/HalDeviceManager.java b/service/java/com/android/server/wifi/HalDeviceManager.java index d2ad47f48..e10234f68 100644 --- a/service/java/com/android/server/wifi/HalDeviceManager.java +++ b/service/java/com/android/server/wifi/HalDeviceManager.java @@ -1723,9 +1723,11 @@ public class HalDeviceManager { int requestedIfaceType, WifiIfaceInfo[][] currentIfaces, int numNecessaryInterfaces) { // rule 0: check for any low priority interfaces int numAvailableLowPriorityInterfaces = 0; - for (InterfaceCacheEntry entry : mInterfaceInfoCache.values()) { - if (entry.type == existingIfaceType && entry.isLowPriority) { - numAvailableLowPriorityInterfaces++; + synchronized (mLock) { + for (InterfaceCacheEntry entry : mInterfaceInfoCache.values()) { + if (entry.type == existingIfaceType && entry.isLowPriority) { + numAvailableLowPriorityInterfaces++; + } } } if (numAvailableLowPriorityInterfaces >= numNecessaryInterfaces) { @@ -1780,8 +1782,10 @@ public class HalDeviceManager { LongSparseArray<WifiIfaceInfo> orderedListLowPriority = new LongSparseArray<>(); LongSparseArray<WifiIfaceInfo> orderedList = new LongSparseArray<>(); for (WifiIfaceInfo info : interfaces) { - InterfaceCacheEntry cacheEntry = mInterfaceInfoCache.get( - Pair.create(info.name, getType(info.iface))); + InterfaceCacheEntry cacheEntry; + synchronized (mLock) { + cacheEntry = mInterfaceInfoCache.get(Pair.create(info.name, getType(info.iface))); + } if (cacheEntry == null) { Log.e(TAG, "selectInterfacesToDelete: can't find cache entry with name=" + info.name); |