diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2005-09-01 20:43:25 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2005-09-01 20:43:25 -0400 |
commit | eb6f1160ddb2fdadf50f350da79d0796c37f17e2 (patch) | |
tree | e7b048b089b4b0ec9f121eea9a7f5864999dbac3 | |
parent | 64baf3cfea974d2b9e671ccfdbc03e030ea5ebc6 (diff) |
[CRYPTO]: Use CRYPTO_TFM_REQ_MAY_SLEEP where appropriate
This patch goes through the current users of the crypto layer and sets
CRYPTO_TFM_REQ_MAY_SLEEP at crypto_alloc_tfm() where all crypto operations
are performed in process context.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/block/cryptoloop.c | 6 | ||||
-rw-r--r-- | drivers/md/dm-crypt.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/airo.c | 2 | ||||
-rw-r--r-- | fs/nfsd/nfs4recover.c | 2 | ||||
-rw-r--r-- | net/sunrpc/auth_gss/gss_krb5_crypto.c | 2 | ||||
-rw-r--r-- | security/seclvl.c | 2 |
6 files changed, 12 insertions, 9 deletions
diff --git a/drivers/block/cryptoloop.c b/drivers/block/cryptoloop.c index 5be6f998d8c5..3d4261c39f16 100644 --- a/drivers/block/cryptoloop.c +++ b/drivers/block/cryptoloop.c | |||
@@ -57,9 +57,11 @@ cryptoloop_init(struct loop_device *lo, const struct loop_info64 *info) | |||
57 | mode = strsep(&cmsp, "-"); | 57 | mode = strsep(&cmsp, "-"); |
58 | 58 | ||
59 | if (mode == NULL || strcmp(mode, "cbc") == 0) | 59 | if (mode == NULL || strcmp(mode, "cbc") == 0) |
60 | tfm = crypto_alloc_tfm(cipher, CRYPTO_TFM_MODE_CBC); | 60 | tfm = crypto_alloc_tfm(cipher, CRYPTO_TFM_MODE_CBC | |
61 | CRYPTO_TFM_REQ_MAY_SLEEP); | ||
61 | else if (strcmp(mode, "ecb") == 0) | 62 | else if (strcmp(mode, "ecb") == 0) |
62 | tfm = crypto_alloc_tfm(cipher, CRYPTO_TFM_MODE_ECB); | 63 | tfm = crypto_alloc_tfm(cipher, CRYPTO_TFM_MODE_ECB | |
64 | CRYPTO_TFM_REQ_MAY_SLEEP); | ||
63 | if (tfm == NULL) | 65 | if (tfm == NULL) |
64 | return -EINVAL; | 66 | return -EINVAL; |
65 | 67 | ||
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index d0a4bab220e5..b82bc3150476 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c | |||
@@ -144,7 +144,7 @@ static int crypt_iv_essiv_ctr(struct crypt_config *cc, struct dm_target *ti, | |||
144 | } | 144 | } |
145 | 145 | ||
146 | /* Hash the cipher key with the given hash algorithm */ | 146 | /* Hash the cipher key with the given hash algorithm */ |
147 | hash_tfm = crypto_alloc_tfm(opts, 0); | 147 | hash_tfm = crypto_alloc_tfm(opts, CRYPTO_TFM_REQ_MAY_SLEEP); |
148 | if (hash_tfm == NULL) { | 148 | if (hash_tfm == NULL) { |
149 | ti->error = PFX "Error initializing ESSIV hash"; | 149 | ti->error = PFX "Error initializing ESSIV hash"; |
150 | return -EINVAL; | 150 | return -EINVAL; |
@@ -172,7 +172,8 @@ static int crypt_iv_essiv_ctr(struct crypt_config *cc, struct dm_target *ti, | |||
172 | 172 | ||
173 | /* Setup the essiv_tfm with the given salt */ | 173 | /* Setup the essiv_tfm with the given salt */ |
174 | essiv_tfm = crypto_alloc_tfm(crypto_tfm_alg_name(cc->tfm), | 174 | essiv_tfm = crypto_alloc_tfm(crypto_tfm_alg_name(cc->tfm), |
175 | CRYPTO_TFM_MODE_ECB); | 175 | CRYPTO_TFM_MODE_ECB | |
176 | CRYPTO_TFM_REQ_MAY_SLEEP); | ||
176 | if (essiv_tfm == NULL) { | 177 | if (essiv_tfm == NULL) { |
177 | ti->error = PFX "Error allocating crypto tfm for ESSIV"; | 178 | ti->error = PFX "Error allocating crypto tfm for ESSIV"; |
178 | kfree(salt); | 179 | kfree(salt); |
@@ -587,7 +588,7 @@ static int crypt_ctr(struct dm_target *ti, unsigned int argc, char **argv) | |||
587 | goto bad1; | 588 | goto bad1; |
588 | } | 589 | } |
589 | 590 | ||
590 | tfm = crypto_alloc_tfm(cipher, crypto_flags); | 591 | tfm = crypto_alloc_tfm(cipher, crypto_flags | CRYPTO_TFM_REQ_MAY_SLEEP); |
591 | if (!tfm) { | 592 | if (!tfm) { |
592 | ti->error = PFX "Error allocating crypto tfm"; | 593 | ti->error = PFX "Error allocating crypto tfm"; |
593 | goto bad1; | 594 | goto bad1; |
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c index df20adcd0730..7fdb85dda4e5 100644 --- a/drivers/net/wireless/airo.c +++ b/drivers/net/wireless/airo.c | |||
@@ -1301,7 +1301,7 @@ static int micsetup(struct airo_info *ai) { | |||
1301 | int i; | 1301 | int i; |
1302 | 1302 | ||
1303 | if (ai->tfm == NULL) | 1303 | if (ai->tfm == NULL) |
1304 | ai->tfm = crypto_alloc_tfm("aes", 0); | 1304 | ai->tfm = crypto_alloc_tfm("aes", CRYPTO_TFM_REQ_MAY_SLEEP); |
1305 | 1305 | ||
1306 | if (ai->tfm == NULL) { | 1306 | if (ai->tfm == NULL) { |
1307 | printk(KERN_ERR "airo: failed to load transform for AES\n"); | 1307 | printk(KERN_ERR "airo: failed to load transform for AES\n"); |
diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c index 57ed50fe7f85..02132f33320d 100644 --- a/fs/nfsd/nfs4recover.c +++ b/fs/nfsd/nfs4recover.c | |||
@@ -93,7 +93,7 @@ nfs4_make_rec_clidname(char *dname, struct xdr_netobj *clname) | |||
93 | 93 | ||
94 | dprintk("NFSD: nfs4_make_rec_clidname for %.*s\n", | 94 | dprintk("NFSD: nfs4_make_rec_clidname for %.*s\n", |
95 | clname->len, clname->data); | 95 | clname->len, clname->data); |
96 | tfm = crypto_alloc_tfm("md5", 0); | 96 | tfm = crypto_alloc_tfm("md5", CRYPTO_TFM_REQ_MAY_SLEEP); |
97 | if (tfm == NULL) | 97 | if (tfm == NULL) |
98 | goto out; | 98 | goto out; |
99 | cksum.len = crypto_tfm_alg_digestsize(tfm); | 99 | cksum.len = crypto_tfm_alg_digestsize(tfm); |
diff --git a/net/sunrpc/auth_gss/gss_krb5_crypto.c b/net/sunrpc/auth_gss/gss_krb5_crypto.c index 5a7265aeaf83..7ad74449b18f 100644 --- a/net/sunrpc/auth_gss/gss_krb5_crypto.c +++ b/net/sunrpc/auth_gss/gss_krb5_crypto.c | |||
@@ -160,7 +160,7 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body, | |||
160 | " unsupported checksum %d", cksumtype); | 160 | " unsupported checksum %d", cksumtype); |
161 | goto out; | 161 | goto out; |
162 | } | 162 | } |
163 | if (!(tfm = crypto_alloc_tfm(cksumname, 0))) | 163 | if (!(tfm = crypto_alloc_tfm(cksumname, CRYPTO_TFM_REQ_MAY_SLEEP))) |
164 | goto out; | 164 | goto out; |
165 | cksum->len = crypto_tfm_alg_digestsize(tfm); | 165 | cksum->len = crypto_tfm_alg_digestsize(tfm); |
166 | if ((cksum->data = kmalloc(cksum->len, GFP_KERNEL)) == NULL) | 166 | if ((cksum->data = kmalloc(cksum->len, GFP_KERNEL)) == NULL) |
diff --git a/security/seclvl.c b/security/seclvl.c index c8e87b22c9bd..96b1f2122f67 100644 --- a/security/seclvl.c +++ b/security/seclvl.c | |||
@@ -321,7 +321,7 @@ plaintext_to_sha1(unsigned char *hash, const char *plaintext, int len) | |||
321 | "bytes.\n", len, PAGE_SIZE); | 321 | "bytes.\n", len, PAGE_SIZE); |
322 | return -ENOMEM; | 322 | return -ENOMEM; |
323 | } | 323 | } |
324 | tfm = crypto_alloc_tfm("sha1", 0); | 324 | tfm = crypto_alloc_tfm("sha1", CRYPTO_TFM_REQ_MAY_SLEEP); |
325 | if (tfm == NULL) { | 325 | if (tfm == NULL) { |
326 | seclvl_printk(0, KERN_ERR, | 326 | seclvl_printk(0, KERN_ERR, |
327 | "Failed to load transform for SHA1\n"); | 327 | "Failed to load transform for SHA1\n"); |