crypto: rsa-pkcs1pad - Always use GFP_KERNEL
[cascardo/linux.git] / crypto / jitterentropy-kcapi.c
index 597cedd..c493849 100644 (file)
@@ -87,24 +87,28 @@ void jent_memcpy(void *dest, const void *src, unsigned int n)
        memcpy(dest, src, n);
 }
 
+/*
+ * Obtain a high-resolution time stamp value. The time stamp is used to measure
+ * the execution time of a given code path and its variations. Hence, the time
+ * stamp must have a sufficiently high resolution.
+ *
+ * Note, if the function returns zero because a given architecture does not
+ * implement a high-resolution time stamp, the RNG code's runtime test
+ * will detect it and will not produce output.
+ */
 void jent_get_nstime(__u64 *out)
 {
-       struct timespec ts;
        __u64 tmp = 0;
 
        tmp = random_get_entropy();
 
        /*
-        * If random_get_entropy does not return a value (which is possible on,
-        * for example, MIPS), invoke __getnstimeofday
+        * If random_get_entropy does not return a value, i.e. it is not
+        * implemented for a given architecture, use a clock source.
         * hoping that there are timers we can work with.
         */
-       if ((0 == tmp) &&
-          (0 == __getnstimeofday(&ts))) {
-               tmp = ts.tv_sec;
-               tmp = tmp << 32;
-               tmp = tmp | ts.tv_nsec;
-       }
+       if (tmp == 0)
+               tmp = ktime_get_ns();
 
        *out = tmp;
 }