linux/drivers/ptp
Vladimir Oltean 8e1525098c ptp: allow reading of currently dialed frequency to succeed on free-running clocks
[ Upstream commit aa112cbc5f ]

There is a bug in ptp_clock_adjtime() which makes it refuse the
operation even if we just want to read the current clock dialed
frequency, not modify anything (tx->modes == 0). That should be possible
even if the clock is free-running. For context, the kernel UAPI is the
same for getting and setting the frequency of a POSIX clock.

For example, ptp4l errors out at clock_create() -> clockadj_get_freq()
-> clock_adjtime() time, when it should logically only have failed on
actual adjustments to the clock, aka if the clock was configured as
slave. But in master mode it should work.

This was discovered when examining the issue described in the previous
commit, where ptp_clock_freerun() returned true despite n_vclocks being
zero.

Fixes: 73f37068d5 ("ptp: support ptp physical/virtual clocks conversion")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Link: https://patch.msgid.link/20250613174749.406826-3-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2025-06-27 11:07:39 +01:00
..
Kconfig ptp: ocp: Select CRC16 in the Kconfig. 2022-07-27 18:11:34 -07:00
Makefile ptp: add ptp virtual clock driver framework 2021-07-01 13:08:18 -07:00
ptp_chardev.c ptp: Properly handle compat ioctls 2025-02-21 13:49:28 +01:00
ptp_clock.c ptp: allow reading of currently dialed frequency to succeed on free-running clocks 2025-06-27 11:07:39 +01:00
ptp_clockmatrix.c ptp: ptp_clockmatrix: fix is_single_shot 2022-05-25 21:51:32 -07:00
ptp_clockmatrix.h ptp: ptp_clockmatrix: return -EBUSY if phase pull-in is in progress 2022-05-17 17:49:04 -07:00
ptp_dte.c ptp: convert remaining drivers to adjfine interface 2024-12-14 19:54:21 +01:00
ptp_idt82p33.c ptp: idt82p33: use rsmu driver to access i2c/spi bus 2022-03-09 19:50:57 -08:00
ptp_idt82p33.h ptp: idt82p33: use rsmu driver to access i2c/spi bus 2022-03-09 19:50:57 -08:00
ptp_ines.c net_tstamp: add new flag HWTSTAMP_FLAG_BONDED_PHC_INDEX 2021-12-14 12:28:24 +00:00
ptp_kvm_arm.c ptp: kvm: Use decrypted memory in confidential guest on x86 2024-12-19 18:08:53 +01:00
ptp_kvm_common.c ptp: kvm: Use decrypted memory in confidential guest on x86 2024-12-19 18:08:53 +01:00
ptp_kvm_x86.c ptp: kvm: x86: Return EOPNOTSUPP instead of ENODEV from kvm_arch_ptp_init() 2024-12-19 18:08:53 +01:00
ptp_ocp.c ptp: ocp: fix start time alignment in ptp_ocp_signal_set 2025-04-25 10:43:51 +02:00
ptp_pch.c ptp_pch: Remove unused pch_pm_ops 2022-02-08 21:04:32 -08:00
ptp_private.h ptp: fix breakage after ptp_vclock_in_use() rework 2025-06-27 11:07:39 +01:00
ptp_qoriq.c ptp_qoriq: fix memory leak in probe() 2023-04-06 12:10:44 +02:00
ptp_qoriq_debugfs.c ptp_qoriq: add little enadian support 2019-02-12 12:58:48 -05:00
ptp_sysfs.c ptp: fix integer overflow in max_vclocks_store 2024-06-27 13:46:19 +02:00
ptp_vclock.c ptp: vclock: use mutex to fix "sleep on atomic" bug 2023-03-11 13:55:25 +01:00
ptp_vmw.c ptp: add VMware virtual PTP clock driver 2020-03-05 17:25:07 -08:00