linux-uconsole/drivers/crypto/caam
Aymen Sghaier 9107b2f434 crypto: caam - fix zero-length buffer DMA mapping
commit 04e6d25c5b upstream.

Recent changes - probably DMA API related (generic and/or arm64-specific) -
exposed a case where driver maps a zero-length buffer:
ahash_init()->ahash_update()->ahash_final() with a zero-length string to
hash

kernel BUG at kernel/dma/swiotlb.c:475!
Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
Modules linked in:
CPU: 2 PID: 1823 Comm: cryptomgr_test Not tainted 4.20.0-rc1-00108-g00c9fe37a7f2 #1
Hardware name: LS1046A RDB Board (DT)
pstate: 80000005 (Nzcv daif -PAN -UAO)
pc : swiotlb_tbl_map_single+0x170/0x2b8
lr : swiotlb_map_page+0x134/0x1f8
sp : ffff00000f79b8f0
x29: ffff00000f79b8f0 x28: 0000000000000000
x27: ffff0000093d0000 x26: 0000000000000000
x25: 00000000001f3ffe x24: 0000000000200000
x23: 0000000000000000 x22: 00000009f2c538c0
x21: ffff800970aeb410 x20: 0000000000000001
x19: ffff800970aeb410 x18: 0000000000000007
x17: 000000000000000e x16: 0000000000000001
x15: 0000000000000019 x14: c32cb8218a167fe8
x13: ffffffff00000000 x12: ffff80097fdae348
x11: 0000800976bca000 x10: 0000000000000010
x9 : 0000000000000000 x8 : ffff0000091fd6c8
x7 : 0000000000000000 x6 : 00000009f2c538bf
x5 : 0000000000000000 x4 : 0000000000000001
x3 : 0000000000000000 x2 : 00000009f2c538c0
x1 : 00000000f9fff000 x0 : 0000000000000000
Process cryptomgr_test (pid: 1823, stack limit = 0x(____ptrval____))
Call trace:
 swiotlb_tbl_map_single+0x170/0x2b8
 swiotlb_map_page+0x134/0x1f8
 ahash_final_no_ctx+0xc4/0x6cc
 ahash_final+0x10/0x18
 crypto_ahash_op+0x30/0x84
 crypto_ahash_final+0x14/0x1c
 __test_hash+0x574/0xe0c
 test_hash+0x28/0x80
 __alg_test_hash+0x84/0xd0
 alg_test_hash+0x78/0x144
 alg_test.part.30+0x12c/0x2b4
 alg_test+0x3c/0x68
 cryptomgr_test+0x44/0x4c
 kthread+0xfc/0x128
 ret_from_fork+0x10/0x18
Code: d34bfc18 2a1a03f7 1a9f8694 35fff89a (d4210000)

Cc: <stable@vger.kernel.org>
Signed-off-by: Aymen Sghaier <aymen.sghaier@nxp.com>
Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-01-22 21:40:31 +01:00
..
caamalg.c crypto: caam/jr - fix ablkcipher_edesc pointer arithmetic 2018-09-21 13:04:46 +08:00
caamalg_desc.c crypto: caam - fix rfc4543 descriptors 2018-05-31 00:13:46 +08:00
caamalg_desc.h crypto: caam - prepare for gcm(aes) support over QI interface 2018-02-15 23:26:53 +08:00
caamalg_qi.c crypto: caam/qi - fix error path in xts setkey 2018-08-25 19:50:41 +08:00
caamhash.c crypto: caam - fix zero-length buffer DMA mapping 2019-01-22 21:40:31 +01:00
caampkc.c crypto: caam - fix DMA mapping direction for RSA forms 2 & 3 2018-08-25 19:50:41 +08:00
caampkc.h crypto: caam - strip input zeros from RSA input buffer 2018-04-21 00:59:03 +08:00
caamrng.c crypto: caam - clean-up in caam_init_rng() 2017-07-18 18:16:07 +08:00
compat.h Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2017-11-14 10:52:09 -08:00
ctrl.c crypto: caam - fix MC firmware detection 2018-05-31 00:13:46 +08:00
ctrl.h crypto: caam - staticize caam_get_era() 2018-04-21 00:58:36 +08:00
desc.h crypto: caam - add Derived Key Protocol (DKP) support 2017-12-28 17:56:48 +11:00
desc_constr.h crypto: caam - add Derived Key Protocol (DKP) support 2017-12-28 17:56:48 +11:00
error.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
error.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
intern.h crypto: caam - fix MC firmware detection 2018-05-31 00:13:46 +08:00
jr.c crypto: caam/jr - fix descriptor DMA unmapping 2018-08-25 19:50:40 +08:00
jr.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig crypto: caam - fix LS1021A support on ARMv7 multiplatform kernel 2017-09-20 17:42:42 +08:00
key_gen.c crypto: caam - add Derived Key Protocol (DKP) support 2017-12-28 17:56:48 +11:00
key_gen.h crypto: caam - add Derived Key Protocol (DKP) support 2017-12-28 17:56:48 +11:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pdb.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
pkc_desc.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
qi.c crypto: caam/qi - fix warning in init_cgr() 2018-05-31 00:13:47 +08:00
qi.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
regs.h crypto: caam - fix implicit casts in endianness helpers 2018-11-13 11:08:36 -08:00
sg_sw_qm.h crypto: caam/qi - add ablkcipher and authenc algorithms 2017-03-24 22:02:59 +08:00
sg_sw_qm2.h staging: fsl-mc: Move DPIO from staging to drivers/soc/fsl 2018-07-24 16:18:55 -05:00
sg_sw_sec4.h staging: fsl-mc: Move DPIO from staging to drivers/soc/fsl 2018-07-24 16:18:55 -05:00