[PATCH] ptp/ptp_clock.c: Correct input parameter range check

From: Siddaraju D H
Date: Wed Apr 03 2019 - 20:10:11 EST


From: Siddaraju DH <siddarajudh@xxxxxxxxx>

The ealier implementaion used to return EINVAL for -ve adjustments
in the range -1ns to -999999999ns as these -ve numbers will fail the
unsigned comaparison against NSEC_PER_SEC. Since the tv_sec field
will be ZERO in this range, the user will not be able to specify
the signedness of adjustment through the tv_sec field. So, the user
must be allowed to specify the signedness through tv_usec/nsec
field also. All variables that holds usec/nsec in this function
are signed numbers and there is no need for that type cast.

Signed-off-by: Siddaraju DH <siddarajudh@xxxxxxxxx>
---
drivers/ptp/ptp_clock.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
index 79bd102..ee2b35b 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
@@ -143,7 +143,7 @@ static int ptp_clock_adjtime(struct posix_clock *pc, struct __kernel_timex *tx)
if (!(tx->modes & ADJ_NANO))
ts.tv_nsec *= 1000;

- if ((unsigned long) ts.tv_nsec >= NSEC_PER_SEC)
+ if (ts.tv_nsec >= NSEC_PER_SEC)
return -EINVAL;

kt = timespec64_to_ktime(ts);
--
2.7.4