'entropy >= ENTROPY_NEEDED' should be evaluated while the
variables are locked.
diff --git a/crypto/rand/md_rand.c b/crypto/rand/md_rand.c
index 79e3484..da4258c 100644
--- a/crypto/rand/md_rand.c
+++ b/crypto/rand/md_rand.c
@@ -559,14 +559,17 @@
 
 static int ssleay_rand_status(void)
 	{
+	int ret;
+
 	CRYPTO_w_lock(CRYPTO_LOCK_RAND);
 
 	if (!initialized)
 		ssleay_rand_initialize();
+	ret = entropy >= ENTROPY_NEEDED;
 
 	CRYPTO_w_unlock(CRYPTO_LOCK_RAND);
 
-	return (entropy >= ENTROPY_NEEDED);
+	return ret;
 	}
 
 #ifdef WINDOWS