Merge "Treat process group creation failure due to a dead process as non-fatal"

This commit is contained in:
Treehugger Robot
2023-03-13 16:41:23 +00:00
committed by Gerrit Code Review

View File

@@ -1799,12 +1799,17 @@ static void SpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArray gids,
if (!is_system_server && getuid() == 0) { if (!is_system_server && getuid() == 0) {
const int rc = createProcessGroup(uid, getpid()); const int rc = createProcessGroup(uid, getpid());
if (rc != 0) { if (rc != 0) {
if (rc == -ESRCH) {
// If process is dead, treat this as a non-fatal error
ALOGE("createProcessGroup(%d, %d) failed: %s", uid, /* pid= */ 0, strerror(-rc));
} else {
fail_fn(rc == -EROFS ? CREATE_ERROR("createProcessGroup failed, kernel missing " fail_fn(rc == -EROFS ? CREATE_ERROR("createProcessGroup failed, kernel missing "
"CONFIG_CGROUP_CPUACCT?") "CONFIG_CGROUP_CPUACCT?")
: CREATE_ERROR("createProcessGroup(%d, %d) failed: %s", uid, : CREATE_ERROR("createProcessGroup(%d, %d) failed: %s", uid,
/* pid= */ 0, strerror(-rc))); /* pid= */ 0, strerror(-rc)));
} }
} }
}
SetGids(env, gids, is_child_zygote, fail_fn); SetGids(env, gids, is_child_zygote, fail_fn);
SetRLimits(env, rlimits, fail_fn); SetRLimits(env, rlimits, fail_fn);