Arnd Bergmann
532f419cde
crypto: stm32 - Try to fix hash padding
...
gcc warns that the length for the extra unaligned data in the hash
function may be used unaligned. In theory this could happen if
we pass a zero-length sg_list, or if sg_is_last() was never true:
In file included from drivers/crypto/stm32/stm32-hash.c:23:
drivers/crypto/stm32/stm32-hash.c: In function 'stm32_hash_one_request':
include/uapi/linux/kernel.h:12:49: error: 'ncp' may be used uninitialized in this function [-Werror=maybe-uninitialized]
#define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
Neither of these can happen in practice, so the warning is harmless.
However while trying to suppress the warning, I noticed multiple
problems with that code:
- On big-endian kernels, we byte-swap the data like we do for
register accesses, however this is a data stream and almost
certainly needs to use a single writesl() instead of series
of writel() to give the correct hash.
- If the length is not a multiple of four bytes, we skip the
last word entirely, since we write the truncated length
using stm32_hash_set_nblw().
- If we change the code to round the length up rather than
down, the last bytes contain stale data, so it needs some
form of padding.
This tries to address all four problems, by correctly
initializing the length to zero, using endian-safe copy
functions, adding zero-padding and passing the padded length.
I have done no testing on this patch, so please review
carefully and if possible test with an unaligned length
and big-endian kernel builds.
Fixes: 8a1012d3f2 ("crypto: stm32 - Support for STM32 HASH module")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2017-10-07 12:04:31 +08:00
..
amcc
crypto: crypto4xx - fix an error code
2017-06-20 11:21:14 +08:00
axis
crypto: axis - hide an unused variable
2017-09-22 17:38:19 +08:00
bcm
crypto: brcm - Support more FlexRM rings than SPU engines.
2017-08-03 13:52:43 +08:00
caam
crypto: caam - fix LS1021A support on ARMv7 multiplatform kernel
2017-09-20 17:42:42 +08:00
cavium
crypto: cavium/nitrox - Fix an error handling path in 'nitrox_probe()'
2017-08-22 14:54:55 +08:00
ccp
dmaengine updates for 4.14-rc1
2017-09-07 14:03:05 -07:00
chelsio
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
2017-07-14 22:49:50 -07:00
inside-secure
crypto: inside-secure - fix gcc-4.9 warnings
2017-09-20 17:42:41 +08:00
marvell
crypto: marvell - Use IPAD/OPAD constant
2017-05-23 12:52:07 +08:00
mediatek
crypto: mediatek - fix error return code in mtk_crypto_probe()
2017-07-18 17:50:54 +08:00
nx
crypto/nx: Add P9 NX support for 842 compression engine
2017-09-01 16:42:51 +10:00
qat
crypto: qat - fix spelling mistake: "runing" -> "running"
2017-07-18 17:50:51 +08:00
qce
rockchip
crypto: rockchip - Don't dequeue the request when device is busy
2017-08-22 14:54:54 +08:00
stm32
crypto: stm32 - Try to fix hash padding
2017-10-07 12:04:31 +08:00
sunxi-ss
crypto: sun4i-ss - support the Security System PRNG
2017-07-18 17:50:55 +08:00
ux500
scripts/spelling.txt: add "disble(d)" pattern and fix typo instances
2017-03-09 17:01:09 -08:00
virtio
crypto: virtio - Refacotor virtio_crypto driver for new virito crypto services
2017-07-18 17:50:51 +08:00
vmx
crypto: algapi - make crypto_xor() take separate dst and src arguments
2017-08-04 09:27:15 +08:00
atmel-aes-regs.h
crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes
2017-02-03 18:16:14 +08:00
atmel-aes.c
crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes
2017-02-03 18:16:14 +08:00
atmel-authenc.h
crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes
2017-02-03 18:16:14 +08:00
atmel-ecc.c
crypto: atmel-ecc - fix signed integer to u8 assignment
2017-08-03 13:47:23 +08:00
atmel-ecc.h
crypto: atmel-ecc - introduce Microchip / Atmel ECC driver
2017-07-18 17:50:58 +08:00
atmel-sha-regs.h
crypto: atmel-authenc - add support to authenc(hmac(shaX), Y(aes)) modes
2017-02-03 18:16:14 +08:00
atmel-sha.c
crypto: atmel-sha - remove unnecessary static in atmel_sha_remove()
2017-08-03 13:47:16 +08:00
atmel-tdes-regs.h
atmel-tdes.c
crypto: atmel-tdes - remove unnecessary static in atmel_tdes_remove()
2017-08-03 13:47:18 +08:00
bfin_crc.c
crypto: bfin_crc - Fix format printing warning
2016-12-27 17:50:51 +08:00
bfin_crc.h
crypto: bfin_crc - Remove unneeded linux/miscdevice.h include
2016-12-27 17:50:51 +08:00
exynos-rng.c
crypto: exynos - Add new Exynos RNG driver
2017-04-21 20:30:46 +08:00
geode-aes.c
crypto: geode-aes - fixed coding style warnings and error
2017-07-18 18:15:57 +08:00
geode-aes.h
hifn_795x.c
img-hash.c
crypto: img-hash - remove unnecessary static in img_hash_remove()
2017-08-03 13:47:18 +08:00
ixp4xx_crypto.c
crypto: ixp4xx - Fix error handling path in 'aead_perform()'
2017-08-09 20:01:33 +08:00
Kconfig
crypto: axis - add ARTPEC-6/7 crypto accelerator driver
2017-08-22 14:54:52 +08:00
Makefile
crypto: axis - add ARTPEC-6/7 crypto accelerator driver
2017-08-22 14:54:52 +08:00
mv_cesa.c
crypto: mv_cesa - Use IPAD/OPAD constant
2017-05-23 12:52:08 +08:00
mv_cesa.h
mxc-scc.c
crypto: mxc-scc - fix error code in mxc_scc_probe()
2017-07-18 17:50:54 +08:00
mxs-dcp.c
crypto: mxs-dcp - print error message on platform_get_irq failure
2017-07-18 17:50:54 +08:00
n2_asm.S
n2_core.c
crypto: n2 - Convert to using %pOF instead of full_name
2017-08-03 13:47:15 +08:00
n2_core.h
omap-aes-gcm.c
crypto: omap-aes - fix spelling mistake "Encryptio" -> "Encryption"
2017-06-20 11:21:29 +08:00
omap-aes.c
crypto: omap-aes - fix error return code in omap_aes_probe()
2017-07-18 17:50:55 +08:00
omap-aes.h
crypto: omap-aes - Add support for GCM mode
2017-06-10 12:04:19 +08:00
omap-crypto.c
crypto: omap - add base support library for common routines
2017-06-10 12:04:15 +08:00
omap-crypto.h
crypto: omap - add base support library for common routines
2017-06-10 12:04:15 +08:00
omap-des.c
crypto: omap-des - fix error return code in omap_des_probe()
2017-07-18 17:50:55 +08:00
omap-sham.c
crypto: omap-sham - remove unnecessary static in omap_sham_remove()
2017-08-03 13:47:15 +08:00
padlock-aes.c
x86/fpu: Remove irq_ts_save() and irq_ts_restore()
2016-11-01 07:47:54 +01:00
padlock-sha.c
x86/fpu: Remove irq_ts_save() and irq_ts_restore()
2016-11-01 07:47:54 +01:00
picoxcell_crypto.c
crypto: picoxcell - Remove spacc_is_compatible() wrapper function
2017-01-13 00:24:41 +08:00
picoxcell_crypto_regs.h
s5p-sss.c
crypto: s5p-sss - Document the struct s5p_aes_dev
2017-03-24 22:03:00 +08:00
sahara.c
crypto: sahara - constify platform_device_id
2017-08-22 14:54:53 +08:00
talitos.c
crypto: talitos - Don't provide setkey for non hmac hashing algs.
2017-09-20 17:42:40 +08:00
talitos.h