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

Commit 4b5abded authored by Oli Lan's avatar Oli Lan Committed by Automerger Merge Worker
Browse files

Merge "Fix potential deadlock in applyUserRestrictions methods." into udc-dev am: 644791aa

parents 29ef0911 644791aa
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -2592,7 +2592,7 @@ public class UserManagerService extends IUserManager.Stub {
            }
        }
        if (scheduleWriteUser) {
            scheduleWriteUser(userData);
            scheduleWriteUser(userId);
        }
    }

@@ -2902,7 +2902,7 @@ public class UserManagerService extends IUserManager.Stub {
                    != newBaseRestrictions);

            if (mBaseUserRestrictions.updateRestrictions(userId, newBaseRestrictions)) {
                scheduleWriteUser(getUserDataNoChecks(userId));
                scheduleWriteUser(userId);
            }
        }

@@ -2978,7 +2978,7 @@ public class UserManagerService extends IUserManager.Stub {
    @GuardedBy("mRestrictionsLock")
    private void applyUserRestrictionsLR(@UserIdInt int userId) {
        updateUserRestrictionsInternalLR(null, userId);
        scheduleWriteUser(getUserDataNoChecks(userId));
        scheduleWriteUser(userId);
    }

    @GuardedBy("mRestrictionsLock")
@@ -4129,14 +4129,14 @@ public class UserManagerService extends IUserManager.Stub {
        }
    }

    private void scheduleWriteUser(UserData userData) {
    private void scheduleWriteUser(@UserIdInt int userId) {
        if (DBG) {
            debug("scheduleWriteUser");
        }
        // No need to wrap it within a lock -- worst case, we'll just post the same message
        // twice.
        if (!mHandler.hasMessages(WRITE_USER_MSG, userData)) {
            Message msg = mHandler.obtainMessage(WRITE_USER_MSG, userData);
        if (!mHandler.hasMessages(WRITE_USER_MSG, userId)) {
            Message msg = mHandler.obtainMessage(WRITE_USER_MSG, userId);
            mHandler.sendMessageDelayed(msg, WRITE_USER_DELAY);
        }
    }
@@ -4152,7 +4152,7 @@ public class UserManagerService extends IUserManager.Stub {
            // Something went wrong, schedule full rewrite.
            UserData userData = getUserDataNoChecks(userId);
            if (userData != null) {
                scheduleWriteUser(userData);
                scheduleWriteUser(userId);
            }
        });
    }
@@ -6363,7 +6363,7 @@ public class UserManagerService extends IUserManager.Stub {
            userData.info.lastLoggedInTime = now;
        }
        userData.info.lastLoggedInFingerprint = PackagePartitions.FINGERPRINT;
        scheduleWriteUser(userData);
        scheduleWriteUser(userId);
    }

    /**
@@ -6533,7 +6533,7 @@ public class UserManagerService extends IUserManager.Stub {

    private void setLastEnteredForegroundTimeToNow(@NonNull UserData userData) {
        userData.mLastEnteredForegroundTimeMillis = System.currentTimeMillis();
        scheduleWriteUser(userData);
        scheduleWriteUser(userData.info.id);
    }

    @Override
@@ -6832,7 +6832,7 @@ public class UserManagerService extends IUserManager.Stub {
                case WRITE_USER_MSG:
                    removeMessages(WRITE_USER_MSG, msg.obj);
                    synchronized (mPackagesLock) {
                        int userId = ((UserData) msg.obj).info.id;
                        int userId = (int) msg.obj;
                        UserData userData = getUserDataNoChecks(userId);
                        if (userData != null) {
                            writeUserLP(userData);