Skip to content

Commit

Permalink
crypto: echainiv - Only hold RNG during initialisation
Browse files Browse the repository at this point in the history
This patch changes the RNG allocation so that we only hold a
reference to the RNG during initialisation.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
  • Loading branch information
Herbert Xu committed Jun 22, 2015
1 parent eeee12a commit 9fcc704
Showing 1 changed file with 6 additions and 22 deletions.
28 changes: 6 additions & 22 deletions crypto/echainiv.c
Original file line number Diff line number Diff line change
Expand Up @@ -197,8 +197,13 @@ static int echainiv_init(struct crypto_tfm *tfm)

crypto_aead_set_reqsize(geniv, sizeof(struct aead_request));

err = crypto_get_default_rng();
if (err)
goto out;

err = crypto_rng_get_bytes(crypto_default_rng, ctx->salt,
crypto_aead_ivsize(geniv));
crypto_put_default_rng();
if (err)
goto out;

Expand Down Expand Up @@ -277,35 +282,14 @@ static int echainiv_aead_create(struct crypto_template *tmpl,
goto out;
}

static int echainiv_create(struct crypto_template *tmpl, struct rtattr **tb)
{
int err;

err = crypto_get_default_rng();
if (err)
goto out;

err = echainiv_aead_create(tmpl, tb);
if (err)
goto put_rng;

out:
return err;

put_rng:
crypto_put_default_rng();
goto out;
}

static void echainiv_free(struct crypto_instance *inst)
{
aead_geniv_free(aead_instance(inst));
crypto_put_default_rng();
}

static struct crypto_template echainiv_tmpl = {
.name = "echainiv",
.create = echainiv_create,
.create = echainiv_aead_create,
.free = echainiv_free,
.module = THIS_MODULE,
};
Expand Down

0 comments on commit 9fcc704

Please sign in to comment.