From 0502a4cefb87e467d99e390cbde84724778b7b0d Mon Sep 17 00:00:00 2001 From: Pavel Grafov Date: Thu, 27 Jul 2017 17:27:35 +0100 Subject: [PATCH] Move key eviction past system services user cleanup. This ensures that all system services release all handles to user key encrypted data before the key is evicted. Bug:63257991 Test: Turning work profile off and attempting to read profile files. Change-Id: I9b158b9b551fd6b8e5e885baff96485bff1a5478 --- .../java/com/android/server/am/UserController.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index 405ee323bbe1d..ceae82f1a9ac8 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -671,12 +671,6 @@ final class UserController { } if (stopped) { - // Evict the user's credential encryption key - try { - getStorageManager().lockUserKey(userId); - } catch (RemoteException re) { - throw re.rethrowAsRuntimeException(); - } mInjector.systemServiceManagerCleanupUser(userId); synchronized (mLock) { mInjector.getActivityStackSupervisor().removeUserLocked(userId); @@ -685,6 +679,12 @@ final class UserController { if (getUserInfo(userId).isEphemeral()) { mInjector.getUserManager().removeUser(userId); } + // Evict the user's credential encryption key. + try { + getStorageManager().lockUserKey(userId); + } catch (RemoteException re) { + throw re.rethrowAsRuntimeException(); + } } }