]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commit - crypto/pcbc.c
crypto: algapi - make crypto_xor() take separate dst and src arguments
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Mon, 24 Jul 2017 10:28:04 +0000 (11:28 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 4 Aug 2017 01:27:15 +0000 (09:27 +0800)
commit45fe93dff2fb58b22de04c729f8447ba0f773d93
tree6f6039696f88fb5461831d4bfbc4e62f059092d5
parenta7c391f04fe3259fb0417d71fec78ae28f25780e
crypto: algapi - make crypto_xor() take separate dst and src arguments

There are quite a number of occurrences in the kernel of the pattern

  if (dst != src)
          memcpy(dst, src, walk.total % AES_BLOCK_SIZE);
  crypto_xor(dst, final, walk.total % AES_BLOCK_SIZE);

or

  crypto_xor(keystream, src, nbytes);
  memcpy(dst, keystream, nbytes);

where crypto_xor() is preceded or followed by a memcpy() invocation
that is only there because crypto_xor() uses its output parameter as
one of the inputs. To avoid having to add new instances of this pattern
in the arm64 code, which will be refactored to implement non-SIMD
fallbacks, add an alternative implementation called crypto_xor_cpy(),
taking separate input and output arguments. This removes the need for
the separate memcpy().

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
14 files changed:
arch/arm/crypto/aes-ce-glue.c
arch/arm/crypto/aes-neonbs-glue.c
arch/arm64/crypto/aes-glue.c
arch/arm64/crypto/aes-neonbs-glue.c
arch/sparc/crypto/aes_glue.c
arch/x86/crypto/aesni-intel_glue.c
arch/x86/crypto/blowfish_glue.c
arch/x86/crypto/cast5_avx_glue.c
arch/x86/crypto/des3_ede_glue.c
crypto/ctr.c
crypto/pcbc.c
drivers/crypto/vmx/aes_ctr.c
drivers/md/dm-crypt.c
include/crypto/algapi.h