ptp: Make max_phase_adjustment sysfs device attribute invisible when not supported
authorRahul Rameshbabu <rrameshbabu@nvidia.com>
Tue, 27 Jun 2023 23:21:39 +0000 (16:21 -0700)
committerJakub Kicinski <kuba@kernel.org>
Mon, 3 Jul 2023 20:17:25 +0000 (13:17 -0700)
The .adjphase operation is an operation that is implemented only by certain
PHCs. The sysfs device attribute node for querying the maximum phase
adjustment supported should not be exposed on devices that do not support
.adjphase.

Fixes: c3b60ab7a4df ("ptp: Add .getmaxphase callback to ptp_clock_info")
Signed-off-by: Rahul Rameshbabu <rrameshbabu@nvidia.com>
Reported-by: Nathan Chancellor <nathan@kernel.org>
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Reported-by: Linux Kernel Functional Testing <lkft@linaro.org>
Link: https://lore.kernel.org/netdev/20230627162146.GA114473@dev-arch.thelio-3990X/
Link: https://lore.kernel.org/all/CA+G9fYtKCZeAUTtwe69iK8Xcz1mOKQzwcy49wd+imZrfj6ifXA@mail.gmail.com/
Tested-by: Nathan Chancellor <nathan@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Message-ID: <20230627232139.213130-1-rrameshbabu@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/ptp/ptp_sysfs.c

index 77219cdcd6831557a89b7d72e5d53fbefb733277..6e4d5456a8851199ed60095ecd92fc4cd45876eb 100644 (file)
@@ -358,6 +358,9 @@ static umode_t ptp_is_attribute_visible(struct kobject *kobj,
                   attr == &dev_attr_max_vclocks.attr) {
                if (ptp->is_virtual_clock)
                        mode = 0;
+       } else if (attr == &dev_attr_max_phase_adjustment.attr) {
+               if (!info->adjphase || !info->getmaxphase)
+                       mode = 0;
        }
 
        return mode;