From 0c27ddf71be7a295db6305601e5145c14474d162 Mon Sep 17 00:00:00 2001 From: junyulai Date: Fri, 30 Aug 2019 16:44:45 +0800 Subject: [PATCH] Fix LockdownVpnTracker deadlock when resetting legacy Always-On VPN When resetting legacy Always-On VPN, the intent is handled by main thread. And it will also initialize VPN shutdown process, which will cause networkInfo changed event on ConnectivityService internal thread. These two events need to hold their corresponding lock and ask for the other one, which causes the deadlock. This patch move the event handling to the same thread to prevent such deadlock, and cleanup some unused variables. Change-Id: I5b656c0d0381acb4e33409a11f502db9b180296c Fix: 139122208 Test: atest FrameworksNetTests, manual test --- services/core/java/com/android/server/ConnectivityService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 62db557833..d822879e25 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -4550,7 +4550,7 @@ public class ConnectivityService extends IConnectivityManager.Stub Slog.w(TAG, "VPN for user " + user + " not ready yet. Skipping lockdown"); return false; } - setLockdownTracker(new LockdownVpnTracker(mContext, mNMS, this, vpn, profile)); + setLockdownTracker(new LockdownVpnTracker(mContext, this, mHandler, vpn, profile)); } else { setLockdownTracker(null); }