linux/crypto
Eric Biggers e6f5929864 crypto: user - support incremental algorithm dumps
commit 0ac6b8fb23 upstream.

CRYPTO_MSG_GETALG in NLM_F_DUMP mode sometimes doesn't return all
registered crypto algorithms, because it doesn't support incremental
dumps.  crypto_dump_report() only permits itself to be called once, yet
the netlink subsystem allocates at most ~64 KiB for the skb being dumped
to.  Thus only the first recvmsg() returns data, and it may only include
a subset of the crypto algorithms even if the user buffer passed to
recvmsg() is large enough to hold all of them.

Fix this by using one of the arguments in the netlink_callback structure
to keep track of the current position in the algorithm list.  Then
userspace can do multiple recvmsg() on the socket after sending the dump
request.  This is the way netlink dumps work elsewhere in the kernel;
it's unclear why this was different (probably just an oversight).

Also fix an integer overflow when calculating the dump buffer size hint.

Fixes: a38f7907b9 ("crypto: Add userspace configuration API")
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
[bwh: Backported to 3.16: adjust filename]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2019-04-04 16:13:49 +01:00
..
asymmetric_keys X.509: unpack RSA signatureValue field from BIT STRING 2018-11-20 18:05:27 +00:00
async_tx async_pq_val: fix DMA memory leak 2017-02-23 03:54:09 +00:00
842.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
ablk_helper.c crypto: ablk_helper - Replace memcpy with struct assignment 2013-10-07 14:16:57 +08:00
ablkcipher.c crypto: ablkcipher - fix crash flushing dcache in error path 2018-12-16 22:08:34 +00:00
aead.c crypto: user - fix info leaks in report API 2013-02-19 20:27:03 +08:00
aes_generic.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
af_alg.c crypto: af_alg - fix possible uninit-value in alg_bind() 2018-10-21 08:45:17 +01:00
ahash.c crypto: ahash - Fix early termination in hash walk 2018-10-21 08:45:06 +01:00
algapi.c crypto: algapi - fix NULL dereference in crypto_remove_spawns() 2018-03-03 15:52:13 +00:00
algboss.c crypto: algboss - Hold ref count on larval 2013-06-25 19:15:17 +08:00
algif_hash.c crypto: hash - prevent using keyed hashes without setting key 2018-06-16 22:21:52 +01:00
algif_skcipher.c crypto: algif_skcipher - Fix race condition in skcipher_check_key 2016-02-24 14:41:18 +00:00
ansi_cprng.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
anubis.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
api.c crypto: api - Only abort operations on fatal signal 2015-11-16 11:27:09 +00:00
arc4.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
authenc.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
authencesn.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
blkcipher.c crypto: blkcipher - fix crash flushing dcache in error path 2018-12-16 22:08:34 +00:00
blowfish_common.c crypto: blowfish - split generic and common c code 2011-09-22 21:25:25 +10:00
blowfish_generic.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
camellia_generic.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
cast5_generic.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
cast6_generic.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
cast_common.c crypto: make tables used from assembler __visible 2013-08-14 20:42:03 +10:00
cbc.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
ccm.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
chainiv.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
cipher.c crypto: cipher - Fix checkpatch errors 2010-02-16 20:31:37 +08:00
cmac.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
compress.c crypto: compress - Fix checkpatch errors 2010-02-16 20:31:04 +08:00
crc32.c crypto: hash - annotate algorithms taking optional key 2018-06-16 22:21:51 +01:00
crc32c_generic.c crypto: hash - annotate algorithms taking optional key 2018-06-16 22:21:51 +01:00
crct10dif_common.c crypto: crct10dif - Add fallback for broken initrds 2013-09-12 15:31:34 +10:00
crct10dif_generic.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
cryptd.c crypto: hash - annotate algorithms taking optional key 2018-06-16 22:21:51 +01:00
crypto_null.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
crypto_user.c crypto: user - support incremental algorithm dumps 2019-04-04 16:13:49 +01:00
crypto_wq.c crypto: crypto_wq - Fix late crypto work queue initialization 2014-03-21 21:54:28 +08:00
ctr.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
cts.c crypto: memzero_explicit - make sure to clear out sensitive data 2018-12-16 22:08:08 +00:00
deflate.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
des_generic.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
ecb.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
eseqiv.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
fcrypt.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
fips.c crypto: api - Add fips_enable flag 2008-08-29 15:50:02 +10:00
gcm.c crypto: gcm - wait for crypto op not signal safe 2017-09-15 18:29:48 +01:00
gf128mul.c crypto: gf128mul - fix call to memset() 2011-07-08 17:21:21 +08:00
ghash-generic.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
hash_info.c crypto: provide single place for hash algo information 2013-10-25 17:14:03 -04:00
hmac.c crypto: hmac - require that the underlying hash algorithm is unkeyed 2018-01-01 20:52:12 +00:00
internal.h crypto: algboss - Hold ref count on larval 2013-06-25 19:15:17 +08:00
Kconfig crypto: sha - SHA1 transform x86_64 AVX2 2014-03-21 21:54:30 +08:00
khazad.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
krng.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
lrw.c crypto: lrw - Fix out-of bounds access on counter overflow 2019-02-11 17:53:22 +00:00
lz4.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
lz4hc.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
lzo.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
Makefile crypto: improve gcc optimization flags for serpent and wp512 2017-04-04 22:21:55 +01:00
md4.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
md5.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
memneq.c crypto: memneq - fix for archs without efficient unaligned access 2013-12-09 20:09:12 +08:00
michael_mic.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
pcbc.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
pcompress.c crypto: user - fix info leaks in report API 2013-02-19 20:27:03 +08:00
pcrypt.c pcrypt: use format specifier in kobject_add 2019-04-04 16:13:40 +01:00
proc.c crypto: add module.h to those files that are explicitly using it 2011-10-31 19:31:11 -04:00
ripemd.h [CRYPTO] ripemd: Put all common RIPEMD values in header file 2008-07-10 20:35:12 +08:00
rmd128.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
rmd160.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
rmd256.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
rmd320.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
rng.c crypto: user - fix info leaks in report API 2013-02-19 20:27:03 +08:00
salsa20_generic.c crypto: salsa20 - fix blkcipher_walk API usage 2018-01-01 20:52:11 +00:00
scatterwalk.c crypto: scatterwalk - Fix test in scatterwalk_done 2016-11-20 01:16:53 +00:00
seed.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00
seqiv.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
serpent_generic.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
sha1_generic.c crypto: memzero_explicit - make sure to clear out sensitive data 2018-12-16 22:08:08 +00:00
sha256_generic.c crypto: memzero_explicit - make sure to clear out sensitive data 2018-12-16 22:08:08 +00:00
sha512_generic.c crypto: memzero_explicit - make sure to clear out sensitive data 2018-12-16 22:08:08 +00:00
shash.c crypto: hash - prevent using keyed hashes without setting key 2018-06-16 22:21:52 +01:00
tcrypt.c crypto: testmgr - add aead cbc des, des3_ede tests 2014-05-22 21:03:18 +08:00
tcrypt.h crypto: tcrypt - Added speed tests for AEAD crypto alogrithms in tcrypt test suite 2013-12-20 20:06:25 +08:00
tea.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
testmgr.c crypto: testmgr - add aead cbc des, des3_ede tests 2014-05-22 21:03:18 +08:00
testmgr.h crypto: testmgr - add aead cbc des, des3_ede tests 2014-05-22 21:03:18 +08:00
tgr192.c crypto: memzero_explicit - make sure to clear out sensitive data 2018-12-16 22:08:08 +00:00
twofish_common.c crypto: twofish-x86_64-3way - add lrw support 2011-11-09 11:53:32 +08:00
twofish_generic.c crypto: add missing crypto module aliases 2015-02-04 10:57:50 +00:00
vmac.c crypto: vmac - separate tfm and request context 2018-12-16 22:08:08 +00:00
wp512.c crypto: memzero_explicit - make sure to clear out sensitive data 2018-12-16 22:08:08 +00:00
xcbc.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
xor.c add further __init annotations to crypto/xor.c 2012-10-11 13:42:32 +11:00
xts.c crypto: include crypto- module prefix in template 2015-02-04 10:57:49 +00:00
zlib.c crypto: prefix module autoloading with "crypto-" 2015-02-04 10:57:48 +00:00