]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
s390/vdso: copy tod_steering_delta value to vdso_data page
authorHeiko Carstens <hca@linux.ibm.com>
Tue, 23 Mar 2021 20:40:11 +0000 (21:40 +0100)
committerSeth Forshee <seth.forshee@canonical.com>
Thu, 8 Apr 2021 20:42:50 +0000 (15:42 -0500)
BugLink: https://bugs.launchpad.net/bugs/1923069
commit 72bbc226ed2ef0a46c165a482861fff00dd6d4e1 upstream.

When converting the vdso assembler code to C it was forgotten to
actually copy the tod_steering_delta value to vdso_data page.

Which in turn means that tod clock steering will not work correctly.

Fix this by simply copying the value whenever it is updated.

Fixes: 4bff8cb54502 ("s390: convert to GENERIC_VDSO")
Cc: <stable@vger.kernel.org> # 5.10
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
arch/s390/kernel/time.c

index c59cb44fbb7d7424800f4910ca0584675ed38b44..c71c4c12c9d301f1dd11c065bd54c87cc012e733 100644 (file)
@@ -398,6 +398,7 @@ static void clock_sync_global(unsigned long long delta)
                      tod_steering_delta);
        tod_steering_end = now + (abs(tod_steering_delta) << 15);
        vdso_data->arch_data.tod_steering_end = tod_steering_end;
+       vdso_data->arch_data.tod_steering_delta = tod_steering_delta;
 
        /* Update LPAR offset. */
        if (ptff_query(PTFF_QTO) && ptff(&qto, sizeof(qto), PTFF_QTO) == 0)