From: Yu Watanabe Date: Mon, 5 Sep 2022 12:57:38 +0000 (+0900) Subject: repart: check if existing partitions can grow X-Git-Tag: v252-rc1~222^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cdbcc3395207190824dda545032ab9216892fdbf;p=thirdparty%2Fsystemd.git repart: check if existing partitions can grow Fixes #24553. --- diff --git a/src/partition/repart.c b/src/partition/repart.c index 004022f6dab..ae3c0bdb261 100644 --- a/src/partition/repart.c +++ b/src/partition/repart.c @@ -645,6 +645,12 @@ static bool context_allocate_partitions(Context *context, uint64_t *ret_largest_ context->n_free_areas == 0 ? 0 : free_area_available_for_new_partitions(context, context->free_areas[context->n_free_areas-1]); + /* Check that each existing partition can fit its area. */ + for (size_t i = 0; i < context->n_free_areas; i++) + if (free_area_current_end(context, context->free_areas[i]) < + free_area_min_end(context, context->free_areas[i])) + return false; + /* A simple first-fit algorithm. We return true if we can fit the partitions in, otherwise false. */ LIST_FOREACH(partitions, p, context->partitions) { bool fits = false;