[GIT PULL] Crypto Update for 5.18

Herbert Xu
2022-03-20T23:42:48Z

Hi Linus:

This update includes the following changes:

API:

- hwrng core now credits for low-quality RNG devices.

Algorithms:

- Optimisations for neon aes on arm/arm64.
- Add accelerated crc32_be on arm64.
- Add ffdheXYZ(dh) templates.
- Disallow hmac keys < 112 bits in FIPS mode.
- Add AVX assembly implementation for sm3 on x86.

Drivers:

- Add missing local_bh_disable calls for crypto_engine callback.
- Ensure BH is disabled in crypto_engine callback path.
- Fix zero length DMA mappings in ccree.
- Add synchronization between mailbox accesses in octeontx2.
- Add Xilinx SHA3 driver.
- Add support for the TDES IP available on sama7g5 SoC in atmel.

The following changes since commit e783362eb54cd99b2cac8b3a9aeac942e6f6ac07:

Linux 5.17-rc1 (2022-01-23 10:12:53 +0200)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git linus

for you to fetch changes up to 0e03b8fd29363f2df44e2a7a176d486de550757a:

crypto: xilinx - Turn SHA into a tristate and allow COMPILE_TEST (2022-03-14 14:45:45 +1200)

----------------------------------------------------------------
Andy Shevchenko (2):
crypto: qat - don't cast parameter in bit operations
crypto: cavium/nitrox - don't cast parameter in bit operations

Ard Biesheuvel (8):
crypto: memneq - avoid implicit unaligned accesses
crypto: arm64/aes-neon-ctr - improve handling of single tail block
crypto: arm/aes-neonbs-ctr - deal with non-multiples of AES block size
crypto: arm64/aes-neonbs-ctr - fallback to plain NEON for final chunk
crypto: arm64/aes-neonbs-xts - use plain NEON for non-power-of-2 input sizes
lib/xor: make xor prototypes more friendly to compiler vectorization
crypto: arm/xor - make vectorized C code Clang-friendly
crypto: crypto_xor - use helpers for unaligned accesses

Claudiu Beznea (7):
hwrng: atmel - add wait for ready support on read
hwrng: atmel - disable trng on failure path
hwrng: atmel - rename enable/disable functions to init/cleanup
hwrng: atmel - move set of TRNG_HALFR in atmel_trng_init()
hwrng: atmel - use __maybe_unused and pm_ptr() for pm ops
hwrng: atmel - add runtime pm support
hwrng: atmel - remove extra line

Colin Ian King (2):
crypto: marvell/octeontx - remove redundant initialization of variable c_size
crypto: sl3516 - remove redundant initializations of pointers in_sg and out_sg

Corentin Labbe (10):
crypto: sun8i-ss - really disable hash on A80
crypto: cavium/nitrox - fix typo on crypto
crypto: rockchip - ECB does not need IV
crypto: cavium/zip - register algorithm only if hardware is present
crypto: sun8i-ss - call finalize with bh disabled
crypto: sun8i-ce - call finalize with bh disabled
crypto: amlogic - call finalize with bh disabled
crypto: gemini - call finalize with bh disabled
crypto: engine - check if BH is disabled during completion
crypto: xilinx: prevent probing on non-xilinx hardware

Dan Carpenter (1):
crypto: qat - fix a signedness bug in get_service_enabled()

Dominik Brodowski (10):
hwrng: core - explicit ordering of initcalls
hwrng: core - read() callback must be called for size of 32 or more bytes
hwrng: core - use rng_fillbuf in add_early_randomness()
hwrng: core - only set cur_rng_set_by_user if it is working
hwrng: core - break out of hwrng_fillfn if current rng is not trusted
hwrng: core - credit entropy for low quality sources of randomness
hwrng: core - do not bother to order list of devices by quality
hwrng: core - start and stop in-kernel rngd in separate function
hwrng: core - use per-rng quality value instead of global setting
hwrng: core - introduce rng_quality sysfs attribute

Dāvis Mosāns (1):
crypto: ccp - ccp_dmaengine_unregister release dma channels

Eric Biggers (5):
crypto: rsa-pkcs1pad - only allow with rsa
crypto: rsa-pkcs1pad - correctly get hash from source scatterlist
crypto: rsa-pkcs1pad - restore signature length check
crypto: rsa-pkcs1pad - fix buffer overread in pkcs1pad_verify_complete()
crypto: rsa-pkcs1pad - use clearer variable names

Geert Uytterhoeven (1):
hwrng: cavium - HW_RANDOM_CAVIUM should depend on ARCH_THUNDER

Gilad Ben-Yossef (1):
crypto: ccree - don't attempt 0 len DMA mappings

Giovanni Cabiddu (5):
crypto: qat - fix access to PFVF interrupt registers for GEN4
crypto: qat - disable registration of algorithms
crypto: qat - remove unneeded assignment
crypto: qat - fix initialization of pfvf cap_msg structures
crypto: qat - fix initialization of pfvf rts_map_msg structures

Harman Kalra (1):
crypto: octeontx2 - add synchronization between mailbox accesses

Harsha (4):
crypto: xilinx - Updated Makefile for xilinx subdirectory
firmware: xilinx: Add ZynqMP SHA API for SHA3 functionality
crypto: xilinx - Add Xilinx SHA3 driver
MAINTAINERS: Add maintainer for Xilinx ZynqMP SHA3 driver

Herbert Xu (6):
crypto: testmgr - Move crypto_simd_disabled_for_test out
crypto: kdf - Select hmac in addition to sha256
crypto: authenc - Fix sleep in atomic context in decrypt_tail
crypto: xts - Add softdep on ecb
crypto: lrw - Add dependency on ecb
crypto: xilinx - Turn SHA into a tristate and allow COMPILE_TEST

Jianglei Nie (1):
crypto: ccree - Fix use after free in cc_cipher_exit()

Jiapeng Chong (2):
crypto: marvell/octeontx - Use swap() instead of open coding it
crypto: dh - Remove the unused function dh_safe_prime_dh_alg()

Julia Lawall (1):
crypto: ux500 - use GFP_KERNEL

Kai Ye (14):
Documentation: use the tabs on all acc documentation
Documentation: update debugfs doc for Hisilicon SEC
Documentation: update debugfs doc for Hisilicon ZIP
Documentation: update debugfs doc for Hisilicon HPRE
crypto: hisilicon/sec - fixup icv checking enabled on Kunpeng 930
crypto: hisilicon/sec - add some comments for soft fallback
crypto: hisilicon/sec - fix the max length of AAD for the CCM mode
crypto: hisilicon/sec - fix the CTR mode BD configuration
crypto: hisilicon/sec - use the correct print format
crypto: hisilicon/qm - cleanup warning in qm_vf_read_qos
crypto: hisilicon/sec - add the register configuration for HW V3
crypto: hisilicon/sec - not need to enable sm4 extra mode at HW V3
crypto: hisilicon/sec - fix the aead software fallback for engine
crypto: hisilicon/qm - fix memset during queues clearing

Kavyasree Kotagiri (1):
crypto: atmel - add support for AES and SHA IPs available on lan966x SoC

Kevin Bracey (4):
lib/crc32: remove unneeded casts
lib/crc32: Make crc32_be weak for arch override
lib/crc32test: correct printed bytes count
arm64: lib: accelerate crc32_be

Longfang Liu (1):
MAINTAINERS: update HPRE/SEC2/TRNG driver maintainers list

Miaoqian Lin (1):
hwrng: nomadik - Change clk_disable to clk_disable_unprepare

Minghao Chi (1):
crypto: ccp - remove redundant ret variable

Nathan Huckleberry (1):
crypto: x86 - Convert to SPDX identifier

Nicolai Stange (15):
crypto: kpp - provide support for KPP template instances
crypto: kpp - provide support for KPP spawns
crypto: dh - remove struct dh's ->q member
crypto: dh - constify struct dh's pointer members
crypto: dh - split out deserialization code from crypto_dh_decode()
crypto: dh - introduce common code for built-in safe-prime group support
crypto: dh - implement ffdheXYZ(dh) templates
crypto: testmgr - add known answer tests for ffdheXYZ(dh) templates
crypto: dh - implement private key generation primitive for ffdheXYZ(dh)
crypto: testmgr - add keygen tests for ffdheXYZ(dh) templates
crypto: dh - allow for passing NULL to the ffdheXYZ(dh)s' ->set_secret()
crypto: api - allow algs only in specific constructions in FIPS mode
crypto: dh - disallow plain "dh" usage in FIPS mode
lib/mpi: export mpi_rshift
crypto: dh - calculate Q from P for the full public key verification

Peter Gonda (1):
crypto: ccp - Ensure psp_ret is always init'd in __sev_platform_init_locked()

Petr Vorel (1):
crypto: vmx - add missing dependencies

Rikard Falkeborn (3):
crypto: omap-aes - Constify static attribute_group
crypto: omap-sham - Constify static attribute_group
crypto: nx - Constify static attribute_group structs

Shijith Thotton (2):
crypto: octeontx2 - select CONFIG_NET_DEVLINK
crypto: octeontx2 - remove CONFIG_DM_CRYPT check

Srujana Challa (3):
crypto: octeontx2 - CN10K CPT to RNM workaround
crypto: octeontx2 - disable DMA black hole on an DMA fault
crypto: octeontx2 - increase CPT HW instruction queue length

Stephan Müller (2):
crypto: hmac - add fips_skip support
crypto: hmac - disallow keys < 112 bits in FIPS mode

Tianjia Zhang (7):
crypto: sm3 - create SM3 stand-alone library
crypto: arm64/sm3-ce - make dependent on sm3 library
crypto: sm2 - make dependent on sm3 library
crypto: sm3 - make dependent on sm3 library
crypto: x86/sm3 - add AVX assembly implementation
crypto: tcrypt - add asynchronous speed test for SM3
crypto: tcrypt - remove all multibuffer ahash tests

Tom Rix (2):
crypto: cleanup comments
crypto: arm64 - cleanup comments

Tomas Paukrt (1):
crypto: mxs-dcp - Fix scatterlist processing

Tudor Ambarus (1):
crypto: atmel-tdes - Add support for the TDES IP available on sama7g5 SoC

Wan Jiabing (1):
hwrng: cavium - fix NULL but dereferenced coccicheck error

Wojciech Ziemba (3):
crypto: qat - add misc workqueue
crypto: qat - move and rename GEN4 error register definitions
crypto: qat - enable power management for QAT GEN4

Yang Yingliang (1):
crypto: octeontx2 - fix missing unlock

YueHaibing (2):
crypto: x86/blowfish - Remove unused inline functions
crypto: x86/des3 - Remove unused inline function des3_ede_enc_blk_3way()

Yury Norov (1):
padata: replace cpumask_weight with cpumask_empty in padata.c

Documentation/ABI/testing/debugfs-hisi-hpre | 178 +--
Documentation/ABI/testing/debugfs-hisi-sec | 146 +-
Documentation/ABI/testing/debugfs-hisi-zip | 146 +-
MAINTAINERS | 11 +-
arch/alpha/include/asm/xor.h | 53 +-
arch/arm/crypto/aes-neonbs-core.S | 105 +-
arch/arm/crypto/aes-neonbs-glue.c | 35 +-
arch/arm/include/asm/xor.h | 42 +-
arch/arm/lib/xor-neon.c | 12 +-
arch/arm64/crypto/Kconfig | 2 +-
arch/arm64/crypto/aes-glue.c | 22 +-
arch/arm64/crypto/aes-modes.S | 18 +-
arch/arm64/crypto/aes-neonbs-core.S | 264 +---
arch/arm64/crypto/aes-neonbs-glue.c | 97 +-
arch/arm64/crypto/sha3-ce-glue.c | 2 +-
arch/arm64/crypto/sha512-armv8.pl | 2 +-
arch/arm64/crypto/sha512-ce-glue.c | 2 +-
arch/arm64/crypto/sm3-ce-glue.c | 28 +-
arch/arm64/include/asm/xor.h | 21 +-
arch/arm64/lib/crc32.S | 87 +-
arch/arm64/lib/xor-neon.c | 46 +-
arch/ia64/include/asm/xor.h | 21 +-
arch/powerpc/include/asm/xor_altivec.h | 25 +-
arch/powerpc/lib/xor_vmx.c | 28 +-
arch/powerpc/lib/xor_vmx.h | 27 +-
arch/powerpc/lib/xor_vmx_glue.c | 32 +-
arch/s390/lib/xor.c | 21 +-
arch/sparc/include/asm/xor_32.h | 21 +-
arch/sparc/include/asm/xor_64.h | 42 +-
arch/x86/crypto/Makefile | 3 +
arch/x86/crypto/aes_ctrby8_avx-x86_64.S | 63 +-
arch/x86/crypto/blowfish_glue.c | 12 -
arch/x86/crypto/des3_ede_glue.c | 8 -
arch/x86/crypto/sm3-avx-asm_64.S | 517 +++++++
arch/x86/crypto/sm3_avx_glue.c | 134 ++
arch/x86/include/asm/xor.h | 42 +-
arch/x86/include/asm/xor_32.h | 42 +-
arch/x86/include/asm/xor_avx.h | 21 +-
crypto/Kconfig | 25 +-
crypto/algapi.c | 48 +-
crypto/api.c | 19 +-
crypto/asymmetric_keys/signature.c | 2 +-
crypto/asymmetric_keys/x509_parser.h | 2 +-
crypto/async_tx/async_xor.c | 8 +-
crypto/async_tx/raid6test.c | 4 +-
crypto/authenc.c | 2 +-
crypto/cfb.c | 2 +-
crypto/crypto_engine.c | 1 +
crypto/dh.c | 681 ++++++++-
crypto/dh_helper.c | 42 +-
crypto/hmac.c | 4 +
crypto/kpp.c | 29 +
crypto/lrw.c | 1 +
crypto/memneq.c | 22 +-
crypto/rsa-pkcs1pad.c | 38 +-
crypto/sm2.c | 40 +-
crypto/sm3_generic.c | 142 +-
crypto/tcrypt.c | 226 +--
crypto/testmgr.c | 67 +-
crypto/testmgr.h | 1456 +++++++++++++++++++-
crypto/xts.c | 1 +
drivers/char/hw_random/Kconfig | 2 +-
drivers/char/hw_random/atmel-rng.c | 148 +-
drivers/char/hw_random/cavium-rng-vf.c | 2 +-
drivers/char/hw_random/core.c | 161 ++-
drivers/char/hw_random/nomadik-rng.c | 4 +-
drivers/crypto/Kconfig | 10 +
drivers/crypto/Makefile | 2 +-
.../crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c | 3 +
drivers/crypto/allwinner/sun8i-ce/sun8i-ce-hash.c | 3 +
.../crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c | 3 +
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 2 +
drivers/crypto/allwinner/sun8i-ss/sun8i-ss-hash.c | 3 +
drivers/crypto/amlogic/amlogic-gxl-cipher.c | 2 +
drivers/crypto/atmel-aes.c | 1 +
drivers/crypto/atmel-sha.c | 1 +
drivers/crypto/atmel-tdes.c | 1 +
drivers/crypto/cavium/nitrox/nitrox_mbx.c | 8 +-
drivers/crypto/cavium/nitrox/nitrox_req.h | 2 +-
drivers/crypto/cavium/zip/zip_main.c | 83 +-
drivers/crypto/ccp/ccp-crypto-aes.c | 5 +-
drivers/crypto/ccp/ccp-dmaengine.c | 16 +
drivers/crypto/ccp/sev-dev.c | 2 +-
drivers/crypto/ccree/cc_buffer_mgr.c | 7 +
drivers/crypto/ccree/cc_cipher.c | 2 +-
drivers/crypto/gemini/sl3516-ce-cipher.c | 6 +-
drivers/crypto/hisilicon/qm.c | 4 +-
drivers/crypto/hisilicon/sec2/sec_crypto.c | 43 +-
drivers/crypto/hisilicon/sec2/sec_crypto.h | 6 +-
drivers/crypto/hisilicon/sec2/sec_main.c | 59 +-
drivers/crypto/marvell/Kconfig | 1 +
drivers/crypto/marvell/octeontx/otx_cptvf_algs.c | 5 +-
drivers/crypto/marvell/octeontx/otx_cptvf_main.c | 1 -
drivers/crypto/marvell/octeontx2/otx2_cpt_common.h | 1 +
.../marvell/octeontx2/otx2_cpt_mbox_common.c | 14 +
drivers/crypto/marvell/octeontx2/otx2_cptlf.h | 19 +-
drivers/crypto/marvell/octeontx2/otx2_cptpf.h | 1 +
drivers/crypto/marvell/octeontx2/otx2_cptpf_main.c | 25 +-
drivers/crypto/marvell/octeontx2/otx2_cptpf_mbox.c | 27 +-
.../crypto/marvell/octeontx2/otx2_cptpf_ucode.c | 56 +-
drivers/crypto/marvell/octeontx2/otx2_cptvf_algs.c | 17 +-
drivers/crypto/mxs-dcp.c | 2 +-
drivers/crypto/nx/nx-common-pseries.c | 4 +-
drivers/crypto/omap-aes.c | 2 +-
drivers/crypto/omap-sham.c | 2 +-
drivers/crypto/qat/qat_4xxx/adf_4xxx_hw_data.c | 23 +-
drivers/crypto/qat/qat_4xxx/adf_4xxx_hw_data.h | 24 -
drivers/crypto/qat/qat_4xxx/adf_drv.c | 7 +
drivers/crypto/qat/qat_common/Makefile | 1 +
drivers/crypto/qat/qat_common/adf_accel_devices.h | 2 +
drivers/crypto/qat/qat_common/adf_admin.c | 37 +
drivers/crypto/qat/qat_common/adf_common_drv.h | 4 +
drivers/crypto/qat/qat_common/adf_ctl_drv.c | 6 +
drivers/crypto/qat/qat_common/adf_gen4_hw_data.h | 14 +
drivers/crypto/qat/qat_common/adf_gen4_pfvf.c | 42 +-
drivers/crypto/qat/qat_common/adf_gen4_pm.c | 137 ++
drivers/crypto/qat/qat_common/adf_gen4_pm.h | 44 +
drivers/crypto/qat/qat_common/adf_init.c | 6 +
drivers/crypto/qat/qat_common/adf_isr.c | 42 +
drivers/crypto/qat/qat_common/adf_pfvf_vf_msg.c | 4 +-
.../crypto/qat/qat_common/icp_qat_fw_init_admin.h | 1 +
drivers/crypto/qat/qat_common/qat_crypto.c | 7 +
drivers/crypto/qat/qat_common/qat_uclo.c | 9 +-
drivers/crypto/rockchip/rk3288_crypto_skcipher.c | 1 -
drivers/crypto/ux500/cryp/cryp_core.c | 2 +-
drivers/crypto/ux500/hash/hash_core.c | 2 +-
drivers/crypto/vmx/Kconfig | 4 +
drivers/crypto/xilinx/Makefile | 1 +
drivers/crypto/xilinx/zynqmp-sha.c | 264 ++++
drivers/firmware/xilinx/zynqmp.c | 26 +
.../net/ethernet/marvell/octeontx2/af/rvu_cpt.c | 1 +
include/asm-generic/xor.h | 84 +-
include/crypto/algapi.h | 10 +-
include/crypto/dh.h | 26 +-
include/crypto/internal/kpp.h | 158 +++
include/crypto/sm3.h | 34 +-
include/linux/crypto.h | 9 +
include/linux/firmware/xlnx-zynqmp.h | 8 +
include/linux/raid/xor.h | 21 +-
kernel/padata.c | 2 +-
lib/crc32.c | 14 +-
lib/crc32test.c | 2 +-
lib/crypto/Kconfig | 3 +
lib/crypto/Makefile | 3 +
lib/crypto/sm3.c | 246 ++++
lib/mpi/mpi-bit.c | 1 +
security/keys/dh.c | 2 +-
147 files changed, 5673 insertions(+), 1669 deletions(-)
create mode 100644 arch/x86/crypto/sm3-avx-asm_64.S
create mode 100644 arch/x86/crypto/sm3_avx_glue.c
create mode 100644 drivers/crypto/qat/qat_common/adf_gen4_pm.c
create mode 100644 drivers/crypto/qat/qat_common/adf_gen4_pm.h
create mode 100644 drivers/crypto/xilinx/zynqmp-sha.c
create mode 100644 lib/crypto/sm3.c

Thanks,
--
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt