Commit 1f4fc343 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Greg Kroah-Hartman
Browse files

staging/lustre: use 64-bit times for cfs_srand seed



Several functions in Lustre call cfs_srand with do_gettimeofday
as the seed to get a pseudo-random number.
There is no bug here, but changing it to use ktime_get_ts64()
gets us closer to deprecating do_gettimeofday() and makes it slightly
more random.

Affected functions are:
lnet_shuffle_seed, init_lustre_lite and class_handle_init

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarOleg Drokin <green@linuxhacker.ru>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 473c4e01
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -237,7 +237,7 @@ static void lnet_shuffle_seed(void)
{
	static int seeded;
	int lnd_type, seed[2];
	struct timeval tv;
	struct timespec64 ts;
	lnet_ni_t *ni;
	struct list_head *tmp;

@@ -256,8 +256,8 @@ static void lnet_shuffle_seed(void)
			seed[0] ^= (LNET_NIDADDR(ni->ni_nid) | lnd_type);
	}

	do_gettimeofday(&tv);
	cfs_srand(tv.tv_sec ^ seed[0], tv.tv_usec ^ seed[1]);
	ktime_get_ts64(&ts);
	cfs_srand(ts.tv_sec ^ seed[0], ts.tv_nsec ^ seed[1]);
	seeded = 1;
}

+3 −3
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ void lustre_register_client_process_config(int (*cpc)(struct lustre_cfg *lcfg));
static int __init init_lustre_lite(void)
{
	lnet_process_id_t lnet_id;
	struct timeval tv;
	struct timespec64 ts;
	int i, rc, seed[2];

	CLASSERT(sizeof(LUSTRE_VOLATILE_HDR) == LUSTRE_VOLATILE_HDR_LEN + 1);
@@ -152,8 +152,8 @@ static int __init init_lustre_lite(void)
			seed[0] ^= LNET_NIDADDR(lnet_id.nid);
	}

	do_gettimeofday(&tv);
	cfs_srand(tv.tv_sec ^ seed[0], tv.tv_usec ^ seed[1]);
	ktime_get_ts64(&ts);
	cfs_srand(ts.tv_sec ^ seed[0], ts.tv_nsec ^ seed[1]);
	setup_timer(&ll_capa_timer, ll_capa_timer_callback, 0);
	rc = ll_capa_thread_start();
	if (rc != 0)
+3 −3
Original line number Diff line number Diff line
@@ -193,7 +193,7 @@ EXPORT_SYMBOL(class_handle_free_cb);
int class_handle_init(void)
{
	struct handle_bucket *bucket;
	struct timeval tv;
	struct timespec64 ts;
	int seed[2];

	LASSERT(handle_hash == NULL);
@@ -212,8 +212,8 @@ int class_handle_init(void)

	/** bug 21430: add randomness to the initial base */
	cfs_get_random_bytes(seed, sizeof(seed));
	do_gettimeofday(&tv);
	cfs_srand(tv.tv_sec ^ seed[0], tv.tv_usec ^ seed[1]);
	ktime_get_ts64(&ts);
	cfs_srand(ts.tv_sec ^ seed[0], ts.tv_nsec ^ seed[1]);

	cfs_get_random_bytes(&handle_base, sizeof(handle_base));
	LASSERT(handle_base != 0ULL);