X-Git-Url: https://git.kernelconcepts.de/?a=blobdiff_plain;f=drivers%2Fptp%2Fptp_clock.c;h=296b0ec8744da915763f8444c2ae8e902376c33e;hb=cb43866a597338ec8803528835c7f8462eb59b53;hp=e25d2bc898e5b6e4eb7b43e6df87129a2a19781e;hpb=67be1e4f4b0a512f6af3a7db681ae9b62d31de5e;p=karo-tx-linux.git 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) delta = ktime_to_ns(kt); err = ops->adjtime(ops, delta); } else if (tx->modes & ADJ_FREQUENCY) { - err = ops->adjfreq(ops, scaled_ppm_to_ppb(tx->freq)); + s32 ppb = scaled_ppm_to_ppb(tx->freq); + if (ppb > ops->max_adj || ppb < -ops->max_adj) + return -ERANGE; + err = ops->adjfreq(ops, ppb); ptp->dialed_frequency = tx->freq; } else if (tx->modes == 0) { tx->freq = ptp->dialed_frequency;