time/timekeeping: Work around false positive GCC warning
Newer GCC versions trigger the following warning:
kernel/time/timekeeping.c: In function ‘get_device_system_crosststamp’:
kernel/time/timekeeping.c:987:5: warning: ‘clock_was_set_seq’ may be used uninitialized in this function [-Wmaybe-uninitialized]
if (discontinuity) {
^
kernel/time/timekeeping.c:1045:15: note: ‘clock_was_set_seq’ was declared here
unsigned int clock_was_set_seq;
^
GCC clearly is unable to recognize that the 'do_interp' boolean tracks
the initialization status of 'clock_was_set_seq'.
The GCC version used was:
gcc version 5.3.1 20151207 (Red Hat 5.3.1-2) (GCC)
Work it around by initializing clock_was_set_seq to 0. Compilers that
are able to recognize the code flow will eliminate the unnecessary
initialization.
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
@@ -1042,7 +1042,7 @@ int get_device_system_crosststamp(int (*get_time_fn)
|
|||||||
struct system_counterval_t system_counterval;
|
struct system_counterval_t system_counterval;
|
||||||
struct timekeeper *tk = &tk_core.timekeeper;
|
struct timekeeper *tk = &tk_core.timekeeper;
|
||||||
cycle_t cycles, now, interval_start;
|
cycle_t cycles, now, interval_start;
|
||||||
unsigned int clock_was_set_seq;
|
unsigned int clock_was_set_seq = 0;
|
||||||
ktime_t base_real, base_raw;
|
ktime_t base_real, base_raw;
|
||||||
s64 nsec_real, nsec_raw;
|
s64 nsec_real, nsec_raw;
|
||||||
u8 cs_was_changed_seq;
|
u8 cs_was_changed_seq;
|
||||||
|
|||||||
Reference in New Issue
Block a user