From 92d888235edd4d1294561845ecb4c35cc6c0f0c9 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Sun, 1 Jun 2025 20:24:47 +0200 Subject: [PATCH] repart: Apply verity-sig max size based on partition type We already do this for partition_min_size(), let's do it for partition_max_size() as well. This makes sure repart doesn't accidentally try to grow verity sig partitions to larger sizes than the hardcoded max size in systemd. --- src/repart/repart.c | 4 ++-- src/shared/gpt.h | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/repart/repart.c b/src/repart/repart.c index f3cc69ef11..ab212b4f42 100644 --- a/src/repart/repart.c +++ b/src/repart/repart.c @@ -921,7 +921,7 @@ static uint64_t partition_min_size(const Context *context, const Partition *p) { return p->current_size; } - if (IN_SET(p->type.designator, PARTITION_ROOT_VERITY_SIG, PARTITION_USR_VERITY_SIG)) + if (partition_designator_is_verity_sig(p->type.designator)) return VERITY_SIG_SIZE; sz = p->current_size != UINT64_MAX ? p->current_size : HARD_MIN_SIZE; @@ -967,7 +967,7 @@ static uint64_t partition_max_size(const Context *context, const Partition *p) { return p->current_size; } - if (p->verity == VERITY_SIG) + if (partition_designator_is_verity_sig(p->type.designator)) return VERITY_SIG_SIZE; override_max = p->suppressing ? MIN(p->size_max, p->suppressing->size_max) : p->size_max; diff --git a/src/shared/gpt.h b/src/shared/gpt.h index f81c377c68..9e5ace35a4 100644 --- a/src/shared/gpt.h +++ b/src/shared/gpt.h @@ -31,6 +31,10 @@ typedef enum PartitionDesignator { bool partition_designator_is_versioned(PartitionDesignator d) _const_; +static inline bool partition_designator_is_verity_sig(PartitionDesignator d) { + return IN_SET(d, PARTITION_ROOT_VERITY_SIG, PARTITION_USR_VERITY_SIG); +} + PartitionDesignator partition_verity_of(PartitionDesignator p) _const_; PartitionDesignator partition_verity_sig_of(PartitionDesignator p) _const_; PartitionDesignator partition_verity_to_data(PartitionDesignator d) _const_;