The ptp_ocp_signal_from_perout() function supports PTP_PEROUT_DUTY_CYCLE
and PTP_PEROUT_PHASE. It does not support PTP_PEROUT_ONE_SHOT, but does not
reject a request with such an unsupported flag.

Add the appropriate check to ensure that unsupported requests are rejected
both for PTP_PEROUT_ONE_SHOT as well as any future flags.

Fixes: 1aa66a3a135a ("ptp: ocp: Program the signal generators via 
PTP_CLK_REQ_PEROUT")
Reviewed-by: Vadim Fedorenko <vadim.fedore...@linux.dev>
Signed-off-by: Jacob Keller <jacob.e.kel...@intel.com>
---
 drivers/ptp/ptp_ocp.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/ptp/ptp_ocp.c b/drivers/ptp/ptp_ocp.c
index 
b651087f426f50a73229ca57634fc5d6912e0a87..4a87af0980d695a9ab1b23e2544f620759ccb892
 100644
--- a/drivers/ptp/ptp_ocp.c
+++ b/drivers/ptp/ptp_ocp.c
@@ -2090,6 +2090,10 @@ ptp_ocp_signal_from_perout(struct ptp_ocp *bp, int gen,
 {
        struct ptp_ocp_signal s = { };
 
+       if (req->flags & ~(PTP_PEROUT_DUTY_CYCLE |
+                          PTP_PEROUT_PHASE))
+               return -EOPNOTSUPP;
+
        s.polarity = bp->signal[gen].polarity;
        s.period = ktime_set(req->period.sec, req->period.nsec);
        if (!s.period)

-- 
2.48.1.397.gec9d649cc640

Reply via email to