Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Jun 2002 10:33:26 -0700 (PDT)
From:      Bosko Milekic <bmilekic@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 13599 for review
Message-ID:  <200206291733.g5THXQZu041720@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://people.freebsd.org/~peter/p4db/chv.cgi?CH=13599

Change 13599 by bmilekic@bmilekic_angela on 2002/06/29 10:32:45

	Final IFC before KSEIII (just saw julian's Email about
	commit about to go in).

Affected files ...

.. //depot/projects/interrupt/sys/alpha/include/kse.h#1 branch
.. //depot/projects/interrupt/sys/boot/alpha/boot1/boot1.c#3 integrate
.. //depot/projects/interrupt/sys/boot/alpha/libalpha/common.h#2 integrate
.. //depot/projects/interrupt/sys/conf/files.powerpc#4 integrate
.. //depot/projects/interrupt/sys/ddb/db_elf.c#2 integrate
.. //depot/projects/interrupt/sys/dev/bge/if_bge.c#5 integrate
.. //depot/projects/interrupt/sys/dev/fxp/if_fxp.c#4 integrate
.. //depot/projects/interrupt/sys/dev/lge/if_lge.c#3 integrate
.. //depot/projects/interrupt/sys/dev/nge/if_nge.c#4 integrate
.. //depot/projects/interrupt/sys/dev/sio/sio_ebus.c#2 integrate
.. //depot/projects/interrupt/sys/geom/geom_aes.c#2 integrate
.. //depot/projects/interrupt/sys/geom/geom_kern.c#3 integrate
.. //depot/projects/interrupt/sys/i386/include/kse.h#1 branch
.. //depot/projects/interrupt/sys/i386/isa/intr_machdep.h#5 integrate
.. //depot/projects/interrupt/sys/kern/kern_descrip.c#6 integrate
.. //depot/projects/interrupt/sys/kern/kern_event.c#4 integrate
.. //depot/projects/interrupt/sys/kern/kern_exec.c#7 integrate
.. //depot/projects/interrupt/sys/kern/kern_exit.c#6 integrate
.. //depot/projects/interrupt/sys/kern/kern_ktrace.c#6 integrate
.. //depot/projects/interrupt/sys/kern/kern_lockf.c#3 integrate
.. //depot/projects/interrupt/sys/kern/kern_physio.c#3 integrate
.. //depot/projects/interrupt/sys/kern/kern_prot.c#8 integrate
.. //depot/projects/interrupt/sys/kern/kern_resource.c#4 integrate
.. //depot/projects/interrupt/sys/kern/kern_sig.c#4 integrate
.. //depot/projects/interrupt/sys/kern/kern_subr.c#6 integrate
.. //depot/projects/interrupt/sys/kern/kern_synch.c#5 integrate
.. //depot/projects/interrupt/sys/kern/kern_sysctl.c#4 integrate
.. //depot/projects/interrupt/sys/kern/kern_thread.c#1 branch
.. //depot/projects/interrupt/sys/kern/kern_time.c#4 integrate
.. //depot/projects/interrupt/sys/kern/kern_xxx.c#3 integrate
.. //depot/projects/interrupt/sys/kern/subr_disklabel.c#5 integrate
.. //depot/projects/interrupt/sys/kern/subr_log.c#3 integrate
.. //depot/projects/interrupt/sys/kern/subr_mbuf.c#5 integrate
.. //depot/projects/interrupt/sys/kern/subr_prf.c#5 integrate
.. //depot/projects/interrupt/sys/kern/subr_prof.c#3 integrate
.. //depot/projects/interrupt/sys/kern/sys_pipe.c#7 integrate
.. //depot/projects/interrupt/sys/kern/sys_socket.c#5 integrate
.. //depot/projects/interrupt/sys/kern/uipc_cow.c#2 integrate
.. //depot/projects/interrupt/sys/kern/uipc_jumbo.c#2 integrate
.. //depot/projects/interrupt/sys/kern/uipc_socket.c#7 integrate
.. //depot/projects/interrupt/sys/kern/uipc_socket2.c#5 integrate
.. //depot/projects/interrupt/sys/kern/uipc_syscalls.c#7 integrate
.. //depot/projects/interrupt/sys/kern/uipc_usrreq.c#5 integrate
.. //depot/projects/interrupt/sys/kern/vfs_cache.c#6 integrate
.. //depot/projects/interrupt/sys/kern/vfs_export.c#4 integrate
.. //depot/projects/interrupt/sys/kern/vfs_subr.c#9 integrate
.. //depot/projects/interrupt/sys/kern/vfs_syscalls.c#9 integrate
.. //depot/projects/interrupt/sys/kern/vfs_vnops.c#9 integrate
.. //depot/projects/interrupt/sys/netinet/tcp_syncache.c#7 integrate
.. //depot/projects/interrupt/sys/nfsclient/nfs.h#4 integrate
.. //depot/projects/interrupt/sys/nfsclient/nfs_bio.c#4 integrate
.. //depot/projects/interrupt/sys/nfsclient/nfs_socket.c#4 integrate
.. //depot/projects/interrupt/sys/nfsclient/nfs_vnops.c#3 integrate
.. //depot/projects/interrupt/sys/pci/if_sk.c#3 integrate
.. //depot/projects/interrupt/sys/pci/if_ti.c#5 integrate
.. //depot/projects/interrupt/sys/pci/if_wb.c#3 integrate
.. //depot/projects/interrupt/sys/powerpc/include/cpufunc.h#5 integrate
.. //depot/projects/interrupt/sys/powerpc/include/critical.h#2 integrate
.. //depot/projects/interrupt/sys/powerpc/include/in_cksum.h#1 branch
.. //depot/projects/interrupt/sys/powerpc/include/pcb.h#4 integrate
.. //depot/projects/interrupt/sys/powerpc/include/pmap.h#5 integrate
.. //depot/projects/interrupt/sys/powerpc/powerpc/autoconf.c#3 integrate
.. //depot/projects/interrupt/sys/powerpc/powerpc/bcopy.c#2 integrate
.. //depot/projects/interrupt/sys/powerpc/powerpc/clock.c#4 integrate
.. //depot/projects/interrupt/sys/powerpc/powerpc/in_cksum.c#1 branch
.. //depot/projects/interrupt/sys/powerpc/powerpc/interrupt.c#1 branch
.. //depot/projects/interrupt/sys/powerpc/powerpc/locore.s#5 integrate
.. //depot/projects/interrupt/sys/powerpc/powerpc/ofw_machdep.c#4 integrate
.. //depot/projects/interrupt/sys/powerpc/powerpc/pmap.c#7 integrate
.. //depot/projects/interrupt/sys/powerpc/powerpc/swtch.s#5 integrate
.. //depot/projects/interrupt/sys/powerpc/powerpc/trap_subr.S#2 integrate
.. //depot/projects/interrupt/sys/sparc64/conf/GENERIC#6 integrate
.. //depot/projects/interrupt/sys/sparc64/include/kse.h#1 branch
.. //depot/projects/interrupt/sys/sparc64/include/profile.h#2 integrate
.. //depot/projects/interrupt/sys/sparc64/sparc64/pmap.c#8 integrate
.. //depot/projects/interrupt/sys/sys/event.h#3 integrate
.. //depot/projects/interrupt/sys/sys/file.h#5 integrate
.. //depot/projects/interrupt/sys/sys/jumbo.h#2 integrate
.. //depot/projects/interrupt/sys/sys/kse.h#3 integrate
.. //depot/projects/interrupt/sys/sys/mbuf.h#6 integrate
.. //depot/projects/interrupt/sys/sys/socketvar.h#6 integrate
.. //depot/projects/interrupt/sys/sys/vnode.h#5 integrate

Differences ...

==== //depot/projects/interrupt/sys/boot/alpha/boot1/boot1.c#3 (text+ko) ====

@@ -1,5 +1,5 @@
 /*
- * $FreeBSD: src/sys/boot/alpha/boot1/boot1.c,v 1.11 2002/06/11 10:19:59 phk Exp $
+ * $FreeBSD: src/sys/boot/alpha/boot1/boot1.c,v 1.12 2002/06/29 02:32:32 peter Exp $
  * From	$NetBSD: bootxx.c,v 1.4 1997/09/06 14:08:29 drochner Exp $ 
  */
 
@@ -253,7 +253,7 @@
     char *name = "/boot/loader";
     char *p;
     char filename[512];
-    void (*entry) __P((void));
+    void (*entry)(void);
     u_long start, freq;
     int	i;
 

==== //depot/projects/interrupt/sys/boot/alpha/libalpha/common.h#2 (text+ko) ====

@@ -1,11 +1,11 @@
 /*
- * $FreeBSD: src/sys/boot/alpha/libalpha/common.h,v 1.2 1999/08/28 00:39:26 peter Exp $
+ * $FreeBSD: src/sys/boot/alpha/libalpha/common.h,v 1.3 2002/06/29 02:32:32 peter Exp $
  * From: $NetBSD: common.h,v 1.2 1998/01/05 07:02:48 perry Exp $	
  */
 
-int prom_open __P((char*, int));
-void OSFpal __P((void));
-void halt __P((void));
-u_int64_t prom_dispatch __P((int, ...));
-int cpu_number __P((void));
-void switch_palcode __P((void));
+int prom_open(char*, int);
+void OSFpal(void);
+void halt(void);
+u_int64_t prom_dispatch(int, ...);
+int cpu_number(void);
+void switch_palcode(void);

==== //depot/projects/interrupt/sys/conf/files.powerpc#4 (text+ko) ====

@@ -1,7 +1,7 @@
 # This file tells config what files go into building a kernel,
 # files marked standard are always included.
 #
-# $FreeBSD: src/sys/conf/files.powerpc,v 1.10 2002/05/13 07:53:22 benno Exp $
+# $FreeBSD: src/sys/conf/files.powerpc,v 1.12 2002/06/29 09:50:20 benno Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -21,6 +21,8 @@
 powerpc/powerpc/extintr.c	standard
 powerpc/powerpc/fpu.c		standard
 powerpc/powerpc/fuswintr.c	standard
+powerpc/powerpc/in_cksum.c	optional	inet
+powerpc/powerpc/interrupt.c	standard
 powerpc/powerpc/machdep.c	standard
 powerpc/powerpc/nexus.c		standard
 powerpc/powerpc/ofwmagic.s	standard

==== //depot/projects/interrupt/sys/ddb/db_elf.c#2 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/ddb/db_elf.c,v 1.10 2002/05/07 10:59:52 bde Exp $ */
+/* $FreeBSD: src/sys/ddb/db_elf.c,v 1.11 2002/06/29 02:32:33 peter Exp $ */
 /*	$NetBSD: db_elf.c,v 1.4 1998/05/03 18:49:54 thorpej Exp $	*/
 
 /*-
@@ -56,7 +56,7 @@
 
 #include <machine/elf.h>
 
-static char *db_elf_find_strtab __P((db_symtab_t *));
+static char *db_elf_find_strtab(db_symtab_t *);
 
 #define	STAB_TO_SYMSTART(stab)	((Elf_Sym *)((stab)->start))
 #define	STAB_TO_SYMEND(stab)	((Elf_Sym *)((stab)->end))

==== //depot/projects/interrupt/sys/dev/bge/if_bge.c#5 (text+ko) ====

@@ -30,7 +30,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/bge/if_bge.c,v 1.15 2002/06/24 22:28:42 mp Exp $
+ * $FreeBSD: src/sys/dev/bge/if_bge.c,v 1.16 2002/06/29 01:36:59 alfred Exp $
  */
 
 /*
@@ -122,7 +122,7 @@
 
 #if !defined(lint)
 static const char rcsid[] =
-  "$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.15 2002/06/24 22:28:42 mp Exp $";
+  "$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.16 2002/06/29 01:36:59 alfred Exp $";
 #endif
 
 /*
@@ -181,7 +181,7 @@
 static int bge_alloc_jumbo_mem	(struct bge_softc *);
 static void bge_free_jumbo_mem	(struct bge_softc *);
 static void *bge_jalloc		(struct bge_softc *);
-static void bge_jfree		(caddr_t, void *);
+static void bge_jfree		(void *, void *);
 static int bge_newbuf_std	(struct bge_softc *, int, struct mbuf *);
 static int bge_newbuf_jumbo	(struct bge_softc *, int, struct mbuf *);
 static int bge_init_rx_ring_std	(struct bge_softc *);
@@ -663,7 +663,7 @@
  */
 static void
 bge_jfree(buf, args)
-	caddr_t buf;
+	void *buf;
 	void *args;
 {
 	struct bge_jpool_entry *entry;

==== //depot/projects/interrupt/sys/dev/fxp/if_fxp.c#4 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.130 2002/06/05 18:34:08 ambrisko Exp $
+ * $FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.131 2002/06/29 01:56:14 silby Exp $
  */
 
 /*
@@ -160,6 +160,7 @@
     { 0x1037,		"Intel Pro/100 Ethernet" },
     { 0x1038,		"Intel Pro/100 Ethernet" },
     { 0x1039,		"Intel Pro/100 Ethernet" },
+    { 0x103A,		"Intel Pro/100 Ethernet" },
     { 0,		NULL },
 };
 

==== //depot/projects/interrupt/sys/dev/lge/if_lge.c#3 (text+ko) ====

@@ -30,7 +30,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/lge/if_lge.c,v 1.11 2002/04/28 20:34:20 phk Exp $
+ * $FreeBSD: src/sys/dev/lge/if_lge.c,v 1.12 2002/06/29 01:36:59 alfred Exp $
  */
 
 /*
@@ -114,7 +114,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-  "$FreeBSD: src/sys/dev/lge/if_lge.c,v 1.11 2002/04/28 20:34:20 phk Exp $";
+  "$FreeBSD: src/sys/dev/lge/if_lge.c,v 1.12 2002/06/29 01:36:59 alfred Exp $";
 #endif
 
 /*
@@ -132,7 +132,7 @@
 static int lge_alloc_jumbo_mem	(struct lge_softc *);
 static void lge_free_jumbo_mem	(struct lge_softc *);
 static void *lge_jalloc		(struct lge_softc *);
-static void lge_jfree		(caddr_t, void *);
+static void lge_jfree		(void *, void *);
 
 static int lge_newbuf		(struct lge_softc *,
 					struct lge_rx_desc *,
@@ -917,7 +917,7 @@
  * Release a jumbo buffer.
  */
 static void lge_jfree(buf, args)
-	caddr_t			buf;
+	void			*buf;
 	void			*args;
 {
 	struct lge_softc	*sc;

==== //depot/projects/interrupt/sys/dev/nge/if_nge.c#4 (text+ko) ====

@@ -30,7 +30,7 @@
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  * THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/nge/if_nge.c,v 1.32 2002/05/04 11:15:33 phk Exp $
+ * $FreeBSD: src/sys/dev/nge/if_nge.c,v 1.33 2002/06/29 01:36:59 alfred Exp $
  */
 
 /*
@@ -132,7 +132,7 @@
 
 #ifndef lint
 static const char rcsid[] =
-  "$FreeBSD: src/sys/dev/nge/if_nge.c,v 1.32 2002/05/04 11:15:33 phk Exp $";
+  "$FreeBSD: src/sys/dev/nge/if_nge.c,v 1.33 2002/06/29 01:36:59 alfred Exp $";
 #endif
 
 #define NGE_CSUM_FEATURES	(CSUM_IP | CSUM_TCP | CSUM_UDP)
@@ -153,7 +153,7 @@
 static int nge_alloc_jumbo_mem	(struct nge_softc *);
 static void nge_free_jumbo_mem	(struct nge_softc *);
 static void *nge_jalloc		(struct nge_softc *);
-static void nge_jfree		(caddr_t, void *);
+static void nge_jfree		(void *, void *);
 
 static int nge_newbuf		(struct nge_softc *,
 					struct nge_desc *, struct mbuf *);
@@ -1203,7 +1203,7 @@
  * Release a jumbo buffer.
  */
 static void nge_jfree(buf, args)
-	caddr_t			buf;
+	void			*buf;
 	void			*args;
 {
 	struct nge_softc	*sc;

==== //depot/projects/interrupt/sys/dev/sio/sio_ebus.c#2 (text+ko) ====

@@ -24,7 +24,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID($FreeBSD: src/sys/dev/sio/sio_ebus.c,v 1.1 2002/06/18 01:19:31 obrien Exp $);
+__FBSDID($FreeBSD: src/sys/dev/sio/sio_ebus.c,v 1.2 2002/06/29 02:32:33 peter Exp $);
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -40,9 +40,9 @@
 #include <ofw/openfirm.h>
 #include <sparc64/ebus/ebusvar.h>
 
-int	sio_ofw_inlist __P((char *name, char *list[]));
-static	int	sio_ebus_attach __P((device_t dev));
-static	int	sio_ebus_probe __P((device_t dev));
+int	sio_ofw_inlist(char *name, char *list[]);
+static	int	sio_ebus_attach(device_t dev);
+static	int	sio_ebus_probe(device_t dev);
 
 static device_method_t sio_ebus_methods[] = {
 	/* Device interface */

==== //depot/projects/interrupt/sys/geom/geom_aes.c#2 (text+ko) ====

@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/geom/geom_aes.c,v 1.2 2002/06/09 10:57:33 phk Exp $
+ * $FreeBSD: src/sys/geom/geom_aes.c,v 1.3 2002/06/28 21:25:15 phk Exp $
  *
  * This method provides AES encryption with a compiled in key (default
  * all zeroes).
@@ -55,6 +55,9 @@
 #include <sys/malloc.h>
 #include <sys/lock.h>
 #include <sys/mutex.h>
+#include <sys/libkern.h>
+#include <sys/md5.h>
+#include <sys/endian.h>
 #endif
 #include <sys/errno.h>
 #include <geom/geom.h>
@@ -65,26 +68,83 @@
 
 #define AES_CLASS_NAME "AES"
 
+#define MASTER_KEY_LENGTH	(1024/8)
+
 static u_char *aes_magic = "<<FreeBSD-GEOM-AES>>";
+static u_char *aes_magic_random = "<<FreeBSD-GEOM-AES-RANDOM>>";
+static u_char *aes_magic_test = "<<FreeBSD-GEOM-AES-TEST>>";
 
-static u_char aes_key[128 / 8] = {
-	0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0,  0, 0, 0, 0
-};
 
 struct g_aes_softc {
+	enum {
+		KEY_ZERO,
+		KEY_RANDOM,
+		KEY_TEST
+	} keying;
 	u_int	sectorsize;
 	off_t	mediasize;
-	keyInstance ekey;
-	keyInstance dkey;
 	cipherInstance ci;
+	u_char master_key[MASTER_KEY_LENGTH];
 };
 
+/*
+ * Generate a sectorkey from the masterkey and the offset position.
+ *
+ * For KEY_ZERO we just return a key of all zeros.
+ *
+ * We feed the sector byte offset, 16 bytes of the master-key and
+ * the sector byte offset once more to MD5.
+ * The sector byte offset is converted to little-endian format first
+ * to support multi-architecture operation.
+ * We use 16 bytes from the master-key starting at the logical sector
+ * number modulus he length of the master-key.  If need be we wrap
+ * around to the start of the master-key.
+ */
+
+static void
+g_aes_makekey(struct g_aes_softc *sc, off_t off, keyInstance *ki, int dir)
+{
+	MD5_CTX cx;
+	u_int64_t u64;
+	u_int u, u1;
+	u_char *p, buf[16];
+
+	if (sc->keying == KEY_ZERO) {
+		rijndael_makeKey(ki, dir, 128, sc->master_key);
+		return;
+	}
+	MD5Init(&cx);
+	u64 = htole64(off);
+	MD5Update(&cx, (u_char *)&u64, sizeof(u64));
+	u = off / sc->sectorsize;
+	u %= sizeof sc->master_key;
+	p = sc->master_key + u;
+	if (u + 16 <= sizeof(sc->master_key)) {
+		MD5Update(&cx, p, 16);
+	} else {
+		u1 = sizeof sc->master_key - u;
+		MD5Update(&cx, p, u1);
+		MD5Update(&cx, sc->master_key, 16 - u1);
+		u1 = 0;				/* destroy evidence */
+	}
+	u = 0;					/* destroy evidence */
+	MD5Update(&cx, (u_char *)&u64, sizeof(u64));
+	u64 = 0;				/* destroy evidence */
+	MD5Final(buf, &cx);
+	bzero(&cx, sizeof cx);			/* destroy evidence */
+	rijndael_makeKey(ki, dir, 128, buf);
+	bzero(buf, sizeof buf);			/* destroy evidence */
+
+}
+
 static void
 g_aes_read_done(struct bio *bp)
 {
 	struct g_geom *gp;
 	struct g_aes_softc *sc;
 	u_char *p, *b, *e, *sb;
+	keyInstance dkey;
+	off_t o;
 
 	gp = bp->bio_from->geom;
 	sc = gp->softc;
@@ -92,17 +152,28 @@
 	b = bp->bio_data;
 	e = bp->bio_data;
 	e += bp->bio_length;
+	o = bp->bio_offset - sc->sectorsize;
 	for (p = b; p < e; p += sc->sectorsize) {
-		rijndael_blockDecrypt(&sc->ci, &sc->dkey, p, sc->sectorsize * 8, sb);
+		g_aes_makekey(sc, o, &dkey, DIR_DECRYPT);
+		rijndael_blockDecrypt(&sc->ci, &dkey, p, sc->sectorsize * 8, sb);
 		bcopy(sb, p, sc->sectorsize);
+		o += sc->sectorsize;
 	}
+	bzero(&dkey, sizeof dkey);		/* destroy evidence */
+	bzero(sb, sc->sectorsize);		/* destroy evidence */
+	g_free(sb);
 	g_std_done(bp);
 }
 
 static void
 g_aes_write_done(struct bio *bp)
 {
+	struct g_aes_softc *sc;
+	struct g_geom *gp;
 
+	gp = bp->bio_to->geom;
+	sc = gp->softc;
+	bzero(bp->bio_data, bp->bio_length);	/* destroy evidence */
 	g_free(bp->bio_data);
 	g_std_done(bp);
 }
@@ -115,6 +186,8 @@
 	struct g_aes_softc *sc;
 	struct bio *bp2;
 	u_char *p1, *p2, *b, *e;
+	keyInstance ekey;
+	off_t o;
 
 	gp = bp->bio_to->geom;
 	cp = LIST_FIRST(&gp->consumer);
@@ -135,11 +208,15 @@
 		e = bp->bio_data;
 		e += bp->bio_length;
 		p2 = bp2->bio_data;
+		o = bp->bio_offset;
 		for (p1 = b; p1 < e; p1 += sc->sectorsize) {
-			rijndael_blockEncrypt(&sc->ci, &sc->ekey,
+			g_aes_makekey(sc, o, &ekey, DIR_ENCRYPT);
+			rijndael_blockEncrypt(&sc->ci, &ekey,
 			    p1, sc->sectorsize * 8, p2);
 			p2 += sc->sectorsize;
+			o += sc->sectorsize;
 		}
+		bzero(&ekey, sizeof ekey);	/* destroy evidence */
 		g_io_request(bp2, cp);
 		break;
 	case BIO_GETATTR:
@@ -166,6 +243,7 @@
 {
 	struct g_geom *gp;
 	struct g_provider *pp;
+	struct g_aes_softc *sc;
 	int error;
 
 	g_trace(G_T_TOPOLOGY, "g_aes_orphan(%p/%s)", cp, cp->provider->name);
@@ -174,10 +252,12 @@
 		("g_aes_orphan with error == 0"));
 
 	gp = cp->geom;
+	sc = gp->softc;
 	gp->flags |= G_GEOM_WITHER;
 	error = cp->provider->error;
 	LIST_FOREACH(pp, &gp->provider, provider)
 		g_orphan_provider(pp, error);
+	bzero(sc, sizeof(struct g_aes_softc));	/* destroy evidence */
 	return;
 }
 
@@ -238,16 +318,46 @@
 		if (buf == NULL || error != 0) {
 			break;
 		}
-		if (memcmp(buf, aes_magic, strlen(aes_magic)))
+		sc = g_malloc(sizeof(struct g_aes_softc), M_WAITOK | M_ZERO);
+		if (!memcmp(buf, aes_magic, strlen(aes_magic))) {
+			sc->keying = KEY_ZERO;
+		} else if (!memcmp(buf, aes_magic_random, 
+		    strlen(aes_magic_random))) {
+			sc->keying = KEY_RANDOM;
+		} else if (!memcmp(buf, aes_magic_test, 
+		    strlen(aes_magic_test))) {
+			sc->keying = KEY_TEST;
+		} else {
+			g_free(sc);
 			break;
-		sc = g_malloc(sizeof(struct g_aes_softc), M_WAITOK | M_ZERO);
+		}
 		gp->softc = sc;
 		gp->access = g_aes_access;
 		sc->sectorsize = sectorsize;
 		sc->mediasize = mediasize - sectorsize;
 		rijndael_cipherInit(&sc->ci, MODE_CBC, NULL);
-		rijndael_makeKey(&sc->ekey, DIR_ENCRYPT, 128, aes_key);
-		rijndael_makeKey(&sc->dkey, DIR_DECRYPT, 128, aes_key);
+		if (sc->keying == KEY_TEST) {
+			int i;
+			u_char *p;
+
+			p = sc->master_key;
+			for (i = 0; i < sizeof sc->master_key; i ++) 
+				*p++ = i;
+		}
+		if (sc->keying == KEY_RANDOM) {
+			int i;
+			u_int32_t u;
+			u_char *p;
+
+			p = sc->master_key;
+			for (i = 0; i < sizeof sc->master_key; i += sizeof u) {
+				u = arc4random();
+				*p++ = u;
+				*p++ = u >> 8;
+				*p++ = u >> 16;
+				*p++ = u >> 24;
+			}
+		}
 		pp = g_new_providerf(gp, gp->name);
 		pp->mediasize = mediasize - sectorsize;
 		g_error_provider(pp, 0);

==== //depot/projects/interrupt/sys/geom/geom_kern.c#3 (text+ko) ====

@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/geom/geom_kern.c,v 1.3 2002/03/26 22:07:38 phk Exp $
+ * $FreeBSD: src/sys/geom/geom_kern.c,v 1.4 2002/06/29 07:47:20 julian Exp $
  */
 
 #include <sys/param.h>
@@ -63,7 +63,7 @@
 g_up_procbody(void)
 {
 	struct proc *p = g_up_proc;
-	struct thread *tp = &p->p_xxthread;
+	struct thread *tp = FIRST_THREAD_IN_PROC(p);
 
 	curthread->td_base_pri = PRIBIO;
 	for(;;) {
@@ -86,7 +86,7 @@
 g_down_procbody(void)
 {
 	struct proc *p = g_down_proc;
-	struct thread *tp = &p->p_xxthread;
+	struct thread *tp = FIRST_THREAD_IN_PROC(p);
 
 	curthread->td_base_pri = PRIBIO;
 	for(;;) {

==== //depot/projects/interrupt/sys/i386/isa/intr_machdep.h#5 (text+ko) ====

@@ -30,7 +30,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/i386/isa/intr_machdep.h,v 1.40 2002/04/06 08:25:05 nyan Exp $
+ * $FreeBSD: src/sys/i386/isa/intr_machdep.h,v 1.41 2002/06/29 02:32:33 peter Exp $
  */
 
 #ifndef _I386_ISA_INTR_MACHDEP_H_
@@ -140,7 +140,7 @@
  * Type of the first (asm) part of an interrupt handler.
  */
 typedef void inthand_t(u_int cs, u_int ef, u_int esp, u_int ss);
-typedef void unpendhand_t __P((void));
+typedef void unpendhand_t(void);
 
 #define	IDTVEC(name)	__CONCAT(X,name)
 

==== //depot/projects/interrupt/sys/kern/kern_descrip.c#6 (text+ko) ====

@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)kern_descrip.c	8.6 (Berkeley) 4/19/94
- * $FreeBSD: src/sys/kern/kern_descrip.c,v 1.148 2002/05/31 11:52:29 tanimura Exp $
+ * $FreeBSD: src/sys/kern/kern_descrip.c,v 1.149 2002/06/29 01:50:24 alfred Exp $
  */
 
 #include "opt_compat.h"
@@ -99,7 +99,7 @@
 static int do_dup(struct filedesc *fdp, int old, int new, register_t *retval, struct thread *td);
 static int badfo_readwrite(struct file *fp, struct uio *uio,
     struct ucred *cred, int flags, struct thread *td);
-static int badfo_ioctl(struct file *fp, u_long com, caddr_t data,
+static int badfo_ioctl(struct file *fp, u_long com, void *data,
     struct thread *td);
 static int badfo_poll(struct file *fp, int events,
     struct ucred *cred, struct thread *td);
@@ -313,34 +313,34 @@
 		fp->f_flag &= ~FCNTLFLAGS;
 		fp->f_flag |= FFLAGS(uap->arg & ~O_ACCMODE) & FCNTLFLAGS;
 		tmp = fp->f_flag & FNONBLOCK;
-		error = fo_ioctl(fp, FIONBIO, (caddr_t)&tmp, td);
+		error = fo_ioctl(fp, FIONBIO, &tmp, td);
 		if (error) {
 			fdrop(fp, td);
 			break;
 		}
 		tmp = fp->f_flag & FASYNC;
-		error = fo_ioctl(fp, FIOASYNC, (caddr_t)&tmp, td);
+		error = fo_ioctl(fp, FIOASYNC, &tmp, td);
 		if (!error) {
 			fdrop(fp, td);
 			break;
 		}
 		fp->f_flag &= ~FNONBLOCK;
 		tmp = 0;
-		(void)fo_ioctl(fp, FIONBIO, (caddr_t)&tmp, td);
+		(void)fo_ioctl(fp, FIONBIO, &tmp, td);
 		fdrop(fp, td);
 		break;
 
 	case F_GETOWN:
 		fhold(fp);
 		FILEDESC_UNLOCK(fdp);
-		error = fo_ioctl(fp, FIOGETOWN, (caddr_t)td->td_retval, td);
+		error = fo_ioctl(fp, FIOGETOWN, (void *)td->td_retval, td);
 		fdrop(fp, td);
 		break;
 
 	case F_SETOWN:
 		fhold(fp);
 		FILEDESC_UNLOCK(fdp);
-		error = fo_ioctl(fp, FIOSETOWN, (caddr_t)&uap->arg, td);
+		error = fo_ioctl(fp, FIOSETOWN, &uap->arg, td);
 		fdrop(fp, td);
 		break;
 
@@ -363,8 +363,7 @@
 		vp = (struct vnode *)fp->f_data;
 
 		/* Copy in the lock structure */
-		error = copyin((caddr_t)(intptr_t)uap->arg, (caddr_t)&fl,
-		    sizeof(fl));
+		error = copyin((caddr_t)(intptr_t)uap->arg, &fl, sizeof(fl));
 		if (error) {
 			fdrop(fp, td);
 			break;
@@ -434,8 +433,7 @@
 		vp = (struct vnode *)fp->f_data;
 
 		/* Copy in the lock structure */
-		error = copyin((caddr_t)(intptr_t)uap->arg, (caddr_t)&fl,
-		    sizeof(fl));
+		error = copyin((caddr_t)(intptr_t)uap->arg, &fl, sizeof(fl));
 		if (error) {
 			fdrop(fp, td);
 			break;
@@ -461,8 +459,8 @@
 			    &fl, F_POSIX);
 		fdrop(fp, td);
 		if (error == 0) {
-			error = copyout((caddr_t)&fl,
-				    (caddr_t)(intptr_t)uap->arg, sizeof(fl));
+			error = copyout(&fl, (caddr_t)(intptr_t)uap->arg,
+			    sizeof(fl));
 		}
 		break;
 	default:
@@ -835,7 +833,7 @@
 	error = fo_stat(fp, &ub, td);
 	if (error == 0) {
 		cvtstat(&ub, &oub);
-		error = copyout((caddr_t)&oub, (caddr_t)uap->sb, sizeof (oub));
+		error = copyout(&oub, uap->sb, sizeof (oub));
 	}
 	fdrop(fp, td);
 done2:
@@ -871,7 +869,7 @@
 		goto done2;
 	error = fo_stat(fp, &ub, td);
 	if (error == 0)
-		error = copyout((caddr_t)&ub, (caddr_t)uap->sb, sizeof (ub));
+		error = copyout(&ub, uap->sb, sizeof (ub));
 	fdrop(fp, td);
 done2:
 	mtx_unlock(&Giant);
@@ -907,7 +905,7 @@
 	error = fo_stat(fp, &ub, td);
 	if (error == 0) {
 		cvtnstat(&ub, &nub);
-		error = copyout((caddr_t)&nub, (caddr_t)uap->sb, sizeof (nub));
+		error = copyout(&nub, uap->sb, sizeof (nub));
 	}
 	fdrop(fp, td);
 done2:
@@ -1563,7 +1561,7 @@
 				break;
 			}
 			NDFREE(&nd, NDF_ONLY_PNBUF);
-			fp->f_data = (caddr_t)nd.ni_vp;
+			fp->f_data = nd.ni_vp;
 			fp->f_flag = flags;
 			fp->f_ops = &vnops;
 			fp->f_type = DTYPE_VNODE;
@@ -2067,7 +2065,7 @@
 		return (error);
 	}
 
-	error = SYSCTL_OUT(req, (caddr_t)&filehead, sizeof(filehead));
+	error = SYSCTL_OUT(req, &filehead, sizeof(filehead));
 	if (error) {
 		sx_sunlock(&filelist_lock);
 		return (error);
@@ -2077,7 +2075,7 @@
 	 * followed by an array of file structures
 	 */
 	LIST_FOREACH(fp, &filehead, f_list) {
-		error = SYSCTL_OUT(req, (caddr_t)fp, sizeof (struct file));
+		error = SYSCTL_OUT(req, fp, sizeof (struct file));
 		if (error) {
 			sx_sunlock(&filelist_lock);
 			return (error);
@@ -2145,7 +2143,7 @@
 badfo_ioctl(fp, com, data, td)
 	struct file *fp;
 	u_long com;
-	caddr_t data;
+	void *data;
 	struct thread *td;
 {
 

==== //depot/projects/interrupt/sys/kern/kern_event.c#4 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/kern/kern_event.c,v 1.39 2002/05/19 00:14:48 jhb Exp $
+ * $FreeBSD: src/sys/kern/kern_event.c,v 1.41 2002/06/29 01:50:24 alfred Exp $
  */
 
 #include <sys/param.h>
@@ -60,7 +60,7 @@
 		    struct ucred *cred, int flags, struct thread *td);
 static int	kqueue_write(struct file *fp, struct uio *uio,
 		    struct ucred *cred, int flags, struct thread *td);
-static int	kqueue_ioctl(struct file *fp, u_long com, caddr_t data,
+static int	kqueue_ioctl(struct file *fp, u_long com, void *data,
 		    struct thread *td);
 static int 	kqueue_poll(struct file *fp, int events, struct ucred *cred,
 		    struct thread *td);
@@ -334,7 +334,7 @@
 	    M_KQUEUE, M_WAITOK);
 	callout_init(calloutp, 0);
 	callout_reset(calloutp, tticks, filt_timerexpire, kn);
-	kn->kn_hook = (caddr_t)calloutp;
+	kn->kn_hook = calloutp;
 
 	return (0);
 }
@@ -380,7 +380,7 @@
 	fp->f_type = DTYPE_KQUEUE;
 	fp->f_ops = &kqueueops;
 	TAILQ_INIT(&kq->kq_head);
-	fp->f_data = (caddr_t)kq;
+	fp->f_data = kq;
 	FILE_UNLOCK(fp);
 	FILEDESC_LOCK(fdp);
 	td->td_retval[0] = fd;
@@ -446,8 +446,8 @@
 				if (uap->nevents != 0) {
 					kevp->flags = EV_ERROR;
 					kevp->data = error;
-					(void) copyout((caddr_t)kevp,
-					    (caddr_t)uap->eventlist,
+					(void) copyout(kevp,
+					    uap->eventlist,
 					    sizeof(*kevp));
 					uap->eventlist++;
 					uap->nevents--;
@@ -751,7 +751,7 @@
 		count--;
 		if (nkev == KQ_NEVENTS) {
 			splx(s);
-			error = copyout((caddr_t)&kq->kq_kev, (caddr_t)ulistp,
+			error = copyout(&kq->kq_kev, ulistp,
 			    sizeof(struct kevent) * nkev);
 			ulistp += nkev;
 			nkev = 0;
@@ -765,7 +765,7 @@
 	splx(s);
 done:
 	if (nkev != 0)
-		error = copyout((caddr_t)&kq->kq_kev, (caddr_t)ulistp,
+		error = copyout(&kq->kq_kev, ulistp,
 		    sizeof(struct kevent) * nkev);
         td->td_retval[0] = maxevents - count;
 	return (error);
@@ -793,7 +793,7 @@
 
 /*ARGSUSED*/
 static int
-kqueue_ioctl(struct file *fp, u_long com, caddr_t data, struct thread *td)
+kqueue_ioctl(struct file *fp, u_long com, void *data, struct thread *td)
 {
 	return (ENOTTY);
 }
@@ -980,7 +980,7 @@
 			FILEDESC_LOCK(fdp);
 			goto retry;
 		}
-		bcopy((caddr_t)fdp->fd_knlist, (caddr_t)list,
+		bcopy(fdp->fd_knlist, list,
 		    fdp->fd_knlistsize * sizeof(struct klist *));
 		bzero((caddr_t)list +
 		    fdp->fd_knlistsize * sizeof(struct klist *),

==== //depot/projects/interrupt/sys/kern/kern_exec.c#7 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/kern/kern_exec.c,v 1.167 2002/06/25 18:14:38 alc Exp $
+ * $FreeBSD: src/sys/kern/kern_exec.c,v 1.168 2002/06/29 01:50:24 alfred Exp $
  */
 
 #include <sys/param.h>
@@ -353,7 +353,7 @@
 	p->p_flag |= P_EXEC;
 	if (p->p_pptr && (p->p_flag & P_PPWAIT)) {
 		p->p_flag &= ~P_PPWAIT;
-		wakeup((caddr_t)p->p_pptr);
+		wakeup(p->p_pptr);
 	}
 
 	/*

==== //depot/projects/interrupt/sys/kern/kern_exit.c#6 (text+ko) ====

@@ -36,7 +36,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)kern_exit.c	8.7 (Berkeley) 2/12/94
- * $FreeBSD: src/sys/kern/kern_exit.c,v 1.168 2002/06/24 15:48:01 jake Exp $
+ * $FreeBSD: src/sys/kern/kern_exit.c,v 1.169 2002/06/29 01:50:24 alfred Exp $
  */
 
 #include "opt_compat.h"
@@ -157,7 +157,7 @@
 			q = q->p_peers;
 		}
 		while (p->p_peers) 
-			msleep((caddr_t)p, &p->p_mtx, PWAIT, "exit1", 0);
+			msleep(p, &p->p_mtx, PWAIT, "exit1", 0);
 	}
 	PROC_UNLOCK(p);
 
@@ -212,7 +212,7 @@
 		while (q->p_peers != p)
 			q = q->p_peers;
 		q->p_peers = p->p_peers;
-		wakeup((caddr_t)p->p_leader);
+		wakeup(p->p_leader);
 	}
 	PROC_UNLOCK(p->p_leader);
 
@@ -348,7 +348,7 @@
 	sx_xlock(&proctree_lock);
 	q = LIST_FIRST(&p->p_children);
 	if (q != NULL)		/* only need this if any child is S_ZOMB */
-		wakeup((caddr_t) initproc);
+		wakeup(initproc);
 	for (; q != NULL; q = nq) {
 		nq = LIST_NEXT(q, p_sibling);
 		PROC_LOCK(q);
@@ -401,7 +401,7 @@
 		 * continue.
 		 */
 		if (LIST_EMPTY(&pp->p_children))
-			wakeup((caddr_t)pp);
+			wakeup(pp);
 	}
 
 	if (p->p_sigparent && p->p_pptr != initproc)
@@ -414,7 +414,7 @@
 	 * If this is a kthread, then wakeup anyone waiting for it to exit.
 	 */
 	if (p->p_flag & P_KTHREAD)
-		wakeup((caddr_t)p);
+		wakeup(p);
 	PROC_UNLOCK(p);
 	
 	/*
@@ -569,8 +569,8 @@
 			if (uap->status) {
 				status = p->p_xstat;	/* convert to int */
 				PROC_UNLOCK(p);
-				if ((error = copyout((caddr_t)&status,
-				    (caddr_t)uap->status, sizeof(status)))) {
+				if ((error = copyout(&status,
+				    uap->status, sizeof(status)))) {
 					sx_xunlock(&proctree_lock);
 					mtx_unlock(&Giant);
 					return (error);
@@ -580,9 +580,8 @@
 			if (uap->rusage) {
 				bcopy(p->p_ru, &ru, sizeof(ru));
 				PROC_UNLOCK(p);
-				if ((error = copyout((caddr_t)&ru,
-				    (caddr_t)uap->rusage,
-				    sizeof (struct rusage)))) {
+				if ((error = copyout(&ru,
+				    uap->rusage, sizeof (struct rusage)))) {
 					sx_xunlock(&proctree_lock);
 					mtx_unlock(&Giant);
 					return (error);
@@ -599,7 +598,7 @@
 				proc_reparent(p, t);
 				PROC_UNLOCK(p);
 				psignal(t, SIGCHLD);
-				wakeup((caddr_t)t);
+				wakeup(t);
 				PROC_UNLOCK(t);
 				sx_xunlock(&proctree_lock);
 				mtx_unlock(&Giant);
@@ -685,8 +684,8 @@
 			if (uap->status) {
 				status = W_STOPCODE(p->p_xstat);
 				PROC_UNLOCK(p);
-				error = copyout((caddr_t)&status,
-					(caddr_t)uap->status, sizeof(status));
+				error = copyout(&status,
+					uap->status, sizeof(status));
 			} else {
 				PROC_UNLOCK(p);
 				error = 0;
@@ -702,8 +701,8 @@
 
 			if (uap->status) {
 				status = SIGCONT;
-				error = copyout((caddr_t)&status,
-				    (caddr_t)uap->status, sizeof(status));
+				error = copyout(&status,
+				    uap->status, sizeof(status));
 			} else
 				error = 0;
 
@@ -725,7 +724,7 @@
 	}
 	PROC_LOCK(q);
 	sx_xunlock(&proctree_lock);

>>> TRUNCATED FOR MAIL (1000 lines) <<<

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe p4-projects" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200206291733.g5THXQZu041720>