summaryrefslogtreecommitdiffstats
path: root/crypto/algif_aead.c
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2018-09-18 22:10:51 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2018-09-28 00:46:08 -0400
commit8d605398425843c7ce3c0e9a0434d832d3bd54cc (patch)
tree9367982359561def8ee697e06669e2a8a15c99f0 /crypto/algif_aead.c
parent5c525640ef455b23ce911ac71eb22c7256031b9a (diff)
crypto: null - Remove VLA usage of skcipher
In the quest to remove all stack VLA usage from the kernel[1], this replaces struct crypto_skcipher and SKCIPHER_REQUEST_ON_STACK() usage with struct crypto_sync_skcipher and SYNC_SKCIPHER_REQUEST_ON_STACK(), which uses a fixed stack size. [1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto/algif_aead.c')
-rw-r--r--crypto/algif_aead.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/crypto/algif_aead.c b/crypto/algif_aead.c
index c40a8c7ee8ae..eb100a04ce9f 100644
--- a/crypto/algif_aead.c
+++ b/crypto/algif_aead.c
@@ -42,7 +42,7 @@
42 42
43struct aead_tfm { 43struct aead_tfm {
44 struct crypto_aead *aead; 44 struct crypto_aead *aead;
45 struct crypto_skcipher *null_tfm; 45 struct crypto_sync_skcipher *null_tfm;
46}; 46};
47 47
48static inline bool aead_sufficient_data(struct sock *sk) 48static inline bool aead_sufficient_data(struct sock *sk)
@@ -75,13 +75,13 @@ static int aead_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
75 return af_alg_sendmsg(sock, msg, size, ivsize); 75 return af_alg_sendmsg(sock, msg, size, ivsize);
76} 76}
77 77
78static int crypto_aead_copy_sgl(struct crypto_skcipher *null_tfm, 78static int crypto_aead_copy_sgl(struct crypto_sync_skcipher *null_tfm,
79 struct scatterlist *src, 79 struct scatterlist *src,
80 struct scatterlist *dst, unsigned int len) 80 struct scatterlist *dst, unsigned int len)
81{ 81{
82 SKCIPHER_REQUEST_ON_STACK(skreq, null_tfm); 82 SYNC_SKCIPHER_REQUEST_ON_STACK(skreq, null_tfm);
83 83
84 skcipher_request_set_tfm(skreq, null_tfm); 84 skcipher_request_set_sync_tfm(skreq, null_tfm);
85 skcipher_request_set_callback(skreq, CRYPTO_TFM_REQ_MAY_BACKLOG, 85 skcipher_request_set_callback(skreq, CRYPTO_TFM_REQ_MAY_BACKLOG,
86 NULL, NULL); 86 NULL, NULL);
87 skcipher_request_set_crypt(skreq, src, dst, len, NULL); 87 skcipher_request_set_crypt(skreq, src, dst, len, NULL);
@@ -99,7 +99,7 @@ static int _aead_recvmsg(struct socket *sock, struct msghdr *msg,
99 struct af_alg_ctx *ctx = ask->private; 99 struct af_alg_ctx *ctx = ask->private;
100 struct aead_tfm *aeadc = pask->private; 100 struct aead_tfm *aeadc = pask->private;
101 struct crypto_aead *tfm = aeadc->aead; 101 struct crypto_aead *tfm = aeadc->aead;
102 struct crypto_skcipher *null_tfm = aeadc->null_tfm; 102 struct crypto_sync_skcipher *null_tfm = aeadc->null_tfm;
103 unsigned int i, as = crypto_aead_authsize(tfm); 103 unsigned int i, as = crypto_aead_authsize(tfm);
104 struct af_alg_async_req *areq; 104 struct af_alg_async_req *areq;
105 struct af_alg_tsgl *tsgl, *tmp; 105 struct af_alg_tsgl *tsgl, *tmp;
@@ -478,7 +478,7 @@ static void *aead_bind(const char *name, u32 type, u32 mask)
478{ 478{
479 struct aead_tfm *tfm; 479 struct aead_tfm *tfm;
480 struct crypto_aead *aead; 480 struct crypto_aead *aead;
481 struct crypto_skcipher *null_tfm; 481 struct crypto_sync_skcipher *null_tfm;
482 482
483 tfm = kzalloc(sizeof(*tfm), GFP_KERNEL); 483 tfm = kzalloc(sizeof(*tfm), GFP_KERNEL);
484 if (!tfm) 484 if (!tfm)