From 91ba22b157d8b4e6a2f2037aeb595d759712a0c6 Mon Sep 17 00:00:00 2001 From: Milan Broz Date: Tue, 16 Apr 2019 15:37:36 +0200 Subject: [PATCH] Do not try to remove device that was not succesfully activated. --- lib/luks1/keyencryption.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/luks1/keyencryption.c b/lib/luks1/keyencryption.c index 55da7885..64b14070 100644 --- a/lib/luks1/keyencryption.c +++ b/lib/luks1/keyencryption.c @@ -60,7 +60,7 @@ static int LUKS_endec_template(char *src, size_t srcLength, struct crypt_dm_active_device dmd = { .flags = CRYPT_ACTIVATE_PRIVATE, }; - int r, devfd = -1; + int r, devfd = -1, remove_dev = 0; size_t bsize, keyslot_alignment, alignment; log_dbg(ctx, "Using dmcrypt to access keyslot area."); @@ -114,6 +114,7 @@ static int LUKS_endec_template(char *src, size_t srcLength, r = -EIO; goto out; } + remove_dev = 1; devfd = open(path, mode | O_DIRECT | O_SYNC); if (devfd == -1) { @@ -132,7 +133,8 @@ static int LUKS_endec_template(char *src, size_t srcLength, dm_targets_free(ctx, &dmd); if (devfd != -1) close(devfd); - dm_remove_device(ctx, name, CRYPT_DEACTIVATE_FORCE); + if (remove_dev) + dm_remove_device(ctx, name, CRYPT_DEACTIVATE_FORCE); return r; }