Fix VDSO gettimeofday() when called with NULL struct timeval.
[sfrench/cifs-2.6.git] / arch / powerpc / kernel / vdso64 / gettimeofday.S
index 40ffd9b6cef7bf55fd81a6c62067afec4175d7c5..c6401f9e37f1fd2427cc6fa9373a3bff335949c8 100644 (file)
@@ -1,5 +1,4 @@
-
-       /*
+/*
  * Userland implementation of gettimeofday() for 64 bits processes in a
  * ppc64 kernel for use in the vDSO
  *
@@ -32,6 +31,8 @@ V_FUNCTION_BEGIN(__kernel_gettimeofday)
        mr      r11,r3                  /* r11 holds tv */
        mr      r10,r4                  /* r10 holds tz */
        bl      V_LOCAL_FUNC(__get_datapage)    /* get data page */
+       cmpldi  r11,0                   /* check if tv is NULL */
+       beq     2f
        bl      V_LOCAL_FUNC(__do_get_xsec)     /* get xsec from tb & kernel */
        lis     r7,15                   /* r7 = 1000000 = USEC_PER_SEC */
        ori     r7,r7,16960
@@ -43,8 +44,8 @@ V_FUNCTION_BEGIN(__kernel_gettimeofday)
                                         * XSEC_PER_SEC
                                         */
        rldicl  r0,r0,44,20
-       cmpldi  cr0,r10,0               /* check if tz is NULL */
        std     r0,TVAL64_TV_USEC(r11)  /* store usec in tv */
+2:     cmpldi  r10,0                   /* check if tz is NULL */
        beq     1f
        lwz     r4,CFG_TZ_MINUTEWEST(r3)/* fill tz */
        lwz     r5,CFG_TZ_DSTTIME(r3)