mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 03:27:30 -04:00
dm-inlinecrypt: Fix an error handling path in inlinecrypt_ctr()
All error handling paths, except but this one, branch to the 'bad' label in
the error handling path.
If not done, there is a memory leak and some sensitive data may be kept
around.
So, fix this error path and also do the needed clean-up.
Also, fix missing goto in the "Wrong alignment of iv_offset sector" path.
Fixes: e7f57d2c47 ("dm-inlinecrypt: add target for inline block device encryption")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Reviewed-by: Eric Biggers <ebiggers@kernel.org>
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
This commit is contained in:
committed by
Mikulas Patocka
parent
d9c631e3fb
commit
da991cbd67
@@ -347,7 +347,8 @@ static int inlinecrypt_ctr(struct dm_target *ti, unsigned int argc, char **argv)
|
||||
err = get_key_size(&argv[1]);
|
||||
if (err < 0) {
|
||||
ti->error = "Cannot parse key size";
|
||||
return -EINVAL;
|
||||
err = -EINVAL;
|
||||
goto bad;
|
||||
}
|
||||
ctx->key_size = err;
|
||||
|
||||
@@ -398,6 +399,7 @@ static int inlinecrypt_ctr(struct dm_target *ti, unsigned int argc, char **argv)
|
||||
if (ctx->iv_offset & ((ctx->sector_size >> SECTOR_SHIFT) - 1)) {
|
||||
ti->error = "Wrong alignment of iv_offset sector";
|
||||
err = -EINVAL;
|
||||
goto bad;
|
||||
}
|
||||
|
||||
ctx->max_dun = (ctx->iv_offset + ti->len - 1) >>
|
||||
|
||||
Reference in New Issue
Block a user