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 6fc340f 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 2283d11 commit 5d4d38f
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
@@ -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():
@@ -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;
}

0 comments on commit 5d4d38f

Please sign in to comment.