summaryrefslogtreecommitdiffstats
path: root/crypto/api.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-04-30 05:05:54 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-04-30 05:05:54 -0700
commit720d690e3680d8ae5fcf86f8614c1a10b4ee7605 (patch)
tree02158973d51022d7374f5b6e2f1953b530127f43 /crypto/api.c
parent72b6500c1cc68b949faa1bac76359dc601b482d6 (diff)
parent6da6c0db5316275015e8cc2959f12a17584aeb64 (diff)
downloadlinux-720d690e3680d8ae5fcf86f8614c1a10b4ee7605.tar.bz2
Merge 4.17-rc3 into char-misc-next
We want the fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'crypto/api.c')
-rw-r--r--crypto/api.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/crypto/api.c b/crypto/api.c
index 1d5290c67108..0ee632bba064 100644
--- a/crypto/api.c
+++ b/crypto/api.c
@@ -204,9 +204,14 @@ static struct crypto_alg *crypto_alg_lookup(const char *name, u32 type,
down_read(&crypto_alg_sem);
alg = __crypto_alg_lookup(name, type | test, mask | test);
- if (!alg && test)
- alg = __crypto_alg_lookup(name, type, mask) ?
- ERR_PTR(-ELIBBAD) : NULL;
+ if (!alg && test) {
+ alg = __crypto_alg_lookup(name, type, mask);
+ if (alg && !crypto_is_larval(alg)) {
+ /* Test failed */
+ crypto_mod_put(alg);
+ alg = ERR_PTR(-ELIBBAD);
+ }
+ }
up_read(&crypto_alg_sem);
return alg;