android_kernel_samsung_a7y1.../crypto
Eric Biggers 84a6ad9da7 crypto: user - support incremental algorithm dumps
[ Upstream commit 0ac6b8fb23c724b015d9ca70a89126e8d1563166 ]

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: a38f7907b926 ("crypto: Add userspace configuration API")
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-04-07 12:41:19 +02:00
..
asymmetric_keys A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
async_tx A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
842.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ablk_helper.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ablkcipher.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
aead.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
aes_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
af_alg.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ahash.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
akcipher.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
algapi.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
algboss.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
algif_aead.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
algif_hash.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
algif_rng.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
algif_skcipher.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ansi_cprng.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
anubis.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
api.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
arc4.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
authenc.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
authencesn.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
blkcipher.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
blowfish_common.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
blowfish_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
camellia_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cast_common.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cast5_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cast6_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cbc.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ccm.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
chacha20_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
chacha20poly1305.c crypto: chacha20poly1305 - set cra_name correctly 2020-04-06 18:12:51 +02:00
chainiv.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cipher.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cmac.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
compress.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
crc32.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
crc32c_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
crct10dif_common.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
crct10dif_generic.c crypto: crct10dif-generic - fix use via crypto_shash_digest() 2020-04-06 18:12:14 +02:00
cryptd.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
crypto_null.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
crypto_user.c crypto: user - support incremental algorithm dumps 2020-04-07 12:41:19 +02:00
crypto_wq.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ctr.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
cts.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
deflate.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
des_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
drbg.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ecb.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
echainiv.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
eseqiv.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
fcrypt.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
fips.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
gcm.c crypto: gcm - fix incompatibility between "gcm" and "gcm_base" 2020-04-06 18:12:49 +02:00
gf128mul.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ghash-generic.c crypto: ghash - fix unaligned memory access in ghash_setkey() 2020-04-06 19:55:45 +02:00
hash_info.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
heh.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
hmac.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
internal.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
jitterentropy-kcapi.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
jitterentropy.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
Kconfig A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
keywrap.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
khazad.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
lrw.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
lz4.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
lz4hc.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
lzo.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
Makefile A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
mcryptd.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
md4.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
md5.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
memneq.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
michael_mic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
pcbc.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
pcompress.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
pcrypt.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
poly1305_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
proc.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
ripemd.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
rmd128.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
rmd160.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
rmd256.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
rmd320.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
rng.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
rsa_helper.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
rsa.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
rsaprivkey.asn1 A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
rsapubkey.asn1 A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
salsa20_generic.c crypto: salsa20 - don't access already-freed walk.iv 2020-04-06 18:12:53 +02:00
scatterwalk.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
seed.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
seqiv.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
serpent_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
sha1_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
sha256_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
sha512_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
shash.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
skcipher.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
tcrypt.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
tcrypt.h A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
tea.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
testmgr.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
testmgr.h crypto: x86/poly1305 - fix overflow during partial reduction 2020-04-06 15:51:38 +02:00
tgr192.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
twofish_common.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
twofish_generic.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
vmac.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
wp512.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
xcbc.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
xor.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
xts.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
zlib.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30
zstd.c A750FXXU4CTBC 2020-03-27 21:51:54 +05:30