Revert "crypto - shash: reduce minimum alignment of shash_desc structure"

This reverts commit 078170924d which is
commit 660d2062190db131d2feaf19914e90f868fe285c uptream.

It messes with the ABI and doesn't fix anything specific, so leave it
out for now.

Bug: 161946584
Signed-off-by: Ard Biesheuvel <ardb@google.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I1a0716fdbdc2e550f2a80d742585bd7100776f4e
This commit is contained in:
Greg Kroah-Hartman 2021-03-09 13:51:12 +01:00
commit 1b0760a0e5
2 changed files with 7 additions and 10 deletions

View file

@ -141,7 +141,7 @@ struct ahash_alg {
struct shash_desc {
struct crypto_shash *tfm;
void *__ctx[] __aligned(ARCH_SLAB_MINALIGN);
void *__ctx[] CRYPTO_MINALIGN_ATTR;
};
#define HASH_MAX_DIGESTSIZE 64
@ -154,9 +154,9 @@ struct shash_desc {
#define HASH_MAX_STATESIZE 512
#define SHASH_DESC_ON_STACK(shash, ctx) \
char __##shash##_desc[sizeof(struct shash_desc) + HASH_MAX_DESCSIZE] \
__aligned(__alignof__(struct shash_desc)); \
#define SHASH_DESC_ON_STACK(shash, ctx) \
char __##shash##_desc[sizeof(struct shash_desc) + \
HASH_MAX_DESCSIZE] CRYPTO_MINALIGN_ATTR; \
struct shash_desc *shash = (struct shash_desc *)__##shash##_desc
/**

View file

@ -130,12 +130,9 @@
* The macro CRYPTO_MINALIGN_ATTR (along with the void * type in the actual
* declaration) is used to ensure that the crypto_tfm context structure is
* aligned correctly for the given architecture so that there are no alignment
* faults for C data types. On architectures that support non-cache coherent
* DMA, such as ARM or arm64, it also takes into account the minimal alignment
* that is required to ensure that the context struct member does not share any
* cachelines with the rest of the struct. This is needed to ensure that cache
* maintenance for non-coherent DMA (cache invalidation in particular) does not
* affect data that may be accessed by the CPU concurrently.
* faults for C data types. In particular, this is required on platforms such
* as arm where pointers are 32-bit aligned but there are data types such as
* u64 which require 64-bit alignment.
*/
#define CRYPTO_MINALIGN ARCH_KMALLOC_MINALIGN