timekeeping: Zero initialize system_counterval when querying time from phc drivers

Most drivers only populate the fields cycles and cs_id of system_counterval
in their get_time_fn() callback for get_device_system_crosststamp(), unless
they explicitly provide nanosecond values.

When the use_nsecs field was added to struct system_counterval, most
drivers did not care. Clock sources other than CSID_GENERIC could then get
converted in convert_base_to_cs() based on an uninitialized use_nsecs field,
which usually results in -EINVAL during the following range check.

Pass in a fully zero initialized system_counterval_t to cure that.

Fixes: 6b2e29977518 ("timekeeping: Provide infrastructure for converting to/from a base clock")
Signed-off-by: Markus Blöchl <markus@blochl.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: John Stultz <jstultz@google.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20250720-timekeeping_uninit_crossts-v2-1-f513c885b7c2@blochl.de

authored by Markus Blöchl and committed by Thomas Gleixner 67c632b4 89be9a83

Changed files
+1 -1
kernel
+1 -1
kernel/time/timekeeping.c
··· 1256 1256 struct system_time_snapshot *history_begin, 1257 1257 struct system_device_crosststamp *xtstamp) 1258 1258 { 1259 - struct system_counterval_t system_counterval; 1259 + struct system_counterval_t system_counterval = {}; 1260 1260 struct timekeeper *tk = &tk_core.timekeeper; 1261 1261 u64 cycles, now, interval_start; 1262 1262 unsigned int clock_was_set_seq = 0;