diff options
-rw-r--r-- | drivers/ptp/ptp_clock.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c index e25d2bc898e5..296b0ec8744d 100644 --- a/drivers/ptp/ptp_clock.c +++ b/drivers/ptp/ptp_clock.c | |||
@@ -142,7 +142,10 @@ static int ptp_clock_adjtime(struct posix_clock *pc, struct timex *tx) | |||
142 | delta = ktime_to_ns(kt); | 142 | delta = ktime_to_ns(kt); |
143 | err = ops->adjtime(ops, delta); | 143 | err = ops->adjtime(ops, delta); |
144 | } else if (tx->modes & ADJ_FREQUENCY) { | 144 | } else if (tx->modes & ADJ_FREQUENCY) { |
145 | err = ops->adjfreq(ops, scaled_ppm_to_ppb(tx->freq)); | 145 | s32 ppb = scaled_ppm_to_ppb(tx->freq); |
146 | if (ppb > ops->max_adj || ppb < -ops->max_adj) | ||
147 | return -ERANGE; | ||
148 | err = ops->adjfreq(ops, ppb); | ||
146 | ptp->dialed_frequency = tx->freq; | 149 | ptp->dialed_frequency = tx->freq; |
147 | } else if (tx->modes == 0) { | 150 | } else if (tx->modes == 0) { |
148 | tx->freq = ptp->dialed_frequency; | 151 | tx->freq = ptp->dialed_frequency; |