crypto: api - Increase MAX_ALGAPI_ALIGNMASK to 127
Previously we limited the maximum alignment mask to 63. This is mostly due to stack usage for shash. This patch introduces a separate limit for shash algorithms and increases the general limit to 127 which is the value that we need for DMA allocations on arm64. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
12658ac5e6
commit
1c79957197
|
@ -18,6 +18,8 @@
|
|||
|
||||
#include "internal.h"
|
||||
|
||||
#define MAX_SHASH_ALIGNMASK 63
|
||||
|
||||
static const struct crypto_type crypto_shash_type;
|
||||
|
||||
int shash_no_setkey(struct crypto_shash *tfm, const u8 *key,
|
||||
|
@ -88,7 +90,7 @@ static int shash_update_unaligned(struct shash_desc *desc, const u8 *data,
|
|||
* We cannot count on __aligned() working for large values:
|
||||
* https://patchwork.kernel.org/patch/9507697/
|
||||
*/
|
||||
u8 ubuf[MAX_ALGAPI_ALIGNMASK * 2];
|
||||
u8 ubuf[MAX_SHASH_ALIGNMASK * 2];
|
||||
u8 *buf = PTR_ALIGN(&ubuf[0], alignmask + 1);
|
||||
int err;
|
||||
|
||||
|
@ -130,7 +132,7 @@ static int shash_final_unaligned(struct shash_desc *desc, u8 *out)
|
|||
* We cannot count on __aligned() working for large values:
|
||||
* https://patchwork.kernel.org/patch/9507697/
|
||||
*/
|
||||
u8 ubuf[MAX_ALGAPI_ALIGNMASK + HASH_MAX_DIGESTSIZE];
|
||||
u8 ubuf[MAX_SHASH_ALIGNMASK + HASH_MAX_DIGESTSIZE];
|
||||
u8 *buf = PTR_ALIGN(&ubuf[0], alignmask + 1);
|
||||
int err;
|
||||
|
||||
|
@ -524,6 +526,9 @@ static int shash_prepare_alg(struct shash_alg *alg)
|
|||
alg->statesize > HASH_MAX_STATESIZE)
|
||||
return -EINVAL;
|
||||
|
||||
if (base->cra_alignmask > MAX_SHASH_ALIGNMASK)
|
||||
return -EINVAL;
|
||||
|
||||
if ((alg->export && !alg->import) || (alg->import && !alg->export))
|
||||
return -EINVAL;
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
* algs and architectures. Ciphers have a lower maximum size.
|
||||
*/
|
||||
#define MAX_ALGAPI_BLOCKSIZE 160
|
||||
#define MAX_ALGAPI_ALIGNMASK 63
|
||||
#define MAX_ALGAPI_ALIGNMASK 127
|
||||
#define MAX_CIPHER_BLOCKSIZE 16
|
||||
#define MAX_CIPHER_ALIGNMASK 15
|
||||
|
||||
|
|
Loading…
Reference in New Issue