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

Commit a6018921 authored by Malcolm Chen's avatar Malcolm Chen Committed by Xiangyu/Malcolm Chen
Browse files

Apply mSubInfoListLock lock whenever touching mCacheActiveSubInfoList

Bug: 160440506
Test: sanity
Change-Id: I8e21b98e40862cbcdceb9943c0296feefea7df9b
parent c0f917cd
Loading
Loading
Loading
Loading
+19 −13
Original line number Diff line number Diff line
@@ -739,12 +739,14 @@ public class SubscriptionController extends ISub.Stub {
     * @hide
     */
    public SubscriptionInfo getSubscriptionInfo(int subId) {
        synchronized (mSubInfoListLock) {
            // check cache for active subscriptions first, before querying db
            for (SubscriptionInfo subInfo : mCacheActiveSubInfoList) {
                if (subInfo.getSubscriptionId() == subId) {
                    return subInfo;
                }
            }
        }
        // check cache for opportunistic subscriptions too, before querying db
        for (SubscriptionInfo subInfo : mCacheOpportunisticSubInfoList) {
            if (subInfo.getSubscriptionId() == subId) {
@@ -1530,6 +1532,7 @@ public class SubscriptionController extends ISub.Stub {
        // validate the given info - does it exist in the active subscription list
        int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
        int slotIndex = SubscriptionManager.INVALID_SIM_SLOT_INDEX;
        synchronized (mSubInfoListLock) {
            for (SubscriptionInfo info : mCacheActiveSubInfoList) {
                if ((info.getSubscriptionType() == subscriptionType)
                        && info.getIccId().equalsIgnoreCase(uniqueId)) {
@@ -1538,6 +1541,7 @@ public class SubscriptionController extends ISub.Stub {
                    break;
                }
            }
        }
        if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
            if (DBG) {
                logd("Invalid subscription details: subscriptionType = " + subscriptionType
@@ -4116,11 +4120,13 @@ public class SubscriptionController extends ISub.Stub {
    private boolean shouldDisableSubGroup(ParcelUuid groupUuid) {
        if (groupUuid == null) return false;

        synchronized (mSubInfoListLock) {
            for (SubscriptionInfo activeInfo : mCacheActiveSubInfoList) {
                if (!activeInfo.isOpportunistic() && groupUuid.equals(activeInfo.getGroupUuid())) {
                    return false;
                }
            }
        }

        return true;
    }