From 2bdd029792a0454211dde538fca02f27989fed62 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); }