Signed-off-by: Wojciech Wasko <wwa...@nvidia.com>
---
 phc2sys.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/phc2sys.c b/phc2sys.c
index 836e63c..19e8012 100644
--- a/phc2sys.c
+++ b/phc2sys.c
@@ -555,7 +555,9 @@ static void update_clock(struct phc2sys_private *priv, 
struct clock *clock,
        case SERVO_UNLOCKED:
                break;
        case SERVO_JUMP:
-               clockadj_step(clock->clkid, -offset);
+               if (clockadj_step(clock->clkid, -offset)) {
+                       goto servo_unlock;
+               }
                if (clock->sanity_check)
                        clockcheck_step(clock->sanity_check, -offset);
                /* Fall through. */
@@ -564,7 +566,9 @@ static void update_clock(struct phc2sys_private *priv, 
struct clock *clock,
                if (clock->sanity_check)
                        clockcheck_freq(clock->sanity_check,
                                        clockadj_get_freq(clock->clkid));
-               clockadj_set_freq(clock->clkid, -ppb);
+               if (clockadj_set_freq(clock->clkid, -ppb)) {
+                       goto servo_unlock;
+               }
                if (clock->clkid == CLOCK_REALTIME)
                        sysclk_set_sync();
                if (clock->sanity_check)
@@ -587,6 +591,11 @@ report:
                                offset, state, ppb);
                }
        }
+       return;
+
+servo_unlock:
+       servo_reset(clock->servo);
+       clock->servo_state = SERVO_UNLOCKED;
 }
 
 static void enable_pps_output(clockid_t src)
-- 
2.25.1


_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to