Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e041ffc authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull crypto fixes from Herbert Xu:

 - crypto API regression that may cause sporadic alloc failures

 - double-free bug in drbg

* 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
  crypto: drbg - set freed buffers to NULL
  crypto: api - fix finding algorithm currently being tested
parents cac26428 eea0d3ea
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -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;
+2 −0
Original line number Diff line number Diff line
@@ -1134,8 +1134,10 @@ static inline void drbg_dealloc_state(struct drbg_state *drbg)
	if (!drbg)
		return;
	kzfree(drbg->Vbuf);
	drbg->Vbuf = NULL;
	drbg->V = NULL;
	kzfree(drbg->Cbuf);
	drbg->Cbuf = NULL;
	drbg->C = NULL;
	kzfree(drbg->scratchpadbuf);
	drbg->scratchpadbuf = NULL;