All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ian Kent <raven@themaw.net>
To: Yu Ning <ning.yu@ubuntu.com>
Cc: autofs mailing list <autofs@vger.kernel.org>
Subject: [PATCH v5 7/8] autofs-5.1.1 - change time() to use monotonic_clock()
Date: Fri, 18 Sep 2015 17:35:10 +0800	[thread overview]
Message-ID: <20150918093509.29311.29388.stgit@pluto.fritz.box> (raw)
In-Reply-To: <20150918092704.29311.84246.stgit@pluto.fritz.box>

From: Yu Ning <ning.yu@ubuntu.com>

The time returned by gettimeofday() is affected by discontinuous jumps
in the system time, so it causes an issue that autofs may not auto
unmount a mount point if system time is manually changed by the system
administrator.

To fix the issue we need to convert to using a monotonic clock source
instead of the clock source used by gettimeofday().

Finally hange the time() function calls to monotonic_clock() calls.

Signed-off-by: Yu Ning <ning.yu@ubuntu.com>
---
 CHANGELOG                 |    1 +
 daemon/automount.c        |    4 ++--
 daemon/direct.c           |    4 ++--
 daemon/indirect.c         |    4 ++--
 daemon/lookup.c           |    6 +++---
 daemon/state.c            |    2 +-
 lib/cache.c               |    2 +-
 lib/master.c              |    4 ++--
 modules/dclist.c          |    2 +-
 modules/lookup_file.c     |    8 ++++----
 modules/lookup_hesiod.c   |    6 +++---
 modules/lookup_hosts.c    |    4 ++--
 modules/lookup_ldap.c     |   10 +++++-----
 modules/lookup_nisplus.c  |   10 +++++-----
 modules/lookup_program.c  |   10 +++++-----
 modules/lookup_sss.c      |    6 +++---
 modules/lookup_userhome.c |    2 +-
 modules/lookup_yp.c       |    8 ++++----
 modules/mount_autofs.c    |    2 +-
 modules/parse_amd.c       |    2 +-
 modules/replicated.c      |    4 ++--
 21 files changed, 51 insertions(+), 50 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 276bd1b..e383bd5 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -24,6 +24,7 @@
 - use monotonic clock for direct mount condition.
 - use monotonic clock for indirect mount condition.
 - change remaining gettimeofday() to use clock_gettime().
+- change time() to use monotonic_clock().
 
 21/04/2015 autofs-5.1.1
 =======================
diff --git a/daemon/automount.c b/daemon/automount.c
index 26123ee..ed65167 100644
--- a/daemon/automount.c
+++ b/daemon/automount.c
@@ -1454,7 +1454,7 @@ static void *statemachine(void *arg)
 			break;
 
 		case SIGHUP:
-			do_hup_signal(master_list, time(NULL));
+			do_hup_signal(master_list, monotonic_time(NULL));
 			break;
 
 		default:
@@ -2005,7 +2005,7 @@ int main(int argc, char *argv[])
 	unsigned ghost, logging, daemon_check;
 	unsigned dumpmaps, foreground, have_global_options;
 	time_t timeout;
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	struct rlimit rlim;
 	const char *options = "+hp:t:vmdD:fVrO:l:n:CF";
 	static const struct option long_options[] = {
diff --git a/daemon/direct.c b/daemon/direct.c
index 9b7fd76..d427580 100644
--- a/daemon/direct.c
+++ b/daemon/direct.c
@@ -468,7 +468,7 @@ int mount_autofs_direct(struct autofs_point *ap)
 	struct mapent_cache *nc, *mc;
 	struct mapent *me, *ne, *nested;
 	struct mnt_list *mnts;
-	time_t now = time(NULL);
+	time_t now = monotonic_time(NULL);
 
 	if (strcmp(ap->path, "/-")) {
 		error(ap->logopt, "expected direct map, exiting");
@@ -1387,7 +1387,7 @@ int handle_packet_missing_direct(struct autofs_point *ap, autofs_packet_missing_
 	}
 
 	/* Check if we recorded a mount fail for this key */
-	if (me->status >= time(NULL)) {
+	if (me->status >= monotonic_time(NULL)) {
 		ops->send_fail(ap->logopt,
 			       ioctlfd, pkt->wait_queue_token, -ENOENT);
 		ops->close(ap->logopt, ioctlfd);
diff --git a/daemon/indirect.c b/daemon/indirect.c
index 263fff1..4c32bdb 100644
--- a/daemon/indirect.c
+++ b/daemon/indirect.c
@@ -201,7 +201,7 @@ out_err:
 
 int mount_autofs_indirect(struct autofs_point *ap, const char *root)
 {
-	time_t now = time(NULL);
+	time_t now = monotonic_time(NULL);
 	int status;
 	int map;
 
@@ -817,7 +817,7 @@ int handle_packet_missing_indirect(struct autofs_point *ap, autofs_packet_missin
 	/* Check if we recorded a mount fail for this key anywhere */
 	me = lookup_source_mapent(ap, pkt->name, LKP_DISTINCT);
 	if (me) {
-		if (me->status >= time(NULL)) {
+		if (me->status >= monotonic_time(NULL)) {
 			ops->send_fail(ap->logopt, ap->ioctlfd,
 				       pkt->wait_queue_token, -ENOENT);
 			cache_unlock(me->mc);
diff --git a/daemon/lookup.c b/daemon/lookup.c
index 62071df..9a8fa7e 100644
--- a/daemon/lookup.c
+++ b/daemon/lookup.c
@@ -875,7 +875,7 @@ static int lookup_name_file_source_instance(struct autofs_point *ap, struct map_
 	struct map_source *instance;
 	char src_file[] = "file";
 	char src_prog[] = "program";
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	struct stat st;
 	char *type, *format;
 
@@ -915,7 +915,7 @@ static int lookup_name_source_instance(struct autofs_point *ap, struct map_sourc
 {
 	struct map_source *instance;
 	const char *format;
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 
 	if (*name == '/' && map->flags & MAP_FLAG_FORMAT_AMD)
 		return lookup_amd_instance(ap, map, name, name_len);
@@ -1079,7 +1079,7 @@ static void update_negative_cache(struct autofs_point *ap, struct map_source *so
 		else
 			map = entry->maps;
 		if (map) {
-			time_t now = time(NULL);
+			time_t now = monotonic_time(NULL);
 			int rv = CHE_FAIL;
 
 			cache_writelock(map->mc);
diff --git a/daemon/state.c b/daemon/state.c
index 6c8c4f6..3ef8d95 100644
--- a/daemon/state.c
+++ b/daemon/state.c
@@ -564,7 +564,7 @@ static unsigned int st_readmap(struct autofs_point *ap)
 	pthread_t thid;
 	struct readmap_args *ra;
 	int status;
-	int now = time(NULL);
+	int now = monotonic_time(NULL);
 
 	debug(ap->logopt, "state %d path %s", ap->state, ap->path);
 
diff --git a/lib/cache.c b/lib/cache.c
index 631d275..44e323d 100644
--- a/lib/cache.c
+++ b/lib/cache.c
@@ -775,7 +775,7 @@ void cache_update_negative(struct mapent_cache *mc,
 			   struct map_source *ms, const char *key,
 			   time_t timeout)
 {
-	time_t now = time(NULL);
+	time_t now = monotonic_time(NULL);
 	struct mapent *me;
 	int rv = CHE_OK;
 
diff --git a/lib/master.c b/lib/master.c
index 4588fa7..9ffdd1a 100644
--- a/lib/master.c
+++ b/lib/master.c
@@ -1484,7 +1484,7 @@ int dump_map(struct master *master, const char *type, const char *name)
 		struct map_source *source;
 		struct master_mapent *this;
 		struct autofs_point *ap;
-		time_t now = time(NULL);
+		time_t now = monotonic_time(NULL);
 
 		this = list_entry(p, struct master_mapent, list);
 		p = p->next;
@@ -1602,7 +1602,7 @@ int master_show_mounts(struct master *master)
 		struct map_source *source;
 		struct master_mapent *this;
 		struct autofs_point *ap;
-		time_t now = time(NULL);
+		time_t now = monotonic_time(NULL);
 		unsigned int count = 0;
 
 		this = list_entry(p, struct master_mapent, list);
diff --git a/modules/dclist.c b/modules/dclist.c
index af21ce0..4daa199 100644
--- a/modules/dclist.c
+++ b/modules/dclist.c
@@ -568,7 +568,7 @@ struct dclist *get_dc_list(unsigned int logopt, const char *uri)
 	if (!list)
 		goto out_error;
 
-	dclist->expire = time(NULL) + min_ttl;
+	dclist->expire = monotonic_time(NULL) + min_ttl;
 	dclist->uri = list;
 
 	return dclist;
diff --git a/modules/lookup_file.c b/modules/lookup_file.c
index 7c982c6..4e52fce 100644
--- a/modules/lookup_file.c
+++ b/modules/lookup_file.c
@@ -743,7 +743,7 @@ static int match_key(struct autofs_point *ap,
 {
 	char buf[MAX_ERR_BUF];
 	struct mapent_cache *mc;
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	char *lkp_key;
 	char *prefix;
 	size_t map_key_len;
@@ -808,7 +808,7 @@ static int lookup_one(struct autofs_point *ap,
 	struct mapent_cache *mc = source->mc;
 	char mkey[KEY_MAX_LEN + 1];
 	char mapent[MAPENT_MAX_LEN + 1];
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	FILE *f;
 	unsigned int k_len, m_len;
 	int entry, ret;
@@ -914,7 +914,7 @@ static int lookup_wild(struct autofs_point *ap,
 	struct mapent_cache *mc;
 	char mkey[KEY_MAX_LEN + 1];
 	char mapent[MAPENT_MAX_LEN + 1];
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	FILE *f;
 	unsigned int k_len, m_len;
 	int entry, ret;
@@ -1118,7 +1118,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 	/* Check if we recorded a mount fail for this key anywhere */
 	me = lookup_source_mapent(ap, key, LKP_DISTINCT);
 	if (me) {
-		if (me->status >= time(NULL)) {
+		if (me->status >= monotonic_time(NULL)) {
 			cache_unlock(me->mc);
 			return NSS_STATUS_NOTFOUND;
 		} else {
diff --git a/modules/lookup_hesiod.c b/modules/lookup_hesiod.c
index 526f294..9da4f8e 100644
--- a/modules/lookup_hesiod.c
+++ b/modules/lookup_hesiod.c
@@ -163,7 +163,7 @@ static int lookup_one(struct autofs_point *ap,
 	}
 
 	cache_writelock(mc);
-	ret = cache_update(mc, source, key, best_record, time(NULL));
+	ret = cache_update(mc, source, key, best_record, monotonic_time(NULL));
 	cache_unlock(mc);
 	if (ret == CHE_FAIL) {
 		hesiod_free_list(ctxt->hesiod_context, hes_result);
@@ -228,7 +228,7 @@ static int lookup_one_amd(struct autofs_point *ap,
 	}
 
 	cache_writelock(mc);
-	ret = cache_update(mc, source, lkp_key, *hes_result, time(NULL));
+	ret = cache_update(mc, source, lkp_key, *hes_result, monotonic_time(NULL));
 	cache_unlock(mc);
 
 	if (hes_result)
@@ -339,7 +339,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 	/* Check if we recorded a mount fail for this key anywhere */
 	me = lookup_source_mapent(ap, name, LKP_DISTINCT);
 	if (me) {
-		if (me->status >= time(NULL)) {
+		if (me->status >= monotonic_time(NULL)) {
 			cache_unlock(me->mc);
 			return NSS_STATUS_NOTFOUND;
 		} else {
diff --git a/modules/lookup_hosts.c b/modules/lookup_hosts.c
index 0d48356..8c4bbd9 100644
--- a/modules/lookup_hosts.c
+++ b/modules/lookup_hosts.c
@@ -284,7 +284,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 	struct mapent *me;
 	char *mapent = NULL;
 	int mapent_len;
-	time_t now = time(NULL);
+	time_t now = monotonic_time(NULL);
 	int ret;
 
 	source = ap->entry->current;
@@ -296,7 +296,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 	/* Check if we recorded a mount fail for this key anywhere */
 	me = lookup_source_mapent(ap, name, LKP_DISTINCT);
 	if (me) {
-		if (me->status >= time(NULL)) {
+		if (me->status >= monotonic_time(NULL)) {
 			cache_unlock(me->mc);
 			return NSS_STATUS_NOTFOUND;
 		} else {
diff --git a/modules/lookup_ldap.c b/modules/lookup_ldap.c
index 8438547..5c62e10 100644
--- a/modules/lookup_ldap.c
+++ b/modules/lookup_ldap.c
@@ -999,7 +999,7 @@ static int do_reconnect(unsigned logopt,
 
 	uris_mutex_lock(ctxt);
 	if (ctxt->dclist) {
-		if (!ldap || ctxt->dclist->expire < time(NULL)) {
+		if (!ldap || ctxt->dclist->expire < monotonic_time(NULL)) {
 			free_dclist(ctxt->dclist);
 			ctxt->dclist = NULL;
 		}
@@ -2913,7 +2913,7 @@ static int lookup_one(struct autofs_point *ap, struct map_source *source,
 	struct mapent_cache *mc;
 	int rv, i, l, ql, count;
 	char buf[MAX_ERR_BUF];
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	char *query;
 	LDAPMessage *result = NULL, *e;
 	char *class, *info, *entry;
@@ -3278,7 +3278,7 @@ static int lookup_one_amd(struct autofs_point *ap,
 	struct berval **bvKey;
 	struct berval **bvValues;
 	char buf[MAX_ERR_BUF];
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	int rv, l, ql, count;
 	int ret = CHE_MISSING;
 
@@ -3483,7 +3483,7 @@ static int check_map_indirect(struct autofs_point *ap,
 	unsigned int is_amd_format = source->flags & MAP_FLAG_FORMAT_AMD;
 	struct mapent_cache *mc;
 	struct mapent *me;
-	time_t now = time(NULL);
+	time_t now = monotonic_time(NULL);
 	time_t t_last_read;
 	int ret, cur_state;
 	int status;
@@ -3621,7 +3621,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 	/* Check if we recorded a mount fail for this key anywhere */
 	me = lookup_source_mapent(ap, key, LKP_DISTINCT);
 	if (me) {
-		if (me->status >= time(NULL)) {
+		if (me->status >= monotonic_time(NULL)) {
 			cache_unlock(me->mc);
 			return NSS_STATUS_NOTFOUND;
 		} else {
diff --git a/modules/lookup_nisplus.c b/modules/lookup_nisplus.c
index d5eba47..17d3dde 100644
--- a/modules/lookup_nisplus.c
+++ b/modules/lookup_nisplus.c
@@ -288,7 +288,7 @@ static int lookup_one(struct autofs_point *ap,
 	nis_result *result;
 	nis_object *this;
 	char *mapent;
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	int ret, cur_state;
 	char buf[MAX_ERR_BUF];
 
@@ -400,7 +400,7 @@ static int lookup_wild(struct autofs_point *ap,
 	nis_result *result;
 	nis_object *this;
 	char *mapent;
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	int ret, cur_state;
 	char buf[MAX_ERR_BUF];
 
@@ -487,7 +487,7 @@ static int lookup_amd_defaults(struct autofs_point *ap,
 	mapent = ENTRY_VAL(this, 1);
 
 	cache_writelock(mc);
-	ret = cache_update(mc, source, "/defaults", mapent, time(NULL));
+	ret = cache_update(mc, source, "/defaults", mapent, monotonic_time(NULL));
 	cache_unlock(mc);
 
 	nis_freeresult(result);
@@ -505,7 +505,7 @@ static int check_map_indirect(struct autofs_point *ap,
 	unsigned int is_amd_format = source->flags & MAP_FLAG_FORMAT_AMD;
 	struct mapent_cache *mc;
 	struct mapent *me, *exists;
-	time_t now = time(NULL);
+	time_t now = monotonic_time(NULL);
 	time_t t_last_read;
 	int ret = 0;
 
@@ -650,7 +650,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 	/* Check if we recorded a mount fail for this key anywhere */
 	me = lookup_source_mapent(ap, key, LKP_DISTINCT);
 	if (me) {
-		if (me->status >= time(NULL)) {
+		if (me->status >= monotonic_time(NULL)) {
 			cache_unlock(me->mc);
 			return NSS_STATUS_NOTFOUND;
 		} else {
diff --git a/modules/lookup_program.c b/modules/lookup_program.c
index 67d4c47..a19a351 100644
--- a/modules/lookup_program.c
+++ b/modules/lookup_program.c
@@ -369,7 +369,7 @@ static int lookup_amd_defaults(struct autofs_point *ap,
 		while (isblank(*start))
 			start++;
 		cache_writelock(mc);
-		ret = cache_update(mc, source, "/defaults", start, time(NULL));
+		ret = cache_update(mc, source, "/defaults", start, monotonic_time(NULL));
 		cache_unlock(mc);
 		if (ret == CHE_FAIL) {
 			free(ment);
@@ -438,7 +438,7 @@ static int match_key(struct autofs_point *ap,
 				start++;
 		}
 		cache_writelock(mc);
-		ret = cache_update(mc, source, lkp_key, start, time(NULL));
+		ret = cache_update(mc, source, lkp_key, start, monotonic_time(NULL));
 		cache_unlock(mc);
 		if (ret == CHE_FAIL) {
 			free(ment);
@@ -491,7 +491,7 @@ static int match_key(struct autofs_point *ap,
 			while (isblank(*start))
 				start++;
 			cache_writelock(mc);
-			ret = cache_update(mc, source, match, start, time(NULL));
+			ret = cache_update(mc, source, match, start, monotonic_time(NULL));
 			cache_unlock(mc);
 			if (ret == CHE_FAIL) {
 				free(match);
@@ -537,7 +537,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 	/* Check if we recorded a mount fail for this key anywhere */
 	me = lookup_source_mapent(ap, name, LKP_DISTINCT);
 	if (me) {
-		if (me->status >= time(NULL)) {
+		if (me->status >= monotonic_time(NULL)) {
 			cache_unlock(me->mc);
 			return NSS_STATUS_NOTFOUND;
 		} else {
@@ -586,7 +586,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 		 * proceed with the program map lookup.
 		 */
 		if (strchr(name, '/') ||
-		    me->age + ap->negative_timeout > time(NULL)) {
+		    me->age + ap->negative_timeout > monotonic_time(NULL)) {
 			char *ent = NULL;
 
 			if (me->mapent) {
diff --git a/modules/lookup_sss.c b/modules/lookup_sss.c
index 720b5e3..7ffce4d 100644
--- a/modules/lookup_sss.c
+++ b/modules/lookup_sss.c
@@ -380,7 +380,7 @@ static int lookup_one(struct autofs_point *ap,
 	struct mapent_cache *mc;
 	struct mapent *we;
 	void *sss_ctxt = NULL;
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	char buf[MAX_ERR_BUF];
 	char *value = NULL;
 	char *s_key;
@@ -501,7 +501,7 @@ static int check_map_indirect(struct autofs_point *ap,
 	struct map_source *source;
 	struct mapent_cache *mc;
 	struct mapent *me;
-	time_t now = time(NULL);
+	time_t now = monotonic_time(NULL);
 	time_t t_last_read;
 	int ret, cur_state;
 
@@ -595,7 +595,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 	/* Check if we recorded a mount fail for this key anywhere */
 	me = lookup_source_mapent(ap, key, LKP_DISTINCT);
 	if (me) {
-		if (me->status >= time(NULL)) {
+		if (me->status >= monotonic_time(NULL)) {
 			cache_unlock(me->mc);
 			return NSS_STATUS_NOTFOUND;
 		} else {
diff --git a/modules/lookup_userhome.c b/modules/lookup_userhome.c
index fb3caaa..d0c3e80 100644
--- a/modules/lookup_userhome.c
+++ b/modules/lookup_userhome.c
@@ -77,7 +77,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 	}
 
 	cache_writelock(mc);
-	ret = cache_update(mc, source, name, NULL, time(NULL));
+	ret = cache_update(mc, source, name, NULL, monotonic_time(NULL));
 	cache_unlock(mc);
 
 	if (ret == CHE_FAIL) {
diff --git a/modules/lookup_yp.c b/modules/lookup_yp.c
index fcf470a..3ffa4b6 100644
--- a/modules/lookup_yp.c
+++ b/modules/lookup_yp.c
@@ -405,7 +405,7 @@ static int lookup_one(struct autofs_point *ap,
 	char *mapname;
 	char *mapent;
 	int mapent_len;
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	int ret;
 
 	mc = source->mc;
@@ -517,7 +517,7 @@ static int lookup_wild(struct autofs_point *ap,
 	char *mapname;
 	char *mapent;
 	int mapent_len;
-	time_t age = time(NULL);
+	time_t age = monotonic_time(NULL);
 	int ret;
 
 	mc = source->mc;
@@ -598,7 +598,7 @@ static int lookup_amd_defaults(struct autofs_point *ap,
 		return CHE_FAIL;
 
 	cache_writelock(mc);
-	ret = cache_update(mc, source, "/defaults", mapent, time(NULL));
+	ret = cache_update(mc, source, "/defaults", mapent, monotonic_time(NULL));
 	cache_unlock(mc);
 
 	return ret;
@@ -753,7 +753,7 @@ int lookup_mount(struct autofs_point *ap, const char *name, int name_len, void *
 	/* Check if we recorded a mount fail for this key anywhere */
 	me = lookup_source_mapent(ap, key, LKP_DISTINCT);
 	if (me) {
-		if (me->status >= time(NULL)) {
+		if (me->status >= monotonic_time(NULL)) {
 			cache_unlock(me->mc);
 			return NSS_STATUS_NOTFOUND;
 		} else {
diff --git a/modules/mount_autofs.c b/modules/mount_autofs.c
index 4846e7f..05ea1c1 100644
--- a/modules/mount_autofs.c
+++ b/modules/mount_autofs.c
@@ -242,7 +242,7 @@ int mount_mount(struct autofs_point *ap, const char *root, const char *name,
 
 	source = master_add_map_source(entry,
 				       info->type, info->format,
-				       time(NULL), argc, argv);
+				       monotonic_time(NULL), argc, argv);
 	if (!source) {
 		error(ap->logopt,
 		      MODPREFIX "failed to add map source to entry");
diff --git a/modules/parse_amd.c b/modules/parse_amd.c
index 899be40..6e29c6c 100644
--- a/modules/parse_amd.c
+++ b/modules/parse_amd.c
@@ -1181,7 +1181,7 @@ static int do_host_mount(struct autofs_point *ap, const char *name,
 					 "hosts", "sun", argc, pargv);
 	if (!instance) {
 		instance = master_add_source_instance(source,
-				 "hosts", "sun", time(NULL), argc, pargv);
+				 "hosts", "sun", monotonic_time(NULL), argc, pargv);
 		if (!instance) {
 			error(ap->logopt, MODPREFIX
 			     "failed to create source instance for hosts map");
diff --git a/modules/replicated.c b/modules/replicated.c
index f4cae3e..315e300 100644
--- a/modules/replicated.c
+++ b/modules/replicated.c
@@ -69,14 +69,14 @@ void seed_random(void)
 
 	fd = open_fd("/dev/urandom", O_RDONLY);
 	if (fd < 0) {
-		srandom(time(NULL));
+		srandom(monotonic_time(NULL));
 		return;
 	}
 
 	if (read(fd, &seed, sizeof(seed)) != -1)
 		srandom(seed);
 	else
-		srandom(time(NULL));
+		srandom(monotonic_time(NULL));
 
 	close(fd);
 

--
To unsubscribe from this list: send the line "unsubscribe autofs" in

  parent reply	other threads:[~2015-09-18  9:35 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-18  9:34 [PATCH v5 0/8] Series to change autofs to using a monotonic clock Ian Kent
2015-09-18  9:34 ` [PATCH v5 1/8] autofs-5.1.1 - define monotonic clock helper functions Ian Kent
2015-09-18  9:34 ` [PATCH v5 2/8] autofs-5.1.1 - use monotonic clock for alarm thread condition wait Ian Kent
2015-09-18  9:34 ` [PATCH v5 3/8] autofs-5.1.1 - define pending condition init helper function Ian Kent
2015-09-18  9:34 ` [PATCH v5 4/8] autofs-5.1.1 - use monotonic clock for direct mount condition Ian Kent
2015-09-18  9:34 ` [PATCH v5 5/8] autofs-5.1.1 - use monotonic clock for indirect " Ian Kent
2015-09-18  9:35 ` [PATCH v5 6/8] autofs-5.1.1 - change remaining gettimeofday() to use clock_gettime() Ian Kent
2015-09-18  9:35 ` Ian Kent [this message]
2015-09-18 10:12   ` [PATCH v5 7/8] autofs-5.1.1 - change time() to use monotonic_clock() Ning Yu
2015-09-20  2:12     ` Ian Kent
2015-09-18  9:35 ` [PATCH v5 8/8] autofs-5.1.1 - remove unused function elapsed() Ian Kent
2015-09-21  5:25   ` Ning Yu
2015-09-21  8:45     ` Ian Kent
2015-09-18 10:18 ` [PATCH v5 0/8] Series to change autofs to using a monotonic clock Ning Yu
2015-09-20  2:15   ` Ian Kent

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150918093509.29311.29388.stgit@pluto.fritz.box \
    --to=raven@themaw.net \
    --cc=autofs@vger.kernel.org \
    --cc=ning.yu@ubuntu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.