[Mesa-dev] [PATCH] mesa: Check return value of __get_cpuid().
Brian Paul
brianp at vmware.com
Sat Feb 28 12:17:21 PST 2015
Reviewed-by: Brian Paul <brianp at vmware.com>
On 02/28/2015 11:09 AM, Matt Turner wrote:
> 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.
> ---
> src/mesa/x86/common_x86.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/x86/common_x86.c b/src/mesa/x86/common_x86.c
> index 25f5c40..14b497d 100644
> --- a/src/mesa/x86/common_x86.c
> +++ b/src/mesa/x86/common_x86.c
> @@ -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;
>
More information about the mesa-dev
mailing list