Skip to content

Commit

Permalink
Revert "time: Handle negative seconds correctly in timespec64_to_ns()"
Browse files Browse the repository at this point in the history
This reverts commit 7a25a0a which is
commit 39ff83f upstream.

Arnd reports that this needs more review before being merged into all of
the trees.

Link: https://lore.kernel.org/r/CAK8P3a0z5jE=Z3Ps5bFTCFT7CHZR1JQ8VhdntDJAfsUxSPCcEw@mail.gmail.com
Reported-by: Arnd Bergmann <arnd@kernel.org>
Cc: Lukas Hannen <lukas.hannen@opensource.tttech-industrial.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Greg Kroah-Hartman committed Sep 16, 2021
1 parent dc15f64 commit 1f8ee02
Showing 1 changed file with 2 additions and 7 deletions.
9 changes: 2 additions & 7 deletions include/linux/time64.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,7 @@ struct itimerspec64 {
#define TIME64_MIN (-TIME64_MAX - 1)

#define KTIME_MAX ((s64)~((u64)1 << 63))
#define KTIME_MIN (-KTIME_MAX - 1)
#define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC)
#define KTIME_SEC_MIN (KTIME_MIN / NSEC_PER_SEC)

/*
* Limits for settimeofday():
Expand Down Expand Up @@ -134,13 +132,10 @@ static inline bool timespec64_valid_settod(const struct timespec64 *ts)
*/
static inline s64 timespec64_to_ns(const struct timespec64 *ts)
{
/* Prevent multiplication overflow / underflow */
if (ts->tv_sec >= KTIME_SEC_MAX)
/* Prevent multiplication overflow */
if ((unsigned long long)ts->tv_sec >= KTIME_SEC_MAX)
return KTIME_MAX;

if (ts->tv_sec <= KTIME_SEC_MIN)
return KTIME_MIN;

return ((s64) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec;
}

Expand Down

0 comments on commit 1f8ee02

Please sign in to comment.