|
@@ -1818,6 +1818,28 @@ unsigned int get_random_int(void)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(get_random_int);
|
|
EXPORT_SYMBOL(get_random_int);
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Same as get_random_int(), but returns unsigned long.
|
|
|
|
+ */
|
|
|
|
+unsigned long get_random_long(void)
|
|
|
|
+{
|
|
|
|
+ __u32 *hash;
|
|
|
|
+ unsigned long ret;
|
|
|
|
+
|
|
|
|
+ if (arch_get_random_long(&ret))
|
|
|
|
+ return ret;
|
|
|
|
+
|
|
|
|
+ hash = get_cpu_var(get_random_int_hash);
|
|
|
|
+
|
|
|
|
+ hash[0] += current->pid + jiffies + random_get_entropy();
|
|
|
|
+ md5_transform(hash, random_int_secret);
|
|
|
|
+ ret = *(unsigned long *)hash;
|
|
|
|
+ put_cpu_var(get_random_int_hash);
|
|
|
|
+
|
|
|
|
+ return ret;
|
|
|
|
+}
|
|
|
|
+EXPORT_SYMBOL(get_random_long);
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* randomize_range() returns a start address such that
|
|
* randomize_range() returns a start address such that
|
|
*
|
|
*
|