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 528521f 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
gregkh committed Sep 16, 2021
1 parent 6bac75c commit 4ff654a
Showing 1 changed file with 2 additions and 7 deletions.
9 changes: 2 additions & 7 deletions include/linux/time64.h
Expand Up @@ -25,9 +25,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 @@ -126,13 +124,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 4ff654a

Please sign in to comment.