linux/drivers/ptp
Jakub Kicinski 475b92f932 ptp: improve max_adj check against unreasonable values
Scaled PPM conversion to PPB may (on 64bit systems) result
in a value larger than s32 can hold (freq/scaled_ppm is a long).
This means the kernel will not correctly reject unreasonably
high ->freq values (e.g. > 4294967295ppb, 281474976645 scaled PPM).

The conversion is equivalent to a division by ~66 (65.536),
so the value of ppb is always smaller than ppm, but not small
enough to assume narrowing the type from long -> s32 is okay.

Note that reasonable user space (e.g. ptp4l) will not use such
high values, anyway, 4289046510ppb ~= 4.3x, so the fix is
somewhat pedantic.

Fixes: d39a743511 ("ptp: validate the requested frequency adjustment.")
Fixes: d94ba80ebb ("ptp: Added a brand new class driver for ptp clocks.")
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-06-15 10:59:46 -07:00
..
idt8a340_reg.h ptp: ptp_clockmatrix: Add wait_for_sys_apll_dpll_lock. 2021-02-17 13:49:25 -08:00
Kconfig ptp: arm/arm64: Enable ptp_kvm for arm/arm64 2021-04-07 16:33:20 +01:00
Makefile ptp: arm/arm64: Enable ptp_kvm for arm/arm64 2021-04-07 16:33:20 +01:00
ptp_chardev.c ptp: only allow phase values lower than 1 period 2020-08-05 12:06:44 -07:00
ptp_clock.c ptp: improve max_adj check against unreasonable values 2021-06-15 10:59:46 -07:00
ptp_clockmatrix.c ptp: ptp_clockmatrix: Demote non-kernel-doc header to standard comment 2021-03-12 17:09:34 -08:00
ptp_clockmatrix.h ptp: ptp_clockmatrix: Remove unused header declarations. 2021-02-17 13:49:25 -08:00
ptp_dte.c ptp: ptp_dte: use devm_platform_ioremap_resource() to simplify code 2019-10-10 16:21:13 -07:00
ptp_idt82p33.c ptp: idt82p33: optimize _idt82p33_adjfine 2020-11-07 13:10:31 -08:00
ptp_idt82p33.h ptp: idt82p33: use i2c_master_send for bus write 2020-11-07 13:10:27 -08:00
ptp_ines.c ptp: ptp_ines: use new PTP_MSGTYPE_* define(s) 2020-11-23 13:43:39 -08:00
ptp_kvm_arm.c ptp: arm/arm64: Enable ptp_kvm for arm/arm64 2021-04-07 16:33:20 +01:00
ptp_kvm_common.c ptp: Don't print an error if ptp_kvm is not supported 2021-04-20 17:17:55 +01:00
ptp_kvm_x86.c ptp: Reorganize ptp_kvm.c to make it arch-independent 2021-04-07 16:33:07 +01:00
ptp_ocp.c ptp: ocp: Fix a resource leak in an error handling path 2021-05-12 14:06:33 -07:00
ptp_pch.c ptp: ptp_p: Demote non-conformant kernel-doc headers and supply a param description 2021-03-12 17:09:34 -08:00
ptp_private.h ptp: fix the race between the release of ptp_clock and cdev 2019-12-30 20:19:27 -08:00
ptp_qoriq_debugfs.c ptp_qoriq: add little enadian support 2019-02-12 12:58:48 -05:00
ptp_qoriq.c ptp_qoriq: fix overflow in ptp_qoriq_adjfine() u64 calcalation 2021-03-24 12:10:03 -07:00
ptp_sysfs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
ptp_vmw.c ptp: add VMware virtual PTP clock driver 2020-03-05 17:25:07 -08:00