]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
s390/sclp: Use monotonic clock in sclp_sync_wait()
authorSven Schnelle <svens@linux.ibm.com>
Thu, 10 Jul 2025 07:43:40 +0000 (09:43 +0200)
committerAlexander Gordeev <agordeev@linux.ibm.com>
Mon, 21 Jul 2025 10:41:55 +0000 (12:41 +0200)
sclp_sync_wait() should use the monotonic clock for the delay loop.
Otherwise the code won't work correctly when the clock is changed.

Signed-off-by: Sven Schnelle <svens@linux.ibm.com>
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
drivers/s390/char/sclp.c

index 9e15ea0682bb8a8191154b32bc37bf0c56e50849..f2e42c1d51aaa6e245d0ab5c7f3a9c96f9da9cec 100644 (file)
@@ -720,7 +720,7 @@ sclp_sync_wait(void)
        timeout = 0;
        if (timer_pending(&sclp_request_timer)) {
                /* Get timeout TOD value */
-               timeout = get_tod_clock_fast() +
+               timeout = get_tod_clock_monotonic() +
                          sclp_tod_from_jiffies(sclp_request_timer.expires -
                                                jiffies);
        }
@@ -740,7 +740,7 @@ sclp_sync_wait(void)
        /* Loop until driver state indicates finished request */
        while (sclp_running_state != sclp_running_state_idle) {
                /* Check for expired request timer */
-               if (get_tod_clock_fast() > timeout && timer_delete(&sclp_request_timer))
+               if (get_tod_clock_monotonic() > timeout && timer_delete(&sclp_request_timer))
                        sclp_request_timer.function(&sclp_request_timer);
                cpu_relax();
        }