Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Jun 2002 13:38:51 -0400
From:      Bosko Milekic <bmilekic@unixdaemons.com>
To:        Bosko Milekic <bmilekic@freebsd.org>
Cc:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   Re: PERFORCE change 13599 for review
Message-ID:  <20020629133851.A12121@unixdaemons.com>
In-Reply-To: <200206291733.g5THXQZu041720@freefall.freebsd.org>; from bmilekic@freebsd.org on Sat, Jun 29, 2002 at 10:33:26AM -0700
References:  <200206291733.g5THXQZu041720@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

  I think I almost caught exactly everything right before the first part
  of KSE III.  :-)

On Sat, Jun 29, 2002 at 10:33:26AM -0700, Bosko Milekic wrote:
> 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) <<<
> 

-- 
Bosko Milekic
bmilekic@unixdaemons.com
bmilekic@FreeBSD.org


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?20020629133851.A12121>