Merge "Frameworks: Annotate trivial @GuardedBy in services/core"
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index 74d8755..9631e46 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -2271,6 +2271,7 @@
return ruleName;
}
+ @GuardedBy("mRulesLock")
private @NonNull SparseIntArray getUidFirewallRulesLR(int chain) {
switch (chain) {
case FIREWALL_CHAIN_STANDBY:
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index ebb3209..76f9695 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -628,6 +628,7 @@
mConnManager = checkNotNull(connManager, "missing IConnectivityManager");
}
+ @GuardedBy("mUidRulesFirstLock")
void updatePowerSaveWhitelistUL() {
try {
int[] whitelist = mDeviceIdleController.getAppIdWhitelistExceptIdle();
@@ -654,6 +655,7 @@
*
* @return whether any uid has been whitelisted.
*/
+ @GuardedBy("mUidRulesFirstLock")
boolean addDefaultRestrictBackgroundWhitelistUidsUL() {
final List<UserInfo> users = mUserManager.getUsers();
final int numberUsers = users.size();
@@ -666,6 +668,7 @@
return changed;
}
+ @GuardedBy("mUidRulesFirstLock")
private boolean addDefaultRestrictBackgroundWhitelistUidsUL(int userId) {
final SystemConfig sysConfig = SystemConfig.getInstance();
final PackageManager pm = mContext.getPackageManager();
@@ -1120,6 +1123,7 @@
* Check {@link NetworkPolicy} against current {@link INetworkStatsService}
* to show visible notifications as needed.
*/
+ @GuardedBy("mNetworkPoliciesSecondLock")
void updateNotificationsNL() {
if (LOGV) Slog.v(TAG, "updateNotificationsNL()");
Trace.traceBegin(TRACE_TAG_NETWORK, "updateNotificationsNL");
@@ -1266,6 +1270,7 @@
* @return relevant subId, or {@link #INVALID_SUBSCRIPTION_ID} when no
* matching subId found.
*/
+ @GuardedBy("mNetworkPoliciesSecondLock")
private int findRelevantSubIdNL(NetworkTemplate template) {
// Mobile template is relevant when any active subscriber matches
for (int i = 0; i < mSubIdToSubscriberId.size(); i++) {
@@ -1285,6 +1290,7 @@
* Notify that given {@link NetworkTemplate} is over
* {@link NetworkPolicy#limitBytes}, potentially showing dialog to user.
*/
+ @GuardedBy("mNetworkPoliciesSecondLock")
private void notifyOverLimitNL(NetworkTemplate template) {
if (!mOverLimitNotified.contains(template)) {
mContext.startActivity(buildNetworkOverLimitIntent(mContext.getResources(), template));
@@ -1292,6 +1298,7 @@
}
}
+ @GuardedBy("mNetworkPoliciesSecondLock")
private void notifyUnderLimitNL(NetworkTemplate template) {
mOverLimitNotified.remove(template);
}
@@ -1462,6 +1469,7 @@
* @param subId that has its associated NetworkPolicy updated if necessary
* @return if any policies were updated
*/
+ @GuardedBy("mNetworkPoliciesSecondLock")
private boolean maybeUpdateMobilePolicyCycleAL(int subId, String subscriberId) {
if (LOGV) Slog.v(TAG, "maybeUpdateMobilePolicyCycleAL()");
@@ -1619,6 +1627,7 @@
* @param shouldNormalizePolicies true iff network policies need to be normalized after the
* update.
*/
+ @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"})
void handleNetworkPoliciesUpdateAL(boolean shouldNormalizePolicies) {
if (shouldNormalizePolicies) {
normalizePoliciesNL();
@@ -1633,6 +1642,7 @@
* Proactively control network data connections when they exceed
* {@link NetworkPolicy#limitBytes}.
*/
+ @GuardedBy("mNetworkPoliciesSecondLock")
void updateNetworkEnabledNL() {
if (LOGV) Slog.v(TAG, "updateNetworkEnabledNL()");
Trace.traceBegin(TRACE_TAG_NETWORK, "updateNetworkEnabledNL");
@@ -1773,6 +1783,7 @@
* {@link NetworkPolicy} that need to be enforced. When matches found, set
* remaining quota based on usage cycle and historical stats.
*/
+ @GuardedBy("mNetworkPoliciesSecondLock")
void updateNetworkRulesNL() {
if (LOGV) Slog.v(TAG, "updateNetworkRulesNL()");
Trace.traceBegin(TRACE_TAG_NETWORK, "updateNetworkRulesNL");
@@ -1957,6 +1968,7 @@
* Once any {@link #mNetworkPolicy} are loaded from disk, ensure that we
* have at least a default mobile policy defined.
*/
+ @GuardedBy("mNetworkPoliciesSecondLock")
private void ensureActiveMobilePolicyAL() {
if (LOGV) Slog.v(TAG, "ensureActiveMobilePolicyAL()");
if (mSuppressDefaultPolicy) return;
@@ -1977,6 +1989,7 @@
* @param subscriberId that we check for an existing policy
* @return true if a mobile network policy was added, or false one already existed.
*/
+ @GuardedBy("mNetworkPoliciesSecondLock")
private boolean ensureActiveMobilePolicyAL(int subId, String subscriberId) {
// Poke around to see if we already have a policy
final NetworkIdentity probeIdent = new NetworkIdentity(TYPE_MOBILE,
@@ -2036,6 +2049,7 @@
*
* @return if the policy was modified
*/
+ @GuardedBy("mNetworkPoliciesSecondLock")
private boolean updateDefaultMobilePolicyAL(int subId, NetworkPolicy policy) {
if (!policy.inferred) {
if (LOGD) Slog.d(TAG, "Ignoring user-defined policy " + policy);
@@ -2091,6 +2105,7 @@
}
}
+ @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"})
private void readPolicyAL() {
if (LOGV) Slog.v(TAG, "readPolicyAL()");
@@ -2322,6 +2337,7 @@
* Perform upgrade step of moving any user-defined meterness overrides over
* into {@link WifiConfiguration}.
*/
+ @GuardedBy({"mNetworkPoliciesSecondLock", "mUidRulesFirstLock"})
private void upgradeWifiMeteredOverrideAL() {
boolean modified = false;
final WifiManager wm = mContext.getSystemService(WifiManager.class);
@@ -2352,6 +2368,7 @@
}
}
+ @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"})
void writePolicyAL() {
if (LOGV) Slog.v(TAG, "writePolicyAL()");
@@ -2523,6 +2540,7 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
private void setUidPolicyUncheckedUL(int uid, int oldPolicy, int policy, boolean persist) {
setUidPolicyUncheckedUL(uid, policy, false);
@@ -2554,6 +2572,7 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
private void setUidPolicyUncheckedUL(int uid, int policy, boolean persist) {
if (policy == POLICY_NONE) {
mUidPolicy.delete(uid);
@@ -2601,6 +2620,7 @@
* Removes any persistable state associated with given {@link UserHandle}, persisting
* if any changes that are made.
*/
+ @GuardedBy("mUidRulesFirstLock")
boolean removeUserStateUL(int userId, boolean writePolicy) {
mLogger.removingUserState(userId);
@@ -2702,10 +2722,12 @@
}
}
+ @GuardedBy("mNetworkPoliciesSecondLock")
private void normalizePoliciesNL() {
normalizePoliciesNL(getNetworkPolicies(mContext.getOpPackageName()));
}
+ @GuardedBy("mNetworkPoliciesSecondLock")
private void normalizePoliciesNL(NetworkPolicy[] policies) {
mNetworkPolicy.clear();
for (NetworkPolicy policy : policies) {
@@ -2795,6 +2817,7 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
private void setRestrictBackgroundUL(boolean restrictBackground) {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "setRestrictBackgroundUL");
try {
@@ -3447,11 +3470,13 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
private boolean isUidForegroundOnRestrictBackgroundUL(int uid) {
final int procState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY);
return isProcStateAllowedWhileOnRestrictBackground(procState);
}
+ @GuardedBy("mUidRulesFirstLock")
private boolean isUidForegroundOnRestrictPowerUL(int uid) {
final int procState = mUidState.get(uid, ActivityManager.PROCESS_STATE_CACHED_EMPTY);
return isProcStateAllowedWhileIdleOrPowerSaveMode(procState);
@@ -3467,6 +3492,7 @@
* {@link #updateRulesForDataUsageRestrictionsUL(int)} and
* {@link #updateRulesForPowerRestrictionsUL(int)}
*/
+ @GuardedBy("mUidRulesFirstLock")
private void updateUidStateUL(int uid, int uidState) {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateUidStateUL");
try {
@@ -3493,6 +3519,7 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
private void removeUidStateUL(int uid) {
final int index = mUidState.indexOfKey(uid);
if (index >= 0) {
@@ -3537,6 +3564,7 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
void updateRulesForPowerSaveUL() {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForPowerSaveUL");
try {
@@ -3547,10 +3575,12 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
void updateRuleForRestrictPowerUL(int uid) {
updateRulesForWhitelistedPowerSaveUL(uid, mRestrictPower, FIREWALL_CHAIN_POWERSAVE);
}
+ @GuardedBy("mUidRulesFirstLock")
void updateRulesForDeviceIdleUL() {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForDeviceIdleUL");
try {
@@ -3561,12 +3591,14 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
void updateRuleForDeviceIdleUL(int uid) {
updateRulesForWhitelistedPowerSaveUL(uid, mDeviceIdleMode, FIREWALL_CHAIN_DOZABLE);
}
// NOTE: since both fw_dozable and fw_powersave uses the same map
// (mPowerSaveTempWhitelistAppIds) for whitelisting, we can reuse their logic in this method.
+ @GuardedBy("mUidRulesFirstLock")
private void updateRulesForWhitelistedPowerSaveUL(boolean enabled, int chain,
SparseIntArray rules) {
if (enabled) {
@@ -3611,6 +3643,7 @@
* {@link #mPowerSaveWhitelistExceptIdleAppIds} for checking if the {@param uid} is
* whitelisted.
*/
+ @GuardedBy("mUidRulesFirstLock")
private boolean isWhitelistedBatterySaverUL(int uid, boolean deviceIdleMode) {
final int appId = UserHandle.getAppId(uid);
boolean isWhitelisted = mPowerSaveTempWhitelistAppIds.get(appId)
@@ -3623,6 +3656,7 @@
// NOTE: since both fw_dozable and fw_powersave uses the same map
// (mPowerSaveTempWhitelistAppIds) for whitelisting, we can reuse their logic in this method.
+ @GuardedBy("mUidRulesFirstLock")
private void updateRulesForWhitelistedPowerSaveUL(int uid, boolean enabled, int chain) {
if (enabled) {
final boolean isWhitelisted = isWhitelistedBatterySaverUL(uid,
@@ -3635,6 +3669,7 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
void updateRulesForAppIdleUL() {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForAppIdleUL");
try {
@@ -3664,6 +3699,7 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
void updateRuleForAppIdleUL(int uid) {
if (!isUidValidForBlacklistRules(uid)) return;
@@ -3687,6 +3723,7 @@
* Toggle the firewall standby chain and inform listeners if the uid rules have effectively
* changed.
*/
+ @GuardedBy("mUidRulesFirstLock")
void updateRulesForAppIdleParoleUL() {
boolean paroled = mUsageStats.isAppIdleParoleOn();
boolean enableChain = !paroled;
@@ -3719,6 +3756,7 @@
* Update rules that might be changed by {@link #mRestrictBackground},
* {@link #mRestrictPower}, or {@link #mDeviceIdleMode} value.
*/
+ @GuardedBy({"mUidRulesFirstLock", "mNetworkPoliciesSecondLock"})
private void updateRulesForGlobalChangeAL(boolean restrictedNetworksChanged) {
if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK,
@@ -3740,6 +3778,7 @@
}
// TODO: rename / document to make it clear these are global (not app-specific) rules
+ @GuardedBy("mUidRulesFirstLock")
private void updateRulesForRestrictPowerUL() {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL");
try {
@@ -3751,6 +3790,7 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
private void updateRulesForRestrictBackgroundUL() {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictBackgroundUL");
try {
@@ -3771,6 +3811,7 @@
}
// TODO: refactor / consolidate all those updateXyz methods, there are way too many of them...
+ @GuardedBy("mUidRulesFirstLock")
private void updateRulesForAllAppsUL(@RestrictType int type) {
if (Trace.isTagEnabled(Trace.TRACE_TAG_NETWORK)) {
Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "updateRulesForRestrictPowerUL-" + type);
@@ -3822,6 +3863,7 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
private void updateRulesForTempWhitelistChangeUL(int appId) {
final List<UserInfo> users = mUserManager.getUsers();
final int numUsers = users.size();
@@ -3886,6 +3928,7 @@
/**
* Clears all state - internal and external - associated with an UID.
*/
+ @GuardedBy("mUidRulesFirstLock")
private void onUidDeletedUL(int uid) {
// First cleanup in-memory state synchronously...
mUidRules.delete(uid);
@@ -3914,6 +3957,7 @@
*
* <p>This method changes both the external firewall rules and the internal state.
*/
+ @GuardedBy("mUidRulesFirstLock")
private void updateRestrictionRulesForUidUL(int uid) {
// Methods below only changes the firewall rules for the power-related modes.
updateRuleForDeviceIdleUL(uid);
@@ -4104,6 +4148,7 @@
* <p>
* <strong>NOTE: </strong>This method does not update the firewall rules on {@code netd}.
*/
+ @GuardedBy("mUidRulesFirstLock")
private void updateRulesForPowerRestrictionsUL(int uid) {
final int oldUidRules = mUidRules.get(uid, RULE_NONE);
@@ -4540,6 +4585,7 @@
* @param uidRules new UID rules; if {@code null}, only toggles chain state.
* @param toggle whether the chain should be enabled, disabled, or not changed.
*/
+ @GuardedBy("mUidRulesFirstLock")
private void setUidFirewallRulesUL(int chain, @Nullable SparseIntArray uidRules,
@ChainToggleType int toggle) {
if (uidRules != null) {
@@ -4606,6 +4652,7 @@
/**
* Add or remove a uid to the firewall blacklist for all network ifaces.
*/
+ @GuardedBy("mUidRulesFirstLock")
private void enableFirewallChainUL(int chain, boolean enable) {
if (mFirewallChainStates.indexOfKey(chain) >= 0 &&
mFirewallChainStates.get(chain) == enable) {
@@ -4717,6 +4764,7 @@
mHandler.getLooper().getQueue().addIdleHandler(handler);
}
+ @GuardedBy("mUidRulesFirstLock")
@VisibleForTesting
public void updateRestrictBackgroundByLowPowerModeUL(final PowerSaveState result) {
mRestrictBackgroundPowerState = result;
@@ -5048,6 +5096,7 @@
}
}
+ @GuardedBy("mUidRulesFirstLock")
private boolean isRestrictedByAdminUL(int uid) {
final Set<Integer> restrictedUids = mMeteredRestrictedUids.get(
UserHandle.getUserId(uid));