Re: [Y2038] [PATCH 07/23] y2038: vdso: powerpc: avoid timespec references

From: Arnd Bergmann
Date: Thu Nov 21 2019 - 09:24:17 EST


On Wed, Nov 20, 2019 at 11:43 PM Ben Hutchings
<ben.hutchings@xxxxxxxxxxxxxxx> wrote:
>
> On Fri, 2019-11-08 at 22:07 +0100, Arnd Bergmann wrote:
> [...]
> > --- a/arch/powerpc/kernel/vdso32/gettimeofday.S
> > +++ b/arch/powerpc/kernel/vdso32/gettimeofday.S
> > @@ -15,10 +15,8 @@
> > /* Offset for the low 32-bit part of a field of long type */
> > #if defined(CONFIG_PPC64) && defined(CONFIG_CPU_BIG_ENDIAN)
> > #define LOPART 4
> > -#define TSPEC_TV_SEC TSPC64_TV_SEC+LOPART
> > #else
> > #define LOPART 0
> > -#define TSPEC_TV_SEC TSPC32_TV_SEC
> > #endif
> >
> > .text
> > @@ -192,7 +190,7 @@ V_FUNCTION_BEGIN(__kernel_time)
> > bl __get_datapage@local
> > mr r9, r3 /* datapage ptr in r9 */
> >
> > - lwz r3,STAMP_XTIME+TSPEC_TV_SEC(r9)
> > + lwz r3,STAMP_XTIME_SEC+LOWPART(r9)
>
> "LOWPART" should be "LOPART".
>

Thanks, fixed both instances in a patch on top now. I considered folding
it into the original patch, but as it's close to the merge window I'd
rather not rebase it, and this way I also give you credit for finding the bug.

I'm surprised that the 0-day bot did not report this already.

Thanks fro the careful review!

Arnd

commit 1c11ca7a0584ddede5b8c93057b40d31e8a96d3d (HEAD)
Author: Arnd Bergmann <arnd@xxxxxxxx>
Date: Thu Nov 21 15:19:49 2019 +0100

y2038: fix typo in powerpc vdso "LOPART"

The earlier patch introduced a typo, change LOWPART back to
LOPART.

Fixes: 176ed98c8a76 ("y2038: vdso: powerpc: avoid timespec references")
Reported-by: Ben Hutchings <ben.hutchings@xxxxxxxxxxxxxxx>
Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>

diff --git a/arch/powerpc/kernel/vdso32/gettimeofday.S
b/arch/powerpc/kernel/vdso32/gettimeofday.S
index a7180b0f4aa1..c8e6902cb01b 100644
--- a/arch/powerpc/kernel/vdso32/gettimeofday.S
+++ b/arch/powerpc/kernel/vdso32/gettimeofday.S
@@ -190,7 +190,7 @@ V_FUNCTION_BEGIN(__kernel_time)
bl __get_datapage@local
mr r9, r3 /* datapage ptr in r9 */

- lwz r3,STAMP_XTIME_SEC+LOWPART(r9)
+ lwz r3,STAMP_XTIME_SEC+LOPART(r9)

cmplwi r11,0 /* check if t is NULL */
beq 2f
@@ -266,7 +266,7 @@ __do_get_tspec:
* as a 32.32 fixed-point number in r3 and r4.
* Load & add the xtime stamp.
*/
- lwz r5,STAMP_XTIME_SEC+LOWPART(r9)
+ lwz r5,STAMP_XTIME_SEC+LOPART(r9)

lwz r6,STAMP_SEC_FRAC(r9)
addc r4,r4,r6
adde r3,r3,r5