socsvn commit: r294505 - soc2013/def/crashdump-head/sys/kern

def at FreeBSD.org def at FreeBSD.org
Sat Nov 28 13:24:30 UTC 2015


Author: def
Date: Sat Nov 28 13:24:29 2015
New Revision: 294505
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=294505

Log:
  Reset offset when a crash dump was written.

Modified:
  soc2013/def/crashdump-head/sys/kern/kern_shutdown.c

Modified: soc2013/def/crashdump-head/sys/kern/kern_shutdown.c
==============================================================================
--- soc2013/def/crashdump-head/sys/kern/kern_shutdown.c	Sat Nov 28 12:12:28 2015	(r294504)
+++ soc2013/def/crashdump-head/sys/kern/kern_shutdown.c	Sat Nov 28 13:24:29 2015	(r294505)
@@ -73,6 +73,7 @@
 #include <sys/watchdog.h>
 
 #include <crypto/rijndael/rijndael-api-fst.h>
+#include <crypto/sha2/sha2.h>
 
 #include <ddb/ddb.h>
 
@@ -874,7 +875,6 @@
 	kdc->kdc_encryptedkeysize = encryptedkeysize;
 	bcopy(encryptedkey, kdc->kdc_encryptedkey, kdc->kdc_encryptedkeysize);
 
-	kdc->kdc_nextoffset = 0;
 	kdc->kdc_dumpkeysize = (sizeof(kdc->kdc_algorithm) +
 	    sizeof(kdc->kdc_iv) + sizeof(kdc->kdc_encryptedkeysize) +
 	    kdc->kdc_encryptedkeysize + KERNELDUMP_BLOCK_SIZE - 1) /
@@ -885,6 +885,13 @@
 	free(kdc, M_EKCD);
 	return (NULL);
 }
+
+static void
+kerneldumpcrypto_init(struct kerneldumpcrypto *kdc)
+{
+
+	kdc->kdc_nextoffset = 0;
+}
 #endif /* EKCD */
 
 uint32_t
@@ -926,6 +933,7 @@
 		    encryptedkey);
 		if (dumper.kdc == NULL)
 			return (EINVAL);
+		kerneldumpcrypto_init(dumper.kdc);
 	}
 #endif
 
@@ -974,8 +982,10 @@
 
 	/* Signal completion. */
 	if (virtual == NULL && physical == 0 && offset == 0 && length == 0) {
-		return (di->dumper(di->priv, virtual, physical, offset,
-		    length));
+		error = di->dumper(di->priv, virtual, physical, offset,
+		    length);
+		kerneldumpcrypto_init(kdc);
+		return (error);
 	}
 
 	/* Data have to be aligned to block size. */


More information about the svn-soc-all mailing list