diff options
author | Kees Cook <keescook@chromium.org> | 2018-09-18 22:10:51 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2018-09-28 00:46:08 -0400 |
commit | 8d605398425843c7ce3c0e9a0434d832d3bd54cc (patch) | |
tree | 9367982359561def8ee697e06669e2a8a15c99f0 /crypto/algif_aead.c | |
parent | 5c525640ef455b23ce911ac71eb22c7256031b9a (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.c | 12 |
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 | ||
43 | struct aead_tfm { | 43 | struct 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 | ||
48 | static inline bool aead_sufficient_data(struct sock *sk) | 48 | static 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 | ||
78 | static int crypto_aead_copy_sgl(struct crypto_skcipher *null_tfm, | 78 | static 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) |