On 02.01.2025 20:55, Andrew Cooper wrote:
> Clang, of at least verion 17 complains:
> 
>   arch/x86/pv/hypercall.c:30:10: error: variable 'eax' is used uninitialized
>   whenever 'if' condition is false [-Werror,-Wsometimes-uninitialized]
>      30 |     if ( !compat )
>         |          ^~~~~~~
>   arch/x86/pv/hypercall.c:87:29: note: uninitialized use occurs here
>      87 |     perfc_incra(hypercalls, eax);
>         |                             ^~~
> 
> This function is forced always_inline to cause compat to be
> constant-propagated through, but that is only a heuristic to try and get the
> compiler to do what we want, not a gurantee that it does.
> 
> Clang doesn't appear to be able to see that the only case where compat is
> true (and therefore the if() is false) is when there's an else clause on the
> end which sets eax too.
> 
> Initialise eax to -1, which ought to be optimised out, but if for whatever
> reason it happens not to be, then perfc_incra() will fail it's bounds check
> and do nothing.
> 
> Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com>

Acked-by: Jan Beulich <jbeul...@suse.com>



Reply via email to