From: Nick Rosbrook Date: Wed, 20 Jul 2022 15:16:37 +0000 (-0400) Subject: oomd: fix off-by-one when dumping kill candidates X-Git-Tag: v252-rc1~323^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F23764%2Fhead;p=thirdparty%2Fsystemd.git oomd: fix off-by-one when dumping kill candidates When we kill a cgroup that is towards the end of the sorted candidate list (i.e. when we have to resort to killing a candidate with ManagedOOMPreference=avoid), this cgroup is not logged in the candidate list. This is due to an off-by-one error when assigning dump_until. --- diff --git a/src/oom/oomd-util.c b/src/oom/oomd-util.c index 8a3fb09e37e..d31d5ca6235 100644 --- a/src/oom/oomd-util.c +++ b/src/oom/oomd-util.c @@ -323,7 +323,7 @@ int oomd_kill_by_pgscan_rate(Hashmap *h, const char *prefix, bool dry_run, char continue; /* Try to find something else to kill */ } - dump_until = MAX(dump_until, i); + dump_until = MAX(dump_until, i + 1); char *selected = strdup(sorted[i]->path); if (!selected) return -ENOMEM; @@ -367,7 +367,7 @@ int oomd_kill_by_swap_usage(Hashmap *h, uint64_t threshold_usage, bool dry_run, continue; /* Try to find something else to kill */ } - dump_until = MAX(dump_until, i); + dump_until = MAX(dump_until, i + 1); char *selected = strdup(sorted[i]->path); if (!selected) return -ENOMEM;