From b6ddaa40bf1747581816f56d706a2db1468b86ee Mon Sep 17 00:00:00 2001 From: Ondrej Kozina Date: Mon, 28 Jul 2025 17:43:01 +0200 Subject: [PATCH] Refactor tcrypt subdev check in a helper routine. Add comments what parts will be removed later. --- lib/tcrypt/tcrypt.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/tcrypt/tcrypt.c b/lib/tcrypt/tcrypt.c index 15f2c0c9..ea9fd41b 100644 --- a/lib/tcrypt/tcrypt.c +++ b/lib/tcrypt/tcrypt.c @@ -926,6 +926,24 @@ out: return r; } +static bool is_tcrypt_subdev(const char *dm_uuid, const char *base_uuid) +{ + assert(base_uuid); + + if (!dm_uuid) + return false; + + if (!strncmp(dm_uuid, "SUBDEV-", 7)) + /* dm_uuid + 6 because function requires dm_uuid to contain '-' */ + return !dm_uuid_cmp(dm_uuid + 6, strchr(base_uuid, '-')); + + /* + * FIXME: Drop after shift to dependency based deactivation (CRYPT_SUBDEV) + * in later releases + */ + return !strncmp(dm_uuid, base_uuid, strlen(base_uuid)); +} + static int TCRYPT_remove_one(struct crypt_device *cd, const char *name, const char *base_uuid, int index, uint32_t flags) { @@ -941,9 +959,7 @@ static int TCRYPT_remove_one(struct crypt_device *cd, const char *name, return r; r = dm_query_device(cd, dm_name, DM_ACTIVE_UUID, &dmd); - if (!r && - (!strncmp(dmd.uuid, base_uuid, strlen(base_uuid)) || - !dm_uuid_cmp(dmd.uuid, strchr(base_uuid, '-')))) + if (!r && is_tcrypt_subdev(dmd.uuid, base_uuid)) r = dm_remove_device(cd, dm_name, flags); free(CONST_CAST(void*)dmd.uuid);