mesa: Check return value of __get_cpuid().
authorMatt Turner <mattst88@gmail.com>
Sat, 28 Feb 2015 18:06:26 +0000 (10:06 -0800)
committerMatt Turner <mattst88@gmail.com>
Sat, 28 Feb 2015 20:20:31 +0000 (12:20 -0800)
The use of the uninitialized_var() macro was to silence an uninitialized
variable warning that I assumed stemmed from gcc being unable to see
inside __get_cpuid() or understand its inline assembly.

In fact, it was because the __get_cpuid() function can fail, and not
initialize its arguments. Instead, check for failure and return early.

Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/x86/common_x86.c

index 25f5c40e21c00e16a87a30361d4f3aba401ffce2..14b497d061289ec37ae88f8178a30073e0e53cb3 100644 (file)
@@ -344,13 +344,13 @@ _mesa_get_x86_features(void)
 
 #elif defined(USE_X86_64_ASM)
    {
-      unsigned int uninitialized_var(eax), uninitialized_var(ebx),
-                   uninitialized_var(ecx), uninitialized_var(edx);
+      unsigned int eax, ebx, ecx, edx;
 
       /* Always available on x86-64. */
       _mesa_x86_cpu_features |= X86_FEATURE_XMM | X86_FEATURE_XMM2;
 
-      __get_cpuid(1, &eax, &ebx, &ecx, &edx);
+      if (!__get_cpuid(1, &eax, &ebx, &ecx, &edx))
+         return;
 
       if (ecx & bit_SSE4_1)
          _mesa_x86_cpu_features |= X86_FEATURE_SSE4_1;