Merge branch '2.4.x' into 2.5.x
authorMark Wooding <mdw@distorted.org.uk>
Fri, 27 Sep 2019 00:25:58 +0000 (01:25 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Fri, 27 Sep 2019 00:26:38 +0000 (01:26 +0100)
* 2.4.x:
  base/dispatch.c: Check for XMM registers after CPUID probe.
  rand/noise.c: Fix foolish bug in the `getentropy' code.

base/dispatch.c
rand/noise.c

index 9f2ac71..bea97b4 100644 (file)
@@ -547,22 +547,22 @@ int cpu_feature_p(int feat)
   switch (feat) {
 #if CPUFAM_X86 || CPUFAM_AMD64
     CASE_CPUFEAT(X86_SSE2, "x86:sse2",
-                xmm_registers_available_p() &&
-                cpuid_features_p(CPUID1D_SSE2, 0));
+                cpuid_features_p(CPUID1D_SSE2, 0) &&
+                xmm_registers_available_p());
     CASE_CPUFEAT(X86_AESNI, "x86:aesni",
-                xmm_registers_available_p() &&
-                cpuid_features_p(CPUID1D_SSE2, CPUID1C_AESNI));
+                cpuid_features_p(CPUID1D_SSE2, CPUID1C_AESNI) &&
+                xmm_registers_available_p());
     CASE_CPUFEAT(X86_RDRAND, "x86:rdrand",
                 cpuid_features_p(0, CPUID1C_RDRAND));
     CASE_CPUFEAT(X86_AVX, "x86:avx",
-                xmm_registers_available_p() &&
-                cpuid_features_p(0, CPUID1C_AVX));
+                cpuid_features_p(0, CPUID1C_AVX) &&
+                xmm_registers_available_p());
     CASE_CPUFEAT(X86_SSSE3, "x86:ssse3",
-                xmm_registers_available_p() &&
-                cpuid_features_p(0, CPUID1C_SSSE3));
+                cpuid_features_p(0, CPUID1C_SSSE3) &&
+                xmm_registers_available_p());
     CASE_CPUFEAT(X86_PCLMUL, "x86:pclmul",
-                xmm_registers_available_p() &&
-                cpuid_features_p(0, CPUID1C_PCLMUL));
+                cpuid_features_p(0, CPUID1C_PCLMUL) &&
+                xmm_registers_available_p());
 #endif
 #ifdef CAPMAP
 #  define FEATP__CASE(feat, tok)                                       \
index 280c49c..c120e6f 100644 (file)
@@ -217,7 +217,7 @@ int noise_devrandom(rand_pool *r)
   /* --- OpenBSD-flavoured shinies --- */
 
   while (n < sizeof(buf)) {
-    nn = sizeof(buf) - nn;
+    nn = sizeof(buf) - n;
     if (nn > 256) nn = 256;
     if (getentropy(buf + n, nn)) break;
     n += nn;