powerpc/vdso32: fix CLOCK_MONOTONIC on PPC64 [Linux 3.16.72]

This Linux kernel change "powerpc/vdso32: fix CLOCK_MONOTONIC on PPC64" is included in the Linux 3.16.72 release. This change is authored by Christophe Leroy <christophe.leroy [at] c-s.fr> on Thu Apr 4 12:20:05 2019 +0000. The commit for this change in Linux stable tree is fbcab84 (patch) which is from upstream commit dd9a994. The same Linux upstream change may have been applied to various maintained Linux releases and you can find all Linux releases containing changes from upstream dd9a994.

powerpc/vdso32: fix CLOCK_MONOTONIC on PPC64

commit dd9a994fc68d196a052b73747e3366c57d14a09e upstream.

Commit b5b4453e7912 ("powerpc/vdso64: Fix CLOCK_MONOTONIC
inconsistencies across Y2038") changed the type of wtom_clock_sec
to s64 on PPC64. Therefore, VDSO32 needs to read it with a 4 bytes
shift in order to retrieve the lower part of it.

Fixes: b5b4453e7912 ("powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038")
Reported-by: Christian Zigotzky <[email protected]>
Signed-off-by: Christophe Leroy <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
Signed-off-by: Ben Hutchings <[email protected]>

There are 2 lines of Linux source code added/deleted in this change. Code changes to Linux kernel are as follows.

 arch/powerpc/kernel/vdso32/gettimeofday.S | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/vdso32/gettimeofday.S b/arch/powerpc/kernel/vdso32/gettimeofday.S
index 6b2b696..8bacb87 100644
--- a/arch/powerpc/kernel/vdso32/gettimeofday.S
+++ b/arch/powerpc/kernel/vdso32/gettimeofday.S
@@ -98,7 +98,7 @@ V_FUNCTION_BEGIN(__kernel_clock_gettime)
     * can be used, r7 contains NSEC_PER_SEC.
     */

-   lwz r5,WTOM_CLOCK_SEC(r9)
+   lwz r5,(WTOM_CLOCK_SEC+LOPART)(r9)
    lwz r6,WTOM_CLOCK_NSEC(r9)

    /* We now have our offset in r5,r6. We create a fake dependency

Leave a Reply

Your email address will not be published. Required fields are marked *