diff --git a/libprocessgroup/processgroup.cpp b/libprocessgroup/processgroup.cpp index 1f2904000..06d386f36 100644 --- a/libprocessgroup/processgroup.cpp +++ b/libprocessgroup/processgroup.cpp @@ -223,6 +223,13 @@ static int RemoveProcessGroup(const char* cgroup, uid_t uid, int pid, unsigned i std::this_thread::sleep_for(5ms); } + if (!ret && uid >= AID_ISOLATED_START && uid <= AID_ISOLATED_END) { + // Isolated UIDs are unlikely to be reused soon after removal, + // so free up the kernel resources for the UID level cgroup. + const auto uid_path = ConvertUidToPath(cgroup, uid); + ret = rmdir(uid_path.c_str()); + } + return ret; }