From 1c100834ddea99b4e36dfcff533faa3b3011d007 Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Thu, 11 Apr 2019 17:47:32 -0700 Subject: [PATCH] Set pending client to null after it's been started Pending client can now be started in two places. Originally it was only started when onError was received (previous client canceled). We recently discovered some enumerate bugs likely due to system boot timing changes, where Keyguard authenticate() can occur while enumerate() is still going. As a result, we queue clients while enumerate is happening and start them when enumerate finishes. We need to remember to set the pending client to null. Fixes: 130208531 Test: Fingerprint works during cold boot Change-Id: I5fe1c7a9fc96875f3d87048b12e601755d7f4963 --- .../java/com/android/server/biometrics/BiometricServiceBase.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java index 18c2edc086dcf..3f856d3e8eb2e 100644 --- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java +++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java @@ -1231,6 +1231,7 @@ public abstract class BiometricServiceBase extends SystemService if (mPendingClient != null) { Slog.d(getTag(), "Enumerate finished, starting pending client"); startClient(mPendingClient, false /* initiatedByClient */); + mPendingClient = null; } } }