igb: Reject requests that fail to enable time stamping on both edges.
authorRichard Cochran <richardcochran@gmail.com>
Thu, 14 Nov 2019 18:45:05 +0000 (10:45 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 Nov 2019 20:48:32 +0000 (12:48 -0800)
This hardware always time stamps rising and falling edges, and so this
patch validates that the request does contains both edges.

Signed-off-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/igb/igb_ptp.c

index 3fd60715bca7482c8b877f7bb435d2253cc4a3f7..c39e921757ba9cf305a946bb104efe182c0f9ff4 100644 (file)
@@ -528,6 +528,12 @@ static int igb_ptp_feature_enable_i210(struct ptp_clock_info *ptp,
                                        PTP_STRICT_FLAGS))
                        return -EOPNOTSUPP;
 
+               /* Reject requests failing to enable both edges. */
+               if ((rq->extts.flags & PTP_STRICT_FLAGS) &&
+                   (rq->extts.flags & PTP_ENABLE_FEATURE) &&
+                   (rq->extts.flags & PTP_EXTTS_EDGES) != PTP_EXTTS_EDGES)
+                       return -EOPNOTSUPP;
+
                if (on) {
                        pin = ptp_find_pin(igb->ptp_clock, PTP_PF_EXTTS,
                                           rq->extts.index);