Module Name:    src
Committed By:   mrg
Date:           Fri Aug 15 07:39:25 UTC 2014

Modified Files:
        src/sys/kern: subr_prf.c

Log Message:
avoid calling into time code when cold, and avoid calling nanotime()
if we're not going to use the result anyway.

XXX: not necessarily the best fix, but better than crashing *early*
boot due to too-early nanotime() calls.

XXX: pullup.


To generate a diff of this commit:
cvs rdiff -u -r1.154 -r1.155 src/sys/kern/subr_prf.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/subr_prf.c
diff -u src/sys/kern/subr_prf.c:1.154 src/sys/kern/subr_prf.c:1.155
--- src/sys/kern/subr_prf.c:1.154	Sun Aug 10 16:44:36 2014
+++ src/sys/kern/subr_prf.c	Fri Aug 15 07:39:25 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: subr_prf.c,v 1.154 2014/08/10 16:44:36 tls Exp $	*/
+/*	$NetBSD: subr_prf.c,v 1.155 2014/08/15 07:39:25 mrg Exp $	*/
 
 /*-
  * Copyright (c) 1986, 1988, 1991, 1993
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_prf.c,v 1.154 2014/08/10 16:44:36 tls Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_prf.c,v 1.155 2014/08/15 07:39:25 mrg Exp $");
 
 #include "opt_ddb.h"
 #include "opt_ipkdb.h"
@@ -1200,7 +1200,6 @@ kprintf(const char *fmt0, int oflags, vo
 	const char *xdigs;	/* digits for [xX] conversion */
 	char bf[KPRINTF_BUFSIZE]; /* space for %c, %[diouxX] */
 	char *tailp;		/* tail pointer for snprintf */
-	struct timespec ts;
 
 	if (oflags == TOBUFONLY && (vp != NULL))
 		tailp = *(char **)vp;
@@ -1549,9 +1548,12 @@ done:
 		*(char **)vp = sbuf;
 	(*v_flush)();
 
-	(void)nanotime(&ts);
 #ifdef RND_PRINTF
-	SHA512_Update(&kprnd_sha, (char *)&ts, sizeof(ts));
+	if (!cold) {
+		struct timespec ts;
+		(void)nanotime(&ts);
+		SHA512_Update(&kprnd_sha, (char *)&ts, sizeof(ts));
+	}
 #endif
 	return ret;
 }

Reply via email to