Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6cd136fc authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "libprocessgroup: Handle temporarily non-empty group removal failure"

parents ac9b59ed fd933786
Loading
Loading
Loading
Loading
+3 −6
Original line number Diff line number Diff line
@@ -187,10 +187,6 @@ static int RemoveProcessGroup(const char* cgroup, uid_t uid, int pid, unsigned i
    auto uid_pid_path = ConvertUidPidToPath(cgroup, uid, pid);
    auto uid_path = ConvertUidToPath(cgroup, uid);

    if (retries == 0) {
        retries = 1;
    }

    while (retries--) {
        ret = rmdir(uid_pid_path.c_str());
        if (!ret || errno != EBUSY) break;
@@ -463,12 +459,13 @@ static int KillProcessGroup(uid_t uid, int initialPid, int signal, int retries,
                      << " in " << static_cast<int>(ms) << "ms";
        }

        int err = RemoveProcessGroup(cgroup, uid, initialPid, retries);
        // 400 retries correspond to 2 secs max timeout
        int err = RemoveProcessGroup(cgroup, uid, initialPid, 400);

        if (isMemoryCgroupSupported() && UsePerAppMemcg()) {
            std::string memcg_apps_path;
            if (CgroupGetMemcgAppsPath(&memcg_apps_path) &&
                RemoveProcessGroup(memcg_apps_path.c_str(), uid, initialPid, retries) < 0) {
                RemoveProcessGroup(memcg_apps_path.c_str(), uid, initialPid, 400) < 0) {
                return -1;
            }
        }