[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] xen: Use -Wuninitialized and -Winit-self
On Thu, 28 Dec 2023, Andrew Cooper wrote: > The use of uninitialised data is undefined behaviour. At -O2 with trivial > examples, both Clang and GCC delete the variable, and in the case of a > function return, the caller gets whatever was stale in %rax prior to the call. > > Clang includes -Wuninitialized within -Wall, but GCC only includes it in > -Wextra, which is not used by Xen at this time. > > Furthermore, the specific pattern of assigning a variable to itself in its > declaration is only diagnosed by GCC with -Winit-self. Clang does diagnoise > simple forms of this pattern with a plain -Wuninitialized, but it fails to > diagnose the instances in Xen that GCC manages to find. > > GCC, with -Wuninitialized and -Winit-self notices: > > arch/x86/time.c: In function ‘read_pt_and_tsc’: > arch/x86/time.c:297:14: error: ‘best’ is used uninitialized in this > function [-Werror=uninitialized] > 297 | uint32_t best = best; > | ^~~~ > arch/x86/time.c: In function ‘read_pt_and_tmcct’: > arch/x86/time.c:1022:14: error: ‘best’ is used uninitialized in this > function [-Werror=uninitialized] > 1022 | uint64_t best = best; > | ^~~~ > > and both have logic paths where best can be returned while uninitalised. In > both cases, initialise to ~0 like the associated *_min variable which also > gates updating best. > > Fixes: 23658e823238 ("x86/time: further improve TSC / CPU freq calibration > accuracy") > Fixes: 3f3906b462d5 ("x86/APIC: calibrate against platform timer when > possible") > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Stefano Stabellini <sstabellini@xxxxxxxxxx>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |