From c919183ba4fafcf2e92f6f62d25ee930f62bb0bb Mon Sep 17 00:00:00 2001 From: Wei Wang Date: Wed, 9 Dec 2020 15:17:16 -0800 Subject: installd: Fix set dex2oat to background after boot_complete We need set policy before dropping capabilities. Bug: 175178520 Test: trace and check sched_policy Change-Id: I24114325f00f19113b360f71a427ebf6bf45dc9b --- cmds/installd/dexopt.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cmds/installd/dexopt.cpp b/cmds/installd/dexopt.cpp index 594880ac60..65fc46ecaf 100644 --- a/cmds/installd/dexopt.cpp +++ b/cmds/installd/dexopt.cpp @@ -1818,10 +1818,13 @@ int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* ins pid_t pid = fork(); if (pid == 0) { + // Need to set schedpolicy before dropping privileges + // for cgroup migration. See details at b/175178520. + SetDex2OatScheduling(boot_complete); + /* child -- drop privileges before continuing */ drop_capabilities(uid); - SetDex2OatScheduling(boot_complete); if (flock(out_oat.fd(), LOCK_EX | LOCK_NB) != 0) { PLOG(ERROR) << "flock(" << out_oat.path() << ") failed"; _exit(DexoptReturnCodes::kFlock); -- cgit v1.2.3-59-g8ed1b