It depends on user space whether this is safe or not: if programs interpret the data as a signed time_t value, they will be broken in y2038, and we have to redesign the entire interface.
Signed-off-by: Arnd Bergmann arnd@arndb.de --- drivers/staging/comedi/comedi_fops.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c index 629080f39db0..fe50d1f823c6 100644 --- a/drivers/staging/comedi/comedi_fops.c +++ b/drivers/staging/comedi/comedi_fops.c @@ -1256,16 +1256,17 @@ static int parse_insn(struct comedi_device *dev, struct comedi_insn *insn, switch (insn->insn) { case INSN_GTOD: { - struct timeval tv; + struct timespec64 tv;
if (insn->n != 2) { ret = -EINVAL; break; }
- do_gettimeofday(&tv); + ktime_get_real_ts64(&tv); data[0] = tv.tv_sec; - data[1] = tv.tv_usec; + /* unsigned data safe until 2106 */ + data[1] = tv.tv_nsec / NSEC_PER_USEC; ret = 2;
break;