diff --git a/lib/setup.c b/lib/setup.c index 3a411733..1ee02db5 100644 --- a/lib/setup.c +++ b/lib/setup.c @@ -5838,8 +5838,12 @@ int crypt_get_active_device(struct crypt_device *cd, const char *name, if (r < 0) return r; - /* For LUKS2 with integrity we need flags from underlying dm-integrity */ - if (isLUKS2(cd->type) && crypt_get_integrity_tag_size(cd) && + /* + * For integrity and LUKS2 (and detached header where context is NULL) + * we need flags from underlying dm-integrity device. + * This check must be skipped for non-LUKS2 integrity device. + */ + if ((isLUKS2(cd->type) || !cd->type) && crypt_get_integrity_tag_size(cd) && (iname = dm_get_active_iname(cd, name))) { if (dm_query_device(cd, iname, 0, &dmdi) >= 0) dmd.flags |= dmdi.flags;