linux_dsm_epyc7002/drivers/crypto
Russell King 3d5a2db695 crypto: caam - fix DMA API mapping leak
caamhash contains this weird code:

	src_nents = sg_count(req->src, req->nbytes);
	dma_map_sg(jrdev, req->src, src_nents ? : 1, DMA_TO_DEVICE);
	...
	edesc->src_nents = src_nents;

sg_count() returns zero when sg_nents_for_len() returns zero or one.
This means we don't need to use a hardware scatterlist.  However,
setting src_nents to zero causes problems when we unmap:

	if (edesc->src_nents)
		dma_unmap_sg_chained(dev, req->src, edesc->src_nents,
				     DMA_TO_DEVICE, edesc->chained);

as zero here means that we have no entries to unmap.  This causes us
to leak DMA mappings, where we map one scatterlist entry and then
fail to unmap it.

This can be fixed in two ways: either by writing the number of entries
that were requested of dma_map_sg(), or by reworking the "no SG
required" case.

We adopt the re-work solution here - we replace sg_count() with
sg_nents_for_len(), so src_nents now contains the real number of
scatterlist entries, and we then change the test for using the
hardware scatterlist to src_nents > 1 rather than just non-zero.

This change passes my sshd, openssl tests hashing /bin and tcrypt
tests.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2016-08-09 18:47:23 +08:00
..
amcc crypto4xx: integrate ppc4xx-rng into crypto4xx 2016-04-20 17:50:02 +08:00
caam crypto: caam - fix DMA API mapping leak 2016-08-09 18:47:23 +08:00
ccp crypto: ccp - Enable use of the additional CCP 2016-08-09 18:47:18 +08:00
marvell crypto: marvell - Don't copy IV vectors from the _process op for ciphers 2016-07-29 18:30:17 +08:00
nx crypto: nx - off by one bug in nx_of_update_msc() 2016-07-19 12:01:47 +08:00
qat crypto: qat - make qat_asym_algs.o depend on asn1 headers 2016-07-21 12:19:53 +08:00
qce crypto: qce - Use skcipher for fallback 2016-07-01 23:45:09 +08:00
rockchip
sunxi-ss crypto: sun4i-ss - Replace spinlock_bh by spin_lock_irq{save|restore} 2016-04-05 20:35:53 +08:00
ux500 Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2016-07-21 12:26:55 +08:00
vmx powerpc updates for 4.8 # 1 2016-07-30 21:01:36 -07:00
atmel-aes-regs.h
atmel-aes.c
atmel-sha-regs.h
atmel-sha.c
atmel-tdes-regs.h
atmel-tdes.c
bfin_crc.c crypto: bfin_crc - Simplify use of devm_ioremap_resource 2016-07-05 23:05:24 +08:00
bfin_crc.h
geode-aes.c
geode-aes.h
hifn_795x.c
img-hash.c crypto: img-hash - Fix set_reqsize call 2016-08-09 18:47:23 +08:00
ixp4xx_crypto.c crypto: ixp4xx - Add missing npe_c release in error branches 2016-08-09 18:47:03 +08:00
Kconfig s390/crc32-vx: add crypto API module for optimized CRC-32 algorithms 2016-06-15 16:36:34 +02:00
Makefile crypto: mxc-scc - add basic driver for the MXC SCC 2016-04-15 22:36:35 +08:00
mv_cesa.c
mv_cesa.h
mxc-scc.c crypto: mxc-scc - fix unwinding in mxc_scc_crypto_register() 2016-04-25 19:14:53 +08:00
mxs-dcp.c crypto: mxs-dcp - Use skcipher for fallback 2016-07-01 23:45:08 +08:00
n2_asm.S
n2_core.c crypto: n2 - Remove return statement from void function 2016-04-05 20:35:44 +08:00
n2_core.h
omap-aes.c crypto: omap - Stop using crypto scatterwalk_bytes_sglen 2016-07-18 17:35:48 +08:00
omap-des.c crypto: omap - Stop using crypto scatterwalk_bytes_sglen 2016-07-18 17:35:48 +08:00
omap-sham.c crypto: omap-sham - increase cra_proirity to 400 2016-07-01 23:45:22 +08:00
padlock-aes.c
padlock-sha.c
picoxcell_crypto_regs.h
picoxcell_crypto.c crypto: picoxcell - Use skcipher for fallback 2016-07-01 23:45:09 +08:00
s5p-sss.c crypto: s5p-sss - Use consistent indentation for variables and members 2016-05-31 17:52:30 +08:00
sahara.c crypto: sahara - Use skcipher for fallback 2016-07-01 23:45:10 +08:00
talitos.c crypto: talitos - templates for AEAD using HMAC_SNOOP_NO_AFEU 2016-06-08 16:20:04 +08:00
talitos.h