Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 230672
b: refs/heads/master
c: 7dbcd13
h: refs/heads/master
v: v3
  • Loading branch information
Milan Broz authored and Alasdair G Kergon committed Jan 13, 2011
1 parent 314a783 commit 93e7613
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 86a54a4802df10d23ccd655e2083e812fe990243
refs/heads/master: 7dbcd137414f3877737802438926d6dba7906a9a
28 changes: 12 additions & 16 deletions trunk/drivers/md/dm-crypt.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ struct crypt_config {
struct workqueue_struct *crypt_queue;

char *cipher;
char *cipher_mode;
char *cipher_string;

struct crypt_iv_operations *iv_gen_ops;
union {
Expand Down Expand Up @@ -1030,7 +1030,7 @@ static void crypt_dtr(struct dm_target *ti)
dm_put_device(ti, cc->dev);

kzfree(cc->cipher);
kzfree(cc->cipher_mode);
kzfree(cc->cipher_string);

/* Must zero key material before freeing */
kzfree(cc);
Expand All @@ -1050,6 +1050,10 @@ static int crypt_ctr_cipher(struct dm_target *ti,
return -EINVAL;
}

cc->cipher_string = kstrdup(cipher_in, GFP_KERNEL);
if (!cc->cipher_string)
goto bad_mem;

/*
* Legacy dm-crypt cipher specification
* cipher-mode-iv:ivopts
Expand All @@ -1061,23 +1065,18 @@ static int crypt_ctr_cipher(struct dm_target *ti,
if (!cc->cipher)
goto bad_mem;

if (tmp) {
cc->cipher_mode = kstrdup(tmp, GFP_KERNEL);
if (!cc->cipher_mode)
goto bad_mem;
}

chainmode = strsep(&tmp, "-");
ivopts = strsep(&tmp, "-");
ivmode = strsep(&ivopts, ":");

if (tmp)
DMWARN("Ignoring unexpected additional cipher options");

/* Compatibility mode for old dm-crypt mappings */
/*
* For compatibility with the original dm-crypt mapping format, if
* only the cipher name is supplied, use cbc-plain.
*/
if (!chainmode || (!strcmp(chainmode, "plain") && !ivmode)) {
kfree(cc->cipher_mode);
cc->cipher_mode = kstrdup("cbc-plain", GFP_KERNEL);
chainmode = "cbc";
ivmode = "plain";
}
Expand Down Expand Up @@ -1307,10 +1306,7 @@ static int crypt_status(struct dm_target *ti, status_type_t type,
break;

case STATUSTYPE_TABLE:
if (cc->cipher_mode)
DMEMIT("%s-%s ", cc->cipher, cc->cipher_mode);
else
DMEMIT("%s ", cc->cipher);
DMEMIT("%s ", cc->cipher_string);

if (cc->key_size > 0) {
if ((maxlen - sz) < ((cc->key_size << 1) + 1))
Expand Down Expand Up @@ -1422,7 +1418,7 @@ static int crypt_iterate_devices(struct dm_target *ti,

static struct target_type crypt_target = {
.name = "crypt",
.version = {1, 7, 0},
.version = {1, 8, 0},
.module = THIS_MODULE,
.ctr = crypt_ctr,
.dtr = crypt_dtr,
Expand Down

0 comments on commit 93e7613

Please sign in to comment.