From owner-svn-src-projects@FreeBSD.ORG Sun Jan 24 18:56:57 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CDA741065672; Sun, 24 Jan 2010 18:56:57 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B8BAF8FC13; Sun, 24 Jan 2010 18:56:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0OIuv68014404; Sun, 24 Jan 2010 18:56:57 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0OIuvkY014376; Sun, 24 Jan 2010 18:56:57 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001241856.o0OIuvkY014376@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 24 Jan 2010 18:56:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r202942 - in projects/ppc64: gnu/lib/csu gnu/lib/libgcc lib/csu/powerpc64 lib/libc/gmon lib/libc/powerpc64 lib/libc/powerpc64/gen lib/libc/powerpc64/sys lib/libc/stdlib lib/libthr/arch/... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 24 Jan 2010 18:56:57 -0000 Author: nwhitehorn Date: Sun Jan 24 18:56:57 2010 New Revision: 202942 URL: http://svn.freebsd.org/changeset/base/202942 Log: Initial support for a PPC64 userland. RTLD is currently missing, and a shared version of libc fails to build due to bugs in binutils, but this is sufficient to build and run a statically linked 64-bit "Hello World". Added: projects/ppc64/lib/csu/powerpc64/ projects/ppc64/lib/csu/powerpc64/Makefile projects/ppc64/lib/csu/powerpc64/crt1.c projects/ppc64/lib/csu/powerpc64/crti.S projects/ppc64/lib/csu/powerpc64/crtn.S projects/ppc64/lib/libc/powerpc64/ - copied from r202650, projects/ppc64/lib/libc/powerpc/ projects/ppc64/lib/libthr/arch/powerpc64/ - copied from r202650, projects/ppc64/lib/libthr/arch/powerpc/ projects/ppc64/lib/libthr/arch/powerpc64/powerpc64/ - copied from r202650, projects/ppc64/lib/libthr/arch/powerpc/powerpc/ projects/ppc64/secure/lib/libcrypto/opensslconf-powerpc64.h - copied, changed from r202650, projects/ppc64/secure/lib/libcrypto/opensslconf-powerpc.h Deleted: projects/ppc64/lib/libthr/arch/powerpc64/powerpc/ Modified: projects/ppc64/gnu/lib/csu/Makefile projects/ppc64/gnu/lib/libgcc/Makefile projects/ppc64/lib/libc/gmon/gmon.c projects/ppc64/lib/libc/powerpc64/Makefile.inc projects/ppc64/lib/libc/powerpc64/SYS.h projects/ppc64/lib/libc/powerpc64/Symbol.map projects/ppc64/lib/libc/powerpc64/gen/_ctx_start.S projects/ppc64/lib/libc/powerpc64/gen/makecontext.c projects/ppc64/lib/libc/powerpc64/gen/signalcontext.c projects/ppc64/lib/libc/powerpc64/gen/syncicache.c projects/ppc64/lib/libc/powerpc64/sys/brk.S projects/ppc64/lib/libc/powerpc64/sys/cerror.S projects/ppc64/lib/libc/powerpc64/sys/exect.S projects/ppc64/lib/libc/powerpc64/sys/pipe.S projects/ppc64/lib/libc/powerpc64/sys/ptrace.S projects/ppc64/lib/libc/powerpc64/sys/sbrk.S projects/ppc64/lib/libc/powerpc64/sys/setlogin.S projects/ppc64/lib/libc/stdlib/malloc.c projects/ppc64/lib/libthr/arch/powerpc64/include/pthread_md.h projects/ppc64/sys/powerpc/include/asm.h projects/ppc64/sys/powerpc/include/profile.h projects/ppc64/sys/sys/cdefs.h Modified: projects/ppc64/gnu/lib/csu/Makefile ============================================================================== --- projects/ppc64/gnu/lib/csu/Makefile Sun Jan 24 18:18:52 2010 (r202941) +++ projects/ppc64/gnu/lib/csu/Makefile Sun Jan 24 18:56:57 2010 (r202942) @@ -30,7 +30,7 @@ CFLAGS+= -x assembler-with-cpp # Ugly ha CFLAGS+= -include osreldate.h .undef SRCS # hack for 'make depend' .endif -.if ${MACHINE_ARCH} == "powerpc" +.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpc64" TGTOBJS= crtsavres.o SRCS+= crtsavres.asm .endif Modified: projects/ppc64/gnu/lib/libgcc/Makefile ============================================================================== --- projects/ppc64/gnu/lib/libgcc/Makefile Sun Jan 24 18:18:52 2010 (r202941) +++ projects/ppc64/gnu/lib/libgcc/Makefile Sun Jan 24 18:56:57 2010 (r202942) @@ -136,6 +136,11 @@ LIB2FUNCS_EXTRA = tramp.asm LIB2FUNCS_STATIC_EXTRA = eabi.asm .endif +.if ${TARGET_ARCH} == "powerpc64" +# from config/rs6000/t-ppccomm +LIB2FUNCS_EXTRA = tramp.asm +.endif + .if ${TARGET_ARCH} == "sparc64" # from config/sparc/t-elf LIB1ASMSRC = lb1spc.asm Added: projects/ppc64/lib/csu/powerpc64/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/lib/csu/powerpc64/Makefile Sun Jan 24 18:56:57 2010 (r202942) @@ -0,0 +1,23 @@ +# $FreeBSD: projects/ppc64/lib/csu/powerpc/Makefile 100872 2002-07-29 09:40:17Z ru $ + +.PATH: ${.CURDIR}/../common + +SRCS= crt1.c crti.S crtn.S +OBJS= ${SRCS:N*.h:R:S/$/.o/g} +OBJS+= gcrt1.o +CFLAGS+= -Wall -Wno-unused \ + -I${.CURDIR}/../common \ + -I${.CURDIR}/../../libc/include + +all: ${OBJS} + +CLEANFILES= ${OBJS} + +gcrt1.o: crt1.c + ${CC} ${CFLAGS} -DGCRT -c -o gcrt1.o ${.ALLSRC} + +realinstall: + ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${OBJS} ${DESTDIR}${LIBDIR} + +.include Added: projects/ppc64/lib/csu/powerpc64/crt1.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/lib/csu/powerpc64/crt1.c Sun Jan 24 18:56:57 2010 (r202942) @@ -0,0 +1,123 @@ +/* LINTLIBRARY */ +/*- + * Copyright 2001 David E. O'Brien. + * All rights reserved. + * Copyright 1996-1998 John D. Polstra. + * All rights reserved. + * Copyright (c) 1997 Jason R. Thorpe. + * Copyright (c) 1995 Christopher G. Demetriou + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed for the + * FreeBSD Project. See http://www.freebsd.org/ for + * information about FreeBSD. + * This product includes software developed for the + * NetBSD Project. See http://www.netbsd.org/ for + * information about NetBSD. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef lint +#ifndef __GNUC__ +#error "GCC is needed to compile this file" +#endif +#endif /* lint */ + +#include + +#include "libc_private.h" +#include "crtbrand.c" + +struct Struct_Obj_Entry; +struct ps_strings; + +extern int _DYNAMIC; +#pragma weak _DYNAMIC + +extern void _fini(void); +extern void _init(void); +extern int main(int, char **, char **); +extern void _start(int, char **, char **, const struct Struct_Obj_Entry *, + void (*)(void), struct ps_strings *); + +#ifdef GCRT +extern void _mcleanup(void); +extern void monstartup(void *, void *); +extern int eprol; +extern int etext; +#endif + +char **environ; +const char *__progname = ""; +struct ps_strings *__ps_strings; + +/* The entry function. */ +/* + * First 5 arguments are specified by the PowerPC SVR4 ABI. + * The last argument, ps_strings, is a BSD extension. + */ +/* ARGSUSED */ +void +_start(int argc, char **argv, char **env, + const struct Struct_Obj_Entry *obj __unused, void (*cleanup)(void), + struct ps_strings *ps_strings) +{ + const char *s; + + environ = env; + + if (argc > 0 && argv[0] != NULL) { + __progname = argv[0]; + for (s = __progname; *s != '\0'; s++) + if (*s == '/') + __progname = s + 1; + } + + if (ps_strings != (struct ps_strings *)0) + __ps_strings = ps_strings; + + if (&_DYNAMIC != NULL) + atexit(cleanup); + else + _init_tls(); + +#ifdef GCRT + atexit(_mcleanup); +#endif + atexit(_fini); +#ifdef GCRT + monstartup(&eprol, &etext); +#endif + _init(); + exit( main(argc, argv, env) ); +} + +#ifdef GCRT +__asm__(".text"); +__asm__("eprol:"); +__asm__(".previous"); +#endif + +__asm__(".ident\t\"$FreeBSD: projects/ppc64/lib/csu/powerpc/crt1.c 133754 2004-08-15 16:18:52Z dfr $\""); Added: projects/ppc64/lib/csu/powerpc64/crti.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/lib/csu/powerpc64/crti.S Sun Jan 24 18:56:57 2010 (r202942) @@ -0,0 +1,67 @@ +/*- + * Copyright 2001 David E. O'Brien + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + .section .init,"ax",@progbits + .align 2 + .globl _init + .section ".opd","aw" + .align 3 +_init: + .quad ._init,.TOC.@tocbase,0 + .previous + + .align 4 + .global ._init + .type ._init,@function +._init: + stdu 1,-48(1) + mflr 0 + std 31,40(1) + std 0,64(1) + mr 31,1 + + + .section .fini,"ax",@progbits + .align 2 + .globl _fini + .section ".opd","aw" + .align 3 +_fini: + .quad ._fini,.TOC.@tocbase,0 + .previous + + .align 4 + .global ._fini + .type ._fini,@function +._fini: + stdu 1,-48(1) + mflr 0 + std 31,40(1) + std 0,64(1) + mr 31,1 + + + .section .rodata +.ascii "$FreeBSD: projects/ppc64/lib/csu/powerpc/crti.S 96632 2002-05-15 04:19:49Z obrien $\0" Added: projects/ppc64/lib/csu/powerpc64/crtn.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/lib/csu/powerpc64/crtn.S Sun Jan 24 18:56:57 2010 (r202942) @@ -0,0 +1,45 @@ +/*- + * Copyright 2001 David E. O'Brien + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + .section .init,"ax",@progbits + ld 11,0(1) + ld 0,16(11) + mtlr 0 + ld 31,-8(11) + mr 1,11 + blr + + + .section .fini,"ax",@progbits + ld 11,0(1) + ld 0,16(11) + mtlr 0 + ld 31,-8(11) + mr 1,11 + blr + + + .section .rodata +.ascii "$FreeBSD: projects/ppc64/lib/csu/powerpc/crtn.S 96632 2002-05-15 04:19:49Z obrien $\0" Modified: projects/ppc64/lib/libc/gmon/gmon.c ============================================================================== --- projects/ppc64/lib/libc/gmon/gmon.c Sun Jan 24 18:18:52 2010 (r202941) +++ projects/ppc64/lib/libc/gmon/gmon.c Sun Jan 24 18:56:57 2010 (r202942) @@ -49,8 +49,10 @@ __FBSDID("$FreeBSD$"); #include "libc_private.h" -#if defined(__i386__) || defined(__sparc64__) || defined(__amd64__) || defined(__powerpc__) +#if defined(__i386__) || defined(__sparc64__) || defined(__amd64__) || (defined(__powerpc__) && !defined(__powerpc64__)) extern char *minbrk __asm (".minbrk"); +#elif defined(__powerpc64__) +extern char *minbrk __asm ("_minbrk"); #else extern char *minbrk __asm ("minbrk"); #endif Modified: projects/ppc64/lib/libc/powerpc64/Makefile.inc ============================================================================== --- projects/ppc64/lib/libc/powerpc/Makefile.inc Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/Makefile.inc Sun Jan 24 18:56:57 2010 (r202942) @@ -2,4 +2,4 @@ # Long double is 64-bits MDSRCS+=machdep_ldisd.c -SYM_MAPS+=${.CURDIR}/powerpc/Symbol.map +SYM_MAPS+=${.CURDIR}/powerpc64/Symbol.map Modified: projects/ppc64/lib/libc/powerpc64/SYS.h ============================================================================== --- projects/ppc64/lib/libc/powerpc/SYS.h Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/SYS.h Sun Jan 24 18:56:57 2010 (r202942) @@ -43,11 +43,16 @@ .text; \ .align 2; \ 2: b PIC_PLT(CNAME(HIDENAME(cerror))); \ + nop; \ ENTRY(__CONCAT(__sys_,x)); \ .weak CNAME(x); \ .set CNAME(x),CNAME(__CONCAT(__sys_,x)); \ .weak CNAME(__CONCAT(_,x)); \ .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \ + .weak CNAME(__CONCAT(.,x)); \ + .set CNAME(__CONCAT(.,x)),CNAME(__CONCAT(.__sys_,x));\ + .weak CNAME(__CONCAT(._,x)); \ + .set CNAME(__CONCAT(._,x)),CNAME(__CONCAT(.__sys_,x));\ _SYSCALL(x); \ bso 2b @@ -57,19 +62,28 @@ ENTRY(__CONCAT(__sys_,x)); \ ENTRY(__CONCAT(__sys_,x)); \ .weak CNAME(__CONCAT(_,x)); \ .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \ + .weak CNAME(__CONCAT(._,x)); \ + .set CNAME(__CONCAT(._,x)),CNAME(__CONCAT(.__sys_,x));\ _SYSCALL(x); \ bnslr; \ - b PIC_PLT(CNAME(HIDENAME(cerror))) + b PIC_PLT(CNAME(HIDENAME(cerror))); \ + nop #define RSYSCALL(x) \ .text; \ .align 2; \ 2: b PIC_PLT(CNAME(HIDENAME(cerror))); \ + nop; \ ENTRY(__CONCAT(__sys_,x)); \ .weak CNAME(x); \ .set CNAME(x),CNAME(__CONCAT(__sys_,x)); \ .weak CNAME(__CONCAT(_,x)); \ .set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \ + .weak CNAME(__CONCAT(.,x)); \ + .set CNAME(__CONCAT(.,x)),CNAME(__CONCAT(.__sys_,x));\ + .weak CNAME(__CONCAT(._,x)); \ + .set CNAME(__CONCAT(._,x)),CNAME(__CONCAT(.__sys_,x));\ _SYSCALL(x); \ bnslr; \ - b PIC_PLT(CNAME(HIDENAME(cerror))) + b PIC_PLT(CNAME(HIDENAME(cerror))); \ + nop Modified: projects/ppc64/lib/libc/powerpc64/Symbol.map ============================================================================== --- projects/ppc64/lib/libc/powerpc/Symbol.map Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/Symbol.map Sun Jan 24 18:56:57 2010 (r202942) @@ -53,7 +53,7 @@ FBSDprivate_1.0 { __signalcontext; __syncicache; _end; - .curbrk; - .minbrk; - .cerror; + _curbrk; + _minbrk; + _cerror; }; Modified: projects/ppc64/lib/libc/powerpc64/gen/_ctx_start.S ============================================================================== --- projects/ppc64/lib/libc/powerpc/gen/_ctx_start.S Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/gen/_ctx_start.S Sun Jan 24 18:56:57 2010 (r202942) @@ -32,12 +32,16 @@ .globl CNAME(abort) ENTRY(_ctx_start) + ld %r2,8(%r14) + ld %r14,0(%r14) mtlr %r14 blrl /* branch to start function */ mr %r3,%r15 /* pass pointer to ucontext as argument */ + nop bl PIC_PLT(CNAME(_ctx_done)) /* branch to ctxt completion func */ /* * we should never return from the * above branch. */ + nop bl PIC_PLT(CNAME(abort)) /* abort */ Modified: projects/ppc64/lib/libc/powerpc64/gen/makecontext.c ============================================================================== --- projects/ppc64/lib/libc/powerpc/gen/makecontext.c Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/gen/makecontext.c Sun Jan 24 18:56:57 2010 (r202942) @@ -79,33 +79,31 @@ __makecontext(ucontext_t *ucp, void (*st */ stackargs = (argc > 8) ? argc - 8 : 0; sp = (char *) ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size - - sizeof(uint32_t)*(stackargs + 2); - sp = (char *)((uint32_t)sp & ~0x1f); + - sizeof(uintptr_t)*(stackargs + 2); + sp = (char *)((uintptr_t)sp & ~0x1f); mc = &ucp->uc_mcontext; /* - * Up to 8 register args. Assumes all args are 32-bit and - * integer only. Not sure how to cater for floating point, - * although 64-bit args will work if aligned correctly - * in the arg list. + * Up to 8 register args. Assumes all args are 64-bit and + * integer only. Not sure how to cater for floating point. */ regargs = (argc > 8) ? 8 : argc; va_start(ap, argc); for (i = 0; i < regargs; i++) - mc->mc_gpr[3 + i] = va_arg(ap, uint32_t); + mc->mc_gpr[3 + i] = va_arg(ap, uint64_t); /* * Overflow args go onto the stack */ if (argc > 8) { - uint32_t *argp; + uint64_t *argp; /* Skip past frame pointer and saved LR */ - argp = (uint32_t *)sp + 2; + argp = (uint64_t *)sp + 6; for (i = 0; i < stackargs; i++) - *argp++ = va_arg(ap, uint32_t); + *argp++ = va_arg(ap, uint64_t); } va_end(ap); @@ -113,8 +111,8 @@ __makecontext(ucontext_t *ucp, void (*st * Use caller-saved regs 14/15 to hold params that _ctx_start * will use to invoke the user-supplied func */ - mc->mc_srr0 = (uint32_t) _ctx_start; - mc->mc_gpr[1] = (uint32_t) sp; /* new stack pointer */ - mc->mc_gpr[14] = (uint32_t) start; /* r14 <- start */ - mc->mc_gpr[15] = (uint32_t) ucp; /* r15 <- ucp */ + mc->mc_srr0 = (uintptr_t) _ctx_start; + mc->mc_gpr[1] = (uintptr_t) sp; /* new stack pointer */ + mc->mc_gpr[14] = (uintptr_t) start; /* r14 <- start */ + mc->mc_gpr[15] = (uintptr_t) ucp; /* r15 <- ucp */ } Modified: projects/ppc64/lib/libc/powerpc64/gen/signalcontext.c ============================================================================== --- projects/ppc64/lib/libc/powerpc/gen/signalcontext.c Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/gen/signalcontext.c Sun Jan 24 18:56:57 2010 (r202942) @@ -46,7 +46,7 @@ __signalcontext(ucontext_t *ucp, int sig { siginfo_t *sig_si; ucontext_t *sig_uc; - uint32_t sp; + uintptr_t sp; /* Bail out if we don't have a valid ucontext pointer. */ if (ucp == NULL) @@ -64,9 +64,9 @@ __signalcontext(ucontext_t *ucp, int sig sig_si->si_signo = sig; /* - * Subtract 8 bytes from stack to allow for frameptr + * Subtract 48 bytes from stack to allow for frameptr */ - sp -= 2*sizeof(uint32_t); + sp -= 6*sizeof(uint64_t); sp &= ~15UL; /* @@ -78,12 +78,12 @@ __signalcontext(ucontext_t *ucp, int sig ucp->uc_mcontext.mc_vers = _MC_VERSION; ucp->uc_mcontext.mc_len = sizeof(struct __mcontext); - ucp->uc_mcontext.mc_srr0 = (uint32_t) ctx_wrapper; - ucp->uc_mcontext.mc_gpr[1] = (uint32_t) sp; - ucp->uc_mcontext.mc_gpr[3] = (uint32_t) func; - ucp->uc_mcontext.mc_gpr[4] = (uint32_t) sig; - ucp->uc_mcontext.mc_gpr[5] = (uint32_t) sig_si; - ucp->uc_mcontext.mc_gpr[6] = (uint32_t) sig_uc; + ucp->uc_mcontext.mc_srr0 = (uint64_t) ctx_wrapper; + ucp->uc_mcontext.mc_gpr[1] = (uint64_t) sp; + ucp->uc_mcontext.mc_gpr[3] = (uint64_t) func; + ucp->uc_mcontext.mc_gpr[4] = (uint64_t) sig; + ucp->uc_mcontext.mc_gpr[5] = (uint64_t) sig_si; + ucp->uc_mcontext.mc_gpr[6] = (uint64_t) sig_uc; return (0); } Modified: projects/ppc64/lib/libc/powerpc64/gen/syncicache.c ============================================================================== --- projects/ppc64/lib/libc/powerpc/gen/syncicache.c Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/gen/syncicache.c Sun Jan 24 18:56:57 2010 (r202942) @@ -62,7 +62,7 @@ static void getcachelinesize() { static int cachemib[] = { CTL_MACHDEP, CPU_CACHELINE }; - int clen; + long clen; clen = sizeof(cacheline_size); @@ -76,7 +76,7 @@ getcachelinesize() void __syncicache(void *from, int len) { - int l, off; + off_t l, off; char *p; #if !defined(_KERNEL) && !defined(_STANDALONE) @@ -84,7 +84,7 @@ __syncicache(void *from, int len) getcachelinesize(); #endif - off = (u_int)from & (cacheline_size - 1); + off = (uintptr_t)from & (cacheline_size - 1); l = len += off; p = (char *)from - off; Modified: projects/ppc64/lib/libc/powerpc64/sys/brk.S ============================================================================== --- projects/ppc64/lib/libc/powerpc/sys/brk.S Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/sys/brk.S Sun Jan 24 18:56:57 2010 (r202942) @@ -36,23 +36,14 @@ __FBSDID("$FreeBSD$"); .data HIDENAME(minbrk): - .long CNAME(_end) + .llong CNAME(_end) .text ENTRY(brk) -#ifdef PIC - mflr %r10 - bl _GLOBAL_OFFSET_TABLE_@local-4 - mflr %r9 - mtlr %r10 - lwz %r5,HIDENAME(minbrk)@got(%r9) - lwz %r6,0(%r5) -#else - lis %r5,HIDENAME(minbrk)@ha - lwz %r6,HIDENAME(minbrk)@l(%r5) -#endif - cmplw %r6,%r3 /* if (minbrk <= r3) */ + ld %r5,HIDENAME(minbrk)@got(%r2) + ld %r6,0(%r5) + cmpld %r6,%r3 /* if (minbrk <= r3) */ bgt 0f mr %r6,%r3 /* r6 = r3 */ 0: @@ -60,14 +51,10 @@ ENTRY(brk) li %r0,SYS_break sc /* assume, that r5 is kept */ bso 1f -#ifdef PIC - lwz %r7,HIDENAME(curbrk)@got(%r9) - stw %r6,0(%r7) -#else - lis %r7,HIDENAME(curbrk)@ha /* record new break */ - stw %r6,HIDENAME(curbrk)@l(%r7) -#endif + ld %r7,HIDENAME(curbrk)@got(%r2) /* record new break */ + std %r6,0(%r7) blr /* return 0 */ 1: b PIC_PLT(HIDENAME(cerror)) + nop Modified: projects/ppc64/lib/libc/powerpc64/sys/cerror.S ============================================================================== --- projects/ppc64/lib/libc/powerpc/sys/cerror.S Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/sys/cerror.S Sun Jan 24 18:56:57 2010 (r202942) @@ -38,18 +38,19 @@ __FBSDID("$FreeBSD$"); * programs and the initial threaded in threaded programs, * it returns a pointer to the global errno variable. */ -HIDENAME(cerror): +ENTRY(HIDENAME(cerror)) mflr %r0 - stwu %r1,-16(%r1) /* allocate new stack frame */ - stw %r0,20(%r1) /* and save lr, r31 */ - stw %r31,8(%r1) + stdu %r1,-56(%r1) /* allocate new stack frame */ + std %r0,16(%r1) /* and save lr, r31 */ + std %r31,48(%r1) mr %r31,%r3 /* stash errval in callee-saved register */ bl PIC_PLT(CNAME(__error)) - stw %r31,0(%r3) /* store errval into &errno */ - lwz %r0,20(%r1) - lwz %r31,8(%r1) + nop + std %r31,0(%r3) /* store errval into &errno */ + ld %r0,16(%r1) + ld %r31,48(%r1) mtlr %r0 - la %r1,16(%r1) + ld %r1,0(%r1) li %r3,-1 li %r4,-1 blr /* return to callers caller */ Modified: projects/ppc64/lib/libc/powerpc64/sys/exect.S ============================================================================== --- projects/ppc64/lib/libc/powerpc/sys/exect.S Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/sys/exect.S Sun Jan 24 18:56:57 2010 (r202942) @@ -37,3 +37,4 @@ ENTRY(exect) blr 1: b PIC_PLT(HIDENAME(cerror)) + nop Modified: projects/ppc64/lib/libc/powerpc64/sys/pipe.S ============================================================================== --- projects/ppc64/lib/libc/powerpc/sys/pipe.S Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/sys/pipe.S Sun Jan 24 18:56:57 2010 (r202942) @@ -41,3 +41,4 @@ ENTRY(pipe) blr /* and return 0 */ 1: b PIC_PLT(HIDENAME(cerror)) + nop Modified: projects/ppc64/lib/libc/powerpc64/sys/ptrace.S ============================================================================== --- projects/ppc64/lib/libc/powerpc/sys/ptrace.S Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/sys/ptrace.S Sun Jan 24 18:56:57 2010 (r202942) @@ -32,27 +32,29 @@ __FBSDID("$FreeBSD$"); ENTRY(ptrace) mflr %r0 - stwu %r1,-32(%r1) - stw %r0,36(%r1) - stw %r3,8(%r1) - stw %r4,12(%r1) - stw %r5,16(%r1) - stw %r6,20(%r1) + stdu %r1,-68(%r1) + std %r0,16(%r1) + stw %r3,48(%r1) + stw %r4,52(%r1) + std %r5,56(%r1) + stw %r6,64(%r1) bl PIC_PLT(CNAME(__error)) + nop li %r7,0 stw %r7,0(%r3) - lwz %r3,8(%r1) - lwz %r4,12(%r1) - lwz %r5,16(%r1) - lwz %r0,36(%r1) - lwz %r6,20(%r1) + lwz %r3,48(%r1) + lwz %r4,52(%r1) + ld %r5,56(%r1) + ld %r0,16(%r1) + lwz %r6,64(%r1) mtlr %r0 - la %r1,32(%r1) + ld %r1,0(%r1) li %r0,SYS_ptrace sc bso 1f blr 1: b PIC_PLT(HIDENAME(cerror)) + nop Modified: projects/ppc64/lib/libc/powerpc64/sys/sbrk.S ============================================================================== --- projects/ppc64/lib/libc/powerpc/sys/sbrk.S Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/sys/sbrk.S Sun Jan 24 18:56:57 2010 (r202942) @@ -35,36 +35,23 @@ __FBSDID("$FreeBSD$"); .data HIDENAME(curbrk): - .long CNAME(_end) + .llong CNAME(_end) .text ENTRY(sbrk) - -#ifdef PIC - mflr %r10 - bl _GLOBAL_OFFSET_TABLE_@local-4 - mflr %r5 - mtlr %r10 - lwz %r5,HIDENAME(curbrk)@got(%r5) - lwz %r6,0(%r5) -#else - lis %r5,HIDENAME(curbrk)@ha - lwz %r6,HIDENAME(curbrk)@l(%r5) /* r6 = old break */ -#endif - cmpwi %r3,0 /* sbrk(0) - return curbrk */ + ld %r5,HIDENAME(curbrk)@got(%r2) + ld %r6,0(%r5) /* r6 = old break */ + cmpdi %r3,0 /* sbrk(0) - return curbrk */ beq 1f add %r3,%r3,%r6 mr %r7,%r3 /* r7 = new break */ li %r0,SYS_break sc /* break(new_break) */ bso 2f -#ifdef PIC - stw %r7,0(%r5) -#else - stw %r7,HIDENAME(curbrk)@l(%r5) /* record new break */ -#endif + std %r7,0(%r5) 1: mr %r3,%r6 /* set return value */ blr 2: b PIC_PLT(HIDENAME(cerror)) + nop Modified: projects/ppc64/lib/libc/powerpc64/sys/setlogin.S ============================================================================== --- projects/ppc64/lib/libc/powerpc/sys/setlogin.S Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libc/powerpc64/sys/setlogin.S Sun Jan 24 18:56:57 2010 (r202942) @@ -33,17 +33,7 @@ __FBSDID("$FreeBSD$"); .globl CNAME(_logname_valid) /* in _getlogin() */ SYSCALL(setlogin) -#ifdef PIC - mflr %r10 - bl _GLOBAL_OFFSET_TABLE_@local-4 - mflr %r4 - lwz %r4,CNAME(_logname_valid)@got(%r4) + ld %r4,CNAME(_logname_valid)@got(%r2) li %r5,%r0 - stw %r5,0(%r4) - mtlr %r10 -#else - lis %r4,CNAME(_logname_valid)@ha - li %r5,0 - stw %r5,CNAME(_logname_valid)@l(%r4) -#endif + std %r5,0(%r4) blr Modified: projects/ppc64/lib/libc/stdlib/malloc.c ============================================================================== --- projects/ppc64/lib/libc/stdlib/malloc.c Sun Jan 24 18:18:52 2010 (r202941) +++ projects/ppc64/lib/libc/stdlib/malloc.c Sun Jan 24 18:56:57 2010 (r202942) @@ -250,7 +250,10 @@ __FBSDID("$FreeBSD$"); # define SIZEOF_PTR_2POW 2 # define NO_TLS #endif -#ifdef __powerpc__ +#ifdef __powerpc64__ +# define QUANTUM_2POW 4 +# define SIZEOF_PTR_2POW 3 +#elif defined(__powerpc__) # define QUANTUM_2POW 4 # define SIZEOF_PTR_2POW 2 #endif Modified: projects/ppc64/lib/libthr/arch/powerpc64/include/pthread_md.h ============================================================================== --- projects/ppc64/lib/libthr/arch/powerpc/include/pthread_md.h Tue Jan 19 20:36:15 2010 (r202650) +++ projects/ppc64/lib/libthr/arch/powerpc64/include/pthread_md.h Sun Jan 24 18:56:57 2010 (r202942) @@ -39,7 +39,7 @@ #define CPU_SPINWAIT #define DTV_OFFSET offsetof(struct tcb, tcb_dtv) -#define TP_OFFSET 0x7008 +#define TP_OFFSET 0x8000 /* * Variant I tcb. The structure layout is fixed, don't blindly @@ -57,7 +57,7 @@ void _tcb_dtor(struct tcb *); static __inline void _tcb_set(struct tcb *tcb) { - register uint8_t *_tp __asm__("%r2"); + register uint8_t *_tp __asm__("%r13"); __asm __volatile("mr %0,%1" : "=r"(_tp) : "r"((uint8_t *)tcb + TP_OFFSET)); @@ -66,7 +66,7 @@ _tcb_set(struct tcb *tcb) static __inline struct tcb * _tcb_get(void) { - register uint8_t *_tp __asm__("%r2"); + register uint8_t *_tp __asm__("%r13"); return ((struct tcb *)(_tp - TP_OFFSET)); } Copied and modified: projects/ppc64/secure/lib/libcrypto/opensslconf-powerpc64.h (from r202650, projects/ppc64/secure/lib/libcrypto/opensslconf-powerpc.h) ============================================================================== --- projects/ppc64/secure/lib/libcrypto/opensslconf-powerpc.h Tue Jan 19 20:36:15 2010 (r202650, copy source) +++ projects/ppc64/secure/lib/libcrypto/opensslconf-powerpc64.h Sun Jan 24 18:56:57 2010 (r202942) @@ -110,13 +110,13 @@ /* If this is set to 'unsigned int' on a DEC Alpha, this gives about a * %20 speed up (longs are 8 bytes, int's are 4). */ #ifndef DES_LONG -#define DES_LONG unsigned long +#define DES_LONG unsigned int #endif #endif #if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H) #define CONFIG_HEADER_BN_H -#define BN_LLONG +#undef BN_LLONG /* Should we define BN_DIV2W here? */ @@ -124,9 +124,9 @@ /* The prime number generation stuff may not work when * EIGHT_BIT but I don't care since I've only used this mode * for debuging the bignum libraries */ -#undef SIXTY_FOUR_BIT_LONG +#define SIXTY_FOUR_BIT_LONG #undef SIXTY_FOUR_BIT -#define THIRTY_TWO_BIT +#undef THIRTY_TWO_BIT #undef SIXTEEN_BIT #undef EIGHT_BIT #endif Modified: projects/ppc64/sys/powerpc/include/asm.h ============================================================================== --- projects/ppc64/sys/powerpc/include/asm.h Sun Jan 24 18:18:52 2010 (r202941) +++ projects/ppc64/sys/powerpc/include/asm.h Sun Jan 24 18:56:57 2010 (r202942) @@ -53,9 +53,18 @@ #define PIC_GOT(x) x #endif +#ifdef __powerpc64__ +#undef PIC_PLT +#define PIC_PLT(x) __CONCAT(.,x) +#endif + #define CNAME(csym) csym #define ASMNAME(asmsym) asmsym +#ifdef __powerpc64__ +#define HIDENAME(asmsym) __CONCAT(_,asmsym) +#else #define HIDENAME(asmsym) __CONCAT(.,asmsym) +#endif #define _GLOBAL(x) \ .data; .align 2; .globl x; x: Modified: projects/ppc64/sys/powerpc/include/profile.h ============================================================================== --- projects/ppc64/sys/powerpc/include/profile.h Sun Jan 24 18:18:52 2010 (r202941) +++ projects/ppc64/sys/powerpc/include/profile.h Sun Jan 24 18:56:57 2010 (r202942) @@ -36,7 +36,7 @@ #define FUNCTION_ALIGNMENT 16 -typedef u_int fptrdiff_t; +typedef __ptrdiff_t fptrdiff_t; /* * The mcount trampoline macro, expanded in libc/gmon/mcount.c @@ -75,6 +75,13 @@ typedef u_int fptrdiff_t; * to be restored to what it was on entry to the profiled routine. */ +#ifdef __powerpc64__ +/* XXX not implemented */ + +#define MCOUNT int _mcount(void) {return (0);} + +#else + #ifdef PIC #define _PLT "@plt" #else @@ -115,6 +122,7 @@ __asm( " .globl _mcount \n" \ " bctr \n" \ "_mcount_end: \n" \ " .size _mcount,_mcount_end-_mcount"); +#endif #ifdef _KERNEL #define MCOUNT_ENTER(s) s = intr_disable() Modified: projects/ppc64/sys/sys/cdefs.h ============================================================================== --- projects/ppc64/sys/sys/cdefs.h Sun Jan 24 18:18:52 2010 (r202941) +++ projects/ppc64/sys/sys/cdefs.h Sun Jan 24 18:56:57 2010 (r202942) @@ -356,9 +356,17 @@ extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym))) #endif #ifdef __STDC__ +#ifdef __powerpc64__ +#define __weak_reference(sym,alias) \ + __asm__(".weak " #alias); \ + __asm__(".equ " #alias ", " #sym); \ + __asm__(".weak ." #alias); \ + __asm__(".equ ." #alias ", ." #sym) +#else #define __weak_reference(sym,alias) \ __asm__(".weak " #alias); \ __asm__(".equ " #alias ", " #sym) +#endif #define __warn_references(sym,msg) \ __asm__(".section .gnu.warning." #sym); \ __asm__(".asciz \"" msg "\""); \ From owner-svn-src-projects@FreeBSD.ORG Mon Jan 25 01:33:11 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E277D106568D; Mon, 25 Jan 2010 01:33:11 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D1C428FC08; Mon, 25 Jan 2010 01:33:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0P1XBaK001967; Mon, 25 Jan 2010 01:33:11 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0P1XBcl001965; Mon, 25 Jan 2010 01:33:11 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001250133.o0P1XBcl001965@svn.freebsd.org> From: Nathan Whitehorn Date: Mon, 25 Jan 2010 01:33:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r202955 - projects/ppc64/contrib/binutils/bfd X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2010 01:33:12 -0000 Author: nwhitehorn Date: Mon Jan 25 01:33:11 2010 New Revision: 202955 URL: http://svn.freebsd.org/changeset/base/202955 Log: Check if the GOT exists before trying to make a new one. This makes ld reliably link powerpc64 shared objects, like libc.so. Modified: projects/ppc64/contrib/binutils/bfd/elf64-ppc.c Modified: projects/ppc64/contrib/binutils/bfd/elf64-ppc.c ============================================================================== --- projects/ppc64/contrib/binutils/bfd/elf64-ppc.c Mon Jan 25 00:44:05 2010 (r202954) +++ projects/ppc64/contrib/binutils/bfd/elf64-ppc.c Mon Jan 25 01:33:11 2010 (r202955) @@ -3268,7 +3268,9 @@ create_got_section (bfd *abfd, struct bf flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED); - got = bfd_make_section (abfd, ".got"); + got = bfd_get_section_by_name(abfd, ".got"); + if (!got) + got = bfd_make_section (abfd, ".got"); if (!got || !bfd_set_section_flags (abfd, got, flags) || !bfd_set_section_alignment (abfd, got, 3)) From owner-svn-src-projects@FreeBSD.ORG Mon Jan 25 02:13:01 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 544DC106566C; Mon, 25 Jan 2010 02:13:01 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 43B728FC0C; Mon, 25 Jan 2010 02:13:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0P2D1TX011576; Mon, 25 Jan 2010 02:13:01 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0P2D1gU011574; Mon, 25 Jan 2010 02:13:01 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001250213.o0P2D1gU011574@svn.freebsd.org> From: Nathan Whitehorn Date: Mon, 25 Jan 2010 02:13:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r202956 - projects/ppc64/lib/libkvm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2010 02:13:01 -0000 Author: nwhitehorn Date: Mon Jan 25 02:13:00 2010 New Revision: 202956 URL: http://svn.freebsd.org/changeset/base/202956 Log: First hash at ppc64 KVM implementation. Added: projects/ppc64/lib/libkvm/kvm_powerpc64.c - copied, changed from r202947, projects/ppc64/lib/libkvm/kvm_powerpc.c Copied and modified: projects/ppc64/lib/libkvm/kvm_powerpc64.c (from r202947, projects/ppc64/lib/libkvm/kvm_powerpc.c) ============================================================================== --- projects/ppc64/lib/libkvm/kvm_powerpc.c Sun Jan 24 20:15:59 2010 (r202947, copy source) +++ projects/ppc64/lib/libkvm/kvm_powerpc64.c Mon Jan 25 02:13:00 2010 (r202956) @@ -48,17 +48,17 @@ struct vmstate { void *map; size_t mapsz; size_t dmphdrsz; - Elf32_Ehdr *eh; - Elf32_Phdr *ph; + Elf64_Ehdr *eh; + Elf64_Phdr *ph; }; static int -valid_elf_header(Elf32_Ehdr *eh) +valid_elf_header(Elf64_Ehdr *eh) { if (!IS_ELF(*eh)) return (0); - if (eh->e_ident[EI_CLASS] != ELFCLASS32) + if (eh->e_ident[EI_CLASS] != ELFCLASS64) return (0); if (eh->e_ident[EI_DATA] != ELFDATA2MSB) return (0); @@ -68,7 +68,7 @@ valid_elf_header(Elf32_Ehdr *eh) return (0); if (be16toh(eh->e_type) != ET_CORE) return (0); - if (be16toh(eh->e_machine) != EM_PPC) + if (be16toh(eh->e_machine) != EM_PPC64) return (0); /* Can't think of anything else to check... */ return (1); @@ -80,7 +80,7 @@ dump_header_size(struct kerneldumpheader if (strcmp(dh->magic, KERNELDUMPMAGIC) != 0) return (0); - if (strcmp(dh->architecture, "powerpc") != 0) + if (strcmp(dh->architecture, "powerpc64") != 0) return (0); /* That should do it... */ return (sizeof(*dh)); @@ -122,7 +122,7 @@ powerpc_maphdrs(kvm_t *kd) goto inval; } mapsz = be16toh(vm->eh->e_phentsize) * be16toh(vm->eh->e_phnum) + - be32toh(vm->eh->e_phoff); + be64toh(vm->eh->e_phoff); munmap(vm->map, vm->mapsz); /* Map all headers. */ @@ -133,7 +133,7 @@ powerpc_maphdrs(kvm_t *kd) return (-1); } vm->eh = (void *)((uintptr_t)vm->map + vm->dmphdrsz); - vm->ph = (void *)((uintptr_t)vm->eh + be32toh(vm->eh->e_phoff)); + vm->ph = (void *)((uintptr_t)vm->eh + be64toh(vm->eh->e_phoff)); return (0); inval: @@ -149,16 +149,16 @@ powerpc_maphdrs(kvm_t *kd) * 0 when the virtual address is invalid. */ static size_t -powerpc_va2off(kvm_t *kd, u_long va, off_t *ofs) +powerpc64_va2off(kvm_t *kd, u_long va, off_t *ofs) { struct vmstate *vm = kd->vmst; - Elf32_Phdr *ph; + Elf64_Phdr *ph; int nph; ph = vm->ph; nph = be16toh(vm->eh->e_phnum); - while (nph && (va < be32toh(ph->p_vaddr) || - va >= be32toh(ph->p_vaddr) + be32toh(ph->p_memsz))) { + while (nph && (va < be64toh(ph->p_vaddr) || + va >= be64toh(ph->p_vaddr) + be64toh(ph->p_memsz))) { nph--; ph = (void *)((uintptr_t)ph + be16toh(vm->eh->e_phentsize)); } @@ -166,9 +166,9 @@ powerpc_va2off(kvm_t *kd, u_long va, off return (0); /* Segment found. Return file offset and range. */ - *ofs = vm->dmphdrsz + be32toh(ph->p_offset) + - (va - be32toh(ph->p_vaddr)); - return (be32toh(ph->p_memsz) - (va - be32toh(ph->p_vaddr))); + *ofs = vm->dmphdrsz + be64toh(ph->p_offset) + + (va - be64toh(ph->p_vaddr)); + return (be64toh(ph->p_memsz) - (va - be64toh(ph->p_vaddr))); } void @@ -210,8 +210,8 @@ _kvm_kvatop(kvm_t *kd, u_long va, off_t struct vmstate *vm; vm = kd->vmst; - if (vm->ph->p_paddr == ~0U) - return ((int)powerpc_va2off(kd, va, ofs)); + if (vm->ph->p_paddr == ~0UL) + return ((int)powerpc64_va2off(kd, va, ofs)); _kvm_err(kd, kd->program, "Raw corefile not supported"); return (0); From owner-svn-src-projects@FreeBSD.ORG Mon Jan 25 04:21:56 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B0130106566C; Mon, 25 Jan 2010 04:21:56 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9F2D58FC1C; Mon, 25 Jan 2010 04:21:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0P4Lurt042868; Mon, 25 Jan 2010 04:21:56 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0P4Lu2m042865; Mon, 25 Jan 2010 04:21:56 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001250421.o0P4Lu2m042865@svn.freebsd.org> From: Nathan Whitehorn Date: Mon, 25 Jan 2010 04:21:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r202957 - in projects/ppc64: lib/libc/gen sys/sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2010 04:21:56 -0000 Author: nwhitehorn Date: Mon Jan 25 04:21:56 2010 New Revision: 202957 URL: http://svn.freebsd.org/changeset/base/202957 Log: Tweak the weak_reference definition some more. Only text symbols require additional definition of a weak linkage for the dot symbols, so provide a new weak_reference_data for data symbols. Modified: projects/ppc64/lib/libc/gen/_thread_init.c projects/ppc64/sys/sys/cdefs.h Modified: projects/ppc64/lib/libc/gen/_thread_init.c ============================================================================== --- projects/ppc64/lib/libc/gen/_thread_init.c Mon Jan 25 02:13:00 2010 (r202956) +++ projects/ppc64/lib/libc/gen/_thread_init.c Mon Jan 25 04:21:56 2010 (r202957) @@ -30,7 +30,8 @@ __FBSDID("$FreeBSD$"); #include __weak_reference(_thread_init_stub, _thread_init); -__weak_reference(_thread_autoinit_dummy_decl_stub, _thread_autoinit_dummy_decl); +__weak_reference_data(_thread_autoinit_dummy_decl_stub, + _thread_autoinit_dummy_decl); int _thread_autoinit_dummy_decl_stub = 0; Modified: projects/ppc64/sys/sys/cdefs.h ============================================================================== --- projects/ppc64/sys/sys/cdefs.h Mon Jan 25 02:13:00 2010 (r202956) +++ projects/ppc64/sys/sys/cdefs.h Mon Jan 25 04:21:56 2010 (r202957) @@ -367,6 +367,9 @@ __asm__(".weak " #alias); \ __asm__(".equ " #alias ", " #sym) #endif +#define __weak_reference_data(sym,alias)\ + __asm__(".weak " #alias); \ + __asm__(".equ " #alias ", " #sym) #define __warn_references(sym,msg) \ __asm__(".section .gnu.warning." #sym); \ __asm__(".asciz \"" msg "\""); \ From owner-svn-src-projects@FreeBSD.ORG Mon Jan 25 07:37:42 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 61A52106574E; Mon, 25 Jan 2010 07:37:42 +0000 (UTC) (envelope-from lstewart@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 49DA48FC26; Mon, 25 Jan 2010 07:37:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0P7bgRq090262; Mon, 25 Jan 2010 07:37:42 GMT (envelope-from lstewart@svn.freebsd.org) Received: (from lstewart@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0P7bfEj090234; Mon, 25 Jan 2010 07:37:41 GMT (envelope-from lstewart@svn.freebsd.org) Message-Id: <201001250737.o0P7bfEj090234@svn.freebsd.org> From: Lawrence Stewart Date: Mon, 25 Jan 2010 07:37:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r202963 - in projects/tcp_cc_head: . bin bin/cat bin/cp bin/csh bin/date bin/getfacl bin/kenv bin/ls bin/pax bin/pkill bin/ps bin/pwait bin/setfacl bin/sh bin/uuidgen cddl/contrib/opens... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2010 07:37:42 -0000 Author: lstewart Date: Mon Jan 25 07:37:37 2010 New Revision: 202963 URL: http://svn.freebsd.org/changeset/base/202963 Log: Merge r197921:202961 from head. Added: projects/tcp_cc_head/bin/pwait/ - copied from r202961, head/bin/pwait/ projects/tcp_cc_head/contrib/ntp/html/build/hints/solaris.xtra.4095849 - copied unchanged from r202961, head/contrib/ntp/html/build/hints/solaris.xtra.4095849 projects/tcp_cc_head/etc/devd/uath.conf - copied unchanged from r202961, head/etc/devd/uath.conf projects/tcp_cc_head/etc/etc.pc98/ - copied from r202961, head/etc/etc.pc98/ projects/tcp_cc_head/include/semaphore.h - copied unchanged from r202961, head/include/semaphore.h projects/tcp_cc_head/include/termios.h - copied unchanged from r202961, head/include/termios.h projects/tcp_cc_head/include/utmpx.h - copied unchanged from r202961, head/include/utmpx.h projects/tcp_cc_head/lib/csu/i386-elf/crt1_c.c - copied unchanged from r202961, head/lib/csu/i386-elf/crt1_c.c projects/tcp_cc_head/lib/csu/i386-elf/crt1_s.S - copied unchanged from r202961, head/lib/csu/i386-elf/crt1_s.S projects/tcp_cc_head/lib/libarchive/archive_crc32.h - copied unchanged from r202961, head/lib/libarchive/archive_crc32.h projects/tcp_cc_head/lib/libarchive/archive_entry_xattr.c - copied unchanged from r202961, head/lib/libarchive/archive_entry_xattr.c projects/tcp_cc_head/lib/libarchive/archive_hash.h - copied unchanged from r202961, head/lib/libarchive/archive_hash.h projects/tcp_cc_head/lib/libarchive/archive_read_support_compression_uu.c - copied unchanged from r202961, head/lib/libarchive/archive_read_support_compression_uu.c projects/tcp_cc_head/lib/libarchive/archive_write_set_format_zip.c - copied unchanged from r202961, head/lib/libarchive/archive_write_set_format_zip.c projects/tcp_cc_head/lib/libarchive/test/test_compat_cpio.c - copied unchanged from r202961, head/lib/libarchive/test/test_compat_cpio.c projects/tcp_cc_head/lib/libarchive/test/test_compat_cpio_1.cpio.uu - copied unchanged from r202961, head/lib/libarchive/test/test_compat_cpio_1.cpio.uu projects/tcp_cc_head/lib/libarchive/test/test_compat_lzma.c - copied unchanged from r202961, head/lib/libarchive/test/test_compat_lzma.c projects/tcp_cc_head/lib/libarchive/test/test_compat_lzma_1.tlz.uu - copied unchanged from r202961, head/lib/libarchive/test/test_compat_lzma_1.tlz.uu projects/tcp_cc_head/lib/libarchive/test/test_compat_lzma_2.tlz.uu - copied unchanged from r202961, head/lib/libarchive/test/test_compat_lzma_2.tlz.uu projects/tcp_cc_head/lib/libarchive/test/test_compat_lzma_3.tlz.uu - copied unchanged from r202961, head/lib/libarchive/test/test_compat_lzma_3.tlz.uu projects/tcp_cc_head/lib/libarchive/test/test_fuzz_1.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_fuzz_1.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_ar.ar.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_ar.ar.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_cpio_bin_lzma.c - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_cpio_bin_lzma.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_joliet.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso_joliet.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_multi_extent.c - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso_multi_extent.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_rockridge.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso_rockridge.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_zisofs.iso.Z.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_iso_zisofs.iso.Z.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_isojoliet_long.c - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_isojoliet_long.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_isojoliet_rr.c - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_isojoliet_rr.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_isorr_ce.c - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_isorr_ce.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_isorr_new_bz2.c - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_isorr_new_bz2.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_isorr_rr_moved.c - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_isorr_rr_moved.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_isozisofs_bz2.c - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_isozisofs_bz2.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_mtree.mtree.uu - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_mtree.mtree.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_tlz.c - copied unchanged from r202961, head/lib/libarchive/test/test_read_format_tlz.c projects/tcp_cc_head/lib/libarchive/test/test_read_uu.c - copied unchanged from r202961, head/lib/libarchive/test/test_read_uu.c projects/tcp_cc_head/lib/libarchive/test/test_write_disk_symlink.c - copied unchanged from r202961, head/lib/libarchive/test/test_write_disk_symlink.c projects/tcp_cc_head/lib/libarchive/test/test_write_format_zip.c - copied unchanged from r202961, head/lib/libarchive/test/test_write_format_zip.c projects/tcp_cc_head/lib/libarchive/test/test_write_format_zip_empty.c - copied unchanged from r202961, head/lib/libarchive/test/test_write_format_zip_empty.c projects/tcp_cc_head/lib/libarchive/test/test_write_format_zip_no_compression.c - copied unchanged from r202961, head/lib/libarchive/test/test_write_format_zip_no_compression.c projects/tcp_cc_head/lib/libc/gen/_once_stub.c - copied unchanged from r202961, head/lib/libc/gen/_once_stub.c projects/tcp_cc_head/lib/libc/gen/getutxent.3 - copied unchanged from r202961, head/lib/libc/gen/getutxent.3 projects/tcp_cc_head/lib/libc/gen/getutxent.c - copied unchanged from r202961, head/lib/libc/gen/getutxent.c projects/tcp_cc_head/lib/libc/gen/pututxline.c - copied unchanged from r202961, head/lib/libc/gen/pututxline.c projects/tcp_cc_head/lib/libc/gen/sem_new.c - copied unchanged from r202961, head/lib/libc/gen/sem_new.c projects/tcp_cc_head/lib/libc/gen/utxdb.c - copied unchanged from r202961, head/lib/libc/gen/utxdb.c projects/tcp_cc_head/lib/libc/gen/utxdb.h - copied unchanged from r202961, head/lib/libc/gen/utxdb.h projects/tcp_cc_head/lib/libc/mips/gen/hardfloat/ - copied from r202961, head/lib/libc/mips/gen/hardfloat/ projects/tcp_cc_head/lib/libc/nls/ja_JP.UTF-8.msg - copied unchanged from r202961, head/lib/libc/nls/ja_JP.UTF-8.msg projects/tcp_cc_head/lib/libc/nls/ja_JP.eucJP.msg - copied unchanged from r202961, head/lib/libc/nls/ja_JP.eucJP.msg projects/tcp_cc_head/lib/libc/sys/pselect.2 - copied unchanged from r202961, head/lib/libc/sys/pselect.2 projects/tcp_cc_head/lib/libpmc/pmc.xscale.3 - copied unchanged from r202961, head/lib/libpmc/pmc.xscale.3 projects/tcp_cc_head/lib/libthr/arch/ia64/ia64/_umtx_op_err.S - copied unchanged from r202961, head/lib/libthr/arch/ia64/ia64/_umtx_op_err.S projects/tcp_cc_head/lib/libulog/ - copied from r202961, head/lib/libulog/ projects/tcp_cc_head/libexec/ulog-helper/ - copied from r202961, head/libexec/ulog-helper/ projects/tcp_cc_head/release/picobsd/floppy.tree/sbin/ - copied from r202961, head/release/picobsd/floppy.tree/sbin/ projects/tcp_cc_head/release/picobsd/qemu/ - copied from r202961, head/release/picobsd/qemu/ projects/tcp_cc_head/sbin/geom/class/cache/gcache.8 - copied unchanged from r202961, head/sbin/geom/class/cache/gcache.8 projects/tcp_cc_head/sbin/geom/class/mountver/ - copied from r202961, head/sbin/geom/class/mountver/ projects/tcp_cc_head/share/doc/usd/05.dc/ - copied from r202961, head/share/doc/usd/05.dc/ projects/tcp_cc_head/share/doc/usd/06.bc/ - copied from r202961, head/share/doc/usd/06.bc/ projects/tcp_cc_head/share/examples/ses/srcs/eltsub.h - copied unchanged from r202961, head/share/examples/ses/srcs/eltsub.h projects/tcp_cc_head/share/man/man3/pthread_affinity_np.3 - copied unchanged from r202961, head/share/man/man3/pthread_affinity_np.3 projects/tcp_cc_head/share/man/man3/pthread_attr_affinity_np.3 - copied unchanged from r202961, head/share/man/man3/pthread_attr_affinity_np.3 projects/tcp_cc_head/share/man/man4/ada.4 - copied unchanged from r202961, head/share/man/man4/ada.4 projects/tcp_cc_head/share/man/man4/amdsbwd.4 - copied unchanged from r202961, head/share/man/man4/amdsbwd.4 projects/tcp_cc_head/share/man/man4/atp.4 - copied unchanged from r202961, head/share/man/man4/atp.4 projects/tcp_cc_head/share/man/man4/gpib.4 - copied unchanged from r202961, head/share/man/man4/gpib.4 projects/tcp_cc_head/share/man/man4/ipwfw.4 - copied unchanged from r202961, head/share/man/man4/ipwfw.4 projects/tcp_cc_head/share/man/man4/iwifw.4 - copied unchanged from r202961, head/share/man/man4/iwifw.4 projects/tcp_cc_head/share/man/man4/man4.powerpc/adb.4 - copied unchanged from r202961, head/share/man/man4/man4.powerpc/adb.4 projects/tcp_cc_head/share/man/man4/man4.powerpc/akbd.4 - copied unchanged from r202961, head/share/man/man4/man4.powerpc/akbd.4 projects/tcp_cc_head/share/man/man4/man4.powerpc/ams.4 - copied unchanged from r202961, head/share/man/man4/man4.powerpc/ams.4 projects/tcp_cc_head/share/man/man4/man4.powerpc/cuda.4 - copied unchanged from r202961, head/share/man/man4/man4.powerpc/cuda.4 projects/tcp_cc_head/share/man/man4/mk48txx.4 - copied unchanged from r202961, head/share/man/man4/mk48txx.4 projects/tcp_cc_head/share/man/man4/pcii.4 - copied unchanged from r202961, head/share/man/man4/pcii.4 projects/tcp_cc_head/share/man/man4/siba.4 - copied unchanged from r202961, head/share/man/man4/siba.4 projects/tcp_cc_head/share/man/man4/tnt4882.4 - copied unchanged from r202961, head/share/man/man4/tnt4882.4 projects/tcp_cc_head/share/man/man4/uhso.4 - copied unchanged from r202961, head/share/man/man4/uhso.4 projects/tcp_cc_head/share/man/man9/BUS_BIND_INTR.9 - copied unchanged from r202961, head/share/man/man9/BUS_BIND_INTR.9 projects/tcp_cc_head/share/man/man9/BUS_DESCRIBE_INTR.9 - copied unchanged from r202961, head/share/man/man9/BUS_DESCRIBE_INTR.9 projects/tcp_cc_head/sys/arm/arm/cpufunc_asm_fa526.S - copied unchanged from r202961, head/sys/arm/arm/cpufunc_asm_fa526.S projects/tcp_cc_head/sys/arm/conf/CNS11XXNAS - copied unchanged from r202961, head/sys/arm/conf/CNS11XXNAS projects/tcp_cc_head/sys/arm/econa/ - copied from r202961, head/sys/arm/econa/ projects/tcp_cc_head/sys/boot/common/md.c - copied unchanged from r202961, head/sys/boot/common/md.c projects/tcp_cc_head/sys/boot/efi/libefi/efipart.c - copied unchanged from r202961, head/sys/boot/efi/libefi/efipart.c projects/tcp_cc_head/sys/boot/i386/libi386/spinconsole.c - copied unchanged from r202961, head/sys/boot/i386/libi386/spinconsole.c projects/tcp_cc_head/sys/boot/i386/zfsloader/ - copied from r202961, head/sys/boot/i386/zfsloader/ projects/tcp_cc_head/sys/boot/pc98/boot2/boot1.S - copied unchanged from r202961, head/sys/boot/pc98/boot2/boot1.S projects/tcp_cc_head/sys/boot/pc98/boot2/boot2.c - copied unchanged from r202961, head/sys/boot/pc98/boot2/boot2.c projects/tcp_cc_head/sys/boot/pc98/libpc98/libpc98.h - copied unchanged from r202961, head/sys/boot/pc98/libpc98/libpc98.h projects/tcp_cc_head/sys/boot/pc98/libpc98/pc98_sys.c - copied unchanged from r202961, head/sys/boot/pc98/libpc98/pc98_sys.c projects/tcp_cc_head/sys/cam/ata/ata_pmp.c - copied unchanged from r202961, head/sys/cam/ata/ata_pmp.c projects/tcp_cc_head/sys/compat/linux/linux_videodev.h - copied unchanged from r202961, head/sys/compat/linux/linux_videodev.h projects/tcp_cc_head/sys/compat/linux/linux_videodev_compat.h - copied unchanged from r202961, head/sys/compat/linux/linux_videodev_compat.h projects/tcp_cc_head/sys/conf/ldscript.mips.mips64 - copied unchanged from r202961, head/sys/conf/ldscript.mips.mips64 projects/tcp_cc_head/sys/conf/ldscript.mips.octeon1.32 - copied unchanged from r202961, head/sys/conf/ldscript.mips.octeon1.32 projects/tcp_cc_head/sys/conf/ldscript.mips.octeon1.64 - copied unchanged from r202961, head/sys/conf/ldscript.mips.octeon1.64 projects/tcp_cc_head/sys/conf/ldscript.mips.octeon1.n32 - copied unchanged from r202961, head/sys/conf/ldscript.mips.octeon1.n32 projects/tcp_cc_head/sys/contrib/dev/acpica/common/dmextern.c - copied unchanged from r202961, head/sys/contrib/dev/acpica/common/dmextern.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsrepair2.c - copied unchanged from r202961, head/sys/contrib/dev/acpica/namespace/nsrepair2.c projects/tcp_cc_head/sys/contrib/dev/iwn/iwlwifi-1000-128.50.3.1.fw.uu - copied unchanged from r202961, head/sys/contrib/dev/iwn/iwlwifi-1000-128.50.3.1.fw.uu projects/tcp_cc_head/sys/contrib/dev/iwn/iwlwifi-4965-228.61.2.24.fw.uu - copied unchanged from r202961, head/sys/contrib/dev/iwn/iwlwifi-4965-228.61.2.24.fw.uu projects/tcp_cc_head/sys/contrib/dev/iwn/iwlwifi-5000-8.24.2.12.fw.uu - copied unchanged from r202961, head/sys/contrib/dev/iwn/iwlwifi-5000-8.24.2.12.fw.uu projects/tcp_cc_head/sys/contrib/dev/iwn/iwlwifi-5150-8.24.2.2.fw.uu - copied unchanged from r202961, head/sys/contrib/dev/iwn/iwlwifi-5150-8.24.2.2.fw.uu projects/tcp_cc_head/sys/contrib/dev/iwn/iwlwifi-6000-9.176.4.1.fw.uu - copied unchanged from r202961, head/sys/contrib/dev/iwn/iwlwifi-6000-9.176.4.1.fw.uu projects/tcp_cc_head/sys/dev/amdsbwd/ - copied from r202961, head/sys/dev/amdsbwd/ projects/tcp_cc_head/sys/dev/ath/ath_hal/ah_eeprom_v4k.c - copied unchanged from r202961, head/sys/dev/ath/ath_hal/ah_eeprom_v4k.c projects/tcp_cc_head/sys/dev/ath/ath_hal/ah_eeprom_v4k.h - copied unchanged from r202961, head/sys/dev/ath/ath_hal/ah_eeprom_v4k.h projects/tcp_cc_head/sys/dev/cfe/cfe_env.c - copied unchanged from r202961, head/sys/dev/cfe/cfe_env.c projects/tcp_cc_head/sys/dev/flash/mx25l.c - copied unchanged from r202961, head/sys/dev/flash/mx25l.c projects/tcp_cc_head/sys/dev/flash/mx25lreg.h - copied unchanged from r202961, head/sys/dev/flash/mx25lreg.h projects/tcp_cc_head/sys/dev/hwpmc/hwpmc_xscale.c - copied unchanged from r202961, head/sys/dev/hwpmc/hwpmc_xscale.c projects/tcp_cc_head/sys/dev/hwpmc/hwpmc_xscale.h - copied unchanged from r202961, head/sys/dev/hwpmc/hwpmc_xscale.h projects/tcp_cc_head/sys/dev/siba/siba_cc.c - copied unchanged from r202961, head/sys/dev/siba/siba_cc.c projects/tcp_cc_head/sys/dev/usb/controller/ehcireg.h - copied unchanged from r202961, head/sys/dev/usb/controller/ehcireg.h projects/tcp_cc_head/sys/dev/usb/controller/ohcireg.h - copied unchanged from r202961, head/sys/dev/usb/controller/ohcireg.h projects/tcp_cc_head/sys/dev/usb/controller/uhcireg.h - copied unchanged from r202961, head/sys/dev/usb/controller/uhcireg.h projects/tcp_cc_head/sys/dev/usb/input/atp.c - copied unchanged from r202961, head/sys/dev/usb/input/atp.c projects/tcp_cc_head/sys/dev/usb/net/uhso.c - copied unchanged from r202961, head/sys/dev/usb/net/uhso.c projects/tcp_cc_head/sys/fs/ext2fs/ - copied from r202961, head/sys/fs/ext2fs/ projects/tcp_cc_head/sys/geom/mountver/ - copied from r202961, head/sys/geom/mountver/ projects/tcp_cc_head/sys/ia64/ia64/bus_machdep.c - copied unchanged from r202961, head/sys/ia64/ia64/bus_machdep.c projects/tcp_cc_head/sys/ia64/ia64/highfp.c - copied unchanged from r202961, head/sys/ia64/ia64/highfp.c projects/tcp_cc_head/sys/ia64/ia64/iodev_machdep.c - copied unchanged from r202961, head/sys/ia64/ia64/iodev_machdep.c projects/tcp_cc_head/sys/ia64/include/iodev.h - copied unchanged from r202961, head/sys/ia64/include/iodev.h projects/tcp_cc_head/sys/libkern/inet_aton.c - copied unchanged from r202961, head/sys/libkern/inet_aton.c projects/tcp_cc_head/sys/mips/alchemy/ - copied from r202961, head/sys/mips/alchemy/ projects/tcp_cc_head/sys/mips/atheros/ - copied from r202961, head/sys/mips/atheros/ projects/tcp_cc_head/sys/mips/cavium/ - copied from r202961, head/sys/mips/cavium/ projects/tcp_cc_head/sys/mips/conf/ALCHEMY - copied unchanged from r202961, head/sys/mips/conf/ALCHEMY projects/tcp_cc_head/sys/mips/conf/AR71XX - copied unchanged from r202961, head/sys/mips/conf/AR71XX projects/tcp_cc_head/sys/mips/conf/AR71XX.hints - copied unchanged from r202961, head/sys/mips/conf/AR71XX.hints projects/tcp_cc_head/sys/mips/conf/MALTA64 - copied unchanged from r202961, head/sys/mips/conf/MALTA64 projects/tcp_cc_head/sys/mips/conf/OCTEON1 - copied unchanged from r202961, head/sys/mips/conf/OCTEON1 projects/tcp_cc_head/sys/mips/conf/OCTEON1-32 - copied unchanged from r202961, head/sys/mips/conf/OCTEON1-32 projects/tcp_cc_head/sys/mips/conf/OCTEON1.hints - copied unchanged from r202961, head/sys/mips/conf/OCTEON1.hints projects/tcp_cc_head/sys/mips/conf/SWARM - copied unchanged from r202961, head/sys/mips/conf/SWARM projects/tcp_cc_head/sys/mips/conf/SWARM.hints - copied unchanged from r202961, head/sys/mips/conf/SWARM.hints projects/tcp_cc_head/sys/mips/conf/XLR - copied unchanged from r202961, head/sys/mips/conf/XLR projects/tcp_cc_head/sys/mips/include/cdefs.h - copied unchanged from r202961, head/sys/mips/include/cdefs.h projects/tcp_cc_head/sys/mips/include/fls64.h - copied unchanged from r202961, head/sys/mips/include/fls64.h projects/tcp_cc_head/sys/mips/mips/bus_space_generic.c - copied unchanged from r202961, head/sys/mips/mips/bus_space_generic.c projects/tcp_cc_head/sys/mips/mips/elf_trampoline.c - copied unchanged from r202961, head/sys/mips/mips/elf_trampoline.c projects/tcp_cc_head/sys/mips/mips/inckern.S - copied unchanged from r202961, head/sys/mips/mips/inckern.S projects/tcp_cc_head/sys/mips/mips/ptrace_machdep.c - copied unchanged from r202961, head/sys/mips/mips/ptrace_machdep.c projects/tcp_cc_head/sys/mips/mips/sys_machdep.c - copied unchanged from r202961, head/sys/mips/mips/sys_machdep.c projects/tcp_cc_head/sys/mips/rmi/ - copied from r202961, head/sys/mips/rmi/ projects/tcp_cc_head/sys/mips/sibyte/ - copied from r202961, head/sys/mips/sibyte/ projects/tcp_cc_head/sys/modules/amdsbwd/ - copied from r202961, head/sys/modules/amdsbwd/ projects/tcp_cc_head/sys/modules/epic/ - copied from r202961, head/sys/modules/epic/ projects/tcp_cc_head/sys/modules/geom/geom_mountver/ - copied from r202961, head/sys/modules/geom/geom_mountver/ projects/tcp_cc_head/sys/modules/iwnfw/Makefile.inc - copied unchanged from r202961, head/sys/modules/iwnfw/Makefile.inc projects/tcp_cc_head/sys/modules/iwnfw/iwn1000/ - copied from r202961, head/sys/modules/iwnfw/iwn1000/ projects/tcp_cc_head/sys/modules/iwnfw/iwn4965/ - copied from r202961, head/sys/modules/iwnfw/iwn4965/ projects/tcp_cc_head/sys/modules/iwnfw/iwn5000/ - copied from r202961, head/sys/modules/iwnfw/iwn5000/ projects/tcp_cc_head/sys/modules/iwnfw/iwn5150/ - copied from r202961, head/sys/modules/iwnfw/iwn5150/ projects/tcp_cc_head/sys/modules/iwnfw/iwn6000/ - copied from r202961, head/sys/modules/iwnfw/iwn6000/ projects/tcp_cc_head/sys/modules/usb/atp/ - copied from r202961, head/sys/modules/usb/atp/ projects/tcp_cc_head/sys/modules/usb/uhso/ - copied from r202961, head/sys/modules/usb/uhso/ projects/tcp_cc_head/sys/netinet/ipfw/ip_fw_dynamic.c - copied unchanged from r202961, head/sys/netinet/ipfw/ip_fw_dynamic.c projects/tcp_cc_head/sys/netinet/ipfw/ip_fw_log.c - copied unchanged from r202961, head/sys/netinet/ipfw/ip_fw_log.c projects/tcp_cc_head/sys/netinet/ipfw/ip_fw_private.h - copied unchanged from r202961, head/sys/netinet/ipfw/ip_fw_private.h projects/tcp_cc_head/sys/netinet/ipfw/ip_fw_sockopt.c - copied unchanged from r202961, head/sys/netinet/ipfw/ip_fw_sockopt.c projects/tcp_cc_head/sys/netinet/ipfw/ip_fw_table.c - copied unchanged from r202961, head/sys/netinet/ipfw/ip_fw_table.c projects/tcp_cc_head/sys/sparc64/ebus/epic.c - copied unchanged from r202961, head/sys/sparc64/ebus/epic.c projects/tcp_cc_head/sys/sparc64/pci/fire.c - copied unchanged from r202961, head/sys/sparc64/pci/fire.c projects/tcp_cc_head/sys/sparc64/pci/firereg.h - copied unchanged from r202961, head/sys/sparc64/pci/firereg.h projects/tcp_cc_head/sys/sparc64/pci/firevar.h - copied unchanged from r202961, head/sys/sparc64/pci/firevar.h projects/tcp_cc_head/sys/sys/_termios.h - copied unchanged from r202961, head/sys/sys/_termios.h projects/tcp_cc_head/sys/sys/_umtx.h - copied unchanged from r202961, head/sys/sys/_umtx.h projects/tcp_cc_head/tools/regression/acltools/02.t - copied unchanged from r202961, head/tools/regression/acltools/02.t projects/tcp_cc_head/tools/regression/bin/sh/builtins/builtin1.0 - copied unchanged from r202961, head/tools/regression/bin/sh/builtins/builtin1.0 projects/tcp_cc_head/tools/regression/bin/sh/builtins/cd2.0 - copied unchanged from r202961, head/tools/regression/bin/sh/builtins/cd2.0 projects/tcp_cc_head/tools/regression/bin/sh/builtins/command6.0 - copied unchanged from r202961, head/tools/regression/bin/sh/builtins/command6.0 projects/tcp_cc_head/tools/regression/bin/sh/builtins/command6.0.stdout - copied unchanged from r202961, head/tools/regression/bin/sh/builtins/command6.0.stdout projects/tcp_cc_head/tools/regression/bin/sh/builtins/command7.0 - copied unchanged from r202961, head/tools/regression/bin/sh/builtins/command7.0 projects/tcp_cc_head/tools/regression/bin/sh/builtins/fc1.0 - copied unchanged from r202961, head/tools/regression/bin/sh/builtins/fc1.0 projects/tcp_cc_head/tools/regression/bin/sh/builtins/fc2.0 - copied unchanged from r202961, head/tools/regression/bin/sh/builtins/fc2.0 projects/tcp_cc_head/tools/regression/bin/sh/builtins/trap3.0 - copied unchanged from r202961, head/tools/regression/bin/sh/builtins/trap3.0 projects/tcp_cc_head/tools/regression/bin/sh/builtins/type2.0 - copied unchanged from r202961, head/tools/regression/bin/sh/builtins/type2.0 projects/tcp_cc_head/tools/regression/bin/sh/execution/redir1.0 - copied unchanged from r202961, head/tools/regression/bin/sh/execution/redir1.0 projects/tcp_cc_head/tools/regression/bin/sh/execution/redir2.0 - copied unchanged from r202961, head/tools/regression/bin/sh/execution/redir2.0 projects/tcp_cc_head/tools/regression/bin/sh/expansion/arith1.0 - copied unchanged from r202961, head/tools/regression/bin/sh/expansion/arith1.0 projects/tcp_cc_head/tools/regression/bin/sh/expansion/arith2.0 - copied unchanged from r202961, head/tools/regression/bin/sh/expansion/arith2.0 projects/tcp_cc_head/tools/regression/bin/sh/expansion/cmdsubst1.0 - copied unchanged from r202961, head/tools/regression/bin/sh/expansion/cmdsubst1.0 projects/tcp_cc_head/tools/regression/bin/sh/expansion/question1.0 - copied unchanged from r202961, head/tools/regression/bin/sh/expansion/question1.0 projects/tcp_cc_head/tools/regression/bin/sh/expansion/set-u1.0 - copied unchanged from r202961, head/tools/regression/bin/sh/expansion/set-u1.0 projects/tcp_cc_head/tools/regression/bin/sh/expansion/set-u2.0 - copied unchanged from r202961, head/tools/regression/bin/sh/expansion/set-u2.0 projects/tcp_cc_head/tools/regression/bin/sh/parser/for1.0 - copied unchanged from r202961, head/tools/regression/bin/sh/parser/for1.0 projects/tcp_cc_head/tools/regression/bpf/bpf_filter/tests/test0084.h - copied unchanged from r202961, head/tools/regression/bpf/bpf_filter/tests/test0084.h projects/tcp_cc_head/tools/regression/kqueue/ - copied from r202961, head/tools/regression/kqueue/ projects/tcp_cc_head/tools/regression/lib/libutil/test-pidfile.c - copied unchanged from r202961, head/tools/regression/lib/libutil/test-pidfile.c projects/tcp_cc_head/tools/regression/posixsem2/ - copied from r202961, head/tools/regression/posixsem2/ projects/tcp_cc_head/tools/regression/usr.bin/comm/ - copied from r202961, head/tools/regression/usr.bin/comm/ projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/directive-t0/ - copied from r202961, head/tools/regression/usr.bin/make/syntax/directive-t0/ projects/tcp_cc_head/tools/regression/usr.bin/make/sysmk/ - copied from r202961, head/tools/regression/usr.bin/make/sysmk/ projects/tcp_cc_head/tools/tools/nanobsd/pcengines/ - copied from r202961, head/tools/tools/nanobsd/pcengines/ projects/tcp_cc_head/tools/tools/notescheck/ - copied from r202961, head/tools/tools/notescheck/ projects/tcp_cc_head/usr.bin/bc/ - copied from r202961, head/usr.bin/bc/ projects/tcp_cc_head/usr.bin/dc/ - copied from r202961, head/usr.bin/dc/ projects/tcp_cc_head/usr.bin/wtmpcvt/ - copied from r202961, head/usr.bin/wtmpcvt/ projects/tcp_cc_head/usr.sbin/service/ - copied from r202961, head/usr.sbin/service/ projects/tcp_cc_head/usr.sbin/traceroute/findsaddr-udp.c - copied unchanged from r202961, head/usr.sbin/traceroute/findsaddr-udp.c projects/tcp_cc_head/usr.sbin/uhsoctl/ - copied from r202961, head/usr.sbin/uhsoctl/ Deleted: projects/tcp_cc_head/contrib/one-true-awk/mac.code projects/tcp_cc_head/etc/rc.d/ip6fw projects/tcp_cc_head/etc/rc.firewall6 projects/tcp_cc_head/lib/csu/i386-elf/crt1.c projects/tcp_cc_head/lib/libarchive/test/test_fuzz_1.iso.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_gz.iso.gz.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_isojoliet_bz2.iso.bz2.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_isojolietrr_bz2.iso.bz2.uu projects/tcp_cc_head/lib/libarchive/test/test_read_format_isorr_bz2.iso.bz2.uu projects/tcp_cc_head/lib/libc/gen/pselect.3 projects/tcp_cc_head/lib/libc/gen/pselect.c projects/tcp_cc_head/lib/libc/mips/gen/fpgetmask.c projects/tcp_cc_head/lib/libc/mips/gen/fpgetround.c projects/tcp_cc_head/lib/libc/mips/gen/fpgetsticky.c projects/tcp_cc_head/lib/libc/mips/gen/fpsetmask.c projects/tcp_cc_head/lib/libc/mips/gen/fpsetround.c projects/tcp_cc_head/lib/libc/mips/gen/fpsetsticky.c projects/tcp_cc_head/lib/libutil/login.3 projects/tcp_cc_head/lib/libutil/login.c projects/tcp_cc_head/lib/libutil/logout.3 projects/tcp_cc_head/lib/libutil/logout.c projects/tcp_cc_head/lib/libutil/logwtmp.3 projects/tcp_cc_head/lib/libutil/logwtmp.c projects/tcp_cc_head/share/examples/pppd/ projects/tcp_cc_head/share/examples/slattach/ projects/tcp_cc_head/share/examples/sliplogin/ projects/tcp_cc_head/share/examples/startslip/ projects/tcp_cc_head/share/man/man5/utmp.5 projects/tcp_cc_head/sys/boot/efi/libefi/efifs.c projects/tcp_cc_head/sys/boot/pc98/boot2/asm.S projects/tcp_cc_head/sys/boot/pc98/boot2/asm.h projects/tcp_cc_head/sys/boot/pc98/boot2/bios.S projects/tcp_cc_head/sys/boot/pc98/boot2/boot.c projects/tcp_cc_head/sys/boot/pc98/boot2/boot.h projects/tcp_cc_head/sys/boot/pc98/boot2/boot2.S projects/tcp_cc_head/sys/boot/pc98/boot2/dinode.h projects/tcp_cc_head/sys/boot/pc98/boot2/disk.c projects/tcp_cc_head/sys/boot/pc98/boot2/fs.h projects/tcp_cc_head/sys/boot/pc98/boot2/inode.h projects/tcp_cc_head/sys/boot/pc98/boot2/io.c projects/tcp_cc_head/sys/boot/pc98/boot2/probe_keyboard.c projects/tcp_cc_head/sys/boot/pc98/boot2/quota.h projects/tcp_cc_head/sys/boot/pc98/boot2/serial.S projects/tcp_cc_head/sys/boot/pc98/boot2/serial_16550.S projects/tcp_cc_head/sys/boot/pc98/boot2/serial_8251.S projects/tcp_cc_head/sys/boot/pc98/boot2/start.S projects/tcp_cc_head/sys/boot/pc98/boot2/sys.c projects/tcp_cc_head/sys/boot/pc98/boot2/table.c projects/tcp_cc_head/sys/compat/x86bios/x86bios_alloc.c projects/tcp_cc_head/sys/contrib/dev/iwn/iwlwifi-4965-4.44.17.fw.uu projects/tcp_cc_head/sys/contrib/x86emu/x86emu_util.c projects/tcp_cc_head/sys/dev/ata/ata-usb.c projects/tcp_cc_head/sys/dev/usb/serial/uch341.c projects/tcp_cc_head/sys/gnu/fs/ext2fs/ projects/tcp_cc_head/sys/mips/include/bus_octeon.h projects/tcp_cc_head/sys/mips/include/intr.h projects/tcp_cc_head/sys/mips/include/pltfm.h projects/tcp_cc_head/sys/mips/sentry5/siba_cc.c projects/tcp_cc_head/sys/mips/sentry5/siba_mips.c projects/tcp_cc_head/sys/mips/sentry5/siba_sdram.c projects/tcp_cc_head/sys/modules/ata/atausb/ projects/tcp_cc_head/sys/modules/usb/uch341/ projects/tcp_cc_head/sys/sys/semaphore.h projects/tcp_cc_head/usr.bin/awk/b.c.diff projects/tcp_cc_head/usr.bin/awk/main.c.diff projects/tcp_cc_head/usr.bin/awk/run.c.diff projects/tcp_cc_head/usr.sbin/ndp/gnuc.h projects/tcp_cc_head/usr.sbin/ntp/ntptrace/Makefile projects/tcp_cc_head/usr.sbin/sysinstall/acpi.c projects/tcp_cc_head/usr.sbin/sysinstall/acpidump.h projects/tcp_cc_head/usr.sbin/sysinstall/biosmptable.c Modified: projects/tcp_cc_head/COPYRIGHT projects/tcp_cc_head/MAINTAINERS projects/tcp_cc_head/Makefile projects/tcp_cc_head/Makefile.inc1 projects/tcp_cc_head/ObsoleteFiles.inc projects/tcp_cc_head/UPDATING projects/tcp_cc_head/bin/Makefile projects/tcp_cc_head/bin/cat/Makefile projects/tcp_cc_head/bin/cp/cp.1 projects/tcp_cc_head/bin/cp/cp.c projects/tcp_cc_head/bin/cp/utils.c projects/tcp_cc_head/bin/csh/config.h projects/tcp_cc_head/bin/csh/config_p.h projects/tcp_cc_head/bin/csh/iconv_stub.c projects/tcp_cc_head/bin/date/Makefile projects/tcp_cc_head/bin/date/date.1 projects/tcp_cc_head/bin/date/date.c projects/tcp_cc_head/bin/getfacl/getfacl.1 projects/tcp_cc_head/bin/kenv/kenv.c projects/tcp_cc_head/bin/ls/ls.c projects/tcp_cc_head/bin/ls/ls.h projects/tcp_cc_head/bin/ls/print.c projects/tcp_cc_head/bin/pax/ftree.c projects/tcp_cc_head/bin/pax/gen_subs.c projects/tcp_cc_head/bin/pax/sel_subs.c projects/tcp_cc_head/bin/pkill/Makefile projects/tcp_cc_head/bin/pkill/pkill.c projects/tcp_cc_head/bin/ps/keyword.c projects/tcp_cc_head/bin/setfacl/merge.c projects/tcp_cc_head/bin/setfacl/remove.c projects/tcp_cc_head/bin/setfacl/setfacl.h projects/tcp_cc_head/bin/setfacl/util.c projects/tcp_cc_head/bin/sh/alias.c projects/tcp_cc_head/bin/sh/alias.h projects/tcp_cc_head/bin/sh/arith.h projects/tcp_cc_head/bin/sh/arith.y projects/tcp_cc_head/bin/sh/arith_lex.l projects/tcp_cc_head/bin/sh/cd.c projects/tcp_cc_head/bin/sh/error.c projects/tcp_cc_head/bin/sh/error.h projects/tcp_cc_head/bin/sh/eval.c projects/tcp_cc_head/bin/sh/eval.h projects/tcp_cc_head/bin/sh/exec.c projects/tcp_cc_head/bin/sh/exec.h projects/tcp_cc_head/bin/sh/expand.c projects/tcp_cc_head/bin/sh/expand.h projects/tcp_cc_head/bin/sh/histedit.c projects/tcp_cc_head/bin/sh/input.c projects/tcp_cc_head/bin/sh/input.h projects/tcp_cc_head/bin/sh/jobs.c projects/tcp_cc_head/bin/sh/mail.c projects/tcp_cc_head/bin/sh/main.c projects/tcp_cc_head/bin/sh/main.h projects/tcp_cc_head/bin/sh/memalloc.c projects/tcp_cc_head/bin/sh/memalloc.h projects/tcp_cc_head/bin/sh/miscbltin.c projects/tcp_cc_head/bin/sh/mkbuiltins projects/tcp_cc_head/bin/sh/mkinit.c projects/tcp_cc_head/bin/sh/mksyntax.c projects/tcp_cc_head/bin/sh/myhistedit.h projects/tcp_cc_head/bin/sh/mystring.c projects/tcp_cc_head/bin/sh/options.c projects/tcp_cc_head/bin/sh/options.h projects/tcp_cc_head/bin/sh/output.c projects/tcp_cc_head/bin/sh/output.h projects/tcp_cc_head/bin/sh/parser.c projects/tcp_cc_head/bin/sh/parser.h projects/tcp_cc_head/bin/sh/redir.c projects/tcp_cc_head/bin/sh/sh.1 projects/tcp_cc_head/bin/sh/show.c projects/tcp_cc_head/bin/sh/show.h projects/tcp_cc_head/bin/sh/trap.c projects/tcp_cc_head/bin/sh/trap.h projects/tcp_cc_head/bin/sh/var.c projects/tcp_cc_head/bin/sh/var.h projects/tcp_cc_head/bin/uuidgen/Makefile projects/tcp_cc_head/cddl/contrib/opensolaris/cmd/zdb/zdb_il.c projects/tcp_cc_head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/tcp_cc_head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c projects/tcp_cc_head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h projects/tcp_cc_head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c projects/tcp_cc_head/contrib/bind9/CHANGES projects/tcp_cc_head/contrib/bind9/FAQ projects/tcp_cc_head/contrib/bind9/FAQ.xml projects/tcp_cc_head/contrib/bind9/bin/dig/dighost.c projects/tcp_cc_head/contrib/bind9/bin/dnssec/dnssec-signzone.8 projects/tcp_cc_head/contrib/bind9/bin/dnssec/dnssec-signzone.html projects/tcp_cc_head/contrib/bind9/bin/named/query.c projects/tcp_cc_head/contrib/bind9/doc/arm/Bv9ARM.pdf projects/tcp_cc_head/contrib/bind9/doc/arm/man.dnssec-signzone.html projects/tcp_cc_head/contrib/bind9/doc/arm/man.named-checkconf.html projects/tcp_cc_head/contrib/bind9/doc/arm/man.named-checkzone.html projects/tcp_cc_head/contrib/bind9/doc/arm/man.named.html projects/tcp_cc_head/contrib/bind9/doc/arm/man.nsupdate.html projects/tcp_cc_head/contrib/bind9/doc/arm/man.rndc-confgen.html projects/tcp_cc_head/contrib/bind9/doc/arm/man.rndc.conf.html projects/tcp_cc_head/contrib/bind9/doc/arm/man.rndc.html projects/tcp_cc_head/contrib/bind9/lib/dns/api projects/tcp_cc_head/contrib/bind9/lib/dns/include/dns/db.h projects/tcp_cc_head/contrib/bind9/lib/dns/include/dns/ncache.h projects/tcp_cc_head/contrib/bind9/lib/dns/include/dns/types.h projects/tcp_cc_head/contrib/bind9/lib/dns/masterdump.c projects/tcp_cc_head/contrib/bind9/lib/dns/rbtdb.c projects/tcp_cc_head/contrib/bind9/lib/dns/resolver.c projects/tcp_cc_head/contrib/bind9/lib/dns/validator.c projects/tcp_cc_head/contrib/bind9/lib/isc/ia64/include/isc/atomic.h projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_buffer.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_config.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_context.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_gabn.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_gai_strerror.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_getaddrinfo.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_gethostent.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_getipnode.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_getnameinfo.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_getrrsetbyname.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_gnba.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_hstrerror.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_inetntop.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_noop.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_packet.html projects/tcp_cc_head/contrib/bind9/lib/lwres/man/lwres_resutil.html projects/tcp_cc_head/contrib/bind9/version projects/tcp_cc_head/contrib/bsnmp/snmp_mibII/BEGEMOT-MIB2-MIB.txt projects/tcp_cc_head/contrib/bsnmp/snmp_mibII/mibII.c projects/tcp_cc_head/contrib/bsnmp/snmp_mibII/mibII.h projects/tcp_cc_head/contrib/bsnmp/snmp_mibII/mibII_begemot.c projects/tcp_cc_head/contrib/bsnmp/snmp_mibII/mibII_tree.def projects/tcp_cc_head/contrib/ee/ee.c projects/tcp_cc_head/contrib/expat/lib/xmlparse.c projects/tcp_cc_head/contrib/expat/lib/xmltok_impl.c projects/tcp_cc_head/contrib/gcc/config/freebsd-spec.h projects/tcp_cc_head/contrib/gcc/config/i386/i386.c projects/tcp_cc_head/contrib/gcc/config/mips/freebsd.h projects/tcp_cc_head/contrib/groff/font/devutf8/R.proto projects/tcp_cc_head/contrib/groff/tmac/an-old.tmac projects/tcp_cc_head/contrib/groff/tmac/doc-common projects/tcp_cc_head/contrib/groff/tmac/doc-old.tmac projects/tcp_cc_head/contrib/groff/tmac/doc-syms projects/tcp_cc_head/contrib/groff/tmac/doc.tmac projects/tcp_cc_head/contrib/groff/tmac/groff_mdoc.man projects/tcp_cc_head/contrib/ipfilter/man/ipf.8 projects/tcp_cc_head/contrib/ncurses/ncurses/base/lib_getch.c projects/tcp_cc_head/contrib/netcat/FREEBSD-vendor projects/tcp_cc_head/contrib/netcat/nc.1 projects/tcp_cc_head/contrib/netcat/netcat.c projects/tcp_cc_head/contrib/ntp/COPYRIGHT projects/tcp_cc_head/contrib/ntp/ChangeLog projects/tcp_cc_head/contrib/ntp/CommitLog projects/tcp_cc_head/contrib/ntp/Makefile.in projects/tcp_cc_head/contrib/ntp/NEWS projects/tcp_cc_head/contrib/ntp/README projects/tcp_cc_head/contrib/ntp/README.bk projects/tcp_cc_head/contrib/ntp/README.patches projects/tcp_cc_head/contrib/ntp/WHERE-TO-START projects/tcp_cc_head/contrib/ntp/aclocal.m4 projects/tcp_cc_head/contrib/ntp/adjtimed/Makefile.in projects/tcp_cc_head/contrib/ntp/arlib/Makefile.in projects/tcp_cc_head/contrib/ntp/arlib/aclocal.m4 projects/tcp_cc_head/contrib/ntp/arlib/configure projects/tcp_cc_head/contrib/ntp/build projects/tcp_cc_head/contrib/ntp/clockstuff/Makefile.in projects/tcp_cc_head/contrib/ntp/config.h.in projects/tcp_cc_head/contrib/ntp/configure projects/tcp_cc_head/contrib/ntp/configure.ac projects/tcp_cc_head/contrib/ntp/flock-build projects/tcp_cc_head/contrib/ntp/html/copyright.html projects/tcp_cc_head/contrib/ntp/html/drivers/driver40.html projects/tcp_cc_head/contrib/ntp/include/Makefile.in projects/tcp_cc_head/contrib/ntp/include/copyright.def projects/tcp_cc_head/contrib/ntp/include/isc/Makefile.in projects/tcp_cc_head/contrib/ntp/include/ntp_debug.h projects/tcp_cc_head/contrib/ntp/include/version.def projects/tcp_cc_head/contrib/ntp/kernel/Makefile.in projects/tcp_cc_head/contrib/ntp/kernel/sys/Makefile.in projects/tcp_cc_head/contrib/ntp/libntp/Makefile.in projects/tcp_cc_head/contrib/ntp/libopts/Makefile.in projects/tcp_cc_head/contrib/ntp/libparse/Makefile.am projects/tcp_cc_head/contrib/ntp/libparse/Makefile.in projects/tcp_cc_head/contrib/ntp/libparse/clk_rawdcf.c projects/tcp_cc_head/contrib/ntp/ntpd/Makefile.in projects/tcp_cc_head/contrib/ntp/ntpd/cmd_args.c projects/tcp_cc_head/contrib/ntp/ntpd/ntp_crypto.c projects/tcp_cc_head/contrib/ntp/ntpd/ntp_intres.c projects/tcp_cc_head/contrib/ntp/ntpd/ntp_io.c projects/tcp_cc_head/contrib/ntp/ntpd/ntp_request.c projects/tcp_cc_head/contrib/ntp/ntpd/ntp_timer.c projects/tcp_cc_head/contrib/ntp/ntpd/ntpd-opts.c projects/tcp_cc_head/contrib/ntp/ntpd/ntpd-opts.h projects/tcp_cc_head/contrib/ntp/ntpd/ntpd-opts.texi projects/tcp_cc_head/contrib/ntp/ntpd/ntpd.1 projects/tcp_cc_head/contrib/ntp/ntpd/ntpd.c projects/tcp_cc_head/contrib/ntp/ntpd/ntpdsim-opts.c projects/tcp_cc_head/contrib/ntp/ntpd/ntpdsim-opts.h projects/tcp_cc_head/contrib/ntp/ntpd/ntpdsim-opts.texi projects/tcp_cc_head/contrib/ntp/ntpd/ntpdsim.1 projects/tcp_cc_head/contrib/ntp/ntpd/refclock_dumbclock.c projects/tcp_cc_head/contrib/ntp/ntpd/refclock_hopfser.c projects/tcp_cc_head/contrib/ntp/ntpd/refclock_jjy.c projects/tcp_cc_head/contrib/ntp/ntpd/refclock_nmea.c projects/tcp_cc_head/contrib/ntp/ntpd/refclock_palisade.c projects/tcp_cc_head/contrib/ntp/ntpdate/Makefile.in projects/tcp_cc_head/contrib/ntp/ntpdc/Makefile.in projects/tcp_cc_head/contrib/ntp/ntpdc/ntpdc-opts.c projects/tcp_cc_head/contrib/ntp/ntpdc/ntpdc-opts.h projects/tcp_cc_head/contrib/ntp/ntpdc/ntpdc-opts.texi projects/tcp_cc_head/contrib/ntp/ntpdc/ntpdc.1 projects/tcp_cc_head/contrib/ntp/ntpq/Makefile.in projects/tcp_cc_head/contrib/ntp/ntpq/ntpq-opts.c projects/tcp_cc_head/contrib/ntp/ntpq/ntpq-opts.h projects/tcp_cc_head/contrib/ntp/ntpq/ntpq-opts.texi projects/tcp_cc_head/contrib/ntp/ntpq/ntpq.1 projects/tcp_cc_head/contrib/ntp/ntpq/ntpq.c projects/tcp_cc_head/contrib/ntp/packageinfo.sh projects/tcp_cc_head/contrib/ntp/parseutil/Makefile.in projects/tcp_cc_head/contrib/ntp/scripts/Makefile.in projects/tcp_cc_head/contrib/ntp/sntp/Makefile.in projects/tcp_cc_head/contrib/ntp/sntp/aclocal.m4 projects/tcp_cc_head/contrib/ntp/sntp/config.h.in projects/tcp_cc_head/contrib/ntp/sntp/configure projects/tcp_cc_head/contrib/ntp/sntp/configure.ac projects/tcp_cc_head/contrib/ntp/sntp/libopts/Makefile.in projects/tcp_cc_head/contrib/ntp/sntp/sntp-opts.c projects/tcp_cc_head/contrib/ntp/sntp/sntp-opts.def projects/tcp_cc_head/contrib/ntp/sntp/sntp-opts.h projects/tcp_cc_head/contrib/ntp/sntp/sntp-opts.texi projects/tcp_cc_head/contrib/ntp/sntp/sntp.1 projects/tcp_cc_head/contrib/ntp/sntp/version.def projects/tcp_cc_head/contrib/ntp/util/Makefile.in projects/tcp_cc_head/contrib/ntp/util/ntp-keygen-opts.c projects/tcp_cc_head/contrib/ntp/util/ntp-keygen-opts.h projects/tcp_cc_head/contrib/ntp/util/ntp-keygen-opts.texi projects/tcp_cc_head/contrib/ntp/util/ntp-keygen.1 projects/tcp_cc_head/contrib/ntp/version projects/tcp_cc_head/contrib/ntp/version.m4 projects/tcp_cc_head/contrib/one-true-awk/FIXES projects/tcp_cc_head/contrib/one-true-awk/b.c projects/tcp_cc_head/contrib/one-true-awk/lib.c projects/tcp_cc_head/contrib/one-true-awk/main.c projects/tcp_cc_head/contrib/one-true-awk/makefile projects/tcp_cc_head/contrib/one-true-awk/maketab.c projects/tcp_cc_head/contrib/one-true-awk/proctab.c projects/tcp_cc_head/contrib/one-true-awk/proto.h projects/tcp_cc_head/contrib/one-true-awk/run.c projects/tcp_cc_head/contrib/opie/libopie/getutmpentry.c projects/tcp_cc_head/contrib/opie/libopie/insecure.c projects/tcp_cc_head/contrib/opie/libopie/login.c projects/tcp_cc_head/contrib/pf/man/pf.conf.5 projects/tcp_cc_head/contrib/pf/pfctl/parse.y projects/tcp_cc_head/contrib/pf/pfctl/pf_print_state.c projects/tcp_cc_head/contrib/pf/pfctl/pfctl_parser.c projects/tcp_cc_head/contrib/tcp_wrappers/hosts_access.c projects/tcp_cc_head/contrib/telnet/telnet/externs.h projects/tcp_cc_head/contrib/telnet/telnetd/sys_term.c projects/tcp_cc_head/contrib/telnet/telnetd/telnetd.c projects/tcp_cc_head/contrib/top/username.c projects/tcp_cc_head/crypto/heimdal/kcm/connect.c projects/tcp_cc_head/crypto/openssh/config.h projects/tcp_cc_head/crypto/openssh/defines.h projects/tcp_cc_head/crypto/openssh/loginrec.c projects/tcp_cc_head/crypto/openssh/ssh_namespace.h projects/tcp_cc_head/crypto/openssh/sshd.c projects/tcp_cc_head/crypto/openssh/sshd_config projects/tcp_cc_head/crypto/openssl/ssl/s3_lib.c projects/tcp_cc_head/crypto/openssl/ssl/s3_pkt.c projects/tcp_cc_head/crypto/openssl/ssl/s3_srvr.c projects/tcp_cc_head/etc/Makefile projects/tcp_cc_head/etc/defaults/devfs.rules projects/tcp_cc_head/etc/defaults/rc.conf projects/tcp_cc_head/etc/devd/Makefile projects/tcp_cc_head/etc/etc.amd64/ttys projects/tcp_cc_head/etc/etc.arm/ttys projects/tcp_cc_head/etc/etc.i386/ttys projects/tcp_cc_head/etc/etc.ia64/ttys projects/tcp_cc_head/etc/etc.mips/ttys projects/tcp_cc_head/etc/etc.powerpc/ttys projects/tcp_cc_head/etc/etc.sparc64/ttys projects/tcp_cc_head/etc/gettytab projects/tcp_cc_head/etc/mtree/BIND.chroot.dist projects/tcp_cc_head/etc/mtree/BSD.include.dist projects/tcp_cc_head/etc/mtree/BSD.usr.dist projects/tcp_cc_head/etc/mtree/BSD.var.dist projects/tcp_cc_head/etc/namedb/named.conf projects/tcp_cc_head/etc/namedb/named.root projects/tcp_cc_head/etc/network.subr projects/tcp_cc_head/etc/newsyslog.conf projects/tcp_cc_head/etc/periodic/monthly/200.accounting projects/tcp_cc_head/etc/rc.d/Makefile projects/tcp_cc_head/etc/rc.d/bgfsck projects/tcp_cc_head/etc/rc.d/cleanvar projects/tcp_cc_head/etc/rc.d/cleartmp projects/tcp_cc_head/etc/rc.d/devfs projects/tcp_cc_head/etc/rc.d/faith projects/tcp_cc_head/etc/rc.d/fsck projects/tcp_cc_head/etc/rc.d/hostid projects/tcp_cc_head/etc/rc.d/hostname projects/tcp_cc_head/etc/rc.d/ipfw projects/tcp_cc_head/etc/rc.d/jail projects/tcp_cc_head/etc/rc.d/ldconfig projects/tcp_cc_head/etc/rc.d/motd projects/tcp_cc_head/etc/rc.d/mountcritlocal projects/tcp_cc_head/etc/rc.d/moused projects/tcp_cc_head/etc/rc.d/named projects/tcp_cc_head/etc/rc.d/netif projects/tcp_cc_head/etc/rc.d/netoptions projects/tcp_cc_head/etc/rc.d/newsyslog projects/tcp_cc_head/etc/rc.d/nfsclient projects/tcp_cc_head/etc/rc.d/nsswitch projects/tcp_cc_head/etc/rc.d/pf projects/tcp_cc_head/etc/rc.d/savecore projects/tcp_cc_head/etc/rc.d/stf projects/tcp_cc_head/etc/rc.d/var projects/tcp_cc_head/etc/rc.firewall projects/tcp_cc_head/etc/rc.subr projects/tcp_cc_head/etc/root/dot.profile projects/tcp_cc_head/etc/termcap.small projects/tcp_cc_head/games/factor/factor.c projects/tcp_cc_head/games/fortune/datfiles/fortunes projects/tcp_cc_head/games/fortune/datfiles/fortunes-o.real projects/tcp_cc_head/games/fortune/datfiles/freebsd-tips projects/tcp_cc_head/games/fortune/strfile/strfile.c projects/tcp_cc_head/games/fortune/unstr/unstr.c projects/tcp_cc_head/games/number/Makefile projects/tcp_cc_head/games/number/number.c projects/tcp_cc_head/games/pom/pom.6 projects/tcp_cc_head/games/pom/pom.c projects/tcp_cc_head/gnu/lib/libgcc/Makefile projects/tcp_cc_head/gnu/lib/libgcov/Makefile projects/tcp_cc_head/gnu/lib/libstdc++/Makefile projects/tcp_cc_head/gnu/lib/libsupc++/Makefile projects/tcp_cc_head/gnu/usr.bin/Makefile projects/tcp_cc_head/gnu/usr.bin/binutils/Makefile.inc0 projects/tcp_cc_head/gnu/usr.bin/binutils/ld/Makefile.mips projects/tcp_cc_head/gnu/usr.bin/cc/Makefile.tgt projects/tcp_cc_head/gnu/usr.bin/groff/tmac/mdoc.local projects/tcp_cc_head/include/Makefile projects/tcp_cc_head/include/dirent.h projects/tcp_cc_head/include/paths.h projects/tcp_cc_head/include/signal.h projects/tcp_cc_head/include/strings.h projects/tcp_cc_head/include/unistd.h projects/tcp_cc_head/include/utmp.h projects/tcp_cc_head/kerberos5/lib/libgssapi_krb5/Makefile projects/tcp_cc_head/kerberos5/lib/libgssapi_spnego/Makefile projects/tcp_cc_head/kerberos5/usr.bin/kdestroy/Makefile projects/tcp_cc_head/kerberos5/usr.bin/kpasswd/Makefile projects/tcp_cc_head/lib/Makefile projects/tcp_cc_head/lib/Makefile.inc projects/tcp_cc_head/lib/bind/config.h projects/tcp_cc_head/lib/bind/dns/code.h projects/tcp_cc_head/lib/bind/dns/dns/enumclass.h projects/tcp_cc_head/lib/bind/dns/dns/enumtype.h projects/tcp_cc_head/lib/bind/dns/dns/rdatastruct.h projects/tcp_cc_head/lib/csu/Makefile.inc projects/tcp_cc_head/lib/csu/amd64/Makefile projects/tcp_cc_head/lib/csu/arm/Makefile projects/tcp_cc_head/lib/csu/i386-elf/Makefile projects/tcp_cc_head/lib/csu/ia64/Makefile projects/tcp_cc_head/lib/csu/mips/Makefile projects/tcp_cc_head/lib/csu/powerpc/Makefile projects/tcp_cc_head/lib/csu/sparc64/Makefile projects/tcp_cc_head/lib/libarchive/Makefile projects/tcp_cc_head/lib/libarchive/archive.h projects/tcp_cc_head/lib/libarchive/archive_check_magic.c projects/tcp_cc_head/lib/libarchive/archive_endian.h projects/tcp_cc_head/lib/libarchive/archive_entry.c projects/tcp_cc_head/lib/libarchive/archive_entry.h projects/tcp_cc_head/lib/libarchive/archive_entry_link_resolver.c projects/tcp_cc_head/lib/libarchive/archive_entry_private.h projects/tcp_cc_head/lib/libarchive/archive_entry_stat.c projects/tcp_cc_head/lib/libarchive/archive_platform.h projects/tcp_cc_head/lib/libarchive/archive_private.h projects/tcp_cc_head/lib/libarchive/archive_read.c projects/tcp_cc_head/lib/libarchive/archive_read_disk_entry_from_file.c projects/tcp_cc_head/lib/libarchive/archive_read_disk_private.h projects/tcp_cc_head/lib/libarchive/archive_read_disk_set_standard_lookup.c projects/tcp_cc_head/lib/libarchive/archive_read_open_fd.c projects/tcp_cc_head/lib/libarchive/archive_read_open_file.c projects/tcp_cc_head/lib/libarchive/archive_read_open_filename.c projects/tcp_cc_head/lib/libarchive/archive_read_private.h projects/tcp_cc_head/lib/libarchive/archive_read_support_compression_all.c projects/tcp_cc_head/lib/libarchive/archive_read_support_compression_bzip2.c projects/tcp_cc_head/lib/libarchive/archive_read_support_compression_compress.c projects/tcp_cc_head/lib/libarchive/archive_read_support_compression_gzip.c projects/tcp_cc_head/lib/libarchive/archive_read_support_compression_program.c projects/tcp_cc_head/lib/libarchive/archive_read_support_compression_xz.c projects/tcp_cc_head/lib/libarchive/archive_read_support_format_ar.c projects/tcp_cc_head/lib/libarchive/archive_read_support_format_cpio.c projects/tcp_cc_head/lib/libarchive/archive_read_support_format_iso9660.c projects/tcp_cc_head/lib/libarchive/archive_read_support_format_mtree.c projects/tcp_cc_head/lib/libarchive/archive_read_support_format_raw.c projects/tcp_cc_head/lib/libarchive/archive_read_support_format_tar.c projects/tcp_cc_head/lib/libarchive/archive_read_support_format_zip.c projects/tcp_cc_head/lib/libarchive/archive_string.c projects/tcp_cc_head/lib/libarchive/archive_string.h projects/tcp_cc_head/lib/libarchive/archive_util.3 projects/tcp_cc_head/lib/libarchive/archive_util.c projects/tcp_cc_head/lib/libarchive/archive_virtual.c projects/tcp_cc_head/lib/libarchive/archive_write.3 projects/tcp_cc_head/lib/libarchive/archive_write.c projects/tcp_cc_head/lib/libarchive/archive_write_disk.c projects/tcp_cc_head/lib/libarchive/archive_write_disk_private.h projects/tcp_cc_head/lib/libarchive/archive_write_disk_set_standard_lookup.c projects/tcp_cc_head/lib/libarchive/archive_write_open_fd.c projects/tcp_cc_head/lib/libarchive/archive_write_private.h projects/tcp_cc_head/lib/libarchive/archive_write_set_compression_bzip2.c projects/tcp_cc_head/lib/libarchive/archive_write_set_compression_compress.c projects/tcp_cc_head/lib/libarchive/archive_write_set_compression_gzip.c projects/tcp_cc_head/lib/libarchive/archive_write_set_compression_none.c projects/tcp_cc_head/lib/libarchive/archive_write_set_compression_program.c projects/tcp_cc_head/lib/libarchive/archive_write_set_compression_xz.c projects/tcp_cc_head/lib/libarchive/archive_write_set_format.c projects/tcp_cc_head/lib/libarchive/archive_write_set_format_ar.c projects/tcp_cc_head/lib/libarchive/archive_write_set_format_by_name.c projects/tcp_cc_head/lib/libarchive/archive_write_set_format_cpio.c projects/tcp_cc_head/lib/libarchive/archive_write_set_format_cpio_newc.c projects/tcp_cc_head/lib/libarchive/archive_write_set_format_mtree.c projects/tcp_cc_head/lib/libarchive/archive_write_set_format_pax.c projects/tcp_cc_head/lib/libarchive/config_freebsd.h projects/tcp_cc_head/lib/libarchive/filter_fork.h projects/tcp_cc_head/lib/libarchive/libarchive-formats.5 projects/tcp_cc_head/lib/libarchive/tar.5 projects/tcp_cc_head/lib/libarchive/test/Makefile projects/tcp_cc_head/lib/libarchive/test/main.c projects/tcp_cc_head/lib/libarchive/test/test.h projects/tcp_cc_head/lib/libarchive/test/test_acl_pax.c projects/tcp_cc_head/lib/libarchive/test/test_compat_bzip2.c projects/tcp_cc_head/lib/libarchive/test/test_compat_solaris_tar_acl.c projects/tcp_cc_head/lib/libarchive/test/test_entry.c projects/tcp_cc_head/lib/libarchive/test/test_entry_strmode.c projects/tcp_cc_head/lib/libarchive/test/test_extattr_freebsd.c projects/tcp_cc_head/lib/libarchive/test/test_fuzz.c projects/tcp_cc_head/lib/libarchive/test/test_open_fd.c projects/tcp_cc_head/lib/libarchive/test/test_open_file.c projects/tcp_cc_head/lib/libarchive/test/test_pax_filename_encoding.c projects/tcp_cc_head/lib/libarchive/test/test_read_compress_program.c projects/tcp_cc_head/lib/libarchive/test/test_read_data_large.c projects/tcp_cc_head/lib/libarchive/test/test_read_disk.c projects/tcp_cc_head/lib/libarchive/test/test_read_disk_entry_from_file.c projects/tcp_cc_head/lib/libarchive/test/test_read_extract.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_ar.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_cpio_bin_bz2.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_iso_gz.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_isojoliet_bz2.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_isorr_bz2.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_mtree.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_pax_bz2.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_tar.c projects/tcp_cc_head/lib/libarchive/test/test_read_format_tbz.c projects/tcp_cc_head/lib/libarchive/test/test_read_large.c projects/tcp_cc_head/lib/libarchive/test/test_tar_large.c projects/tcp_cc_head/lib/libarchive/test/test_write_compress_program.c projects/tcp_cc_head/lib/libarchive/test/test_write_disk.c projects/tcp_cc_head/lib/libarchive/test/test_write_disk_failures.c projects/tcp_cc_head/lib/libarchive/test/test_write_disk_hardlink.c projects/tcp_cc_head/lib/libarchive/test/test_write_disk_perms.c projects/tcp_cc_head/lib/libarchive/test/test_write_disk_secure.c projects/tcp_cc_head/lib/libarchive/test/test_write_disk_sparse.c projects/tcp_cc_head/lib/libarchive/test/test_write_disk_times.c projects/tcp_cc_head/lib/libarchive/test/test_write_format_cpio_empty.c projects/tcp_cc_head/lib/libarchive/test/test_write_format_cpio_newc.c projects/tcp_cc_head/lib/libarchive/test/test_write_format_cpio_odc.c projects/tcp_cc_head/lib/libarchive/test/test_write_format_tar_ustar.c projects/tcp_cc_head/lib/libauditd/Makefile projects/tcp_cc_head/lib/libautofs/Makefile projects/tcp_cc_head/lib/libbegemot/Makefile projects/tcp_cc_head/lib/libbluetooth/bluetooth.3 projects/tcp_cc_head/lib/libbluetooth/bluetooth.h projects/tcp_cc_head/lib/libbsm/Makefile projects/tcp_cc_head/lib/libbz2/Makefile projects/tcp_cc_head/lib/libc/Makefile projects/tcp_cc_head/lib/libc/compat-43/Makefile.inc projects/tcp_cc_head/lib/libc/compat-43/Symbol.map projects/tcp_cc_head/lib/libc/compat-43/sigcompat.c projects/tcp_cc_head/lib/libc/compat-43/sigpause.2 projects/tcp_cc_head/lib/libc/gen/Makefile.inc projects/tcp_cc_head/lib/libc/gen/Symbol.map projects/tcp_cc_head/lib/libc/gen/_pthread_stubs.c projects/tcp_cc_head/lib/libc/gen/exec.c projects/tcp_cc_head/lib/libc/gen/fdevname.c projects/tcp_cc_head/lib/libc/gen/fmtmsg.c projects/tcp_cc_head/lib/libc/gen/fts.3 projects/tcp_cc_head/lib/libc/gen/fts.c projects/tcp_cc_head/lib/libc/gen/getcap.c projects/tcp_cc_head/lib/libc/gen/getcwd.c projects/tcp_cc_head/lib/libc/gen/getlogin.c projects/tcp_cc_head/lib/libc/gen/getttyent.3 projects/tcp_cc_head/lib/libc/gen/getttyent.c projects/tcp_cc_head/lib/libc/gen/getusershell.c projects/tcp_cc_head/lib/libc/gen/nlist.c projects/tcp_cc_head/lib/libc/gen/opendir.c projects/tcp_cc_head/lib/libc/gen/pause.c projects/tcp_cc_head/lib/libc/gen/posix_spawn.3 projects/tcp_cc_head/lib/libc/gen/posix_spawn_file_actions_addopen.3 projects/tcp_cc_head/lib/libc/gen/posix_spawn_file_actions_init.3 projects/tcp_cc_head/lib/libc/gen/posix_spawnattr_getflags.3 projects/tcp_cc_head/lib/libc/gen/posix_spawnattr_getpgroup.3 projects/tcp_cc_head/lib/libc/gen/posix_spawnattr_getschedparam.3 projects/tcp_cc_head/lib/libc/gen/posix_spawnattr_getschedpolicy.3 projects/tcp_cc_head/lib/libc/gen/posix_spawnattr_getsigdefault.3 projects/tcp_cc_head/lib/libc/gen/posix_spawnattr_getsigmask.3 projects/tcp_cc_head/lib/libc/gen/posix_spawnattr_init.3 projects/tcp_cc_head/lib/libc/gen/pwcache.c projects/tcp_cc_head/lib/libc/gen/raise.c projects/tcp_cc_head/lib/libc/gen/scandir.3 projects/tcp_cc_head/lib/libc/gen/scandir.c projects/tcp_cc_head/lib/libc/gen/sem.c projects/tcp_cc_head/lib/libc/gen/sem_init.3 projects/tcp_cc_head/lib/libc/gen/sem_open.3 projects/tcp_cc_head/lib/libc/gen/sleep.c projects/tcp_cc_head/lib/libc/gen/termios.c projects/tcp_cc_head/lib/libc/gen/time.3 projects/tcp_cc_head/lib/libc/gen/time.c projects/tcp_cc_head/lib/libc/gen/timezone.c projects/tcp_cc_head/lib/libc/gen/ttyname.3 projects/tcp_cc_head/lib/libc/gen/ttyslot.c projects/tcp_cc_head/lib/libc/gen/tzset.3 projects/tcp_cc_head/lib/libc/gen/usleep.c projects/tcp_cc_head/lib/libc/gen/wordexp.c projects/tcp_cc_head/lib/libc/gmon/gmon.c projects/tcp_cc_head/lib/libc/include/libc_private.h projects/tcp_cc_head/lib/libc/include/namespace.h projects/tcp_cc_head/lib/libc/include/un-namespace.h projects/tcp_cc_head/lib/libc/locale/isblank.3 projects/tcp_cc_head/lib/libc/locale/isgraph.3 projects/tcp_cc_head/lib/libc/locale/isprint.3 projects/tcp_cc_head/lib/libc/locale/nl_langinfo.3 projects/tcp_cc_head/lib/libc/mips/Symbol.map projects/tcp_cc_head/lib/libc/mips/sys/brk.S projects/tcp_cc_head/lib/libc/net/gai_strerror.c projects/tcp_cc_head/lib/libc/net/getnameinfo.c projects/tcp_cc_head/lib/libc/net/ip6opt.c projects/tcp_cc_head/lib/libc/net/sctp_bindx.3 projects/tcp_cc_head/lib/libc/net/sctp_connectx.3 projects/tcp_cc_head/lib/libc/net/sctp_getaddrlen.3 projects/tcp_cc_head/lib/libc/net/sctp_getassocid.3 projects/tcp_cc_head/lib/libc/net/sctp_getpaddrs.3 projects/tcp_cc_head/lib/libc/net/sctp_opt_info.3 projects/tcp_cc_head/lib/libc/net/sctp_recvmsg.3 projects/tcp_cc_head/lib/libc/net/sctp_send.3 projects/tcp_cc_head/lib/libc/net/sctp_sendmsg.3 projects/tcp_cc_head/lib/libc/nls/C.msg projects/tcp_cc_head/lib/libc/nls/Makefile.inc projects/tcp_cc_head/lib/libc/nls/es_ES.ISO8859-1.msg projects/tcp_cc_head/lib/libc/nls/gl_ES.ISO8859-1.msg projects/tcp_cc_head/lib/libc/nls/hu_HU.ISO8859-2.msg projects/tcp_cc_head/lib/libc/nls/ko_KR.UTF-8.msg (contents, props changed) projects/tcp_cc_head/lib/libc/nls/ko_KR.eucKR.msg (contents, props changed) projects/tcp_cc_head/lib/libc/nls/nl_NL.ISO8859-1.msg projects/tcp_cc_head/lib/libc/nls/uk_UA.UTF-8.msg (contents, props changed) projects/tcp_cc_head/lib/libc/posix1e/Makefile.inc projects/tcp_cc_head/lib/libc/posix1e/acl_delete_entry.c projects/tcp_cc_head/lib/libc/posix1e/acl_from_text.c projects/tcp_cc_head/lib/libc/posix1e/acl_to_text.c projects/tcp_cc_head/lib/libc/rpc/clnt_raw.c projects/tcp_cc_head/lib/libc/rpc/getnetconfig.c projects/tcp_cc_head/lib/libc/rpc/getnetpath.c projects/tcp_cc_head/lib/libc/rpc/getrpcent.c projects/tcp_cc_head/lib/libc/rpc/key_call.c projects/tcp_cc_head/lib/libc/rpc/svc.c projects/tcp_cc_head/lib/libc/rpc/svc_auth_des.c projects/tcp_cc_head/lib/libc/rpc/svc_raw.c projects/tcp_cc_head/lib/libc/stdio/fgetws.c projects/tcp_cc_head/lib/libc/stdio/findfp.c projects/tcp_cc_head/lib/libc/stdio/fread.c projects/tcp_cc_head/lib/libc/stdio/funopen.c projects/tcp_cc_head/lib/libc/stdio/fvwrite.c projects/tcp_cc_head/lib/libc/stdio/fwrite.c projects/tcp_cc_head/lib/libc/stdio/getc.3 projects/tcp_cc_head/lib/libc/stdio/getline.3 projects/tcp_cc_head/lib/libc/stdio/printf.3 projects/tcp_cc_head/lib/libc/stdio/sprintf.c projects/tcp_cc_head/lib/libc/stdio/sscanf.c projects/tcp_cc_head/lib/libc/stdio/vfwprintf.c projects/tcp_cc_head/lib/libc/stdio/vsscanf.c projects/tcp_cc_head/lib/libc/stdio/xprintf_time.c projects/tcp_cc_head/lib/libc/stdlib/getenv.3 projects/tcp_cc_head/lib/libc/stdlib/getenv.c projects/tcp_cc_head/lib/libc/stdlib/malloc.c projects/tcp_cc_head/lib/libc/stdlib/system.c projects/tcp_cc_head/lib/libc/stdtime/localtime.c projects/tcp_cc_head/lib/libc/stdtime/tzfile.5 projects/tcp_cc_head/lib/libc/string/strcat.3 projects/tcp_cc_head/lib/libc/string/strcmp.3 projects/tcp_cc_head/lib/libc/string/strsignal.c projects/tcp_cc_head/lib/libc/sys/Makefile.inc projects/tcp_cc_head/lib/libc/sys/Symbol.map projects/tcp_cc_head/lib/libc/sys/__error.c projects/tcp_cc_head/lib/libc/sys/accept.2 projects/tcp_cc_head/lib/libc/sys/clock_gettime.2 projects/tcp_cc_head/lib/libc/sys/cpuset.2 projects/tcp_cc_head/lib/libc/sys/cpuset_getaffinity.2 projects/tcp_cc_head/lib/libc/sys/intro.2 projects/tcp_cc_head/lib/libc/sys/kqueue.2 projects/tcp_cc_head/lib/libc/sys/mmap.2 projects/tcp_cc_head/lib/libc/sys/nanosleep.2 projects/tcp_cc_head/lib/libc/sys/sctp_generic_recvmsg.2 projects/tcp_cc_head/lib/libc/sys/sctp_generic_sendmsg.2 projects/tcp_cc_head/lib/libc/sys/sctp_peeloff.2 projects/tcp_cc_head/lib/libc/sys/sendfile.2 projects/tcp_cc_head/lib/libc/sys/setpgid.2 projects/tcp_cc_head/lib/libc/sys/vfork.2 projects/tcp_cc_head/lib/libc/sys/wait.2 projects/tcp_cc_head/lib/libc/yp/yplib.c projects/tcp_cc_head/lib/libcalendar/Makefile projects/tcp_cc_head/lib/libcam/Makefile projects/tcp_cc_head/lib/libcompat/Makefile projects/tcp_cc_head/lib/libcrypt/Makefile projects/tcp_cc_head/lib/libdevinfo/Makefile projects/tcp_cc_head/lib/libdevinfo/devinfo.h projects/tcp_cc_head/lib/libdevstat/Makefile projects/tcp_cc_head/lib/libdwarf/Makefile projects/tcp_cc_head/lib/libedit/Makefile projects/tcp_cc_head/lib/libelf/Makefile projects/tcp_cc_head/lib/libelf/elf.3 projects/tcp_cc_head/lib/libexpat/Makefile projects/tcp_cc_head/lib/libexpat/libbsdxml.3 projects/tcp_cc_head/lib/libfetch/Makefile projects/tcp_cc_head/lib/libfetch/common.c projects/tcp_cc_head/lib/libfetch/ftp.c projects/tcp_cc_head/lib/libfetch/http.c projects/tcp_cc_head/lib/libftpio/Makefile projects/tcp_cc_head/lib/libgeom/geom_getxml.c projects/tcp_cc_head/lib/libgeom/geom_util.c projects/tcp_cc_head/lib/libgeom/geom_xml2tree.c projects/tcp_cc_head/lib/libgeom/libgeom.3 projects/tcp_cc_head/lib/libgeom/libgeom.h projects/tcp_cc_head/lib/libgpib/Makefile projects/tcp_cc_head/lib/libgssapi/Makefile projects/tcp_cc_head/lib/libgssapi/gss_mech_switch.c projects/tcp_cc_head/lib/libipsec/Makefile projects/tcp_cc_head/lib/libipx/Makefile projects/tcp_cc_head/lib/libjail/Makefile projects/tcp_cc_head/lib/libjail/jail.c projects/tcp_cc_head/lib/libkiconv/Makefile projects/tcp_cc_head/lib/libkvm/Makefile projects/tcp_cc_head/lib/libkvm/kvm_i386.c projects/tcp_cc_head/lib/libkvm/kvm_proc.c projects/tcp_cc_head/lib/libmagic/Makefile projects/tcp_cc_head/lib/libmd/Makefile projects/tcp_cc_head/lib/libmilter/Makefile projects/tcp_cc_head/lib/libmp/Makefile projects/tcp_cc_head/lib/libncp/Makefile projects/tcp_cc_head/lib/libngatm/Makefile projects/tcp_cc_head/lib/libopie/Makefile projects/tcp_cc_head/lib/libopie/config.h projects/tcp_cc_head/lib/libpam/modules/Makefile.inc projects/tcp_cc_head/lib/libpam/modules/pam_exec/Makefile projects/tcp_cc_head/lib/libpam/modules/pam_krb5/Makefile projects/tcp_cc_head/lib/libpam/modules/pam_lastlog/Makefile projects/tcp_cc_head/lib/libpam/modules/pam_lastlog/pam_lastlog.8 projects/tcp_cc_head/lib/libpam/modules/pam_lastlog/pam_lastlog.c projects/tcp_cc_head/lib/libpam/modules/pam_radius/Makefile projects/tcp_cc_head/lib/libpam/modules/pam_ssh/Makefile projects/tcp_cc_head/lib/libpam/modules/pam_unix/pam_unix.8 projects/tcp_cc_head/lib/libpcap/Makefile projects/tcp_cc_head/lib/libpmc/Makefile projects/tcp_cc_head/lib/libpmc/libpmc.c projects/tcp_cc_head/lib/libpmc/pmc_attach.3 projects/tcp_cc_head/lib/libproc/Makefile projects/tcp_cc_head/lib/libradius/Makefile projects/tcp_cc_head/lib/librpcsec_gss/Makefile projects/tcp_cc_head/lib/librpcsec_gss/rpcsec_gss_conf.c projects/tcp_cc_head/lib/librpcsec_gss/svc_rpcsec_gss.c projects/tcp_cc_head/lib/librt/Makefile projects/tcp_cc_head/lib/librt/mq.c projects/tcp_cc_head/lib/librt/sigev_thread.c projects/tcp_cc_head/lib/libsbuf/Makefile projects/tcp_cc_head/lib/libsm/Makefile projects/tcp_cc_head/lib/libsmdb/Makefile projects/tcp_cc_head/lib/libsmutil/Makefile projects/tcp_cc_head/lib/libstand/Makefile projects/tcp_cc_head/lib/libstand/bzipfs.c projects/tcp_cc_head/lib/libstand/dosfs.c projects/tcp_cc_head/lib/libstand/gzipfs.c projects/tcp_cc_head/lib/libstand/open.c projects/tcp_cc_head/lib/libstand/udp.c projects/tcp_cc_head/lib/libtacplus/Makefile projects/tcp_cc_head/lib/libtacplus/libtacplus.3 projects/tcp_cc_head/lib/libtacplus/taclib.c projects/tcp_cc_head/lib/libtacplus/taclib.h projects/tcp_cc_head/lib/libtacplus/taclib_private.h projects/tcp_cc_head/lib/libthr/arch/ia64/Makefile.inc projects/tcp_cc_head/lib/libthr/arch/ia64/include/pthread_md.h projects/tcp_cc_head/lib/libthr/arch/mips/include/pthread_md.h projects/tcp_cc_head/lib/libthr/pthread.map projects/tcp_cc_head/lib/libthr/thread/thr_init.c projects/tcp_cc_head/lib/libthr/thread/thr_private.h projects/tcp_cc_head/lib/libthr/thread/thr_sem.c projects/tcp_cc_head/lib/libthr/thread/thr_syscalls.c projects/tcp_cc_head/lib/libthr/thread/thr_umtx.c projects/tcp_cc_head/lib/libthread_db/Makefile projects/tcp_cc_head/lib/libufs/Makefile projects/tcp_cc_head/lib/libugidfw/Makefile projects/tcp_cc_head/lib/libugidfw/ugidfw.c projects/tcp_cc_head/lib/libusb/Makefile projects/tcp_cc_head/lib/libusb/libusb.h projects/tcp_cc_head/lib/libusb/libusb10.c projects/tcp_cc_head/lib/libusb/libusb10.h projects/tcp_cc_head/lib/libusb/libusb10_desc.c projects/tcp_cc_head/lib/libusb/libusb10_io.c projects/tcp_cc_head/lib/libusb/libusb20.3 projects/tcp_cc_head/lib/libusb/libusb20.c projects/tcp_cc_head/lib/libusb/libusb20.h projects/tcp_cc_head/lib/libusb/libusb20_desc.c projects/tcp_cc_head/lib/libusb/libusb20_ugen20.c projects/tcp_cc_head/lib/libutil/Makefile projects/tcp_cc_head/lib/libutil/gr_util.c projects/tcp_cc_head/lib/libutil/libutil.h projects/tcp_cc_head/lib/libutil/login_tty.c projects/tcp_cc_head/lib/libutil/pw_util.c projects/tcp_cc_head/lib/libvgl/Makefile projects/tcp_cc_head/lib/libwrap/Makefile projects/tcp_cc_head/lib/liby/Makefile projects/tcp_cc_head/lib/libypclnt/Makefile projects/tcp_cc_head/lib/libz/Makefile projects/tcp_cc_head/lib/ncurses/Makefile.inc projects/tcp_cc_head/libexec/Makefile projects/tcp_cc_head/libexec/Makefile.inc projects/tcp_cc_head/libexec/atrun/Makefile projects/tcp_cc_head/libexec/atrun/atrun.c projects/tcp_cc_head/libexec/bootpd/Makefile projects/tcp_cc_head/libexec/bootpd/Makefile.inc projects/tcp_cc_head/libexec/bootpd/tools/Makefile.inc projects/tcp_cc_head/libexec/comsat/comsat.8 projects/tcp_cc_head/libexec/comsat/comsat.c projects/tcp_cc_head/libexec/fingerd/Makefile projects/tcp_cc_head/libexec/ftpd/ftpd.8 projects/tcp_cc_head/libexec/ftpd/ftpd.c projects/tcp_cc_head/libexec/ftpd/logwtmp.c projects/tcp_cc_head/libexec/getty/Makefile projects/tcp_cc_head/libexec/getty/ttys.5 projects/tcp_cc_head/libexec/mail.local/Makefile projects/tcp_cc_head/libexec/mknetid/Makefile projects/tcp_cc_head/libexec/pppoed/Makefile projects/tcp_cc_head/libexec/rbootd/Makefile projects/tcp_cc_head/libexec/revnetgroup/Makefile projects/tcp_cc_head/libexec/rlogind/rlogind.c projects/tcp_cc_head/libexec/rpc.rquotad/Makefile projects/tcp_cc_head/libexec/rpc.rstatd/Makefile projects/tcp_cc_head/libexec/rpc.rusersd/Makefile projects/tcp_cc_head/libexec/rpc.rusersd/rusers_proc.c projects/tcp_cc_head/libexec/rpc.rusersd/rusersd.c projects/tcp_cc_head/libexec/rpc.rwalld/Makefile projects/tcp_cc_head/libexec/rpc.sprayd/Makefile projects/tcp_cc_head/libexec/rshd/Makefile projects/tcp_cc_head/libexec/rtld-aout/shlib.c projects/tcp_cc_head/libexec/rtld-aout/support.c projects/tcp_cc_head/libexec/rtld-elf/Makefile projects/tcp_cc_head/libexec/rtld-elf/rtld.c projects/tcp_cc_head/libexec/rtld-elf/rtld.h projects/tcp_cc_head/libexec/smrsh/Makefile projects/tcp_cc_head/libexec/talkd/Makefile projects/tcp_cc_head/libexec/talkd/process.c projects/tcp_cc_head/libexec/tcpd/Makefile projects/tcp_cc_head/libexec/tftp-proxy/Makefile projects/tcp_cc_head/libexec/tftpd/Makefile projects/tcp_cc_head/libexec/ypxfr/Makefile projects/tcp_cc_head/release/Makefile projects/tcp_cc_head/release/doc/README projects/tcp_cc_head/release/doc/en_US.ISO8859-1/errata/article.sgml projects/tcp_cc_head/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/tcp_cc_head/release/doc/share/misc/dev.archlist.txt projects/tcp_cc_head/release/doc/share/mk/doc.relnotes.mk projects/tcp_cc_head/release/doc/share/sgml/release.dsl projects/tcp_cc_head/release/doc/share/sgml/release.ent projects/tcp_cc_head/release/picobsd/bridge/PICOBSD projects/tcp_cc_head/release/picobsd/bridge/crunch.conf projects/tcp_cc_head/release/picobsd/build/mfs.mtree projects/tcp_cc_head/release/picobsd/build/picobsd projects/tcp_cc_head/release/picobsd/floppy.tree/etc/master.passwd projects/tcp_cc_head/release/picobsd/floppy.tree/etc/ttys projects/tcp_cc_head/release/picobsd/tinyware/oinit/oinit.c projects/tcp_cc_head/release/scripts/package-split.py projects/tcp_cc_head/sbin/Makefile.inc projects/tcp_cc_head/sbin/atacontrol/Makefile projects/tcp_cc_head/sbin/atacontrol/atacontrol.c projects/tcp_cc_head/sbin/atm/atmconfig/Makefile projects/tcp_cc_head/sbin/badsect/Makefile projects/tcp_cc_head/sbin/bsdlabel/Makefile projects/tcp_cc_head/sbin/camcontrol/Makefile projects/tcp_cc_head/sbin/camcontrol/camcontrol.8 projects/tcp_cc_head/sbin/camcontrol/camcontrol.c projects/tcp_cc_head/sbin/ccdconfig/Makefile projects/tcp_cc_head/sbin/clri/Makefile projects/tcp_cc_head/sbin/comcontrol/Makefile projects/tcp_cc_head/sbin/comcontrol/comcontrol.c projects/tcp_cc_head/sbin/conscontrol/Makefile projects/tcp_cc_head/sbin/ddb/ddb_capture.c projects/tcp_cc_head/sbin/dhclient/Makefile projects/tcp_cc_head/sbin/dhclient/bpf.c projects/tcp_cc_head/sbin/dhclient/dhcpd.h projects/tcp_cc_head/sbin/dhclient/packet.c projects/tcp_cc_head/sbin/dmesg/Makefile projects/tcp_cc_head/sbin/dump/Makefile projects/tcp_cc_head/sbin/dumpfs/Makefile projects/tcp_cc_head/sbin/dumpfs/dumpfs.c projects/tcp_cc_head/sbin/dumpon/Makefile projects/tcp_cc_head/sbin/fsck/fsck.c projects/tcp_cc_head/sbin/fsck_ffs/fsutil.c projects/tcp_cc_head/sbin/fsck_ffs/gjournal.c projects/tcp_cc_head/sbin/fsck_ffs/main.c projects/tcp_cc_head/sbin/fsck_ffs/pass1.c projects/tcp_cc_head/sbin/fsck_ffs/pass2.c projects/tcp_cc_head/sbin/geom/Makefile projects/tcp_cc_head/sbin/geom/Makefile.inc projects/tcp_cc_head/sbin/geom/class/Makefile projects/tcp_cc_head/sbin/geom/class/cache/Makefile projects/tcp_cc_head/sbin/geom/class/mirror/geom_mirror.c projects/tcp_cc_head/sbin/geom/class/mirror/gmirror.8 projects/tcp_cc_head/sbin/geom/class/part/Makefile projects/tcp_cc_head/sbin/geom/class/part/geom_part.c projects/tcp_cc_head/sbin/geom/class/part/gpart.8 projects/tcp_cc_head/sbin/geom/class/raid3/geom_raid3.c projects/tcp_cc_head/sbin/geom/class/raid3/graid3.8 projects/tcp_cc_head/sbin/geom/class/stripe/geom_stripe.c projects/tcp_cc_head/sbin/geom/core/geom.8 projects/tcp_cc_head/sbin/geom/core/geom.c projects/tcp_cc_head/sbin/ggate/Makefile.inc projects/tcp_cc_head/sbin/ggate/ggated/ggated.c projects/tcp_cc_head/sbin/growfs/Makefile projects/tcp_cc_head/sbin/growfs/growfs.c projects/tcp_cc_head/sbin/gvinum/Makefile projects/tcp_cc_head/sbin/ifconfig/Makefile projects/tcp_cc_head/sbin/ifconfig/af_inet.c projects/tcp_cc_head/sbin/ifconfig/af_nd6.c projects/tcp_cc_head/sbin/ifconfig/ifconfig.c projects/tcp_cc_head/sbin/ifconfig/ifieee80211.c projects/tcp_cc_head/sbin/ifconfig/regdomain.c projects/tcp_cc_head/sbin/init/Makefile projects/tcp_cc_head/sbin/init/init.8 projects/tcp_cc_head/sbin/init/init.c projects/tcp_cc_head/sbin/ipf/Makefile.inc projects/tcp_cc_head/sbin/ipfw/dummynet.c projects/tcp_cc_head/sbin/ipfw/ipfw.8 projects/tcp_cc_head/sbin/ipfw/ipfw2.c projects/tcp_cc_head/sbin/ipfw/ipfw2.h projects/tcp_cc_head/sbin/iscontrol/Makefile projects/tcp_cc_head/sbin/kldconfig/Makefile projects/tcp_cc_head/sbin/kldload/Makefile projects/tcp_cc_head/sbin/kldstat/Makefile projects/tcp_cc_head/sbin/kldunload/Makefile projects/tcp_cc_head/sbin/ldconfig/Makefile projects/tcp_cc_head/sbin/ldconfig/ldconfig.c projects/tcp_cc_head/sbin/md5/Makefile projects/tcp_cc_head/sbin/mdconfig/mdconfig.c projects/tcp_cc_head/sbin/mdmfs/Makefile projects/tcp_cc_head/sbin/mknod/mknod.8 projects/tcp_cc_head/sbin/mksnap_ffs/Makefile projects/tcp_cc_head/sbin/mount/Makefile projects/tcp_cc_head/sbin/mount/mntopts.h projects/tcp_cc_head/sbin/mount/mount.8 projects/tcp_cc_head/sbin/mount/mount.c projects/tcp_cc_head/sbin/mount/vfslist.c projects/tcp_cc_head/sbin/mount_autofs/Makefile projects/tcp_cc_head/sbin/mount_cd9660/Makefile projects/tcp_cc_head/sbin/mount_cd9660/mount_cd9660.c projects/tcp_cc_head/sbin/mount_ext2fs/Makefile projects/tcp_cc_head/sbin/mount_msdosfs/Makefile projects/tcp_cc_head/sbin/mount_msdosfs/mount_msdosfs.8 projects/tcp_cc_head/sbin/mount_msdosfs/mount_msdosfs.c projects/tcp_cc_head/sbin/mount_nfs/mount_nfs.8 projects/tcp_cc_head/sbin/mount_nfs/mount_nfs.c projects/tcp_cc_head/sbin/mount_nullfs/Makefile projects/tcp_cc_head/sbin/mount_nullfs/mount_nullfs.c projects/tcp_cc_head/sbin/mount_reiserfs/Makefile projects/tcp_cc_head/sbin/mount_unionfs/Makefile projects/tcp_cc_head/sbin/natd/Makefile projects/tcp_cc_head/sbin/natd/natd.c projects/tcp_cc_head/sbin/newfs/Makefile projects/tcp_cc_head/sbin/newfs/mkfs.c projects/tcp_cc_head/sbin/newfs_msdos/Makefile projects/tcp_cc_head/sbin/nfsiod/Makefile projects/tcp_cc_head/sbin/nfsiod/nfsiod.8 projects/tcp_cc_head/sbin/nfsiod/nfsiod.c projects/tcp_cc_head/sbin/pfctl/Makefile projects/tcp_cc_head/sbin/rcorder/Makefile projects/tcp_cc_head/sbin/rcorder/ealloc.c projects/tcp_cc_head/sbin/rcorder/hash.c projects/tcp_cc_head/sbin/rcorder/rcorder.c projects/tcp_cc_head/sbin/reboot/Makefile projects/tcp_cc_head/sbin/reboot/reboot.8 projects/tcp_cc_head/sbin/reboot/reboot.c projects/tcp_cc_head/sbin/recoverdisk/Makefile projects/tcp_cc_head/sbin/routed/Makefile projects/tcp_cc_head/sbin/routed/if.c projects/tcp_cc_head/sbin/savecore/Makefile projects/tcp_cc_head/sbin/sconfig/Makefile projects/tcp_cc_head/sbin/setkey/setkey.8 projects/tcp_cc_head/sbin/shutdown/Makefile projects/tcp_cc_head/sbin/shutdown/shutdown.c projects/tcp_cc_head/sbin/spppcontrol/Makefile projects/tcp_cc_head/sbin/swapon/Makefile projects/tcp_cc_head/sbin/sysctl/sysctl.c projects/tcp_cc_head/sbin/tunefs/tunefs.8 projects/tcp_cc_head/sbin/tunefs/tunefs.c projects/tcp_cc_head/sbin/umount/Makefile projects/tcp_cc_head/sbin/umount/umount.c projects/tcp_cc_head/secure/Makefile projects/tcp_cc_head/secure/Makefile.inc projects/tcp_cc_head/secure/lib/libssh/Makefile projects/tcp_cc_head/secure/usr.bin/bdes/bdes.c projects/tcp_cc_head/share/doc/usd/Makefile projects/tcp_cc_head/share/examples/Makefile projects/tcp_cc_head/share/examples/etc/make.conf projects/tcp_cc_head/share/examples/kld/cdev/test/Makefile projects/tcp_cc_head/share/examples/kld/cdev/test/testcdev.c projects/tcp_cc_head/share/examples/kld/firmware/fwconsumer/fw_consumer.c projects/tcp_cc_head/share/examples/kld/syscall/test/Makefile projects/tcp_cc_head/share/examples/kld/syscall/test/call.c projects/tcp_cc_head/share/examples/ses/srcs/chpmon.c projects/tcp_cc_head/share/examples/ses/srcs/eltsub.c projects/tcp_cc_head/share/examples/ses/srcs/getencstat.c projects/tcp_cc_head/share/examples/ses/srcs/getnobj.c projects/tcp_cc_head/share/examples/ses/srcs/getobjmap.c projects/tcp_cc_head/share/examples/ses/srcs/getobjstat.c projects/tcp_cc_head/share/examples/ses/srcs/inienc.c projects/tcp_cc_head/share/examples/ses/srcs/sesd.c projects/tcp_cc_head/share/examples/ses/srcs/setencstat.c projects/tcp_cc_head/share/examples/ses/srcs/setobjstat.c projects/tcp_cc_head/share/man/man3/Makefile projects/tcp_cc_head/share/man/man3/pthread.3 projects/tcp_cc_head/share/man/man3/pthread_attr.3 projects/tcp_cc_head/share/man/man3/pthread_join.3 projects/tcp_cc_head/share/man/man3/queue.3 projects/tcp_cc_head/share/man/man3/sysexits.3 projects/tcp_cc_head/share/man/man3/tree.3 projects/tcp_cc_head/share/man/man4/Makefile projects/tcp_cc_head/share/man/man4/acpi.4 projects/tcp_cc_head/share/man/man4/acpi_asus.4 projects/tcp_cc_head/share/man/man4/acpi_hp.4 projects/tcp_cc_head/share/man/man4/acpi_wmi.4 projects/tcp_cc_head/share/man/man4/ata.4 projects/tcp_cc_head/share/man/man4/atapicam.4 projects/tcp_cc_head/share/man/man4/ath.4 projects/tcp_cc_head/share/man/man4/aue.4 projects/tcp_cc_head/share/man/man4/axe.4 projects/tcp_cc_head/share/man/man4/bge.4 projects/tcp_cc_head/share/man/man4/bridge.4 projects/tcp_cc_head/share/man/man4/carp.4 projects/tcp_cc_head/share/man/man4/cdce.4 projects/tcp_cc_head/share/man/man4/cpufreq.4 projects/tcp_cc_head/share/man/man4/dc.4 projects/tcp_cc_head/share/man/man4/epair.4 projects/tcp_cc_head/share/man/man4/faith.4 projects/tcp_cc_head/share/man/man4/gem.4 projects/tcp_cc_head/share/man/man4/gif.4 projects/tcp_cc_head/share/man/man4/hifn.4 projects/tcp_cc_head/share/man/man4/hme.4 projects/tcp_cc_head/share/man/man4/hptrr.4 projects/tcp_cc_head/share/man/man4/ichwd.4 projects/tcp_cc_head/share/man/man4/ifmib.4 projects/tcp_cc_head/share/man/man4/ipsec.4 projects/tcp_cc_head/share/man/man4/iwn.4 projects/tcp_cc_head/share/man/man4/iwnfw.4 projects/tcp_cc_head/share/man/man4/lge.4 projects/tcp_cc_head/share/man/man4/mac.4 projects/tcp_cc_head/share/man/man4/mac_mls.4 projects/tcp_cc_head/share/man/man4/malo.4 projects/tcp_cc_head/share/man/man4/man4.i386/vpd.4 projects/tcp_cc_head/share/man/man4/man4.powerpc/Makefile projects/tcp_cc_head/share/man/man4/man4.powerpc/pmu.4 projects/tcp_cc_head/share/man/man4/man4.sparc64/ebus.4 projects/tcp_cc_head/share/man/man4/mfi.4 projects/tcp_cc_head/share/man/man4/mpt.4 projects/tcp_cc_head/share/man/man4/msk.4 projects/tcp_cc_head/share/man/man4/mwlfw.4 projects/tcp_cc_head/share/man/man4/ndis.4 projects/tcp_cc_head/share/man/man4/nge.4 projects/tcp_cc_head/share/man/man4/pcm.4 projects/tcp_cc_head/share/man/man4/pcn.4 projects/tcp_cc_head/share/man/man4/psm.4 projects/tcp_cc_head/share/man/man4/pts.4 projects/tcp_cc_head/share/man/man4/ral.4 projects/tcp_cc_head/share/man/man4/re.4 projects/tcp_cc_head/share/man/man4/rl.4 projects/tcp_cc_head/share/man/man4/rue.4 projects/tcp_cc_head/share/man/man4/rum.4 projects/tcp_cc_head/share/man/man4/sbp_targ.4 projects/tcp_cc_head/share/man/man4/sctp.4 projects/tcp_cc_head/share/man/man4/sf.4 projects/tcp_cc_head/share/man/man4/sis.4 projects/tcp_cc_head/share/man/man4/sk.4 projects/tcp_cc_head/share/man/man4/smbus.4 projects/tcp_cc_head/share/man/man4/snd_hda.4 projects/tcp_cc_head/share/man/man4/snd_uaudio.4 projects/tcp_cc_head/share/man/man4/ste.4 projects/tcp_cc_head/share/man/man4/sysmouse.4 projects/tcp_cc_head/share/man/man4/targ.4 projects/tcp_cc_head/share/man/man4/termios.4 projects/tcp_cc_head/share/man/man4/tty.4 projects/tcp_cc_head/share/man/man4/u3g.4 projects/tcp_cc_head/share/man/man4/uart.4 projects/tcp_cc_head/share/man/man4/ucom.4 projects/tcp_cc_head/share/man/man4/udav.4 projects/tcp_cc_head/share/man/man4/umass.4 projects/tcp_cc_head/share/man/man4/ural.4 projects/tcp_cc_head/share/man/man4/urio.4 projects/tcp_cc_head/share/man/man4/urtw.4 projects/tcp_cc_head/share/man/man4/vge.4 projects/tcp_cc_head/share/man/man4/vr.4 projects/tcp_cc_head/share/man/man4/watchdog.4 projects/tcp_cc_head/share/man/man4/wi.4 projects/tcp_cc_head/share/man/man4/wlan.4 projects/tcp_cc_head/share/man/man5/Makefile projects/tcp_cc_head/share/man/man5/ar.5 projects/tcp_cc_head/share/man/man5/devfs.rules.5 projects/tcp_cc_head/share/man/man5/make.conf.5 projects/tcp_cc_head/share/man/man5/msdosfs.5 projects/tcp_cc_head/share/man/man5/rc.conf.5 projects/tcp_cc_head/share/man/man5/regdomain.5 projects/tcp_cc_head/share/man/man5/src.conf.5 projects/tcp_cc_head/share/man/man7/adding_user.7 projects/tcp_cc_head/share/man/man7/build.7 projects/tcp_cc_head/share/man/man7/hier.7 projects/tcp_cc_head/share/man/man7/release.7 projects/tcp_cc_head/share/man/man7/security.7 projects/tcp_cc_head/share/man/man8/Makefile projects/tcp_cc_head/share/man/man8/rc.8 projects/tcp_cc_head/share/man/man9/LOCK_PROFILING.9 projects/tcp_cc_head/share/man/man9/Makefile projects/tcp_cc_head/share/man/man9/VFS.9 projects/tcp_cc_head/share/man/man9/VFS_CHECKEXP.9 projects/tcp_cc_head/share/man/man9/VFS_FHTOVP.9 projects/tcp_cc_head/share/man/man9/VOP_OPENCLOSE.9 projects/tcp_cc_head/share/man/man9/get_cyclecount.9 projects/tcp_cc_head/share/man/man9/ifnet.9 projects/tcp_cc_head/share/man/man9/kthread.9 projects/tcp_cc_head/share/man/man9/mac.9 projects/tcp_cc_head/share/man/man9/namei.9 projects/tcp_cc_head/share/man/man9/pci.9 projects/tcp_cc_head/share/man/man9/sleep.9 projects/tcp_cc_head/share/man/man9/sleepqueue.9 projects/tcp_cc_head/share/man/man9/sysctl.9 projects/tcp_cc_head/share/man/man9/usbdi.9 projects/tcp_cc_head/share/man/man9/vm_page_bits.9 projects/tcp_cc_head/share/misc/bsd-family-tree projects/tcp_cc_head/share/misc/committers-doc.dot projects/tcp_cc_head/share/misc/committers-ports.dot projects/tcp_cc_head/share/misc/committers-src.dot projects/tcp_cc_head/share/misc/iso3166 projects/tcp_cc_head/share/misc/organization.dot projects/tcp_cc_head/share/mk/bsd.dep.mk projects/tcp_cc_head/share/mk/bsd.lib.mk projects/tcp_cc_head/share/mk/bsd.libnames.mk projects/tcp_cc_head/share/mk/bsd.own.mk projects/tcp_cc_head/share/mk/bsd.subdir.mk projects/tcp_cc_head/share/mk/bsd.sys.mk projects/tcp_cc_head/share/mk/sys.mk projects/tcp_cc_head/share/security/lomac-policy.contexts projects/tcp_cc_head/share/skel/dot.profile projects/tcp_cc_head/share/termcap/termcap.5 projects/tcp_cc_head/share/termcap/termcap.src projects/tcp_cc_head/share/timedef/ja_JP.SJIS.src projects/tcp_cc_head/share/timedef/ja_JP.UTF-8.src projects/tcp_cc_head/share/timedef/ja_JP.eucJP.src projects/tcp_cc_head/share/zoneinfo/Makefile projects/tcp_cc_head/share/zoneinfo/antarctica projects/tcp_cc_head/share/zoneinfo/asia projects/tcp_cc_head/share/zoneinfo/australasia projects/tcp_cc_head/share/zoneinfo/etcetera projects/tcp_cc_head/share/zoneinfo/europe projects/tcp_cc_head/share/zoneinfo/southamerica projects/tcp_cc_head/share/zoneinfo/zone.tab projects/tcp_cc_head/sys/amd64/acpica/acpi_switch.S projects/tcp_cc_head/sys/amd64/acpica/acpi_wakecode.S projects/tcp_cc_head/sys/amd64/acpica/acpi_wakeup.c projects/tcp_cc_head/sys/amd64/amd64/bpf_jit_machdep.c projects/tcp_cc_head/sys/amd64/amd64/bpf_jit_machdep.h projects/tcp_cc_head/sys/amd64/amd64/identcpu.c projects/tcp_cc_head/sys/amd64/amd64/initcpu.c projects/tcp_cc_head/sys/amd64/amd64/intr_machdep.c projects/tcp_cc_head/sys/amd64/amd64/io.c projects/tcp_cc_head/sys/amd64/amd64/local_apic.c projects/tcp_cc_head/sys/amd64/amd64/machdep.c projects/tcp_cc_head/sys/amd64/amd64/mca.c projects/tcp_cc_head/sys/amd64/amd64/mem.c projects/tcp_cc_head/sys/amd64/amd64/mp_machdep.c projects/tcp_cc_head/sys/amd64/amd64/nexus.c projects/tcp_cc_head/sys/amd64/amd64/pmap.c projects/tcp_cc_head/sys/amd64/amd64/sys_machdep.c projects/tcp_cc_head/sys/amd64/amd64/trap.c projects/tcp_cc_head/sys/amd64/amd64/vm_machdep.c projects/tcp_cc_head/sys/amd64/conf/DEFAULTS projects/tcp_cc_head/sys/amd64/conf/GENERIC projects/tcp_cc_head/sys/amd64/conf/Makefile projects/tcp_cc_head/sys/amd64/conf/NOTES projects/tcp_cc_head/sys/amd64/ia32/ia32_reg.c projects/tcp_cc_head/sys/amd64/ia32/ia32_signal.c projects/tcp_cc_head/sys/amd64/ia32/ia32_syscall.c projects/tcp_cc_head/sys/amd64/include/apicvar.h projects/tcp_cc_head/sys/amd64/include/cpufunc.h projects/tcp_cc_head/sys/amd64/include/elf.h projects/tcp_cc_head/sys/amd64/include/intr_machdep.h projects/tcp_cc_head/sys/amd64/include/iodev.h projects/tcp_cc_head/sys/amd64/include/mca.h projects/tcp_cc_head/sys/amd64/include/md_var.h projects/tcp_cc_head/sys/amd64/include/param.h projects/tcp_cc_head/sys/amd64/include/specialreg.h projects/tcp_cc_head/sys/amd64/isa/clock.c projects/tcp_cc_head/sys/amd64/isa/isa_dma.c projects/tcp_cc_head/sys/amd64/linux32/linux32_machdep.c projects/tcp_cc_head/sys/amd64/linux32/linux32_sysvec.c projects/tcp_cc_head/sys/arm/arm/busdma_machdep.c projects/tcp_cc_head/sys/arm/arm/cpufunc.c projects/tcp_cc_head/sys/arm/arm/db_trace.c projects/tcp_cc_head/sys/arm/arm/elf_trampoline.c projects/tcp_cc_head/sys/arm/arm/gdb_machdep.c projects/tcp_cc_head/sys/arm/arm/machdep.c projects/tcp_cc_head/sys/arm/arm/mem.c projects/tcp_cc_head/sys/arm/arm/pmap.c projects/tcp_cc_head/sys/arm/arm/trap.c projects/tcp_cc_head/sys/arm/arm/vm_machdep.c projects/tcp_cc_head/sys/arm/at91/at91_machdep.c projects/tcp_cc_head/sys/arm/at91/if_ate.c projects/tcp_cc_head/sys/arm/conf/AVILA projects/tcp_cc_head/sys/arm/conf/CAMBRIA projects/tcp_cc_head/sys/arm/conf/CRB projects/tcp_cc_head/sys/arm/conf/EP80219 projects/tcp_cc_head/sys/arm/conf/GUMSTIX projects/tcp_cc_head/sys/arm/conf/HL200 projects/tcp_cc_head/sys/arm/conf/IQ31244 projects/tcp_cc_head/sys/arm/conf/KB920X projects/tcp_cc_head/sys/arm/conf/SIMICS projects/tcp_cc_head/sys/arm/conf/SKYEYE projects/tcp_cc_head/sys/arm/include/cpuconf.h projects/tcp_cc_head/sys/arm/include/cpufunc.h projects/tcp_cc_head/sys/arm/include/elf.h projects/tcp_cc_head/sys/arm/include/pmc_mdep.h projects/tcp_cc_head/sys/arm/mv/mv_machdep.c projects/tcp_cc_head/sys/arm/mv/mv_sata.c projects/tcp_cc_head/sys/arm/sa11x0/assabet_machdep.c projects/tcp_cc_head/sys/arm/xscale/ixp425/files.ixp425 projects/tcp_cc_head/sys/boot/Makefile projects/tcp_cc_head/sys/boot/common/Makefile.inc projects/tcp_cc_head/sys/boot/common/boot.c projects/tcp_cc_head/sys/boot/common/bootstrap.h projects/tcp_cc_head/sys/boot/common/commands.c projects/tcp_cc_head/sys/boot/common/dev_net.c projects/tcp_cc_head/sys/boot/common/module.c projects/tcp_cc_head/sys/boot/efi/include/efilib.h projects/tcp_cc_head/sys/boot/efi/libefi/Makefile projects/tcp_cc_head/sys/boot/forth/loader.conf projects/tcp_cc_head/sys/boot/forth/loader.conf.5 projects/tcp_cc_head/sys/boot/i386/Makefile projects/tcp_cc_head/sys/boot/i386/gptboot/gptboot.c projects/tcp_cc_head/sys/boot/i386/libi386/Makefile projects/tcp_cc_head/sys/boot/i386/libi386/biosacpi.c projects/tcp_cc_head/sys/boot/i386/libi386/biosdisk.c projects/tcp_cc_head/sys/boot/i386/libi386/biosmem.c projects/tcp_cc_head/sys/boot/i386/libi386/elf32_freebsd.c projects/tcp_cc_head/sys/boot/i386/libi386/elf64_freebsd.c projects/tcp_cc_head/sys/boot/i386/libi386/libi386.h projects/tcp_cc_head/sys/boot/i386/libi386/vidconsole.c projects/tcp_cc_head/sys/boot/i386/loader/Makefile projects/tcp_cc_head/sys/boot/i386/loader/conf.c projects/tcp_cc_head/sys/boot/i386/loader/main.c projects/tcp_cc_head/sys/boot/i386/zfsboot/zfsboot.c projects/tcp_cc_head/sys/boot/i386/zfsboot/zfsldr.S projects/tcp_cc_head/sys/boot/ia64/efi/conf.c projects/tcp_cc_head/sys/boot/ia64/efi/main.c projects/tcp_cc_head/sys/boot/ia64/efi/version projects/tcp_cc_head/sys/boot/ofw/libofw/ofw_disk.c projects/tcp_cc_head/sys/boot/pc98/Makefile.inc projects/tcp_cc_head/sys/boot/pc98/boot0.5/selector.s projects/tcp_cc_head/sys/boot/pc98/boot2/Makefile projects/tcp_cc_head/sys/boot/pc98/btx/btx/btx.S projects/tcp_cc_head/sys/boot/pc98/kgzldr/crt.s projects/tcp_cc_head/sys/boot/pc98/libpc98/Makefile projects/tcp_cc_head/sys/boot/pc98/libpc98/biosdisk.c projects/tcp_cc_head/sys/boot/pc98/libpc98/biosmem.c projects/tcp_cc_head/sys/boot/pc98/loader/main.c projects/tcp_cc_head/sys/boot/sparc64/loader/Makefile projects/tcp_cc_head/sys/boot/sparc64/loader/main.c projects/tcp_cc_head/sys/boot/uboot/common/metadata.c projects/tcp_cc_head/sys/boot/uboot/lib/glue.c projects/tcp_cc_head/sys/boot/zfs/zfs.c projects/tcp_cc_head/sys/boot/zfs/zfsimpl.c projects/tcp_cc_head/sys/cam/ata/ata_all.c projects/tcp_cc_head/sys/cam/ata/ata_all.h projects/tcp_cc_head/sys/cam/ata/ata_da.c projects/tcp_cc_head/sys/cam/ata/ata_xpt.c projects/tcp_cc_head/sys/cam/cam.c projects/tcp_cc_head/sys/cam/cam.h projects/tcp_cc_head/sys/cam/cam_ccb.h projects/tcp_cc_head/sys/cam/cam_periph.c projects/tcp_cc_head/sys/cam/cam_periph.h projects/tcp_cc_head/sys/cam/cam_queue.c projects/tcp_cc_head/sys/cam/cam_queue.h projects/tcp_cc_head/sys/cam/cam_xpt.c projects/tcp_cc_head/sys/cam/cam_xpt_internal.h projects/tcp_cc_head/sys/cam/scsi/scsi_all.c projects/tcp_cc_head/sys/cam/scsi/scsi_cd.c projects/tcp_cc_head/sys/cam/scsi/scsi_ch.c projects/tcp_cc_head/sys/cam/scsi/scsi_da.c projects/tcp_cc_head/sys/cam/scsi/scsi_low.c projects/tcp_cc_head/sys/cam/scsi/scsi_pt.c projects/tcp_cc_head/sys/cam/scsi/scsi_sa.c projects/tcp_cc_head/sys/cam/scsi/scsi_ses.c projects/tcp_cc_head/sys/cam/scsi/scsi_sg.c projects/tcp_cc_head/sys/cam/scsi/scsi_targ_bh.c projects/tcp_cc_head/sys/cam/scsi/scsi_target.c projects/tcp_cc_head/sys/cam/scsi/scsi_xpt.c projects/tcp_cc_head/sys/cddl/boot/zfs/zfsimpl.h projects/tcp_cc_head/sys/cddl/boot/zfs/zfssubr.c projects/tcp_cc_head/sys/cddl/compat/opensolaris/sys/vnode.h projects/tcp_cc_head/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil.h projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h projects/tcp_cc_head/sys/cddl/contrib/opensolaris/uts/common/sys/vnode.h projects/tcp_cc_head/sys/compat/freebsd32/freebsd32_misc.c projects/tcp_cc_head/sys/compat/freebsd32/freebsd32_proto.h projects/tcp_cc_head/sys/compat/freebsd32/freebsd32_syscall.h projects/tcp_cc_head/sys/compat/freebsd32/freebsd32_syscalls.c projects/tcp_cc_head/sys/compat/freebsd32/freebsd32_sysent.c projects/tcp_cc_head/sys/compat/freebsd32/syscalls.master projects/tcp_cc_head/sys/compat/linux/linux_file.c projects/tcp_cc_head/sys/compat/linux/linux_futex.c projects/tcp_cc_head/sys/compat/linux/linux_ioctl.c projects/tcp_cc_head/sys/compat/linux/linux_ioctl.h projects/tcp_cc_head/sys/compat/linux/linux_ipc.c projects/tcp_cc_head/sys/compat/linux/linux_misc.c projects/tcp_cc_head/sys/compat/linux/linux_signal.c projects/tcp_cc_head/sys/compat/linux/linux_socket.c projects/tcp_cc_head/sys/compat/linux/linux_uid16.c projects/tcp_cc_head/sys/compat/ndis/kern_ndis.c projects/tcp_cc_head/sys/compat/ndis/kern_windrv.c projects/tcp_cc_head/sys/compat/ndis/subr_hal.c projects/tcp_cc_head/sys/compat/ndis/subr_ndis.c projects/tcp_cc_head/sys/compat/ndis/subr_ntoskrnl.c projects/tcp_cc_head/sys/compat/ndis/subr_pe.c projects/tcp_cc_head/sys/compat/ndis/subr_usbd.c projects/tcp_cc_head/sys/compat/svr4/svr4_misc.c projects/tcp_cc_head/sys/compat/svr4/svr4_termios.c projects/tcp_cc_head/sys/compat/x86bios/x86bios.c projects/tcp_cc_head/sys/compat/x86bios/x86bios.h projects/tcp_cc_head/sys/conf/Makefile.arm projects/tcp_cc_head/sys/conf/Makefile.mips projects/tcp_cc_head/sys/conf/NOTES projects/tcp_cc_head/sys/conf/files projects/tcp_cc_head/sys/conf/files.amd64 projects/tcp_cc_head/sys/conf/files.arm projects/tcp_cc_head/sys/conf/files.i386 projects/tcp_cc_head/sys/conf/files.ia64 projects/tcp_cc_head/sys/conf/files.mips projects/tcp_cc_head/sys/conf/files.pc98 projects/tcp_cc_head/sys/conf/files.sparc64 projects/tcp_cc_head/sys/conf/files.sun4v projects/tcp_cc_head/sys/conf/kern.mk projects/tcp_cc_head/sys/conf/ldscript.mips projects/tcp_cc_head/sys/conf/makeLINT.mk projects/tcp_cc_head/sys/conf/options projects/tcp_cc_head/sys/conf/options.arm projects/tcp_cc_head/sys/conf/options.i386 projects/tcp_cc_head/sys/conf/options.mips projects/tcp_cc_head/sys/conf/options.pc98 projects/tcp_cc_head/sys/conf/options.sparc64 projects/tcp_cc_head/sys/contrib/altq/altq/altq_hfsc.c projects/tcp_cc_head/sys/contrib/dev/acpica/changes.txt projects/tcp_cc_head/sys/contrib/dev/acpica/common/adfile.c projects/tcp_cc_head/sys/contrib/dev/acpica/common/adisasm.c projects/tcp_cc_head/sys/contrib/dev/acpica/common/adwalk.c projects/tcp_cc_head/sys/contrib/dev/acpica/common/dmrestag.c projects/tcp_cc_head/sys/contrib/dev/acpica/common/dmtable.c projects/tcp_cc_head/sys/contrib/dev/acpica/common/dmtbdump.c projects/tcp_cc_head/sys/contrib/dev/acpica/common/dmtbinfo.c projects/tcp_cc_head/sys/contrib/dev/acpica/common/getopt.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslcodegen.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslcompile.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslcompiler.y projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/asldefine.h projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslerror.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslfiles.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslfold.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslglobal.h projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/asllength.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/asllisting.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslload.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/asllookup.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslmain.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslmap.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslopcodes.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/asloperands.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslopt.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslresource.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslrestype1.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslrestype2.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslstartup.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslstubs.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/asltransform.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/asltree.c projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/asltypes.h projects/tcp_cc_head/sys/contrib/dev/acpica/compiler/aslutils.c projects/tcp_cc_head/sys/contrib/dev/acpica/debugger/dbcmds.c projects/tcp_cc_head/sys/contrib/dev/acpica/debugger/dbdisply.c projects/tcp_cc_head/sys/contrib/dev/acpica/debugger/dbexec.c projects/tcp_cc_head/sys/contrib/dev/acpica/debugger/dbfileio.c projects/tcp_cc_head/sys/contrib/dev/acpica/debugger/dbhistry.c projects/tcp_cc_head/sys/contrib/dev/acpica/debugger/dbinput.c projects/tcp_cc_head/sys/contrib/dev/acpica/debugger/dbstats.c projects/tcp_cc_head/sys/contrib/dev/acpica/debugger/dbutils.c projects/tcp_cc_head/sys/contrib/dev/acpica/debugger/dbxface.c projects/tcp_cc_head/sys/contrib/dev/acpica/disassembler/dmbuffer.c projects/tcp_cc_head/sys/contrib/dev/acpica/disassembler/dmnames.c projects/tcp_cc_head/sys/contrib/dev/acpica/disassembler/dmobject.c projects/tcp_cc_head/sys/contrib/dev/acpica/disassembler/dmopcode.c projects/tcp_cc_head/sys/contrib/dev/acpica/disassembler/dmresrc.c projects/tcp_cc_head/sys/contrib/dev/acpica/disassembler/dmresrcl.c projects/tcp_cc_head/sys/contrib/dev/acpica/disassembler/dmresrcs.c projects/tcp_cc_head/sys/contrib/dev/acpica/disassembler/dmutils.c projects/tcp_cc_head/sys/contrib/dev/acpica/disassembler/dmwalk.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dsfield.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dsinit.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dsmethod.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dsmthdat.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dsobject.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dsopcode.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dsutils.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dswexec.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dswload.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dswscope.c projects/tcp_cc_head/sys/contrib/dev/acpica/dispatcher/dswstate.c projects/tcp_cc_head/sys/contrib/dev/acpica/events/evevent.c projects/tcp_cc_head/sys/contrib/dev/acpica/events/evgpe.c projects/tcp_cc_head/sys/contrib/dev/acpica/events/evgpeblk.c projects/tcp_cc_head/sys/contrib/dev/acpica/events/evmisc.c projects/tcp_cc_head/sys/contrib/dev/acpica/events/evregion.c projects/tcp_cc_head/sys/contrib/dev/acpica/events/evrgnini.c projects/tcp_cc_head/sys/contrib/dev/acpica/events/evsci.c projects/tcp_cc_head/sys/contrib/dev/acpica/events/evxface.c projects/tcp_cc_head/sys/contrib/dev/acpica/events/evxfevnt.c projects/tcp_cc_head/sys/contrib/dev/acpica/events/evxfregn.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exconfig.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exconvrt.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/excreate.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exdump.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exfield.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exfldio.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exmisc.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exmutex.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exnames.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exoparg1.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exoparg2.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exoparg3.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exoparg6.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exprep.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exregion.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exresnte.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exresolv.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exresop.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exstore.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exstoren.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exstorob.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exsystem.c projects/tcp_cc_head/sys/contrib/dev/acpica/executer/exutils.c projects/tcp_cc_head/sys/contrib/dev/acpica/hardware/hwacpi.c projects/tcp_cc_head/sys/contrib/dev/acpica/hardware/hwgpe.c projects/tcp_cc_head/sys/contrib/dev/acpica/hardware/hwregs.c projects/tcp_cc_head/sys/contrib/dev/acpica/hardware/hwsleep.c projects/tcp_cc_head/sys/contrib/dev/acpica/hardware/hwtimer.c projects/tcp_cc_head/sys/contrib/dev/acpica/hardware/hwvalid.c projects/tcp_cc_head/sys/contrib/dev/acpica/hardware/hwxface.c projects/tcp_cc_head/sys/contrib/dev/acpica/include/acapps.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/accommon.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acconfig.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acdebug.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acdisasm.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acdispat.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acevents.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acexcep.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acglobal.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/achware.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acinterp.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/aclocal.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acmacros.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acnames.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acnamesp.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acobject.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acopcode.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acoutput.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acparser.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acpi.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acpiosxf.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acpixf.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acpredef.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acresrc.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acrestyp.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acstruct.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/actables.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/actbl.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/actbl1.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/actbl2.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/actypes.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/acutils.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/amlcode.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/amlresrc.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/platform/acenv.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/platform/acfreebsd.h projects/tcp_cc_head/sys/contrib/dev/acpica/include/platform/acgcc.h projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsaccess.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsalloc.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsdump.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsdumpdv.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nseval.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsinit.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsload.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsnames.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsobject.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsparse.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nspredef.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsrepair.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nssearch.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsutils.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nswalk.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsxfeval.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsxfname.c projects/tcp_cc_head/sys/contrib/dev/acpica/namespace/nsxfobj.c projects/tcp_cc_head/sys/contrib/dev/acpica/osunixxf.c projects/tcp_cc_head/sys/contrib/dev/acpica/parser/psargs.c projects/tcp_cc_head/sys/contrib/dev/acpica/parser/psloop.c projects/tcp_cc_head/sys/contrib/dev/acpica/parser/psopcode.c projects/tcp_cc_head/sys/contrib/dev/acpica/parser/psparse.c projects/tcp_cc_head/sys/contrib/dev/acpica/parser/psscope.c projects/tcp_cc_head/sys/contrib/dev/acpica/parser/pstree.c projects/tcp_cc_head/sys/contrib/dev/acpica/parser/psutils.c projects/tcp_cc_head/sys/contrib/dev/acpica/parser/pswalk.c projects/tcp_cc_head/sys/contrib/dev/acpica/parser/psxface.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rsaddr.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rscalc.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rscreate.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rsdump.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rsinfo.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rsio.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rsirq.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rslist.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rsmemory.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rsmisc.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rsutils.c projects/tcp_cc_head/sys/contrib/dev/acpica/resources/rsxface.c projects/tcp_cc_head/sys/contrib/dev/acpica/tables/tbfadt.c projects/tcp_cc_head/sys/contrib/dev/acpica/tables/tbfind.c projects/tcp_cc_head/sys/contrib/dev/acpica/tables/tbinstal.c projects/tcp_cc_head/sys/contrib/dev/acpica/tables/tbutils.c projects/tcp_cc_head/sys/contrib/dev/acpica/tables/tbxface.c projects/tcp_cc_head/sys/contrib/dev/acpica/tables/tbxfroot.c projects/tcp_cc_head/sys/contrib/dev/acpica/tools/acpiexec/aecommon.h projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utalloc.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utcache.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utcopy.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utdebug.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utdelete.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/uteval.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utglobal.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utids.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utinit.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utlock.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utmath.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utmisc.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utmutex.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utobject.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utresrc.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utstate.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/uttrack.c projects/tcp_cc_head/sys/contrib/dev/acpica/utilities/utxface.c projects/tcp_cc_head/sys/contrib/dev/iwn/LICENSE projects/tcp_cc_head/sys/contrib/dev/uath/ar5523.bin.uu projects/tcp_cc_head/sys/contrib/ngatm/netnatm/api/cc_conn.c projects/tcp_cc_head/sys/contrib/pf/net/if_pfsync.c projects/tcp_cc_head/sys/contrib/pf/net/if_pfsync.h projects/tcp_cc_head/sys/contrib/pf/net/pf.c projects/tcp_cc_head/sys/contrib/pf/net/pfvar.h projects/tcp_cc_head/sys/contrib/rdma/krping/krping.c projects/tcp_cc_head/sys/ddb/db_command.c projects/tcp_cc_head/sys/ddb/db_ps.c projects/tcp_cc_head/sys/dev/aac/aac.c projects/tcp_cc_head/sys/dev/aac/aac_cam.c projects/tcp_cc_head/sys/dev/aac/aacreg.h projects/tcp_cc_head/sys/dev/aac/aacvar.h projects/tcp_cc_head/sys/dev/acpi_support/acpi_aiboost.c projects/tcp_cc_head/sys/dev/acpi_support/acpi_ibm.c projects/tcp_cc_head/sys/dev/acpi_support/acpi_panasonic.c projects/tcp_cc_head/sys/dev/acpi_support/acpi_wmi.c projects/tcp_cc_head/sys/dev/acpica/Osd/OsdHardware.c projects/tcp_cc_head/sys/dev/acpica/Osd/OsdSchedule.c projects/tcp_cc_head/sys/dev/acpica/acpi.c projects/tcp_cc_head/sys/dev/acpica/acpi_cpu.c projects/tcp_cc_head/sys/dev/acpica/acpi_dock.c projects/tcp_cc_head/sys/dev/acpica/acpi_ec.c projects/tcp_cc_head/sys/dev/acpica/acpi_hpet.c projects/tcp_cc_head/sys/dev/acpica/acpi_if.m projects/tcp_cc_head/sys/dev/acpica/acpi_package.c projects/tcp_cc_head/sys/dev/acpica/acpi_pci.c projects/tcp_cc_head/sys/dev/acpica/acpi_powerres.c projects/tcp_cc_head/sys/dev/acpica/acpi_smbat.c projects/tcp_cc_head/sys/dev/acpica/acpi_video.c projects/tcp_cc_head/sys/dev/acpica/acpivar.h projects/tcp_cc_head/sys/dev/adb/adb.h projects/tcp_cc_head/sys/dev/adb/adb_bus.c projects/tcp_cc_head/sys/dev/adb/adb_mouse.c projects/tcp_cc_head/sys/dev/adlink/adlink.c projects/tcp_cc_head/sys/dev/ae/if_ae.c projects/tcp_cc_head/sys/dev/agp/agp.c projects/tcp_cc_head/sys/dev/agp/agp_i810.c projects/tcp_cc_head/sys/dev/agp/agp_via.c projects/tcp_cc_head/sys/dev/ahci/ahci.c projects/tcp_cc_head/sys/dev/ahci/ahci.h projects/tcp_cc_head/sys/dev/aic7xxx/ahd_pci.c projects/tcp_cc_head/sys/dev/aic7xxx/aic79xx.c projects/tcp_cc_head/sys/dev/aic7xxx/aic79xx.h projects/tcp_cc_head/sys/dev/aic7xxx/aic79xx_osm.c projects/tcp_cc_head/sys/dev/aic7xxx/aic79xx_osm.h projects/tcp_cc_head/sys/dev/aic7xxx/aic79xx_pci.c projects/tcp_cc_head/sys/dev/aic7xxx/aicasm/Makefile projects/tcp_cc_head/sys/dev/aic7xxx/aicasm/aicasm.c projects/tcp_cc_head/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l projects/tcp_cc_head/sys/dev/aic7xxx/aicasm/aicasm_scan.l projects/tcp_cc_head/sys/dev/aic7xxx/aicasm/aicasm_symbol.c projects/tcp_cc_head/sys/dev/amd/amd.c projects/tcp_cc_head/sys/dev/amr/amr.c projects/tcp_cc_head/sys/dev/an/if_an.c projects/tcp_cc_head/sys/dev/an/if_an_isa.c projects/tcp_cc_head/sys/dev/an/if_an_pccard.c projects/tcp_cc_head/sys/dev/an/if_an_pci.c projects/tcp_cc_head/sys/dev/an/if_anreg.h projects/tcp_cc_head/sys/dev/arcmsr/arcmsr.c projects/tcp_cc_head/sys/dev/arcmsr/arcmsr.h projects/tcp_cc_head/sys/dev/ata/ata-all.c projects/tcp_cc_head/sys/dev/ata/ata-all.h projects/tcp_cc_head/sys/dev/ata/ata-disk.c projects/tcp_cc_head/sys/dev/ata/ata-dma.c projects/tcp_cc_head/sys/dev/ata/ata-lowlevel.c projects/tcp_cc_head/sys/dev/ata/ata-pci.c projects/tcp_cc_head/sys/dev/ata/ata-pci.h projects/tcp_cc_head/sys/dev/ata/ata-queue.c projects/tcp_cc_head/sys/dev/ata/ata-raid.c projects/tcp_cc_head/sys/dev/ata/ata-sata.c projects/tcp_cc_head/sys/dev/ata/ata_if.m projects/tcp_cc_head/sys/dev/ata/atapi-cam.c projects/tcp_cc_head/sys/dev/ata/atapi-cd.c projects/tcp_cc_head/sys/dev/ata/atapi-cd.h projects/tcp_cc_head/sys/dev/ata/atapi-fd.c projects/tcp_cc_head/sys/dev/ata/atapi-tape.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-acard.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-acerlabs.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-adaptec.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-ahci.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-amd.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-ati.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-cenatek.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-cypress.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-cyrix.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-highpoint.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-intel.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-ite.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-jmicron.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-marvell.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-micron.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-national.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-netcell.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-nvidia.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-promise.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-serverworks.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-siliconimage.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-sis.c projects/tcp_cc_head/sys/dev/ata/chipsets/ata-via.c projects/tcp_cc_head/sys/dev/ath/ath_hal/ah_regdomain.c projects/tcp_cc_head/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c projects/tcp_cc_head/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c projects/tcp_cc_head/sys/dev/ath/ath_hal/ar5212/ar5212_interrupts.c projects/tcp_cc_head/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c projects/tcp_cc_head/sys/dev/ath/if_ath.c projects/tcp_cc_head/sys/dev/atkbdc/atkbd.c projects/tcp_cc_head/sys/dev/atkbdc/psm.c projects/tcp_cc_head/sys/dev/auxio/auxio.c projects/tcp_cc_head/sys/dev/bce/if_bce.c projects/tcp_cc_head/sys/dev/bce/if_bcereg.h projects/tcp_cc_head/sys/dev/bge/if_bge.c projects/tcp_cc_head/sys/dev/bge/if_bgereg.h projects/tcp_cc_head/sys/dev/bktr/bktr_i2c.c projects/tcp_cc_head/sys/dev/bktr/bktr_os.c projects/tcp_cc_head/sys/dev/bwi/if_bwi.c projects/tcp_cc_head/sys/dev/bwi/if_bwivar.h projects/tcp_cc_head/sys/dev/cardbus/cardbus.c projects/tcp_cc_head/sys/dev/cardbus/cardbus_cis.c projects/tcp_cc_head/sys/dev/ce/if_ce.c projects/tcp_cc_head/sys/dev/cfe/cfe_api.c projects/tcp_cc_head/sys/dev/ciss/ciss.c projects/tcp_cc_head/sys/dev/cm/smc90cx6.c projects/tcp_cc_head/sys/dev/cm/smc90cx6var.h projects/tcp_cc_head/sys/dev/cp/if_cp.c projects/tcp_cc_head/sys/dev/cs/if_cs.c projects/tcp_cc_head/sys/dev/cs/if_csreg.h projects/tcp_cc_head/sys/dev/ct/ct_isa.c projects/tcp_cc_head/sys/dev/ctau/if_ct.c projects/tcp_cc_head/sys/dev/cx/if_cx.c projects/tcp_cc_head/sys/dev/cxgb/common/cxgb_ael1002.c projects/tcp_cc_head/sys/dev/cxgb/common/cxgb_aq100x.c projects/tcp_cc_head/sys/dev/cxgb/common/cxgb_common.h projects/tcp_cc_head/sys/dev/cxgb/common/cxgb_t3_hw.c projects/tcp_cc_head/sys/dev/cxgb/common/cxgb_xgmac.c projects/tcp_cc_head/sys/dev/cxgb/cxgb_adapter.h projects/tcp_cc_head/sys/dev/cxgb/cxgb_main.c projects/tcp_cc_head/sys/dev/cxgb/cxgb_sge.c projects/tcp_cc_head/sys/dev/cxgb/cxgb_t3fw.h projects/tcp_cc_head/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c projects/tcp_cc_head/sys/dev/cxgb/ulp/tom/cxgb_vm.c projects/tcp_cc_head/sys/dev/dc/if_dc.c projects/tcp_cc_head/sys/dev/dc/if_dcreg.h projects/tcp_cc_head/sys/dev/de/if_de.c projects/tcp_cc_head/sys/dev/de/if_devar.h projects/tcp_cc_head/sys/dev/dpms/dpms.c projects/tcp_cc_head/sys/dev/dpt/dpt.h projects/tcp_cc_head/sys/dev/dpt/dpt_scsi.c projects/tcp_cc_head/sys/dev/drm/drmP.h projects/tcp_cc_head/sys/dev/drm/drm_pciids.h projects/tcp_cc_head/sys/dev/drm/drm_scatter.c projects/tcp_cc_head/sys/dev/drm/drm_vm.c projects/tcp_cc_head/sys/dev/drm/i915_drv.h projects/tcp_cc_head/sys/dev/drm/mach64_state.c projects/tcp_cc_head/sys/dev/drm/r600_blit.c projects/tcp_cc_head/sys/dev/drm/radeon_cp.c projects/tcp_cc_head/sys/dev/e1000/LICENSE projects/tcp_cc_head/sys/dev/e1000/e1000_80003es2lan.c projects/tcp_cc_head/sys/dev/e1000/e1000_80003es2lan.h projects/tcp_cc_head/sys/dev/e1000/e1000_82541.c projects/tcp_cc_head/sys/dev/e1000/e1000_82543.c projects/tcp_cc_head/sys/dev/e1000/e1000_82571.c projects/tcp_cc_head/sys/dev/e1000/e1000_82575.c projects/tcp_cc_head/sys/dev/e1000/e1000_82575.h projects/tcp_cc_head/sys/dev/e1000/e1000_api.c projects/tcp_cc_head/sys/dev/e1000/e1000_defines.h projects/tcp_cc_head/sys/dev/e1000/e1000_hw.h projects/tcp_cc_head/sys/dev/e1000/e1000_ich8lan.c projects/tcp_cc_head/sys/dev/e1000/e1000_ich8lan.h projects/tcp_cc_head/sys/dev/e1000/e1000_mac.c projects/tcp_cc_head/sys/dev/e1000/e1000_manage.c projects/tcp_cc_head/sys/dev/e1000/e1000_osdep.h projects/tcp_cc_head/sys/dev/e1000/e1000_phy.c projects/tcp_cc_head/sys/dev/e1000/e1000_phy.h projects/tcp_cc_head/sys/dev/e1000/e1000_regs.h projects/tcp_cc_head/sys/dev/e1000/if_em.c projects/tcp_cc_head/sys/dev/e1000/if_em.h projects/tcp_cc_head/sys/dev/e1000/if_igb.c projects/tcp_cc_head/sys/dev/e1000/if_igb.h projects/tcp_cc_head/sys/dev/ed/if_ed.c projects/tcp_cc_head/sys/dev/ed/if_ed_pccard.c projects/tcp_cc_head/sys/dev/ed/if_edvar.h projects/tcp_cc_head/sys/dev/ep/if_ep.c projects/tcp_cc_head/sys/dev/ep/if_epvar.h projects/tcp_cc_head/sys/dev/et/if_et.c projects/tcp_cc_head/sys/dev/et/if_etreg.h projects/tcp_cc_head/sys/dev/et/if_etvar.h projects/tcp_cc_head/sys/dev/ex/if_ex.c projects/tcp_cc_head/sys/dev/exca/excareg.h projects/tcp_cc_head/sys/dev/fatm/if_fatm.c projects/tcp_cc_head/sys/dev/fatm/if_fatmvar.h projects/tcp_cc_head/sys/dev/fb/creator.c projects/tcp_cc_head/sys/dev/fb/fb.c projects/tcp_cc_head/sys/dev/fb/fbreg.h projects/tcp_cc_head/sys/dev/fb/machfb.c projects/tcp_cc_head/sys/dev/fb/s3_pci.c projects/tcp_cc_head/sys/dev/fb/vesa.c projects/tcp_cc_head/sys/dev/fb/vesa.h projects/tcp_cc_head/sys/dev/fb/vga.c projects/tcp_cc_head/sys/dev/fb/vgareg.h projects/tcp_cc_head/sys/dev/fdc/fdc.c projects/tcp_cc_head/sys/dev/fdc/fdc_acpi.c projects/tcp_cc_head/sys/dev/fe/if_fe_pccard.c projects/tcp_cc_head/sys/dev/firewire/fwdev.c projects/tcp_cc_head/sys/dev/firewire/fwmem.c projects/tcp_cc_head/sys/dev/firewire/sbp.c projects/tcp_cc_head/sys/dev/gem/if_gem_pci.c projects/tcp_cc_head/sys/dev/hatm/if_hatm.c projects/tcp_cc_head/sys/dev/hifn/hifn7751.c projects/tcp_cc_head/sys/dev/hptmv/entry.c projects/tcp_cc_head/sys/dev/hptrr/hptrr_osm_bsd.c projects/tcp_cc_head/sys/dev/hwpmc/hwpmc_arm.c projects/tcp_cc_head/sys/dev/hwpmc/hwpmc_core.c projects/tcp_cc_head/sys/dev/hwpmc/hwpmc_intel.c projects/tcp_cc_head/sys/dev/hwpmc/hwpmc_logging.c projects/tcp_cc_head/sys/dev/hwpmc/hwpmc_mod.c projects/tcp_cc_head/sys/dev/hwpmc/hwpmc_x86.c projects/tcp_cc_head/sys/dev/hwpmc/pmc_events.h projects/tcp_cc_head/sys/dev/ic/ns16550.h projects/tcp_cc_head/sys/dev/ichsmb/ichsmb_pci.c projects/tcp_cc_head/sys/dev/ichwd/ichwd.c projects/tcp_cc_head/sys/dev/ichwd/ichwd.h projects/tcp_cc_head/sys/dev/ieee488/ibfoo.c projects/tcp_cc_head/sys/dev/ieee488/pcii.c projects/tcp_cc_head/sys/dev/ieee488/tnt4882.c projects/tcp_cc_head/sys/dev/ieee488/upd7210.c projects/tcp_cc_head/sys/dev/ieee488/upd7210.h projects/tcp_cc_head/sys/dev/if_ndis/if_ndis.c projects/tcp_cc_head/sys/dev/if_ndis/if_ndis_usb.c projects/tcp_cc_head/sys/dev/iir/iir.c projects/tcp_cc_head/sys/dev/iir/iir_ctrl.c projects/tcp_cc_head/sys/dev/iir/iir_pci.c projects/tcp_cc_head/sys/dev/io/iodev.c projects/tcp_cc_head/sys/dev/ipmi/ipmi.c projects/tcp_cc_head/sys/dev/ips/ips_disk.c projects/tcp_cc_head/sys/dev/ips/ips_pci.c projects/tcp_cc_head/sys/dev/iscsi/initiator/isc_sm.c projects/tcp_cc_head/sys/dev/isp/isp.c projects/tcp_cc_head/sys/dev/isp/isp_freebsd.c projects/tcp_cc_head/sys/dev/isp/isp_freebsd.h projects/tcp_cc_head/sys/dev/isp/isp_library.c projects/tcp_cc_head/sys/dev/isp/isp_sbus.c projects/tcp_cc_head/sys/dev/iwn/if_iwn.c projects/tcp_cc_head/sys/dev/iwn/if_iwnreg.h projects/tcp_cc_head/sys/dev/iwn/if_iwnvar.h projects/tcp_cc_head/sys/dev/ixgb/if_ixgb.c projects/tcp_cc_head/sys/dev/ixgb/if_ixgb.h projects/tcp_cc_head/sys/dev/ixgbe/ixgbe.c projects/tcp_cc_head/sys/dev/ixgbe/ixgbe.h projects/tcp_cc_head/sys/dev/ixgbe/ixgbe_82598.c projects/tcp_cc_head/sys/dev/ixgbe/ixgbe_82599.c projects/tcp_cc_head/sys/dev/ixgbe/ixgbe_api.c projects/tcp_cc_head/sys/dev/ixgbe/ixgbe_api.h projects/tcp_cc_head/sys/dev/ixgbe/ixgbe_common.c projects/tcp_cc_head/sys/dev/ixgbe/ixgbe_common.h projects/tcp_cc_head/sys/dev/ixgbe/ixgbe_osdep.h projects/tcp_cc_head/sys/dev/ixgbe/ixgbe_phy.c projects/tcp_cc_head/sys/dev/ixgbe/ixgbe_phy.h projects/tcp_cc_head/sys/dev/ixgbe/ixgbe_type.h projects/tcp_cc_head/sys/dev/jme/if_jme.c projects/tcp_cc_head/sys/dev/ksyms/ksyms.c projects/tcp_cc_head/sys/dev/led/led.c projects/tcp_cc_head/sys/dev/lge/if_lge.c projects/tcp_cc_head/sys/dev/lge/if_lgereg.h projects/tcp_cc_head/sys/dev/lmc/if_lmc.c projects/tcp_cc_head/sys/dev/lmc/if_lmc.h projects/tcp_cc_head/sys/dev/malo/if_malo.c projects/tcp_cc_head/sys/dev/malo/if_malo.h projects/tcp_cc_head/sys/dev/mc146818/mc146818.c projects/tcp_cc_head/sys/dev/mc146818/mc146818reg.h projects/tcp_cc_head/sys/dev/mc146818/mc146818var.h projects/tcp_cc_head/sys/dev/md/md.c projects/tcp_cc_head/sys/dev/mge/if_mge.c projects/tcp_cc_head/sys/dev/mii/brgphy.c projects/tcp_cc_head/sys/dev/mii/ip1000phy.c projects/tcp_cc_head/sys/dev/mii/miidevs projects/tcp_cc_head/sys/dev/mii/tdkphy.c projects/tcp_cc_head/sys/dev/mk48txx/mk48txx.c projects/tcp_cc_head/sys/dev/mk48txx/mk48txxreg.h projects/tcp_cc_head/sys/dev/mk48txx/mk48txxvar.h projects/tcp_cc_head/sys/dev/mly/mly.c projects/tcp_cc_head/sys/dev/mpt/mpt.c projects/tcp_cc_head/sys/dev/mpt/mpt.h projects/tcp_cc_head/sys/dev/mpt/mpt_cam.c projects/tcp_cc_head/sys/dev/mpt/mpt_pci.c projects/tcp_cc_head/sys/dev/mpt/mpt_raid.c projects/tcp_cc_head/sys/dev/msk/if_msk.c projects/tcp_cc_head/sys/dev/msk/if_mskreg.h projects/tcp_cc_head/sys/dev/mwl/if_mwl.c projects/tcp_cc_head/sys/dev/mwl/if_mwl_pci.c projects/tcp_cc_head/sys/dev/mwl/if_mwlvar.h projects/tcp_cc_head/sys/dev/mxge/eth_z8e.h projects/tcp_cc_head/sys/dev/mxge/ethp_z8e.h projects/tcp_cc_head/sys/dev/mxge/if_mxge.c projects/tcp_cc_head/sys/dev/mxge/if_mxge_var.h projects/tcp_cc_head/sys/dev/mxge/rss_eth_z8e.h projects/tcp_cc_head/sys/dev/mxge/rss_ethp_z8e.h projects/tcp_cc_head/sys/dev/my/if_my.c projects/tcp_cc_head/sys/dev/my/if_myreg.h projects/tcp_cc_head/sys/dev/nfe/if_nfe.c projects/tcp_cc_head/sys/dev/nve/if_nve.c projects/tcp_cc_head/sys/dev/nve/if_nvereg.h projects/tcp_cc_head/sys/dev/nxge/if_nxge.c projects/tcp_cc_head/sys/dev/patm/if_patm_attach.c projects/tcp_cc_head/sys/dev/patm/if_patm_intr.c projects/tcp_cc_head/sys/dev/pccard/card_if.m projects/tcp_cc_head/sys/dev/pci/pci.c projects/tcp_cc_head/sys/dev/pci/pci_pci.c projects/tcp_cc_head/sys/dev/pci/pci_private.h projects/tcp_cc_head/sys/dev/pci/vga_pci.c projects/tcp_cc_head/sys/dev/pcn/if_pcn.c projects/tcp_cc_head/sys/dev/pcn/if_pcnreg.h projects/tcp_cc_head/sys/dev/pdq/if_fea.c projects/tcp_cc_head/sys/dev/pdq/if_fpa.c projects/tcp_cc_head/sys/dev/pdq/pdq_freebsd.h projects/tcp_cc_head/sys/dev/pdq/pdq_ifsubr.c projects/tcp_cc_head/sys/dev/ppbus/lpt.c projects/tcp_cc_head/sys/dev/ppbus/pcfclock.c projects/tcp_cc_head/sys/dev/puc/puc.c projects/tcp_cc_head/sys/dev/puc/pucdata.c projects/tcp_cc_head/sys/dev/re/if_re.c projects/tcp_cc_head/sys/dev/safe/safe.c projects/tcp_cc_head/sys/dev/siis/siis.c projects/tcp_cc_head/sys/dev/siis/siis.h projects/tcp_cc_head/sys/dev/sk/if_sk.c projects/tcp_cc_head/sys/dev/sn/if_sn.c projects/tcp_cc_head/sys/dev/sn/if_sn_pccard.c projects/tcp_cc_head/sys/dev/sn/if_snvar.h projects/tcp_cc_head/sys/dev/sound/pci/hda/hdac.c projects/tcp_cc_head/sys/dev/sound/pci/hda/hdac_private.h projects/tcp_cc_head/sys/dev/sound/pci/maestro3.c projects/tcp_cc_head/sys/dev/sound/pcm/channel.c projects/tcp_cc_head/sys/dev/sound/pcm/dsp.c projects/tcp_cc_head/sys/dev/sound/pcm/mixer.c projects/tcp_cc_head/sys/dev/sound/pcm/sndstat.c projects/tcp_cc_head/sys/dev/sound/pcm/sndstat.h projects/tcp_cc_head/sys/dev/sound/usb/uaudio.c projects/tcp_cc_head/sys/dev/ste/if_ste.c projects/tcp_cc_head/sys/dev/ste/if_stereg.h projects/tcp_cc_head/sys/dev/stge/if_stge.c projects/tcp_cc_head/sys/dev/sym/sym_hipd.c projects/tcp_cc_head/sys/dev/syscons/scterm-teken.c projects/tcp_cc_head/sys/dev/syscons/scvidctl.c projects/tcp_cc_head/sys/dev/syscons/syscons.c projects/tcp_cc_head/sys/dev/syscons/syscons.h projects/tcp_cc_head/sys/dev/syscons/sysmouse.c projects/tcp_cc_head/sys/dev/tdfx/tdfx_pci.c projects/tcp_cc_head/sys/dev/ti/if_ti.c projects/tcp_cc_head/sys/dev/ti/if_tireg.h projects/tcp_cc_head/sys/dev/tl/if_tl.c projects/tcp_cc_head/sys/dev/tl/if_tlreg.h projects/tcp_cc_head/sys/dev/trm/trm.c projects/tcp_cc_head/sys/dev/tsec/if_tsec.c projects/tcp_cc_head/sys/dev/twe/twe.c projects/tcp_cc_head/sys/dev/twe/twe_freebsd.c projects/tcp_cc_head/sys/dev/twe/twevar.h projects/tcp_cc_head/sys/dev/uart/uart_bus_acpi.c projects/tcp_cc_head/sys/dev/uart/uart_bus_ebus.c projects/tcp_cc_head/sys/dev/uart/uart_bus_pci.c projects/tcp_cc_head/sys/dev/uart/uart_core.c projects/tcp_cc_head/sys/dev/uart/uart_cpu_sparc64.c projects/tcp_cc_head/sys/dev/uart/uart_tty.c projects/tcp_cc_head/sys/dev/usb/controller/at91dci.c projects/tcp_cc_head/sys/dev/usb/controller/atmegadci.c projects/tcp_cc_head/sys/dev/usb/controller/avr32dci.c projects/tcp_cc_head/sys/dev/usb/controller/ehci.c projects/tcp_cc_head/sys/dev/usb/controller/ehci.h projects/tcp_cc_head/sys/dev/usb/controller/ehci_ixp4xx.c projects/tcp_cc_head/sys/dev/usb/controller/ehci_mbus.c projects/tcp_cc_head/sys/dev/usb/controller/ehci_pci.c projects/tcp_cc_head/sys/dev/usb/controller/musb_otg.c projects/tcp_cc_head/sys/dev/usb/controller/musb_otg.h projects/tcp_cc_head/sys/dev/usb/controller/ohci.c projects/tcp_cc_head/sys/dev/usb/controller/ohci.h projects/tcp_cc_head/sys/dev/usb/controller/ohci_atmelarm.c projects/tcp_cc_head/sys/dev/usb/controller/ohci_pci.c projects/tcp_cc_head/sys/dev/usb/controller/uhci.c projects/tcp_cc_head/sys/dev/usb/controller/uhci.h projects/tcp_cc_head/sys/dev/usb/controller/uhci_pci.c projects/tcp_cc_head/sys/dev/usb/controller/usb_controller.c projects/tcp_cc_head/sys/dev/usb/controller/uss820dci.c projects/tcp_cc_head/sys/dev/usb/input/uhid.c projects/tcp_cc_head/sys/dev/usb/input/ukbd.c projects/tcp_cc_head/sys/dev/usb/input/ums.c projects/tcp_cc_head/sys/dev/usb/net/if_aue.c projects/tcp_cc_head/sys/dev/usb/net/if_axe.c projects/tcp_cc_head/sys/dev/usb/net/if_cdce.c projects/tcp_cc_head/sys/dev/usb/net/if_cue.c projects/tcp_cc_head/sys/dev/usb/net/if_kue.c projects/tcp_cc_head/sys/dev/usb/net/if_rue.c projects/tcp_cc_head/sys/dev/usb/net/if_udav.c projects/tcp_cc_head/sys/dev/usb/quirk/usb_quirk.c projects/tcp_cc_head/sys/dev/usb/quirk/usb_quirk.h projects/tcp_cc_head/sys/dev/usb/serial/u3g.c projects/tcp_cc_head/sys/dev/usb/serial/uark.c projects/tcp_cc_head/sys/dev/usb/serial/ubser.c projects/tcp_cc_head/sys/dev/usb/serial/uchcom.c projects/tcp_cc_head/sys/dev/usb/serial/ucycom.c projects/tcp_cc_head/sys/dev/usb/serial/ufoma.c projects/tcp_cc_head/sys/dev/usb/serial/uftdi.c projects/tcp_cc_head/sys/dev/usb/serial/ugensa.c projects/tcp_cc_head/sys/dev/usb/serial/uipaq.c projects/tcp_cc_head/sys/dev/usb/serial/umct.c projects/tcp_cc_head/sys/dev/usb/serial/umodem.c projects/tcp_cc_head/sys/dev/usb/serial/uplcom.c projects/tcp_cc_head/sys/dev/usb/serial/usb_serial.c projects/tcp_cc_head/sys/dev/usb/serial/usb_serial.h projects/tcp_cc_head/sys/dev/usb/serial/uslcom.c projects/tcp_cc_head/sys/dev/usb/serial/uvisor.c projects/tcp_cc_head/sys/dev/usb/storage/umass.c projects/tcp_cc_head/sys/dev/usb/template/usb_template.c projects/tcp_cc_head/sys/dev/usb/usb_busdma.c projects/tcp_cc_head/sys/dev/usb/usb_compat_linux.c projects/tcp_cc_head/sys/dev/usb/usb_compat_linux.h projects/tcp_cc_head/sys/dev/usb/usb_core.h projects/tcp_cc_head/sys/dev/usb/usb_debug.c projects/tcp_cc_head/sys/dev/usb/usb_debug.h projects/tcp_cc_head/sys/dev/usb/usb_dev.c projects/tcp_cc_head/sys/dev/usb/usb_device.c projects/tcp_cc_head/sys/dev/usb/usb_dynamic.c projects/tcp_cc_head/sys/dev/usb/usb_dynamic.h projects/tcp_cc_head/sys/dev/usb/usb_generic.c projects/tcp_cc_head/sys/dev/usb/usb_hid.c projects/tcp_cc_head/sys/dev/usb/usb_hub.c projects/tcp_cc_head/sys/dev/usb/usb_hub.h projects/tcp_cc_head/sys/dev/usb/usb_msctest.c projects/tcp_cc_head/sys/dev/usb/usb_msctest.h projects/tcp_cc_head/sys/dev/usb/usb_process.c projects/tcp_cc_head/sys/dev/usb/usb_request.c projects/tcp_cc_head/sys/dev/usb/usb_transfer.c projects/tcp_cc_head/sys/dev/usb/usbdevs projects/tcp_cc_head/sys/dev/usb/usbdi.h projects/tcp_cc_head/sys/dev/usb/wlan/if_rum.c projects/tcp_cc_head/sys/dev/usb/wlan/if_uath.c projects/tcp_cc_head/sys/dev/usb/wlan/if_upgt.c projects/tcp_cc_head/sys/dev/usb/wlan/if_ural.c projects/tcp_cc_head/sys/dev/usb/wlan/if_urtw.c projects/tcp_cc_head/sys/dev/usb/wlan/if_urtwreg.h projects/tcp_cc_head/sys/dev/usb/wlan/if_urtwvar.h projects/tcp_cc_head/sys/dev/usb/wlan/if_zyd.c projects/tcp_cc_head/sys/dev/vge/if_vge.c projects/tcp_cc_head/sys/dev/vge/if_vgereg.h projects/tcp_cc_head/sys/dev/vge/if_vgevar.h projects/tcp_cc_head/sys/dev/vx/if_vx.c projects/tcp_cc_head/sys/dev/vx/if_vxvar.h projects/tcp_cc_head/sys/dev/wb/if_wb.c projects/tcp_cc_head/sys/dev/wb/if_wbreg.h projects/tcp_cc_head/sys/dev/wl/if_wl.c projects/tcp_cc_head/sys/dev/wpi/if_wpi.c projects/tcp_cc_head/sys/dev/xen/blkfront/blkfront.c projects/tcp_cc_head/sys/dev/xen/blkfront/block.h projects/tcp_cc_head/sys/dev/xen/console/console.c projects/tcp_cc_head/sys/dev/xen/netfront/netfront.c projects/tcp_cc_head/sys/dev/xl/if_xl.c projects/tcp_cc_head/sys/fs/cd9660/cd9660_vfsops.c projects/tcp_cc_head/sys/fs/cd9660/cd9660_vnops.c projects/tcp_cc_head/sys/fs/devfs/devfs_vnops.c projects/tcp_cc_head/sys/fs/fifofs/fifo_vnops.c projects/tcp_cc_head/sys/fs/nfs/nfs_commonacl.c projects/tcp_cc_head/sys/fs/nfs/nfs_commonport.c projects/tcp_cc_head/sys/fs/nfs/nfs_commonsubs.c projects/tcp_cc_head/sys/fs/nfs/nfs_var.h projects/tcp_cc_head/sys/fs/nfs/nfsport.h projects/tcp_cc_head/sys/fs/nfsclient/nfs.h projects/tcp_cc_head/sys/fs/nfsclient/nfs_clbio.c projects/tcp_cc_head/sys/fs/nfsclient/nfs_clport.c projects/tcp_cc_head/sys/fs/nfsclient/nfs_clrpcops.c projects/tcp_cc_head/sys/fs/nfsclient/nfs_clstate.c projects/tcp_cc_head/sys/fs/nfsclient/nfs_clsubs.c projects/tcp_cc_head/sys/fs/nfsclient/nfs_clvnops.c projects/tcp_cc_head/sys/fs/nfsserver/nfs_nfsdcache.c projects/tcp_cc_head/sys/fs/nfsserver/nfs_nfsdport.c projects/tcp_cc_head/sys/fs/nfsserver/nfs_nfsdserv.c projects/tcp_cc_head/sys/fs/nfsserver/nfs_nfsdstate.c projects/tcp_cc_head/sys/fs/ntfs/ntfs.h projects/tcp_cc_head/sys/fs/ntfs/ntfs_subr.c projects/tcp_cc_head/sys/fs/ntfs/ntfs_vfsops.c projects/tcp_cc_head/sys/fs/portalfs/portal_vnops.c projects/tcp_cc_head/sys/fs/procfs/procfs_status.c projects/tcp_cc_head/sys/fs/pseudofs/pseudofs_vnops.c projects/tcp_cc_head/sys/fs/smbfs/smbfs_smb.c projects/tcp_cc_head/sys/fs/smbfs/smbfs_vfsops.c projects/tcp_cc_head/sys/fs/tmpfs/tmpfs.h projects/tcp_cc_head/sys/fs/tmpfs/tmpfs_subr.c projects/tcp_cc_head/sys/fs/tmpfs/tmpfs_vfsops.c projects/tcp_cc_head/sys/fs/tmpfs/tmpfs_vnops.c projects/tcp_cc_head/sys/geom/concat/g_concat.c projects/tcp_cc_head/sys/geom/gate/g_gate.c projects/tcp_cc_head/sys/geom/geom_dev.c projects/tcp_cc_head/sys/geom/geom_dump.c projects/tcp_cc_head/sys/geom/geom_io.c projects/tcp_cc_head/sys/geom/geom_slice.c projects/tcp_cc_head/sys/geom/label/g_label.c projects/tcp_cc_head/sys/geom/label/g_label.h projects/tcp_cc_head/sys/geom/label/g_label_ext2fs.c projects/tcp_cc_head/sys/geom/label/g_label_gpt.c projects/tcp_cc_head/sys/geom/label/g_label_iso9660.c projects/tcp_cc_head/sys/geom/label/g_label_msdosfs.c projects/tcp_cc_head/sys/geom/label/g_label_ntfs.c projects/tcp_cc_head/sys/geom/label/g_label_reiserfs.c projects/tcp_cc_head/sys/geom/label/g_label_ufs.c projects/tcp_cc_head/sys/geom/mirror/g_mirror.c projects/tcp_cc_head/sys/geom/mirror/g_mirror.h projects/tcp_cc_head/sys/geom/part/g_part.c projects/tcp_cc_head/sys/geom/part/g_part.h projects/tcp_cc_head/sys/geom/part/g_part_gpt.c projects/tcp_cc_head/sys/geom/raid3/g_raid3.c projects/tcp_cc_head/sys/geom/raid3/g_raid3.h projects/tcp_cc_head/sys/geom/stripe/g_stripe.c projects/tcp_cc_head/sys/geom/uzip/g_uzip.c projects/tcp_cc_head/sys/gnu/fs/reiserfs/reiserfs_fs.h projects/tcp_cc_head/sys/gnu/fs/reiserfs/reiserfs_vfsops.c projects/tcp_cc_head/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c projects/tcp_cc_head/sys/i386/bios/apm.c projects/tcp_cc_head/sys/i386/conf/GENERIC projects/tcp_cc_head/sys/i386/conf/Makefile projects/tcp_cc_head/sys/i386/conf/NOTES projects/tcp_cc_head/sys/i386/conf/PAE projects/tcp_cc_head/sys/i386/cpufreq/est.c projects/tcp_cc_head/sys/i386/i386/bpf_jit_machdep.c projects/tcp_cc_head/sys/i386/i386/bpf_jit_machdep.h projects/tcp_cc_head/sys/i386/i386/elan-mmcr.c projects/tcp_cc_head/sys/i386/i386/identcpu.c projects/tcp_cc_head/sys/i386/i386/initcpu.c projects/tcp_cc_head/sys/i386/i386/intr_machdep.c projects/tcp_cc_head/sys/i386/i386/io.c projects/tcp_cc_head/sys/i386/i386/local_apic.c projects/tcp_cc_head/sys/i386/i386/locore.s projects/tcp_cc_head/sys/i386/i386/machdep.c projects/tcp_cc_head/sys/i386/i386/mca.c projects/tcp_cc_head/sys/i386/i386/mem.c projects/tcp_cc_head/sys/i386/i386/minidump_machdep.c projects/tcp_cc_head/sys/i386/i386/nexus.c projects/tcp_cc_head/sys/i386/i386/pmap.c projects/tcp_cc_head/sys/i386/i386/trap.c projects/tcp_cc_head/sys/i386/i386/vm_machdep.c projects/tcp_cc_head/sys/i386/ibcs2/ibcs2_misc.c projects/tcp_cc_head/sys/i386/include/apicvar.h projects/tcp_cc_head/sys/i386/include/cpufunc.h projects/tcp_cc_head/sys/i386/include/elf.h projects/tcp_cc_head/sys/i386/include/intr_machdep.h projects/tcp_cc_head/sys/i386/include/iodev.h projects/tcp_cc_head/sys/i386/include/mca.h projects/tcp_cc_head/sys/i386/include/pmap.h projects/tcp_cc_head/sys/i386/include/specialreg.h projects/tcp_cc_head/sys/i386/isa/clock.c projects/tcp_cc_head/sys/i386/isa/isa_dma.c projects/tcp_cc_head/sys/i386/linux/linux_machdep.c projects/tcp_cc_head/sys/i386/linux/linux_sysvec.c projects/tcp_cc_head/sys/i386/xbox/xboxfb.c projects/tcp_cc_head/sys/i386/xen/exception.s projects/tcp_cc_head/sys/i386/xen/locore.s projects/tcp_cc_head/sys/i386/xen/mp_machdep.c projects/tcp_cc_head/sys/i386/xen/pmap.c projects/tcp_cc_head/sys/i386/xen/xen_machdep.c projects/tcp_cc_head/sys/ia64/conf/DEFAULTS projects/tcp_cc_head/sys/ia64/conf/GENERIC projects/tcp_cc_head/sys/ia64/conf/Makefile projects/tcp_cc_head/sys/ia64/ia64/clock.c projects/tcp_cc_head/sys/ia64/ia64/db_machdep.c projects/tcp_cc_head/sys/ia64/ia64/efi.c projects/tcp_cc_head/sys/ia64/ia64/exception.S projects/tcp_cc_head/sys/ia64/ia64/genassym.c projects/tcp_cc_head/sys/ia64/ia64/interrupt.c projects/tcp_cc_head/sys/ia64/ia64/machdep.c projects/tcp_cc_head/sys/ia64/ia64/mem.c projects/tcp_cc_head/sys/ia64/ia64/mp_machdep.c projects/tcp_cc_head/sys/ia64/ia64/nexus.c projects/tcp_cc_head/sys/ia64/ia64/pmap.c projects/tcp_cc_head/sys/ia64/ia64/sscdisk.c projects/tcp_cc_head/sys/ia64/ia64/sys_machdep.c projects/tcp_cc_head/sys/ia64/ia64/trap.c projects/tcp_cc_head/sys/ia64/ia64/vm_machdep.c projects/tcp_cc_head/sys/ia64/include/asm.h projects/tcp_cc_head/sys/ia64/include/bus.h projects/tcp_cc_head/sys/ia64/include/clock.h projects/tcp_cc_head/sys/ia64/include/cpufunc.h projects/tcp_cc_head/sys/ia64/include/efi.h projects/tcp_cc_head/sys/ia64/include/elf.h projects/tcp_cc_head/sys/ia64/include/ia64_cpu.h projects/tcp_cc_head/sys/ia64/include/kdb.h projects/tcp_cc_head/sys/ia64/include/mca.h projects/tcp_cc_head/sys/ia64/include/md_var.h projects/tcp_cc_head/sys/ia64/include/param.h projects/tcp_cc_head/sys/ia64/include/pcpu.h projects/tcp_cc_head/sys/ia64/include/pmap.h projects/tcp_cc_head/sys/ia64/include/proc.h projects/tcp_cc_head/sys/ia64/include/sysarch.h projects/tcp_cc_head/sys/isa/pnp.c projects/tcp_cc_head/sys/isa/vga_isa.c projects/tcp_cc_head/sys/kern/bus_if.m projects/tcp_cc_head/sys/kern/imgact_elf.c projects/tcp_cc_head/sys/kern/init_main.c projects/tcp_cc_head/sys/kern/init_sysent.c projects/tcp_cc_head/sys/kern/kern_clock.c projects/tcp_cc_head/sys/kern/kern_conf.c projects/tcp_cc_head/sys/kern/kern_context.c projects/tcp_cc_head/sys/kern/kern_cpu.c projects/tcp_cc_head/sys/kern/kern_cpuset.c projects/tcp_cc_head/sys/kern/kern_descrip.c projects/tcp_cc_head/sys/kern/kern_environment.c projects/tcp_cc_head/sys/kern/kern_event.c projects/tcp_cc_head/sys/kern/kern_exec.c projects/tcp_cc_head/sys/kern/kern_exit.c projects/tcp_cc_head/sys/kern/kern_fail.c projects/tcp_cc_head/sys/kern/kern_idle.c projects/tcp_cc_head/sys/kern/kern_intr.c projects/tcp_cc_head/sys/kern/kern_jail.c projects/tcp_cc_head/sys/kern/kern_kthread.c projects/tcp_cc_head/sys/kern/kern_ktrace.c projects/tcp_cc_head/sys/kern/kern_linker.c projects/tcp_cc_head/sys/kern/kern_lock.c projects/tcp_cc_head/sys/kern/kern_mib.c projects/tcp_cc_head/sys/kern/kern_mutex.c projects/tcp_cc_head/sys/kern/kern_proc.c projects/tcp_cc_head/sys/kern/kern_prot.c projects/tcp_cc_head/sys/kern/kern_rmlock.c projects/tcp_cc_head/sys/kern/kern_shutdown.c projects/tcp_cc_head/sys/kern/kern_sig.c projects/tcp_cc_head/sys/kern/kern_sx.c projects/tcp_cc_head/sys/kern/kern_thr.c projects/tcp_cc_head/sys/kern/kern_thread.c projects/tcp_cc_head/sys/kern/kern_timeout.c projects/tcp_cc_head/sys/kern/kern_umtx.c projects/tcp_cc_head/sys/kern/sched_4bsd.c projects/tcp_cc_head/sys/kern/sched_ule.c projects/tcp_cc_head/sys/kern/stack_protector.c projects/tcp_cc_head/sys/kern/subr_acl_nfs4.c projects/tcp_cc_head/sys/kern/subr_acl_posix1e.c projects/tcp_cc_head/sys/kern/subr_bus.c projects/tcp_cc_head/sys/kern/subr_devstat.c projects/tcp_cc_head/sys/kern/subr_eventhandler.c projects/tcp_cc_head/sys/kern/subr_firmware.c projects/tcp_cc_head/sys/kern/subr_log.c projects/tcp_cc_head/sys/kern/subr_param.c projects/tcp_cc_head/sys/kern/subr_prf.c projects/tcp_cc_head/sys/kern/subr_sleepqueue.c projects/tcp_cc_head/sys/kern/subr_taskqueue.c projects/tcp_cc_head/sys/kern/subr_trap.c projects/tcp_cc_head/sys/kern/subr_turnstile.c projects/tcp_cc_head/sys/kern/subr_witness.c projects/tcp_cc_head/sys/kern/sys_generic.c projects/tcp_cc_head/sys/kern/sys_process.c projects/tcp_cc_head/sys/kern/syscalls.c projects/tcp_cc_head/sys/kern/syscalls.master projects/tcp_cc_head/sys/kern/systrace_args.c projects/tcp_cc_head/sys/kern/sysv_shm.c projects/tcp_cc_head/sys/kern/tty.c projects/tcp_cc_head/sys/kern/tty_compat.c projects/tcp_cc_head/sys/kern/tty_inq.c projects/tcp_cc_head/sys/kern/tty_pts.c projects/tcp_cc_head/sys/kern/tty_ttydisc.c projects/tcp_cc_head/sys/kern/uipc_accf.c projects/tcp_cc_head/sys/kern/uipc_sem.c projects/tcp_cc_head/sys/kern/uipc_syscalls.c projects/tcp_cc_head/sys/kern/vfs_acl.c projects/tcp_cc_head/sys/kern/vfs_lookup.c projects/tcp_cc_head/sys/kern/vfs_mount.c projects/tcp_cc_head/sys/kern/vfs_subr.c projects/tcp_cc_head/sys/kern/vfs_syscalls.c projects/tcp_cc_head/sys/kern/vfs_vnops.c projects/tcp_cc_head/sys/mips/adm5120/adm5120_machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/adm5120/files.adm5120 (contents, props changed) projects/tcp_cc_head/sys/mips/adm5120/if_admsw.c (contents, props changed) projects/tcp_cc_head/sys/mips/adm5120/if_admswvar.h (contents, props changed) projects/tcp_cc_head/sys/mips/adm5120/obio.c (contents, props changed) projects/tcp_cc_head/sys/mips/adm5120/uart_cpu_adm5120.c (contents, props changed) projects/tcp_cc_head/sys/mips/conf/MALTA (contents, props changed) projects/tcp_cc_head/sys/mips/conf/QEMU (contents, props changed) projects/tcp_cc_head/sys/mips/conf/SENTRY5 (contents, props changed) projects/tcp_cc_head/sys/mips/idt/files.idt (contents, props changed) projects/tcp_cc_head/sys/mips/idt/idt_machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/idt/obio.c (contents, props changed) projects/tcp_cc_head/sys/mips/idt/uart_bus_rc32434.c (contents, props changed) projects/tcp_cc_head/sys/mips/idt/uart_cpu_rc32434.c (contents, props changed) projects/tcp_cc_head/sys/mips/include/_align.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/_bus.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/_types.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/asm.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/atomic.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/bus.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/cache.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/cache_mipsNN.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/cpu.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/cpufunc.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/cpuinfo.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/cpuregs.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/db_machdep.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/elf.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/endian.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/float.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/hwfunc.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/intr_machdep.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/kdb.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/locore.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/md_var.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/param.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/pcb.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/pmap.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/proc.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/profile.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/psl.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/pte.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/regdef.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/regnum.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/sysarch.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/trap.h (contents, props changed) projects/tcp_cc_head/sys/mips/include/ucontext.h (contents, props changed) projects/tcp_cc_head/sys/mips/malta/files.malta (contents, props changed) projects/tcp_cc_head/sys/mips/malta/gt_pci.c (contents, props changed) projects/tcp_cc_head/sys/mips/malta/malta_machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/malta/maltareg.h (contents, props changed) projects/tcp_cc_head/sys/mips/malta/obio.c (contents, props changed) projects/tcp_cc_head/sys/mips/malta/std.malta (contents, props changed) projects/tcp_cc_head/sys/mips/malta/uart_bus_maltausart.c (contents, props changed) projects/tcp_cc_head/sys/mips/malta/uart_cpu_maltausart.c (contents, props changed) projects/tcp_cc_head/sys/mips/malta/yamon.h (contents, props changed) projects/tcp_cc_head/sys/mips/mips/busdma_machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/cache.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/cache_mipsNN.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/copystr.S (contents, props changed) projects/tcp_cc_head/sys/mips/mips/cpu.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/db_trace.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/elf_machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/exception.S (contents, props changed) projects/tcp_cc_head/sys/mips/mips/fp.S (contents, props changed) projects/tcp_cc_head/sys/mips/mips/gdb_machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/genassym.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/in_cksum.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/intr_machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/locore.S (contents, props changed) projects/tcp_cc_head/sys/mips/mips/machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/mainbus.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/mem.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/nexus.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/pm_machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/pmap.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/psraccess.S (contents, props changed) projects/tcp_cc_head/sys/mips/mips/support.S (contents, props changed) projects/tcp_cc_head/sys/mips/mips/swtch.S (contents, props changed) projects/tcp_cc_head/sys/mips/mips/tick.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/tlb.S (contents, props changed) projects/tcp_cc_head/sys/mips/mips/trap.c (contents, props changed) projects/tcp_cc_head/sys/mips/mips/vm_machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/sentry5/files.sentry5 (contents, props changed) projects/tcp_cc_head/sys/mips/sentry5/obio.c (contents, props changed) projects/tcp_cc_head/sys/mips/sentry5/s5_machdep.c (contents, props changed) projects/tcp_cc_head/sys/mips/sentry5/uart_bus_sbusart.c (contents, props changed) projects/tcp_cc_head/sys/mips/sentry5/uart_cpu_sbusart.c (contents, props changed) projects/tcp_cc_head/sys/modules/Makefile projects/tcp_cc_head/sys/modules/acpi/acpi/Makefile projects/tcp_cc_head/sys/modules/cam/Makefile projects/tcp_cc_head/sys/modules/crypto/Makefile projects/tcp_cc_head/sys/modules/dpms/Makefile projects/tcp_cc_head/sys/modules/ext2fs/Makefile projects/tcp_cc_head/sys/modules/geom/Makefile projects/tcp_cc_head/sys/modules/ichwd/Makefile projects/tcp_cc_head/sys/modules/ipfw/Makefile projects/tcp_cc_head/sys/modules/iwnfw/Makefile projects/tcp_cc_head/sys/modules/pf/Makefile projects/tcp_cc_head/sys/modules/ubser/Makefile projects/tcp_cc_head/sys/modules/usb/Makefile projects/tcp_cc_head/sys/modules/usb/ucom/Makefile projects/tcp_cc_head/sys/modules/vesa/Makefile projects/tcp_cc_head/sys/modules/x86bios/Makefile projects/tcp_cc_head/sys/net/bpf.c projects/tcp_cc_head/sys/net/bpf_jitter.c projects/tcp_cc_head/sys/net/bpf_jitter.h projects/tcp_cc_head/sys/net/flowtable.c projects/tcp_cc_head/sys/net/if.c projects/tcp_cc_head/sys/net/if.h projects/tcp_cc_head/sys/net/if_bridge.c projects/tcp_cc_head/sys/net/if_dead.c projects/tcp_cc_head/sys/net/if_ef.c projects/tcp_cc_head/sys/net/if_enc.c projects/tcp_cc_head/sys/net/if_epair.c projects/tcp_cc_head/sys/net/if_ethersubr.c projects/tcp_cc_head/sys/net/if_gif.c projects/tcp_cc_head/sys/net/if_lagg.c projects/tcp_cc_head/sys/net/if_llatbl.c projects/tcp_cc_head/sys/net/if_llatbl.h projects/tcp_cc_head/sys/net/if_var.h projects/tcp_cc_head/sys/net/if_vlan.c projects/tcp_cc_head/sys/net/netisr.c projects/tcp_cc_head/sys/net/pfil.c projects/tcp_cc_head/sys/net/pfil.h projects/tcp_cc_head/sys/net/radix.c projects/tcp_cc_head/sys/net/radix.h projects/tcp_cc_head/sys/net/route.c projects/tcp_cc_head/sys/net/route.h projects/tcp_cc_head/sys/net/rtsock.c projects/tcp_cc_head/sys/net80211/ieee80211.c projects/tcp_cc_head/sys/net80211/ieee80211_action.c projects/tcp_cc_head/sys/net80211/ieee80211_freebsd.c projects/tcp_cc_head/sys/net80211/ieee80211_hostap.c projects/tcp_cc_head/sys/net80211/ieee80211_hwmp.c projects/tcp_cc_head/sys/net80211/ieee80211_ioctl.c projects/tcp_cc_head/sys/net80211/ieee80211_ioctl.h projects/tcp_cc_head/sys/net80211/ieee80211_mesh.c projects/tcp_cc_head/sys/net80211/ieee80211_mesh.h projects/tcp_cc_head/sys/net80211/ieee80211_node.c projects/tcp_cc_head/sys/net80211/ieee80211_output.c projects/tcp_cc_head/sys/net80211/ieee80211_proto.h projects/tcp_cc_head/sys/net80211/ieee80211_var.h projects/tcp_cc_head/sys/netgraph/NOTES projects/tcp_cc_head/sys/netgraph/atm/uni/ng_uni.c projects/tcp_cc_head/sys/netgraph/ng_base.c projects/tcp_cc_head/sys/netgraph/ng_bridge.c projects/tcp_cc_head/sys/netgraph/ng_eiface.c projects/tcp_cc_head/sys/netgraph/ng_ether.c projects/tcp_cc_head/sys/netgraph/ng_fec.c projects/tcp_cc_head/sys/netgraph/ng_iface.c projects/tcp_cc_head/sys/netgraph/ng_ipfw.c projects/tcp_cc_head/sys/netgraph/ng_ipfw.h projects/tcp_cc_head/sys/netgraph/ng_sppp.c projects/tcp_cc_head/sys/netinet/if_ether.c projects/tcp_cc_head/sys/netinet/in.c projects/tcp_cc_head/sys/netinet/in.h projects/tcp_cc_head/sys/netinet/in_mcast.c projects/tcp_cc_head/sys/netinet/in_pcb.c projects/tcp_cc_head/sys/netinet/ip_carp.c projects/tcp_cc_head/sys/netinet/ip_divert.c projects/tcp_cc_head/sys/netinet/ip_divert.h projects/tcp_cc_head/sys/netinet/ip_dummynet.h projects/tcp_cc_head/sys/netinet/ip_encap.c projects/tcp_cc_head/sys/netinet/ip_fastfwd.c projects/tcp_cc_head/sys/netinet/ip_fw.h projects/tcp_cc_head/sys/netinet/ip_icmp.c projects/tcp_cc_head/sys/netinet/ip_input.c projects/tcp_cc_head/sys/netinet/ip_ipsec.c projects/tcp_cc_head/sys/netinet/ip_ipsec.h projects/tcp_cc_head/sys/netinet/ip_mroute.c projects/tcp_cc_head/sys/netinet/ip_output.c projects/tcp_cc_head/sys/netinet/ip_var.h projects/tcp_cc_head/sys/netinet/ipfw/ip_dummynet.c projects/tcp_cc_head/sys/netinet/ipfw/ip_fw2.c projects/tcp_cc_head/sys/netinet/ipfw/ip_fw_nat.c projects/tcp_cc_head/sys/netinet/ipfw/ip_fw_pfil.c projects/tcp_cc_head/sys/netinet/libalias/alias.c projects/tcp_cc_head/sys/netinet/libalias/alias_db.c projects/tcp_cc_head/sys/netinet/libalias/alias_mod.c projects/tcp_cc_head/sys/netinet/libalias/alias_proxy.c projects/tcp_cc_head/sys/netinet/raw_ip.c projects/tcp_cc_head/sys/netinet/sctp_asconf.c projects/tcp_cc_head/sys/netinet/sctp_auth.c projects/tcp_cc_head/sys/netinet/sctp_auth.h projects/tcp_cc_head/sys/netinet/sctp_bsd_addr.c projects/tcp_cc_head/sys/netinet/sctp_cc_functions.c projects/tcp_cc_head/sys/netinet/sctp_constants.h projects/tcp_cc_head/sys/netinet/sctp_header.h projects/tcp_cc_head/sys/netinet/sctp_indata.c projects/tcp_cc_head/sys/netinet/sctp_indata.h projects/tcp_cc_head/sys/netinet/sctp_input.c projects/tcp_cc_head/sys/netinet/sctp_os_bsd.h projects/tcp_cc_head/sys/netinet/sctp_output.c projects/tcp_cc_head/sys/netinet/sctp_pcb.c projects/tcp_cc_head/sys/netinet/sctp_structs.h projects/tcp_cc_head/sys/netinet/sctp_sysctl.c projects/tcp_cc_head/sys/netinet/sctp_uio.h projects/tcp_cc_head/sys/netinet/sctp_usrreq.c projects/tcp_cc_head/sys/netinet/sctputil.c projects/tcp_cc_head/sys/netinet/tcp.h projects/tcp_cc_head/sys/netinet/tcp_output.c projects/tcp_cc_head/sys/netinet/tcp_usrreq.c projects/tcp_cc_head/sys/netinet/tcp_var.h projects/tcp_cc_head/sys/netinet6/icmp6.c projects/tcp_cc_head/sys/netinet6/in6.c projects/tcp_cc_head/sys/netinet6/in6_ifattach.c projects/tcp_cc_head/sys/netinet6/in6_mcast.c projects/tcp_cc_head/sys/netinet6/in6_pcb.c projects/tcp_cc_head/sys/netinet6/in6_proto.c projects/tcp_cc_head/sys/netinet6/in6_src.c projects/tcp_cc_head/sys/netinet6/ip6_forward.c projects/tcp_cc_head/sys/netinet6/ip6_input.c projects/tcp_cc_head/sys/netinet6/ip6_output.c projects/tcp_cc_head/sys/netinet6/ip6_var.h projects/tcp_cc_head/sys/netinet6/mld6.c projects/tcp_cc_head/sys/netinet6/mld6_var.h projects/tcp_cc_head/sys/netinet6/nd6.c projects/tcp_cc_head/sys/netinet6/nd6_rtr.c projects/tcp_cc_head/sys/netinet6/raw_ip6.c projects/tcp_cc_head/sys/netipsec/ipcomp_var.h projects/tcp_cc_head/sys/netipsec/ipsec_mbuf.c projects/tcp_cc_head/sys/netipsec/key.c projects/tcp_cc_head/sys/netipsec/xform_ipcomp.c projects/tcp_cc_head/sys/nfsclient/bootp_subr.c projects/tcp_cc_head/sys/nfsclient/krpc_subr.c projects/tcp_cc_head/sys/nfsclient/nfs_kdtrace.c projects/tcp_cc_head/sys/nfsclient/nfs_vfsops.c projects/tcp_cc_head/sys/nfsclient/nfs_vnops.c projects/tcp_cc_head/sys/nfsclient/nfsmount.h projects/tcp_cc_head/sys/nfsclient/nfsnode.h projects/tcp_cc_head/sys/nfsserver/nfs.h projects/tcp_cc_head/sys/nfsserver/nfs_fha.c projects/tcp_cc_head/sys/nfsserver/nfs_serv.c projects/tcp_cc_head/sys/nfsserver/nfs_srvkrpc.c projects/tcp_cc_head/sys/opencrypto/crypto.c projects/tcp_cc_head/sys/opencrypto/cryptosoft.c projects/tcp_cc_head/sys/opencrypto/deflate.c projects/tcp_cc_head/sys/opencrypto/deflate.h projects/tcp_cc_head/sys/pc98/cbus/cbus_dma.c projects/tcp_cc_head/sys/pc98/cbus/clock.c projects/tcp_cc_head/sys/pc98/cbus/gdc.c projects/tcp_cc_head/sys/pc98/cbus/scterm-sck.c projects/tcp_cc_head/sys/pc98/conf/DEFAULTS projects/tcp_cc_head/sys/pc98/conf/GENERIC projects/tcp_cc_head/sys/pc98/conf/Makefile projects/tcp_cc_head/sys/pc98/conf/NOTES projects/tcp_cc_head/sys/pc98/pc98/machdep.c projects/tcp_cc_head/sys/pci/ncr.c projects/tcp_cc_head/sys/pci/nfsmb.c projects/tcp_cc_head/sys/powerpc/aim/clock.c projects/tcp_cc_head/sys/powerpc/aim/copyinout.c projects/tcp_cc_head/sys/powerpc/aim/machdep.c projects/tcp_cc_head/sys/powerpc/aim/mmu_oea.c projects/tcp_cc_head/sys/powerpc/aim/mmu_oea64.c projects/tcp_cc_head/sys/powerpc/aim/mp_cpudep.c projects/tcp_cc_head/sys/powerpc/aim/ofw_machdep.c projects/tcp_cc_head/sys/powerpc/aim/platform_chrp.c projects/tcp_cc_head/sys/powerpc/aim/swtch.S projects/tcp_cc_head/sys/powerpc/aim/trap.c projects/tcp_cc_head/sys/powerpc/aim/trap_subr.S projects/tcp_cc_head/sys/powerpc/aim/vm_machdep.c projects/tcp_cc_head/sys/powerpc/booke/clock.c projects/tcp_cc_head/sys/powerpc/booke/machdep.c projects/tcp_cc_head/sys/powerpc/booke/mp_cpudep.c projects/tcp_cc_head/sys/powerpc/booke/pmap.c projects/tcp_cc_head/sys/powerpc/booke/trap.c projects/tcp_cc_head/sys/powerpc/booke/vm_machdep.c projects/tcp_cc_head/sys/powerpc/conf/GENERIC projects/tcp_cc_head/sys/powerpc/conf/Makefile projects/tcp_cc_head/sys/powerpc/include/cpu.h projects/tcp_cc_head/sys/powerpc/include/elf.h projects/tcp_cc_head/sys/powerpc/include/hid.h projects/tcp_cc_head/sys/powerpc/include/md_var.h projects/tcp_cc_head/sys/powerpc/include/pcpu.h projects/tcp_cc_head/sys/powerpc/include/pmap.h projects/tcp_cc_head/sys/powerpc/include/smp.h projects/tcp_cc_head/sys/powerpc/include/spr.h projects/tcp_cc_head/sys/powerpc/include/vmparam.h projects/tcp_cc_head/sys/powerpc/mpc85xx/pci_ocp.c projects/tcp_cc_head/sys/powerpc/ofw/ofw_syscons.c projects/tcp_cc_head/sys/powerpc/powermac/ata_dbdma.c projects/tcp_cc_head/sys/powerpc/powermac/ata_kauai.c projects/tcp_cc_head/sys/powerpc/powermac/ata_macio.c projects/tcp_cc_head/sys/powerpc/powermac/hrowpic.c projects/tcp_cc_head/sys/powerpc/powerpc/cpu.c projects/tcp_cc_head/sys/powerpc/powerpc/mem.c projects/tcp_cc_head/sys/powerpc/powerpc/mmu_if.m projects/tcp_cc_head/sys/powerpc/powerpc/mp_machdep.c projects/tcp_cc_head/sys/powerpc/powerpc/pmap_dispatch.c projects/tcp_cc_head/sys/powerpc/powerpc/stack_machdep.c projects/tcp_cc_head/sys/powerpc/powerpc/uio_machdep.c projects/tcp_cc_head/sys/powerpc/psim/ata_iobus.c projects/tcp_cc_head/sys/rpc/authunix_prot.c projects/tcp_cc_head/sys/rpc/clnt_dg.c projects/tcp_cc_head/sys/rpc/clnt_vc.c projects/tcp_cc_head/sys/rpc/rpcsec_gss/rpcsec_gss_prot.c projects/tcp_cc_head/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c projects/tcp_cc_head/sys/security/audit/audit_arg.c projects/tcp_cc_head/sys/security/mac_lomac/mac_lomac.c projects/tcp_cc_head/sys/sparc64/central/central.c projects/tcp_cc_head/sys/sparc64/conf/GENERIC projects/tcp_cc_head/sys/sparc64/conf/Makefile projects/tcp_cc_head/sys/sparc64/conf/NOTES projects/tcp_cc_head/sys/sparc64/ebus/ebus.c projects/tcp_cc_head/sys/sparc64/fhc/fhc.c projects/tcp_cc_head/sys/sparc64/include/bus_common.h projects/tcp_cc_head/sys/sparc64/include/elf.h projects/tcp_cc_head/sys/sparc64/include/in_cksum.h projects/tcp_cc_head/sys/sparc64/include/intr_machdep.h projects/tcp_cc_head/sys/sparc64/include/iommureg.h projects/tcp_cc_head/sys/sparc64/include/iommuvar.h projects/tcp_cc_head/sys/sparc64/include/pcb.h projects/tcp_cc_head/sys/sparc64/isa/ofw_isa.c projects/tcp_cc_head/sys/sparc64/pci/apb.c projects/tcp_cc_head/sys/sparc64/pci/ofw_pci.h projects/tcp_cc_head/sys/sparc64/pci/ofw_pcib.c projects/tcp_cc_head/sys/sparc64/pci/ofw_pcibus.c projects/tcp_cc_head/sys/sparc64/pci/psycho.c projects/tcp_cc_head/sys/sparc64/pci/psychovar.h projects/tcp_cc_head/sys/sparc64/pci/schizo.c projects/tcp_cc_head/sys/sparc64/pci/schizovar.h projects/tcp_cc_head/sys/sparc64/sbus/dma_sbus.c projects/tcp_cc_head/sys/sparc64/sbus/sbus.c projects/tcp_cc_head/sys/sparc64/sparc64/eeprom.c projects/tcp_cc_head/sys/sparc64/sparc64/identcpu.c projects/tcp_cc_head/sys/sparc64/sparc64/interrupt.S projects/tcp_cc_head/sys/sparc64/sparc64/intr_machdep.c projects/tcp_cc_head/sys/sparc64/sparc64/iommu.c projects/tcp_cc_head/sys/sparc64/sparc64/machdep.c projects/tcp_cc_head/sys/sparc64/sparc64/nexus.c projects/tcp_cc_head/sys/sparc64/sparc64/ofw_machdep.c projects/tcp_cc_head/sys/sparc64/sparc64/pmap.c projects/tcp_cc_head/sys/sparc64/sparc64/rtc.c projects/tcp_cc_head/sys/sparc64/sparc64/stack_machdep.c projects/tcp_cc_head/sys/sparc64/sparc64/trap.c projects/tcp_cc_head/sys/sparc64/sparc64/upa.c projects/tcp_cc_head/sys/sparc64/sparc64/vm_machdep.c projects/tcp_cc_head/sys/sun4v/conf/GENERIC projects/tcp_cc_head/sys/sun4v/conf/Makefile projects/tcp_cc_head/sys/sun4v/conf/NOTES projects/tcp_cc_head/sys/sun4v/include/elf.h projects/tcp_cc_head/sys/sun4v/sun4v/machdep.c projects/tcp_cc_head/sys/sun4v/sun4v/pmap.c projects/tcp_cc_head/sys/sun4v/sun4v/stack_machdep.c projects/tcp_cc_head/sys/sun4v/sun4v/trap.c projects/tcp_cc_head/sys/sun4v/sun4v/vm_machdep.c projects/tcp_cc_head/sys/sys/_lockmgr.h projects/tcp_cc_head/sys/sys/_semaphore.h projects/tcp_cc_head/sys/sys/aac_ioctl.h projects/tcp_cc_head/sys/sys/acl.h projects/tcp_cc_head/sys/sys/apm.h projects/tcp_cc_head/sys/sys/ata.h projects/tcp_cc_head/sys/sys/bio.h projects/tcp_cc_head/sys/sys/bus.h projects/tcp_cc_head/sys/sys/cdefs.h projects/tcp_cc_head/sys/sys/conf.h projects/tcp_cc_head/sys/sys/copyright.h projects/tcp_cc_head/sys/sys/disk.h projects/tcp_cc_head/sys/sys/elf_common.h projects/tcp_cc_head/sys/sys/event.h projects/tcp_cc_head/sys/sys/fbio.h projects/tcp_cc_head/sys/sys/file.h projects/tcp_cc_head/sys/sys/gpt.h projects/tcp_cc_head/sys/sys/interrupt.h projects/tcp_cc_head/sys/sys/jail.h projects/tcp_cc_head/sys/sys/kernel.h projects/tcp_cc_head/sys/sys/kthread.h projects/tcp_cc_head/sys/sys/ktrace.h projects/tcp_cc_head/sys/sys/mman.h projects/tcp_cc_head/sys/sys/mount.h projects/tcp_cc_head/sys/sys/msgbuf.h projects/tcp_cc_head/sys/sys/param.h projects/tcp_cc_head/sys/sys/pmc.h projects/tcp_cc_head/sys/sys/proc.h projects/tcp_cc_head/sys/sys/sdt.h projects/tcp_cc_head/sys/sys/signal.h projects/tcp_cc_head/sys/sys/signalvar.h projects/tcp_cc_head/sys/sys/sleepqueue.h projects/tcp_cc_head/sys/sys/socket.h projects/tcp_cc_head/sys/sys/syscall.h projects/tcp_cc_head/sys/sys/syscall.mk projects/tcp_cc_head/sys/sys/syscallsubr.h projects/tcp_cc_head/sys/sys/sysproto.h projects/tcp_cc_head/sys/sys/systm.h projects/tcp_cc_head/sys/sys/termios.h projects/tcp_cc_head/sys/sys/time.h projects/tcp_cc_head/sys/sys/tty.h projects/tcp_cc_head/sys/sys/ttydevsw.h projects/tcp_cc_head/sys/sys/ttyqueue.h projects/tcp_cc_head/sys/sys/umtx.h projects/tcp_cc_head/sys/sys/vnode.h projects/tcp_cc_head/sys/teken/teken.c projects/tcp_cc_head/sys/teken/teken.h projects/tcp_cc_head/sys/teken/teken_subr.h projects/tcp_cc_head/sys/tools/fw_stub.awk projects/tcp_cc_head/sys/tools/makeobjops.awk projects/tcp_cc_head/sys/ufs/ffs/ffs_alloc.c projects/tcp_cc_head/sys/ufs/ffs/ffs_rawread.c projects/tcp_cc_head/sys/ufs/ffs/ffs_snapshot.c projects/tcp_cc_head/sys/ufs/ffs/ffs_vfsops.c projects/tcp_cc_head/sys/ufs/ffs/fs.h projects/tcp_cc_head/sys/ufs/ufs/acl.h projects/tcp_cc_head/sys/ufs/ufs/ufs_acl.c projects/tcp_cc_head/sys/ufs/ufs/ufs_dirhash.c projects/tcp_cc_head/sys/ufs/ufs/ufs_lookup.c projects/tcp_cc_head/sys/ufs/ufs/ufs_vnops.c projects/tcp_cc_head/sys/vm/device_pager.c projects/tcp_cc_head/sys/vm/pmap.h projects/tcp_cc_head/sys/vm/swap_pager.c projects/tcp_cc_head/sys/vm/uma_core.c projects/tcp_cc_head/sys/vm/uma_int.h projects/tcp_cc_head/sys/vm/vm.h projects/tcp_cc_head/sys/vm/vm_extern.h projects/tcp_cc_head/sys/vm/vm_fault.c projects/tcp_cc_head/sys/vm/vm_glue.c projects/tcp_cc_head/sys/vm/vm_map.c projects/tcp_cc_head/sys/vm/vm_map.h projects/tcp_cc_head/sys/vm/vm_object.c projects/tcp_cc_head/sys/vm/vm_object.h projects/tcp_cc_head/sys/vm/vm_pageout.c projects/tcp_cc_head/sys/vm/vm_zeroidle.c projects/tcp_cc_head/sys/vm/vnode_pager.c projects/tcp_cc_head/sys/xen/gnttab.c projects/tcp_cc_head/sys/xen/xenbus/xenbus_probe.c projects/tcp_cc_head/tools/build/mk/OptionalObsoleteFiles.inc projects/tcp_cc_head/tools/regression/acct/Makefile projects/tcp_cc_head/tools/regression/acct/regress.t (contents, props changed) projects/tcp_cc_head/tools/regression/acltools/tools-crossfs.test projects/tcp_cc_head/tools/regression/bin/date/regress.sh projects/tcp_cc_head/tools/regression/bin/mv/regress.sh projects/tcp_cc_head/tools/regression/bin/sh/builtins/cd1.0 projects/tcp_cc_head/tools/regression/bin/sh/errors/backquote-error1.0 projects/tcp_cc_head/tools/regression/bpf/bpf_filter/Makefile projects/tcp_cc_head/tools/regression/bpf/bpf_filter/bpf_test.c projects/tcp_cc_head/tools/regression/bpf/bpf_filter/tests/test0075.h projects/tcp_cc_head/tools/regression/bpf/bpf_filter/tests/test0076.h projects/tcp_cc_head/tools/regression/bpf/bpf_filter/tests/test0077.h projects/tcp_cc_head/tools/regression/bpf/bpf_filter/tests/test0078.h projects/tcp_cc_head/tools/regression/bpf/bpf_filter/tests/test0080.h projects/tcp_cc_head/tools/regression/environ/Makefile.envctl projects/tcp_cc_head/tools/regression/environ/envctl.c projects/tcp_cc_head/tools/regression/environ/envtest.t projects/tcp_cc_head/tools/regression/fifo/fifo_misc/fifo_misc.c projects/tcp_cc_head/tools/regression/fstest/tests/rename/21.t projects/tcp_cc_head/tools/regression/geom/ConfCmp/ConfCmp.c projects/tcp_cc_head/tools/regression/lib/libc/gen/test-wordexp.c projects/tcp_cc_head/tools/regression/lib/libutil/Makefile projects/tcp_cc_head/tools/regression/lib/libutil/test-flopen.c projects/tcp_cc_head/tools/regression/lib/libutil/test-grp.c projects/tcp_cc_head/tools/regression/lib/libutil/test-trimdomain-nodomain.c projects/tcp_cc_head/tools/regression/lib/libutil/test-trimdomain.c projects/tcp_cc_head/tools/regression/sigqueue/sigqtest1/sigqtest1.c projects/tcp_cc_head/tools/regression/sigqueue/sigqtest2/sigqtest2.c projects/tcp_cc_head/tools/regression/usr.bin/Makefile projects/tcp_cc_head/tools/regression/usr.bin/calendar/regress.sh projects/tcp_cc_head/tools/regression/usr.bin/jot/regress.sh projects/tcp_cc_head/tools/regression/usr.bin/lastcomm/values.sh projects/tcp_cc_head/tools/regression/usr.bin/make/common.sh projects/tcp_cc_head/tools/regression/usr.bin/pkill/pgrep-t.t projects/tcp_cc_head/tools/regression/usr.bin/pkill/pkill-t.t projects/tcp_cc_head/tools/regression/usr.bin/sed/multitest.t projects/tcp_cc_head/tools/tools/README projects/tcp_cc_head/tools/tools/ath/athdecode/main.c projects/tcp_cc_head/tools/tools/nanobsd/gateworks/Files/root/.profile projects/tcp_cc_head/tools/tools/nanobsd/rescue/Files/etc/ttys projects/tcp_cc_head/tools/tools/ncpus/acpi.c projects/tcp_cc_head/tools/tools/netrate/netsend/netsend.c projects/tcp_cc_head/tools/tools/sysbuild/sysbuild.sh projects/tcp_cc_head/tools/tools/tinybsd/conf/wrap/etc/ttys projects/tcp_cc_head/tools/tools/tinybsd/tinybsd projects/tcp_cc_head/usr.bin/Makefile projects/tcp_cc_head/usr.bin/Makefile.inc projects/tcp_cc_head/usr.bin/apply/Makefile projects/tcp_cc_head/usr.bin/ar/Makefile projects/tcp_cc_head/usr.bin/ar/acpyacc.y projects/tcp_cc_head/usr.bin/ar/ar.c projects/tcp_cc_head/usr.bin/ar/read.c projects/tcp_cc_head/usr.bin/at/Makefile projects/tcp_cc_head/usr.bin/at/at.c projects/tcp_cc_head/usr.bin/at/at.man projects/tcp_cc_head/usr.bin/atm/sscop/Makefile projects/tcp_cc_head/usr.bin/awk/Makefile projects/tcp_cc_head/usr.bin/banner/banner.c projects/tcp_cc_head/usr.bin/biff/biff.c projects/tcp_cc_head/usr.bin/bluetooth/bthost/Makefile projects/tcp_cc_head/usr.bin/brandelf/brandelf.1 projects/tcp_cc_head/usr.bin/bsdiff/Makefile.inc projects/tcp_cc_head/usr.bin/bsdiff/bsdiff/bsdiff.1 projects/tcp_cc_head/usr.bin/bsdiff/bspatch/bspatch.1 projects/tcp_cc_head/usr.bin/bzip2/Makefile projects/tcp_cc_head/usr.bin/calendar/Makefile projects/tcp_cc_head/usr.bin/calendar/calendar.c projects/tcp_cc_head/usr.bin/calendar/calendars/calendar.all projects/tcp_cc_head/usr.bin/calendar/calendars/calendar.dutch projects/tcp_cc_head/usr.bin/calendar/calendars/calendar.freebsd projects/tcp_cc_head/usr.bin/calendar/day.c projects/tcp_cc_head/usr.bin/calendar/io.c projects/tcp_cc_head/usr.bin/calendar/ostern.c projects/tcp_cc_head/usr.bin/calendar/paskha.c projects/tcp_cc_head/usr.bin/catman/Makefile projects/tcp_cc_head/usr.bin/catman/catman.c projects/tcp_cc_head/usr.bin/chkey/Makefile projects/tcp_cc_head/usr.bin/chpass/Makefile projects/tcp_cc_head/usr.bin/chpass/chpass.1 projects/tcp_cc_head/usr.bin/colldef/Makefile projects/tcp_cc_head/usr.bin/comm/comm.1 projects/tcp_cc_head/usr.bin/comm/comm.c projects/tcp_cc_head/usr.bin/compile_et/Makefile projects/tcp_cc_head/usr.bin/compress/Makefile projects/tcp_cc_head/usr.bin/cpio/Makefile projects/tcp_cc_head/usr.bin/cpio/test/Makefile projects/tcp_cc_head/usr.bin/cpuset/Makefile projects/tcp_cc_head/usr.bin/ctags/ctags.c projects/tcp_cc_head/usr.bin/ctags/fortran.c projects/tcp_cc_head/usr.bin/dig/Makefile projects/tcp_cc_head/usr.bin/du/Makefile projects/tcp_cc_head/usr.bin/elf2aout/Makefile projects/tcp_cc_head/usr.bin/elfdump/Makefile projects/tcp_cc_head/usr.bin/elfdump/elfdump.1 projects/tcp_cc_head/usr.bin/env/Makefile projects/tcp_cc_head/usr.bin/fetch/Makefile projects/tcp_cc_head/usr.bin/fetch/fetch.c projects/tcp_cc_head/usr.bin/file2c/Makefile projects/tcp_cc_head/usr.bin/find/Makefile projects/tcp_cc_head/usr.bin/find/function.c projects/tcp_cc_head/usr.bin/finger/Makefile projects/tcp_cc_head/usr.bin/finger/extern.h projects/tcp_cc_head/usr.bin/finger/finger.1 projects/tcp_cc_head/usr.bin/finger/finger.c projects/tcp_cc_head/usr.bin/finger/finger.h projects/tcp_cc_head/usr.bin/finger/lprint.c projects/tcp_cc_head/usr.bin/finger/net.c projects/tcp_cc_head/usr.bin/finger/sprint.c projects/tcp_cc_head/usr.bin/finger/util.c projects/tcp_cc_head/usr.bin/fstat/Makefile projects/tcp_cc_head/usr.bin/fsync/Makefile projects/tcp_cc_head/usr.bin/ftp/Makefile projects/tcp_cc_head/usr.bin/gcore/Makefile projects/tcp_cc_head/usr.bin/gcore/elfcore.c projects/tcp_cc_head/usr.bin/gcore/gcore.1 projects/tcp_cc_head/usr.bin/gcore/gcore.c projects/tcp_cc_head/usr.bin/gencat/Makefile projects/tcp_cc_head/usr.bin/gencat/gencat.c projects/tcp_cc_head/usr.bin/getent/Makefile projects/tcp_cc_head/usr.bin/getent/getent.1 projects/tcp_cc_head/usr.bin/getent/getent.c projects/tcp_cc_head/usr.bin/gprof/Makefile projects/tcp_cc_head/usr.bin/gprof/aout.c projects/tcp_cc_head/usr.bin/gzip/Makefile projects/tcp_cc_head/usr.bin/gzip/unbzip2.c projects/tcp_cc_head/usr.bin/head/Makefile projects/tcp_cc_head/usr.bin/hexdump/Makefile projects/tcp_cc_head/usr.bin/host/Makefile projects/tcp_cc_head/usr.bin/id/Makefile projects/tcp_cc_head/usr.bin/ipcrm/Makefile projects/tcp_cc_head/usr.bin/ipcs/Makefile projects/tcp_cc_head/usr.bin/kdump/Makefile projects/tcp_cc_head/usr.bin/kdump/kdump.c projects/tcp_cc_head/usr.bin/keylogin/Makefile projects/tcp_cc_head/usr.bin/killall/killall.1 projects/tcp_cc_head/usr.bin/ktrace/Makefile projects/tcp_cc_head/usr.bin/ktrdump/Makefile projects/tcp_cc_head/usr.bin/lam/lam.c projects/tcp_cc_head/usr.bin/last/Makefile projects/tcp_cc_head/usr.bin/last/last.1 projects/tcp_cc_head/usr.bin/last/last.c projects/tcp_cc_head/usr.bin/lastcomm/Makefile projects/tcp_cc_head/usr.bin/lastcomm/lastcomm.c projects/tcp_cc_head/usr.bin/lastcomm/pathnames.h projects/tcp_cc_head/usr.bin/ldd/Makefile projects/tcp_cc_head/usr.bin/ldd/ldd.1 projects/tcp_cc_head/usr.bin/leave/Makefile projects/tcp_cc_head/usr.bin/leave/leave.c projects/tcp_cc_head/usr.bin/less/Makefile.common projects/tcp_cc_head/usr.bin/lex/Makefile projects/tcp_cc_head/usr.bin/lex/flex.skl projects/tcp_cc_head/usr.bin/lex/initscan.c projects/tcp_cc_head/usr.bin/lex/lib/Makefile projects/tcp_cc_head/usr.bin/limits/Makefile projects/tcp_cc_head/usr.bin/locale/Makefile projects/tcp_cc_head/usr.bin/locate/Makefile.inc projects/tcp_cc_head/usr.bin/locate/locate/Makefile projects/tcp_cc_head/usr.bin/lock/Makefile projects/tcp_cc_head/usr.bin/logger/Makefile projects/tcp_cc_head/usr.bin/logger/logger.c projects/tcp_cc_head/usr.bin/login/Makefile projects/tcp_cc_head/usr.bin/login/login.c projects/tcp_cc_head/usr.bin/login/login_fbtab.c projects/tcp_cc_head/usr.bin/logins/Makefile projects/tcp_cc_head/usr.bin/logname/Makefile projects/tcp_cc_head/usr.bin/look/Makefile projects/tcp_cc_head/usr.bin/lsvfs/Makefile projects/tcp_cc_head/usr.bin/m4/Makefile projects/tcp_cc_head/usr.bin/mail/Makefile projects/tcp_cc_head/usr.bin/make/Makefile projects/tcp_cc_head/usr.bin/make/arch.c projects/tcp_cc_head/usr.bin/make/dir.c projects/tcp_cc_head/usr.bin/make/dir.h projects/tcp_cc_head/usr.bin/make/for.c projects/tcp_cc_head/usr.bin/make/globals.h projects/tcp_cc_head/usr.bin/make/job.c projects/tcp_cc_head/usr.bin/make/lst.c projects/tcp_cc_head/usr.bin/make/lst.h projects/tcp_cc_head/usr.bin/make/main.c projects/tcp_cc_head/usr.bin/make/make.1 projects/tcp_cc_head/usr.bin/make/make.c projects/tcp_cc_head/usr.bin/make/parse.c projects/tcp_cc_head/usr.bin/make/proc.c projects/tcp_cc_head/usr.bin/make/str.c projects/tcp_cc_head/usr.bin/make/targ.c projects/tcp_cc_head/usr.bin/make/var.c projects/tcp_cc_head/usr.bin/makewhatis/makewhatis.c projects/tcp_cc_head/usr.bin/minigzip/Makefile projects/tcp_cc_head/usr.bin/mkfifo/Makefile projects/tcp_cc_head/usr.bin/mklocale/Makefile projects/tcp_cc_head/usr.bin/mklocale/lex.l projects/tcp_cc_head/usr.bin/mklocale/yacc.y projects/tcp_cc_head/usr.bin/mkstr/Makefile projects/tcp_cc_head/usr.bin/mktemp/mktemp.c projects/tcp_cc_head/usr.bin/mkuzip/Makefile projects/tcp_cc_head/usr.bin/msgs/Makefile projects/tcp_cc_head/usr.bin/nc/Makefile projects/tcp_cc_head/usr.bin/ncplist/Makefile projects/tcp_cc_head/usr.bin/ncplist/ncplist.1 projects/tcp_cc_head/usr.bin/netstat/if.c projects/tcp_cc_head/usr.bin/netstat/ipsec.c projects/tcp_cc_head/usr.bin/netstat/main.c projects/tcp_cc_head/usr.bin/netstat/netstat.1 projects/tcp_cc_head/usr.bin/netstat/netstat.h projects/tcp_cc_head/usr.bin/netstat/route.c projects/tcp_cc_head/usr.bin/newkey/Makefile projects/tcp_cc_head/usr.bin/nfsstat/Makefile projects/tcp_cc_head/usr.bin/nl/Makefile projects/tcp_cc_head/usr.bin/nohup/Makefile projects/tcp_cc_head/usr.bin/nslookup/Makefile projects/tcp_cc_head/usr.bin/nsupdate/Makefile projects/tcp_cc_head/usr.bin/opieinfo/Makefile projects/tcp_cc_head/usr.bin/opiekey/Makefile projects/tcp_cc_head/usr.bin/opiepasswd/Makefile projects/tcp_cc_head/usr.bin/passwd/Makefile projects/tcp_cc_head/usr.bin/passwd/passwd.c projects/tcp_cc_head/usr.bin/perror/perror.c projects/tcp_cc_head/usr.bin/pr/Makefile projects/tcp_cc_head/usr.bin/pr/egetopt.c projects/tcp_cc_head/usr.bin/printf/Makefile projects/tcp_cc_head/usr.bin/procstat/Makefile projects/tcp_cc_head/usr.bin/renice/renice.c projects/tcp_cc_head/usr.bin/revoke/Makefile projects/tcp_cc_head/usr.bin/rlogin/Makefile projects/tcp_cc_head/usr.bin/rpcgen/Makefile projects/tcp_cc_head/usr.bin/rpcgen/rpc_hout.c projects/tcp_cc_head/usr.bin/rpcgen/rpc_main.c projects/tcp_cc_head/usr.bin/rpcinfo/Makefile projects/tcp_cc_head/usr.bin/rsh/Makefile projects/tcp_cc_head/usr.bin/rup/Makefile projects/tcp_cc_head/usr.bin/ruptime/Makefile projects/tcp_cc_head/usr.bin/rusers/Makefile projects/tcp_cc_head/usr.bin/rwho/Makefile projects/tcp_cc_head/usr.bin/rwho/rwho.c projects/tcp_cc_head/usr.bin/script/script.c projects/tcp_cc_head/usr.bin/sed/Makefile projects/tcp_cc_head/usr.bin/showmount/showmount.c projects/tcp_cc_head/usr.bin/smbutil/Makefile projects/tcp_cc_head/usr.bin/sockstat/Makefile projects/tcp_cc_head/usr.bin/sockstat/sockstat.1 projects/tcp_cc_head/usr.bin/sockstat/sockstat.c projects/tcp_cc_head/usr.bin/su/Makefile projects/tcp_cc_head/usr.bin/systat/Makefile projects/tcp_cc_head/usr.bin/systat/keyboard.c projects/tcp_cc_head/usr.bin/systat/main.c projects/tcp_cc_head/usr.bin/systat/vmstat.c projects/tcp_cc_head/usr.bin/tail/Makefile projects/tcp_cc_head/usr.bin/tail/misc.c projects/tcp_cc_head/usr.bin/tail/tail.1 projects/tcp_cc_head/usr.bin/talk/ctl_transact.c projects/tcp_cc_head/usr.bin/talk/display.c projects/tcp_cc_head/usr.bin/talk/get_addrs.c projects/tcp_cc_head/usr.bin/talk/get_iface.c projects/tcp_cc_head/usr.bin/talk/get_names.c projects/tcp_cc_head/usr.bin/talk/invite.c projects/tcp_cc_head/usr.bin/talk/look_up.c projects/tcp_cc_head/usr.bin/talk/talk.1 projects/tcp_cc_head/usr.bin/talk/talk.c projects/tcp_cc_head/usr.bin/talk/talk.h projects/tcp_cc_head/usr.bin/tar/Makefile projects/tcp_cc_head/usr.bin/tar/test/Makefile projects/tcp_cc_head/usr.bin/tcopy/Makefile projects/tcp_cc_head/usr.bin/tcopy/tcopy.c projects/tcp_cc_head/usr.bin/telnet/Makefile projects/tcp_cc_head/usr.bin/tftp/tftp.c projects/tcp_cc_head/usr.bin/time/Makefile projects/tcp_cc_head/usr.bin/top/Makefile projects/tcp_cc_head/usr.bin/touch/touch.c projects/tcp_cc_head/usr.bin/tr/Makefile projects/tcp_cc_head/usr.bin/truss/Makefile projects/tcp_cc_head/usr.bin/truss/amd64-fbsd32.c projects/tcp_cc_head/usr.bin/truss/i386-fbsd.c projects/tcp_cc_head/usr.bin/truss/main.c projects/tcp_cc_head/usr.bin/truss/syscalls.c projects/tcp_cc_head/usr.bin/tset/extern.h projects/tcp_cc_head/usr.bin/tset/map.c projects/tcp_cc_head/usr.bin/tset/misc.c projects/tcp_cc_head/usr.bin/tset/set.c projects/tcp_cc_head/usr.bin/tset/term.c projects/tcp_cc_head/usr.bin/tset/tset.c projects/tcp_cc_head/usr.bin/tset/wrterm.c projects/tcp_cc_head/usr.bin/unifdef/Makefile projects/tcp_cc_head/usr.bin/unifdef/unifdef.1 projects/tcp_cc_head/usr.bin/unifdef/unifdef.c projects/tcp_cc_head/usr.bin/unifdef/unifdefall.sh projects/tcp_cc_head/usr.bin/uniq/uniq.1 projects/tcp_cc_head/usr.bin/uniq/uniq.c projects/tcp_cc_head/usr.bin/unzip/Makefile projects/tcp_cc_head/usr.bin/unzip/unzip.c projects/tcp_cc_head/usr.bin/users/users.1 projects/tcp_cc_head/usr.bin/users/users.c projects/tcp_cc_head/usr.bin/uudecode/Makefile projects/tcp_cc_head/usr.bin/uuencode/Makefile projects/tcp_cc_head/usr.bin/vacation/Makefile projects/tcp_cc_head/usr.bin/vgrind/Makefile projects/tcp_cc_head/usr.bin/vi/Makefile projects/tcp_cc_head/usr.bin/vis/foldit.c projects/tcp_cc_head/usr.bin/vmstat/Makefile projects/tcp_cc_head/usr.bin/vmstat/vmstat.c projects/tcp_cc_head/usr.bin/w/w.1 projects/tcp_cc_head/usr.bin/w/w.c projects/tcp_cc_head/usr.bin/wall/Makefile projects/tcp_cc_head/usr.bin/wall/wall.c projects/tcp_cc_head/usr.bin/wc/Makefile projects/tcp_cc_head/usr.bin/wc/wc.c projects/tcp_cc_head/usr.bin/whereis/Makefile projects/tcp_cc_head/usr.bin/who/Makefile projects/tcp_cc_head/usr.bin/who/who.1 projects/tcp_cc_head/usr.bin/who/who.c projects/tcp_cc_head/usr.bin/whois/whois.1 projects/tcp_cc_head/usr.bin/whois/whois.c projects/tcp_cc_head/usr.bin/write/Makefile projects/tcp_cc_head/usr.bin/write/write.c projects/tcp_cc_head/usr.bin/xargs/Makefile projects/tcp_cc_head/usr.bin/xinstall/Makefile projects/tcp_cc_head/usr.bin/xinstall/xinstall.c projects/tcp_cc_head/usr.bin/xlint/xlint/xlint.c projects/tcp_cc_head/usr.bin/yacc/Makefile projects/tcp_cc_head/usr.bin/yacc/defs.h projects/tcp_cc_head/usr.bin/yacc/skeleton.c projects/tcp_cc_head/usr.bin/ypcat/Makefile projects/tcp_cc_head/usr.bin/ypmatch/Makefile projects/tcp_cc_head/usr.bin/ypwhich/Makefile projects/tcp_cc_head/usr.sbin/Makefile projects/tcp_cc_head/usr.sbin/Makefile.inc projects/tcp_cc_head/usr.sbin/ac/Makefile projects/tcp_cc_head/usr.sbin/ac/ac.8 projects/tcp_cc_head/usr.sbin/ac/ac.c projects/tcp_cc_head/usr.sbin/accton/Makefile projects/tcp_cc_head/usr.sbin/accton/accton.c projects/tcp_cc_head/usr.sbin/acpi/acpiconf/Makefile projects/tcp_cc_head/usr.sbin/acpi/acpidb/Makefile projects/tcp_cc_head/usr.sbin/acpi/acpidb/acpidb.c projects/tcp_cc_head/usr.sbin/acpi/acpidump/Makefile projects/tcp_cc_head/usr.sbin/acpi/iasl/Makefile projects/tcp_cc_head/usr.sbin/adduser/adduser.sh projects/tcp_cc_head/usr.sbin/amd/Makefile.inc projects/tcp_cc_head/usr.sbin/ancontrol/ancontrol.c projects/tcp_cc_head/usr.sbin/apm/Makefile projects/tcp_cc_head/usr.sbin/apm/apm.8 projects/tcp_cc_head/usr.sbin/apm/apm.c projects/tcp_cc_head/usr.sbin/apmd/Makefile projects/tcp_cc_head/usr.sbin/arp/arp.c projects/tcp_cc_head/usr.sbin/asf/Makefile projects/tcp_cc_head/usr.sbin/asf/asf_kld.c projects/tcp_cc_head/usr.sbin/audit/Makefile projects/tcp_cc_head/usr.sbin/auditd/Makefile projects/tcp_cc_head/usr.sbin/auditreduce/Makefile projects/tcp_cc_head/usr.sbin/authpf/Makefile projects/tcp_cc_head/usr.sbin/boot0cfg/Makefile projects/tcp_cc_head/usr.sbin/bootparamd/Makefile.inc projects/tcp_cc_head/usr.sbin/bootparamd/bootparamd/bootparamd.c projects/tcp_cc_head/usr.sbin/bsnmpd/bsnmpd/Makefile projects/tcp_cc_head/usr.sbin/bsnmpd/gensnmptree/Makefile projects/tcp_cc_head/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_device_tbl.c projects/tcp_cc_head/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_scalars.c projects/tcp_cc_head/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_snmp.c projects/tcp_cc_head/usr.sbin/bsnmpd/modules/snmp_pf/Makefile projects/tcp_cc_head/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c projects/tcp_cc_head/usr.sbin/btxld/Makefile projects/tcp_cc_head/usr.sbin/burncd/Makefile projects/tcp_cc_head/usr.sbin/burncd/burncd.8 projects/tcp_cc_head/usr.sbin/burncd/burncd.c projects/tcp_cc_head/usr.sbin/cdcontrol/Makefile projects/tcp_cc_head/usr.sbin/cdcontrol/cdcontrol.c projects/tcp_cc_head/usr.sbin/chkgrp/Makefile projects/tcp_cc_head/usr.sbin/chown/Makefile projects/tcp_cc_head/usr.sbin/chroot/Makefile projects/tcp_cc_head/usr.sbin/chroot/chroot.c projects/tcp_cc_head/usr.sbin/clear_locks/Makefile projects/tcp_cc_head/usr.sbin/config/Makefile projects/tcp_cc_head/usr.sbin/config/lang.l projects/tcp_cc_head/usr.sbin/cpucontrol/Makefile projects/tcp_cc_head/usr.sbin/cpucontrol/cpucontrol.c projects/tcp_cc_head/usr.sbin/crashinfo/crashinfo.sh projects/tcp_cc_head/usr.sbin/cron/cron/Makefile projects/tcp_cc_head/usr.sbin/cron/cron/cron.c projects/tcp_cc_head/usr.sbin/crunch/Makefile.inc projects/tcp_cc_head/usr.sbin/crunch/examples/really-big.conf projects/tcp_cc_head/usr.sbin/ctm/ctm/Makefile projects/tcp_cc_head/usr.sbin/ctm/ctm_dequeue/Makefile projects/tcp_cc_head/usr.sbin/ctm/ctm_rmail/Makefile projects/tcp_cc_head/usr.sbin/ctm/ctm_smail/Makefile projects/tcp_cc_head/usr.sbin/ctm/ctm_smail/ctm_smail.c projects/tcp_cc_head/usr.sbin/daemon/Makefile projects/tcp_cc_head/usr.sbin/dconschat/Makefile projects/tcp_cc_head/usr.sbin/devinfo/Makefile projects/tcp_cc_head/usr.sbin/devinfo/devinfo.c projects/tcp_cc_head/usr.sbin/digictl/Makefile projects/tcp_cc_head/usr.sbin/diskinfo/Makefile projects/tcp_cc_head/usr.sbin/diskinfo/diskinfo.8 projects/tcp_cc_head/usr.sbin/diskinfo/diskinfo.c projects/tcp_cc_head/usr.sbin/dnssec-dsfromkey/Makefile projects/tcp_cc_head/usr.sbin/dnssec-keyfromlabel/Makefile projects/tcp_cc_head/usr.sbin/dnssec-keygen/Makefile projects/tcp_cc_head/usr.sbin/dnssec-signzone/Makefile projects/tcp_cc_head/usr.sbin/dumpcis/Makefile projects/tcp_cc_head/usr.sbin/editmap/Makefile projects/tcp_cc_head/usr.sbin/edquota/Makefile projects/tcp_cc_head/usr.sbin/eeprom/Makefile projects/tcp_cc_head/usr.sbin/eeprom/eeprom.c projects/tcp_cc_head/usr.sbin/extattr/Makefile projects/tcp_cc_head/usr.sbin/extattr/rmextattr.c projects/tcp_cc_head/usr.sbin/extattrctl/Makefile projects/tcp_cc_head/usr.sbin/extattrctl/extattrctl.c projects/tcp_cc_head/usr.sbin/faithd/Makefile projects/tcp_cc_head/usr.sbin/faithd/faithd.8 projects/tcp_cc_head/usr.sbin/faithd/faithd.c projects/tcp_cc_head/usr.sbin/fdcontrol/Makefile projects/tcp_cc_head/usr.sbin/fdformat/Makefile projects/tcp_cc_head/usr.sbin/fdread/Makefile projects/tcp_cc_head/usr.sbin/fdwrite/Makefile projects/tcp_cc_head/usr.sbin/fifolog/Makefile.inc projects/tcp_cc_head/usr.sbin/fifolog/fifolog_writer/fifolog_writer.c projects/tcp_cc_head/usr.sbin/fifolog/lib/getdate.y projects/tcp_cc_head/usr.sbin/freebsd-update/freebsd-update.sh projects/tcp_cc_head/usr.sbin/ftp-proxy/libevent/Makefile projects/tcp_cc_head/usr.sbin/getfmac/Makefile projects/tcp_cc_head/usr.sbin/getpmac/Makefile projects/tcp_cc_head/usr.sbin/gstat/Makefile projects/tcp_cc_head/usr.sbin/i2c/i2c.8 projects/tcp_cc_head/usr.sbin/inetd/Makefile projects/tcp_cc_head/usr.sbin/inetd/inetd.c projects/tcp_cc_head/usr.sbin/iostat/Makefile projects/tcp_cc_head/usr.sbin/ip6addrctl/Makefile projects/tcp_cc_head/usr.sbin/ipfwpcap/Makefile projects/tcp_cc_head/usr.sbin/jail/Makefile projects/tcp_cc_head/usr.sbin/jail/jail.8 projects/tcp_cc_head/usr.sbin/jexec/Makefile projects/tcp_cc_head/usr.sbin/jls/Makefile projects/tcp_cc_head/usr.sbin/jls/jls.c projects/tcp_cc_head/usr.sbin/kbdcontrol/kbdcontrol.c projects/tcp_cc_head/usr.sbin/kernbb/Makefile projects/tcp_cc_head/usr.sbin/lastlogin/Makefile projects/tcp_cc_head/usr.sbin/lastlogin/lastlogin.8 projects/tcp_cc_head/usr.sbin/lastlogin/lastlogin.c projects/tcp_cc_head/usr.sbin/lmcconfig/Makefile projects/tcp_cc_head/usr.sbin/lpr/common_source/Makefile projects/tcp_cc_head/usr.sbin/lpr/common_source/lp.h projects/tcp_cc_head/usr.sbin/lpr/common_source/rmjob.c projects/tcp_cc_head/usr.sbin/lpr/filters.ru/Makefile.inc projects/tcp_cc_head/usr.sbin/lpr/lpc/Makefile projects/tcp_cc_head/usr.sbin/lpr/lpd/Makefile projects/tcp_cc_head/usr.sbin/lpr/lpr/Makefile projects/tcp_cc_head/usr.sbin/lptcontrol/Makefile projects/tcp_cc_head/usr.sbin/mailstats/Makefile projects/tcp_cc_head/usr.sbin/mailwrapper/Makefile projects/tcp_cc_head/usr.sbin/makemap/Makefile projects/tcp_cc_head/usr.sbin/memcontrol/Makefile projects/tcp_cc_head/usr.sbin/mergemaster/mergemaster.8 projects/tcp_cc_head/usr.sbin/mergemaster/mergemaster.sh projects/tcp_cc_head/usr.sbin/mixer/Makefile projects/tcp_cc_head/usr.sbin/mld6query/Makefile projects/tcp_cc_head/usr.sbin/mlxcontrol/Makefile projects/tcp_cc_head/usr.sbin/mount_portalfs/mount_portalfs.c projects/tcp_cc_head/usr.sbin/mount_smbfs/Makefile projects/tcp_cc_head/usr.sbin/mountd/exports.5 projects/tcp_cc_head/usr.sbin/moused/Makefile projects/tcp_cc_head/usr.sbin/mptable/Makefile projects/tcp_cc_head/usr.sbin/mtree/Makefile projects/tcp_cc_head/usr.sbin/named-checkconf/Makefile projects/tcp_cc_head/usr.sbin/named-checkzone/Makefile projects/tcp_cc_head/usr.sbin/named/Makefile projects/tcp_cc_head/usr.sbin/ndiscvt/ndiscvt.c projects/tcp_cc_head/usr.sbin/ndp/Makefile projects/tcp_cc_head/usr.sbin/newsyslog/Makefile projects/tcp_cc_head/usr.sbin/newsyslog/newsyslog.8 projects/tcp_cc_head/usr.sbin/newsyslog/newsyslog.c projects/tcp_cc_head/usr.sbin/nfsd/Makefile projects/tcp_cc_head/usr.sbin/nfsd/nfsd.c projects/tcp_cc_head/usr.sbin/nfsd/nfsv4.4 projects/tcp_cc_head/usr.sbin/nfsd/stablerestart.5 projects/tcp_cc_head/usr.sbin/nghook/Makefile projects/tcp_cc_head/usr.sbin/nscd/nscd.conf.5 projects/tcp_cc_head/usr.sbin/ntp/Makefile projects/tcp_cc_head/usr.sbin/ntp/Makefile.inc projects/tcp_cc_head/usr.sbin/ntp/config.h projects/tcp_cc_head/usr.sbin/ntp/doc/Makefile projects/tcp_cc_head/usr.sbin/ntp/doc/ntpd.8 projects/tcp_cc_head/usr.sbin/nvram/Makefile projects/tcp_cc_head/usr.sbin/ofwdump/Makefile projects/tcp_cc_head/usr.sbin/pciconf/Makefile projects/tcp_cc_head/usr.sbin/pkg_install/add/main.c projects/tcp_cc_head/usr.sbin/pkg_install/create/main.c projects/tcp_cc_head/usr.sbin/pkg_install/delete/Makefile projects/tcp_cc_head/usr.sbin/pkg_install/delete/main.c projects/tcp_cc_head/usr.sbin/pkg_install/info/Makefile projects/tcp_cc_head/usr.sbin/pkg_install/info/main.c projects/tcp_cc_head/usr.sbin/pkg_install/lib/lib.h projects/tcp_cc_head/usr.sbin/pkg_install/updating/Makefile projects/tcp_cc_head/usr.sbin/pkg_install/updating/main.c projects/tcp_cc_head/usr.sbin/pkg_install/updating/pkg_updating.1 projects/tcp_cc_head/usr.sbin/pkg_install/version/Makefile projects/tcp_cc_head/usr.sbin/pkg_install/version/main.c projects/tcp_cc_head/usr.sbin/pmcannotate/Makefile projects/tcp_cc_head/usr.sbin/pmcannotate/pmcannotate.c projects/tcp_cc_head/usr.sbin/pmccontrol/Makefile projects/tcp_cc_head/usr.sbin/pmcstat/Makefile projects/tcp_cc_head/usr.sbin/pmcstat/pmcstat_log.c projects/tcp_cc_head/usr.sbin/pnpinfo/Makefile projects/tcp_cc_head/usr.sbin/portsnap/make_index/Makefile projects/tcp_cc_head/usr.sbin/portsnap/phttpget/Makefile projects/tcp_cc_head/usr.sbin/portsnap/portsnap/portsnap.sh projects/tcp_cc_head/usr.sbin/powerd/Makefile projects/tcp_cc_head/usr.sbin/powerd/powerd.8 projects/tcp_cc_head/usr.sbin/powerd/powerd.c projects/tcp_cc_head/usr.sbin/ppp/Makefile projects/tcp_cc_head/usr.sbin/ppp/id.c projects/tcp_cc_head/usr.sbin/ppp/id.h projects/tcp_cc_head/usr.sbin/ppp/physical.c projects/tcp_cc_head/usr.sbin/ppp/physical.h projects/tcp_cc_head/usr.sbin/ppp/ppp.8.m4 projects/tcp_cc_head/usr.sbin/pppctl/Makefile projects/tcp_cc_head/usr.sbin/praliases/Makefile projects/tcp_cc_head/usr.sbin/praudit/Makefile projects/tcp_cc_head/usr.sbin/procctl/Makefile projects/tcp_cc_head/usr.sbin/pstat/Makefile projects/tcp_cc_head/usr.sbin/pw/Makefile projects/tcp_cc_head/usr.sbin/pw/pw_user.c projects/tcp_cc_head/usr.sbin/pwd_mkdb/Makefile projects/tcp_cc_head/usr.sbin/quotaon/Makefile projects/tcp_cc_head/usr.sbin/quotaon/quotaon.c projects/tcp_cc_head/usr.sbin/repquota/Makefile projects/tcp_cc_head/usr.sbin/repquota/repquota.c projects/tcp_cc_head/usr.sbin/rip6query/Makefile projects/tcp_cc_head/usr.sbin/rip6query/rip6query.c projects/tcp_cc_head/usr.sbin/rmt/Makefile projects/tcp_cc_head/usr.sbin/rmt/rmt.c projects/tcp_cc_head/usr.sbin/rndc-confgen/Makefile projects/tcp_cc_head/usr.sbin/rndc/Makefile projects/tcp_cc_head/usr.sbin/route6d/Makefile projects/tcp_cc_head/usr.sbin/rpc.lockd/Makefile projects/tcp_cc_head/usr.sbin/rpc.statd/Makefile projects/tcp_cc_head/usr.sbin/rpc.umntall/Makefile projects/tcp_cc_head/usr.sbin/rpc.umntall/mounttab.c projects/tcp_cc_head/usr.sbin/rpc.yppasswdd/Makefile projects/tcp_cc_head/usr.sbin/rpc.ypupdated/Makefile projects/tcp_cc_head/usr.sbin/rpc.ypxfrd/Makefile projects/tcp_cc_head/usr.sbin/rpcbind/Makefile projects/tcp_cc_head/usr.sbin/rrenumd/Makefile projects/tcp_cc_head/usr.sbin/rtadvd/Makefile projects/tcp_cc_head/usr.sbin/rtprio/Makefile projects/tcp_cc_head/usr.sbin/rtsold/Makefile projects/tcp_cc_head/usr.sbin/rtsold/probe.c projects/tcp_cc_head/usr.sbin/rwhod/Makefile projects/tcp_cc_head/usr.sbin/rwhod/rwhod.8 projects/tcp_cc_head/usr.sbin/rwhod/rwhod.c projects/tcp_cc_head/usr.sbin/sa/Makefile projects/tcp_cc_head/usr.sbin/sa/main.c projects/tcp_cc_head/usr.sbin/sa/pdb.c projects/tcp_cc_head/usr.sbin/sa/usrdb.c projects/tcp_cc_head/usr.sbin/sade/termcap.c projects/tcp_cc_head/usr.sbin/sendmail/Makefile projects/tcp_cc_head/usr.sbin/setfmac/Makefile projects/tcp_cc_head/usr.sbin/setpmac/Makefile projects/tcp_cc_head/usr.sbin/smbmsg/Makefile projects/tcp_cc_head/usr.sbin/smbmsg/smbmsg.8 projects/tcp_cc_head/usr.sbin/snapinfo/snapinfo.c projects/tcp_cc_head/usr.sbin/sysinstall/Makefile projects/tcp_cc_head/usr.sbin/sysinstall/cdrom.c projects/tcp_cc_head/usr.sbin/sysinstall/disks.c projects/tcp_cc_head/usr.sbin/sysinstall/dist.c projects/tcp_cc_head/usr.sbin/sysinstall/install.c projects/tcp_cc_head/usr.sbin/sysinstall/label.c projects/tcp_cc_head/usr.sbin/sysinstall/menus.c projects/tcp_cc_head/usr.sbin/sysinstall/sysinstall.8 projects/tcp_cc_head/usr.sbin/sysinstall/tcpip.c projects/tcp_cc_head/usr.sbin/sysinstall/termcap.c projects/tcp_cc_head/usr.sbin/sysinstall/user.c projects/tcp_cc_head/usr.sbin/syslogd/syslogd.c projects/tcp_cc_head/usr.sbin/tcpdchk/Makefile projects/tcp_cc_head/usr.sbin/tcpdmatch/Makefile projects/tcp_cc_head/usr.sbin/tcpdrop/Makefile projects/tcp_cc_head/usr.sbin/tcpdump/Makefile.inc projects/tcp_cc_head/usr.sbin/timed/timed/master.c projects/tcp_cc_head/usr.sbin/timed/timed/slave.c projects/tcp_cc_head/usr.sbin/traceroute/Makefile projects/tcp_cc_head/usr.sbin/traceroute6/Makefile projects/tcp_cc_head/usr.sbin/tzsetup/Makefile projects/tcp_cc_head/usr.sbin/tzsetup/tzsetup.8 projects/tcp_cc_head/usr.sbin/tzsetup/tzsetup.c projects/tcp_cc_head/usr.sbin/uathload/Makefile projects/tcp_cc_head/usr.sbin/usbconfig/Makefile projects/tcp_cc_head/usr.sbin/usbconfig/dump.c projects/tcp_cc_head/usr.sbin/usbconfig/dump.h projects/tcp_cc_head/usr.sbin/usbconfig/usbconfig.8 projects/tcp_cc_head/usr.sbin/usbconfig/usbconfig.c projects/tcp_cc_head/usr.sbin/usbdevs/Makefile projects/tcp_cc_head/usr.sbin/vidcontrol/Makefile projects/tcp_cc_head/usr.sbin/vidcontrol/vidcontrol.1 projects/tcp_cc_head/usr.sbin/vidcontrol/vidcontrol.c projects/tcp_cc_head/usr.sbin/vipw/Makefile projects/tcp_cc_head/usr.sbin/wake/Makefile projects/tcp_cc_head/usr.sbin/wake/wake.8 projects/tcp_cc_head/usr.sbin/wake/wake.c projects/tcp_cc_head/usr.sbin/watchdogd/Makefile projects/tcp_cc_head/usr.sbin/watchdogd/watchdogd.c projects/tcp_cc_head/usr.sbin/wlandebug/Makefile projects/tcp_cc_head/usr.sbin/wlconfig/Makefile projects/tcp_cc_head/usr.sbin/yp_mkdb/Makefile projects/tcp_cc_head/usr.sbin/ypbind/Makefile projects/tcp_cc_head/usr.sbin/yppoll/Makefile projects/tcp_cc_head/usr.sbin/yppush/Makefile projects/tcp_cc_head/usr.sbin/yppush/yppush_main.c projects/tcp_cc_head/usr.sbin/ypserv/Makefile projects/tcp_cc_head/usr.sbin/ypserv/yp_main.c projects/tcp_cc_head/usr.sbin/ypserv/yp_server.c projects/tcp_cc_head/usr.sbin/ypserv/ypinit.sh projects/tcp_cc_head/usr.sbin/ypserv/ypserv.8 projects/tcp_cc_head/usr.sbin/ypset/Makefile projects/tcp_cc_head/usr.sbin/zic/Theory projects/tcp_cc_head/usr.sbin/zic/zdump.c projects/tcp_cc_head/usr.sbin/zic/zdump/Makefile projects/tcp_cc_head/usr.sbin/zic/zic.8 projects/tcp_cc_head/usr.sbin/zic/zic/Makefile Directory Properties: projects/tcp_cc_head/ (props changed) projects/tcp_cc_head/etc/rc.d/static_arp (props changed) projects/tcp_cc_head/games/fortune/datfiles/gerrold.limerick (props changed) projects/tcp_cc_head/sys/ (props changed) projects/tcp_cc_head/sys/mips/adm5120/adm5120reg.h (props changed) projects/tcp_cc_head/sys/mips/adm5120/admpci.c (props changed) projects/tcp_cc_head/sys/mips/adm5120/console.c (props changed) projects/tcp_cc_head/sys/mips/adm5120/if_admswreg.h (props changed) projects/tcp_cc_head/sys/mips/adm5120/obiovar.h (props changed) projects/tcp_cc_head/sys/mips/adm5120/std.adm5120 (props changed) projects/tcp_cc_head/sys/mips/adm5120/uart_bus_adm5120.c (props changed) projects/tcp_cc_head/sys/mips/adm5120/uart_dev_adm5120.c (props changed) projects/tcp_cc_head/sys/mips/adm5120/uart_dev_adm5120.h (props changed) projects/tcp_cc_head/sys/mips/conf/.cvsignore (props changed) projects/tcp_cc_head/sys/mips/conf/ADM5120 (props changed) projects/tcp_cc_head/sys/mips/conf/ADM5120.hints (props changed) projects/tcp_cc_head/sys/mips/conf/DEFAULTS (props changed) projects/tcp_cc_head/sys/mips/conf/IDT (props changed) projects/tcp_cc_head/sys/mips/conf/IDT.hints (props changed) projects/tcp_cc_head/sys/mips/conf/MALTA.hints (props changed) projects/tcp_cc_head/sys/mips/conf/SENTRY5.hints (props changed) projects/tcp_cc_head/sys/mips/idt/idtpci.c (props changed) projects/tcp_cc_head/sys/mips/idt/idtreg.h (props changed) projects/tcp_cc_head/sys/mips/idt/if_kr.c (props changed) projects/tcp_cc_head/sys/mips/idt/if_krreg.h (props changed) projects/tcp_cc_head/sys/mips/idt/obiovar.h (props changed) projects/tcp_cc_head/sys/mips/idt/std.idt (props changed) projects/tcp_cc_head/sys/mips/include/_bus_octeon.h (props changed) projects/tcp_cc_head/sys/mips/include/_inttypes.h (props changed) projects/tcp_cc_head/sys/mips/include/_limits.h (props changed) projects/tcp_cc_head/sys/mips/include/_stdint.h (props changed) projects/tcp_cc_head/sys/mips/include/archtype.h (props changed) projects/tcp_cc_head/sys/mips/include/asmacros.h (props changed) projects/tcp_cc_head/sys/mips/include/bootinfo.h (props changed) projects/tcp_cc_head/sys/mips/include/bswap.h (props changed) projects/tcp_cc_head/sys/mips/include/bus_dma.h (props changed) projects/tcp_cc_head/sys/mips/include/cache_r4k.h (props changed) projects/tcp_cc_head/sys/mips/include/clock.h (props changed) projects/tcp_cc_head/sys/mips/include/clockvar.h (props changed) projects/tcp_cc_head/sys/mips/include/cputypes.h (props changed) projects/tcp_cc_head/sys/mips/include/defs.h (props changed) projects/tcp_cc_head/sys/mips/include/exec.h (props changed) projects/tcp_cc_head/sys/mips/include/floatingpoint.h (props changed) projects/tcp_cc_head/sys/mips/include/fpu.h (props changed) projects/tcp_cc_head/sys/mips/include/frame.h (props changed) projects/tcp_cc_head/sys/mips/include/gdb_machdep.h (props changed) projects/tcp_cc_head/sys/mips/include/ieee.h (props changed) projects/tcp_cc_head/sys/mips/include/ieeefp.h (props changed) projects/tcp_cc_head/sys/mips/include/in_cksum.h (props changed) projects/tcp_cc_head/sys/mips/include/iodev.h (props changed) projects/tcp_cc_head/sys/mips/include/limits.h (props changed) projects/tcp_cc_head/sys/mips/include/memdev.h (props changed) projects/tcp_cc_head/sys/mips/include/metadata.h (props changed) projects/tcp_cc_head/sys/mips/include/minidump.h (props changed) projects/tcp_cc_head/sys/mips/include/mips_opcode.h (props changed) projects/tcp_cc_head/sys/mips/include/mp_watchdog.h (props changed) projects/tcp_cc_head/sys/mips/include/mutex.h (props changed) projects/tcp_cc_head/sys/mips/include/pci_cfgreg.h (props changed) projects/tcp_cc_head/sys/mips/include/pcpu.h (props changed) projects/tcp_cc_head/sys/mips/include/pmc_mdep.h (props changed) projects/tcp_cc_head/sys/mips/include/ppireg.h (props changed) projects/tcp_cc_head/sys/mips/include/ptrace.h (props changed) projects/tcp_cc_head/sys/mips/include/queue.h (props changed) projects/tcp_cc_head/sys/mips/include/reg.h (props changed) projects/tcp_cc_head/sys/mips/include/reloc.h (props changed) projects/tcp_cc_head/sys/mips/include/resource.h (props changed) projects/tcp_cc_head/sys/mips/include/rm7000.h (props changed) projects/tcp_cc_head/sys/mips/include/runq.h (props changed) projects/tcp_cc_head/sys/mips/include/segments.h (props changed) projects/tcp_cc_head/sys/mips/include/setjmp.h (props changed) projects/tcp_cc_head/sys/mips/include/sf_buf.h (props changed) projects/tcp_cc_head/sys/mips/include/sigframe.h (props changed) projects/tcp_cc_head/sys/mips/include/signal.h (props changed) projects/tcp_cc_head/sys/mips/include/smp.h (props changed) projects/tcp_cc_head/sys/mips/include/stdarg.h (props changed) projects/tcp_cc_head/sys/mips/include/timerreg.h (props changed) projects/tcp_cc_head/sys/mips/include/varargs.h (props changed) projects/tcp_cc_head/sys/mips/include/vmparam.h (props changed) projects/tcp_cc_head/sys/mips/malta/gt.c (props changed) projects/tcp_cc_head/sys/mips/malta/gtreg.h (props changed) projects/tcp_cc_head/sys/mips/malta/gtvar.h (props changed) projects/tcp_cc_head/sys/mips/malta/obiovar.h (props changed) projects/tcp_cc_head/sys/mips/malta/yamon.c (props changed) projects/tcp_cc_head/sys/mips/mips/autoconf.c (props changed) projects/tcp_cc_head/sys/mips/mips/db_disasm.c (props changed) projects/tcp_cc_head/sys/mips/mips/db_interface.c (props changed) projects/tcp_cc_head/sys/mips/mips/dump_machdep.c (props changed) projects/tcp_cc_head/sys/mips/mips/elf64_machdep.c (props changed) projects/tcp_cc_head/sys/mips/mips/mp_machdep.c (props changed) projects/tcp_cc_head/sys/mips/mips/stack_machdep.c (props changed) projects/tcp_cc_head/sys/mips/mips/uio_machdep.c (props changed) projects/tcp_cc_head/sys/mips/sentry5/obiovar.h (props changed) projects/tcp_cc_head/sys/mips/sentry5/s5reg.h (props changed) projects/tcp_cc_head/tools/regression/usr.bin/lastcomm/regress.t (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.3 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.4 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.5 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.6 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.7 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.3 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.4 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.5 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.6 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.7 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.3 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.4 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.5 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.6 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.7 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.3 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.4 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.5 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.6 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.7 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.3 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.4 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.5 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.6 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.7 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.3 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.4 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.5 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.6 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.7 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.3 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.4 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.5 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.6 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.7 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.3 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.4 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.5 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.6 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.7 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.3 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.4 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.5 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.6 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.7 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t0/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t0/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t0/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t1/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t1/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t1/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t2/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t2/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t2/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t3/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t3/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/basic/t3/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/builtin/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/builtin/expected.status.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/builtin/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/builtin/expected.stderr.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/builtin/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/builtin/expected.stdout.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path/expected.status.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path/expected.stderr.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path/expected.stdout.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path_select/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path_select/expected.status.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path_select/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path_select/expected.stderr.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path_select/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/path_select/expected.stdout.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/replace/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/replace/expected.status.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/replace/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/replace/expected.stderr.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/replace/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/replace/expected.stdout.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/select/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/select/expected.status.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/select/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/select/expected.stderr.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/select/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/shell/select/expected.stdout.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/suffixes/basic/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/suffixes/basic/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/suffixes/basic/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/suffixes/src_wild1/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/suffixes/src_wild1/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/suffixes/src_wild1/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/suffixes/src_wild2/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/suffixes/src_wild2/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/suffixes/src_wild2/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/enl/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/enl/expected.status.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/enl/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/enl/expected.stderr.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/enl/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/enl/expected.stdout.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/semi/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/semi/expected.status.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/semi/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/semi/expected.stderr.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/semi/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/syntax/semi/expected.stdout.2 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/variables/modifier_M/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/variables/modifier_M/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/variables/modifier_M/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/variables/t0/expected.status.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/variables/t0/expected.stderr.1 (props changed) projects/tcp_cc_head/tools/regression/usr.bin/make/variables/t0/expected.stdout.1 (props changed) projects/tcp_cc_head/tools/regression/usr.sbin/sa/regress.t (props changed) Modified: projects/tcp_cc_head/COPYRIGHT ============================================================================== --- projects/tcp_cc_head/COPYRIGHT Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/COPYRIGHT Mon Jan 25 07:37:37 2010 (r202963) @@ -4,7 +4,7 @@ The compilation of software known as FreeBSD is distributed under the following terms: -Copyright (c) 1992-2009 The FreeBSD Project. All rights reserved. +Copyright (c) 1992-2010 The FreeBSD Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions Modified: projects/tcp_cc_head/MAINTAINERS ============================================================================== --- projects/tcp_cc_head/MAINTAINERS Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/MAINTAINERS Mon Jan 25 07:37:37 2010 (r202963) @@ -48,7 +48,6 @@ iostat(8) ken Pre-commit review requeste cd(4) ken Pre-commit review requested. pass(4) ken Pre-commit review requested. ch(4) ken Pre-commit review requested. -isp(4) mjacob Pre-commit review requested. em(4) jfv Pre-commit review requested. tdfx(4) cokane Just keep me informed of changes, try not to break it. sendmail gshapiro Pre-commit review requested. @@ -124,6 +123,8 @@ usr.bin/bluetooth emax Pre-commit review usr.sbin/bluetooth emax Pre-commit review preferred. gnu/usr.bin/send-pr bugmaster Pre-commit review requested. ncurses rafan Heads-up appreciated, try not to break it. +*env(3) secteam Due to the problematic security history of this + code, please have patches reviewed by secteam. Following are the entries from the Makefiles, and a few other sources. Please remove stale entries from both their origin, and this file. Modified: projects/tcp_cc_head/Makefile ============================================================================== --- projects/tcp_cc_head/Makefile Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/Makefile Mon Jan 25 07:37:37 2010 (r202963) @@ -278,7 +278,7 @@ tinderbox: # with a reasonable chance of success, regardless of how old your # existing system is. # -.if make(universe) || make(tinderbox) +.if make(universe) || make(universe_kernels) || make(tinderbox) TARGETS?=amd64 arm i386 ia64 mips pc98 powerpc sparc64 sun4v .if defined(DOING_TINDERBOX) @@ -297,10 +297,6 @@ universe_prologue: rm -f ${FAILFILE} .endif .for target in ${TARGETS} -KERNCONFS!= cd ${.CURDIR}/sys/${target}/conf && \ - find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \ - ! -name DEFAULTS ! -name LINT -KERNCONFS:= ${KERNCONFS:S/^NOTES$/LINT/} universe: universe_${target} .ORDER: universe_prologue universe_${target} universe_epilogue universe_${target}: @@ -320,16 +316,26 @@ universe_${target}: (echo "${target} 'make LINT' failed," \ "check _.${target}.makeLINT for details"| ${MAKEFAIL})) .endif + @cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} TARGET=${target} \ + universe_kernels + @echo ">> ${target} completed on `LC_ALL=C date`" +.endfor +universe_kernels: universe_kernconfs +.if !defined(TARGET) +TARGET!= uname -m +.endif +KERNCONFS!= cd ${.CURDIR}/sys/${TARGET}/conf && \ + find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \ + ! -name DEFAULTS ! -name NOTES +universe_kernconfs: .for kernel in ${KERNCONFS} @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ ${MAKE} ${JFLAG} buildkernel \ - TARGET=${target} \ + TARGET=${TARGET} \ KERNCONF=${kernel} \ - > _.${target}.${kernel} 2>&1 || \ - (echo "${target} ${kernel} kernel failed," \ - "check _.${target}.${kernel} for details"| ${MAKEFAIL})) -.endfor - @echo ">> ${target} completed on `LC_ALL=C date`" + > _.${TARGET}.${kernel} 2>&1 || \ + (echo "${TARGET} ${kernel} kernel failed," \ + "check _.${TARGET}.${kernel} for details"| ${MAKEFAIL})) .endfor universe: universe_epilogue universe_epilogue: Modified: projects/tcp_cc_head/Makefile.inc1 ============================================================================== --- projects/tcp_cc_head/Makefile.inc1 Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/Makefile.inc1 Mon Jan 25 07:37:37 2010 (r202963) @@ -5,10 +5,11 @@ # -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir # -DNO_CLEAN do not clean at all # -DNO_SHARE do not go into share subdir -# -DKERNFAST define NO_KERNELCONFIG, NO_KERNELCLEAN and NO_KERNELDEPEND +# -DKERNFAST define NO_KERNEL{CONFIG,CLEAN,DEPEND,OBJ} # -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel # -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel # -DNO_KERNELDEPEND do not run ${MAKE} depend in ${MAKE} buildkernel +# -DNO_KERNELOBJ do not run ${MAKE} obj in ${MAKE} buildkernel # -DNO_PORTSUPDATE do not update ports in ${MAKE} update # -DNO_DOCUPDATE do not update doc in ${MAKE} update # -DNO_CTF do not run the DTrace CTF conversion tools on built objects @@ -272,7 +273,7 @@ LIB32CPUFLAGS= -march=i686 -mmmx -msse - LIB32CPUFLAGS= -march=${TARGET_CPUTYPE} .endif LIB32FLAGS= -m32 ${LIB32CPUFLAGS} -mfancy-math-387 -DCOMPAT_32BIT \ - -iprefix ${LIB32TMP}/usr/ \ + -isystem ${LIB32TMP}/usr/include/ \ -L${LIB32TMP}/usr/lib32 \ -B${LIB32TMP}/usr/lib32 @@ -599,11 +600,14 @@ installcheck_UGID: .if ${MK_INFO} != "no" _install-info= install-info .endif +.if ${MK_ZONEINFO} != "no" +_zoneinfo= zic tzsetup +.endif ITOOLS= [ awk cap_mkdb cat chflags chmod chown \ date echo egrep find grep ${_install-info} \ ln lockf make mkdir mtree mv pwd_mkdb rm sed sh sysctl \ - test true uname wc zic + test true uname wc ${_zoneinfo} # # distributeworld @@ -691,6 +695,7 @@ distrib-dirs distribution: NO_KERNELCLEAN= t NO_KERNELCONFIG= t NO_KERNELDEPEND= t +NO_KERNELOBJ= t # Shortcut for KERNCONF=Blah -DKERNFAST is now KERNFAST=Blah .if !defined(KERNCONF) && ${KERNFAST} != "1" KERNCONF=${KERNFAST} @@ -760,11 +765,13 @@ buildkernel: @echo "--------------------------------------------------------------" cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} ${CLEANDIR} .endif +.if !defined(NO_KERNELOBJ) @echo @echo "--------------------------------------------------------------" @echo ">>> stage 2.2: rebuilding the object tree" @echo "--------------------------------------------------------------" cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} obj +.endif @echo @echo "--------------------------------------------------------------" @echo ">>> stage 2.3: build tools" @@ -929,6 +936,15 @@ _ar= usr.bin/ar _mklocale= usr.bin/mklocale .endif +.if ${BOOTSTRAPPING} < 900002 +_sed= usr.bin/sed +.endif + +.if ${BOOTSTRAPPING} < 900006 +_lex= usr.bin/lex +_yacc= usr.bin/yacc +.endif + .if ${BOOTSTRAPPING} < 700018 _gensnmptree= usr.sbin/bsnmpd/gensnmptree .endif @@ -954,6 +970,9 @@ bootstrap-tools: usr.bin/makewhatis \ ${_mklocale} \ usr.bin/rpcgen \ + ${_sed} \ + ${_lex} \ + ${_yacc} \ usr.bin/xinstall \ ${_gensnmptree} \ usr.sbin/config \ @@ -1033,7 +1052,6 @@ cross-tools: .for _tool in \ gnu/usr.bin/binutils \ gnu/usr.bin/cc \ - usr.bin/sed \ usr.bin/xlint/lint1 usr.bin/xlint/lint2 usr.bin/xlint/xlint \ ${_btxld} \ ${_crunchide} \ @@ -1096,8 +1114,8 @@ _prebuild_libs= ${_kerberos5_lib_libasn1 lib/libkiconv lib/libkvm lib/libmd \ lib/ncurses/ncurses lib/ncurses/ncursesw \ lib/libopie lib/libpam ${_lib_libthr} \ - lib/libradius lib/libsbuf lib/libtacplus lib/libutil \ - ${_lib_libypclnt} lib/libz lib/msun \ + lib/libradius lib/libsbuf lib/libtacplus \ + lib/libutil ${_lib_libypclnt} lib/libz lib/msun \ ${_secure_lib_libcrypto} ${_secure_lib_libssh} \ ${_secure_lib_libssl} lib/libdwarf lib/libproc @@ -1118,14 +1136,16 @@ _cddl_lib= cddl/lib _secure_lib_libcrypto= secure/lib/libcrypto _secure_lib_libssl= secure/lib/libssl lib/libradius__L secure/lib/libssl__L: secure/lib/libcrypto__L -.if ${MK_OPENSSH} != "no" -_secure_lib_libssh= secure/lib/libssh -secure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L .if ${MK_KERBEROS} != "no" -kerberos5/lib/libgssapi_krb5__L: kerberos5/lib/libkrb5__L \ +kerberos5/lib/libgssapi_krb5__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \ lib/libmd__L kerberos5/lib/libroken__L secure/lib/libcrypto__L \ lib/libcrypt__L +.endif +.if ${MK_OPENSSH} != "no" +_secure_lib_libssh= secure/lib/libssh +secure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L +.if ${MK_KERBEROS_SUPPORT} != "no" secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libgssapi_krb5__L .endif .endif @@ -1133,6 +1153,10 @@ secure/lib/libssh__L: lib/libgssapi__L k _secure_lib= secure/lib .endif +.if ${MK_GSSAPI} != "no" +_lib_libgssapi= lib/libgssapi +.endif + .if ${MK_IPX} != "no" _lib_libipx= lib/libipx .endif @@ -1145,7 +1169,6 @@ _kerberos5_lib_libhx509= kerberos5/lib/l _kerberos5_lib_libroken= kerberos5/lib/libroken _kerberos5_lib_libheimntlm= kerberos5/lib/libheimntlm _kerberos5_lib_libgssapi_krb5= kerberos5/lib/libgssapi_krb5 -_lib_libgssapi= lib/libgssapi .endif .if ${MK_NIS} != "no" @@ -1248,7 +1271,7 @@ delete-old-files: fi; \ done # Remove catpages without corresponding manpages. - @3<&0; \ + @exec 3<&0; \ find ${DESTDIR}/usr/share/man/cat* ! -type d | \ sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \ while read catpage; do \ Modified: projects/tcp_cc_head/ObsoleteFiles.inc ============================================================================== --- projects/tcp_cc_head/ObsoleteFiles.inc Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/ObsoleteFiles.inc Mon Jan 25 07:37:37 2010 (r202963) @@ -14,6 +14,74 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20100122: move BSDL bc/dc USD documents to /usr/share/doc/usd +OLD_FILES+=usr/share/doc/papers/bc.ascii.gz +OLD_FILES+=usr/share/doc/papers/dc.ascii.gz +# 20100120: replacing GNU bc/dc with BSDL versions +OLD_FILES+=usr/share/examples/bc/ckbook.b +OLD_FILES+=usr/share/examples/bc/pi.b +OLD_FILES+=usr/share/examples/bc/primes.b +OLD_FILES+=usr/share/examples/bc/twins.b +OLD_FILES+=usr/share/info/dc.info.gz +OLD_DIRS+=usr/share/examples/bc +# 20100114: removal of ttyslot(3) +OLD_FILES+=usr/share/man/man3/ttyslot.3.gz +# 20100113: remove utmp.h, replace it by utmpx.h +OLD_FILES+=usr/share/man/man3/login.3.gz +OLD_FILES+=usr/share/man/man3/logout.3.gz +OLD_FILES+=usr/share/man/man3/logwtmp.3.gz +OLD_FILES+=usr/share/man/man3/ulog_endutxent.3.gz +OLD_FILES+=usr/share/man/man3/ulog_getutxent.3.gz +OLD_FILES+=usr/share/man/man3/ulog_getutxline.3.gz +OLD_FILES+=usr/share/man/man3/ulog_getutxuser.3.gz +OLD_FILES+=usr/share/man/man3/ulog_pututxline.3.gz +OLD_FILES+=usr/share/man/man3/ulog_setutxent.3.gz +OLD_FILES+=usr/share/man/man3/ulog_setutxfile.3.gz +OLD_FILES+=usr/share/man/man5/lastlog.5.gz +OLD_FILES+=usr/share/man/man5/utmp.5.gz +OLD_FILES+=usr/share/man/man5/wtmp.5.gz +OLD_LIBS+=lib/libutil.so.8 +# 20100105: new userland semaphore implementation +OLD_FILES+=usr/include/sys/semaphore.h +# 20100103: ntptrace(8) removed +OLD_FILES+=usr/sbin/ntptrace +OLD_FILES+=usr/share/man/man8/ntptrace.8.gz +# 20091229: remove no longer relevant examples +OLD_FILES+=usr/share/examples/pppd/auth-down.sample +OLD_FILES+=usr/share/examples/pppd/auth-up.sample +OLD_FILES+=usr/share/examples/pppd/chap-secrets.sample +OLD_FILES+=usr/share/examples/pppd/chat.sh.sample +OLD_FILES+=usr/share/examples/pppd/ip-down.sample +OLD_FILES+=usr/share/examples/pppd/ip-up.sample +OLD_FILES+=usr/share/examples/pppd/options.sample +OLD_FILES+=usr/share/examples/pppd/pap-secrets.sample +OLD_FILES+=usr/share/examples/pppd/ppp.deny.sample +OLD_FILES+=usr/share/examples/pppd/ppp.shells.sample +OLD_DIRS+=usr/share/examples/pppd +OLD_FILES+=usr/share/examples/slattach/unit-command.sh +OLD_DIRS+=usr/share/examples/slattach +OLD_FILES+=usr/share/examples/sliplogin/slip.hosts +OLD_FILES+=usr/share/examples/sliplogin/slip.login +OLD_FILES+=usr/share/examples/sliplogin/slip.logout +OLD_FILES+=usr/share/examples/sliplogin/slip.slparms +OLD_DIRS+=usr/share/examples/sliplogin +OLD_FILES+=usr/share/examples/startslip/sldown.sh +OLD_FILES+=usr/share/examples/startslip/slip.sh +OLD_FILES+=usr/share/examples/startslip/slup.sh +OLD_DIRS+=usr/share/examples/startslip +# 20091202: unify rc.firewall and rc.firewall6. +OLD_FILES+=etc/rc.d/ip6fw +OLD_FILES+=etc/rc.firewall6 +OLD_FILES+=usr/share/examples/etc/rc.firewall6 +# 20091117: removal of rc.early(8) link +OLD_FILES+=usr/share/man/man8/rc.early.8.gz +# 20091117: usr/share/zoneinfo/GMT link removed +OLD_FILES+=usr/share/zoneinfo/GMT +# 20091027: pselect.3 implemented as syscall +OLD_FILES+=usr/share/man/man3/pselect.3.gz +# 20091005: fusword.9 and susword.9 removed +OLD_FILES+=usr/share/man/man9/fusword.9.gz +OLD_FILES+=usr/share/man/man9/susword.9.gz # 20090909: vesa and dpms promoted to be i386/amd64 common OLD_FILES+=usr/include/machine/pc/vesa.h OLD_FILES+=usr/share/man/man4/i386/dpms.4.gz @@ -26,6 +94,49 @@ OLD_FILES+=usr/share/man/man8/lukemftpd. OLD_FILES+=etc/mtree/BSD.local.dist OLD_FILES+=etc/mtree/BSD.x11.dist OLD_FILES+=etc/mtree/BSD.x11-4.dist +# 20090812: net80211 documentation overhaul +OLD_FILES+=usr/share/man/man9/ieee80211_add_rates.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_add_xrates.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_alloc_node.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_attach.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_begin_scan.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_cfgget.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_cfgset.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_chan2ieee.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_chan2mode.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_create_ibss.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_crypto_attach.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_crypto_detach.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_decap.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_dump_pkt.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_dup_bss.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_encap.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_end_scan.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_find_node.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_fix_rate.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_free_allnodes.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_ieee2mhz.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_ioctl.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_lookup_node.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_media2rate.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_media_change.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_media_init.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_media_status.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_mhz2ieee.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_next_scan.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_node_attach.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_node_detach.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_node_lateattach.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_print_essid.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_proto_attach.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_proto_detach.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_rate2media.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_recv_mgmt.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_send_mgmt.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_setmode.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_timeout_nodes.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_watchdog.9.gz +OLD_FILES+=usr/share/man/man9/ieee80211_wep_crypt.9.gz # 20090801: vimage.h removed in favour of vnet.h OLD_FILES+=usr/include/sys/vimage.h # 20090719: library version bump for 8.0 @@ -503,6 +614,8 @@ OLD_FILES+=usr/include/dev/usb/usb_quirk OLD_FILES+=usr/include/dev/usb/usbcdc.h OLD_FILES+=usr/include/dev/usb/usbdivar.h OLD_FILES+=usr/include/dev/usb/uxb360gp_rdesc.h +OLD_FILES+=usr/sbin/usbdevs +OLD_FILES+=usr/share/man/man8/usbdevs.8.gz # 20090203: removal of pccard header files OLD_FILES+=usr/include/pccard/cardinfo.h OLD_FILES+=usr/include/pccard/cis.h Modified: projects/tcp_cc_head/UPDATING ============================================================================== --- projects/tcp_cc_head/UPDATING Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/UPDATING Mon Jan 25 07:37:37 2010 (r202963) @@ -22,6 +22,75 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. machines to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20100113: + The utmp user accounting database has been replaced with utmpx, + the user accounting interface standardized by POSIX. + Unfortunately the semantics of utmp and utmpx don't match, + making it practically impossible to support both interfaces. + The user accounting database is used by tools like finger(1), + last(1), talk(1), w(1) and ac(8). + + All applications in the base system use utmpx. This means only + local binaries (e.g. from the ports tree) may still use these + utmp database files. These applications must be rebuilt to make + use of utmpx. + + After the system has been upgraded, it is safe to remove the old + log files (/var/run/utmp, /var/log/lastlog and /var/log/wtmp*), + assuming their contents is of no importance anymore. Old wtmp + databases can only be used by last(1) and ac(8) after they have + been converted to the new format using wtmpcvt(1). + +20100108: + Introduce the kernel thread "deadlock resolver" (which can be enabled + via the DEADLKRES option, see NOTES for more details) and the + sleepq_type() function for sleepqueues. + +20091202: + The rc.firewall and rc.firewall6 were unified, and + rc.firewall6 and rc.d/ip6fw were removed. + According to the removal of rc.d/ip6fw, ipv6_firewall_* rc + variables are obsoleted. Instead, the following new rc + variables are added to rc.d/ipfw: + + firewall_client_net_ipv6, firewall_simple_iif_ipv6, + firewall_simple_inet_ipv6, firewall_simple_oif_ipv6, + firewall_simple_onet_ipv6, firewall_trusted_ipv6 + + The meanings correspond to the relevant IPv4 variables. + +20091113: + The default terminal emulation for syscons(4) has been changed + from cons25 to xterm on all platforms except pc98. This means + that the /etc/ttys file needs to be updated to ensure correct + operation of applications on the console. + + The terminal emulation style can be toggled per window by using + vidcontrol(1)'s -T flag. The TEKEN_CONS25 kernel configuration + options can be used to change the compile-time default back to + cons25. + + To prevent graphical artifacts, make sure the TERM environment + variable is set to match the terminal emulation that is being + performed by syscons(4). + +20091109: + The layout of the structure ieee80211req_scan_result has changed. + Applications that require wireless scan results (e.g. ifconfig(8)) + from net80211 need to be recompiled. + + Applications such as wpa_supplicant(8) may require a full world + build without using NO_CLEAN in order to get synchronized with the + new structure. + +20091025: + The iwn(4) driver has been updated to support the 5000 and 5150 series. + There's one kernel module for each firmware. Adding "device iwnfw" + to the kernel configuration file means including all three firmware + images inside the kernel. If you want to include just the one for + your wireless card, use the the devices iwn4965fw, iwn5000fw or + iwn5150fw. + 20090926: The rc.d/network_ipv6, IPv6 configuration script has been integrated into rc.d/netif. The changes are the following: @@ -116,7 +185,7 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. 20090712: Padding has been added to struct tcpcb, sackhint and tcpstat in to facilitate future MFCs and bug fixes whilst - maintainig the ABI. However, this change breaks the ABI, so bump + maintaining the ABI. However, this change breaks the ABI, so bump __FreeBSD_version to 800102. User space tools that rely on the size of any of these structs (e.g. sockstat) need to be recompiled. @@ -529,6 +598,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. # Map old usb library to new one for usb2 stack libusb-0.1.so.8 libusb20.so.1 +20090209: + All USB ethernet devices now attach as interfaces under the name ueN + (eg. ue0). This is to provide a predictable name as vendors often + change usb chipsets in a product without notice. + 20090203: The ichsmb(4) driver has been changed to require SMBus slave addresses be left-justified (xxxxxxx0b) rather than right-justified. @@ -624,6 +698,15 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. userland (libpmc(3)) and the kernel module (hwpmc(4)) in sync. +20081009: + atapci kernel module now includes only generic PCI ATA + driver. AHCI driver moved to ataahci kernel module. + All vendor-specific code moved into separate kernel modules: + ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek, + atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron, + atamarvell, atamicron, atanational, atanetcell, atanvidia, + atapromise, ataserverworks, atasiliconimage, atasis, atavia + 20080820: The TTY subsystem of the kernel has been replaced by a new implementation, which provides better scalability and an @@ -836,7 +919,7 @@ COMMON ITEMS: ------------- Avoid using make -j when upgrading. While generally safe, there are sometimes problems using -j to upgrade. If your upgrade fails with - -j, please try again wtihout -j. From time to time in the past there + -j, please try again without -j. From time to time in the past there have been problems using -j with buildworld and/or installworld. This is especially true when upgrading between "distant" versions (eg one that cross a major release boundary or several minor releases, or when Modified: projects/tcp_cc_head/bin/Makefile ============================================================================== --- projects/tcp_cc_head/bin/Makefile Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/Makefile Mon Jan 25 07:37:37 2010 (r202963) @@ -27,6 +27,7 @@ SUBDIR= cat \ pax \ pkill \ ps \ + pwait \ pwd \ ${_rcp} \ realpath \ Modified: projects/tcp_cc_head/bin/cat/Makefile ============================================================================== --- projects/tcp_cc_head/bin/cat/Makefile Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/cat/Makefile Mon Jan 25 07:37:37 2010 (r202963) @@ -2,6 +2,5 @@ # $FreeBSD$ PROG= cat -WARNS?= 6 .include Modified: projects/tcp_cc_head/bin/cp/cp.1 ============================================================================== --- projects/tcp_cc_head/bin/cp/cp.1 Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/cp/cp.1 Mon Jan 25 07:37:37 2010 (r202963) @@ -32,7 +32,7 @@ .\" @(#)cp.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd October 27, 2006 +.Dd January 17, 2010 .Dt CP 1 .Os .Sh NAME @@ -45,7 +45,7 @@ .Op Fl H | Fl L | Fl P .Oc .Op Fl f | i | n -.Op Fl alpv +.Op Fl alpvx .Ar source_file target_file .Nm .Oo @@ -53,7 +53,7 @@ .Op Fl H | Fl L | Fl P .Oc .Op Fl f | i | n -.Op Fl alpv +.Op Fl alpvx .Ar source_file ... target_directory .Sh DESCRIPTION In the first synopsis form, the @@ -183,6 +183,8 @@ permissions. Cause .Nm to be verbose, showing files as they are copied. +.It Fl x +File system mount points are not traversed. .El .Pp For each destination file that already exists, its contents are Modified: projects/tcp_cc_head/bin/cp/cp.c ============================================================================== --- projects/tcp_cc_head/bin/cp/cp.c Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/cp/cp.c Mon Jan 25 07:37:37 2010 (r202963) @@ -101,8 +101,9 @@ main(int argc, char *argv[]) int Hflag, Lflag, Pflag, ch, fts_options, r, have_trailing_slash; char *target; + fts_options = FTS_NOCHDIR | FTS_PHYSICAL; Hflag = Lflag = Pflag = 0; - while ((ch = getopt(argc, argv, "HLPRafilnprv")) != -1) + while ((ch = getopt(argc, argv, "HLPRafilnprvx")) != -1) switch (ch) { case 'H': Hflag = 1; @@ -150,6 +151,9 @@ main(int argc, char *argv[]) case 'v': vflag = 1; break; + case 'x': + fts_options |= FTS_XDEV; + break; default: usage(); break; @@ -160,7 +164,6 @@ main(int argc, char *argv[]) if (argc < 2) usage(); - fts_options = FTS_NOCHDIR | FTS_PHYSICAL; if (Rflag && rflag) errx(1, "the -R and -r options may not be specified together"); if (rflag) Modified: projects/tcp_cc_head/bin/cp/utils.c ============================================================================== --- projects/tcp_cc_head/bin/cp/utils.c Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/cp/utils.c Mon Jan 25 07:37:37 2010 (r202963) @@ -518,8 +518,8 @@ usage(void) { (void)fprintf(stderr, "%s\n%s\n", -"usage: cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpv] source_file target_file", -" cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpv] source_file ... " +"usage: cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpvx] source_file target_file", +" cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpvx] source_file ... " "target_directory"); exit(EX_USAGE); } Modified: projects/tcp_cc_head/bin/csh/config.h ============================================================================== --- projects/tcp_cc_head/bin/csh/config.h Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/csh/config.h Mon Jan 25 07:37:37 2010 (r202963) @@ -54,7 +54,7 @@ #define HAVE_GETPWENT 1 /* Define to 1 if you have the `getutent' function. */ -/* #undef HAVE_GETUTENT */ +#define HAVE_GETUTENT 1 /* Define if you have the iconv() function. */ /* #undef HAVE_ICONV */ @@ -130,10 +130,10 @@ #define HAVE_STRUCT_UTMP_UT_HOST 1 /* Define to 1 if `ut_tv' is member of `struct utmp'. */ -/* #undef HAVE_STRUCT_UTMP_UT_TV */ +#define HAVE_STRUCT_UTMP_UT_TV 1 /* Define to 1 if `ut_user' is member of `struct utmp'. */ -/* #undef HAVE_STRUCT_UTMP_UT_USER */ +#define HAVE_STRUCT_UTMP_UT_USER 1 /* Define to 1 if `ut_xtime' is member of `struct utmp'. */ /* #undef HAVE_STRUCT_UTMP_UT_XTIME */ @@ -159,10 +159,10 @@ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the header file. */ -/* #undef HAVE_UTMPX_H */ +#define HAVE_UTMPX_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_UTMP_H 1 +/* #undef HAVE_UTMP_H */ /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 Modified: projects/tcp_cc_head/bin/csh/config_p.h ============================================================================== --- projects/tcp_cc_head/bin/csh/config_p.h Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/csh/config_p.h Mon Jan 25 07:37:37 2010 (r202963) @@ -85,6 +85,7 @@ /* Use LC_MESSAGES locale category to open the message catalog */ #define MCLoadBySet NL_CAT_LOCALE #define BUFSIZE 8192 +#define UTMPX_FILE "/var/run/utx.active" #endif #if defined(__bsdi__) Modified: projects/tcp_cc_head/bin/csh/iconv_stub.c ============================================================================== --- projects/tcp_cc_head/bin/csh/iconv_stub.c Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/csh/iconv_stub.c Mon Jan 25 07:37:37 2010 (r202963) @@ -61,9 +61,20 @@ dl_iconv_open(const char *tocode, const if (iconvlib == NULL) return (iconv_t)-1; iconv_open = (iconv_open_t *)dlfunc(iconvlib, ICONV_OPEN); + if (iconv_open == NULL) + goto dlfunc_err; dl_iconv = (dl_iconv_t *)dlfunc(iconvlib, ICONV_ENGINE); + if (dl_iconv == NULL) + goto dlfunc_err; dl_iconv_close = (dl_iconv_close_t *)dlfunc(iconvlib, ICONV_CLOSE); + if (dl_iconv_close == NULL) + goto dlfunc_err; } return iconv_open(tocode, fromcode); + +dlfunc_err: + dlclose(iconvlib); + iconvlib = NULL; + return (iconv_t)-1; } Modified: projects/tcp_cc_head/bin/date/Makefile ============================================================================== --- projects/tcp_cc_head/bin/date/Makefile Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/date/Makefile Mon Jan 25 07:37:37 2010 (r202963) @@ -3,7 +3,5 @@ PROG= date SRCS= date.c netdate.c vary.c -DPADD= ${LIBUTIL} -LDADD= -lutil .include Modified: projects/tcp_cc_head/bin/date/date.1 ============================================================================== --- projects/tcp_cc_head/bin/date/date.1 Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/date/date.1 Mon Jan 25 07:37:37 2010 (r202963) @@ -299,7 +299,7 @@ for more information. .El .Sh FILES .Bl -tag -width /var/log/messages -compact -.It Pa /var/log/wtmp +.It Pa /var/log/utx.log record of date resets and time changes .It Pa /var/log/messages record of the user setting the time @@ -406,9 +406,9 @@ fails. .Sh SEE ALSO .Xr locale 1 , .Xr gettimeofday 2 , +.Xr getutxent 3 , .Xr strftime 3 , .Xr strptime 3 , -.Xr utmp 5 , .Xr timed 8 .Rs .%T "TSP: The Time Synchronization Protocol for UNIX 4.3BSD" Modified: projects/tcp_cc_head/bin/date/date.c ============================================================================== --- projects/tcp_cc_head/bin/date/date.c Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/date/date.c Mon Jan 25 07:37:37 2010 (r202963) @@ -48,12 +48,12 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include #include #include +#include #include "extern.h" #include "vary.h" @@ -181,6 +181,7 @@ main(int argc, char *argv[]) static void setthetime(const char *fmt, const char *p, int jflag, int nflag) { + struct utmpx utx; struct tm *lt; struct timeval tv; const char *dot, *t; @@ -271,12 +272,16 @@ setthetime(const char *fmt, const char * if (!jflag) { /* set the time */ if (nflag || netsettime(tval)) { - logwtmp("|", "date", ""); + utx.ut_type = OLD_TIME; + gettimeofday(&utx.ut_tv, NULL); + pututxline(&utx); tv.tv_sec = tval; tv.tv_usec = 0; if (settimeofday(&tv, (struct timezone *)NULL)) err(1, "settimeofday (timeval)"); - logwtmp("{", "date", ""); + utx.ut_type = NEW_TIME; + gettimeofday(&utx.ut_tv, NULL); + pututxline(&utx); } if ((p = getlogin()) == NULL) Modified: projects/tcp_cc_head/bin/getfacl/getfacl.1 ============================================================================== --- projects/tcp_cc_head/bin/getfacl/getfacl.1 Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/getfacl/getfacl.1 Mon Jan 25 07:37:37 2010 (r202963) @@ -30,7 +30,7 @@ .\" Developed by the TrustedBSD Project. .\" Support for POSIX.1e access control lists. .\" -.Dd September 04, 2009 +.Dd September 4, 2009 .Dt GETFACL 1 .Os .Sh NAME Modified: projects/tcp_cc_head/bin/kenv/kenv.c ============================================================================== --- projects/tcp_cc_head/bin/kenv/kenv.c Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/kenv/kenv.c Mon Jan 25 07:37:37 2010 (r202963) @@ -118,7 +118,7 @@ main(int argc, char **argv) } static int -kdumpenv() +kdumpenv(void) { char *buf, *cp; int buflen, envlen; Modified: projects/tcp_cc_head/bin/ls/ls.c ============================================================================== --- projects/tcp_cc_head/bin/ls/ls.c Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/ls/ls.c Mon Jan 25 07:37:37 2010 (r202963) @@ -399,7 +399,7 @@ main(int argc, char *argv[]) * If not -F, -d or -l options, follow any symbolic links listed on * the command line. */ - if (!f_longform && !f_listdir && !f_type) + if (!f_longform && !f_listdir && (!f_type || f_slash)) fts_options |= FTS_COMFOLLOW; /* @@ -508,7 +508,7 @@ traverse(int argc, char *argv[], int opt break; case FTS_DNR: case FTS_ERR: - warnx("%s: %s", p->fts_name, strerror(p->fts_errno)); + warnx("%s: %s", p->fts_path, strerror(p->fts_errno)); rval = 1; break; case FTS_D: @@ -559,7 +559,8 @@ display(const FTSENT *p, FTSENT *list, i long maxblock; u_long btotal, labelstrlen, maxinode, maxlen, maxnlink; u_long maxlabelstr; - int bcfile, maxflags; + u_int devstrlen; + int maxflags; gid_t maxgroup; uid_t maxuser; size_t flen, ulen, glen; @@ -651,7 +652,7 @@ display(const FTSENT *p, FTSENT *list, i MAKENINES(maxsize); free(jinitmax); } - bcfile = 0; + devstrlen = 0; flags = NULL; for (cur = list, entries = 0; cur; cur = cur->fts_link) { if (cur->fts_info == FTS_ERR || cur->fts_info == FTS_NS) { @@ -791,9 +792,15 @@ label_out: np->group = &np->data[ulen + 1]; (void)strcpy(np->group, group); - if (S_ISCHR(sp->st_mode) || - S_ISBLK(sp->st_mode)) - bcfile = 1; + if ((S_ISCHR(sp->st_mode) || + S_ISBLK(sp->st_mode)) && + devstrlen < DEVSTR_HEX_LEN) { + if (minor(sp->st_rdev) > 255 || + minor(sp->st_rdev) < 0) + devstrlen = DEVSTR_HEX_LEN; + else + devstrlen = DEVSTR_LEN; + } if (f_flags) { np->flags = &np->data[ulen + glen + 2]; @@ -825,7 +832,6 @@ label_out: d.entries = entries; d.maxlen = maxlen; if (needstats) { - d.bcfile = bcfile; d.btotal = btotal; (void)snprintf(buf, sizeof(buf), "%lu", maxblock); d.s_block = strlen(buf); @@ -836,8 +842,14 @@ label_out: d.s_inode = strlen(buf); (void)snprintf(buf, sizeof(buf), "%lu", maxnlink); d.s_nlink = strlen(buf); - (void)snprintf(buf, sizeof(buf), "%ju", maxsize); - d.s_size = strlen(buf); + if (f_humanval) + d.s_size = HUMANVALSTR_LEN; + else { + (void)snprintf(buf, sizeof(buf), "%ju", maxsize); + d.s_size = strlen(buf); + } + if (d.s_size < devstrlen) + d.s_size = devstrlen; d.s_user = maxuser; } printfcn(&d); Modified: projects/tcp_cc_head/bin/ls/ls.h ============================================================================== --- projects/tcp_cc_head/bin/ls/ls.h Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/ls/ls.h Mon Jan 25 07:37:37 2010 (r202963) @@ -35,6 +35,10 @@ #define NO_PRINT 1 +#define HUMANVALSTR_LEN 5 +#define DEVSTR_LEN 8 +#define DEVSTR_HEX_LEN 15 + extern long blocksize; /* block size units */ extern int f_accesstime; /* use time of last access */ @@ -62,7 +66,6 @@ extern int f_color; /* add type in colo typedef struct { FTSENT *list; u_long btotal; - int bcfile; int entries; int maxlen; u_int s_block; Modified: projects/tcp_cc_head/bin/ls/print.c ============================================================================== --- projects/tcp_cc_head/bin/ls/print.c Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/ls/print.c Mon Jan 25 07:37:37 2010 (r202963) @@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$"); #include "extern.h" static int printaname(const FTSENT *, u_long, u_long); +static void printdev(size_t, dev_t); static void printlink(const FTSENT *); static void printtime(time_t); static int printtype(u_int); @@ -165,16 +166,7 @@ printlong(const DISPLAY *dp) if (f_label) (void)printf("%-*s ", dp->s_label, np->label); if (S_ISCHR(sp->st_mode) || S_ISBLK(sp->st_mode)) - if (minor(sp->st_rdev) > 255 || minor(sp->st_rdev) < 0) - (void)printf("%3d, 0x%08x ", - major(sp->st_rdev), - (u_int)minor(sp->st_rdev)); - else - (void)printf("%3d, %3d ", - major(sp->st_rdev), minor(sp->st_rdev)); - else if (dp->bcfile) - (void)printf("%*s%*jd ", - 8 - dp->s_size, "", dp->s_size, sp->st_size); + printdev(dp->s_size, sp->st_rdev); else printsize(dp->s_size, sp->st_size); if (f_accesstime) @@ -353,6 +345,24 @@ printaname(const FTSENT *p, u_long inode return (chcnt); } +/* + * Print device special file major and minor numbers. + */ +static void +printdev(size_t width, dev_t dev) +{ + char buf[DEVSTR_HEX_LEN + 1]; + + if (minor(dev) > 255 || minor(dev) < 0) + (void)snprintf(buf, sizeof(buf), "%3d, 0x%08x", + major(dev), (u_int)minor(dev)); + else + (void)snprintf(buf, sizeof(buf), "%3d, %3d", + major(dev), minor(dev)); + + (void)printf("%*s ", (u_int)width, buf); +} + static void printtime(time_t ftime) { @@ -592,11 +602,15 @@ printsize(size_t width, off_t bytes) { if (f_humanval) { - char buf[5]; + /* + * Reserve one space before the size and allocate room for + * the trailing '\0'. + */ + char buf[HUMANVALSTR_LEN - 1 + 1]; humanize_number(buf, sizeof(buf), (int64_t)bytes, "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL); - (void)printf("%5s ", buf); + (void)printf("%*s ", (u_int)width, buf); } else (void)printf("%*jd ", (u_int)width, bytes); } Modified: projects/tcp_cc_head/bin/pax/ftree.c ============================================================================== --- projects/tcp_cc_head/bin/pax/ftree.c Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/pax/ftree.c Mon Jan 25 07:37:37 2010 (r202963) @@ -219,7 +219,7 @@ ftree_sel(ARCHD *arcn) */ void -ftree_notsel() +ftree_notsel(void) { if (ftent != NULL) (void)fts_set(ftsp, ftent, FTS_SKIP); Modified: projects/tcp_cc_head/bin/pax/gen_subs.c ============================================================================== --- projects/tcp_cc_head/bin/pax/gen_subs.c Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/pax/gen_subs.c Mon Jan 25 07:37:37 2010 (r202963) @@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -66,10 +65,6 @@ __FBSDID("$FreeBSD$"); #define OLDFRMTM "%b %e %Y" #define CURFRMTD "%e %b %H:%M" #define OLDFRMTD "%e %b %Y" -#ifndef UT_NAMESIZE -#define UT_NAMESIZE 8 -#endif -#define UT_GRPSIZE 6 static int d_first = -1; @@ -116,9 +111,8 @@ ls_list(ARCHD *arcn, time_t now, FILE *f */ if (strftime(f_date,DATELEN,timefrmt,localtime(&(sbp->st_mtime))) == 0) f_date[0] = '\0'; - (void)fprintf(fp, "%s%2u %-*s %-*s ", f_mode, sbp->st_nlink, - UT_NAMESIZE, name_uid(sbp->st_uid, 1), UT_GRPSIZE, - name_gid(sbp->st_gid, 1)); + (void)fprintf(fp, "%s%2u %-12s %-12s ", f_mode, sbp->st_nlink, + name_uid(sbp->st_uid, 1), name_gid(sbp->st_gid, 1)); /* * print device id's for devices, or sizes for other nodes Modified: projects/tcp_cc_head/bin/pax/sel_subs.c ============================================================================== --- projects/tcp_cc_head/bin/pax/sel_subs.c Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/pax/sel_subs.c Mon Jan 25 07:37:37 2010 (r202963) @@ -396,6 +396,7 @@ trng_add(char *str) default: paxwarn(1, "Bad option %c with time range %s", *flgpt, str); + free(pt); goto out; } ++flgpt; Modified: projects/tcp_cc_head/bin/pkill/Makefile ============================================================================== --- projects/tcp_cc_head/bin/pkill/Makefile Mon Jan 25 06:37:44 2010 (r202962) +++ projects/tcp_cc_head/bin/pkill/Makefile Mon Jan 25 07:37:37 2010 (r202963) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Mon Jan 25 23:24:25 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E46901065692; Mon, 25 Jan 2010 23:24:25 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D1F0D8FC16; Mon, 25 Jan 2010 23:24:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0PNOPVe009225; Mon, 25 Jan 2010 23:24:25 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0PNOPKo009220; Mon, 25 Jan 2010 23:24:25 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001252324.o0PNOPKo009220@svn.freebsd.org> From: Jeff Roberson Date: Mon, 25 Jan 2010 23:24:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r202989 - projects/suj/head/sys/ufs/ffs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2010 23:24:26 -0000 Author: jeff Date: Mon Jan 25 23:24:25 2010 New Revision: 202989 URL: http://svn.freebsd.org/changeset/base/202989 Log: - Change the journal format to place a segment header on every physical block so that there is no possibility that recovery confuses a record with a segment header. Also add a block count to the segment header so this doesn't need to be calculated everywhere. - Switch the SUJ flag to what was INDEXDIRS so that old kernels automatically clear the SUJ flag if it is mounted. Old fsck can still create differences between the checker and the journal so the filesystem must be checked all the way to clean with either the old or new fsck when returning to a new implementation from old. - We can immediately remove canceled jaddrefs from the inode list of refs unless they are NEWBLOCK references which modify a bitmap. Adjust the ref counts appropriately so that dirty mounted filesystems don't panic on invalid link counts if the journal is ignored. - Require the force flag to mount a journaled filesystem if it is dirty. Tell the user that this will invalidate his journal and require a full fsck. - Don't permit truncate to change the size of the file until it's done when using suj. This can confuse the number of frags in use when recovery evaluates the inode. Modified: projects/suj/head/sys/ufs/ffs/ffs_inode.c projects/suj/head/sys/ufs/ffs/ffs_softdep.c projects/suj/head/sys/ufs/ffs/ffs_vfsops.c projects/suj/head/sys/ufs/ffs/fs.h Modified: projects/suj/head/sys/ufs/ffs/ffs_inode.c ============================================================================== --- projects/suj/head/sys/ufs/ffs/ffs_inode.c Mon Jan 25 20:59:04 2010 (r202988) +++ projects/suj/head/sys/ufs/ffs/ffs_inode.c Mon Jan 25 23:24:25 2010 (r202989) @@ -187,6 +187,7 @@ ffs_truncate(vp, length, flags, cred, td * (e.g., the file is being unlinked), then pick it off with * soft updates below. */ + allerror = 0; needextclean = 0; softdepslowdown = DOINGSOFTDEP(vp) && softdep_slowdown(vp); extblocks = 0; @@ -412,7 +413,13 @@ ffs_truncate(vp, length, flags, cred, td DIP_SET(ip, i_db[i], 0); } ip->i_flag |= IN_CHANGE | IN_UPDATE; - allerror = ffs_update(vp, 1); + /* + * When doing softupdate journaling we must preserve the size along + * with the old pointers until they are freed or we might not + * know how many fragments remain. + */ + if (!DOINGSUJ(vp)) + allerror = ffs_update(vp, 1); /* * Having written the new inode to disk, save its new configuration Modified: projects/suj/head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- projects/suj/head/sys/ufs/ffs/ffs_softdep.c Mon Jan 25 20:59:04 2010 (r202988) +++ projects/suj/head/sys/ufs/ffs/ffs_softdep.c Mon Jan 25 23:24:25 2010 (r202989) @@ -566,23 +566,24 @@ static int handle_written_indirdep(struc struct buf**); static int handle_written_inodeblock(struct inodedep *, struct buf *); static int handle_written_bmsafemap(struct bmsafemap *, struct buf *); -static void handle_written_jaddref(struct jaddref *, struct jseg *); -static void handle_written_jremref(struct jremref *, struct jseg *); +static void handle_written_jaddref(struct jaddref *); +static void handle_written_jremref(struct jremref *); static void handle_written_jseg(struct jseg *, struct buf *); -static void handle_written_jnewblk(struct jnewblk *, struct jseg *); -static void handle_written_jfreeblk(struct jfreeblk *, struct jseg *); -static void handle_written_jfreefrag(struct jfreefrag *, struct jseg *); +static void handle_written_jnewblk(struct jnewblk *); +static void handle_written_jfreeblk(struct jfreeblk *); +static void handle_written_jfreefrag(struct jfreefrag *); static void complete_jseg(struct jseg *); static void jseg_write(struct fs *, struct jblocks *, struct jseg *, uint8_t *); -static void jaddref_write(struct jaddref *, uint8_t *); -static void jremref_write(struct jremref *, uint8_t *); -static void jmvref_write(struct jmvref *, uint8_t *); -static void jtrunc_write(struct jtrunc *, uint8_t *); -static void jnewblk_write(struct jnewblk *, uint8_t *); -static void jfreeblk_write(struct jfreeblk *, uint8_t *); -static void jfreefrag_write(struct jfreefrag *, uint8_t *); -static inline void inoref_write(struct inoref *, struct jrefrec *); +static void jaddref_write(struct jaddref *, struct jseg *, uint8_t *); +static void jremref_write(struct jremref *, struct jseg *, uint8_t *); +static void jmvref_write(struct jmvref *, struct jseg *, uint8_t *); +static void jtrunc_write(struct jtrunc *, struct jseg *, uint8_t *); +static void jnewblk_write(struct jnewblk *, struct jseg *, uint8_t *); +static void jfreeblk_write(struct jfreeblk *, struct jseg *, uint8_t *); +static void jfreefrag_write(struct jfreefrag *, struct jseg *, uint8_t *); +static inline void inoref_write(struct inoref *, struct jseg *, + struct jrefrec *); static void handle_allocdirect_partdone(struct allocdirect *, struct workhead *); static void cancel_newblk(struct newblk *, struct workhead *); @@ -694,7 +695,7 @@ static struct jaddref *newjaddref(struct uint16_t); static inline void newinoref(struct inoref *, ino_t, ino_t, off_t, nlink_t, uint16_t); -static inline struct jsegdep *inoref_segattach(struct inoref *, struct jseg *); +static inline struct jsegdep *inoref_jseg(struct inoref *); static struct jmvref *newjmvref(struct inode *, ino_t, off_t, off_t); static struct jfreeblk *newjfreeblk(struct freeblks *, ufs_lbn_t, ufs2_daddr_t, int); @@ -945,6 +946,10 @@ static int stat_indir_blk_ptrs; /* bufs static int stat_inode_bitmap; /* bufs redirtied as inode bitmap not written */ static int stat_direct_blk_ptrs;/* bufs redirtied as direct ptrs not written */ static int stat_dir_entry; /* bufs redirtied as dir entry cannot write */ +static int stat_jaddref; /* bufs redirtied as ino bitmap can not write */ +static int stat_jnewblk; /* bufs redirtied as blk bitmap can not write */ +static int stat_journal_min; /* Times hit journal min threshold */ +static int stat_journal_low; /* Times hit journal low threshold */ SYSCTL_INT(_debug_softdep, OID_AUTO, max_softdeps, CTLFLAG_RW, &max_softdeps, 0, ""); @@ -972,6 +977,14 @@ SYSCTL_INT(_debug_softdep, OID_AUTO, dir &stat_direct_blk_ptrs, 0, ""); SYSCTL_INT(_debug_softdep, OID_AUTO, dir_entry, CTLFLAG_RW, &stat_dir_entry, 0, ""); +SYSCTL_INT(_debug_softdep, OID_AUTO, jaddref_rollback, CTLFLAG_RW, + &stat_jaddref, 0, ""); +SYSCTL_INT(_debug_softdep, OID_AUTO, jnewblk_rollback, CTLFLAG_RW, + &stat_jnewblk, 0, ""); +SYSCTL_INT(_debug_softdep, OID_AUTO, journal_low, CTLFLAG_RW, + &stat_journal_low, 0, ""); +SYSCTL_INT(_debug_softdep, OID_AUTO, journal_min, CTLFLAG_RW, + &stat_journal_min, 0, ""); SYSCTL_DECL(_vfs_ffs); @@ -2172,6 +2185,7 @@ journal_suspend(ump) jblocks = ump->softdep_jblocks; MNT_ILOCK(mp); if ((mp->mnt_kern_flag & MNTK_SUSPEND) == 0) { + stat_journal_min++; mp->mnt_kern_flag |= MNTK_SUSPEND; mp->mnt_susp_owner = FIRST_THREAD_IN_PROC(softdepproc); } @@ -2208,6 +2222,7 @@ softdep_prealloc(vp, waitok) FREE_LOCK(&lk); return (0); } + stat_journal_low++; FREE_LOCK(&lk); if (waitok == MNT_NOWAIT) return (ENOSPC); @@ -2241,6 +2256,7 @@ softdep_prelink(dvp, vp) mtx_assert(&lk, MA_OWNED); if (journal_space(ump, jblocks->jb_low)) return; + stat_journal_low++; FREE_LOCK(&lk); if (vp) ffs_syncvnode(vp, MNT_NOWAIT); @@ -2273,15 +2289,19 @@ jseg_write(fs, jblocks, jseg, data) rec->jsr_seq = jseg->js_seq; rec->jsr_oldest = jblocks->jb_oldestseq; rec->jsr_cnt = jseg->js_cnt; + rec->jsr_blocks = jseg->js_size / DEV_BSIZE; rec->jsr_crc = 0; rec->jsr_time = fs->fs_mtime; } static inline void -inoref_write(inoref, rec) +inoref_write(inoref, jseg, rec) struct inoref *inoref; + struct jseg *jseg; struct jrefrec *rec; { + + inoref->if_jsegdep->jd_seg = jseg; rec->jr_ino = inoref->if_ino; rec->jr_parent = inoref->if_parent; rec->jr_nlink = inoref->if_nlink; @@ -2290,32 +2310,35 @@ inoref_write(inoref, rec) } static void -jaddref_write(jaddref, data) +jaddref_write(jaddref, jseg, data) struct jaddref *jaddref; + struct jseg *jseg; uint8_t *data; { struct jrefrec *rec; rec = (struct jrefrec *)data; rec->jr_op = JOP_ADDREF; - inoref_write(&jaddref->ja_ref, rec); + inoref_write(&jaddref->ja_ref, jseg, rec); } static void -jremref_write(jremref, data) +jremref_write(jremref, jseg, data) struct jremref *jremref; + struct jseg *jseg; uint8_t *data; { struct jrefrec *rec; rec = (struct jrefrec *)data; rec->jr_op = JOP_REMREF; - inoref_write(&jremref->jr_ref, rec); + inoref_write(&jremref->jr_ref, jseg, rec); } static void -jmvref_write(jmvref, data) +jmvref_write(jmvref, jseg, data) struct jmvref *jmvref; + struct jseg *jseg; uint8_t *data; { struct jmvrec *rec; @@ -2329,12 +2352,14 @@ jmvref_write(jmvref, data) } static void -jnewblk_write(jnewblk, data) +jnewblk_write(jnewblk, jseg, data) struct jnewblk *jnewblk; + struct jseg *jseg; uint8_t *data; { struct jblkrec *rec; + jnewblk->jn_jsegdep->jd_seg = jseg; rec = (struct jblkrec *)data; rec->jb_op = JOP_NEWBLK; rec->jb_ino = jnewblk->jn_ino; @@ -2345,12 +2370,14 @@ jnewblk_write(jnewblk, data) } static void -jfreeblk_write(jfreeblk, data) +jfreeblk_write(jfreeblk, jseg, data) struct jfreeblk *jfreeblk; + struct jseg *jseg; uint8_t *data; { struct jblkrec *rec; + jfreeblk->jf_jsegdep->jd_seg = jseg; rec = (struct jblkrec *)data; rec->jb_op = JOP_FREEBLK; rec->jb_ino = jfreeblk->jf_ino; @@ -2361,12 +2388,14 @@ jfreeblk_write(jfreeblk, data) } static void -jfreefrag_write(jfreefrag, data) +jfreefrag_write(jfreefrag, jseg, data) struct jfreefrag *jfreefrag; + struct jseg *jseg; uint8_t *data; { struct jblkrec *rec; + jfreefrag->fr_jsegdep->jd_seg = jseg; rec = (struct jblkrec *)data; rec->jb_op = JOP_FREEBLK; rec->jb_ino = jfreefrag->fr_ino; @@ -2377,8 +2406,9 @@ jfreefrag_write(jfreefrag, data) } static void -jtrunc_write(jtrunc, data) +jtrunc_write(jtrunc, jseg, data) struct jtrunc *jtrunc; + struct jseg *jseg; uint8_t *data; { struct jtrncrec *rec; @@ -2406,10 +2436,11 @@ softdep_process_journal(mp, flags) uint8_t *data; struct fs *fs; int segwritten; - int jrecmin; /* Minimum write size. */ - int jrecmax; /* Maximum write size. */ + int jrecmin; /* Minimum records per block. */ + int jrecmax; /* Maximum records per block. */ int size; int cnt; + int off; if ((mp->mnt_flag & MNT_SUJ) == 0) return; @@ -2421,8 +2452,8 @@ softdep_process_journal(mp, flags) * bound is picked to prevent buffer cache fragmentation and limit * processing time per I/O. */ - jrecmax = fs->fs_bsize / JREC_SIZE; - jrecmin = DEV_BSIZE / JREC_SIZE; + jrecmin = (DEV_BSIZE / JREC_SIZE) - 1; /* -1 for seg header */ + jrecmax = (fs->fs_bsize / DEV_BSIZE) * jrecmin; segwritten = 0; while ((cnt = ump->softdep_on_journal) != 0) { /* @@ -2430,15 +2461,15 @@ softdep_process_journal(mp, flags) * entries and add them to the segment. Notice cnt is * off by one to account for the space required by the * jsegrec. If we don't have a full block to log skip it - * unless we haven't written anything in 10 seconds. + * unless we haven't written anything in 5 seconds. */ cnt++; if (cnt < jrecmax) { if (segwritten) - return; - if (flags != MNT_WAIT && - (ticks - jblocks->jb_age) > hz*10) - break; + break; + if (flags == MNT_NOWAIT && + (ticks - jblocks->jb_age) < hz*5) + break; } /* * Verify some free journal space. softdep_prealloc() should @@ -2458,9 +2489,7 @@ softdep_process_journal(mp, flags) workitem_alloc(&jseg->js_list, D_JSEG, mp); LIST_INIT(&jseg->js_entries); jseg->js_state = ATTACHED; - jseg->js_refs = 1; /* Self reference. */ jseg->js_jblocks = jblocks; - size = roundup2(cnt * JREC_SIZE, DEV_BSIZE); bp = geteblk(fs->fs_bsize, 0); ACQUIRE_LOCK(&lk); /* @@ -2482,31 +2511,31 @@ softdep_process_journal(mp, flags) * Calculate the disk block size required for the available * records rounded to the min size. */ - cnt = ump->softdep_on_journal + 1; + cnt = ump->softdep_on_journal; if (cnt < jrecmax) - cnt = roundup2(cnt, jrecmin); + size = howmany(cnt, jrecmin) * DEV_BSIZE; else - cnt = jrecmax; - size = cnt * JREC_SIZE; + size = fs->fs_bsize; /* * Allocate a disk block for this journal data and account * for truncation of the requested size if enough contiguous * space was not available. */ - bp->b_blkno = bp->b_lblkno = jblocks_alloc(jblocks, size, - &size); + bp->b_blkno = jblocks_alloc(jblocks, size, &size); + bp->b_lblkno = bp->b_blkno; bp->b_offset = bp->b_blkno * DEV_BSIZE; bp->b_bcount = size; bp->b_bufobj = &ump->um_devvp->v_bufobj; bp->b_flags &= ~B_INVAL; /* - * Initialize our jseg with as many as cnt - 1 records. - * Assign the next sequence number to it and link it - * in-order. + * Initialize our jseg with cnt records. Assign the next + * sequence number to it and link it in-order. */ - cnt = MIN(ump->softdep_on_journal, (size / JREC_SIZE) - 1); + cnt = MIN(ump->softdep_on_journal, + (size / DEV_BSIZE) * jrecmin); jseg->js_buf = bp; jseg->js_cnt = cnt; + jseg->js_refs = cnt + 1; /* Self ref. */ jseg->js_size = size; jseg->js_seq = jblocks->jb_nextseq++; if (TAILQ_EMPTY(&jblocks->jb_segs)) @@ -2518,43 +2547,49 @@ softdep_process_journal(mp, flags) * Start filling in records from the pending list. */ data = bp->b_data; - jseg_write(fs, jblocks, jseg, data); - data += JREC_SIZE; + off = 0; while ((wk = LIST_FIRST(&ump->softdep_journal_pending)) != NULL) { + /* Place a segment header on every device block. */ + if ((off % DEV_BSIZE) == 0) { + jseg_write(fs, jblocks, jseg, data); + off += JREC_SIZE; + data = bp->b_data + off; + } remove_from_journal(wk); wk->wk_state |= IOSTARTED; WORKLIST_INSERT(&jseg->js_entries, wk); switch (wk->wk_type) { case D_JADDREF: - jaddref_write(WK_JADDREF(wk), data); + jaddref_write(WK_JADDREF(wk), jseg, data); break; case D_JREMREF: - jremref_write(WK_JREMREF(wk), data); + jremref_write(WK_JREMREF(wk), jseg, data); break; case D_JMVREF: - jmvref_write(WK_JMVREF(wk), data); + jmvref_write(WK_JMVREF(wk), jseg, data); break; case D_JNEWBLK: - jnewblk_write(WK_JNEWBLK(wk), data); + jnewblk_write(WK_JNEWBLK(wk), jseg, data); break; case D_JFREEBLK: - jfreeblk_write(WK_JFREEBLK(wk), data); + jfreeblk_write(WK_JFREEBLK(wk), jseg, data); break; case D_JFREEFRAG: - jfreefrag_write(WK_JFREEFRAG(wk), data); + jfreefrag_write(WK_JFREEFRAG(wk), jseg, data); break; case D_JTRUNC: - jtrunc_write(WK_JTRUNC(wk), data); + jtrunc_write(WK_JTRUNC(wk), jseg, data); break; default: panic("process_journal: Unknown type %s", TYPENAME(wk->wk_type)); /* NOTREACHED */ } - data += JREC_SIZE; if (--cnt == 0) break; + off += JREC_SIZE; + data = bp->b_data + off; } /* * Write this one buffer and continue. @@ -2621,29 +2656,29 @@ complete_jseg(jseg) KASSERT(i < jseg->js_cnt, ("handle_written_jseg: overflow %d >= %d", i, jseg->js_cnt)); - jseg->js_refs++; /* Ref goes to the jsegdep below. */ switch (wk->wk_type) { case D_JADDREF: - handle_written_jaddref(WK_JADDREF(wk), jseg); + handle_written_jaddref(WK_JADDREF(wk)); break; case D_JREMREF: - handle_written_jremref(WK_JREMREF(wk), jseg); + handle_written_jremref(WK_JREMREF(wk)); break; case D_JMVREF: - jseg->js_refs--; /* No jsegdep here. */ + /* No jsegdep here. */ + free_jseg(jseg); jmvref = WK_JMVREF(wk); LIST_REMOVE(jmvref, jm_deps); free_pagedep(jmvref->jm_pagedep); WORKITEM_FREE(jmvref, D_JMVREF); break; case D_JNEWBLK: - handle_written_jnewblk(WK_JNEWBLK(wk), jseg); + handle_written_jnewblk(WK_JNEWBLK(wk)); break; case D_JFREEBLK: - handle_written_jfreeblk(WK_JFREEBLK(wk), jseg); + handle_written_jfreeblk(WK_JFREEBLK(wk)); break; case D_JFREEFRAG: - handle_written_jfreefrag(WK_JFREEFRAG(wk), jseg); + handle_written_jfreefrag(WK_JFREEFRAG(wk)); break; case D_JTRUNC: WK_JTRUNC(wk)->jt_jsegdep->jd_seg = jseg; @@ -2698,15 +2733,13 @@ handle_written_jseg(jseg, bp) } static inline struct jsegdep * -inoref_segattach(inoref, jseg) +inoref_jseg(inoref) struct inoref *inoref; - struct jseg *jseg; { struct jsegdep *jsegdep; jsegdep = inoref->if_jsegdep; inoref->if_jsegdep = NULL; - jsegdep->jd_seg = jseg; return (jsegdep); } @@ -2717,18 +2750,15 @@ inoref_segattach(inoref, jseg) * for the jremref to complete will be awoken by free_jremref. */ static void -handle_written_jremref(jremref, jseg) +handle_written_jremref(jremref) struct jremref *jremref; - struct jseg *jseg; { struct inodedep *inodedep; struct jsegdep *jsegdep; struct dirrem *dirrem; - /* - * Attach the jsegdep to the jseg. - */ - jsegdep = inoref_segattach(&jremref->jr_ref, jseg); + /* Grab the jsegdep. */ + jsegdep = inoref_jseg(&jremref->jr_ref); /* * Remove us from the inoref list. */ @@ -2758,19 +2788,16 @@ handle_written_jremref(jremref, jseg) * bmsafemap dependency and attempt to remove the jaddref from the bmsafemap. */ static void -handle_written_jaddref(jaddref, jseg) +handle_written_jaddref(jaddref) struct jaddref *jaddref; - struct jseg *jseg; { struct jsegdep *jsegdep; struct inodedep *inodedep; struct diradd *diradd; struct mkdir *mkdir; - /* - * Attach the jsegdep to the jseg. - */ - jsegdep = inoref_segattach(&jaddref->ja_ref, jseg); + /* Grab the jsegdep. */ + jsegdep = inoref_jseg(&jaddref->ja_ref); mkdir = NULL; diradd = NULL; if (inodedep_lookup(jaddref->ja_list.wk_mp, jaddref->ja_ino, @@ -2820,20 +2847,16 @@ handle_written_jaddref(jaddref, jseg) * is placed in the bmsafemap to await notification of a written bitmap. */ static void -handle_written_jnewblk(jnewblk, jseg) +handle_written_jnewblk(jnewblk) struct jnewblk *jnewblk; - struct jseg *jseg; { struct bmsafemap *bmsafemap; struct jsegdep *jsegdep; struct newblk *newblk; - /* - * Attach the jsegdep to the jseg. - */ + /* Grab the jsegdep. */ jsegdep = jnewblk->jn_jsegdep; jnewblk->jn_jsegdep = NULL; - jsegdep->jd_seg = jseg; /* * Add the written block to the bmsafemap so it can be notified when * the bitmap is on disk. @@ -2896,19 +2919,15 @@ free_jfreefrag(jfreefrag) * freefrag is added to the worklist if this completes its dependencies. */ static void -handle_written_jfreefrag(jfreefrag, jseg) +handle_written_jfreefrag(jfreefrag) struct jfreefrag *jfreefrag; - struct jseg *jseg; { struct jsegdep *jsegdep; struct freefrag *freefrag; - /* - * Attach the jsegdep to the jseg. - */ + /* Grab the jsegdep. */ jsegdep = jfreefrag->fr_jsegdep; jfreefrag->fr_jsegdep = NULL; - jsegdep->jd_seg = jseg; freefrag = jfreefrag->fr_freefrag; if (freefrag == NULL) panic("handle_written_jfreefrag: No freefrag."); @@ -2928,17 +2947,15 @@ handle_written_jfreefrag(jfreefrag, jseg * have been reclaimed. */ static void -handle_written_jfreeblk(jfreeblk, jseg) +handle_written_jfreeblk(jfreeblk) struct jfreeblk *jfreeblk; - struct jseg *jseg; { struct freeblks *freeblks; struct jsegdep *jsegdep; - /* Attach the jsegdep to the jseg. */ + /* Grab the jsegdep. */ jsegdep = jfreeblk->jf_jsegdep; jfreeblk->jf_jsegdep = NULL; - jsegdep->jd_seg = jseg; freeblks = jfreeblk->jf_freeblks; LIST_REMOVE(jfreeblk, jf_deps); WORKLIST_INSERT(&freeblks->fb_jwork, &jsegdep->jd_list); @@ -3185,10 +3202,6 @@ move_newblock_dep(jaddref, inodedep) } if (jaddrefn == NULL) return; - if (inodedep == NULL) - if (inodedep_lookup(jaddref->ja_list.wk_mp, jaddref->ja_ino, - 0, &inodedep) == 0) - panic("move_newblock_dep: Lost inodedep"); jaddrefn->ja_state &= ~(ATTACHED | UNDONE); jaddrefn->ja_state |= jaddref->ja_state & (ATTACHED | UNDONE | NEWBLOCK); @@ -3217,6 +3230,7 @@ cancel_jaddref(jaddref, inodedep, wkhd) struct workhead *wkhd; { struct inoref *inoref; + struct jsegdep *jsegdep; int needsj; KASSERT((jaddref->ja_state & COMPLETE) == 0, @@ -3225,19 +3239,22 @@ cancel_jaddref(jaddref, inodedep, wkhd) needsj = 1; else needsj = 0; + if (inodedep == NULL) + if (inodedep_lookup(jaddref->ja_list.wk_mp, jaddref->ja_ino, + 0, &inodedep) == 0) + panic("cancel_jaddref: Lost inodedep"); /* - * If we're not journaling this remove we must adjust the nlink of - * any reference operation that follows us so that it is consistent - * with the in-memory reference. - */ - if (needsj == 0) - for (inoref = TAILQ_NEXT(&jaddref->ja_ref, if_deps); inoref; - inoref = TAILQ_NEXT(inoref, if_deps)) - inoref->if_nlink--; - if (jaddref->ja_ref.if_jsegdep) { - free_jsegdep(jaddref->ja_ref.if_jsegdep); - jaddref->ja_ref.if_jsegdep = NULL; - } + * We must adjust the nlink of any reference operation that follows + * us so that it is consistent with the in-memory reference. This + * ensures that inode nlink rollbacks always have the correct link. + * Entries which have already been copied into the journal buffer + * will be unaltered on disk but the subsequent remove record will + * correct them. + */ + for (inoref = TAILQ_NEXT(&jaddref->ja_ref, if_deps); inoref; + inoref = TAILQ_NEXT(inoref, if_deps)) + inoref->if_nlink--; + jsegdep = inoref_jseg(&jaddref->ja_ref); if (jaddref->ja_state & NEWBLOCK) move_newblock_dep(jaddref, inodedep); if (jaddref->ja_state & IOWAITING) { @@ -3248,8 +3265,24 @@ cancel_jaddref(jaddref, inodedep, wkhd) if (jaddref->ja_state & IOSTARTED) { jaddref->ja_state &= ~IOSTARTED; WORKLIST_REMOVE(&jaddref->ja_list); - } else + WORKLIST_INSERT(wkhd, &jsegdep->jd_list); + } else { + free_jsegdep(jsegdep); remove_from_journal(&jaddref->ja_list); + } + /* + * Leave NEWBLOCK jaddrefs on the inodedep so handle_workitem_remove + * can arrange for them to be freed with the bitmap. Otherwise we + * no longer need this addref attached to the inoreflst and it + * will incorrectly adjust nlink if we leave it. + */ + if ((jaddref->ja_state & NEWBLOCK) == 0) { + TAILQ_REMOVE(&inodedep->id_inoreflst, &jaddref->ja_ref, + if_deps); + jaddref->ja_state |= COMPLETE; + free_jaddref(jaddref); + return (needsj); + } jaddref->ja_state |= GOINGAWAY; /* * Leave the head of the list for jsegdeps for fast merging. @@ -3331,15 +3364,11 @@ cancel_jnewblk(jnewblk, wkhd) struct jnewblk *jnewblk; struct workhead *wkhd; { + struct jsegdep *jsegdep; - if (jnewblk->jn_jsegdep) { - free_jsegdep(jnewblk->jn_jsegdep); - jnewblk->jn_jsegdep = NULL; - } - if (jnewblk->jn_state & IOWAITING) { - jnewblk->jn_state &= ~IOWAITING; - wakeup(&jnewblk->jn_list); - } + jsegdep = jnewblk->jn_jsegdep; + jnewblk->jn_jsegdep = NULL; + free_jsegdep(jsegdep); jnewblk->jn_newblk = NULL; jnewblk->jn_state |= GOINGAWAY; if (jnewblk->jn_state & IOSTARTED) { @@ -3355,6 +3384,10 @@ cancel_jnewblk(jnewblk, wkhd) LIST_INSERT_AFTER(LIST_FIRST(wkhd), &jnewblk->jn_list, wk_list); } else WORKLIST_INSERT(wkhd, &jnewblk->jn_list); + if (jnewblk->jn_state & IOWAITING) { + jnewblk->jn_state &= ~IOWAITING; + wakeup(&jnewblk->jn_list); + } } static void @@ -6706,6 +6739,7 @@ cancel_mkdir_dotdot(ip, dirrem, jremref) panic("cancel_mkdir_dotdot: Unable to find mkdir\n"); if ((jaddref = mkdir->md_jaddref) != NULL) { mkdir->md_jaddref = NULL; + jaddref->ja_state &= ~MKDIR_PARENT; if (inodedep_lookup(UFSTOVFS(ip->i_ump), jaddref->ja_ino, 0, &inodedep) == 0) panic("cancel_mkdir_dotdot: Lost parent inodedep"); @@ -8536,6 +8570,7 @@ initiate_write_bmsafemap(bmsafemap, bp) clrbit(inosused, ino); jaddref->ja_state &= ~ATTACHED; jaddref->ja_state |= UNDONE; + stat_jaddref++; } else if ((bp->b_xflags & BX_BKGRDMARKER) == 0) panic("initiate_write_bmsafemap: inode %d " "marked free", jaddref->ja_ino); @@ -8564,6 +8599,7 @@ initiate_write_bmsafemap(bmsafemap, bp) * it. */ if (cleared) { + stat_jnewblk++; jnewblk->jn_state &= ~ATTACHED; jnewblk->jn_state |= UNDONE; } else if ((bp->b_xflags & BX_BKGRDMARKER) == 0) @@ -10581,6 +10617,7 @@ softdep_request_cleanup(fs, vp) if (error != 0) return (0); } + process_removes(vp); while (fs->fs_pendingblocks > 0 && fs->fs_cstotal.cs_nbfree <= needed) { if (time_second > starttime) return (0); Modified: projects/suj/head/sys/ufs/ffs/ffs_vfsops.c ============================================================================== --- projects/suj/head/sys/ufs/ffs/ffs_vfsops.c Mon Jan 25 20:59:04 2010 (r202988) +++ projects/suj/head/sys/ufs/ffs/ffs_vfsops.c Mon Jan 25 23:24:25 2010 (r202989) @@ -299,7 +299,8 @@ ffs_mount(struct mount *mp) if (fs->fs_clean == 0) { fs->fs_flags |= FS_UNCLEAN; if ((mp->mnt_flag & MNT_FORCE) || - ((fs->fs_flags & FS_NEEDSFSCK) == 0 && + ((fs->fs_flags & + (FS_SUJ | FS_NEEDSFSCK)) == 0 && (fs->fs_flags & FS_DOSOFTDEP))) { printf("WARNING: %s was not %s\n", fs->fs_fsmnt, "properly dismounted"); @@ -307,6 +308,9 @@ ffs_mount(struct mount *mp) printf( "WARNING: R/W mount of %s denied. Filesystem is not clean - run fsck\n", fs->fs_fsmnt); + if (fs->fs_flags & FS_SUJ) + printf( +"WARNING: Forced mount will invalidated journal contents\n"); return (EPERM); } } @@ -707,7 +711,7 @@ ffs_mountfs(devvp, mp, td) if (fs->fs_clean == 0) { fs->fs_flags |= FS_UNCLEAN; if (ronly || (mp->mnt_flag & MNT_FORCE) || - ((fs->fs_flags & FS_NEEDSFSCK) == 0 && + ((fs->fs_flags & (FS_SUJ | FS_NEEDSFSCK)) == 0 && (fs->fs_flags & FS_DOSOFTDEP))) { printf( "WARNING: %s was not properly dismounted\n", @@ -716,6 +720,9 @@ ffs_mountfs(devvp, mp, td) printf( "WARNING: R/W mount of %s denied. Filesystem is not clean - run fsck\n", fs->fs_fsmnt); + if (fs->fs_flags & FS_SUJ) + printf( +"WARNING: Forced mount will invalidated journal contents\n"); error = EPERM; goto out; } Modified: projects/suj/head/sys/ufs/ffs/fs.h ============================================================================== --- projects/suj/head/sys/ufs/ffs/fs.h Mon Jan 25 20:59:04 2010 (r202988) +++ projects/suj/head/sys/ufs/ffs/fs.h Mon Jan 25 23:24:25 2010 (r202989) @@ -411,13 +411,13 @@ CTASSERT(sizeof(struct fs) == 1376); #define FS_UNCLEAN 0x0001 /* filesystem not clean at mount */ #define FS_DOSOFTDEP 0x0002 /* filesystem using soft dependencies */ #define FS_NEEDSFSCK 0x0004 /* filesystem needs sync fsck before mount */ -#define FS_INDEXDIRS 0x0008 /* kernel supports indexed directories */ +#define FS_SUJ 0x0008 /* Filesystem using softupdate journal */ #define FS_ACLS 0x0010 /* file system has POSIX.1e ACLs enabled */ #define FS_MULTILABEL 0x0020 /* file system is MAC multi-label */ #define FS_GJOURNAL 0x0040 /* gjournaled file system */ #define FS_FLAGS_UPDATED 0x0080 /* flags have been moved to new location */ #define FS_NFS4ACLS 0x0100 /* file system has NFSv4 ACLs enabled */ -#define FS_SUJ 0x200 /* Filesystem using softupdate journal */ +#define FS_INDEXDIRS 0x0200 /* kernel supports indexed directories */ /* * Macros to access bits in the fs_active array. @@ -657,17 +657,19 @@ lbn_level(ufs_lbn_t lbn) #define JREC_SIZE 32 /* Record and segment header size. */ #define SUJ_MIN (1 * 1024 * 1024) /* Minimum journal size */ -#define SUJ_MAX (64 * SUJ_MIN) /* Maximum journal size */ +#define SUJ_MAX (32 * SUJ_MIN) /* Maximum journal size */ /* * Size of the segment record header. There is at most one for each disk * block and at least one for each filesystem block in the journal. The - * segment header is followed by an array of records. + * segment header is followed by an array of records. fsck depends on + * the first element in each record being 'op' and the second being 'ino'. */ struct jsegrec { uint64_t jsr_seq; /* Our sequence number */ uint64_t jsr_oldest; /* Oldest valid sequence number */ - uint32_t jsr_cnt; /* Count of valid records */ + uint16_t jsr_cnt; /* Count of valid records */ + uint16_t jsr_blocks; /* Count of DEV_BSIZE blocks. */ uint32_t jsr_crc; /* 32bit crc of the valid space */ ufs_time_t jsr_time; /* timestamp for mount instance */ }; From owner-svn-src-projects@FreeBSD.ORG Mon Jan 25 23:27:22 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 02E5E1065670; Mon, 25 Jan 2010 23:27:22 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E480B8FC0A; Mon, 25 Jan 2010 23:27:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0PNRLUA009909; Mon, 25 Jan 2010 23:27:21 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0PNRLaG009904; Mon, 25 Jan 2010 23:27:21 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001252327.o0PNRLaG009904@svn.freebsd.org> From: Jeff Roberson Date: Mon, 25 Jan 2010 23:27:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r202990 - in projects/suj/head/sbin: fsck_ffs fsdb X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2010 23:27:22 -0000 Author: jeff Date: Mon Jan 25 23:27:21 2010 New Revision: 202990 URL: http://svn.freebsd.org/changeset/base/202990 Log: - Implement partial truncation in the checker. The file is truncated to the lesser of the original size, the last allocated block, and the intended truncation size depending on how far the original truncation got. - Improve recovery performance by doing duplication and reference move operations for each inode all at once. The algorithm is still N^2 but doing it as records are discovered ensures that the rest are out of cache when we search. This reduced fsck time by 80%. - Verify that .. matches the expected parent before deciding to skip a parent's record. - Add some more information to fsdb. Modified: projects/suj/head/sbin/fsck_ffs/fsck.h projects/suj/head/sbin/fsck_ffs/main.c projects/suj/head/sbin/fsck_ffs/suj.c projects/suj/head/sbin/fsdb/fsdb.c Modified: projects/suj/head/sbin/fsck_ffs/fsck.h ============================================================================== --- projects/suj/head/sbin/fsck_ffs/fsck.h Mon Jan 25 23:24:25 2010 (r202989) +++ projects/suj/head/sbin/fsck_ffs/fsck.h Mon Jan 25 23:27:21 2010 (r202990) @@ -388,4 +388,4 @@ void sblock_init(void); void setinodebuf(ino_t); int setup(char *dev); void gjournal_check(const char *filesys); -void suj_check(const char *filesys); +int suj_check(const char *filesys); Modified: projects/suj/head/sbin/fsck_ffs/main.c ============================================================================== --- projects/suj/head/sbin/fsck_ffs/main.c Mon Jan 25 23:24:25 2010 (r202989) +++ projects/suj/head/sbin/fsck_ffs/main.c Mon Jan 25 23:27:21 2010 (r202990) @@ -242,8 +242,9 @@ checkfilesys(char *filesys) if ((fsreadfd = open(filesys, O_RDONLY)) < 0 || readsb(0) == 0) exit(3); /* Cannot read superblock */ close(fsreadfd); - if (sblock.fs_flags & FS_NEEDSFSCK) - exit(4); /* Earlier background failed */ + /* Earlier background failed or journaled */ + if (sblock.fs_flags & (FS_NEEDSFSCK | FS_SUJ)) + exit(4); if ((sblock.fs_flags & FS_DOSOFTDEP) == 0) exit(5); /* Not running soft updates */ size = MIBSIZE; @@ -256,7 +257,7 @@ checkfilesys(char *filesys) } if (ckclean && skipclean) { /* - * If file system is gjournaled or su+j, check it here. + * If file system is gjournaled, check it here. */ if ((fsreadfd = open(filesys, O_RDONLY)) < 0 || readsb(0) == 0) exit(3); /* Cannot read superblock */ @@ -278,18 +279,6 @@ checkfilesys(char *filesys) "CANNOT RUN FAST FSCK\n"); } } -#if 0 - if ((sblock.fs_flags & FS_SUJ) != 0) { - if (sblock.fs_clean == 1) { - pwarn("FILE SYSTEM CLEAN; SKIPPING CHECKS\n"); - exit(0); - } - suj_check(filesys); - if (chkdoreload(mntp) == 0) - exit(0); - exit(4); - } -#endif } /* * If we are to do a background check: @@ -396,6 +385,26 @@ checkfilesys(char *filesys) sblock.fs_cstotal.cs_nffree * 100.0 / sblock.fs_dsize); return (0); } + /* + * Determine if we can and should do journal recovery. + */ + if ((sblock.fs_flags & (FS_SUJ | FS_NEEDSFSCK)) == FS_SUJ) { + if (preen || reply("USE JOURNAL?")) { + if (suj_check(filesys) == 0) { + if (chkdoreload(mntp) == 0) + exit(0); + exit(4); + } + /* suj_check failed, fall through. */ + } + printf("** Skipping journal, falling through to full fsck\n"); + /* + * Write the superblock so we don't try to recover the + * journal on another pass. + */ + sblock.fs_mtime = time(NULL); + sbdirty(); + } /* * Cleared if any questions answered no. Used to decide if @@ -493,7 +502,6 @@ checkfilesys(char *filesys) inocleanup(); if (fsmodified) { sblock.fs_time = time(NULL); - sblock.fs_mtime = time(NULL); sbdirty(); } if (cvtlevel && sblk.b_dirty) { Modified: projects/suj/head/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/head/sbin/fsck_ffs/suj.c Mon Jan 25 23:24:25 2010 (r202989) +++ projects/suj/head/sbin/fsck_ffs/suj.c Mon Jan 25 23:27:21 2010 (r202990) @@ -49,7 +49,8 @@ __FBSDID("$FreeBSD$"); static void ino_decr(ino_t); -#define SUJ_HASHSIZE 128 +#define DOTDOT_OFFSET DIRECTSIZ(1) +#define SUJ_HASHSIZE 2048 #define SUJ_HASHMASK (SUJ_HASHSIZE - 1) #define SUJ_HASH(x) ((x * 2654435761) & SUJ_HASHMASK) @@ -68,7 +69,9 @@ TAILQ_HEAD(srechd, suj_rec); struct suj_ino { LIST_ENTRY(suj_ino) si_next; struct srechd si_recs; + struct srechd si_newrecs; struct srechd si_movs; + struct jtrncrec *si_trunc; ino_t si_ino; int si_nlinkadj; int si_skipparent; @@ -90,6 +93,7 @@ struct data_blk { uint8_t *db_buf; ufs2_daddr_t db_blk; int db_size; + int db_dirty; }; struct ino_blk { @@ -106,6 +110,8 @@ struct suj_cg { struct inohd sc_inohash[SUJ_HASHSIZE]; struct iblkhd sc_iblkhash[SUJ_HASHSIZE]; struct ino_blk *sc_lastiblk; + struct suj_ino *sc_lastino; + struct suj_blk *sc_lastblk; uint8_t *sc_cgbuf; struct cg *sc_cgp; int sc_dirty; @@ -114,6 +120,8 @@ struct suj_cg { LIST_HEAD(cghd, suj_cg) cghash[SUJ_HASHSIZE]; LIST_HEAD(dblkhd, data_blk) dbhash[SUJ_HASHSIZE]; +struct suj_cg *lastcg; +struct data_blk *lastblk; TAILQ_HEAD(seghd, suj_seg) allsegs; uint64_t oldseq; @@ -131,6 +139,8 @@ uint64_t jbytes; uint64_t jrecs; typedef void (*ino_visitor)(ino_t, ufs_lbn_t, ufs2_daddr_t, int); +static void ino_trunc(ino_t ino, off_t size); +static void ino_build(struct suj_ino *sino); static void * errmalloc(size_t n) @@ -159,12 +169,6 @@ opendisk(const char *devnam) disk->d_error); } fs = &disk->d_fs; - /* - * Setup a few things so reply() can work. - */ - bcopy(fs, &sblock, sizeof(sblock)); - fsreadfd = disk->d_fd; - fswritefd = disk->d_fd; } /* @@ -198,8 +202,6 @@ closedisk(const char *devnam) free(disk); disk = NULL; fs = NULL; - fsreadfd = -1; - fswritefd = -1; } /* @@ -216,10 +218,14 @@ cg_lookup(int cgx) abort(); errx(1, "Bad cg number %d", cgx); } + if (lastcg && lastcg->sc_cgx == cgx) + return (lastcg); hd = &cghash[SUJ_HASH(cgx)]; LIST_FOREACH(sc, hd, sc_next) - if (sc->sc_cgx == cgx) + if (sc->sc_cgx == cgx) { + lastcg = sc; return (sc); + } sc = errmalloc(sizeof(*sc)); bzero(sc, sizeof(*sc)); sc->sc_cgbuf = errmalloc(fs->fs_bsize); @@ -245,6 +251,8 @@ ino_lookup(ino_t ino, int creat) struct suj_cg *sc; sc = cg_lookup(ino_to_cg(fs, ino)); + if (sc->sc_lastino && sc->sc_lastino->si_ino == ino) + return (sc->sc_lastino); hd = &sc->sc_inohash[SUJ_HASH(ino)]; LIST_FOREACH(sino, hd, si_next) if (sino->si_ino == ino) @@ -256,6 +264,7 @@ ino_lookup(ino_t ino, int creat) sino->si_ino = ino; sino->si_nlinkadj = 0; TAILQ_INIT(&sino->si_recs); + TAILQ_INIT(&sino->si_newrecs); TAILQ_INIT(&sino->si_movs); LIST_INSERT_HEAD(hd, sino, si_next); @@ -274,7 +283,9 @@ blk_lookup(ufs2_daddr_t blk, int creat) struct blkhd *hd; sc = cg_lookup(dtog(fs, blk)); - hd = &sc->sc_blkhash[SUJ_HASH(blk)]; + if (sc->sc_lastblk && sc->sc_lastblk->sb_blk == blk) + return (sc->sc_lastblk); + hd = &sc->sc_blkhash[SUJ_HASH(fragstoblks(fs, blk))]; LIST_FOREACH(sblk, hd, sb_next) if (sblk->sb_blk == blk) return (sblk); @@ -289,16 +300,18 @@ blk_lookup(ufs2_daddr_t blk, int creat) return (sblk); } -static uint8_t * -dblk_read(ufs2_daddr_t blk, int size) +static struct data_blk * +dblk_lookup(ufs2_daddr_t blk) { struct data_blk *dblk; struct dblkhd *hd; - hd = &dbhash[SUJ_HASH(blk)]; + hd = &dbhash[SUJ_HASH(fragstoblks(fs, blk))]; + if (lastblk && lastblk->db_blk == blk) + return (lastblk); LIST_FOREACH(dblk, hd, db_next) if (dblk->db_blk == blk) - goto found; + return (dblk); /* * The inode block wasn't located, allocate a new one. */ @@ -306,7 +319,15 @@ dblk_read(ufs2_daddr_t blk, int size) bzero(dblk, sizeof(*dblk)); LIST_INSERT_HEAD(hd, dblk, db_next); dblk->db_blk = blk; -found: + return (dblk); +} + +static uint8_t * +dblk_read(ufs2_daddr_t blk, int size) +{ + struct data_blk *dblk; + + dblk = dblk_lookup(blk); /* * I doubt size mismatches can happen in practice but it is trivial * to handle. @@ -322,6 +343,33 @@ found: return (dblk->db_buf); } +static void +dblk_dirty(ufs2_daddr_t blk) +{ + struct data_blk *dblk; + + dblk = dblk_lookup(blk); + dblk->db_dirty = 1; +} + +static void +dblk_write(void) +{ + struct data_blk *dblk; + int i; + + for (i = 0; i < SUJ_HASHSIZE; i++) { + LIST_FOREACH(dblk, &dbhash[i], db_next) { + if (dblk->db_dirty == 0 || dblk->db_size == 0) + continue; + if (bwrite(disk, fsbtodb(fs, dblk->db_blk), + dblk->db_buf, dblk->db_size) == -1) + err(1, "Unable to write block %jd", + dblk->db_blk); + } + } +} + static union dinode * ino_read(ino_t ino) { @@ -333,7 +381,10 @@ ino_read(ino_t ino) blk = ino_to_fsba(fs, ino); sc = cg_lookup(ino_to_cg(fs, ino)); - hd = &sc->sc_iblkhash[SUJ_HASH(blk)]; + iblk = sc->sc_lastiblk; + if (iblk && iblk->ib_blk == blk) + goto found; + hd = &sc->sc_iblkhash[SUJ_HASH(fragstoblks(fs, blk))]; LIST_FOREACH(iblk, hd, ib_next) if (iblk->ib_blk == blk) goto found; @@ -371,7 +422,7 @@ ino_dirty(ino_t ino) iblk->ib_dirty = 1; return; } - hd = &sc->sc_iblkhash[SUJ_HASH(blk)]; + hd = &sc->sc_iblkhash[SUJ_HASH(fragstoblks(fs, blk))]; LIST_FOREACH(iblk, hd, ib_next) { if (iblk->ib_blk == blk) { iblk->ib_dirty = 1; @@ -612,22 +663,22 @@ blk_free(ufs2_daddr_t bno, int mask, int * to fetch a specific block. */ static ufs2_daddr_t -indir_blkatoff(ufs2_daddr_t blk, ino_t ino, ufs_lbn_t cur, ufs_lbn_t lbn, int level) +indir_blkatoff(ufs2_daddr_t blk, ino_t ino, ufs_lbn_t cur, ufs_lbn_t lbn) { ufs2_daddr_t *bap2; ufs2_daddr_t *bap1; ufs_lbn_t lbnadd; ufs_lbn_t base; + int level; int i; if (blk == 0) return (0); - if (cur == lbn) - return (blk); - if (level == 0 && lbn < 0) { - abort(); + level = lbn_level(cur); + if (level == -1) + errx(1, "Invalid indir lbn %jd", lbn); + if (level == 0 && lbn < 0) errx(1, "Invalid lbn %jd", lbn); - } bap2 = (void *)dblk_read(blk, fs->fs_bsize); bap1 = (void *)bap2; lbnadd = 1; @@ -638,11 +689,9 @@ indir_blkatoff(ufs2_daddr_t blk, ino_t i i = (lbn - base) / lbnadd; else i = (-lbn - base) / lbnadd; - if (i < 0 || i >= NINDIR(fs)) { - abort(); + if (i < 0 || i >= NINDIR(fs)) errx(1, "Invalid indirect index %d produced by lbn %jd", i, lbn); - } if (level == 0) cur = base + (i * lbnadd); else @@ -657,7 +706,7 @@ indir_blkatoff(ufs2_daddr_t blk, ino_t i abort(); errx(1, "Invalid lbn %jd at level 0", lbn); } - return indir_blkatoff(blk, ino, cur, lbn, level - 1); + return indir_blkatoff(blk, ino, cur, lbn); } /* @@ -685,14 +734,10 @@ ino_blkatoff(union dinode *ip, ino_t ino return (ip->dp2.di_extb[lbn]); } /* - * And now direct and indirect. Verify that the lbn does not - * exceed the size required to store the file by asking for - * the lbn of the last byte. These blocks should be 0 anyway - * so this simply saves the traversal. + * Now direct and indirect. */ - if (lbn > 0 && lbn > lblkno(fs, DIP(ip, di_size) - 1)) - return (0); - if (lbn < 0 && -lbn > lblkno(fs, DIP(ip, di_size) - 1)) + if (DIP(ip, di_mode) == IFLNK && + DIP(ip, di_size) < fs->fs_maxsymlinklen) return (0); if (lbn >= 0 && lbn < NDADDR) { *frags = numfrags(fs, sblksize(fs, DIP(ip, di_size), lbn)); @@ -703,7 +748,7 @@ ino_blkatoff(union dinode *ip, ino_t ino for (i = 0, tmpval = NINDIR(fs), cur = NDADDR; i < NIADDR; i++, tmpval *= NINDIR(fs), cur = next) { next = cur + tmpval; - if (lbn == -cur) + if (lbn == -cur - i) return (DIP(ip, di_ib[i])); /* * Determine whether the lbn in question is within this tree. @@ -712,8 +757,7 @@ ino_blkatoff(union dinode *ip, ino_t ino continue; if (lbn > 0 && lbn >= next) continue; - - return indir_blkatoff(DIP(ip, di_ib[i]), ino, -cur - i, lbn, i); + return indir_blkatoff(DIP(ip, di_ib[i]), ino, -cur - i, lbn); } errx(1, "lbn %jd not in ino", lbn); } @@ -760,7 +804,10 @@ ino_isat(ino_t parent, off_t diroff, ino *mode = DIP(dip, di_mode); if ((*mode & IFMT) != IFDIR) { if (debug) { - /* This can happen if the parent inode was reallocated. */ + /* + * This can happen if the parent inode + * was reallocated. + */ if (*mode != 0) printf("Directory %d has bad mode %o\n", parent, *mode); @@ -791,7 +838,7 @@ ino_isat(ino_t parent, off_t diroff, ino * certain we hit a valid record and not some junk in the middle * of a file name. Stop when we reach or pass the expected offset. */ - dpoff = 0; + dpoff = (doff / DIRBLKSIZ) * DIRBLKSIZ; do { dp = (struct direct *)&block[dpoff]; if (dpoff == doff) @@ -801,7 +848,7 @@ ino_isat(ino_t parent, off_t diroff, ino dpoff += dp->d_reclen; } while (dpoff <= doff); if (dpoff > fs->fs_bsize) - errx(1, "Corrupt directory block in dir inode %d", parent); + errx(1, "Corrupt directory block in dir ino %d", parent); /* Not found. */ if (dpoff != doff) { if (debug) @@ -830,6 +877,7 @@ ino_isat(ino_t parent, off_t diroff, ino #define VISIT_INDIR 0x0001 #define VISIT_EXT 0x0002 +#define VISIT_ROOT 0x0004 /* Operation came via root & valid pointers. */ /* * Read an indirect level which may or may not be linked into an inode. @@ -854,16 +902,14 @@ indir_visit(ino_t ino, ufs_lbn_t lbn, uf */ if (blk == 0) return; - if (blk_isindir(blk, ino, lbn) == 0) { - if (debug) - printf("blk %jd ino %d lbn %jd is not indir.\n", - blk, ino, lbn); - goto out; - } level = lbn_level(lbn); - if (level == -1) { - abort(); + if (level == -1) errx(1, "Invalid level for lbn %jd", lbn); + if ((flags & VISIT_ROOT) == 0 && blk_isindir(blk, ino, lbn) == 0) { + if (debug) + printf("blk %jd ino %d lbn %jd(%d) is not indir.\n", + blk, ino, lbn, level); + goto out; } lbnadd = 1; for (i = level; i > 0; i--) @@ -903,6 +949,7 @@ out: static uint64_t ino_visit(union dinode *ip, ino_t ino, ino_visitor visitor, int flags) { + ufs_lbn_t nextlbn; ufs_lbn_t tmpval; ufs_lbn_t lbn; uint64_t size; @@ -937,8 +984,15 @@ ino_visit(union dinode *ip, ino_t ino, i fragcnt += frags; visitor(ino, i, DIP(ip, di_db[i]), frags); } + /* + * We know the following indirects are real as we're following + * real pointers to them. + */ + flags |= VISIT_ROOT; for (i = 0, tmpval = NINDIR(fs), lbn = NDADDR; i < NIADDR; i++, - tmpval *= NINDIR(fs), lbn += tmpval) { + lbn = nextlbn) { + nextlbn = lbn + tmpval; + tmpval *= NINDIR(fs); if (DIP(ip, di_ib[i]) == 0) continue; indir_visit(ino, -lbn - i, DIP(ip, di_ib[i]), &fragcnt, visitor, @@ -948,11 +1002,15 @@ ino_visit(union dinode *ip, ino_t ino, i } /* - * Null visitor function used when we just want to count blocks. + * Null visitor function used when we just want to count blocks and + * record the lbn. */ +ufs_lbn_t visitlbn; static void null_visit(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, int frags) { + if (lbn > 0) + visitlbn = lbn; } /* @@ -962,23 +1020,45 @@ null_visit(ino_t ino, ufs_lbn_t lbn, ufs * reachable at the time the inode was written. */ static void -ino_adjblks(ino_t ino) +ino_adjblks(struct suj_ino *sino) { - struct suj_ino *sino; union dinode *ip; uint64_t blocks; uint64_t frags; + off_t isize; + off_t size; + ino_t ino; - sino = ino_lookup(ino, 1); - if (sino->si_blkadj) - return; - sino->si_blkadj = 1; + ino = sino->si_ino; ip = ino_read(ino); /* No need to adjust zero'd inodes. */ if (DIP(ip, di_mode) == 0) return; + /* + * Visit all blocks and count them as well as recording the last + * valid lbn in the file. If the file size doesn't agree with the + * last lbn we need to truncate to fix it. Otherwise just adjust + * the blocks count. + */ + visitlbn = 0; frags = ino_visit(ip, ino, null_visit, VISIT_INDIR | VISIT_EXT); blocks = fsbtodb(fs, frags); + /* + * We assume the size and direct block list is kept coherent by + * softdep. For files that have extended into indirects we truncate + * to the size in the inode or the maximum size permitted by + * populated indirects. + */ + if (visitlbn >= NDADDR) { + isize = DIP(ip, di_size); + size = lblktosize(fs, visitlbn + 1); + printf("ino %d isize %jd size %jd\n", ino, isize, size); + if (isize > size) + isize = size; + /* Always truncate to free any unpopulated indirects. */ + ino_trunc(sino->si_ino, isize); + return; + } if (blocks == DIP(ip, di_blocks)) return; if (debug) @@ -1021,6 +1101,16 @@ blk_free_lbn(ufs2_daddr_t blk, ino_t ino } static void +ino_setskip(struct suj_ino *sino, ino_t parent) +{ + int isdot; + int mode; + + if (ino_isat(sino->si_ino, DOTDOT_OFFSET, parent, &mode, &isdot)) + sino->si_skipparent = 1; +} + +static void ino_free_children(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, int frags) { struct suj_ino *sino; @@ -1053,7 +1143,7 @@ ino_free_children(ino_t ino, ufs_lbn_t l if (isparent && skipparent == 1) continue; if (debug) - printf("Directory %d removing inode %d name %s\n", + printf("Directory %d removing ino %d name %s\n", ino, dp->d_ino, dp->d_name); /* * Lookup this inode to see if we have a record for it. @@ -1070,7 +1160,7 @@ ino_free_children(ino_t ino, ufs_lbn_t l * parent. Don't try to adjust our link down again. */ if (isparent == 0) - sino->si_skipparent = 1; + ino_setskip(sino, ino); /* * If we haven't yet processed this inode we need to make * sure we will successfully discover the lost path. If not @@ -1084,16 +1174,16 @@ ino_free_children(ino_t ino, ufs_lbn_t l break; } if (srec == NULL) - sino->si_nlinkadj--; + sino->si_nlinkadj++; } } /* - * Truncate an inode, freeing all blocks and decrementing all children's + * Reclaim an inode, freeing all blocks and decrementing all children's * link counts. Free the inode back to the cg. */ static void -ino_truncate(union dinode *ip, ino_t ino, int mode) +ino_reclaim(union dinode *ip, ino_t ino, int mode) { uint32_t gen; @@ -1147,7 +1237,7 @@ ino_decr(ino_t ino) if (debug) printf("ino %d not enough links to live %d < %d\n", ino, nlink, reqlink); - ino_truncate(ip, ino, mode); + ino_reclaim(ip, ino, mode); return; } DIP_SET(ip, di_nlink, nlink); @@ -1192,7 +1282,7 @@ ino_adjust(ino_t ino, int lastmode, nlin if (debug) printf("ino %d not enough links to live %d < %d\n", ino, nlink, reqlink); - ino_truncate(ip, ino, mode); + ino_reclaim(ip, ino, mode); return; } /* If required write the updated link count. */ @@ -1205,13 +1295,194 @@ ino_adjust(ino_t ino, int lastmode, nlin ino_dirty(ino); } -#define DOTDOT_OFFSET DIRECTSIZ(1) +/* + * Truncate some or all blocks in an indirect, freeing any that are required + * and zeroing the indirect. + */ +static void +indir_trunc(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, ufs_lbn_t lastlbn) +{ + ufs2_daddr_t *bap2; + ufs1_daddr_t *bap1; + ufs_lbn_t lbnadd; + ufs2_daddr_t nblk; + ufs_lbn_t next; + ufs_lbn_t nlbn; + int dirty; + int level; + int i; + + if (blk == 0) + return; + dirty = 0; + level = lbn_level(lbn); + if (level == -1) + errx(1, "Invalid level for lbn %jd", lbn); + lbnadd = 1; + for (i = level; i > 0; i--) + lbnadd *= NINDIR(fs); + bap1 = (void *)dblk_read(blk, fs->fs_bsize); + bap2 = (void *)bap1; + for (i = 0; i < NINDIR(fs); i++) { + if (fs->fs_magic == FS_UFS1_MAGIC) + nblk = *bap1++; + else + nblk = *bap2++; + if (nblk == 0) + continue; + if (level != 0) { + nlbn = (lbn + 1) - (i * lbnadd); + /* + * Calculate the lbn of the next indirect to + * determine if any of this indirect must be + * reclaimed. + */ + next = -(lbn + level) + ((i+1) * lbnadd); + if (next <= lastlbn) + continue; + indir_trunc(ino, nlbn, nblk, lastlbn); + /* If all of this indirect was reclaimed, free it. */ + nlbn = next - lbnadd; + if (nlbn < lastlbn) + continue; + } else { + nlbn = -lbn + i * lbnadd; + if (nlbn < lastlbn) + continue; + } + dirty = 1; + blk_free(nblk, 0, fs->fs_frag); + if (fs->fs_magic == FS_UFS1_MAGIC) + *(bap1 - 1) = 0; + else + *(bap2 - 1) = 0; + } + if (dirty) + dblk_dirty(blk); +} + +/* + * Truncate an inode to the minimum of the given size or the last populated + * block after any over size have been discarded. The kernel would allocate + * the last block in the file but fsck does not and neither do we. This + * code never extends files, only shrinks them. + */ +static void +ino_trunc(ino_t ino, off_t size) +{ + union dinode *ip; + ufs2_daddr_t bn; + uint64_t totalfrags; + ufs_lbn_t nextlbn; + ufs_lbn_t lastlbn; + ufs_lbn_t tmpval; + ufs_lbn_t lbn; + ufs_lbn_t i; + int frags; + off_t cursize; + off_t off; + int mode; + + ip = ino_read(ino); + mode = DIP(ip, di_mode) & IFMT; + cursize = DIP(ip, di_size); + if (debug) + printf("Truncating ino %d, mode %o to size %jd from size %jd\n", + ino, mode, size, cursize); + + /* Skip datablocks for short links and devices. */ + if (mode == 0 || mode == IFBLK || mode == IFCHR || + (mode == IFLNK && cursize < fs->fs_maxsymlinklen)) + return; + /* Don't extend. */ + if (size > cursize) + size = cursize; + lastlbn = lblkno(fs, blkroundup(fs, size)); + for (i = lastlbn; i < NDADDR; i++) { + if (DIP(ip, di_db[i]) == 0) + continue; + frags = sblksize(fs, cursize, i); + frags = numfrags(fs, frags); + blk_free(DIP(ip, di_db[i]), 0, frags); + DIP_SET(ip, di_db[i], 0); + } + /* + * Follow indirect blocks, freeing anything required. + */ + for (i = 0, tmpval = NINDIR(fs), lbn = NDADDR; i < NIADDR; i++, + lbn = nextlbn) { + nextlbn = lbn + tmpval; + tmpval *= NINDIR(fs); + /* If we're not freeing any in this indirect range skip it. */ + if (lastlbn >= nextlbn) + continue; + if (DIP(ip, di_ib[i]) == 0) + continue; + indir_trunc(ino, -lbn - i, DIP(ip, di_ib[i]), lastlbn); + /* If we freed everything in this indirect free the indir. */ + if (lastlbn > lbn) + continue; + blk_free(DIP(ip, di_ib[i]), 0, frags); + DIP_SET(ip, di_ib[i], 0); + } + ino_dirty(ino); + /* + * Now that we've freed any whole blocks that exceed the desired + * truncation size, figure out how many blocks remain and what the + * last populated lbn is. We will set the size to this last lbn + * rather than worrying about allocating the final lbn as the kernel + * would've done. This is consistent with normal fsck behavior. + */ + visitlbn = 0; + totalfrags = ino_visit(ip, ino, null_visit, VISIT_INDIR | VISIT_EXT); + if (size > lblktosize(fs, visitlbn + 1)) + size = lblktosize(fs, visitlbn + 1); + /* + * If we're truncating direct blocks we have to adjust frags + * accordingly. + */ + if (visitlbn < NDADDR) { + long oldspace, newspace; + + bn = DIP(ip, di_db[visitlbn]); + oldspace = sblksize(fs, cursize, visitlbn); + newspace = sblksize(fs, size, visitlbn); + if (oldspace != newspace) { + bn += numfrags(fs, newspace); + frags = numfrags(fs, oldspace - newspace); + blk_free(bn, 0, frags); + totalfrags -= frags; + } + } + DIP_SET(ip, di_blocks, fsbtodb(fs, totalfrags)); + DIP_SET(ip, di_size, size); + /* + * If we've truncated into the middle of a block or frag we have + * to zero it here. Otherwise the file could extend into + * uninitialized space later. + */ + off = blkoff(fs, size); + if (off) { + uint8_t *buf; + long clrsize; + + bn = ino_blkatoff(ip, ino, visitlbn, &frags); + if (bn == 0) + errx(1, "Block missing from ino %d at lbn %jd\n", + ino, visitlbn); + clrsize = frags * fs->fs_fsize; + buf = dblk_read(bn, clrsize); + clrsize -= off; + buf += off; + bzero(buf, clrsize); + dblk_dirty(bn); + } + return; +} /* * Process records available for one inode and determine whether the * link count is correct or needs adjusting. - * - * XXX Failed to fix zero length directory. Shouldn't .. have been mising? */ static void ino_check(struct suj_ino *sino) @@ -1228,6 +1499,15 @@ ino_check(struct suj_ino *sino) int isat; int mode; + /* + * Handle truncations that were not complete. We don't have + * to worry about truncating directory entries as they must have + * been removed for truncate to succeed. + */ + if (sino->si_trunc) { + ino_trunc(ino, sino->si_trunc->jt_size); + sino->si_trunc = NULL; + } if (sino->si_hasrecs == 0) return; ino = sino->si_ino; @@ -1239,9 +1519,9 @@ ino_check(struct suj_ino *sino) return; rrec = (struct jrefrec *)TAILQ_FIRST(&sino->si_recs)->sr_rec; nlink = rrec->jr_nlink; - newlinks = sino->si_nlinkadj; + newlinks = 0; dotlinks = 0; - removes = 0; + removes = sino->si_nlinkadj; TAILQ_FOREACH(srec, &sino->si_recs, sr_next) { rrec = (struct jrefrec *)srec->sr_rec; isat = ino_isat(rrec->jr_parent, rrec->jr_diroff, @@ -1286,7 +1566,7 @@ ino_check(struct suj_ino *sino) if (rrec->jr_diroff == DOTDOT_OFFSET) { stmp = ino_lookup(rrec->jr_parent, 0); if (stmp) - stmp->si_skipparent = 1; + ino_setskip(stmp, ino); } } } @@ -1304,6 +1584,7 @@ blk_check(struct suj_blk *sblk) { struct suj_rec *srec; struct jblkrec *brec; + struct suj_ino *sino; ufs2_daddr_t blk; int mask; int frags; @@ -1318,6 +1599,10 @@ blk_check(struct suj_blk *sblk) frags = brec->jb_frags; blk = brec->jb_blkno + brec->jb_oldfrags; isat = blk_isat(brec->jb_ino, brec->jb_lbn, blk, &frags); + if (sino == NULL || sino->si_ino != brec->jb_ino) { + sino = ino_lookup(brec->jb_ino, 1); + sino->si_blkadj = 1; + } if (debug) printf("op %d blk %jd ino %d lbn %jd frags %d isat %d (%d)\n", brec->jb_op, blk, brec->jb_ino, brec->jb_lbn, @@ -1336,7 +1621,6 @@ blk_check(struct suj_blk *sblk) blk += frags; frags = brec->jb_frags - frags; blk_free(blk, mask, frags); - ino_adjblks(brec->jb_ino); continue; } /* @@ -1349,19 +1633,31 @@ blk_check(struct suj_blk *sblk) */ blk_free_lbn(blk, brec->jb_ino, brec->jb_lbn, brec->jb_frags, brec->jb_op == JOP_FREEBLK); - ino_adjblks(brec->jb_ino); } } /* + * Walk the list of inode records for this cg and resolve moved and duplicate + * inode references now that we have a complete picture. + */ +static void +cg_build(struct suj_cg *sc) +{ + struct suj_ino *sino; + int i; + + for (i = 0; i < SUJ_HASHSIZE; i++) + LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) + ino_build(sino); +} + +/* * Walk the list of inode and block records for this cg, recovering any * changes which were not complete at the time of crash. */ static void cg_check(struct suj_cg *sc) { - struct suj_blk *nextb; - struct suj_ino *nexti; struct suj_ino *sino; struct suj_blk *sblk; int i; @@ -1370,32 +1666,43 @@ cg_check(struct suj_cg *sc) printf("Recovering cg %d\n", sc->sc_cgx); for (i = 0; i < SUJ_HASHSIZE; i++) - LIST_FOREACH_SAFE(sino, &sc->sc_inohash[i], si_next, nexti) + LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) ino_check(sino); for (i = 0; i < SUJ_HASHSIZE; i++) - LIST_FOREACH_SAFE(sblk, &sc->sc_blkhash[i], sb_next, nextb) + LIST_FOREACH(sblk, &sc->sc_blkhash[i], sb_next) blk_check(sblk); } /* - * Write a potentially dirty cg. All inodes must be written before the - * cg maps are so that an allocated inode is never marked free, even if - * we crash during fsck. + * Now that we've freed blocks which are not referenced we make a second + * pass over all inodes to adjust their block counts. + */ +static void +cg_check2(struct suj_cg *sc) +{ + struct suj_ino *sino; + int i; + + for (i = 0; i < SUJ_HASHSIZE; i++) + LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) + if (sino->si_blkadj) + ino_adjblks(sino); +} + +/* + * Write a potentially dirty cg. Recalculate the summary information and + * update the superblock summary. */ static void cg_write(struct suj_cg *sc) { - struct ino_blk *iblk; ufs1_daddr_t fragno, cgbno, maxbno; u_int8_t *blksfree; struct cg *cgp; int blk; int i; - for (i = 0; i < SUJ_HASHSIZE; i++) - LIST_FOREACH(iblk, &sc->sc_iblkhash[i], ib_next) - iblk_write(iblk); if (sc->sc_dirty == 0) return; /* @@ -1437,6 +1744,21 @@ cg_write(struct suj_cg *sc) err(1, "Unable to write cylinder group %d", sc->sc_cgx); } +/* + * Write out any modified inodes. + */ +static void +cg_write_inos(struct suj_cg *sc) +{ + struct ino_blk *iblk; + int i; + + for (i = 0; i < SUJ_HASHSIZE; i++) + LIST_FOREACH(iblk, &sc->sc_iblkhash[i], ib_next) + if (iblk->ib_dirty) + iblk_write(iblk); +} + static void cg_apply(void (*apply)(struct suj_cg *)) { @@ -1473,7 +1795,7 @@ ino_unlinked(void) if (debug) printf("Freeing unlinked ino %d mode %o\n", ino, mode); - ino_truncate(ip, ino, mode); + ino_reclaim(ip, ino, mode); } else if (debug) printf("Skipping ino %d mode %o with link %d\n", ino, mode, DIP(ip, di_nlink)); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Mon Jan 25 23:30:53 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A0D21065679; Mon, 25 Jan 2010 23:30:53 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 75FA68FC27; Mon, 25 Jan 2010 23:30:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0PNUrMx010727; Mon, 25 Jan 2010 23:30:53 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0PNUrlq010722; Mon, 25 Jan 2010 23:30:53 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001252330.o0PNUrlq010722@svn.freebsd.org> From: Jeff Roberson Date: Mon, 25 Jan 2010 23:30:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r202991 - in projects/suj: 6/sbin/fsck_ffs 6/sys/ufs/ffs 7/sbin/fsck_ffs 7/sbin/fsdb 7/sys/ufs/ffs 8/sbin/fsck_ffs 8/sbin/fsdb 8/sys/ufs/ffs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2010 23:30:53 -0000 Author: jeff Date: Mon Jan 25 23:30:53 2010 New Revision: 202991 URL: http://svn.freebsd.org/changeset/base/202991 Log: - Merge r202989 and r202990 from suj/head Modified: projects/suj/6/sbin/fsck_ffs/fsck.h projects/suj/6/sbin/fsck_ffs/main.c projects/suj/6/sbin/fsck_ffs/suj.c projects/suj/6/sys/ufs/ffs/ffs_inode.c projects/suj/6/sys/ufs/ffs/ffs_softdep.c projects/suj/6/sys/ufs/ffs/ffs_vfsops.c projects/suj/6/sys/ufs/ffs/fs.h projects/suj/7/sbin/fsck_ffs/fsck.h projects/suj/7/sbin/fsck_ffs/main.c projects/suj/7/sbin/fsck_ffs/suj.c projects/suj/7/sbin/fsdb/fsdb.c projects/suj/7/sys/ufs/ffs/ffs_inode.c projects/suj/7/sys/ufs/ffs/ffs_softdep.c projects/suj/7/sys/ufs/ffs/ffs_vfsops.c projects/suj/7/sys/ufs/ffs/fs.h projects/suj/8/sbin/fsck_ffs/fsck.h projects/suj/8/sbin/fsck_ffs/main.c projects/suj/8/sbin/fsck_ffs/suj.c projects/suj/8/sbin/fsdb/fsdb.c projects/suj/8/sys/ufs/ffs/ffs_inode.c projects/suj/8/sys/ufs/ffs/ffs_softdep.c projects/suj/8/sys/ufs/ffs/ffs_vfsops.c projects/suj/8/sys/ufs/ffs/fs.h Modified: projects/suj/6/sbin/fsck_ffs/fsck.h ============================================================================== --- projects/suj/6/sbin/fsck_ffs/fsck.h Mon Jan 25 23:27:21 2010 (r202990) +++ projects/suj/6/sbin/fsck_ffs/fsck.h Mon Jan 25 23:30:53 2010 (r202991) @@ -385,4 +385,4 @@ void rwerror(const char *mesg, ufs2_dad void sblock_init(void); void setinodebuf(ino_t); int setup(char *dev); -void suj_check(const char *filesys); +int suj_check(const char *filesys); Modified: projects/suj/6/sbin/fsck_ffs/main.c ============================================================================== --- projects/suj/6/sbin/fsck_ffs/main.c Mon Jan 25 23:27:21 2010 (r202990) +++ projects/suj/6/sbin/fsck_ffs/main.c Mon Jan 25 23:30:53 2010 (r202991) @@ -229,8 +229,9 @@ checkfilesys(char *filesys) if ((fsreadfd = open(filesys, O_RDONLY)) < 0 || readsb(0) == 0) exit(3); /* Cannot read superblock */ close(fsreadfd); - if (sblock.fs_flags & FS_NEEDSFSCK) - exit(4); /* Earlier background failed */ + /* Earlier background failed or journaled */ + if (sblock.fs_flags & (FS_NEEDSFSCK | FS_SUJ)) + exit(4); if ((sblock.fs_flags & FS_DOSOFTDEP) == 0) exit(5); /* Not running soft updates */ size = MIBSIZE; @@ -360,6 +361,23 @@ checkfilesys(char *filesys) sblock.fs_cstotal.cs_nffree * 100.0 / sblock.fs_dsize); return (0); } + /* + * Determine if we can and should do journal recovery. + */ + if ((sblock.fs_flags & (FS_SUJ | FS_NEEDSFSCK)) == FS_SUJ) { + if (preen || reply("USE JOURNAL?")) { + if (suj_check(filesys) == 0) + goto out; + /* suj_check failed, fall through. */ + } + printf("** Skipping journal, falling through to full fsck\n"); + /* + * Write the superblock so we don't try to recover the + * journal on another pass. + */ + sblock.fs_mtime = time(NULL); + sbdirty(); + } /* * Cleared if any questions answered no. Used to decide if @@ -454,7 +472,6 @@ checkfilesys(char *filesys) inocleanup(); if (fsmodified) { sblock.fs_time = time(NULL); - sblock.fs_mtime = time(NULL); sbdirty(); } if (cvtlevel && sblk.b_dirty) { @@ -485,6 +502,7 @@ checkfilesys(char *filesys) printf("\n***** FILE SYSTEM WAS MODIFIED *****\n"); if (rerun) printf("\n***** PLEASE RERUN FSCK *****\n"); +out: if (mntp != NULL) { /* * We modified a mounted file system. Do a mount update on Modified: projects/suj/6/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/6/sbin/fsck_ffs/suj.c Mon Jan 25 23:27:21 2010 (r202990) +++ projects/suj/6/sbin/fsck_ffs/suj.c Mon Jan 25 23:30:53 2010 (r202991) @@ -49,7 +49,8 @@ __FBSDID("$FreeBSD$"); static void ino_decr(ino_t); -#define SUJ_HASHSIZE 128 +#define DOTDOT_OFFSET DIRECTSIZ(1) +#define SUJ_HASHSIZE 2048 #define SUJ_HASHMASK (SUJ_HASHSIZE - 1) #define SUJ_HASH(x) ((x * 2654435761) & SUJ_HASHMASK) @@ -68,7 +69,9 @@ TAILQ_HEAD(srechd, suj_rec); struct suj_ino { LIST_ENTRY(suj_ino) si_next; struct srechd si_recs; + struct srechd si_newrecs; struct srechd si_movs; + struct jtrncrec *si_trunc; ino_t si_ino; int si_nlinkadj; int si_skipparent; @@ -90,6 +93,7 @@ struct data_blk { uint8_t *db_buf; ufs2_daddr_t db_blk; int db_size; + int db_dirty; }; struct ino_blk { @@ -106,6 +110,8 @@ struct suj_cg { struct inohd sc_inohash[SUJ_HASHSIZE]; struct iblkhd sc_iblkhash[SUJ_HASHSIZE]; struct ino_blk *sc_lastiblk; + struct suj_ino *sc_lastino; + struct suj_blk *sc_lastblk; uint8_t *sc_cgbuf; struct cg *sc_cgp; int sc_dirty; @@ -114,6 +120,8 @@ struct suj_cg { LIST_HEAD(cghd, suj_cg) cghash[SUJ_HASHSIZE]; LIST_HEAD(dblkhd, data_blk) dbhash[SUJ_HASHSIZE]; +struct suj_cg *lastcg; +struct data_blk *lastblk; TAILQ_HEAD(seghd, suj_seg) allsegs; uint64_t oldseq; @@ -131,6 +139,8 @@ uint64_t jbytes; uint64_t jrecs; typedef void (*ino_visitor)(ino_t, ufs_lbn_t, ufs2_daddr_t, int); +static void ino_trunc(ino_t ino, off_t size); +static void ino_build(struct suj_ino *sino); static void * errmalloc(size_t n) @@ -159,12 +169,6 @@ opendisk(const char *devnam) disk->d_error); } fs = &disk->d_fs; - /* - * Setup a few things so reply() can work. - */ - bcopy(fs, &sblock, sizeof(sblock)); - fsreadfd = disk->d_fd; - fswritefd = disk->d_fd; } /* @@ -198,8 +202,6 @@ closedisk(const char *devnam) free(disk); disk = NULL; fs = NULL; - fsreadfd = -1; - fswritefd = -1; } /* @@ -216,10 +218,14 @@ cg_lookup(int cgx) abort(); errx(1, "Bad cg number %d", cgx); } + if (lastcg && lastcg->sc_cgx == cgx) + return (lastcg); hd = &cghash[SUJ_HASH(cgx)]; LIST_FOREACH(sc, hd, sc_next) - if (sc->sc_cgx == cgx) + if (sc->sc_cgx == cgx) { + lastcg = sc; return (sc); + } sc = errmalloc(sizeof(*sc)); bzero(sc, sizeof(*sc)); sc->sc_cgbuf = errmalloc(fs->fs_bsize); @@ -245,6 +251,8 @@ ino_lookup(ino_t ino, int creat) struct suj_cg *sc; sc = cg_lookup(ino_to_cg(fs, ino)); + if (sc->sc_lastino && sc->sc_lastino->si_ino == ino) + return (sc->sc_lastino); hd = &sc->sc_inohash[SUJ_HASH(ino)]; LIST_FOREACH(sino, hd, si_next) if (sino->si_ino == ino) @@ -256,6 +264,7 @@ ino_lookup(ino_t ino, int creat) sino->si_ino = ino; sino->si_nlinkadj = 0; TAILQ_INIT(&sino->si_recs); + TAILQ_INIT(&sino->si_newrecs); TAILQ_INIT(&sino->si_movs); LIST_INSERT_HEAD(hd, sino, si_next); @@ -274,7 +283,9 @@ blk_lookup(ufs2_daddr_t blk, int creat) struct blkhd *hd; sc = cg_lookup(dtog(fs, blk)); - hd = &sc->sc_blkhash[SUJ_HASH(blk)]; + if (sc->sc_lastblk && sc->sc_lastblk->sb_blk == blk) + return (sc->sc_lastblk); + hd = &sc->sc_blkhash[SUJ_HASH(fragstoblks(fs, blk))]; LIST_FOREACH(sblk, hd, sb_next) if (sblk->sb_blk == blk) return (sblk); @@ -289,16 +300,18 @@ blk_lookup(ufs2_daddr_t blk, int creat) return (sblk); } -static uint8_t * -dblk_read(ufs2_daddr_t blk, int size) +static struct data_blk * +dblk_lookup(ufs2_daddr_t blk) { struct data_blk *dblk; struct dblkhd *hd; - hd = &dbhash[SUJ_HASH(blk)]; + hd = &dbhash[SUJ_HASH(fragstoblks(fs, blk))]; + if (lastblk && lastblk->db_blk == blk) + return (lastblk); LIST_FOREACH(dblk, hd, db_next) if (dblk->db_blk == blk) - goto found; + return (dblk); /* * The inode block wasn't located, allocate a new one. */ @@ -306,7 +319,15 @@ dblk_read(ufs2_daddr_t blk, int size) bzero(dblk, sizeof(*dblk)); LIST_INSERT_HEAD(hd, dblk, db_next); dblk->db_blk = blk; -found: + return (dblk); +} + +static uint8_t * +dblk_read(ufs2_daddr_t blk, int size) +{ + struct data_blk *dblk; + + dblk = dblk_lookup(blk); /* * I doubt size mismatches can happen in practice but it is trivial * to handle. @@ -322,6 +343,33 @@ found: return (dblk->db_buf); } +static void +dblk_dirty(ufs2_daddr_t blk) +{ + struct data_blk *dblk; + + dblk = dblk_lookup(blk); + dblk->db_dirty = 1; +} + +static void +dblk_write(void) +{ + struct data_blk *dblk; + int i; + + for (i = 0; i < SUJ_HASHSIZE; i++) { + LIST_FOREACH(dblk, &dbhash[i], db_next) { + if (dblk->db_dirty == 0 || dblk->db_size == 0) + continue; + if (bwrite(disk, fsbtodb(fs, dblk->db_blk), + dblk->db_buf, dblk->db_size) == -1) + err(1, "Unable to write block %jd", + dblk->db_blk); + } + } +} + static union dinode * ino_read(ino_t ino) { @@ -333,7 +381,10 @@ ino_read(ino_t ino) blk = ino_to_fsba(fs, ino); sc = cg_lookup(ino_to_cg(fs, ino)); - hd = &sc->sc_iblkhash[SUJ_HASH(blk)]; + iblk = sc->sc_lastiblk; + if (iblk && iblk->ib_blk == blk) + goto found; + hd = &sc->sc_iblkhash[SUJ_HASH(fragstoblks(fs, blk))]; LIST_FOREACH(iblk, hd, ib_next) if (iblk->ib_blk == blk) goto found; @@ -371,7 +422,7 @@ ino_dirty(ino_t ino) iblk->ib_dirty = 1; return; } - hd = &sc->sc_iblkhash[SUJ_HASH(blk)]; + hd = &sc->sc_iblkhash[SUJ_HASH(fragstoblks(fs, blk))]; LIST_FOREACH(iblk, hd, ib_next) { if (iblk->ib_blk == blk) { iblk->ib_dirty = 1; @@ -612,22 +663,22 @@ blk_free(ufs2_daddr_t bno, int mask, int * to fetch a specific block. */ static ufs2_daddr_t -indir_blkatoff(ufs2_daddr_t blk, ino_t ino, ufs_lbn_t cur, ufs_lbn_t lbn, int level) +indir_blkatoff(ufs2_daddr_t blk, ino_t ino, ufs_lbn_t cur, ufs_lbn_t lbn) { ufs2_daddr_t *bap2; ufs2_daddr_t *bap1; ufs_lbn_t lbnadd; ufs_lbn_t base; + int level; int i; if (blk == 0) return (0); - if (cur == lbn) - return (blk); - if (level == 0 && lbn < 0) { - abort(); + level = lbn_level(cur); + if (level == -1) + errx(1, "Invalid indir lbn %jd", lbn); + if (level == 0 && lbn < 0) errx(1, "Invalid lbn %jd", lbn); - } bap2 = (void *)dblk_read(blk, fs->fs_bsize); bap1 = (void *)bap2; lbnadd = 1; @@ -638,11 +689,9 @@ indir_blkatoff(ufs2_daddr_t blk, ino_t i i = (lbn - base) / lbnadd; else i = (-lbn - base) / lbnadd; - if (i < 0 || i >= NINDIR(fs)) { - abort(); + if (i < 0 || i >= NINDIR(fs)) errx(1, "Invalid indirect index %d produced by lbn %jd", i, lbn); - } if (level == 0) cur = base + (i * lbnadd); else @@ -657,7 +706,7 @@ indir_blkatoff(ufs2_daddr_t blk, ino_t i abort(); errx(1, "Invalid lbn %jd at level 0", lbn); } - return indir_blkatoff(blk, ino, cur, lbn, level - 1); + return indir_blkatoff(blk, ino, cur, lbn); } /* @@ -685,14 +734,10 @@ ino_blkatoff(union dinode *ip, ino_t ino return (ip->dp2.di_extb[lbn]); } /* - * And now direct and indirect. Verify that the lbn does not - * exceed the size required to store the file by asking for - * the lbn of the last byte. These blocks should be 0 anyway - * so this simply saves the traversal. + * Now direct and indirect. */ - if (lbn > 0 && lbn > lblkno(fs, DIP(ip, di_size) - 1)) - return (0); - if (lbn < 0 && -lbn > lblkno(fs, DIP(ip, di_size) - 1)) + if (DIP(ip, di_mode) == IFLNK && + DIP(ip, di_size) < fs->fs_maxsymlinklen) return (0); if (lbn >= 0 && lbn < NDADDR) { *frags = numfrags(fs, sblksize(fs, DIP(ip, di_size), lbn)); @@ -703,7 +748,7 @@ ino_blkatoff(union dinode *ip, ino_t ino for (i = 0, tmpval = NINDIR(fs), cur = NDADDR; i < NIADDR; i++, tmpval *= NINDIR(fs), cur = next) { next = cur + tmpval; - if (lbn == -cur) + if (lbn == -cur - i) return (DIP(ip, di_ib[i])); /* * Determine whether the lbn in question is within this tree. @@ -712,8 +757,7 @@ ino_blkatoff(union dinode *ip, ino_t ino continue; if (lbn > 0 && lbn >= next) continue; - - return indir_blkatoff(DIP(ip, di_ib[i]), ino, -cur - i, lbn, i); + return indir_blkatoff(DIP(ip, di_ib[i]), ino, -cur - i, lbn); } errx(1, "lbn %jd not in ino", lbn); } @@ -760,7 +804,10 @@ ino_isat(ino_t parent, off_t diroff, ino *mode = DIP(dip, di_mode); if ((*mode & IFMT) != IFDIR) { if (debug) { - /* This can happen if the parent inode was reallocated. */ + /* + * This can happen if the parent inode + * was reallocated. + */ if (*mode != 0) printf("Directory %d has bad mode %o\n", parent, *mode); @@ -791,7 +838,7 @@ ino_isat(ino_t parent, off_t diroff, ino * certain we hit a valid record and not some junk in the middle * of a file name. Stop when we reach or pass the expected offset. */ - dpoff = 0; + dpoff = (doff / DIRBLKSIZ) * DIRBLKSIZ; do { dp = (struct direct *)&block[dpoff]; if (dpoff == doff) @@ -801,7 +848,7 @@ ino_isat(ino_t parent, off_t diroff, ino dpoff += dp->d_reclen; } while (dpoff <= doff); if (dpoff > fs->fs_bsize) - errx(1, "Corrupt directory block in dir inode %d", parent); + errx(1, "Corrupt directory block in dir ino %d", parent); /* Not found. */ if (dpoff != doff) { if (debug) @@ -830,6 +877,7 @@ ino_isat(ino_t parent, off_t diroff, ino #define VISIT_INDIR 0x0001 #define VISIT_EXT 0x0002 +#define VISIT_ROOT 0x0004 /* Operation came via root & valid pointers. */ /* * Read an indirect level which may or may not be linked into an inode. @@ -854,16 +902,14 @@ indir_visit(ino_t ino, ufs_lbn_t lbn, uf */ if (blk == 0) return; - if (blk_isindir(blk, ino, lbn) == 0) { - if (debug) - printf("blk %jd ino %d lbn %jd is not indir.\n", - blk, ino, lbn); - goto out; - } level = lbn_level(lbn); - if (level == -1) { - abort(); + if (level == -1) errx(1, "Invalid level for lbn %jd", lbn); + if ((flags & VISIT_ROOT) == 0 && blk_isindir(blk, ino, lbn) == 0) { + if (debug) + printf("blk %jd ino %d lbn %jd(%d) is not indir.\n", + blk, ino, lbn, level); + goto out; } lbnadd = 1; for (i = level; i > 0; i--) @@ -903,6 +949,7 @@ out: static uint64_t ino_visit(union dinode *ip, ino_t ino, ino_visitor visitor, int flags) { + ufs_lbn_t nextlbn; ufs_lbn_t tmpval; ufs_lbn_t lbn; uint64_t size; @@ -937,8 +984,15 @@ ino_visit(union dinode *ip, ino_t ino, i fragcnt += frags; visitor(ino, i, DIP(ip, di_db[i]), frags); } + /* + * We know the following indirects are real as we're following + * real pointers to them. + */ + flags |= VISIT_ROOT; for (i = 0, tmpval = NINDIR(fs), lbn = NDADDR; i < NIADDR; i++, - tmpval *= NINDIR(fs), lbn += tmpval) { + lbn = nextlbn) { + nextlbn = lbn + tmpval; + tmpval *= NINDIR(fs); if (DIP(ip, di_ib[i]) == 0) continue; indir_visit(ino, -lbn - i, DIP(ip, di_ib[i]), &fragcnt, visitor, @@ -948,11 +1002,15 @@ ino_visit(union dinode *ip, ino_t ino, i } /* - * Null visitor function used when we just want to count blocks. + * Null visitor function used when we just want to count blocks and + * record the lbn. */ +ufs_lbn_t visitlbn; static void null_visit(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, int frags) { + if (lbn > 0) + visitlbn = lbn; } /* @@ -962,23 +1020,45 @@ null_visit(ino_t ino, ufs_lbn_t lbn, ufs * reachable at the time the inode was written. */ static void -ino_adjblks(ino_t ino) +ino_adjblks(struct suj_ino *sino) { - struct suj_ino *sino; union dinode *ip; uint64_t blocks; uint64_t frags; + off_t isize; + off_t size; + ino_t ino; - sino = ino_lookup(ino, 1); - if (sino->si_blkadj) - return; - sino->si_blkadj = 1; + ino = sino->si_ino; ip = ino_read(ino); /* No need to adjust zero'd inodes. */ if (DIP(ip, di_mode) == 0) return; + /* + * Visit all blocks and count them as well as recording the last + * valid lbn in the file. If the file size doesn't agree with the + * last lbn we need to truncate to fix it. Otherwise just adjust + * the blocks count. + */ + visitlbn = 0; frags = ino_visit(ip, ino, null_visit, VISIT_INDIR | VISIT_EXT); blocks = fsbtodb(fs, frags); + /* + * We assume the size and direct block list is kept coherent by + * softdep. For files that have extended into indirects we truncate + * to the size in the inode or the maximum size permitted by + * populated indirects. + */ + if (visitlbn >= NDADDR) { + isize = DIP(ip, di_size); + size = lblktosize(fs, visitlbn + 1); + printf("ino %d isize %jd size %jd\n", ino, isize, size); + if (isize > size) + isize = size; + /* Always truncate to free any unpopulated indirects. */ + ino_trunc(sino->si_ino, isize); + return; + } if (blocks == DIP(ip, di_blocks)) return; if (debug) @@ -1021,6 +1101,16 @@ blk_free_lbn(ufs2_daddr_t blk, ino_t ino } static void +ino_setskip(struct suj_ino *sino, ino_t parent) +{ + int isdot; + int mode; + + if (ino_isat(sino->si_ino, DOTDOT_OFFSET, parent, &mode, &isdot)) + sino->si_skipparent = 1; +} + +static void ino_free_children(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, int frags) { struct suj_ino *sino; @@ -1053,7 +1143,7 @@ ino_free_children(ino_t ino, ufs_lbn_t l if (isparent && skipparent == 1) continue; if (debug) - printf("Directory %d removing inode %d name %s\n", + printf("Directory %d removing ino %d name %s\n", ino, dp->d_ino, dp->d_name); /* * Lookup this inode to see if we have a record for it. @@ -1070,7 +1160,7 @@ ino_free_children(ino_t ino, ufs_lbn_t l * parent. Don't try to adjust our link down again. */ if (isparent == 0) - sino->si_skipparent = 1; + ino_setskip(sino, ino); /* * If we haven't yet processed this inode we need to make * sure we will successfully discover the lost path. If not @@ -1084,16 +1174,16 @@ ino_free_children(ino_t ino, ufs_lbn_t l break; } if (srec == NULL) - sino->si_nlinkadj--; + sino->si_nlinkadj++; } } /* - * Truncate an inode, freeing all blocks and decrementing all children's + * Reclaim an inode, freeing all blocks and decrementing all children's * link counts. Free the inode back to the cg. */ static void -ino_truncate(union dinode *ip, ino_t ino, int mode) +ino_reclaim(union dinode *ip, ino_t ino, int mode) { uint32_t gen; @@ -1147,7 +1237,7 @@ ino_decr(ino_t ino) if (debug) printf("ino %d not enough links to live %d < %d\n", ino, nlink, reqlink); - ino_truncate(ip, ino, mode); + ino_reclaim(ip, ino, mode); return; } DIP_SET(ip, di_nlink, nlink); @@ -1192,7 +1282,7 @@ ino_adjust(ino_t ino, int lastmode, nlin if (debug) printf("ino %d not enough links to live %d < %d\n", ino, nlink, reqlink); - ino_truncate(ip, ino, mode); + ino_reclaim(ip, ino, mode); return; } /* If required write the updated link count. */ @@ -1205,13 +1295,194 @@ ino_adjust(ino_t ino, int lastmode, nlin ino_dirty(ino); } -#define DOTDOT_OFFSET DIRECTSIZ(1) +/* + * Truncate some or all blocks in an indirect, freeing any that are required + * and zeroing the indirect. + */ +static void +indir_trunc(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, ufs_lbn_t lastlbn) +{ + ufs2_daddr_t *bap2; + ufs1_daddr_t *bap1; + ufs_lbn_t lbnadd; + ufs2_daddr_t nblk; + ufs_lbn_t next; + ufs_lbn_t nlbn; + int dirty; + int level; + int i; + + if (blk == 0) + return; + dirty = 0; + level = lbn_level(lbn); + if (level == -1) + errx(1, "Invalid level for lbn %jd", lbn); + lbnadd = 1; + for (i = level; i > 0; i--) + lbnadd *= NINDIR(fs); + bap1 = (void *)dblk_read(blk, fs->fs_bsize); + bap2 = (void *)bap1; + for (i = 0; i < NINDIR(fs); i++) { + if (fs->fs_magic == FS_UFS1_MAGIC) + nblk = *bap1++; + else + nblk = *bap2++; + if (nblk == 0) + continue; + if (level != 0) { + nlbn = (lbn + 1) - (i * lbnadd); + /* + * Calculate the lbn of the next indirect to + * determine if any of this indirect must be + * reclaimed. + */ + next = -(lbn + level) + ((i+1) * lbnadd); + if (next <= lastlbn) + continue; + indir_trunc(ino, nlbn, nblk, lastlbn); + /* If all of this indirect was reclaimed, free it. */ + nlbn = next - lbnadd; + if (nlbn < lastlbn) + continue; + } else { + nlbn = -lbn + i * lbnadd; + if (nlbn < lastlbn) + continue; + } + dirty = 1; + blk_free(nblk, 0, fs->fs_frag); + if (fs->fs_magic == FS_UFS1_MAGIC) + *(bap1 - 1) = 0; + else + *(bap2 - 1) = 0; + } + if (dirty) + dblk_dirty(blk); +} + +/* + * Truncate an inode to the minimum of the given size or the last populated + * block after any over size have been discarded. The kernel would allocate + * the last block in the file but fsck does not and neither do we. This + * code never extends files, only shrinks them. + */ +static void +ino_trunc(ino_t ino, off_t size) +{ + union dinode *ip; + ufs2_daddr_t bn; + uint64_t totalfrags; + ufs_lbn_t nextlbn; + ufs_lbn_t lastlbn; + ufs_lbn_t tmpval; + ufs_lbn_t lbn; + ufs_lbn_t i; + int frags; + off_t cursize; + off_t off; + int mode; + + ip = ino_read(ino); + mode = DIP(ip, di_mode) & IFMT; + cursize = DIP(ip, di_size); + if (debug) + printf("Truncating ino %d, mode %o to size %jd from size %jd\n", + ino, mode, size, cursize); + + /* Skip datablocks for short links and devices. */ + if (mode == 0 || mode == IFBLK || mode == IFCHR || + (mode == IFLNK && cursize < fs->fs_maxsymlinklen)) + return; + /* Don't extend. */ + if (size > cursize) + size = cursize; + lastlbn = lblkno(fs, blkroundup(fs, size)); + for (i = lastlbn; i < NDADDR; i++) { + if (DIP(ip, di_db[i]) == 0) + continue; + frags = sblksize(fs, cursize, i); + frags = numfrags(fs, frags); + blk_free(DIP(ip, di_db[i]), 0, frags); + DIP_SET(ip, di_db[i], 0); + } + /* + * Follow indirect blocks, freeing anything required. + */ + for (i = 0, tmpval = NINDIR(fs), lbn = NDADDR; i < NIADDR; i++, + lbn = nextlbn) { + nextlbn = lbn + tmpval; + tmpval *= NINDIR(fs); + /* If we're not freeing any in this indirect range skip it. */ + if (lastlbn >= nextlbn) + continue; + if (DIP(ip, di_ib[i]) == 0) + continue; + indir_trunc(ino, -lbn - i, DIP(ip, di_ib[i]), lastlbn); + /* If we freed everything in this indirect free the indir. */ + if (lastlbn > lbn) + continue; + blk_free(DIP(ip, di_ib[i]), 0, frags); + DIP_SET(ip, di_ib[i], 0); + } + ino_dirty(ino); + /* + * Now that we've freed any whole blocks that exceed the desired + * truncation size, figure out how many blocks remain and what the + * last populated lbn is. We will set the size to this last lbn + * rather than worrying about allocating the final lbn as the kernel + * would've done. This is consistent with normal fsck behavior. + */ + visitlbn = 0; + totalfrags = ino_visit(ip, ino, null_visit, VISIT_INDIR | VISIT_EXT); + if (size > lblktosize(fs, visitlbn + 1)) + size = lblktosize(fs, visitlbn + 1); + /* + * If we're truncating direct blocks we have to adjust frags + * accordingly. + */ + if (visitlbn < NDADDR) { + long oldspace, newspace; + + bn = DIP(ip, di_db[visitlbn]); + oldspace = sblksize(fs, cursize, visitlbn); + newspace = sblksize(fs, size, visitlbn); + if (oldspace != newspace) { + bn += numfrags(fs, newspace); + frags = numfrags(fs, oldspace - newspace); + blk_free(bn, 0, frags); + totalfrags -= frags; + } + } + DIP_SET(ip, di_blocks, fsbtodb(fs, totalfrags)); + DIP_SET(ip, di_size, size); + /* + * If we've truncated into the middle of a block or frag we have + * to zero it here. Otherwise the file could extend into + * uninitialized space later. + */ + off = blkoff(fs, size); + if (off) { + uint8_t *buf; + long clrsize; + + bn = ino_blkatoff(ip, ino, visitlbn, &frags); + if (bn == 0) + errx(1, "Block missing from ino %d at lbn %jd\n", + ino, visitlbn); + clrsize = frags * fs->fs_fsize; + buf = dblk_read(bn, clrsize); + clrsize -= off; + buf += off; + bzero(buf, clrsize); + dblk_dirty(bn); + } + return; +} /* * Process records available for one inode and determine whether the * link count is correct or needs adjusting. - * - * XXX Failed to fix zero length directory. Shouldn't .. have been mising? */ static void ino_check(struct suj_ino *sino) @@ -1228,6 +1499,15 @@ ino_check(struct suj_ino *sino) int isat; int mode; + /* + * Handle truncations that were not complete. We don't have + * to worry about truncating directory entries as they must have + * been removed for truncate to succeed. + */ + if (sino->si_trunc) { + ino_trunc(ino, sino->si_trunc->jt_size); + sino->si_trunc = NULL; + } if (sino->si_hasrecs == 0) return; ino = sino->si_ino; @@ -1239,9 +1519,9 @@ ino_check(struct suj_ino *sino) return; rrec = (struct jrefrec *)TAILQ_FIRST(&sino->si_recs)->sr_rec; nlink = rrec->jr_nlink; - newlinks = sino->si_nlinkadj; + newlinks = 0; dotlinks = 0; - removes = 0; + removes = sino->si_nlinkadj; TAILQ_FOREACH(srec, &sino->si_recs, sr_next) { rrec = (struct jrefrec *)srec->sr_rec; isat = ino_isat(rrec->jr_parent, rrec->jr_diroff, @@ -1286,7 +1566,7 @@ ino_check(struct suj_ino *sino) if (rrec->jr_diroff == DOTDOT_OFFSET) { stmp = ino_lookup(rrec->jr_parent, 0); if (stmp) - stmp->si_skipparent = 1; + ino_setskip(stmp, ino); } } } @@ -1304,6 +1584,7 @@ blk_check(struct suj_blk *sblk) { struct suj_rec *srec; struct jblkrec *brec; + struct suj_ino *sino; ufs2_daddr_t blk; int mask; int frags; @@ -1318,6 +1599,10 @@ blk_check(struct suj_blk *sblk) frags = brec->jb_frags; blk = brec->jb_blkno + brec->jb_oldfrags; isat = blk_isat(brec->jb_ino, brec->jb_lbn, blk, &frags); + if (sino == NULL || sino->si_ino != brec->jb_ino) { + sino = ino_lookup(brec->jb_ino, 1); + sino->si_blkadj = 1; + } if (debug) printf("op %d blk %jd ino %d lbn %jd frags %d isat %d (%d)\n", brec->jb_op, blk, brec->jb_ino, brec->jb_lbn, @@ -1336,7 +1621,6 @@ blk_check(struct suj_blk *sblk) blk += frags; frags = brec->jb_frags - frags; blk_free(blk, mask, frags); - ino_adjblks(brec->jb_ino); continue; } /* @@ -1349,19 +1633,31 @@ blk_check(struct suj_blk *sblk) */ blk_free_lbn(blk, brec->jb_ino, brec->jb_lbn, brec->jb_frags, brec->jb_op == JOP_FREEBLK); - ino_adjblks(brec->jb_ino); } } /* + * Walk the list of inode records for this cg and resolve moved and duplicate + * inode references now that we have a complete picture. + */ +static void +cg_build(struct suj_cg *sc) +{ + struct suj_ino *sino; + int i; + + for (i = 0; i < SUJ_HASHSIZE; i++) + LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) + ino_build(sino); +} + +/* * Walk the list of inode and block records for this cg, recovering any * changes which were not complete at the time of crash. */ static void cg_check(struct suj_cg *sc) { - struct suj_blk *nextb; - struct suj_ino *nexti; struct suj_ino *sino; struct suj_blk *sblk; int i; @@ -1370,32 +1666,43 @@ cg_check(struct suj_cg *sc) printf("Recovering cg %d\n", sc->sc_cgx); for (i = 0; i < SUJ_HASHSIZE; i++) - LIST_FOREACH_SAFE(sino, &sc->sc_inohash[i], si_next, nexti) + LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) ino_check(sino); for (i = 0; i < SUJ_HASHSIZE; i++) - LIST_FOREACH_SAFE(sblk, &sc->sc_blkhash[i], sb_next, nextb) + LIST_FOREACH(sblk, &sc->sc_blkhash[i], sb_next) blk_check(sblk); } /* - * Write a potentially dirty cg. All inodes must be written before the - * cg maps are so that an allocated inode is never marked free, even if - * we crash during fsck. + * Now that we've freed blocks which are not referenced we make a second + * pass over all inodes to adjust their block counts. + */ +static void +cg_check2(struct suj_cg *sc) +{ + struct suj_ino *sino; + int i; + + for (i = 0; i < SUJ_HASHSIZE; i++) + LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) + if (sino->si_blkadj) + ino_adjblks(sino); +} + +/* + * Write a potentially dirty cg. Recalculate the summary information and + * update the superblock summary. */ static void cg_write(struct suj_cg *sc) { - struct ino_blk *iblk; ufs1_daddr_t fragno, cgbno, maxbno; u_int8_t *blksfree; struct cg *cgp; int blk; int i; - for (i = 0; i < SUJ_HASHSIZE; i++) - LIST_FOREACH(iblk, &sc->sc_iblkhash[i], ib_next) - iblk_write(iblk); if (sc->sc_dirty == 0) return; /* @@ -1437,6 +1744,21 @@ cg_write(struct suj_cg *sc) err(1, "Unable to write cylinder group %d", sc->sc_cgx); } +/* + * Write out any modified inodes. + */ +static void +cg_write_inos(struct suj_cg *sc) +{ + struct ino_blk *iblk; + int i; + + for (i = 0; i < SUJ_HASHSIZE; i++) + LIST_FOREACH(iblk, &sc->sc_iblkhash[i], ib_next) + if (iblk->ib_dirty) + iblk_write(iblk); +} + static void cg_apply(void (*apply)(struct suj_cg *)) { @@ -1473,7 +1795,7 @@ ino_unlinked(void) if (debug) printf("Freeing unlinked ino %d mode %o\n", ino, mode); - ino_truncate(ip, ino, mode); + ino_reclaim(ip, ino, mode); } else if (debug) printf("Skipping ino %d mode %o with link %d\n", ino, mode, DIP(ip, di_nlink)); @@ -1482,6 +1804,29 @@ ino_unlinked(void) } /* + * Append a new record to the list of records requiring processing. + */ +static void +ino_append(union jrec *rec) +{ + struct suj_ino *sino; + struct suj_rec *srec; + + /* + * Lookup the ino and clear truncate if one is found. Partial + * truncates are always done synchronously so if we discover + * an operation that requires a lock the truncation has completed + * and can be discarded. + */ + sino = ino_lookup(((struct jrefrec *)rec)->jr_ino, 1); + sino->si_trunc = NULL; + sino->si_hasrecs = 1; + srec = errmalloc(sizeof(*srec)); + srec->sr_rec = rec; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Jan 26 06:36:10 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6E4FE1065676; Tue, 26 Jan 2010 06:36:10 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5C2C18FC1B; Tue, 26 Jan 2010 06:36:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0Q6aAo8005680; Tue, 26 Jan 2010 06:36:10 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0Q6aAwh005669; Tue, 26 Jan 2010 06:36:10 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001260636.o0Q6aAwh005669@svn.freebsd.org> From: Jeff Roberson Date: Tue, 26 Jan 2010 06:36:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203012 - in projects/suj/head: lib/libufs sbin/fsck_ffs sbin/mount sbin/tunefs sys/sys sys/ufs/ffs sys/ufs/ufs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jan 2010 06:36:10 -0000 Author: jeff Date: Tue Jan 26 06:36:10 2010 New Revision: 203012 URL: http://svn.freebsd.org/changeset/base/203012 Log: - Move the softdep journal inode into the namespace at /.sujournal. This requires quite a lot of code as tunefs needs to be able to create directory entries in ROOTINO. However this is much cleaner from a compat standpoint. The inode is marked IMMUTABLE and only readable by root. Eventually the kernel will prevent clearing of the IMMUTABLE bit. - Fix a nasty link count bug involving changedirectory_offset(). When a link may exist at more than one location depending on when the directory block was written we create duplicate addref records. When an add and a remove are detected at the same offset the remove is discarded based on the assumption that it cancels the link in the add. A legitimate remove may collide with one of these alternate offset adds that are created by fsck and be discarded even though it removed a real link. To resolve this the lineage of the addref must be established to determine whether the remove refers to an alternate address or not. Any offset which is not up-to-date with respect to the offset in the move record is considered alternate and will not discard a remove. - Use clear_remove() when we begin to exhaust dependencies to prevent excessive looping in request_cleanup(). This should probably also be done in softdep_fsync(). Only workloads which delete incredible numbers of files within the same directory would be affected. stress2 can generate over 100,000 outstanding removes on my test machine. Modified: projects/suj/head/lib/libufs/cgroup.c projects/suj/head/lib/libufs/libufs.h projects/suj/head/sbin/fsck_ffs/pass4.c projects/suj/head/sbin/fsck_ffs/suj.c projects/suj/head/sbin/mount/mount.c projects/suj/head/sbin/tunefs/tunefs.c projects/suj/head/sys/sys/mount.h projects/suj/head/sys/ufs/ffs/ffs_alloc.c projects/suj/head/sys/ufs/ffs/ffs_softdep.c projects/suj/head/sys/ufs/ffs/ffs_vfsops.c projects/suj/head/sys/ufs/ffs/fs.h projects/suj/head/sys/ufs/ufs/inode.h Modified: projects/suj/head/lib/libufs/cgroup.c ============================================================================== --- projects/suj/head/lib/libufs/cgroup.c Tue Jan 26 05:17:03 2010 (r203011) +++ projects/suj/head/lib/libufs/cgroup.c Tue Jan 26 06:36:10 2010 (r203012) @@ -71,6 +71,67 @@ gotit: return (cgbase(fs, cgp->cg_cgx) + blkstofrags(fs, bno)); } +int +cgbfree(struct uufsd *disk, ufs2_daddr_t bno, long size) +{ + u_int8_t *blksfree; + struct fs *fs; + struct cg *cgp; + ufs1_daddr_t fragno, cgbno; + int i, cg, blk, frags, bbase; + + fs = &disk->d_fs; + cg = dtog(fs, bno); + if (cgread1(disk, cg) != 1) + return (-1); + cgp = &disk->d_cg; + cgbno = dtogd(fs, bno); + blksfree = cg_blksfree(cgp); + if (size == fs->fs_bsize) { + fragno = fragstoblks(fs, cgbno); + ffs_setblock(fs, blksfree, fragno); + ffs_clusteracct(fs, cgp, fragno, 1); + cgp->cg_cs.cs_nbfree++; + fs->fs_cstotal.cs_nbfree++; + fs->fs_cs(fs, cg).cs_nbfree++; + } else { + bbase = cgbno - fragnum(fs, cgbno); + /* + * decrement the counts associated with the old frags + */ + blk = blkmap(fs, blksfree, bbase); + ffs_fragacct(fs, blk, cgp->cg_frsum, -1); + /* + * deallocate the fragment + */ + frags = numfrags(fs, size); + for (i = 0; i < frags; i++) + setbit(blksfree, cgbno + i); + cgp->cg_cs.cs_nffree += i; + fs->fs_cstotal.cs_nffree += i; + fs->fs_cs(fs, cg).cs_nffree += i; + /* + * add back in counts associated with the new frags + */ + blk = blkmap(fs, blksfree, bbase); + ffs_fragacct(fs, blk, cgp->cg_frsum, 1); + /* + * if a complete block has been reassembled, account for it + */ + fragno = fragstoblks(fs, bbase); + if (ffs_isblock(fs, blksfree, fragno)) { + cgp->cg_cs.cs_nffree -= fs->fs_frag; + fs->fs_cstotal.cs_nffree -= fs->fs_frag; + fs->fs_cs(fs, cg).cs_nffree -= fs->fs_frag; + ffs_clusteracct(fs, cgp, fragno, 1); + cgp->cg_cs.cs_nbfree++; + fs->fs_cstotal.cs_nbfree++; + fs->fs_cs(fs, cg).cs_nbfree++; + } + } + return cgwrite(disk); +} + ino_t cgialloc(struct uufsd *disk) { Modified: projects/suj/head/lib/libufs/libufs.h ============================================================================== --- projects/suj/head/lib/libufs/libufs.h Tue Jan 26 05:17:03 2010 (r203011) +++ projects/suj/head/lib/libufs/libufs.h Tue Jan 26 06:36:10 2010 (r203012) @@ -111,6 +111,7 @@ int berase(struct uufsd *, ufs2_daddr_t, * cgroup.c */ ufs2_daddr_t cgballoc(struct uufsd *); +int cgbfree(struct uufsd *, ufs2_daddr_t, long); ino_t cgialloc(struct uufsd *); int cgread(struct uufsd *); int cgread1(struct uufsd *, int); Modified: projects/suj/head/sbin/fsck_ffs/pass4.c ============================================================================== --- projects/suj/head/sbin/fsck_ffs/pass4.c Tue Jan 26 05:17:03 2010 (r203011) +++ projects/suj/head/sbin/fsck_ffs/pass4.c Tue Jan 26 06:36:10 2010 (r203012) @@ -72,9 +72,6 @@ pass4(void) for (i = 0; i < inostathead[cg].il_numalloced; i++, inumber++) { if (inumber < ROOTINO) continue; - if (sblock.fs_flags & FS_SUJ && - inumber == sblock.fs_sujournal) - continue; idesc.id_number = inumber; switch (inoinfo(inumber)->ino_state) { Modified: projects/suj/head/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/head/sbin/fsck_ffs/suj.c Tue Jan 26 05:17:03 2010 (r203011) +++ projects/suj/head/sbin/fsck_ffs/suj.c Tue Jan 26 06:36:10 2010 (r203012) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -63,6 +64,7 @@ struct suj_seg { struct suj_rec { TAILQ_ENTRY(suj_rec) sr_next; union jrec *sr_rec; + int sr_alt; /* Is alternate address? */ }; TAILQ_HEAD(srechd, suj_rec); @@ -127,6 +129,7 @@ TAILQ_HEAD(seghd, suj_seg) allsegs; uint64_t oldseq; static struct uufsd *disk = NULL; static struct fs *fs = NULL; +ino_t sujino; /* * Summary statistics. @@ -191,8 +194,7 @@ closedisk(const char *devnam) fs->fs_cstotal.cs_nifree += cgsum->cs_nifree; fs->fs_cstotal.cs_ndir += cgsum->cs_ndir; } - /* XXX Don't set clean for now, we don't trust the journal. */ - /* fs->fs_clean = 1; */ + fs->fs_clean = 1; fs->fs_time = time(NULL); fs->fs_mtime = time(NULL); if (sbwrite(disk, 0) == -1) @@ -1823,6 +1825,7 @@ ino_append(union jrec *rec) sino->si_hasrecs = 1; srec = errmalloc(sizeof(*srec)); srec->sr_rec = rec; + srec->sr_alt = 0; TAILQ_INSERT_TAIL(&sino->si_newrecs, srec, sr_next); } @@ -1844,9 +1847,10 @@ ino_build_ref(struct suj_ino *sino, stru refrec = (struct jrefrec *)srec->sr_rec; if (debug) - printf("ino_build: op %d, ino %d, nlink %d, parent %d, diroff %jd\n", - refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, refrec->jr_parent, - refrec->jr_diroff); + printf("ino_build: op %d, ino %d, nlink %d, " + "parent %d, diroff %jd\n", + refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, + refrec->jr_parent, refrec->jr_diroff); /* * Search for a mvrec that matches this offset. Whether it's an add @@ -1871,16 +1875,19 @@ ino_build_ref(struct suj_ino *sino, stru rrn = errmalloc(sizeof(*refrec)); *rrn = *refrec; rrn->jr_op = JOP_ADDREF; + rrn->jr_diroff = mvrec->jm_oldoff; srn = errmalloc(sizeof(*srec)); + srn->sr_alt = 1; srn->sr_rec = (union jrec *)rrn; ino_build_ref(sino, srn); - refrec->jr_diroff = mvrec->jm_oldoff; } } } /* * We walk backwards so that adds and removes are evaluated in the - * correct order. + * correct order. If a primary record conflicts with an alt keep + * the primary and discard the alt. We must track this to keep + * the correct number of removes in the list. */ for (srn = TAILQ_LAST(&sino->si_recs, srechd); srn; srn = TAILQ_PREV(srn, srechd, sr_next)) { @@ -1890,7 +1897,17 @@ ino_build_ref(struct suj_ino *sino, stru continue; if (debug) printf("Discarding dup.\n"); - rrn->jr_mode = refrec->jr_mode; + if (srn->sr_alt == 0) { + rrn->jr_mode = refrec->jr_mode; + return; + } + /* + * Replace the record in place with the old nlink in case + * we replace the head of the list. Abandon srec as a dup. + */ + refrec->jr_nlink = rrn->jr_nlink; + srn->sr_rec = srec->sr_rec; + srn->sr_alt = srec->sr_alt; return; } TAILQ_INSERT_TAIL(&sino->si_recs, srec, sr_next); @@ -1930,9 +1947,12 @@ ino_move_ref(struct suj_ino *sino, struc /* * When an entry is moved we don't know whether the write * to move has completed yet. To resolve this we create - * a new add dependency in the new location as if it were added - * twice. Only one will succeed. + * a new add dependency in the new location as if it were + * added twice. Only one will succeed. Consider the + * new offset the primary location for the inode and the + * old offset the alt. */ + srn->sr_alt = 1; refrec = errmalloc(sizeof(*refrec)); refrec->jr_op = JOP_ADDREF; refrec->jr_ino = mvrec->jm_ino; @@ -1941,12 +1961,14 @@ ino_move_ref(struct suj_ino *sino, struc refrec->jr_mode = rrn->jr_mode; refrec->jr_nlink = rrn->jr_nlink; srn = errmalloc(sizeof(*srn)); + srn->sr_alt = 0; srn->sr_rec = (union jrec *)refrec; ino_build_ref(sino, srn); break; } /* - * Add this mvrec to the queue of pending mvs. + * Add this mvrec to the queue of pending mvs, possibly collapsing + * it with a prior move for the same inode and offset. */ for (srn = TAILQ_LAST(&sino->si_movs, srechd); srn; srn = TAILQ_PREV(srn, srechd, sr_next)) { @@ -2195,19 +2217,25 @@ suj_verifyino(union dinode *ip) if (DIP(ip, di_nlink) != 1) { printf("Invalid link count %d for journal inode %d\n", - DIP(ip, di_nlink), fs->fs_sujournal); + DIP(ip, di_nlink), sujino); + return (-1); + } + + if (DIP(ip, di_flags) != (SF_IMMUTABLE | SF_NOUNLINK)) { + printf("Invalid flags 0x%X for journal inode %d\n", + DIP(ip, di_flags), sujino); return (-1); } - if (DIP(ip, di_mode) != IFREG) { - printf("Invalid mode %d for journal inode %d\n", - DIP(ip, di_mode), fs->fs_sujournal); + if (DIP(ip, di_mode) != (IFREG | IREAD)) { + printf("Invalid mode %o for journal inode %d\n", + DIP(ip, di_mode), sujino); return (-1); } if (DIP(ip, di_size) < SUJ_MIN || DIP(ip, di_size) > SUJ_MAX) { printf("Invalid size %jd for journal inode %d\n", - DIP(ip, di_size), fs->fs_sujournal); + DIP(ip, di_size), sujino); return (-1); } @@ -2447,20 +2475,60 @@ restart: } /* + * Search a directory block for the SUJ_FILE. + */ +static void +suj_find(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, int frags) +{ + char block[MAXBSIZE]; + struct direct *dp; + int bytes; + int off; + + if (sujino) + return; + bytes = lfragtosize(fs, frags); + if (bread(disk, fsbtodb(fs, blk), block, bytes) <= 0) + err(1, "Failed to read ROOTINO directory block %jd", blk); + for (off = 0; off < bytes; off += dp->d_reclen) { + dp = (struct direct *)&block[off]; + if (dp->d_reclen == 0) + break; + if (dp->d_ino == 0) + continue; + if (dp->d_namlen != strlen(SUJ_FILE)) + continue; + if (bcmp(dp->d_name, SUJ_FILE, dp->d_namlen) != 0) + continue; + sujino = dp->d_ino; + return; + } +} + +/* * Orchestrate the verification of a filesystem via the softupdates journal. */ int suj_check(const char *filesys) { union dinode *jip; + union dinode *ip; uint64_t blocks; opendisk(filesys); TAILQ_INIT(&allsegs); /* + * Find the journal inode. + */ + ip = ino_read(ROOTINO); + sujino = 0; + ino_visit(ip, ROOTINO, suj_find, 0); + if (sujino == 0) + errx(1, "Journal inode removed. Use tunefs to re-create."); + /* * Fetch the journal inode and verify it. */ - jip = ino_read(fs->fs_sujournal); + jip = ino_read(sujino); printf("** SU+J Recovering %s\n", filesys); if (suj_verifyino(jip) != 0) return (-1); @@ -2469,11 +2537,11 @@ suj_check(const char *filesys) * available journal blocks in with suj_read(). */ printf("** Reading %jd byte journal from inode %d.\n", - DIP(jip, di_size), fs->fs_sujournal); + DIP(jip, di_size), sujino); suj_jblocks = jblocks_create(); - blocks = ino_visit(jip, fs->fs_sujournal, suj_add_block, 0); + blocks = ino_visit(jip, sujino, suj_add_block, 0); if (blocks != numfrags(fs, DIP(jip, di_size))) - errx(1, "Sparse journal inode %d.\n", fs->fs_sujournal); + errx(1, "Sparse journal inode %d.\n", sujino); suj_read(); jblocks_destroy(suj_jblocks); suj_jblocks = NULL; Modified: projects/suj/head/sbin/mount/mount.c ============================================================================== --- projects/suj/head/sbin/mount/mount.c Tue Jan 26 05:17:03 2010 (r203011) +++ projects/suj/head/sbin/mount/mount.c Tue Jan 26 06:36:10 2010 (r203012) @@ -113,7 +113,6 @@ static struct opt { { MNT_ACLS, "acls" }, { MNT_NFS4ACLS, "nfsv4acls" }, { MNT_GJOURNAL, "gjournal" }, - { MNT_SUJ, "journal" }, /* always soft-updates, journal */ { 0, NULL } }; Modified: projects/suj/head/sbin/tunefs/tunefs.c ============================================================================== --- projects/suj/head/sbin/tunefs/tunefs.c Tue Jan 26 05:17:03 2010 (r203011) +++ projects/suj/head/sbin/tunefs/tunefs.c Tue Jan 26 06:36:10 2010 (r203012) @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -74,6 +75,7 @@ struct uufsd disk; void usage(void); void printfs(void); int journal_alloc(int64_t size); +void journal_clear(void); void sbdirty(void); int @@ -355,11 +357,11 @@ main(int argc, char *argv[]) if ((~sblock.fs_flags & FS_SUJ) == FS_SUJ) { warnx("%s remains unchanged as disabled", name); } else { - sbdirty(); + journal_clear(); sblock.fs_flags &= ~(FS_DOSOFTDEP | FS_SUJ); - sblock.fs_sujournal = 0; sblock.fs_sujfree = 0; - warnx("%s cleared", name); + warnx("%s cleared, " + "remove .sujournal to reclaim space", name); } } } @@ -523,11 +525,9 @@ journal_balloc(void) { ufs2_daddr_t blk; struct cg *cgp; - struct fs *fs; int valid; cgp = &disk.d_cg; - fs = &disk.d_fs; for (;;) { blk = cgballoc(&disk); if (blk > 0) @@ -553,13 +553,231 @@ journal_balloc(void) warnx("Failed to find sufficient free blocks for the journal"); return -1; } - if (bwrite(&disk, fsbtodb(fs, blk), clrbuf, fs->fs_bsize) <= 0) { + if (bwrite(&disk, fsbtodb(&sblock, blk), clrbuf, + sblock.fs_bsize) <= 0) { warn("Failed to initialize new block"); return -1; } return (blk); } +/* + * Search a directory block for the SUJ_FILE. + */ +static ino_t +dir_search(ufs2_daddr_t blk, int bytes) +{ + char block[MAXBSIZE]; + struct direct *dp; + int off; + + if (bread(&disk, fsbtodb(&sblock, blk), block, bytes) <= 0) { + warn("Failed to read dir block"); + return (-1); + } + for (off = 0; off < bytes; off += dp->d_reclen) { + dp = (struct direct *)&block[off]; + if (dp->d_reclen == 0) + break; + if (dp->d_ino == 0) + continue; + if (dp->d_namlen != strlen(SUJ_FILE)) + continue; + if (bcmp(dp->d_name, SUJ_FILE, dp->d_namlen) != 0) + continue; + return (dp->d_ino); + } + + return (0); +} + +/* + * Search in the ROOTINO for the SUJ_FILE. If it exists we can not enable + * journaling. + */ +static ino_t +journal_findfile(void) +{ + struct ufs1_dinode *dp1; + struct ufs2_dinode *dp2; + int mode; + void *ip; + int i; + + if (getino(&disk, &ip, ROOTINO, &mode) != 0) { + warn("Failed to get root inode"); + return (-1); + } + dp2 = ip; + dp1 = ip; + if (sblock.fs_magic == FS_UFS1_MAGIC) { + if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) { + warnx("ROOTINO extends beyond direct blocks."); + return (-1); + } + for (i = 0; i < NDADDR; i++) { + if (dp1->di_db[i] == 0) + break; + if (dir_search(dp1->di_db[i], + sblksize(&sblock, (off_t)dp1->di_size, i)) != 0) + return (-1); + } + } else { + if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) { + warnx("ROOTINO extends beyond direct blocks."); + return (-1); + } + for (i = 0; i < NDADDR; i++) { + if (dp2->di_db[i] == 0) + break; + if (dir_search(dp2->di_db[i], + sblksize(&sblock, (off_t)dp2->di_size, i)) != 0) + return (-1); + } + } + + return (0); +} + +/* + * Insert the journal at inode 'ino' into directory blk 'blk' at the first + * free offset of 'off'. DIRBLKSIZ blocks after off are initialized as + * empty. + */ +static int +dir_insert(ufs2_daddr_t blk, off_t off, ino_t ino) +{ + struct direct *dp; + char block[MAXBSIZE]; + + if (bread(&disk, fsbtodb(&sblock, blk), block, sblock.fs_bsize) <= 0) { + warn("Failed to read dir block"); + return (-1); + } + bzero(&block[off], sblock.fs_bsize - off); + dp = (struct direct *)&block[off]; + dp->d_ino = ino; + dp->d_reclen = DIRBLKSIZ; + dp->d_type = DT_REG; + dp->d_namlen = strlen(SUJ_FILE); + bcopy(SUJ_FILE, &dp->d_name, strlen(SUJ_FILE)); + off += DIRBLKSIZ; + for (; off < sblock.fs_bsize; off += DIRBLKSIZ) { + dp = (struct direct *)&block[off]; + dp->d_ino = 0; + dp->d_reclen = DIRBLKSIZ; + dp->d_type = DT_UNKNOWN; + } + if (bwrite(&disk, fsbtodb(&sblock, blk), block, sblock.fs_bsize) <= 0) { + warn("Failed to write dir block"); + return (-1); + } + return (0); +} + +/* + * Extend a directory block in 'blk' by copying it to a full size block + * and inserting the new journal inode into .sujournal. + */ +static int +dir_extend(ufs2_daddr_t blk, ufs2_daddr_t nblk, off_t size, ino_t ino) +{ + char block[MAXBSIZE]; + + if (bread(&disk, fsbtodb(&sblock, blk), block, size) <= 0) { + warn("Failed to read dir block"); + return (-1); + } + if (bwrite(&disk, fsbtodb(&sblock, nblk), block, size) <= 0) { + warn("Failed to write dir block"); + return (-1); + } + + return dir_insert(nblk, size, ino); +} + +/* + * Insert the journal file into the ROOTINO directory. We always extend the + * last frag + */ +static int +journal_insertfile(ino_t ino) +{ + struct ufs1_dinode *dp1; + struct ufs2_dinode *dp2; + void *ip; + ufs2_daddr_t nblk; + ufs2_daddr_t blk; + ufs_lbn_t lbn; + int size; + int mode; + int off; + + if (getino(&disk, &ip, ROOTINO, &mode) != 0) { + warn("Failed to get root inode"); + sbdirty(); + return (-1); + } + dp2 = ip; + dp1 = ip; + blk = 0; + size = 0; + nblk = journal_balloc(); + if (nblk <= 0) + return (-1); + /* + * For simplicity sake we aways extend the ROOTINO into a new + * directory block rather than searching for space and inserting + * into an existing block. However, if the rootino has frags + * have to free them and extend the block. + */ + if (sblock.fs_magic == FS_UFS1_MAGIC) { + lbn = lblkno(&sblock, dp1->di_size); + off = blkoff(&sblock, dp1->di_size); + blk = dp1->di_db[lbn]; + size = sblksize(&sblock, (off_t)dp1->di_size, lbn); + } else { + lbn = lblkno(&sblock, dp2->di_size); + off = blkoff(&sblock, dp2->di_size); + blk = dp2->di_db[lbn]; + size = sblksize(&sblock, (off_t)dp2->di_size, lbn); + } + if (off != 0) { + if (dir_extend(blk, nblk, off, ino) == -1) + return (-1); + } else { + blk = 0; + if (dir_insert(nblk, 0, ino) == -1) + return (-1); + } + if (sblock.fs_magic == FS_UFS1_MAGIC) { + dp1->di_blocks += (sblock.fs_bsize - size) / DEV_BSIZE; + dp1->di_db[lbn] = nblk; + dp1->di_size = lblktosize(&sblock, lbn+1); + } else { + dp2->di_blocks += (sblock.fs_bsize - size) / DEV_BSIZE; + dp2->di_db[lbn] = nblk; + dp2->di_size = lblktosize(&sblock, lbn+1); + } + if (putino(&disk) < 0) { + warn("Failed to write root inode"); + return (-1); + } + if (cgwrite(&disk) < 0) { + warn("Failed to write updated cg"); + sbdirty(); + return (-1); + } + if (blk) { + if (cgbfree(&disk, blk, size) < 0) { + warn("Failed to write cg"); + return (-1); + } + } + + return (0); +} + static int indir_fill(ufs2_daddr_t blk, int level, int *resid) { @@ -567,22 +785,20 @@ indir_fill(ufs2_daddr_t blk, int level, ufs1_daddr_t *bap1; ufs2_daddr_t *bap2; ufs2_daddr_t nblk; - struct fs *fs; int ncnt; int cnt; int i; - fs = &disk.d_fs; bzero(indirbuf, sizeof(indirbuf)); bap1 = (ufs1_daddr_t *)indirbuf; bap2 = (void *)bap1; cnt = 0; - for (i = 0; i < NINDIR(fs) && *resid != 0; i++) { + for (i = 0; i < NINDIR(&sblock) && *resid != 0; i++) { nblk = journal_balloc(); if (nblk <= 0) return (-1); cnt++; - if (fs->fs_magic == FS_UFS1_MAGIC) + if (sblock.fs_magic == FS_UFS1_MAGIC) *bap1++ = nblk; else *bap2++ = nblk; @@ -594,13 +810,47 @@ indir_fill(ufs2_daddr_t blk, int level, } else (*resid)--; } - if (bwrite(&disk, fsbtodb(fs, blk), indirbuf, fs->fs_bsize) <= 0) { + if (bwrite(&disk, fsbtodb(&sblock, blk), indirbuf, + sblock.fs_bsize) <= 0) { warn("Failed to write indirect"); return (-1); } return (cnt); } +/* + * Clear the flag bits so the journal can be removed. + */ +void +journal_clear(void) +{ + struct ufs1_dinode *dp1; + struct ufs2_dinode *dp2; + ino_t ino; + int mode; + void *ip; + + ino = journal_findfile(); + if (ino <= 0) { + warnx("Journal file does not exist"); + return; + } + if (getino(&disk, &ip, ino, &mode) != 0) { + warn("Failed to get journal inode"); + return; + } + dp2 = ip; + dp1 = ip; + if (sblock.fs_magic == FS_UFS1_MAGIC) + dp1->di_flags = 0; + else + dp2->di_flags = 0; + if (putino(&disk) < 0) { + warn("Failed to write journal inode"); + return; + } +} + int journal_alloc(int64_t size) { @@ -609,32 +859,39 @@ journal_alloc(int64_t size) ufs2_daddr_t blk; void *ip; struct cg *cgp; - struct fs *fs; int resid; ino_t ino; int blks; int mode; int i; - fs = &disk.d_fs; cgp = &disk.d_cg; ino = 0; /* + * If the journal file exists we can't allocate it. + */ + ino = journal_findfile(); + if (ino > 0) + warnx("Journal file %s already exists, please remove.", + SUJ_FILE); + if (ino != 0) + return (-1); + /* * If the user didn't supply a size pick one based on the filesystem * size constrained with hardcoded MIN and MAX values. We opt for * 1/1024th of the filesystem up to MAX but not exceeding one CG and * not less than the MIN. */ if (size == 0) { - size = (fs->fs_size * fs->fs_bsize) / 1024; + size = (sblock.fs_size * sblock.fs_bsize) / 1024; size = MIN(SUJ_MAX, size); - if (size / fs->fs_fsize > fs->fs_fpg) - size = fs->fs_fpg * fs->fs_fsize; + if (size / sblock.fs_fsize > sblock.fs_fpg) + size = sblock.fs_fpg * sblock.fs_fsize; size = MAX(SUJ_MIN, size); } - resid = blocks = size / fs->fs_bsize; - if (fs->fs_cstotal.cs_nbfree < blocks) { + resid = blocks = size / sblock.fs_bsize; + if (sblock.fs_cstotal.cs_nbfree < blocks) { warn("Insufficient free space for %jd byte journal", size); return (-1); } @@ -647,9 +904,9 @@ journal_alloc(int64_t size) continue; /* * Try to minimize fragmentation by requiring at least a - * 1/8th of the blocks be present in each cg we use. + * 1/16th of the blocks be present in each cg we use. */ - if (cgp->cg_cs.cs_nbfree < blocks / 8) + if (cgp->cg_cs.cs_nbfree < blocks / 16) continue; ino = cgialloc(&disk); if (ino <= 0) @@ -668,22 +925,24 @@ journal_alloc(int64_t size) */ dp2 = ip; dp1 = ip; - if (fs->fs_magic == FS_UFS1_MAGIC) { + if (sblock.fs_magic == FS_UFS1_MAGIC) { bzero(dp1, sizeof(*dp1)); dp1->di_size = size; - dp1->di_mode = IFREG; + dp1->di_mode = IFREG | IREAD; dp1->di_nlink = 1; + dp1->di_flags = SF_IMMUTABLE | SF_NOUNLINK; } else { bzero(dp2, sizeof(*dp2)); dp2->di_size = size; - dp2->di_mode = IFREG; + dp2->di_mode = IFREG | IREAD; dp2->di_nlink = 1; + dp2->di_flags = SF_IMMUTABLE | SF_NOUNLINK; } for (i = 0; i < NDADDR && resid; i++, resid--) { blk = journal_balloc(); if (blk <= 0) goto out; - if (fs->fs_magic == FS_UFS1_MAGIC) { + if (sblock.fs_magic == FS_UFS1_MAGIC) { dp1->di_db[i] = blk; dp1->di_blocks++; } else { @@ -700,7 +959,7 @@ journal_alloc(int64_t size) sbdirty(); goto out; } - if (fs->fs_magic == FS_UFS1_MAGIC) { + if (sblock.fs_magic == FS_UFS1_MAGIC) { dp1->di_ib[i] = blk; dp1->di_blocks += blks; } else { @@ -708,10 +967,10 @@ journal_alloc(int64_t size) dp2->di_blocks += blks; } } - if (fs->fs_magic == FS_UFS1_MAGIC) - dp1->di_blocks *= fs->fs_bsize / disk.d_bsize; + if (sblock.fs_magic == FS_UFS1_MAGIC) + dp1->di_blocks *= sblock.fs_bsize / disk.d_bsize; else - dp2->di_blocks *= fs->fs_bsize / disk.d_bsize; + dp2->di_blocks *= sblock.fs_bsize / disk.d_bsize; if (putino(&disk) < 0) { warn("Failed to write inode"); sbdirty(); @@ -722,8 +981,11 @@ journal_alloc(int64_t size) sbdirty(); return (-1); } - fs->fs_sujournal = ino; - fs->fs_sujfree = 0; + if (journal_insertfile(ino) < 0) { + sbdirty(); + return (-1); + } + sblock.fs_sujfree = 0; return (0); } warnx("Insufficient contiguous free space for the journal."); Modified: projects/suj/head/sys/sys/mount.h ============================================================================== --- projects/suj/head/sys/sys/mount.h Tue Jan 26 05:17:03 2010 (r203011) +++ projects/suj/head/sys/sys/mount.h Tue Jan 26 06:36:10 2010 (r203012) @@ -240,7 +240,6 @@ void __mnt_vnode_markerfree(str #define MNT_NOCLUSTERR 0x40000000 /* disable cluster read */ #define MNT_NOCLUSTERW 0x80000000 /* disable cluster write */ #define MNT_NFS4ACLS 0x00000010 -#define MNT_SUJ 0x00000080 /* softdep journaling */ /* * NFS export related mount flags. @@ -277,7 +276,7 @@ void __mnt_vnode_markerfree(str MNT_NOCLUSTERW | MNT_SUIDDIR | MNT_SOFTDEP | \ MNT_IGNORE | MNT_EXPUBLIC | MNT_NOSYMFOLLOW | \ MNT_GJOURNAL | MNT_MULTILABEL | MNT_ACLS | \ - MNT_NFS4ACLS | MNT_SUJ) + MNT_NFS4ACLS) /* Mask of flags that can be updated. */ #define MNT_UPDATEMASK (MNT_NOSUID | MNT_NOEXEC | \ @@ -326,6 +325,7 @@ void __mnt_vnode_markerfree(str #define MNTK_REFEXPIRE 0x00000020 /* refcount expiring is happening */ #define MNTK_EXTENDED_SHARED 0x00000040 /* Allow shared locking for more ops */ #define MNTK_SHARED_WRITES 0x00000080 /* Allow shared locking for writes */ +#define MNTK_SUJ 0x00000100 /* Softdep journaling enabled */ #define MNTK_UNMOUNT 0x01000000 /* unmount in progress */ #define MNTK_MWAIT 0x02000000 /* waiting for unmount to finish */ #define MNTK_SUSPEND 0x08000000 /* request write suspension */ Modified: projects/suj/head/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- projects/suj/head/sys/ufs/ffs/ffs_alloc.c Tue Jan 26 05:17:03 2010 (r203011) +++ projects/suj/head/sys/ufs/ffs/ffs_alloc.c Tue Jan 26 06:36:10 2010 (r203012) @@ -1851,6 +1851,7 @@ ffs_blkfree(ump, fs, devvp, bno, size, i ino_t inum; struct workhead *dephd; { + struct mount *mp; struct cg *cgp; struct buf *bp; ufs1_daddr_t fragno, cgbno; @@ -1965,7 +1966,8 @@ ffs_blkfree(ump, fs, devvp, bno, size, i fs->fs_fmod = 1; ACTIVECLEAR(fs, cg); UFS_UNLOCK(ump); - if (UFSTOVFS(ump)->mnt_flag & MNT_SOFTDEP) + mp = UFSTOVFS(ump); + if (mp->mnt_flag & MNT_SOFTDEP) softdep_setup_blkfree(UFSTOVFS(ump), bp, bno, numfrags(fs, size), dephd); bdwrite(bp); Modified: projects/suj/head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- projects/suj/head/sys/ufs/ffs/ffs_softdep.c Tue Jan 26 05:17:03 2010 (r203011) +++ projects/suj/head/sys/ufs/ffs/ffs_softdep.c Tue Jan 26 06:36:10 2010 (r203012) @@ -1902,7 +1902,7 @@ softdep_unmount(mp) struct mount *mp; { - if (mp->mnt_flag & MNT_SUJ) + if (mp->mnt_kern_flag & MNTK_SUJ) journal_unmount(mp); } @@ -2044,16 +2044,36 @@ journal_mount(mp, fs, cred) struct fs *fs; struct ucred *cred; { + struct componentname cnp; struct jblocks *jblocks; + struct vnode *dvp; struct vnode *vp; struct inode *ip; ufs2_daddr_t blkno; + ino_t sujournal; int bcount; int error; int i; - mp->mnt_flag |= MNT_SUJ; - error = VFS_VGET(mp, fs->fs_sujournal, LK_EXCLUSIVE, &vp); + mp->mnt_kern_flag |= MNTK_SUJ; + error = VFS_VGET(mp, ROOTINO, LK_EXCLUSIVE, &dvp); + if (error) + return (error); + bzero(&cnp, sizeof(cnp)); + cnp.cn_nameiop = LOOKUP; + cnp.cn_flags = ISLASTCN; + cnp.cn_thread = curthread; + cnp.cn_cred = curthread->td_ucred; + cnp.cn_pnbuf = SUJ_FILE; + cnp.cn_nameptr = SUJ_FILE; + cnp.cn_namelen = strlen(SUJ_FILE); + error = ufs_lookup_ino(dvp, NULL, &cnp, &sujournal); + vput(dvp); + if (error != 0) { + printf("Failed to find journal. Use tunefs to create one\n"); + return (error); + } + error = VFS_VGET(mp, sujournal, LK_EXCLUSIVE, &vp); if (error) return (error); ip = VTOI(vp); @@ -2075,9 +2095,18 @@ journal_mount(mp, fs, cred) } jblocks->jb_low = jblocks->jb_free / 3; /* Reserve 33%. */ jblocks->jb_min = jblocks->jb_free / 10; /* Suspend at 10%. */ - DIP_SET(ip, i_modrev, fs->fs_mtime); - ip->i_flags |= IN_MODIFIED; - ffs_update(vp, 1); + /* + * Only validate the journal contents if the filesystem is clean, + * otherwise we write the logs but they'll never be used. If the + * filesystem was still dirty when we mounted it the journal is + * invalid and a new journal can only be valid if it starts from a + * clean mount. + */ + if (fs->fs_clean) { + DIP_SET(ip, i_modrev, fs->fs_mtime); + ip->i_flags |= IN_MODIFIED; + ffs_update(vp, 1); + } VFSTOUFS(mp)->softdep_jblocks = jblocks; out: vput(vp); @@ -2159,6 +2188,11 @@ remove_from_journal(wk) ump->softdep_on_journal -= 1; } +/* + * Check for journal space as well as dependency limits so the prelink + * code can throttle both journaled and non-journaled filesystems. + * Threshold is 0 for low and 1 for min. + */ static int journal_space(ump, thresh) struct ufsmount *ump; @@ -2167,7 +2201,20 @@ journal_space(ump, thresh) struct jblocks *jblocks; int avail; + /* + * We use a tighter restriction here to prevent request_cleanup() + * running in threads from running into locks we currently hold. + */ + if (num_inodedep > (max_softdeps / 10) * 9) + return (0); + jblocks = ump->softdep_jblocks; + if (jblocks == NULL) + return (1); + if (thresh) + thresh = jblocks->jb_min; + else + thresh = jblocks->jb_low; avail = (ump->softdep_on_journal * JREC_SIZE) / DEV_BSIZE; avail = jblocks->jb_free - avail; @@ -2210,15 +2257,13 @@ softdep_prealloc(vp, waitok) struct vnode *vp; int waitok; { - struct jblocks *jblocks; struct ufsmount *ump; if (DOINGSUJ(vp) == 0) return (0); ump = VFSTOUFS(vp->v_mount); - jblocks = ump->softdep_jblocks; ACQUIRE_LOCK(&lk); - if (journal_space(ump, jblocks->jb_low)) { + if (journal_space(ump, 0)) { FREE_LOCK(&lk); return (0); } @@ -2233,9 +2278,9 @@ softdep_prealloc(vp, waitok) ffs_syncvnode(vp, waitok); ACQUIRE_LOCK(&lk); process_removes(vp); - if (journal_space(ump, jblocks->jb_low) == 0) { + if (journal_space(ump, 0) == 0) { softdep_speedup(); - if (journal_space(ump, jblocks->jb_min) == 0) + if (journal_space(ump, 1) == 0) journal_suspend(ump); } FREE_LOCK(&lk); @@ -2243,18 +2288,22 @@ softdep_prealloc(vp, waitok) return (0); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Jan 26 06:38:12 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 74968106568B; Tue, 26 Jan 2010 06:38:12 +0000 (UTC) (envelope-from jroberson@jroberson.net) Received: from mail-yw0-f197.google.com (mail-yw0-f197.google.com [209.85.211.197]) by mx1.freebsd.org (Postfix) with ESMTP id E36718FC1A; Tue, 26 Jan 2010 06:38:11 +0000 (UTC) Received: by ywh35 with SMTP id 35so3413480ywh.7 for ; Mon, 25 Jan 2010 22:38:10 -0800 (PST) Received: by 10.90.47.6 with SMTP id u6mr668702agu.22.1264487890734; Mon, 25 Jan 2010 22:38:10 -0800 (PST) Received: from ?10.0.1.198? (udp022762uds.hawaiiantel.net [72.234.79.107]) by mx.google.com with ESMTPS id 16sm3387415gxk.15.2010.01.25.22.38.07 (version=SSLv3 cipher=RC4-MD5); Mon, 25 Jan 2010 22:38:09 -0800 (PST) Date: Mon, 25 Jan 2010 20:42:28 -1000 (HST) From: Jeff Roberson X-X-Sender: jroberson@desktop To: Jeff Roberson In-Reply-To: <201001260636.o0Q6aAwh005669@svn.freebsd.org> Message-ID: References: <201001260636.o0Q6aAwh005669@svn.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r203012 - in projects/suj/head: lib/libufs sbin/fsck_ffs sbin/mount sbin/tunefs sys/sys sys/ufs/ffs sys/ufs/ufs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jan 2010 06:38:12 -0000 I forgot to mention, this change breaks backwards compat with earlier suj releases. I think this is the last fs.h revision I will make for some time to come. Jeff On Tue, 26 Jan 2010, Jeff Roberson wrote: > Author: jeff > Date: Tue Jan 26 06:36:10 2010 > New Revision: 203012 > URL: http://svn.freebsd.org/changeset/base/203012 > > Log: > - Move the softdep journal inode into the namespace at /.sujournal. This > requires quite a lot of code as tunefs needs to be able to create > directory entries in ROOTINO. However this is much cleaner from a > compat standpoint. The inode is marked IMMUTABLE and only readable by > root. Eventually the kernel will prevent clearing of the IMMUTABLE bit. > - Fix a nasty link count bug involving changedirectory_offset(). When > a link may exist at more than one location depending on when the > directory block was written we create duplicate addref records. When > an add and a remove are detected at the same offset the remove is > discarded based on the assumption that it cancels the link in the add. > A legitimate remove may collide with one of these alternate offset adds > that are created by fsck and be discarded even though it removed a real > link. To resolve this the lineage of the addref must be established > to determine whether the remove refers to an alternate address or not. > Any offset which is not up-to-date with respect to the offset in the > move record is considered alternate and will not discard a remove. > - Use clear_remove() when we begin to exhaust dependencies to prevent > excessive looping in request_cleanup(). This should probably > also be done in softdep_fsync(). Only workloads which delete > incredible numbers of files within the same directory would be > affected. stress2 can generate over 100,000 outstanding removes on > my test machine. > > Modified: > projects/suj/head/lib/libufs/cgroup.c > projects/suj/head/lib/libufs/libufs.h > projects/suj/head/sbin/fsck_ffs/pass4.c > projects/suj/head/sbin/fsck_ffs/suj.c > projects/suj/head/sbin/mount/mount.c > projects/suj/head/sbin/tunefs/tunefs.c > projects/suj/head/sys/sys/mount.h > projects/suj/head/sys/ufs/ffs/ffs_alloc.c > projects/suj/head/sys/ufs/ffs/ffs_softdep.c > projects/suj/head/sys/ufs/ffs/ffs_vfsops.c > projects/suj/head/sys/ufs/ffs/fs.h > projects/suj/head/sys/ufs/ufs/inode.h > > Modified: projects/suj/head/lib/libufs/cgroup.c > ============================================================================== > --- projects/suj/head/lib/libufs/cgroup.c Tue Jan 26 05:17:03 2010 (r203011) > +++ projects/suj/head/lib/libufs/cgroup.c Tue Jan 26 06:36:10 2010 (r203012) > @@ -71,6 +71,67 @@ gotit: > return (cgbase(fs, cgp->cg_cgx) + blkstofrags(fs, bno)); > } > > +int > +cgbfree(struct uufsd *disk, ufs2_daddr_t bno, long size) > +{ > + u_int8_t *blksfree; > + struct fs *fs; > + struct cg *cgp; > + ufs1_daddr_t fragno, cgbno; > + int i, cg, blk, frags, bbase; > + > + fs = &disk->d_fs; > + cg = dtog(fs, bno); > + if (cgread1(disk, cg) != 1) > + return (-1); > + cgp = &disk->d_cg; > + cgbno = dtogd(fs, bno); > + blksfree = cg_blksfree(cgp); > + if (size == fs->fs_bsize) { > + fragno = fragstoblks(fs, cgbno); > + ffs_setblock(fs, blksfree, fragno); > + ffs_clusteracct(fs, cgp, fragno, 1); > + cgp->cg_cs.cs_nbfree++; > + fs->fs_cstotal.cs_nbfree++; > + fs->fs_cs(fs, cg).cs_nbfree++; > + } else { > + bbase = cgbno - fragnum(fs, cgbno); > + /* > + * decrement the counts associated with the old frags > + */ > + blk = blkmap(fs, blksfree, bbase); > + ffs_fragacct(fs, blk, cgp->cg_frsum, -1); > + /* > + * deallocate the fragment > + */ > + frags = numfrags(fs, size); > + for (i = 0; i < frags; i++) > + setbit(blksfree, cgbno + i); > + cgp->cg_cs.cs_nffree += i; > + fs->fs_cstotal.cs_nffree += i; > + fs->fs_cs(fs, cg).cs_nffree += i; > + /* > + * add back in counts associated with the new frags > + */ > + blk = blkmap(fs, blksfree, bbase); > + ffs_fragacct(fs, blk, cgp->cg_frsum, 1); > + /* > + * if a complete block has been reassembled, account for it > + */ > + fragno = fragstoblks(fs, bbase); > + if (ffs_isblock(fs, blksfree, fragno)) { > + cgp->cg_cs.cs_nffree -= fs->fs_frag; > + fs->fs_cstotal.cs_nffree -= fs->fs_frag; > + fs->fs_cs(fs, cg).cs_nffree -= fs->fs_frag; > + ffs_clusteracct(fs, cgp, fragno, 1); > + cgp->cg_cs.cs_nbfree++; > + fs->fs_cstotal.cs_nbfree++; > + fs->fs_cs(fs, cg).cs_nbfree++; > + } > + } > + return cgwrite(disk); > +} > + > ino_t > cgialloc(struct uufsd *disk) > { > > Modified: projects/suj/head/lib/libufs/libufs.h > ============================================================================== > --- projects/suj/head/lib/libufs/libufs.h Tue Jan 26 05:17:03 2010 (r203011) > +++ projects/suj/head/lib/libufs/libufs.h Tue Jan 26 06:36:10 2010 (r203012) > @@ -111,6 +111,7 @@ int berase(struct uufsd *, ufs2_daddr_t, > * cgroup.c > */ > ufs2_daddr_t cgballoc(struct uufsd *); > +int cgbfree(struct uufsd *, ufs2_daddr_t, long); > ino_t cgialloc(struct uufsd *); > int cgread(struct uufsd *); > int cgread1(struct uufsd *, int); > > Modified: projects/suj/head/sbin/fsck_ffs/pass4.c > ============================================================================== > --- projects/suj/head/sbin/fsck_ffs/pass4.c Tue Jan 26 05:17:03 2010 (r203011) > +++ projects/suj/head/sbin/fsck_ffs/pass4.c Tue Jan 26 06:36:10 2010 (r203012) > @@ -72,9 +72,6 @@ pass4(void) > for (i = 0; i < inostathead[cg].il_numalloced; i++, inumber++) { > if (inumber < ROOTINO) > continue; > - if (sblock.fs_flags & FS_SUJ && > - inumber == sblock.fs_sujournal) > - continue; > idesc.id_number = inumber; > switch (inoinfo(inumber)->ino_state) { > > > Modified: projects/suj/head/sbin/fsck_ffs/suj.c > ============================================================================== > --- projects/suj/head/sbin/fsck_ffs/suj.c Tue Jan 26 05:17:03 2010 (r203011) > +++ projects/suj/head/sbin/fsck_ffs/suj.c Tue Jan 26 06:36:10 2010 (r203012) > @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > +#include > #include > #include > #include > @@ -63,6 +64,7 @@ struct suj_seg { > struct suj_rec { > TAILQ_ENTRY(suj_rec) sr_next; > union jrec *sr_rec; > + int sr_alt; /* Is alternate address? */ > }; > TAILQ_HEAD(srechd, suj_rec); > > @@ -127,6 +129,7 @@ TAILQ_HEAD(seghd, suj_seg) allsegs; > uint64_t oldseq; > static struct uufsd *disk = NULL; > static struct fs *fs = NULL; > +ino_t sujino; > > /* > * Summary statistics. > @@ -191,8 +194,7 @@ closedisk(const char *devnam) > fs->fs_cstotal.cs_nifree += cgsum->cs_nifree; > fs->fs_cstotal.cs_ndir += cgsum->cs_ndir; > } > - /* XXX Don't set clean for now, we don't trust the journal. */ > - /* fs->fs_clean = 1; */ > + fs->fs_clean = 1; > fs->fs_time = time(NULL); > fs->fs_mtime = time(NULL); > if (sbwrite(disk, 0) == -1) > @@ -1823,6 +1825,7 @@ ino_append(union jrec *rec) > sino->si_hasrecs = 1; > srec = errmalloc(sizeof(*srec)); > srec->sr_rec = rec; > + srec->sr_alt = 0; > TAILQ_INSERT_TAIL(&sino->si_newrecs, srec, sr_next); > } > > @@ -1844,9 +1847,10 @@ ino_build_ref(struct suj_ino *sino, stru > > refrec = (struct jrefrec *)srec->sr_rec; > if (debug) > - printf("ino_build: op %d, ino %d, nlink %d, parent %d, diroff %jd\n", > - refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, refrec->jr_parent, > - refrec->jr_diroff); > + printf("ino_build: op %d, ino %d, nlink %d, " > + "parent %d, diroff %jd\n", > + refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, > + refrec->jr_parent, refrec->jr_diroff); > > /* > * Search for a mvrec that matches this offset. Whether it's an add > @@ -1871,16 +1875,19 @@ ino_build_ref(struct suj_ino *sino, stru > rrn = errmalloc(sizeof(*refrec)); > *rrn = *refrec; > rrn->jr_op = JOP_ADDREF; > + rrn->jr_diroff = mvrec->jm_oldoff; > srn = errmalloc(sizeof(*srec)); > + srn->sr_alt = 1; > srn->sr_rec = (union jrec *)rrn; > ino_build_ref(sino, srn); > - refrec->jr_diroff = mvrec->jm_oldoff; > } > } > } > /* > * We walk backwards so that adds and removes are evaluated in the > - * correct order. > + * correct order. If a primary record conflicts with an alt keep > + * the primary and discard the alt. We must track this to keep > + * the correct number of removes in the list. > */ > for (srn = TAILQ_LAST(&sino->si_recs, srechd); srn; > srn = TAILQ_PREV(srn, srechd, sr_next)) { > @@ -1890,7 +1897,17 @@ ino_build_ref(struct suj_ino *sino, stru > continue; > if (debug) > printf("Discarding dup.\n"); > - rrn->jr_mode = refrec->jr_mode; > + if (srn->sr_alt == 0) { > + rrn->jr_mode = refrec->jr_mode; > + return; > + } > + /* > + * Replace the record in place with the old nlink in case > + * we replace the head of the list. Abandon srec as a dup. > + */ > + refrec->jr_nlink = rrn->jr_nlink; > + srn->sr_rec = srec->sr_rec; > + srn->sr_alt = srec->sr_alt; > return; > } > TAILQ_INSERT_TAIL(&sino->si_recs, srec, sr_next); > @@ -1930,9 +1947,12 @@ ino_move_ref(struct suj_ino *sino, struc > /* > * When an entry is moved we don't know whether the write > * to move has completed yet. To resolve this we create > - * a new add dependency in the new location as if it were added > - * twice. Only one will succeed. > + * a new add dependency in the new location as if it were > + * added twice. Only one will succeed. Consider the > + * new offset the primary location for the inode and the > + * old offset the alt. > */ > + srn->sr_alt = 1; > refrec = errmalloc(sizeof(*refrec)); > refrec->jr_op = JOP_ADDREF; > refrec->jr_ino = mvrec->jm_ino; > @@ -1941,12 +1961,14 @@ ino_move_ref(struct suj_ino *sino, struc > refrec->jr_mode = rrn->jr_mode; > refrec->jr_nlink = rrn->jr_nlink; > srn = errmalloc(sizeof(*srn)); > + srn->sr_alt = 0; > srn->sr_rec = (union jrec *)refrec; > ino_build_ref(sino, srn); > break; > } > /* > - * Add this mvrec to the queue of pending mvs. > + * Add this mvrec to the queue of pending mvs, possibly collapsing > + * it with a prior move for the same inode and offset. > */ > for (srn = TAILQ_LAST(&sino->si_movs, srechd); srn; > srn = TAILQ_PREV(srn, srechd, sr_next)) { > @@ -2195,19 +2217,25 @@ suj_verifyino(union dinode *ip) > > if (DIP(ip, di_nlink) != 1) { > printf("Invalid link count %d for journal inode %d\n", > - DIP(ip, di_nlink), fs->fs_sujournal); > + DIP(ip, di_nlink), sujino); > + return (-1); > + } > + > + if (DIP(ip, di_flags) != (SF_IMMUTABLE | SF_NOUNLINK)) { > + printf("Invalid flags 0x%X for journal inode %d\n", > + DIP(ip, di_flags), sujino); > return (-1); > } > > - if (DIP(ip, di_mode) != IFREG) { > - printf("Invalid mode %d for journal inode %d\n", > - DIP(ip, di_mode), fs->fs_sujournal); > + if (DIP(ip, di_mode) != (IFREG | IREAD)) { > + printf("Invalid mode %o for journal inode %d\n", > + DIP(ip, di_mode), sujino); > return (-1); > } > > if (DIP(ip, di_size) < SUJ_MIN || DIP(ip, di_size) > SUJ_MAX) { > printf("Invalid size %jd for journal inode %d\n", > - DIP(ip, di_size), fs->fs_sujournal); > + DIP(ip, di_size), sujino); > return (-1); > } > > @@ -2447,20 +2475,60 @@ restart: > } > > /* > + * Search a directory block for the SUJ_FILE. > + */ > +static void > +suj_find(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, int frags) > +{ > + char block[MAXBSIZE]; > + struct direct *dp; > + int bytes; > + int off; > + > + if (sujino) > + return; > + bytes = lfragtosize(fs, frags); > + if (bread(disk, fsbtodb(fs, blk), block, bytes) <= 0) > + err(1, "Failed to read ROOTINO directory block %jd", blk); > + for (off = 0; off < bytes; off += dp->d_reclen) { > + dp = (struct direct *)&block[off]; > + if (dp->d_reclen == 0) > + break; > + if (dp->d_ino == 0) > + continue; > + if (dp->d_namlen != strlen(SUJ_FILE)) > + continue; > + if (bcmp(dp->d_name, SUJ_FILE, dp->d_namlen) != 0) > + continue; > + sujino = dp->d_ino; > + return; > + } > +} > + > +/* > * Orchestrate the verification of a filesystem via the softupdates journal. > */ > int > suj_check(const char *filesys) > { > union dinode *jip; > + union dinode *ip; > uint64_t blocks; > > opendisk(filesys); > TAILQ_INIT(&allsegs); > /* > + * Find the journal inode. > + */ > + ip = ino_read(ROOTINO); > + sujino = 0; > + ino_visit(ip, ROOTINO, suj_find, 0); > + if (sujino == 0) > + errx(1, "Journal inode removed. Use tunefs to re-create."); > + /* > * Fetch the journal inode and verify it. > */ > - jip = ino_read(fs->fs_sujournal); > + jip = ino_read(sujino); > printf("** SU+J Recovering %s\n", filesys); > if (suj_verifyino(jip) != 0) > return (-1); > @@ -2469,11 +2537,11 @@ suj_check(const char *filesys) > * available journal blocks in with suj_read(). > */ > printf("** Reading %jd byte journal from inode %d.\n", > - DIP(jip, di_size), fs->fs_sujournal); > + DIP(jip, di_size), sujino); > suj_jblocks = jblocks_create(); > - blocks = ino_visit(jip, fs->fs_sujournal, suj_add_block, 0); > + blocks = ino_visit(jip, sujino, suj_add_block, 0); > if (blocks != numfrags(fs, DIP(jip, di_size))) > - errx(1, "Sparse journal inode %d.\n", fs->fs_sujournal); > + errx(1, "Sparse journal inode %d.\n", sujino); > suj_read(); > jblocks_destroy(suj_jblocks); > suj_jblocks = NULL; > > Modified: projects/suj/head/sbin/mount/mount.c > ============================================================================== > --- projects/suj/head/sbin/mount/mount.c Tue Jan 26 05:17:03 2010 (r203011) > +++ projects/suj/head/sbin/mount/mount.c Tue Jan 26 06:36:10 2010 (r203012) > @@ -113,7 +113,6 @@ static struct opt { > { MNT_ACLS, "acls" }, > { MNT_NFS4ACLS, "nfsv4acls" }, > { MNT_GJOURNAL, "gjournal" }, > - { MNT_SUJ, "journal" }, /* always soft-updates, journal */ > { 0, NULL } > }; > > > Modified: projects/suj/head/sbin/tunefs/tunefs.c > ============================================================================== > --- projects/suj/head/sbin/tunefs/tunefs.c Tue Jan 26 05:17:03 2010 (r203011) > +++ projects/suj/head/sbin/tunefs/tunefs.c Tue Jan 26 06:36:10 2010 (r203012) > @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); > #include > #include > #include > +#include > > #include > #include > @@ -74,6 +75,7 @@ struct uufsd disk; > void usage(void); > void printfs(void); > int journal_alloc(int64_t size); > +void journal_clear(void); > void sbdirty(void); > > int > @@ -355,11 +357,11 @@ main(int argc, char *argv[]) > if ((~sblock.fs_flags & FS_SUJ) == FS_SUJ) { > warnx("%s remains unchanged as disabled", name); > } else { > - sbdirty(); > + journal_clear(); > sblock.fs_flags &= ~(FS_DOSOFTDEP | FS_SUJ); > - sblock.fs_sujournal = 0; > sblock.fs_sujfree = 0; > - warnx("%s cleared", name); > + warnx("%s cleared, " > + "remove .sujournal to reclaim space", name); > } > } > } > @@ -523,11 +525,9 @@ journal_balloc(void) > { > ufs2_daddr_t blk; > struct cg *cgp; > - struct fs *fs; > int valid; > > cgp = &disk.d_cg; > - fs = &disk.d_fs; > for (;;) { > blk = cgballoc(&disk); > if (blk > 0) > @@ -553,13 +553,231 @@ journal_balloc(void) > warnx("Failed to find sufficient free blocks for the journal"); > return -1; > } > - if (bwrite(&disk, fsbtodb(fs, blk), clrbuf, fs->fs_bsize) <= 0) { > + if (bwrite(&disk, fsbtodb(&sblock, blk), clrbuf, > + sblock.fs_bsize) <= 0) { > warn("Failed to initialize new block"); > return -1; > } > return (blk); > } > > +/* > + * Search a directory block for the SUJ_FILE. > + */ > +static ino_t > +dir_search(ufs2_daddr_t blk, int bytes) > +{ > + char block[MAXBSIZE]; > + struct direct *dp; > + int off; > + > + if (bread(&disk, fsbtodb(&sblock, blk), block, bytes) <= 0) { > + warn("Failed to read dir block"); > + return (-1); > + } > + for (off = 0; off < bytes; off += dp->d_reclen) { > + dp = (struct direct *)&block[off]; > + if (dp->d_reclen == 0) > + break; > + if (dp->d_ino == 0) > + continue; > + if (dp->d_namlen != strlen(SUJ_FILE)) > + continue; > + if (bcmp(dp->d_name, SUJ_FILE, dp->d_namlen) != 0) > + continue; > + return (dp->d_ino); > + } > + > + return (0); > +} > + > +/* > + * Search in the ROOTINO for the SUJ_FILE. If it exists we can not enable > + * journaling. > + */ > +static ino_t > +journal_findfile(void) > +{ > + struct ufs1_dinode *dp1; > + struct ufs2_dinode *dp2; > + int mode; > + void *ip; > + int i; > + > + if (getino(&disk, &ip, ROOTINO, &mode) != 0) { > + warn("Failed to get root inode"); > + return (-1); > + } > + dp2 = ip; > + dp1 = ip; > + if (sblock.fs_magic == FS_UFS1_MAGIC) { > + if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) { > + warnx("ROOTINO extends beyond direct blocks."); > + return (-1); > + } > + for (i = 0; i < NDADDR; i++) { > + if (dp1->di_db[i] == 0) > + break; > + if (dir_search(dp1->di_db[i], > + sblksize(&sblock, (off_t)dp1->di_size, i)) != 0) > + return (-1); > + } > + } else { > + if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) { > + warnx("ROOTINO extends beyond direct blocks."); > + return (-1); > + } > + for (i = 0; i < NDADDR; i++) { > + if (dp2->di_db[i] == 0) > + break; > + if (dir_search(dp2->di_db[i], > + sblksize(&sblock, (off_t)dp2->di_size, i)) != 0) > + return (-1); > + } > + } > + > + return (0); > +} > + > +/* > + * Insert the journal at inode 'ino' into directory blk 'blk' at the first > + * free offset of 'off'. DIRBLKSIZ blocks after off are initialized as > + * empty. > + */ > +static int > +dir_insert(ufs2_daddr_t blk, off_t off, ino_t ino) > +{ > + struct direct *dp; > + char block[MAXBSIZE]; > + > + if (bread(&disk, fsbtodb(&sblock, blk), block, sblock.fs_bsize) <= 0) { > + warn("Failed to read dir block"); > + return (-1); > + } > + bzero(&block[off], sblock.fs_bsize - off); > + dp = (struct direct *)&block[off]; > + dp->d_ino = ino; > + dp->d_reclen = DIRBLKSIZ; > + dp->d_type = DT_REG; > + dp->d_namlen = strlen(SUJ_FILE); > + bcopy(SUJ_FILE, &dp->d_name, strlen(SUJ_FILE)); > + off += DIRBLKSIZ; > + for (; off < sblock.fs_bsize; off += DIRBLKSIZ) { > + dp = (struct direct *)&block[off]; > + dp->d_ino = 0; > + dp->d_reclen = DIRBLKSIZ; > + dp->d_type = DT_UNKNOWN; > + } > + if (bwrite(&disk, fsbtodb(&sblock, blk), block, sblock.fs_bsize) <= 0) { > + warn("Failed to write dir block"); > + return (-1); > + } > + return (0); > +} > + > +/* > + * Extend a directory block in 'blk' by copying it to a full size block > + * and inserting the new journal inode into .sujournal. > + */ > +static int > +dir_extend(ufs2_daddr_t blk, ufs2_daddr_t nblk, off_t size, ino_t ino) > +{ > + char block[MAXBSIZE]; > + > + if (bread(&disk, fsbtodb(&sblock, blk), block, size) <= 0) { > + warn("Failed to read dir block"); > + return (-1); > + } > + if (bwrite(&disk, fsbtodb(&sblock, nblk), block, size) <= 0) { > + warn("Failed to write dir block"); > + return (-1); > + } > + > + return dir_insert(nblk, size, ino); > +} > + > +/* > + * Insert the journal file into the ROOTINO directory. We always extend the > + * last frag > + */ > +static int > +journal_insertfile(ino_t ino) > +{ > + struct ufs1_dinode *dp1; > + struct ufs2_dinode *dp2; > + void *ip; > + ufs2_daddr_t nblk; > + ufs2_daddr_t blk; > + ufs_lbn_t lbn; > + int size; > + int mode; > + int off; > + > + if (getino(&disk, &ip, ROOTINO, &mode) != 0) { > + warn("Failed to get root inode"); > + sbdirty(); > + return (-1); > + } > + dp2 = ip; > + dp1 = ip; > + blk = 0; > + size = 0; > + nblk = journal_balloc(); > + if (nblk <= 0) > + return (-1); > + /* > + * For simplicity sake we aways extend the ROOTINO into a new > + * directory block rather than searching for space and inserting > + * into an existing block. However, if the rootino has frags > + * have to free them and extend the block. > + */ > + if (sblock.fs_magic == FS_UFS1_MAGIC) { > + lbn = lblkno(&sblock, dp1->di_size); > + off = blkoff(&sblock, dp1->di_size); > + blk = dp1->di_db[lbn]; > + size = sblksize(&sblock, (off_t)dp1->di_size, lbn); > + } else { > + lbn = lblkno(&sblock, dp2->di_size); > + off = blkoff(&sblock, dp2->di_size); > + blk = dp2->di_db[lbn]; > + size = sblksize(&sblock, (off_t)dp2->di_size, lbn); > + } > + if (off != 0) { > + if (dir_extend(blk, nblk, off, ino) == -1) > + return (-1); > + } else { > + blk = 0; > + if (dir_insert(nblk, 0, ino) == -1) > + return (-1); > + } > + if (sblock.fs_magic == FS_UFS1_MAGIC) { > + dp1->di_blocks += (sblock.fs_bsize - size) / DEV_BSIZE; > + dp1->di_db[lbn] = nblk; > + dp1->di_size = lblktosize(&sblock, lbn+1); > + } else { > + dp2->di_blocks += (sblock.fs_bsize - size) / DEV_BSIZE; > + dp2->di_db[lbn] = nblk; > + dp2->di_size = lblktosize(&sblock, lbn+1); > + } > + if (putino(&disk) < 0) { > + warn("Failed to write root inode"); > + return (-1); > + } > + if (cgwrite(&disk) < 0) { > + warn("Failed to write updated cg"); > + sbdirty(); > + return (-1); > + } > + if (blk) { > + if (cgbfree(&disk, blk, size) < 0) { > + warn("Failed to write cg"); > + return (-1); > + } > + } > + > + return (0); > +} > + > static int > indir_fill(ufs2_daddr_t blk, int level, int *resid) > { > @@ -567,22 +785,20 @@ indir_fill(ufs2_daddr_t blk, int level, > ufs1_daddr_t *bap1; > ufs2_daddr_t *bap2; > ufs2_daddr_t nblk; > - struct fs *fs; > int ncnt; > int cnt; > int i; > > - fs = &disk.d_fs; > bzero(indirbuf, sizeof(indirbuf)); > bap1 = (ufs1_daddr_t *)indirbuf; > bap2 = (void *)bap1; > cnt = 0; > - for (i = 0; i < NINDIR(fs) && *resid != 0; i++) { > + for (i = 0; i < NINDIR(&sblock) && *resid != 0; i++) { > nblk = journal_balloc(); > if (nblk <= 0) > return (-1); > cnt++; > - if (fs->fs_magic == FS_UFS1_MAGIC) > + if (sblock.fs_magic == FS_UFS1_MAGIC) > *bap1++ = nblk; > else > *bap2++ = nblk; > @@ -594,13 +810,47 @@ indir_fill(ufs2_daddr_t blk, int level, > } else > (*resid)--; > } > - if (bwrite(&disk, fsbtodb(fs, blk), indirbuf, fs->fs_bsize) <= 0) { > + if (bwrite(&disk, fsbtodb(&sblock, blk), indirbuf, > + sblock.fs_bsize) <= 0) { > warn("Failed to write indirect"); > return (-1); > } > return (cnt); > } > > +/* > + * Clear the flag bits so the journal can be removed. > + */ > +void > +journal_clear(void) > +{ > + struct ufs1_dinode *dp1; > + struct ufs2_dinode *dp2; > + ino_t ino; > + int mode; > + void *ip; > + > + ino = journal_findfile(); > + if (ino <= 0) { > + warnx("Journal file does not exist"); > + return; > + } > + if (getino(&disk, &ip, ino, &mode) != 0) { > + warn("Failed to get journal inode"); > + return; > + } > + dp2 = ip; > + dp1 = ip; > + if (sblock.fs_magic == FS_UFS1_MAGIC) > + dp1->di_flags = 0; > + else > + dp2->di_flags = 0; > + if (putino(&disk) < 0) { > + warn("Failed to write journal inode"); > + return; > + } > +} > + > int > journal_alloc(int64_t size) > { > @@ -609,32 +859,39 @@ journal_alloc(int64_t size) > ufs2_daddr_t blk; > void *ip; > struct cg *cgp; > - struct fs *fs; > int resid; > ino_t ino; > int blks; > int mode; > int i; > > - fs = &disk.d_fs; > cgp = &disk.d_cg; > ino = 0; > > /* > + * If the journal file exists we can't allocate it. > + */ > + ino = journal_findfile(); > + if (ino > 0) > + warnx("Journal file %s already exists, please remove.", > + SUJ_FILE); > + if (ino != 0) > + return (-1); > + /* > * If the user didn't supply a size pick one based on the filesystem > * size constrained with hardcoded MIN and MAX values. We opt for > * 1/1024th of the filesystem up to MAX but not exceeding one CG and > * not less than the MIN. > */ > if (size == 0) { > - size = (fs->fs_size * fs->fs_bsize) / 1024; > + size = (sblock.fs_size * sblock.fs_bsize) / 1024; > size = MIN(SUJ_MAX, size); > - if (size / fs->fs_fsize > fs->fs_fpg) > - size = fs->fs_fpg * fs->fs_fsize; > + if (size / sblock.fs_fsize > sblock.fs_fpg) > + size = sblock.fs_fpg * sblock.fs_fsize; > size = MAX(SUJ_MIN, size); > } > - resid = blocks = size / fs->fs_bsize; > - if (fs->fs_cstotal.cs_nbfree < blocks) { > + resid = blocks = size / sblock.fs_bsize; > + if (sblock.fs_cstotal.cs_nbfree < blocks) { > warn("Insufficient free space for %jd byte journal", size); > return (-1); > } > @@ -647,9 +904,9 @@ journal_alloc(int64_t size) > continue; > /* > * Try to minimize fragmentation by requiring at least a > - * 1/8th of the blocks be present in each cg we use. > + * 1/16th of the blocks be present in each cg we use. > */ > - if (cgp->cg_cs.cs_nbfree < blocks / 8) > + if (cgp->cg_cs.cs_nbfree < blocks / 16) > continue; > ino = cgialloc(&disk); > if (ino <= 0) > @@ -668,22 +925,24 @@ journal_alloc(int64_t size) > */ > dp2 = ip; > dp1 = ip; > - if (fs->fs_magic == FS_UFS1_MAGIC) { > + if (sblock.fs_magic == FS_UFS1_MAGIC) { > bzero(dp1, sizeof(*dp1)); > dp1->di_size = size; > - dp1->di_mode = IFREG; > + dp1->di_mode = IFREG | IREAD; > dp1->di_nlink = 1; > + dp1->di_flags = SF_IMMUTABLE | SF_NOUNLINK; > } else { > bzero(dp2, sizeof(*dp2)); > dp2->di_size = size; > - dp2->di_mode = IFREG; > + dp2->di_mode = IFREG | IREAD; > dp2->di_nlink = 1; > + dp2->di_flags = SF_IMMUTABLE | SF_NOUNLINK; > } > for (i = 0; i < NDADDR && resid; i++, resid--) { > blk = journal_balloc(); > if (blk <= 0) > goto out; > - if (fs->fs_magic == FS_UFS1_MAGIC) { > + if (sblock.fs_magic == FS_UFS1_MAGIC) { > dp1->di_db[i] = blk; > dp1->di_blocks++; > } else { > @@ -700,7 +959,7 @@ journal_alloc(int64_t size) > sbdirty(); > goto out; > } > - if (fs->fs_magic == FS_UFS1_MAGIC) { > + if (sblock.fs_magic == FS_UFS1_MAGIC) { > dp1->di_ib[i] = blk; > dp1->di_blocks += blks; > } else { > @@ -708,10 +967,10 @@ journal_alloc(int64_t size) > dp2->di_blocks += blks; > } > } > - if (fs->fs_magic == FS_UFS1_MAGIC) > - dp1->di_blocks *= fs->fs_bsize / disk.d_bsize; > + if (sblock.fs_magic == FS_UFS1_MAGIC) > + dp1->di_blocks *= sblock.fs_bsize / disk.d_bsize; > else > - dp2->di_blocks *= fs->fs_bsize / disk.d_bsize; > + dp2->di_blocks *= sblock.fs_bsize / disk.d_bsize; > if (putino(&disk) < 0) { > warn("Failed to write inode"); > sbdirty(); > @@ -722,8 +981,11 @@ journal_alloc(int64_t size) > sbdirty(); > return (-1); > } > - fs->fs_sujournal = ino; > - fs->fs_sujfree = 0; > + if (journal_insertfile(ino) < 0) { > + sbdirty(); > + return (-1); > + } > + sblock.fs_sujfree = 0; > return (0); > } > warnx("Insufficient contiguous free space for the journal."); > > Modified: projects/suj/head/sys/sys/mount.h > ============================================================================== > --- projects/suj/head/sys/sys/mount.h Tue Jan 26 05:17:03 2010 (r203011) > +++ projects/suj/head/sys/sys/mount.h Tue Jan 26 06:36:10 2010 (r203012) > @@ -240,7 +240,6 @@ void __mnt_vnode_markerfree(str > #define MNT_NOCLUSTERR 0x40000000 /* disable cluster read */ > #define MNT_NOCLUSTERW 0x80000000 /* disable cluster write */ > #define MNT_NFS4ACLS 0x00000010 > -#define MNT_SUJ 0x00000080 /* softdep journaling */ > > /* > * NFS export related mount flags. > @@ -277,7 +276,7 @@ void __mnt_vnode_markerfree(str > MNT_NOCLUSTERW | MNT_SUIDDIR | MNT_SOFTDEP | \ > MNT_IGNORE | MNT_EXPUBLIC | MNT_NOSYMFOLLOW | \ > MNT_GJOURNAL | MNT_MULTILABEL | MNT_ACLS | \ > - MNT_NFS4ACLS | MNT_SUJ) > + MNT_NFS4ACLS) > > /* Mask of flags that can be updated. */ > #define MNT_UPDATEMASK (MNT_NOSUID | MNT_NOEXEC | \ > @@ -326,6 +325,7 @@ void __mnt_vnode_markerfree(str > #define MNTK_REFEXPIRE 0x00000020 /* refcount expiring is happening */ > #define MNTK_EXTENDED_SHARED 0x00000040 /* Allow shared locking for more ops */ > #define MNTK_SHARED_WRITES 0x00000080 /* Allow shared locking for writes */ > +#define MNTK_SUJ 0x00000100 /* Softdep journaling enabled */ > #define MNTK_UNMOUNT 0x01000000 /* unmount in progress */ > #define MNTK_MWAIT 0x02000000 /* waiting for unmount to finish */ > #define MNTK_SUSPEND 0x08000000 /* request write suspension */ > > Modified: projects/suj/head/sys/ufs/ffs/ffs_alloc.c > ============================================================================== > --- projects/suj/head/sys/ufs/ffs/ffs_alloc.c Tue Jan 26 05:17:03 2010 (r203011) > +++ projects/suj/head/sys/ufs/ffs/ffs_alloc.c Tue Jan 26 06:36:10 2010 (r203012) > @@ -1851,6 +1851,7 @@ ffs_blkfree(ump, fs, devvp, bno, size, i > ino_t inum; > struct workhead *dephd; > { > + struct mount *mp; > struct cg *cgp; > struct buf *bp; > ufs1_daddr_t fragno, cgbno; > @@ -1965,7 +1966,8 @@ ffs_blkfree(ump, fs, devvp, bno, size, i > fs->fs_fmod = 1; > ACTIVECLEAR(fs, cg); > UFS_UNLOCK(ump); > - if (UFSTOVFS(ump)->mnt_flag & MNT_SOFTDEP) > + mp = UFSTOVFS(ump); > + if (mp->mnt_flag & MNT_SOFTDEP) > softdep_setup_blkfree(UFSTOVFS(ump), bp, bno, > numfrags(fs, size), dephd); > bdwrite(bp); > > Modified: projects/suj/head/sys/ufs/ffs/ffs_softdep.c > ============================================================================== > --- projects/suj/head/sys/ufs/ffs/ffs_softdep.c Tue Jan 26 05:17:03 2010 (r203011) > +++ projects/suj/head/sys/ufs/ffs/ffs_softdep.c Tue Jan 26 06:36:10 2010 (r203012) > @@ -1902,7 +1902,7 @@ softdep_unmount(mp) > struct mount *mp; > { > > - if (mp->mnt_flag & MNT_SUJ) > + if (mp->mnt_kern_flag & MNTK_SUJ) > journal_unmount(mp); > } > > @@ -2044,16 +2044,36 @@ journal_mount(mp, fs, cred) > struct fs *fs; > struct ucred *cred; > { > + struct componentname cnp; > struct jblocks *jblocks; > + struct vnode *dvp; > struct vnode *vp; > struct inode *ip; > ufs2_daddr_t blkno; > + ino_t sujournal; > int bcount; > int error; > int i; > > - mp->mnt_flag |= MNT_SUJ; > - error = VFS_VGET(mp, fs->fs_sujournal, LK_EXCLUSIVE, &vp); > + mp->mnt_kern_flag |= MNTK_SUJ; > + error = VFS_VGET(mp, ROOTINO, LK_EXCLUSIVE, &dvp); > + if (error) > + return (error); > + bzero(&cnp, sizeof(cnp)); > + cnp.cn_nameiop = LOOKUP; > + cnp.cn_flags = ISLASTCN; > + cnp.cn_thread = curthread; > + cnp.cn_cred = curthread->td_ucred; > + cnp.cn_pnbuf = SUJ_FILE; > + cnp.cn_nameptr = SUJ_FILE; > + cnp.cn_namelen = strlen(SUJ_FILE); > + error = ufs_lookup_ino(dvp, NULL, &cnp, &sujournal); > + vput(dvp); > + if (error != 0) { > + printf("Failed to find journal. Use tunefs to create one\n"); > + return (error); > + } > + error = VFS_VGET(mp, sujournal, LK_EXCLUSIVE, &vp); > if (error) > return (error); > ip = VTOI(vp); > @@ -2075,9 +2095,18 @@ journal_mount(mp, fs, cred) > } > jblocks->jb_low = jblocks->jb_free / 3; /* Reserve 33%. */ > jblocks->jb_min = jblocks->jb_free / 10; /* Suspend at 10%. */ > - DIP_SET(ip, i_modrev, fs->fs_mtime); > - ip->i_flags |= IN_MODIFIED; > - ffs_update(vp, 1); > + /* > + * Only validate the journal contents if the filesystem is clean, > + * otherwise we write the logs but they'll never be used. If the > + * filesystem was still dirty when we mounted it the journal is > + * invalid and a new journal can only be valid if it starts from a > + * clean mount. > + */ > + if (fs->fs_clean) { > + DIP_SET(ip, i_modrev, fs->fs_mtime); > + ip->i_flags |= IN_MODIFIED; > + ffs_update(vp, 1); > + } > VFSTOUFS(mp)->softdep_jblocks = jblocks; > out: > vput(vp); > @@ -2159,6 +2188,11 @@ remove_from_journal(wk) > ump->softdep_on_journal -= 1; > } > > +/* > + * Check for journal space as well as dependency limits so the prelink > + * code can throttle both journaled and non-journaled filesystems. > + * Threshold is 0 for low and 1 for min. > + */ > static int > journal_space(ump, thresh) > struct ufsmount *ump; > @@ -2167,7 +2201,20 @@ journal_space(ump, thresh) > struct jblocks *jblocks; > int avail; > > + /* > + * We use a tighter restriction here to prevent request_cleanup() > + * running in threads from running into locks we currently hold. > + */ > + if (num_inodedep > (max_softdeps / 10) * 9) > + return (0); > + > jblocks = ump->softdep_jblocks; > + if (jblocks == NULL) > + return (1); > + if (thresh) > + thresh = jblocks->jb_min; > + else > + thresh = jblocks->jb_low; > avail = (ump->softdep_on_journal * JREC_SIZE) / DEV_BSIZE; > avail = jblocks->jb_free - avail; > > @@ -2210,15 +2257,13 @@ softdep_prealloc(vp, waitok) > struct vnode *vp; > int waitok; > { > - struct jblocks *jblocks; > struct ufsmount *ump; > > if (DOINGSUJ(vp) == 0) > return (0); > ump = VFSTOUFS(vp->v_mount); > - jblocks = ump->softdep_jblocks; > ACQUIRE_LOCK(&lk); > - if (journal_space(ump, jblocks->jb_low)) { > + if (journal_space(ump, 0)) { > FREE_LOCK(&lk); > return (0); > } > @@ -2233,9 +2278,9 @@ softdep_prealloc(vp, waitok) > ffs_syncvnode(vp, waitok); > ACQUIRE_LOCK(&lk); > process_removes(vp); > - if (journal_space(ump, jblocks->jb_low) == 0) { > + if (journal_space(ump, 0) == 0) { > softdep_speedup(); > - if (journal_space(ump, jblocks->jb_min) == 0) > + if (journal_space(ump, 1) == 0) > journal_suspend(ump); > } > FREE_LOCK(&lk); > @@ -2243,18 +2288,22 @@ softdep_prealloc(vp, waitok) > return (0); > > *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** > From owner-svn-src-projects@FreeBSD.ORG Tue Jan 26 06:45:39 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 583CB1065693; Tue, 26 Jan 2010 06:45:39 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 44C678FC16; Tue, 26 Jan 2010 06:45:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0Q6jdoA007778; Tue, 26 Jan 2010 06:45:39 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0Q6jdqC007768; Tue, 26 Jan 2010 06:45:39 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001260645.o0Q6jdqC007768@svn.freebsd.org> From: Jeff Roberson Date: Tue, 26 Jan 2010 06:45:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203013 - in projects/suj: 6/lib/libufs 6/sbin/fsck_ffs 6/sbin/tunefs 6/sys/sys 6/sys/ufs/ffs 7/lib/libufs 7/sbin/fsck_ffs 7/sbin/mount 7/sbin/tunefs 7/sys/sys 7/sys/ufs/ffs 7/sys/ufs/u... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jan 2010 06:45:39 -0000 Author: jeff Date: Tue Jan 26 06:45:38 2010 New Revision: 203013 URL: http://svn.freebsd.org/changeset/base/203013 Log: - Merge r203012 from suj/head Modified: projects/suj/6/lib/libufs/cgroup.c projects/suj/6/lib/libufs/libufs.h projects/suj/6/sbin/fsck_ffs/pass4.c projects/suj/6/sbin/fsck_ffs/suj.c projects/suj/6/sbin/tunefs/tunefs.c projects/suj/6/sys/sys/mount.h projects/suj/6/sys/ufs/ffs/ffs_alloc.c projects/suj/6/sys/ufs/ffs/ffs_softdep.c projects/suj/6/sys/ufs/ffs/ffs_vfsops.c projects/suj/6/sys/ufs/ffs/fs.h projects/suj/7/lib/libufs/cgroup.c projects/suj/7/lib/libufs/libufs.h projects/suj/7/sbin/fsck_ffs/pass4.c projects/suj/7/sbin/fsck_ffs/suj.c projects/suj/7/sbin/mount/mount.c projects/suj/7/sbin/tunefs/tunefs.c projects/suj/7/sys/sys/mount.h projects/suj/7/sys/ufs/ffs/ffs_alloc.c projects/suj/7/sys/ufs/ffs/ffs_softdep.c projects/suj/7/sys/ufs/ffs/ffs_vfsops.c projects/suj/7/sys/ufs/ffs/fs.h projects/suj/7/sys/ufs/ufs/inode.h projects/suj/8/lib/libufs/cgroup.c projects/suj/8/lib/libufs/libufs.h projects/suj/8/sbin/fsck_ffs/pass4.c projects/suj/8/sbin/fsck_ffs/suj.c projects/suj/8/sbin/mount/mount.c projects/suj/8/sbin/tunefs/tunefs.c projects/suj/8/sys/sys/mount.h projects/suj/8/sys/ufs/ffs/ffs_alloc.c projects/suj/8/sys/ufs/ffs/ffs_softdep.c projects/suj/8/sys/ufs/ffs/ffs_vfsops.c projects/suj/8/sys/ufs/ffs/fs.h projects/suj/8/sys/ufs/ufs/inode.h Modified: projects/suj/6/lib/libufs/cgroup.c ============================================================================== --- projects/suj/6/lib/libufs/cgroup.c Tue Jan 26 06:36:10 2010 (r203012) +++ projects/suj/6/lib/libufs/cgroup.c Tue Jan 26 06:45:38 2010 (r203013) @@ -71,6 +71,67 @@ gotit: return (cgbase(fs, cgp->cg_cgx) + blkstofrags(fs, bno)); } +int +cgbfree(struct uufsd *disk, ufs2_daddr_t bno, long size) +{ + u_int8_t *blksfree; + struct fs *fs; + struct cg *cgp; + ufs1_daddr_t fragno, cgbno; + int i, cg, blk, frags, bbase; + + fs = &disk->d_fs; + cg = dtog(fs, bno); + if (cgread1(disk, cg) != 1) + return (-1); + cgp = &disk->d_cg; + cgbno = dtogd(fs, bno); + blksfree = cg_blksfree(cgp); + if (size == fs->fs_bsize) { + fragno = fragstoblks(fs, cgbno); + ffs_setblock(fs, blksfree, fragno); + ffs_clusteracct(fs, cgp, fragno, 1); + cgp->cg_cs.cs_nbfree++; + fs->fs_cstotal.cs_nbfree++; + fs->fs_cs(fs, cg).cs_nbfree++; + } else { + bbase = cgbno - fragnum(fs, cgbno); + /* + * decrement the counts associated with the old frags + */ + blk = blkmap(fs, blksfree, bbase); + ffs_fragacct(fs, blk, cgp->cg_frsum, -1); + /* + * deallocate the fragment + */ + frags = numfrags(fs, size); + for (i = 0; i < frags; i++) + setbit(blksfree, cgbno + i); + cgp->cg_cs.cs_nffree += i; + fs->fs_cstotal.cs_nffree += i; + fs->fs_cs(fs, cg).cs_nffree += i; + /* + * add back in counts associated with the new frags + */ + blk = blkmap(fs, blksfree, bbase); + ffs_fragacct(fs, blk, cgp->cg_frsum, 1); + /* + * if a complete block has been reassembled, account for it + */ + fragno = fragstoblks(fs, bbase); + if (ffs_isblock(fs, blksfree, fragno)) { + cgp->cg_cs.cs_nffree -= fs->fs_frag; + fs->fs_cstotal.cs_nffree -= fs->fs_frag; + fs->fs_cs(fs, cg).cs_nffree -= fs->fs_frag; + ffs_clusteracct(fs, cgp, fragno, 1); + cgp->cg_cs.cs_nbfree++; + fs->fs_cstotal.cs_nbfree++; + fs->fs_cs(fs, cg).cs_nbfree++; + } + } + return cgwrite(disk); +} + ino_t cgialloc(struct uufsd *disk) { Modified: projects/suj/6/lib/libufs/libufs.h ============================================================================== --- projects/suj/6/lib/libufs/libufs.h Tue Jan 26 06:36:10 2010 (r203012) +++ projects/suj/6/lib/libufs/libufs.h Tue Jan 26 06:45:38 2010 (r203013) @@ -110,6 +110,7 @@ ssize_t bwrite(struct uufsd *, ufs2_dadd * cgroup.c */ ufs2_daddr_t cgballoc(struct uufsd *); +int cgbfree(struct uufsd *, ufs2_daddr_t, long); ino_t cgialloc(struct uufsd *); int cgread(struct uufsd *); int cgread1(struct uufsd *, int); Modified: projects/suj/6/sbin/fsck_ffs/pass4.c ============================================================================== --- projects/suj/6/sbin/fsck_ffs/pass4.c Tue Jan 26 06:36:10 2010 (r203012) +++ projects/suj/6/sbin/fsck_ffs/pass4.c Tue Jan 26 06:45:38 2010 (r203013) @@ -72,9 +72,6 @@ pass4(void) for (i = 0; i < inostathead[cg].il_numalloced; i++, inumber++) { if (inumber < ROOTINO) continue; - if (sblock.fs_flags & FS_SUJ && - inumber == sblock.fs_sujournal) - continue; idesc.id_number = inumber; switch (inoinfo(inumber)->ino_state) { Modified: projects/suj/6/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/6/sbin/fsck_ffs/suj.c Tue Jan 26 06:36:10 2010 (r203012) +++ projects/suj/6/sbin/fsck_ffs/suj.c Tue Jan 26 06:45:38 2010 (r203013) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -63,6 +64,7 @@ struct suj_seg { struct suj_rec { TAILQ_ENTRY(suj_rec) sr_next; union jrec *sr_rec; + int sr_alt; /* Is alternate address? */ }; TAILQ_HEAD(srechd, suj_rec); @@ -127,6 +129,7 @@ TAILQ_HEAD(seghd, suj_seg) allsegs; uint64_t oldseq; static struct uufsd *disk = NULL; static struct fs *fs = NULL; +ino_t sujino; /* * Summary statistics. @@ -191,8 +194,7 @@ closedisk(const char *devnam) fs->fs_cstotal.cs_nifree += cgsum->cs_nifree; fs->fs_cstotal.cs_ndir += cgsum->cs_ndir; } - /* XXX Don't set clean for now, we don't trust the journal. */ - /* fs->fs_clean = 1; */ + fs->fs_clean = 1; fs->fs_time = time(NULL); fs->fs_mtime = time(NULL); if (sbwrite(disk, 0) == -1) @@ -1823,6 +1825,7 @@ ino_append(union jrec *rec) sino->si_hasrecs = 1; srec = errmalloc(sizeof(*srec)); srec->sr_rec = rec; + srec->sr_alt = 0; TAILQ_INSERT_TAIL(&sino->si_newrecs, srec, sr_next); } @@ -1844,9 +1847,10 @@ ino_build_ref(struct suj_ino *sino, stru refrec = (struct jrefrec *)srec->sr_rec; if (debug) - printf("ino_build: op %d, ino %d, nlink %d, parent %d, diroff %jd\n", - refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, refrec->jr_parent, - refrec->jr_diroff); + printf("ino_build: op %d, ino %d, nlink %d, " + "parent %d, diroff %jd\n", + refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, + refrec->jr_parent, refrec->jr_diroff); /* * Search for a mvrec that matches this offset. Whether it's an add @@ -1871,16 +1875,19 @@ ino_build_ref(struct suj_ino *sino, stru rrn = errmalloc(sizeof(*refrec)); *rrn = *refrec; rrn->jr_op = JOP_ADDREF; + rrn->jr_diroff = mvrec->jm_oldoff; srn = errmalloc(sizeof(*srec)); + srn->sr_alt = 1; srn->sr_rec = (union jrec *)rrn; ino_build_ref(sino, srn); - refrec->jr_diroff = mvrec->jm_oldoff; } } } /* * We walk backwards so that adds and removes are evaluated in the - * correct order. + * correct order. If a primary record conflicts with an alt keep + * the primary and discard the alt. We must track this to keep + * the correct number of removes in the list. */ for (srn = TAILQ_LAST(&sino->si_recs, srechd); srn; srn = TAILQ_PREV(srn, srechd, sr_next)) { @@ -1890,7 +1897,17 @@ ino_build_ref(struct suj_ino *sino, stru continue; if (debug) printf("Discarding dup.\n"); - rrn->jr_mode = refrec->jr_mode; + if (srn->sr_alt == 0) { + rrn->jr_mode = refrec->jr_mode; + return; + } + /* + * Replace the record in place with the old nlink in case + * we replace the head of the list. Abandon srec as a dup. + */ + refrec->jr_nlink = rrn->jr_nlink; + srn->sr_rec = srec->sr_rec; + srn->sr_alt = srec->sr_alt; return; } TAILQ_INSERT_TAIL(&sino->si_recs, srec, sr_next); @@ -1930,9 +1947,12 @@ ino_move_ref(struct suj_ino *sino, struc /* * When an entry is moved we don't know whether the write * to move has completed yet. To resolve this we create - * a new add dependency in the new location as if it were added - * twice. Only one will succeed. + * a new add dependency in the new location as if it were + * added twice. Only one will succeed. Consider the + * new offset the primary location for the inode and the + * old offset the alt. */ + srn->sr_alt = 1; refrec = errmalloc(sizeof(*refrec)); refrec->jr_op = JOP_ADDREF; refrec->jr_ino = mvrec->jm_ino; @@ -1941,12 +1961,14 @@ ino_move_ref(struct suj_ino *sino, struc refrec->jr_mode = rrn->jr_mode; refrec->jr_nlink = rrn->jr_nlink; srn = errmalloc(sizeof(*srn)); + srn->sr_alt = 0; srn->sr_rec = (union jrec *)refrec; ino_build_ref(sino, srn); break; } /* - * Add this mvrec to the queue of pending mvs. + * Add this mvrec to the queue of pending mvs, possibly collapsing + * it with a prior move for the same inode and offset. */ for (srn = TAILQ_LAST(&sino->si_movs, srechd); srn; srn = TAILQ_PREV(srn, srechd, sr_next)) { @@ -2195,19 +2217,25 @@ suj_verifyino(union dinode *ip) if (DIP(ip, di_nlink) != 1) { printf("Invalid link count %d for journal inode %d\n", - DIP(ip, di_nlink), fs->fs_sujournal); + DIP(ip, di_nlink), sujino); + return (-1); + } + + if (DIP(ip, di_flags) != (SF_IMMUTABLE | SF_NOUNLINK)) { + printf("Invalid flags 0x%X for journal inode %d\n", + DIP(ip, di_flags), sujino); return (-1); } - if (DIP(ip, di_mode) != IFREG) { - printf("Invalid mode %d for journal inode %d\n", - DIP(ip, di_mode), fs->fs_sujournal); + if (DIP(ip, di_mode) != (IFREG | IREAD)) { + printf("Invalid mode %o for journal inode %d\n", + DIP(ip, di_mode), sujino); return (-1); } if (DIP(ip, di_size) < SUJ_MIN || DIP(ip, di_size) > SUJ_MAX) { printf("Invalid size %jd for journal inode %d\n", - DIP(ip, di_size), fs->fs_sujournal); + DIP(ip, di_size), sujino); return (-1); } @@ -2447,20 +2475,60 @@ restart: } /* + * Search a directory block for the SUJ_FILE. + */ +static void +suj_find(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, int frags) +{ + char block[MAXBSIZE]; + struct direct *dp; + int bytes; + int off; + + if (sujino) + return; + bytes = lfragtosize(fs, frags); + if (bread(disk, fsbtodb(fs, blk), block, bytes) <= 0) + err(1, "Failed to read ROOTINO directory block %jd", blk); + for (off = 0; off < bytes; off += dp->d_reclen) { + dp = (struct direct *)&block[off]; + if (dp->d_reclen == 0) + break; + if (dp->d_ino == 0) + continue; + if (dp->d_namlen != strlen(SUJ_FILE)) + continue; + if (bcmp(dp->d_name, SUJ_FILE, dp->d_namlen) != 0) + continue; + sujino = dp->d_ino; + return; + } +} + +/* * Orchestrate the verification of a filesystem via the softupdates journal. */ int suj_check(const char *filesys) { union dinode *jip; + union dinode *ip; uint64_t blocks; opendisk(filesys); TAILQ_INIT(&allsegs); /* + * Find the journal inode. + */ + ip = ino_read(ROOTINO); + sujino = 0; + ino_visit(ip, ROOTINO, suj_find, 0); + if (sujino == 0) + errx(1, "Journal inode removed. Use tunefs to re-create."); + /* * Fetch the journal inode and verify it. */ - jip = ino_read(fs->fs_sujournal); + jip = ino_read(sujino); printf("** SU+J Recovering %s\n", filesys); if (suj_verifyino(jip) != 0) return (-1); @@ -2469,11 +2537,11 @@ suj_check(const char *filesys) * available journal blocks in with suj_read(). */ printf("** Reading %jd byte journal from inode %d.\n", - DIP(jip, di_size), fs->fs_sujournal); + DIP(jip, di_size), sujino); suj_jblocks = jblocks_create(); - blocks = ino_visit(jip, fs->fs_sujournal, suj_add_block, 0); + blocks = ino_visit(jip, sujino, suj_add_block, 0); if (blocks != numfrags(fs, DIP(jip, di_size))) - errx(1, "Sparse journal inode %d.\n", fs->fs_sujournal); + errx(1, "Sparse journal inode %d.\n", sujino); suj_read(); jblocks_destroy(suj_jblocks); suj_jblocks = NULL; Modified: projects/suj/6/sbin/tunefs/tunefs.c ============================================================================== --- projects/suj/6/sbin/tunefs/tunefs.c Tue Jan 26 06:36:10 2010 (r203012) +++ projects/suj/6/sbin/tunefs/tunefs.c Tue Jan 26 06:45:38 2010 (r203013) @@ -52,6 +52,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -74,6 +75,7 @@ struct uufsd disk; void usage(void); void printfs(void); int journal_alloc(int64_t size); +void journal_clear(void); void sbdirty(void); int @@ -327,11 +329,11 @@ main(int argc, char *argv[]) if ((~sblock.fs_flags & FS_SUJ) == FS_SUJ) { warnx("%s remains unchanged as disabled", name); } else { - sbdirty(); + journal_clear(); sblock.fs_flags &= ~(FS_DOSOFTDEP | FS_SUJ); - sblock.fs_sujournal = 0; sblock.fs_sujfree = 0; - warnx("%s cleared", name); + warnx("%s cleared, " + "remove .sujournal to reclaim space", name); } } } @@ -452,11 +454,9 @@ journal_balloc(void) { ufs2_daddr_t blk; struct cg *cgp; - struct fs *fs; int valid; cgp = &disk.d_cg; - fs = &disk.d_fs; for (;;) { blk = cgballoc(&disk); if (blk > 0) @@ -482,13 +482,231 @@ journal_balloc(void) warnx("Failed to find sufficient free blocks for the journal"); return -1; } - if (bwrite(&disk, fsbtodb(fs, blk), clrbuf, fs->fs_bsize) <= 0) { + if (bwrite(&disk, fsbtodb(&sblock, blk), clrbuf, + sblock.fs_bsize) <= 0) { warn("Failed to initialize new block"); return -1; } return (blk); } +/* + * Search a directory block for the SUJ_FILE. + */ +static ino_t +dir_search(ufs2_daddr_t blk, int bytes) +{ + char block[MAXBSIZE]; + struct direct *dp; + int off; + + if (bread(&disk, fsbtodb(&sblock, blk), block, bytes) <= 0) { + warn("Failed to read dir block"); + return (-1); + } + for (off = 0; off < bytes; off += dp->d_reclen) { + dp = (struct direct *)&block[off]; + if (dp->d_reclen == 0) + break; + if (dp->d_ino == 0) + continue; + if (dp->d_namlen != strlen(SUJ_FILE)) + continue; + if (bcmp(dp->d_name, SUJ_FILE, dp->d_namlen) != 0) + continue; + return (dp->d_ino); + } + + return (0); +} + +/* + * Search in the ROOTINO for the SUJ_FILE. If it exists we can not enable + * journaling. + */ +static ino_t +journal_findfile(void) +{ + struct ufs1_dinode *dp1; + struct ufs2_dinode *dp2; + int mode; + void *ip; + int i; + + if (getino(&disk, &ip, ROOTINO, &mode) != 0) { + warn("Failed to get root inode"); + return (-1); + } + dp2 = ip; + dp1 = ip; + if (sblock.fs_magic == FS_UFS1_MAGIC) { + if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) { + warnx("ROOTINO extends beyond direct blocks."); + return (-1); + } + for (i = 0; i < NDADDR; i++) { + if (dp1->di_db[i] == 0) + break; + if (dir_search(dp1->di_db[i], + sblksize(&sblock, (off_t)dp1->di_size, i)) != 0) + return (-1); + } + } else { + if ((off_t)dp1->di_size >= lblktosize(&sblock, NDADDR)) { + warnx("ROOTINO extends beyond direct blocks."); + return (-1); + } + for (i = 0; i < NDADDR; i++) { + if (dp2->di_db[i] == 0) + break; + if (dir_search(dp2->di_db[i], + sblksize(&sblock, (off_t)dp2->di_size, i)) != 0) + return (-1); + } + } + + return (0); +} + +/* + * Insert the journal at inode 'ino' into directory blk 'blk' at the first + * free offset of 'off'. DIRBLKSIZ blocks after off are initialized as + * empty. + */ +static int +dir_insert(ufs2_daddr_t blk, off_t off, ino_t ino) +{ + struct direct *dp; + char block[MAXBSIZE]; + + if (bread(&disk, fsbtodb(&sblock, blk), block, sblock.fs_bsize) <= 0) { + warn("Failed to read dir block"); + return (-1); + } + bzero(&block[off], sblock.fs_bsize - off); + dp = (struct direct *)&block[off]; + dp->d_ino = ino; + dp->d_reclen = DIRBLKSIZ; + dp->d_type = DT_REG; + dp->d_namlen = strlen(SUJ_FILE); + bcopy(SUJ_FILE, &dp->d_name, strlen(SUJ_FILE)); + off += DIRBLKSIZ; + for (; off < sblock.fs_bsize; off += DIRBLKSIZ) { + dp = (struct direct *)&block[off]; + dp->d_ino = 0; + dp->d_reclen = DIRBLKSIZ; + dp->d_type = DT_UNKNOWN; + } + if (bwrite(&disk, fsbtodb(&sblock, blk), block, sblock.fs_bsize) <= 0) { + warn("Failed to write dir block"); + return (-1); + } + return (0); +} + +/* + * Extend a directory block in 'blk' by copying it to a full size block + * and inserting the new journal inode into .sujournal. + */ +static int +dir_extend(ufs2_daddr_t blk, ufs2_daddr_t nblk, off_t size, ino_t ino) +{ + char block[MAXBSIZE]; + + if (bread(&disk, fsbtodb(&sblock, blk), block, size) <= 0) { + warn("Failed to read dir block"); + return (-1); + } + if (bwrite(&disk, fsbtodb(&sblock, nblk), block, size) <= 0) { + warn("Failed to write dir block"); + return (-1); + } + + return dir_insert(nblk, size, ino); +} + +/* + * Insert the journal file into the ROOTINO directory. We always extend the + * last frag + */ +static int +journal_insertfile(ino_t ino) +{ + struct ufs1_dinode *dp1; + struct ufs2_dinode *dp2; + void *ip; + ufs2_daddr_t nblk; + ufs2_daddr_t blk; + ufs_lbn_t lbn; + int size; + int mode; + int off; + + if (getino(&disk, &ip, ROOTINO, &mode) != 0) { + warn("Failed to get root inode"); + sbdirty(); + return (-1); + } + dp2 = ip; + dp1 = ip; + blk = 0; + size = 0; + nblk = journal_balloc(); + if (nblk <= 0) + return (-1); + /* + * For simplicity sake we aways extend the ROOTINO into a new + * directory block rather than searching for space and inserting + * into an existing block. However, if the rootino has frags + * have to free them and extend the block. + */ + if (sblock.fs_magic == FS_UFS1_MAGIC) { + lbn = lblkno(&sblock, dp1->di_size); + off = blkoff(&sblock, dp1->di_size); + blk = dp1->di_db[lbn]; + size = sblksize(&sblock, (off_t)dp1->di_size, lbn); + } else { + lbn = lblkno(&sblock, dp2->di_size); + off = blkoff(&sblock, dp2->di_size); + blk = dp2->di_db[lbn]; + size = sblksize(&sblock, (off_t)dp2->di_size, lbn); + } + if (off != 0) { + if (dir_extend(blk, nblk, off, ino) == -1) + return (-1); + } else { + blk = 0; + if (dir_insert(nblk, 0, ino) == -1) + return (-1); + } + if (sblock.fs_magic == FS_UFS1_MAGIC) { + dp1->di_blocks += (sblock.fs_bsize - size) / DEV_BSIZE; + dp1->di_db[lbn] = nblk; + dp1->di_size = lblktosize(&sblock, lbn+1); + } else { + dp2->di_blocks += (sblock.fs_bsize - size) / DEV_BSIZE; + dp2->di_db[lbn] = nblk; + dp2->di_size = lblktosize(&sblock, lbn+1); + } + if (putino(&disk) < 0) { + warn("Failed to write root inode"); + return (-1); + } + if (cgwrite(&disk) < 0) { + warn("Failed to write updated cg"); + sbdirty(); + return (-1); + } + if (blk) { + if (cgbfree(&disk, blk, size) < 0) { + warn("Failed to write cg"); + return (-1); + } + } + + return (0); +} + static int indir_fill(ufs2_daddr_t blk, int level, int *resid) { @@ -496,22 +714,20 @@ indir_fill(ufs2_daddr_t blk, int level, ufs1_daddr_t *bap1; ufs2_daddr_t *bap2; ufs2_daddr_t nblk; - struct fs *fs; int ncnt; int cnt; int i; - fs = &disk.d_fs; bzero(indirbuf, sizeof(indirbuf)); bap1 = (ufs1_daddr_t *)indirbuf; bap2 = (void *)bap1; cnt = 0; - for (i = 0; i < NINDIR(fs) && *resid != 0; i++) { + for (i = 0; i < NINDIR(&sblock) && *resid != 0; i++) { nblk = journal_balloc(); if (nblk <= 0) return (-1); cnt++; - if (fs->fs_magic == FS_UFS1_MAGIC) + if (sblock.fs_magic == FS_UFS1_MAGIC) *bap1++ = nblk; else *bap2++ = nblk; @@ -523,13 +739,47 @@ indir_fill(ufs2_daddr_t blk, int level, } else (*resid)--; } - if (bwrite(&disk, fsbtodb(fs, blk), indirbuf, fs->fs_bsize) <= 0) { + if (bwrite(&disk, fsbtodb(&sblock, blk), indirbuf, + sblock.fs_bsize) <= 0) { warn("Failed to write indirect"); return (-1); } return (cnt); } +/* + * Clear the flag bits so the journal can be removed. + */ +void +journal_clear(void) +{ + struct ufs1_dinode *dp1; + struct ufs2_dinode *dp2; + ino_t ino; + int mode; + void *ip; + + ino = journal_findfile(); + if (ino <= 0) { + warnx("Journal file does not exist"); + return; + } + if (getino(&disk, &ip, ino, &mode) != 0) { + warn("Failed to get journal inode"); + return; + } + dp2 = ip; + dp1 = ip; + if (sblock.fs_magic == FS_UFS1_MAGIC) + dp1->di_flags = 0; + else + dp2->di_flags = 0; + if (putino(&disk) < 0) { + warn("Failed to write journal inode"); + return; + } +} + int journal_alloc(int64_t size) { @@ -538,32 +788,39 @@ journal_alloc(int64_t size) ufs2_daddr_t blk; void *ip; struct cg *cgp; - struct fs *fs; int resid; ino_t ino; int blks; int mode; int i; - fs = &disk.d_fs; cgp = &disk.d_cg; ino = 0; /* + * If the journal file exists we can't allocate it. + */ + ino = journal_findfile(); + if (ino > 0) + warnx("Journal file %s already exists, please remove.", + SUJ_FILE); + if (ino != 0) + return (-1); + /* * If the user didn't supply a size pick one based on the filesystem * size constrained with hardcoded MIN and MAX values. We opt for * 1/1024th of the filesystem up to MAX but not exceeding one CG and * not less than the MIN. */ if (size == 0) { - size = (fs->fs_size * fs->fs_bsize) / 1024; + size = (sblock.fs_size * sblock.fs_bsize) / 1024; size = MIN(SUJ_MAX, size); - if (size / fs->fs_fsize > fs->fs_fpg) - size = fs->fs_fpg * fs->fs_fsize; + if (size / sblock.fs_fsize > sblock.fs_fpg) + size = sblock.fs_fpg * sblock.fs_fsize; size = MAX(SUJ_MIN, size); } - resid = blocks = size / fs->fs_bsize; - if (fs->fs_cstotal.cs_nbfree < blocks) { + resid = blocks = size / sblock.fs_bsize; + if (sblock.fs_cstotal.cs_nbfree < blocks) { warn("Insufficient free space for %jd byte journal", size); return (-1); } @@ -576,9 +833,9 @@ journal_alloc(int64_t size) continue; /* * Try to minimize fragmentation by requiring at least a - * 1/8th of the blocks be present in each cg we use. + * 1/16th of the blocks be present in each cg we use. */ - if (cgp->cg_cs.cs_nbfree < blocks / 8) + if (cgp->cg_cs.cs_nbfree < blocks / 16) continue; ino = cgialloc(&disk); if (ino <= 0) @@ -597,22 +854,24 @@ journal_alloc(int64_t size) */ dp2 = ip; dp1 = ip; - if (fs->fs_magic == FS_UFS1_MAGIC) { + if (sblock.fs_magic == FS_UFS1_MAGIC) { bzero(dp1, sizeof(*dp1)); dp1->di_size = size; - dp1->di_mode = IFREG; + dp1->di_mode = IFREG | IREAD; dp1->di_nlink = 1; + dp1->di_flags = SF_IMMUTABLE | SF_NOUNLINK; } else { bzero(dp2, sizeof(*dp2)); dp2->di_size = size; - dp2->di_mode = IFREG; + dp2->di_mode = IFREG | IREAD; dp2->di_nlink = 1; + dp2->di_flags = SF_IMMUTABLE | SF_NOUNLINK; } for (i = 0; i < NDADDR && resid; i++, resid--) { blk = journal_balloc(); if (blk <= 0) goto out; - if (fs->fs_magic == FS_UFS1_MAGIC) { + if (sblock.fs_magic == FS_UFS1_MAGIC) { dp1->di_db[i] = blk; dp1->di_blocks++; } else { @@ -629,7 +888,7 @@ journal_alloc(int64_t size) sbdirty(); goto out; } - if (fs->fs_magic == FS_UFS1_MAGIC) { + if (sblock.fs_magic == FS_UFS1_MAGIC) { dp1->di_ib[i] = blk; dp1->di_blocks += blks; } else { @@ -637,10 +896,10 @@ journal_alloc(int64_t size) dp2->di_blocks += blks; } } - if (fs->fs_magic == FS_UFS1_MAGIC) - dp1->di_blocks *= fs->fs_bsize / disk.d_bsize; + if (sblock.fs_magic == FS_UFS1_MAGIC) + dp1->di_blocks *= sblock.fs_bsize / disk.d_bsize; else - dp2->di_blocks *= fs->fs_bsize / disk.d_bsize; + dp2->di_blocks *= sblock.fs_bsize / disk.d_bsize; if (putino(&disk) < 0) { warn("Failed to write inode"); sbdirty(); @@ -651,8 +910,11 @@ journal_alloc(int64_t size) sbdirty(); return (-1); } - fs->fs_sujournal = ino; - fs->fs_sujfree = 0; + if (journal_insertfile(ino) < 0) { + sbdirty(); + return (-1); + } + sblock.fs_sujfree = 0; return (0); } warnx("Insufficient contiguous free space for the journal."); Modified: projects/suj/6/sys/sys/mount.h ============================================================================== --- projects/suj/6/sys/sys/mount.h Tue Jan 26 06:36:10 2010 (r203012) +++ projects/suj/6/sys/sys/mount.h Tue Jan 26 06:45:38 2010 (r203013) @@ -231,7 +231,6 @@ void __mnt_vnode_markerfree(str #define MNT_NOATIME 0x10000000 /* disable update of file access time */ #define MNT_NOCLUSTERR 0x40000000 /* disable cluster read */ #define MNT_NOCLUSTERW 0x80000000 /* disable cluster write */ -#define MNT_SUJ 0x00000080 /* softdep journaling */ /* * NFS export related mount flags. @@ -267,7 +266,7 @@ void __mnt_vnode_markerfree(str MNT_ROOTFS | MNT_NOATIME | MNT_NOCLUSTERR| \ MNT_NOCLUSTERW | MNT_SUIDDIR | MNT_SOFTDEP | \ MNT_IGNORE | MNT_EXPUBLIC | MNT_NOSYMFOLLOW | \ - MNT_JAILDEVFS | MNT_MULTILABEL | MNT_ACLS | MNT_SUJ) + MNT_JAILDEVFS | MNT_MULTILABEL | MNT_ACLS) /* Mask of flags that can be updated. */ #define MNT_UPDATEMASK (MNT_NOSUID | MNT_NOEXEC | \ @@ -303,6 +302,7 @@ void __mnt_vnode_markerfree(str * with the unmount attempt (used by NFS). */ #define MNTK_UNMOUNTF 0x00000001 /* forced unmount in progress */ +#define MNTK_SUJ 0x00000100 /* Softdep journaling enabled */ #define MNTK_UNMOUNT 0x01000000 /* unmount in progress */ #define MNTK_MWAIT 0x02000000 /* waiting for unmount to finish */ #define MNTK_SUSPEND 0x08000000 /* request write suspension */ Modified: projects/suj/6/sys/ufs/ffs/ffs_alloc.c ============================================================================== --- projects/suj/6/sys/ufs/ffs/ffs_alloc.c Tue Jan 26 06:36:10 2010 (r203012) +++ projects/suj/6/sys/ufs/ffs/ffs_alloc.c Tue Jan 26 06:45:38 2010 (r203013) @@ -1837,6 +1837,7 @@ ffs_blkfree(ump, fs, devvp, bno, size, i ino_t inum; struct workhead *dephd; { + struct mount *mp; struct cg *cgp; struct buf *bp; ufs1_daddr_t fragno, cgbno; @@ -1951,7 +1952,8 @@ ffs_blkfree(ump, fs, devvp, bno, size, i fs->fs_fmod = 1; ACTIVECLEAR(fs, cg); UFS_UNLOCK(ump); - if (UFSTOVFS(ump)->mnt_flag & MNT_SOFTDEP) + mp = UFSTOVFS(ump); + if (mp->mnt_flag & MNT_SOFTDEP) softdep_setup_blkfree(UFSTOVFS(ump), bp, bno, numfrags(fs, size), dephd); bdwrite(bp); Modified: projects/suj/6/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- projects/suj/6/sys/ufs/ffs/ffs_softdep.c Tue Jan 26 06:36:10 2010 (r203012) +++ projects/suj/6/sys/ufs/ffs/ffs_softdep.c Tue Jan 26 06:45:38 2010 (r203013) @@ -1879,7 +1879,7 @@ softdep_unmount(mp) struct mount *mp; { - if (mp->mnt_flag & MNT_SUJ) + if (mp->mnt_kern_flag & MNTK_SUJ) journal_unmount(mp); } @@ -2021,16 +2021,36 @@ journal_mount(mp, fs, cred) struct fs *fs; struct ucred *cred; { + struct componentname cnp; struct jblocks *jblocks; + struct vnode *dvp; struct vnode *vp; struct inode *ip; ufs2_daddr_t blkno; + ino_t sujournal; int bcount; int error; int i; - mp->mnt_flag |= MNT_SUJ; - error = VFS_VGET(mp, fs->fs_sujournal, LK_EXCLUSIVE, &vp); + mp->mnt_kern_flag |= MNTK_SUJ; + error = VFS_VGET(mp, ROOTINO, LK_EXCLUSIVE, &dvp); + if (error) + return (error); + bzero(&cnp, sizeof(cnp)); + cnp.cn_nameiop = LOOKUP; + cnp.cn_flags = ISLASTCN; + cnp.cn_thread = curthread; + cnp.cn_cred = curthread->td_ucred; + cnp.cn_pnbuf = SUJ_FILE; + cnp.cn_nameptr = SUJ_FILE; + cnp.cn_namelen = strlen(SUJ_FILE); + error = ufs_lookup_ino(dvp, NULL, &cnp, &sujournal); + vput(dvp); + if (error != 0) { + printf("Failed to find journal. Use tunefs to create one\n"); + return (error); + } + error = VFS_VGET(mp, sujournal, LK_EXCLUSIVE, &vp); if (error) return (error); ip = VTOI(vp); @@ -2052,9 +2072,18 @@ journal_mount(mp, fs, cred) } jblocks->jb_low = jblocks->jb_free / 3; /* Reserve 33%. */ jblocks->jb_min = jblocks->jb_free / 10; /* Suspend at 10%. */ - DIP_SET(ip, i_modrev, fs->fs_mtime); - ip->i_flags |= IN_MODIFIED; - ffs_update(vp, 1); + /* + * Only validate the journal contents if the filesystem is clean, + * otherwise we write the logs but they'll never be used. If the + * filesystem was still dirty when we mounted it the journal is + * invalid and a new journal can only be valid if it starts from a + * clean mount. + */ + if (fs->fs_clean) { + DIP_SET(ip, i_modrev, fs->fs_mtime); + ip->i_flags |= IN_MODIFIED; + ffs_update(vp, 1); + } VFSTOUFS(mp)->softdep_jblocks = jblocks; out: vput(vp); @@ -2136,6 +2165,11 @@ remove_from_journal(wk) ump->softdep_on_journal -= 1; } +/* + * Check for journal space as well as dependency limits so the prelink + * code can throttle both journaled and non-journaled filesystems. + * Threshold is 0 for low and 1 for min. + */ static int journal_space(ump, thresh) struct ufsmount *ump; @@ -2144,7 +2178,20 @@ journal_space(ump, thresh) struct jblocks *jblocks; int avail; + /* + * We use a tighter restriction here to prevent request_cleanup() + * running in threads from running into locks we currently hold. + */ + if (num_inodedep > (max_softdeps / 10) * 9) + return (0); + jblocks = ump->softdep_jblocks; + if (jblocks == NULL) + return (1); + if (thresh) + thresh = jblocks->jb_min; + else + thresh = jblocks->jb_low; avail = (ump->softdep_on_journal * JREC_SIZE) / DEV_BSIZE; avail = jblocks->jb_free - avail; @@ -2187,15 +2234,13 @@ softdep_prealloc(vp, waitok) struct vnode *vp; int waitok; { - struct jblocks *jblocks; struct ufsmount *ump; if (DOINGSUJ(vp) == 0) return (0); ump = VFSTOUFS(vp->v_mount); - jblocks = ump->softdep_jblocks; ACQUIRE_LOCK(&lk); - if (journal_space(ump, jblocks->jb_low)) { + if (journal_space(ump, 0)) { FREE_LOCK(&lk); return (0); } @@ -2210,9 +2255,9 @@ softdep_prealloc(vp, waitok) ffs_syncvnode(vp, waitok); ACQUIRE_LOCK(&lk); process_removes(vp); - if (journal_space(ump, jblocks->jb_low) == 0) { + if (journal_space(ump, 0) == 0) { softdep_speedup(); - if (journal_space(ump, jblocks->jb_min) == 0) + if (journal_space(ump, 1) == 0) journal_suspend(ump); } FREE_LOCK(&lk); @@ -2220,18 +2265,22 @@ softdep_prealloc(vp, waitok) return (0); } +/* + * Before adjusting a link count on a vnode verify that we have sufficient + * journal space. If not, process operations that depend on the currently + * locked pair of vnodes to try to flush space as the syncer, buf daemon, + * and softdep flush threads can not acquire these locks to reclaim space. + */ static void softdep_prelink(dvp, vp) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Jan 26 08:25:56 2010 Return-Path: Delivered-To: svn-src-projects@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 191AC106568D; Tue, 26 Jan 2010 08:25:56 +0000 (UTC) (envelope-from rdivacky@vlk.vlakno.cz) Received: from vlakno.cz (77-93-215-190.static.masterinter.net [77.93.215.190]) by mx1.freebsd.org (Postfix) with ESMTP id C28298FC1B; Tue, 26 Jan 2010 08:25:54 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by vlakno.cz (Postfix) with ESMTP id 0A9A79CB080; Tue, 26 Jan 2010 09:25:46 +0100 (CET) X-Virus-Scanned: amavisd-new at vlakno.cz Received: from vlakno.cz ([127.0.0.1]) by localhost (lev.vlakno.cz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id yO3PjNsGL3l3; Tue, 26 Jan 2010 09:25:43 +0100 (CET) Received: from vlk.vlakno.cz (localhost [127.0.0.1]) by vlakno.cz (Postfix) with ESMTP id 881629CB0FF; Tue, 26 Jan 2010 09:25:43 +0100 (CET) Received: (from rdivacky@localhost) by vlk.vlakno.cz (8.14.3/8.14.3/Submit) id o0Q8PhrI060102; Tue, 26 Jan 2010 09:25:43 +0100 (CET) (envelope-from rdivacky) Date: Tue, 26 Jan 2010 09:25:43 +0100 From: Roman Divacky To: Jeff Roberson Message-ID: <20100126082543.GA59621@freebsd.org> References: <201001252327.o0PNRLaG009904@svn.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201001252327.o0PNRLaG009904@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i Cc: svn-src-projects@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r202990 - in projects/suj/head/sbin: fsck_ffs fsdb X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Jan 2010 08:25:56 -0000 On Mon, Jan 25, 2010 at 11:27:21PM +0000, Jeff Roberson wrote: > Author: jeff > Date: Mon Jan 25 23:27:21 2010 > New Revision: 202990 > URL: http://svn.freebsd.org/changeset/base/202990 > > Log: > - Implement partial truncation in the checker. The file is truncated to > the lesser of the original size, the last allocated block, and the > intended truncation size depending on how far the original truncation > got. > - Improve recovery performance by doing duplication and reference move > operations for each inode all at once. The algorithm is still N^2 but > doing it as records are discovered ensures that the rest are out of > cache when we search. This reduced fsck time by 80%. so when you claimed fsck taking at most "a few minutes" it should be "a few tens of seconds" now? From owner-svn-src-projects@FreeBSD.ORG Wed Jan 27 02:42:42 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F274106566B; Wed, 27 Jan 2010 02:42:42 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 75D9E8FC18; Wed, 27 Jan 2010 02:42:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0R2gg8X078522; Wed, 27 Jan 2010 02:42:42 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0R2ggiU078520; Wed, 27 Jan 2010 02:42:42 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201001270242.o0R2ggiU078520@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 27 Jan 2010 02:42:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203056 - projects/jbuild/usr.bin/jbuild X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jan 2010 02:42:42 -0000 Author: rodrigc Date: Wed Jan 27 02:42:42 2010 New Revision: 203056 URL: http://svn.freebsd.org/changeset/base/203056 Log: Merge r203055 changes made to make.1 Modified: projects/jbuild/usr.bin/jbuild/jbuild.1 Modified: projects/jbuild/usr.bin/jbuild/jbuild.1 ============================================================================== --- projects/jbuild/usr.bin/jbuild/jbuild.1 Wed Jan 27 02:38:10 2010 (r203055) +++ projects/jbuild/usr.bin/jbuild/jbuild.1 Wed Jan 27 02:42:42 2010 (r203056) @@ -800,7 +800,7 @@ These directories will be searched for s .Nm after it has finished parsing all input Buildfiles. .El -.Pp +.Ss Variable modifiers Variable expansion may be modified to select or modify each word of the variable (where a .Dq word @@ -815,7 +815,7 @@ The colon may be escaped with a backslas .Pq Ql \e . .Bl -tag -width Cm .Sm off -.It Cm C No / Ar pattern Xo +.It Cm \&:C No / Ar pattern Xo .No / Ar replacement .No / Op Cm 1g .Xc @@ -844,13 +844,13 @@ and are orthogonal; the former specifies whether multiple words are potentially affected, the latter whether multiple substitutions can potentially occur within each affected word. -.It Cm E +.It Cm \&:E Replaces each word in the variable with its suffix. -.It Cm H +.It Cm \&:H Replaces each word in the variable with everything but the last component. -.It Cm L +.It Cm \&:L Converts variable to lower-case letters. -.It Cm M Ns Ar pattern +.It Cm \&:M Ns Ar pattern Select only those words that match the rest of the modifier. The standard shell wildcard characters .Pf ( Ql * , @@ -861,21 +861,21 @@ may be used. The wildcard characters may be escaped with a backslash .Pq Ql \e . -.It Cm N Ns Ar pattern +.It Cm \&:N Ns Ar pattern This is identical to -.Cm M , +.Cm \&:M , but selects all words which do not match the rest of the modifier. -.It Cm O +.It Cm \&:O Order every word in the variable alphabetically. -.It Cm Q +.It Cm \&:Q Quotes every shell meta-character in the variable, so that it can be passed safely through recursive invocations of .Nm . -.It Cm R +.It Cm \&:R Replaces each word in the variable with everything but its suffix. .Sm off -.It Cm S No / Ar old_string Xo +.It Cm \&:S No / Ar old_string Xo .No / Ar new_string .No / Op Cm g .Xc @@ -919,7 +919,7 @@ with the single exception that a backsla of a dollar sign .Pq Ql $ , not a preceding dollar sign as is usual. -.It Ar old_string=new_string +.It Ar :old_string=new_string This is the .At V style variable substitution. @@ -939,11 +939,11 @@ is the substring of .Ar old_string to be replaced in .Ar new_string -.It Cm T +.It Cm \&:T Replaces each word in the variable with its last component. -.It Cm U +.It Cm \&:U Converts variable to upper-case letters. -.It Cm u +.It Cm \&:u Remove adjacent duplicate words (like .Xr uniq 1 ) . .El From owner-svn-src-projects@FreeBSD.ORG Wed Jan 27 02:58:04 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 28029106566B; Wed, 27 Jan 2010 02:58:04 +0000 (UTC) (envelope-from rodrigc@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 182658FC14; Wed, 27 Jan 2010 02:58:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0R2w3wj081925; Wed, 27 Jan 2010 02:58:03 GMT (envelope-from rodrigc@svn.freebsd.org) Received: (from rodrigc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0R2w3X2081923; Wed, 27 Jan 2010 02:58:03 GMT (envelope-from rodrigc@svn.freebsd.org) Message-Id: <201001270258.o0R2w3X2081923@svn.freebsd.org> From: Craig Rodrigues Date: Wed, 27 Jan 2010 02:58:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203057 - projects/jbuild/usr.bin/jbuild X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jan 2010 02:58:04 -0000 Author: rodrigc Date: Wed Jan 27 02:58:03 2010 New Revision: 203057 URL: http://svn.freebsd.org/changeset/base/203057 Log: Add John Birrell's name in HISTORY section. Modified: projects/jbuild/usr.bin/jbuild/jbuild.1 Modified: projects/jbuild/usr.bin/jbuild/jbuild.1 ============================================================================== --- projects/jbuild/usr.bin/jbuild/jbuild.1 Wed Jan 27 02:42:42 2010 (r203056) +++ projects/jbuild/usr.bin/jbuild/jbuild.1 Wed Jan 27 02:58:03 2010 (r203057) @@ -1717,7 +1717,9 @@ command appeared in PWB UNIX. was derived from .Xr make 1 in -.Fx 7.1 . +.Fx 7.1 +by +.An John Birrell Aq jb@FreeBSD.org . . .Sh BUGS In the presence of several From owner-svn-src-projects@FreeBSD.ORG Wed Jan 27 19:57:34 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5911010656AA; Wed, 27 Jan 2010 19:57:34 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 48E418FC1B; Wed, 27 Jan 2010 19:57:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0RJvYMJ013165; Wed, 27 Jan 2010 19:57:34 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0RJvYBl013163; Wed, 27 Jan 2010 19:57:34 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001271957.o0RJvYBl013163@svn.freebsd.org> From: Jeff Roberson Date: Wed, 27 Jan 2010 19:57:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203088 - projects/suj/head/sbin/fsck_ffs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jan 2010 19:57:34 -0000 Author: jeff Date: Wed Jan 27 19:57:34 2010 New Revision: 203088 URL: http://svn.freebsd.org/changeset/base/203088 Log: - Recent changes left an uninitialized sino variable which could lead to a crash. - Only write the superblock if the user has requested that we write changes or in preen mode. - Clear the pendingblocks/pendinginodes fields of the superblock when we clean. SUJ doesn't need these anyway. Modified: projects/suj/head/sbin/fsck_ffs/suj.c Modified: projects/suj/head/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/head/sbin/fsck_ffs/suj.c Wed Jan 27 19:43:14 2010 (r203087) +++ projects/suj/head/sbin/fsck_ffs/suj.c Wed Jan 27 19:57:34 2010 (r203088) @@ -194,6 +194,8 @@ closedisk(const char *devnam) fs->fs_cstotal.cs_nifree += cgsum->cs_nifree; fs->fs_cstotal.cs_ndir += cgsum->cs_ndir; } + fs->fs_pendinginodes = 0; + fs->fs_pendingblocks = 0; fs->fs_clean = 1; fs->fs_time = time(NULL); fs->fs_mtime = time(NULL); @@ -446,25 +448,6 @@ iblk_write(struct ino_blk *iblk) err(1, "Failed to write inode block %jd", iblk->ib_blk); } -/* - * Return 1 if the inode was free and 0 if it is allocated. - */ -static int -ino_isfree(ino_t ino) -{ - struct suj_cg *sc; - uint8_t *inosused; - struct cg *cgp; - int cg; - - cg = ino_to_cg(fs, ino); - ino = ino % fs->fs_ipg; - sc = cg_lookup(cg); - cgp = sc->sc_cgp; - inosused = cg_inosused(cgp); - return isclr(inosused, ino); -} - static int blk_overlaps(struct jblkrec *brec, ufs2_daddr_t start, int frags) { @@ -1506,19 +1489,13 @@ ino_check(struct suj_ino *sino) * to worry about truncating directory entries as they must have * been removed for truncate to succeed. */ + ino = sino->si_ino; if (sino->si_trunc) { ino_trunc(ino, sino->si_trunc->jt_size); sino->si_trunc = NULL; } if (sino->si_hasrecs == 0) return; - ino = sino->si_ino; - /* - * XXX ino_isfree currently is skipping initialized inodes - * that are unreferenced. - */ - if (0 && ino_isfree(ino)) - return; rrec = (struct jrefrec *)TAILQ_FIRST(&sino->si_recs)->sr_rec; nlink = rrec->jr_nlink; newlinks = 0; @@ -1596,6 +1573,7 @@ blk_check(struct suj_blk *sblk) * Each suj_blk actually contains records for any fragments in that * block. As a result we must evaluate each record individually. */ + sino = NULL; TAILQ_FOREACH(srec, &sblk->sb_recs, sr_next) { brec = (struct jblkrec *)srec->sr_rec; frags = brec->jb_frags; @@ -2566,13 +2544,13 @@ suj_check(const char *filesys) cg_apply(cg_write); dblk_write(); cg_apply(cg_write_inos); + /* Write back superblock. */ + closedisk(filesys); } printf("** %jd journal records in %jd bytes for %.2f%% utilization\n", jrecs, jbytes, ((float)jrecs / (float)(jbytes / JREC_SIZE)) * 100); printf("** Freed %jd inodes (%jd dirs) %jd blocks, and %jd frags.\n", freeinos, freedir, freeblocks, freefrags); - /* Write back superblock. */ - closedisk(filesys); return (0); } From owner-svn-src-projects@FreeBSD.ORG Wed Jan 27 20:13:00 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4D1F01065670; Wed, 27 Jan 2010 20:13:00 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3BC438FC13; Wed, 27 Jan 2010 20:13:00 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0RKD0au016795; Wed, 27 Jan 2010 20:13:00 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0RKD0MH016791; Wed, 27 Jan 2010 20:13:00 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001272013.o0RKD0MH016791@svn.freebsd.org> From: Jeff Roberson Date: Wed, 27 Jan 2010 20:13:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203091 - in projects/suj: 6/sbin/fsck_ffs 7/sbin/fsck_ffs 8/sbin/fsck_ffs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jan 2010 20:13:00 -0000 Author: jeff Date: Wed Jan 27 20:12:59 2010 New Revision: 203091 URL: http://svn.freebsd.org/changeset/base/203091 Log: - Merge r203088 from suj/head Modified: projects/suj/6/sbin/fsck_ffs/suj.c projects/suj/7/sbin/fsck_ffs/suj.c projects/suj/8/sbin/fsck_ffs/suj.c Modified: projects/suj/6/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/6/sbin/fsck_ffs/suj.c Wed Jan 27 20:12:04 2010 (r203090) +++ projects/suj/6/sbin/fsck_ffs/suj.c Wed Jan 27 20:12:59 2010 (r203091) @@ -194,6 +194,8 @@ closedisk(const char *devnam) fs->fs_cstotal.cs_nifree += cgsum->cs_nifree; fs->fs_cstotal.cs_ndir += cgsum->cs_ndir; } + fs->fs_pendinginodes = 0; + fs->fs_pendingblocks = 0; fs->fs_clean = 1; fs->fs_time = time(NULL); fs->fs_mtime = time(NULL); @@ -446,25 +448,6 @@ iblk_write(struct ino_blk *iblk) err(1, "Failed to write inode block %jd", iblk->ib_blk); } -/* - * Return 1 if the inode was free and 0 if it is allocated. - */ -static int -ino_isfree(ino_t ino) -{ - struct suj_cg *sc; - uint8_t *inosused; - struct cg *cgp; - int cg; - - cg = ino_to_cg(fs, ino); - ino = ino % fs->fs_ipg; - sc = cg_lookup(cg); - cgp = sc->sc_cgp; - inosused = cg_inosused(cgp); - return isclr(inosused, ino); -} - static int blk_overlaps(struct jblkrec *brec, ufs2_daddr_t start, int frags) { @@ -1506,19 +1489,13 @@ ino_check(struct suj_ino *sino) * to worry about truncating directory entries as they must have * been removed for truncate to succeed. */ + ino = sino->si_ino; if (sino->si_trunc) { ino_trunc(ino, sino->si_trunc->jt_size); sino->si_trunc = NULL; } if (sino->si_hasrecs == 0) return; - ino = sino->si_ino; - /* - * XXX ino_isfree currently is skipping initialized inodes - * that are unreferenced. - */ - if (0 && ino_isfree(ino)) - return; rrec = (struct jrefrec *)TAILQ_FIRST(&sino->si_recs)->sr_rec; nlink = rrec->jr_nlink; newlinks = 0; @@ -1596,6 +1573,7 @@ blk_check(struct suj_blk *sblk) * Each suj_blk actually contains records for any fragments in that * block. As a result we must evaluate each record individually. */ + sino = NULL; TAILQ_FOREACH(srec, &sblk->sb_recs, sr_next) { brec = (struct jblkrec *)srec->sr_rec; frags = brec->jb_frags; @@ -2566,13 +2544,13 @@ suj_check(const char *filesys) cg_apply(cg_write); dblk_write(); cg_apply(cg_write_inos); + /* Write back superblock. */ + closedisk(filesys); } printf("** %jd journal records in %jd bytes for %.2f%% utilization\n", jrecs, jbytes, ((float)jrecs / (float)(jbytes / JREC_SIZE)) * 100); printf("** Freed %jd inodes (%jd dirs) %jd blocks, and %jd frags.\n", freeinos, freedir, freeblocks, freefrags); - /* Write back superblock. */ - closedisk(filesys); return (0); } Modified: projects/suj/7/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/7/sbin/fsck_ffs/suj.c Wed Jan 27 20:12:04 2010 (r203090) +++ projects/suj/7/sbin/fsck_ffs/suj.c Wed Jan 27 20:12:59 2010 (r203091) @@ -194,6 +194,8 @@ closedisk(const char *devnam) fs->fs_cstotal.cs_nifree += cgsum->cs_nifree; fs->fs_cstotal.cs_ndir += cgsum->cs_ndir; } + fs->fs_pendinginodes = 0; + fs->fs_pendingblocks = 0; fs->fs_clean = 1; fs->fs_time = time(NULL); fs->fs_mtime = time(NULL); @@ -446,25 +448,6 @@ iblk_write(struct ino_blk *iblk) err(1, "Failed to write inode block %jd", iblk->ib_blk); } -/* - * Return 1 if the inode was free and 0 if it is allocated. - */ -static int -ino_isfree(ino_t ino) -{ - struct suj_cg *sc; - uint8_t *inosused; - struct cg *cgp; - int cg; - - cg = ino_to_cg(fs, ino); - ino = ino % fs->fs_ipg; - sc = cg_lookup(cg); - cgp = sc->sc_cgp; - inosused = cg_inosused(cgp); - return isclr(inosused, ino); -} - static int blk_overlaps(struct jblkrec *brec, ufs2_daddr_t start, int frags) { @@ -1506,19 +1489,13 @@ ino_check(struct suj_ino *sino) * to worry about truncating directory entries as they must have * been removed for truncate to succeed. */ + ino = sino->si_ino; if (sino->si_trunc) { ino_trunc(ino, sino->si_trunc->jt_size); sino->si_trunc = NULL; } if (sino->si_hasrecs == 0) return; - ino = sino->si_ino; - /* - * XXX ino_isfree currently is skipping initialized inodes - * that are unreferenced. - */ - if (0 && ino_isfree(ino)) - return; rrec = (struct jrefrec *)TAILQ_FIRST(&sino->si_recs)->sr_rec; nlink = rrec->jr_nlink; newlinks = 0; @@ -1596,6 +1573,7 @@ blk_check(struct suj_blk *sblk) * Each suj_blk actually contains records for any fragments in that * block. As a result we must evaluate each record individually. */ + sino = NULL; TAILQ_FOREACH(srec, &sblk->sb_recs, sr_next) { brec = (struct jblkrec *)srec->sr_rec; frags = brec->jb_frags; @@ -2566,13 +2544,13 @@ suj_check(const char *filesys) cg_apply(cg_write); dblk_write(); cg_apply(cg_write_inos); + /* Write back superblock. */ + closedisk(filesys); } printf("** %jd journal records in %jd bytes for %.2f%% utilization\n", jrecs, jbytes, ((float)jrecs / (float)(jbytes / JREC_SIZE)) * 100); printf("** Freed %jd inodes (%jd dirs) %jd blocks, and %jd frags.\n", freeinos, freedir, freeblocks, freefrags); - /* Write back superblock. */ - closedisk(filesys); return (0); } Modified: projects/suj/8/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/8/sbin/fsck_ffs/suj.c Wed Jan 27 20:12:04 2010 (r203090) +++ projects/suj/8/sbin/fsck_ffs/suj.c Wed Jan 27 20:12:59 2010 (r203091) @@ -194,6 +194,8 @@ closedisk(const char *devnam) fs->fs_cstotal.cs_nifree += cgsum->cs_nifree; fs->fs_cstotal.cs_ndir += cgsum->cs_ndir; } + fs->fs_pendinginodes = 0; + fs->fs_pendingblocks = 0; fs->fs_clean = 1; fs->fs_time = time(NULL); fs->fs_mtime = time(NULL); @@ -446,25 +448,6 @@ iblk_write(struct ino_blk *iblk) err(1, "Failed to write inode block %jd", iblk->ib_blk); } -/* - * Return 1 if the inode was free and 0 if it is allocated. - */ -static int -ino_isfree(ino_t ino) -{ - struct suj_cg *sc; - uint8_t *inosused; - struct cg *cgp; - int cg; - - cg = ino_to_cg(fs, ino); - ino = ino % fs->fs_ipg; - sc = cg_lookup(cg); - cgp = sc->sc_cgp; - inosused = cg_inosused(cgp); - return isclr(inosused, ino); -} - static int blk_overlaps(struct jblkrec *brec, ufs2_daddr_t start, int frags) { @@ -1506,19 +1489,13 @@ ino_check(struct suj_ino *sino) * to worry about truncating directory entries as they must have * been removed for truncate to succeed. */ + ino = sino->si_ino; if (sino->si_trunc) { ino_trunc(ino, sino->si_trunc->jt_size); sino->si_trunc = NULL; } if (sino->si_hasrecs == 0) return; - ino = sino->si_ino; - /* - * XXX ino_isfree currently is skipping initialized inodes - * that are unreferenced. - */ - if (0 && ino_isfree(ino)) - return; rrec = (struct jrefrec *)TAILQ_FIRST(&sino->si_recs)->sr_rec; nlink = rrec->jr_nlink; newlinks = 0; @@ -1596,6 +1573,7 @@ blk_check(struct suj_blk *sblk) * Each suj_blk actually contains records for any fragments in that * block. As a result we must evaluate each record individually. */ + sino = NULL; TAILQ_FOREACH(srec, &sblk->sb_recs, sr_next) { brec = (struct jblkrec *)srec->sr_rec; frags = brec->jb_frags; @@ -2566,13 +2544,13 @@ suj_check(const char *filesys) cg_apply(cg_write); dblk_write(); cg_apply(cg_write_inos); + /* Write back superblock. */ + closedisk(filesys); } printf("** %jd journal records in %jd bytes for %.2f%% utilization\n", jrecs, jbytes, ((float)jrecs / (float)(jbytes / JREC_SIZE)) * 100); printf("** Freed %jd inodes (%jd dirs) %jd blocks, and %jd frags.\n", freeinos, freedir, freeblocks, freefrags); - /* Write back superblock. */ - closedisk(filesys); return (0); } From owner-svn-src-projects@FreeBSD.ORG Wed Jan 27 21:16:36 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 423AF1065698; Wed, 27 Jan 2010 21:16:36 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2B1008FC17; Wed, 27 Jan 2010 21:16:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0RLGasb032058; Wed, 27 Jan 2010 21:16:36 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0RLGaMc032055; Wed, 27 Jan 2010 21:16:36 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001272116.o0RLGaMc032055@svn.freebsd.org> From: Jeff Roberson Date: Wed, 27 Jan 2010 21:16:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203099 - projects/suj/head/sys/ufs/ffs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jan 2010 21:16:36 -0000 Author: jeff Date: Wed Jan 27 21:16:35 2010 New Revision: 203099 URL: http://svn.freebsd.org/changeset/base/203099 Log: - Resolve cases where the freelink could be zero'd when we manually alter inodes. This corrupted the unlinked but referenced list resulting in inodes that were never freed. - Permit writing to inodes that are stable on the unlinked list on disk as processes may continue to do I/O to them that can not be completed unless the inode pointers are updated. - Don't adjust down nlinks when we're going to journal the remove. This can lead to incorrect starting links in the journal. Modified: projects/suj/head/sys/ufs/ffs/ffs_softdep.c projects/suj/head/sys/ufs/ffs/softdep.h Modified: projects/suj/head/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- projects/suj/head/sys/ufs/ffs/ffs_softdep.c Wed Jan 27 21:06:53 2010 (r203098) +++ projects/suj/head/sys/ufs/ffs/ffs_softdep.c Wed Jan 27 21:16:35 2010 (r203099) @@ -1691,6 +1691,7 @@ inodedep_lookup(mp, inum, flags, inodede inodedep->id_savedino1 = NULL; inodedep->id_savedsize = -1; inodedep->id_savedextsize = -1; + inodedep->id_savednlink = -1; inodedep->id_bmsafemap = NULL; inodedep->id_mkdiradd = NULL; LIST_INIT(&inodedep->id_dirremhd); @@ -3296,13 +3297,11 @@ cancel_jaddref(jaddref, inodedep, wkhd) * We must adjust the nlink of any reference operation that follows * us so that it is consistent with the in-memory reference. This * ensures that inode nlink rollbacks always have the correct link. - * Entries which have already been copied into the journal buffer - * will be unaltered on disk but the subsequent remove record will - * correct them. */ - for (inoref = TAILQ_NEXT(&jaddref->ja_ref, if_deps); inoref; - inoref = TAILQ_NEXT(inoref, if_deps)) - inoref->if_nlink--; + if (needsj == 0) + for (inoref = TAILQ_NEXT(&jaddref->ja_ref, if_deps); inoref; + inoref = TAILQ_NEXT(inoref, if_deps)) + inoref->if_nlink--; jsegdep = inoref_jseg(&jaddref->ja_ref); if (jaddref->ja_state & NEWBLOCK) move_newblock_dep(jaddref, inodedep); @@ -4932,6 +4931,8 @@ softdep_setup_freeblocks(ip, length, fla off_t length; /* The new length for the file */ int flags; /* IO_EXT and/or IO_NORMAL */ { + struct ufs1_dinode *dp1; + struct ufs2_dinode *dp2; struct freeblks *freeblks; struct inodedep *inodedep; struct allocdirect *adp; @@ -5046,12 +5047,17 @@ softdep_setup_freeblocks(ip, length, fla brelse(bp); softdep_error("softdep_setup_freeblocks", error); } - if (ip->i_ump->um_fstype == UFS1) - *((struct ufs1_dinode *)bp->b_data + - ino_to_fsbo(fs, ip->i_number)) = *ip->i_din1; - else - *((struct ufs2_dinode *)bp->b_data + - ino_to_fsbo(fs, ip->i_number)) = *ip->i_din2; + if (ip->i_ump->um_fstype == UFS1) { + dp1 = ((struct ufs1_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number)); + ip->i_din1->di_freelink = dp1->di_freelink; + *dp1 = *ip->i_din1; + } else { + dp2 = ((struct ufs2_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number)); + ip->i_din2->di_freelink = dp2->di_freelink; + *dp2 = *ip->i_din2; + } /* * Find and eliminate any inode dependencies. */ @@ -7318,16 +7324,17 @@ handle_written_sbdep(sbdep, bp) if (inodedep_lookup(mp, fs->fs_sujfree, 0, &inodedep) == 0) panic("handle_written_sbdep: lost inodedep"); /* - * Now that we have a record of this indode in stable store we can - * discard any pending work. + * Now that we have a record of this indode in stable store allow it + * to be written to free up pending work. Inodes may see a lot of + * write activity after they are unlinked which we must not hold up. */ for (; inodedep != NULL; inodedep = TAILQ_NEXT(inodedep, id_unlinked)) { if ((inodedep->id_state & UNLINKLINKS) != UNLINKLINKS) panic("handle_written_sbdep: Bad inodedep %p (0x%X)", inodedep, inodedep->id_state); - if (handle_bufwait(inodedep, NULL) != NULL) - panic("handle_written_sbdep: freefile on " - "unlinked inodedep"); + if (inodedep->id_state & UNLINKONLIST) + break; + inodedep->id_state |= DEPCOMPLETE | UNLINKONLIST; } return (0); @@ -7951,10 +7958,7 @@ initiate_write_inodeblock_ufs1(inodedep, struct inodedep *inon; inon = TAILQ_NEXT(inodedep, id_unlinked); - if (inon) - dp->di_freelink = inon->id_ino; - else - dp->di_freelink = 0; + dp->di_freelink = inon ? inon->id_ino : 0; } /* * If the bitmap is not yet written, then the allocated @@ -8121,10 +8125,19 @@ initiate_write_inodeblock_ufs2(inodedep, struct inodedep *inon; inon = TAILQ_NEXT(inodedep, id_unlinked); - if (inon) - dp->di_freelink = inon->id_ino; - else - dp->di_freelink = 0; + dp->di_freelink = inon ? inon->id_ino : 0; + } + if ((inodedep->id_state & (UNLINKED | UNLINKNEXT)) == + (UNLINKED | UNLINKNEXT)) { + struct inodedep *inon; + ino_t freelink; + + inon = TAILQ_NEXT(inodedep, id_unlinked); + freelink = inon ? inon->id_ino : 0; + if (freelink != dp->di_freelink) + panic("ino %p(0x%X) %d, %d != %d", + inodedep, inodedep->id_state, inodedep->id_ino, + freelink, dp->di_freelink); } /* * If the bitmap is not yet written, then the allocated @@ -8141,7 +8154,7 @@ initiate_write_inodeblock_ufs2(inodedep, *inodedep->id_savedino2 = *dp; bzero((caddr_t)dp, sizeof(struct ufs2_dinode)); dp->di_gen = inodedep->id_savedino2->di_gen; - dp->di_freelink = inodedep->id_savedino1->di_freelink; + dp->di_freelink = inodedep->id_savedino2->di_freelink; return; } /* @@ -8156,10 +8169,6 @@ initiate_write_inodeblock_ufs2(inodedep, return; /* * Revert the link count to that of the first unwritten journal entry. - * - * XXX What if it is canceled? Could entries after it be expired - * before we remove this? Thus leaving us with an incorrect link on - * disk with no journal entries to cover it? */ inoref = TAILQ_FIRST(&inodedep->id_inoreflst); if (inoref) @@ -9048,8 +9057,8 @@ handle_written_inodeblock(inodedep, bp) freelink = dp2->di_freelink; } /* - * If we wrote a freelink pointer during the last write record it - * here. If we did not, keep the buffer dirty until we do. + * If we wrote a valid freelink pointer during the last write + * record it here. */ if ((inodedep->id_state & (UNLINKED | UNLINKNEXT)) == UNLINKED) { struct inodedep *inon; @@ -9063,6 +9072,9 @@ handle_written_inodeblock(inodedep, bp) } else hadchanges = 1; } + /* Leave this inodeblock dirty until it's in the list. */ + if ((inodedep->id_state & (UNLINKED | DEPCOMPLETE)) == UNLINKED) + hadchanges = 1; /* * If we had to rollback the inode allocation because of * bitmaps being incomplete, then simply restore it. @@ -9220,7 +9232,7 @@ bufwait: * unlinked inodes are not processed until the unlinked * inode list is written or the last reference is removed. */ - if ((inodedep->id_state & UNLINKED) == 0) { + if ((inodedep->id_state & (UNLINKED | UNLINKONLIST)) != UNLINKED) { freefile = handle_bufwait(inodedep, NULL); if (freefile && !LIST_EMPTY(&wkhd)) { WORKLIST_INSERT(&wkhd, &freefile->fx_list); @@ -9701,8 +9713,22 @@ softdep_update_inodeblock(ip, bp, waitfo struct worklist *wk; struct mount *mp; struct buf *ibp; + struct fs *fs; int error; + mp = UFSTOVFS(ip->i_ump); + fs = ip->i_fs; + /* + * Preserve the freelink that is on disk. clear_unlinked_inodedep() + * does not have access to the in-core ip so must write directly into + * the inode block buffer when setting freelink. + */ + if (fs->fs_magic == FS_UFS1_MAGIC) + DIP_SET(ip, i_freelink, ((struct ufs1_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number))->di_freelink); + else + DIP_SET(ip, i_freelink, ((struct ufs2_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number))->di_freelink); /* * If the effective link count is not equal to the actual link * count, then we must track the difference in an inodedep while @@ -9710,7 +9736,6 @@ softdep_update_inodeblock(ip, bp, waitfo * if there is no existing inodedep, then there are no dependencies * to track. */ - mp = UFSTOVFS(ip->i_ump); ACQUIRE_LOCK(&lk); again: if (inodedep_lookup(mp, ip->i_number, 0, &inodedep) == 0) { Modified: projects/suj/head/sys/ufs/ffs/softdep.h ============================================================================== --- projects/suj/head/sys/ufs/ffs/softdep.h Wed Jan 27 21:06:53 2010 (r203098) +++ projects/suj/head/sys/ufs/ffs/softdep.h Wed Jan 27 21:16:35 2010 (r203099) @@ -115,6 +115,7 @@ #define UNLINKED 0x040000 /* inodedep has been unlinked. */ #define UNLINKNEXT 0x080000 /* inodedep has valid di_freelink */ #define UNLINKPREV 0x100000 /* inodedep is pointed at in the unlink list */ +#define UNLINKONLIST 0x200000 /* inodedep is in the unlinked list on disk */ #define UNLINKLINKS (UNLINKNEXT | UNLINKPREV) #define ALLCOMPLETE (ATTACHED | COMPLETE | DEPCOMPLETE) From owner-svn-src-projects@FreeBSD.ORG Wed Jan 27 21:19:25 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A7B7F106568D; Wed, 27 Jan 2010 21:19:25 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 95AEB8FC1B; Wed, 27 Jan 2010 21:19:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0RLJPLB032718; Wed, 27 Jan 2010 21:19:25 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0RLJPjU032711; Wed, 27 Jan 2010 21:19:25 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001272119.o0RLJPjU032711@svn.freebsd.org> From: Jeff Roberson Date: Wed, 27 Jan 2010 21:19:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203100 - in projects/suj: 6/sys/ufs/ffs 7/sys/ufs/ffs 8/sys/ufs/ffs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jan 2010 21:19:25 -0000 Author: jeff Date: Wed Jan 27 21:19:25 2010 New Revision: 203100 URL: http://svn.freebsd.org/changeset/base/203100 Log: - Merge r203099 from suj/head Modified: projects/suj/6/sys/ufs/ffs/ffs_softdep.c projects/suj/6/sys/ufs/ffs/softdep.h projects/suj/7/sys/ufs/ffs/ffs_softdep.c projects/suj/7/sys/ufs/ffs/softdep.h projects/suj/8/sys/ufs/ffs/ffs_softdep.c projects/suj/8/sys/ufs/ffs/softdep.h Modified: projects/suj/6/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- projects/suj/6/sys/ufs/ffs/ffs_softdep.c Wed Jan 27 21:16:35 2010 (r203099) +++ projects/suj/6/sys/ufs/ffs/ffs_softdep.c Wed Jan 27 21:19:25 2010 (r203100) @@ -1677,6 +1677,7 @@ inodedep_lookup(mp, inum, flags, inodede inodedep->id_savedino1 = NULL; inodedep->id_savedsize = -1; inodedep->id_savedextsize = -1; + inodedep->id_savednlink = -1; inodedep->id_bmsafemap = NULL; inodedep->id_mkdiradd = NULL; LIST_INIT(&inodedep->id_dirremhd); @@ -3273,13 +3274,11 @@ cancel_jaddref(jaddref, inodedep, wkhd) * We must adjust the nlink of any reference operation that follows * us so that it is consistent with the in-memory reference. This * ensures that inode nlink rollbacks always have the correct link. - * Entries which have already been copied into the journal buffer - * will be unaltered on disk but the subsequent remove record will - * correct them. */ - for (inoref = TAILQ_NEXT(&jaddref->ja_ref, if_deps); inoref; - inoref = TAILQ_NEXT(inoref, if_deps)) - inoref->if_nlink--; + if (needsj == 0) + for (inoref = TAILQ_NEXT(&jaddref->ja_ref, if_deps); inoref; + inoref = TAILQ_NEXT(inoref, if_deps)) + inoref->if_nlink--; jsegdep = inoref_jseg(&jaddref->ja_ref); if (jaddref->ja_state & NEWBLOCK) move_newblock_dep(jaddref, inodedep); @@ -4909,6 +4908,8 @@ softdep_setup_freeblocks(ip, length, fla off_t length; /* The new length for the file */ int flags; /* IO_EXT and/or IO_NORMAL */ { + struct ufs1_dinode *dp1; + struct ufs2_dinode *dp2; struct freeblks *freeblks; struct inodedep *inodedep; struct allocdirect *adp; @@ -5022,12 +5023,17 @@ softdep_setup_freeblocks(ip, length, fla brelse(bp); softdep_error("softdep_setup_freeblocks", error); } - if (ip->i_ump->um_fstype == UFS1) - *((struct ufs1_dinode *)bp->b_data + - ino_to_fsbo(fs, ip->i_number)) = *ip->i_din1; - else - *((struct ufs2_dinode *)bp->b_data + - ino_to_fsbo(fs, ip->i_number)) = *ip->i_din2; + if (ip->i_ump->um_fstype == UFS1) { + dp1 = ((struct ufs1_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number)); + ip->i_din1->di_freelink = dp1->di_freelink; + *dp1 = *ip->i_din1; + } else { + dp2 = ((struct ufs2_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number)); + ip->i_din2->di_freelink = dp2->di_freelink; + *dp2 = *ip->i_din2; + } /* * Find and eliminate any inode dependencies. */ @@ -7293,16 +7299,17 @@ handle_written_sbdep(sbdep, bp) if (inodedep_lookup(mp, fs->fs_sujfree, 0, &inodedep) == 0) panic("handle_written_sbdep: lost inodedep"); /* - * Now that we have a record of this indode in stable store we can - * discard any pending work. + * Now that we have a record of this indode in stable store allow it + * to be written to free up pending work. Inodes may see a lot of + * write activity after they are unlinked which we must not hold up. */ for (; inodedep != NULL; inodedep = TAILQ_NEXT(inodedep, id_unlinked)) { if ((inodedep->id_state & UNLINKLINKS) != UNLINKLINKS) panic("handle_written_sbdep: Bad inodedep %p (0x%X)", inodedep, inodedep->id_state); - if (handle_bufwait(inodedep, NULL) != NULL) - panic("handle_written_sbdep: freefile on " - "unlinked inodedep"); + if (inodedep->id_state & UNLINKONLIST) + break; + inodedep->id_state |= DEPCOMPLETE | UNLINKONLIST; } return (0); @@ -7926,10 +7933,7 @@ initiate_write_inodeblock_ufs1(inodedep, struct inodedep *inon; inon = TAILQ_NEXT(inodedep, id_unlinked); - if (inon) - dp->di_freelink = inon->id_ino; - else - dp->di_freelink = 0; + dp->di_freelink = inon ? inon->id_ino : 0; } /* * If the bitmap is not yet written, then the allocated @@ -8096,10 +8100,19 @@ initiate_write_inodeblock_ufs2(inodedep, struct inodedep *inon; inon = TAILQ_NEXT(inodedep, id_unlinked); - if (inon) - dp->di_freelink = inon->id_ino; - else - dp->di_freelink = 0; + dp->di_freelink = inon ? inon->id_ino : 0; + } + if ((inodedep->id_state & (UNLINKED | UNLINKNEXT)) == + (UNLINKED | UNLINKNEXT)) { + struct inodedep *inon; + ino_t freelink; + + inon = TAILQ_NEXT(inodedep, id_unlinked); + freelink = inon ? inon->id_ino : 0; + if (freelink != dp->di_freelink) + panic("ino %p(0x%X) %d, %d != %d", + inodedep, inodedep->id_state, inodedep->id_ino, + freelink, dp->di_freelink); } /* * If the bitmap is not yet written, then the allocated @@ -8116,7 +8129,7 @@ initiate_write_inodeblock_ufs2(inodedep, *inodedep->id_savedino2 = *dp; bzero((caddr_t)dp, sizeof(struct ufs2_dinode)); dp->di_gen = inodedep->id_savedino2->di_gen; - dp->di_freelink = inodedep->id_savedino1->di_freelink; + dp->di_freelink = inodedep->id_savedino2->di_freelink; return; } /* @@ -8131,10 +8144,6 @@ initiate_write_inodeblock_ufs2(inodedep, return; /* * Revert the link count to that of the first unwritten journal entry. - * - * XXX What if it is canceled? Could entries after it be expired - * before we remove this? Thus leaving us with an incorrect link on - * disk with no journal entries to cover it? */ inoref = TAILQ_FIRST(&inodedep->id_inoreflst); if (inoref) @@ -9023,8 +9032,8 @@ handle_written_inodeblock(inodedep, bp) freelink = dp2->di_freelink; } /* - * If we wrote a freelink pointer during the last write record it - * here. If we did not, keep the buffer dirty until we do. + * If we wrote a valid freelink pointer during the last write + * record it here. */ if ((inodedep->id_state & (UNLINKED | UNLINKNEXT)) == UNLINKED) { struct inodedep *inon; @@ -9038,6 +9047,9 @@ handle_written_inodeblock(inodedep, bp) } else hadchanges = 1; } + /* Leave this inodeblock dirty until it's in the list. */ + if ((inodedep->id_state & (UNLINKED | DEPCOMPLETE)) == UNLINKED) + hadchanges = 1; /* * If we had to rollback the inode allocation because of * bitmaps being incomplete, then simply restore it. @@ -9195,7 +9207,7 @@ bufwait: * unlinked inodes are not processed until the unlinked * inode list is written or the last reference is removed. */ - if ((inodedep->id_state & UNLINKED) == 0) { + if ((inodedep->id_state & (UNLINKED | UNLINKONLIST)) != UNLINKED) { freefile = handle_bufwait(inodedep, NULL); if (freefile && !LIST_EMPTY(&wkhd)) { WORKLIST_INSERT(&wkhd, &freefile->fx_list); @@ -9676,8 +9688,22 @@ softdep_update_inodeblock(ip, bp, waitfo struct worklist *wk; struct mount *mp; struct buf *ibp; + struct fs *fs; int error; + mp = UFSTOVFS(ip->i_ump); + fs = ip->i_fs; + /* + * Preserve the freelink that is on disk. clear_unlinked_inodedep() + * does not have access to the in-core ip so must write directly into + * the inode block buffer when setting freelink. + */ + if (fs->fs_magic == FS_UFS1_MAGIC) + DIP_SET(ip, i_freelink, ((struct ufs1_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number))->di_freelink); + else + DIP_SET(ip, i_freelink, ((struct ufs2_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number))->di_freelink); /* * If the effective link count is not equal to the actual link * count, then we must track the difference in an inodedep while @@ -9685,7 +9711,6 @@ softdep_update_inodeblock(ip, bp, waitfo * if there is no existing inodedep, then there are no dependencies * to track. */ - mp = UFSTOVFS(ip->i_ump); ACQUIRE_LOCK(&lk); again: if (inodedep_lookup(mp, ip->i_number, 0, &inodedep) == 0) { Modified: projects/suj/6/sys/ufs/ffs/softdep.h ============================================================================== --- projects/suj/6/sys/ufs/ffs/softdep.h Wed Jan 27 21:16:35 2010 (r203099) +++ projects/suj/6/sys/ufs/ffs/softdep.h Wed Jan 27 21:19:25 2010 (r203100) @@ -115,6 +115,7 @@ #define UNLINKED 0x040000 /* inodedep has been unlinked. */ #define UNLINKNEXT 0x080000 /* inodedep has valid di_freelink */ #define UNLINKPREV 0x100000 /* inodedep is pointed at in the unlink list */ +#define UNLINKONLIST 0x200000 /* inodedep is in the unlinked list on disk */ #define UNLINKLINKS (UNLINKNEXT | UNLINKPREV) #define ALLCOMPLETE (ATTACHED | COMPLETE | DEPCOMPLETE) Modified: projects/suj/7/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- projects/suj/7/sys/ufs/ffs/ffs_softdep.c Wed Jan 27 21:16:35 2010 (r203099) +++ projects/suj/7/sys/ufs/ffs/ffs_softdep.c Wed Jan 27 21:19:25 2010 (r203100) @@ -1699,6 +1699,7 @@ inodedep_lookup(mp, inum, flags, inodede inodedep->id_savedino1 = NULL; inodedep->id_savedsize = -1; inodedep->id_savedextsize = -1; + inodedep->id_savednlink = -1; inodedep->id_bmsafemap = NULL; inodedep->id_mkdiradd = NULL; LIST_INIT(&inodedep->id_dirremhd); @@ -3304,13 +3305,11 @@ cancel_jaddref(jaddref, inodedep, wkhd) * We must adjust the nlink of any reference operation that follows * us so that it is consistent with the in-memory reference. This * ensures that inode nlink rollbacks always have the correct link. - * Entries which have already been copied into the journal buffer - * will be unaltered on disk but the subsequent remove record will - * correct them. */ - for (inoref = TAILQ_NEXT(&jaddref->ja_ref, if_deps); inoref; - inoref = TAILQ_NEXT(inoref, if_deps)) - inoref->if_nlink--; + if (needsj == 0) + for (inoref = TAILQ_NEXT(&jaddref->ja_ref, if_deps); inoref; + inoref = TAILQ_NEXT(inoref, if_deps)) + inoref->if_nlink--; jsegdep = inoref_jseg(&jaddref->ja_ref); if (jaddref->ja_state & NEWBLOCK) move_newblock_dep(jaddref, inodedep); @@ -4940,6 +4939,8 @@ softdep_setup_freeblocks(ip, length, fla off_t length; /* The new length for the file */ int flags; /* IO_EXT and/or IO_NORMAL */ { + struct ufs1_dinode *dp1; + struct ufs2_dinode *dp2; struct freeblks *freeblks; struct inodedep *inodedep; struct allocdirect *adp; @@ -5053,12 +5054,17 @@ softdep_setup_freeblocks(ip, length, fla brelse(bp); softdep_error("softdep_setup_freeblocks", error); } - if (ip->i_ump->um_fstype == UFS1) - *((struct ufs1_dinode *)bp->b_data + - ino_to_fsbo(fs, ip->i_number)) = *ip->i_din1; - else - *((struct ufs2_dinode *)bp->b_data + - ino_to_fsbo(fs, ip->i_number)) = *ip->i_din2; + if (ip->i_ump->um_fstype == UFS1) { + dp1 = ((struct ufs1_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number)); + ip->i_din1->di_freelink = dp1->di_freelink; + *dp1 = *ip->i_din1; + } else { + dp2 = ((struct ufs2_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number)); + ip->i_din2->di_freelink = dp2->di_freelink; + *dp2 = *ip->i_din2; + } /* * Find and eliminate any inode dependencies. */ @@ -7324,16 +7330,17 @@ handle_written_sbdep(sbdep, bp) if (inodedep_lookup(mp, fs->fs_sujfree, 0, &inodedep) == 0) panic("handle_written_sbdep: lost inodedep"); /* - * Now that we have a record of this indode in stable store we can - * discard any pending work. + * Now that we have a record of this indode in stable store allow it + * to be written to free up pending work. Inodes may see a lot of + * write activity after they are unlinked which we must not hold up. */ for (; inodedep != NULL; inodedep = TAILQ_NEXT(inodedep, id_unlinked)) { if ((inodedep->id_state & UNLINKLINKS) != UNLINKLINKS) panic("handle_written_sbdep: Bad inodedep %p (0x%X)", inodedep, inodedep->id_state); - if (handle_bufwait(inodedep, NULL) != NULL) - panic("handle_written_sbdep: freefile on " - "unlinked inodedep"); + if (inodedep->id_state & UNLINKONLIST) + break; + inodedep->id_state |= DEPCOMPLETE | UNLINKONLIST; } return (0); @@ -7957,10 +7964,7 @@ initiate_write_inodeblock_ufs1(inodedep, struct inodedep *inon; inon = TAILQ_NEXT(inodedep, id_unlinked); - if (inon) - dp->di_freelink = inon->id_ino; - else - dp->di_freelink = 0; + dp->di_freelink = inon ? inon->id_ino : 0; } /* * If the bitmap is not yet written, then the allocated @@ -8127,10 +8131,19 @@ initiate_write_inodeblock_ufs2(inodedep, struct inodedep *inon; inon = TAILQ_NEXT(inodedep, id_unlinked); - if (inon) - dp->di_freelink = inon->id_ino; - else - dp->di_freelink = 0; + dp->di_freelink = inon ? inon->id_ino : 0; + } + if ((inodedep->id_state & (UNLINKED | UNLINKNEXT)) == + (UNLINKED | UNLINKNEXT)) { + struct inodedep *inon; + ino_t freelink; + + inon = TAILQ_NEXT(inodedep, id_unlinked); + freelink = inon ? inon->id_ino : 0; + if (freelink != dp->di_freelink) + panic("ino %p(0x%X) %d, %d != %d", + inodedep, inodedep->id_state, inodedep->id_ino, + freelink, dp->di_freelink); } /* * If the bitmap is not yet written, then the allocated @@ -8147,7 +8160,7 @@ initiate_write_inodeblock_ufs2(inodedep, *inodedep->id_savedino2 = *dp; bzero((caddr_t)dp, sizeof(struct ufs2_dinode)); dp->di_gen = inodedep->id_savedino2->di_gen; - dp->di_freelink = inodedep->id_savedino1->di_freelink; + dp->di_freelink = inodedep->id_savedino2->di_freelink; return; } /* @@ -8162,10 +8175,6 @@ initiate_write_inodeblock_ufs2(inodedep, return; /* * Revert the link count to that of the first unwritten journal entry. - * - * XXX What if it is canceled? Could entries after it be expired - * before we remove this? Thus leaving us with an incorrect link on - * disk with no journal entries to cover it? */ inoref = TAILQ_FIRST(&inodedep->id_inoreflst); if (inoref) @@ -9054,8 +9063,8 @@ handle_written_inodeblock(inodedep, bp) freelink = dp2->di_freelink; } /* - * If we wrote a freelink pointer during the last write record it - * here. If we did not, keep the buffer dirty until we do. + * If we wrote a valid freelink pointer during the last write + * record it here. */ if ((inodedep->id_state & (UNLINKED | UNLINKNEXT)) == UNLINKED) { struct inodedep *inon; @@ -9069,6 +9078,9 @@ handle_written_inodeblock(inodedep, bp) } else hadchanges = 1; } + /* Leave this inodeblock dirty until it's in the list. */ + if ((inodedep->id_state & (UNLINKED | DEPCOMPLETE)) == UNLINKED) + hadchanges = 1; /* * If we had to rollback the inode allocation because of * bitmaps being incomplete, then simply restore it. @@ -9226,7 +9238,7 @@ bufwait: * unlinked inodes are not processed until the unlinked * inode list is written or the last reference is removed. */ - if ((inodedep->id_state & UNLINKED) == 0) { + if ((inodedep->id_state & (UNLINKED | UNLINKONLIST)) != UNLINKED) { freefile = handle_bufwait(inodedep, NULL); if (freefile && !LIST_EMPTY(&wkhd)) { WORKLIST_INSERT(&wkhd, &freefile->fx_list); @@ -9707,8 +9719,22 @@ softdep_update_inodeblock(ip, bp, waitfo struct worklist *wk; struct mount *mp; struct buf *ibp; + struct fs *fs; int error; + mp = UFSTOVFS(ip->i_ump); + fs = ip->i_fs; + /* + * Preserve the freelink that is on disk. clear_unlinked_inodedep() + * does not have access to the in-core ip so must write directly into + * the inode block buffer when setting freelink. + */ + if (fs->fs_magic == FS_UFS1_MAGIC) + DIP_SET(ip, i_freelink, ((struct ufs1_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number))->di_freelink); + else + DIP_SET(ip, i_freelink, ((struct ufs2_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number))->di_freelink); /* * If the effective link count is not equal to the actual link * count, then we must track the difference in an inodedep while @@ -9716,7 +9742,6 @@ softdep_update_inodeblock(ip, bp, waitfo * if there is no existing inodedep, then there are no dependencies * to track. */ - mp = UFSTOVFS(ip->i_ump); ACQUIRE_LOCK(&lk); again: if (inodedep_lookup(mp, ip->i_number, 0, &inodedep) == 0) { Modified: projects/suj/7/sys/ufs/ffs/softdep.h ============================================================================== --- projects/suj/7/sys/ufs/ffs/softdep.h Wed Jan 27 21:16:35 2010 (r203099) +++ projects/suj/7/sys/ufs/ffs/softdep.h Wed Jan 27 21:19:25 2010 (r203100) @@ -115,6 +115,7 @@ #define UNLINKED 0x040000 /* inodedep has been unlinked. */ #define UNLINKNEXT 0x080000 /* inodedep has valid di_freelink */ #define UNLINKPREV 0x100000 /* inodedep is pointed at in the unlink list */ +#define UNLINKONLIST 0x200000 /* inodedep is in the unlinked list on disk */ #define UNLINKLINKS (UNLINKNEXT | UNLINKPREV) #define ALLCOMPLETE (ATTACHED | COMPLETE | DEPCOMPLETE) Modified: projects/suj/8/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- projects/suj/8/sys/ufs/ffs/ffs_softdep.c Wed Jan 27 21:16:35 2010 (r203099) +++ projects/suj/8/sys/ufs/ffs/ffs_softdep.c Wed Jan 27 21:19:25 2010 (r203100) @@ -1691,6 +1691,7 @@ inodedep_lookup(mp, inum, flags, inodede inodedep->id_savedino1 = NULL; inodedep->id_savedsize = -1; inodedep->id_savedextsize = -1; + inodedep->id_savednlink = -1; inodedep->id_bmsafemap = NULL; inodedep->id_mkdiradd = NULL; LIST_INIT(&inodedep->id_dirremhd); @@ -3296,13 +3297,11 @@ cancel_jaddref(jaddref, inodedep, wkhd) * We must adjust the nlink of any reference operation that follows * us so that it is consistent with the in-memory reference. This * ensures that inode nlink rollbacks always have the correct link. - * Entries which have already been copied into the journal buffer - * will be unaltered on disk but the subsequent remove record will - * correct them. */ - for (inoref = TAILQ_NEXT(&jaddref->ja_ref, if_deps); inoref; - inoref = TAILQ_NEXT(inoref, if_deps)) - inoref->if_nlink--; + if (needsj == 0) + for (inoref = TAILQ_NEXT(&jaddref->ja_ref, if_deps); inoref; + inoref = TAILQ_NEXT(inoref, if_deps)) + inoref->if_nlink--; jsegdep = inoref_jseg(&jaddref->ja_ref); if (jaddref->ja_state & NEWBLOCK) move_newblock_dep(jaddref, inodedep); @@ -4932,6 +4931,8 @@ softdep_setup_freeblocks(ip, length, fla off_t length; /* The new length for the file */ int flags; /* IO_EXT and/or IO_NORMAL */ { + struct ufs1_dinode *dp1; + struct ufs2_dinode *dp2; struct freeblks *freeblks; struct inodedep *inodedep; struct allocdirect *adp; @@ -5046,12 +5047,17 @@ softdep_setup_freeblocks(ip, length, fla brelse(bp); softdep_error("softdep_setup_freeblocks", error); } - if (ip->i_ump->um_fstype == UFS1) - *((struct ufs1_dinode *)bp->b_data + - ino_to_fsbo(fs, ip->i_number)) = *ip->i_din1; - else - *((struct ufs2_dinode *)bp->b_data + - ino_to_fsbo(fs, ip->i_number)) = *ip->i_din2; + if (ip->i_ump->um_fstype == UFS1) { + dp1 = ((struct ufs1_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number)); + ip->i_din1->di_freelink = dp1->di_freelink; + *dp1 = *ip->i_din1; + } else { + dp2 = ((struct ufs2_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number)); + ip->i_din2->di_freelink = dp2->di_freelink; + *dp2 = *ip->i_din2; + } /* * Find and eliminate any inode dependencies. */ @@ -7318,16 +7324,17 @@ handle_written_sbdep(sbdep, bp) if (inodedep_lookup(mp, fs->fs_sujfree, 0, &inodedep) == 0) panic("handle_written_sbdep: lost inodedep"); /* - * Now that we have a record of this indode in stable store we can - * discard any pending work. + * Now that we have a record of this indode in stable store allow it + * to be written to free up pending work. Inodes may see a lot of + * write activity after they are unlinked which we must not hold up. */ for (; inodedep != NULL; inodedep = TAILQ_NEXT(inodedep, id_unlinked)) { if ((inodedep->id_state & UNLINKLINKS) != UNLINKLINKS) panic("handle_written_sbdep: Bad inodedep %p (0x%X)", inodedep, inodedep->id_state); - if (handle_bufwait(inodedep, NULL) != NULL) - panic("handle_written_sbdep: freefile on " - "unlinked inodedep"); + if (inodedep->id_state & UNLINKONLIST) + break; + inodedep->id_state |= DEPCOMPLETE | UNLINKONLIST; } return (0); @@ -7951,10 +7958,7 @@ initiate_write_inodeblock_ufs1(inodedep, struct inodedep *inon; inon = TAILQ_NEXT(inodedep, id_unlinked); - if (inon) - dp->di_freelink = inon->id_ino; - else - dp->di_freelink = 0; + dp->di_freelink = inon ? inon->id_ino : 0; } /* * If the bitmap is not yet written, then the allocated @@ -8121,10 +8125,19 @@ initiate_write_inodeblock_ufs2(inodedep, struct inodedep *inon; inon = TAILQ_NEXT(inodedep, id_unlinked); - if (inon) - dp->di_freelink = inon->id_ino; - else - dp->di_freelink = 0; + dp->di_freelink = inon ? inon->id_ino : 0; + } + if ((inodedep->id_state & (UNLINKED | UNLINKNEXT)) == + (UNLINKED | UNLINKNEXT)) { + struct inodedep *inon; + ino_t freelink; + + inon = TAILQ_NEXT(inodedep, id_unlinked); + freelink = inon ? inon->id_ino : 0; + if (freelink != dp->di_freelink) + panic("ino %p(0x%X) %d, %d != %d", + inodedep, inodedep->id_state, inodedep->id_ino, + freelink, dp->di_freelink); } /* * If the bitmap is not yet written, then the allocated @@ -8141,7 +8154,7 @@ initiate_write_inodeblock_ufs2(inodedep, *inodedep->id_savedino2 = *dp; bzero((caddr_t)dp, sizeof(struct ufs2_dinode)); dp->di_gen = inodedep->id_savedino2->di_gen; - dp->di_freelink = inodedep->id_savedino1->di_freelink; + dp->di_freelink = inodedep->id_savedino2->di_freelink; return; } /* @@ -8156,10 +8169,6 @@ initiate_write_inodeblock_ufs2(inodedep, return; /* * Revert the link count to that of the first unwritten journal entry. - * - * XXX What if it is canceled? Could entries after it be expired - * before we remove this? Thus leaving us with an incorrect link on - * disk with no journal entries to cover it? */ inoref = TAILQ_FIRST(&inodedep->id_inoreflst); if (inoref) @@ -9048,8 +9057,8 @@ handle_written_inodeblock(inodedep, bp) freelink = dp2->di_freelink; } /* - * If we wrote a freelink pointer during the last write record it - * here. If we did not, keep the buffer dirty until we do. + * If we wrote a valid freelink pointer during the last write + * record it here. */ if ((inodedep->id_state & (UNLINKED | UNLINKNEXT)) == UNLINKED) { struct inodedep *inon; @@ -9063,6 +9072,9 @@ handle_written_inodeblock(inodedep, bp) } else hadchanges = 1; } + /* Leave this inodeblock dirty until it's in the list. */ + if ((inodedep->id_state & (UNLINKED | DEPCOMPLETE)) == UNLINKED) + hadchanges = 1; /* * If we had to rollback the inode allocation because of * bitmaps being incomplete, then simply restore it. @@ -9220,7 +9232,7 @@ bufwait: * unlinked inodes are not processed until the unlinked * inode list is written or the last reference is removed. */ - if ((inodedep->id_state & UNLINKED) == 0) { + if ((inodedep->id_state & (UNLINKED | UNLINKONLIST)) != UNLINKED) { freefile = handle_bufwait(inodedep, NULL); if (freefile && !LIST_EMPTY(&wkhd)) { WORKLIST_INSERT(&wkhd, &freefile->fx_list); @@ -9701,8 +9713,22 @@ softdep_update_inodeblock(ip, bp, waitfo struct worklist *wk; struct mount *mp; struct buf *ibp; + struct fs *fs; int error; + mp = UFSTOVFS(ip->i_ump); + fs = ip->i_fs; + /* + * Preserve the freelink that is on disk. clear_unlinked_inodedep() + * does not have access to the in-core ip so must write directly into + * the inode block buffer when setting freelink. + */ + if (fs->fs_magic == FS_UFS1_MAGIC) + DIP_SET(ip, i_freelink, ((struct ufs1_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number))->di_freelink); + else + DIP_SET(ip, i_freelink, ((struct ufs2_dinode *)bp->b_data + + ino_to_fsbo(fs, ip->i_number))->di_freelink); /* * If the effective link count is not equal to the actual link * count, then we must track the difference in an inodedep while @@ -9710,7 +9736,6 @@ softdep_update_inodeblock(ip, bp, waitfo * if there is no existing inodedep, then there are no dependencies * to track. */ - mp = UFSTOVFS(ip->i_ump); ACQUIRE_LOCK(&lk); again: if (inodedep_lookup(mp, ip->i_number, 0, &inodedep) == 0) { Modified: projects/suj/8/sys/ufs/ffs/softdep.h ============================================================================== --- projects/suj/8/sys/ufs/ffs/softdep.h Wed Jan 27 21:16:35 2010 (r203099) +++ projects/suj/8/sys/ufs/ffs/softdep.h Wed Jan 27 21:19:25 2010 (r203100) @@ -115,6 +115,7 @@ #define UNLINKED 0x040000 /* inodedep has been unlinked. */ #define UNLINKNEXT 0x080000 /* inodedep has valid di_freelink */ #define UNLINKPREV 0x100000 /* inodedep is pointed at in the unlink list */ +#define UNLINKONLIST 0x200000 /* inodedep is in the unlinked list on disk */ #define UNLINKLINKS (UNLINKNEXT | UNLINKPREV) #define ALLCOMPLETE (ATTACHED | COMPLETE | DEPCOMPLETE) From owner-svn-src-projects@FreeBSD.ORG Thu Jan 28 00:48:16 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F317C106566B; Thu, 28 Jan 2010 00:48:15 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DDBE88FC08; Thu, 28 Jan 2010 00:48:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0S0mFxX078519; Thu, 28 Jan 2010 00:48:15 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0S0mFc0078496; Thu, 28 Jan 2010 00:48:15 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001280048.o0S0mFc0078496@svn.freebsd.org> From: Nathan Whitehorn Date: Thu, 28 Jan 2010 00:48:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203101 - in projects/ppc64: etc/etc.powerpc64 gnu/usr.bin/cc gnu/usr.bin/gdb gnu/usr.bin/gdb/arch gnu/usr.bin/gdb/kgdb lib/bind lib/libc/powerpc64/gen lib/libdisk lib/libstand/powerpc6... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jan 2010 00:48:16 -0000 Author: nwhitehorn Date: Thu Jan 28 00:48:15 2010 New Revision: 203101 URL: http://svn.freebsd.org/changeset/base/203101 Log: Initial hash at userland. This allows make buildworld TARGET_ARCH=powerpc64 to complete. Statically linked programs appear to partially work, but have intermittent problems with argument passing. RTLD segfaults. Added: projects/ppc64/etc/etc.powerpc64/ - copied from r202947, projects/ppc64/etc/etc.powerpc/ projects/ppc64/gnu/usr.bin/gdb/arch/powerpc64 (contents, props changed) projects/ppc64/gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c - copied, changed from r202947, projects/ppc64/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c projects/ppc64/lib/libstand/powerpc64/ - copied from r202947, projects/ppc64/lib/libstand/powerpc/ projects/ppc64/lib/libthread_db/arch/powerpc64/ - copied from r202947, projects/ppc64/lib/libthread_db/arch/powerpc/ projects/ppc64/libexec/rtld-elf/powerpc64/ - copied from r202947, projects/ppc64/libexec/rtld-elf/powerpc/ projects/ppc64/usr.bin/truss/powerpc64-fbsd.c - copied, changed from r202947, projects/ppc64/usr.bin/truss/powerpc-fbsd.c Modified: projects/ppc64/gnu/usr.bin/cc/Makefile.tgt projects/ppc64/gnu/usr.bin/gdb/Makefile.inc projects/ppc64/lib/bind/config.mk projects/ppc64/lib/libc/powerpc64/gen/_setjmp.S projects/ppc64/lib/libc/powerpc64/gen/setjmp.S projects/ppc64/lib/libc/powerpc64/gen/sigsetjmp.S projects/ppc64/lib/libdisk/Makefile projects/ppc64/lib/libthr/arch/powerpc64/include/pthread_md.h projects/ppc64/libexec/rtld-elf/Makefile projects/ppc64/libexec/rtld-elf/powerpc64/reloc.c projects/ppc64/libexec/rtld-elf/powerpc64/rtld_machdep.h projects/ppc64/libexec/rtld-elf/powerpc64/rtld_start.S projects/ppc64/rescue/rescue/Makefile projects/ppc64/sys/powerpc/include/_stdint.h projects/ppc64/sys/powerpc/include/profile.h projects/ppc64/usr.sbin/crunch/crunchide/Makefile projects/ppc64/usr.sbin/crunch/crunchide/exec_elf32.c projects/ppc64/usr.sbin/named/Makefile projects/ppc64/usr.sbin/pmcstat/pmcstat_log.c Modified: projects/ppc64/gnu/usr.bin/cc/Makefile.tgt ============================================================================== --- projects/ppc64/gnu/usr.bin/cc/Makefile.tgt Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/gnu/usr.bin/cc/Makefile.tgt Thu Jan 28 00:48:15 2010 (r203101) @@ -22,3 +22,6 @@ TARGET_CPU_DEFAULT= TARGET_CPU_ultraspar TARGET_CPU_DEFAULT= \"powerpc64\" .endif +.if ${MACHINE_ARCH} == "powerpc64" +CFLAGS+= -mminimal-toc +.endif Modified: projects/ppc64/gnu/usr.bin/gdb/Makefile.inc ============================================================================== --- projects/ppc64/gnu/usr.bin/gdb/Makefile.inc Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/gnu/usr.bin/gdb/Makefile.inc Thu Jan 28 00:48:15 2010 (r203101) @@ -38,6 +38,10 @@ CFLAGS+= -I${CNTRB_GDB}/include CFLAGS+= -I${CNTRB_BU}/include CFLAGS+= -I${CNTRB_BU}/bfd +.if ${MACHINE_ARCH} == "powerpc64" +CFLAGS+= -mminimal-toc +.endif + GENSRCS+= nm.h tm.h .if defined(GDB_CROSS_DEBUGGER) Added: projects/ppc64/gnu/usr.bin/gdb/arch/powerpc64 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ppc64/gnu/usr.bin/gdb/arch/powerpc64 Thu Jan 28 00:48:15 2010 (r203101) @@ -0,0 +1 @@ +link powerpc \ No newline at end of file Copied and modified: projects/ppc64/gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c (from r202947, projects/ppc64/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c) ============================================================================== --- projects/ppc64/gnu/usr.bin/gdb/kgdb/trgt_powerpc.c Sun Jan 24 20:15:59 2010 (r202947, copy source) +++ projects/ppc64/gnu/usr.bin/gdb/kgdb/trgt_powerpc64.c Thu Jan 28 00:48:15 2010 (r203101) @@ -72,6 +72,8 @@ kgdb_trgt_fetch_registers(int regno __un /* r1 is saved in the sp field */ supply_register(tdep->ppc_gp0_regnum + 1, (char *)&pcb.pcb_sp); + /* r2 is saved in the toc field */ + supply_register(tdep->ppc_gp0_regnum + 2, (char *)&pcb.pcb_toc); supply_register(tdep->ppc_lr_regnum, (char *)&pcb.pcb_lr); supply_register(tdep->ppc_cr_regnum, (char *)&pcb.pcb_cr); @@ -160,7 +162,7 @@ kgdb_trgt_trapframe_prev_register(struct return; cache = kgdb_trgt_frame_cache(next_frame, this_cache); - *addrp = cache->sp + 8 + ofs; + *addrp = cache->sp + 48 + ofs; *lvalp = lval_memory; target_read_memory(*addrp, valuep, regsz); } Modified: projects/ppc64/lib/bind/config.mk ============================================================================== --- projects/ppc64/lib/bind/config.mk Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/lib/bind/config.mk Thu Jan 28 00:48:15 2010 (r203101) @@ -45,7 +45,7 @@ CFLAGS+= -DOPENSSL CFLAGS+= -DUSE_MD5 # Endianness -.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "sparc64" +.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "powerpc64" || ${MACHINE_ARCH} == "sparc64" CFLAGS+= -DWORDS_BIGENDIAN .endif @@ -66,6 +66,8 @@ CFLAGS+= -I${LIB_BIND_DIR} # Use the right version of the atomic.h file from lib/isc .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" ISC_ATOMIC_ARCH= x86_32 +.elif ${MACHINE_ARCH} == "powerpc64" +ISC_ATOMIC_ARCH= powerpc .else ISC_ATOMIC_ARCH= ${MACHINE_ARCH} .endif Modified: projects/ppc64/lib/libc/powerpc64/gen/_setjmp.S ============================================================================== --- projects/ppc64/lib/libc/powerpc64/gen/_setjmp.S Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/lib/libc/powerpc64/gen/_setjmp.S Thu Jan 28 00:48:15 2010 (r203101) @@ -55,12 +55,57 @@ ENTRY(_setjmp) mfcr %r12 mr %r10,%r1 mr %r9,%r2 - stmw %r9,20(%r3) + std %r9,40 + 0*8(%r3) + std %r10,40 + 1*8(%r3) + std %r11,40 + 2*8(%r3) + std %r12,40 + 3*8(%r3) + std %r13,40 + 4*8(%r3) + std %r14,40 + 5*8(%r3) + std %r15,40 + 6*8(%r3) + std %r16,40 + 7*8(%r3) + std %r17,40 + 8*8(%r3) + std %r18,40 + 10*8(%r3) + std %r19,40 + 11*8(%r3) + std %r20,40 + 12*8(%r3) + std %r21,40 + 13*8(%r3) + std %r22,40 + 14*8(%r3) + std %r23,40 + 15*8(%r3) + std %r24,40 + 16*8(%r3) + std %r25,40 + 17*8(%r3) + std %r26,40 + 18*8(%r3) + std %r27,40 + 19*8(%r3) + std %r28,40 + 20*8(%r3) + std %r29,40 + 21*8(%r3) + std %r30,40 + 22*8(%r3) + std %r31,40 + 23*8(%r3) li %r3,0 blr ENTRY(_longjmp) - lmw %r9,20(%r3) + ld %r9,40 + 0*8(%r3) + ld %r10,40 + 1*8(%r3) + ld %r11,40 + 2*8(%r3) + ld %r12,40 + 3*8(%r3) + ld %r13,40 + 4*8(%r3) + ld %r14,40 + 5*8(%r3) + ld %r15,40 + 6*8(%r3) + ld %r16,40 + 7*8(%r3) + ld %r17,40 + 8*8(%r3) + ld %r18,40 + 10*8(%r3) + ld %r19,40 + 11*8(%r3) + ld %r20,40 + 12*8(%r3) + ld %r21,40 + 13*8(%r3) + ld %r22,40 + 14*8(%r3) + ld %r23,40 + 15*8(%r3) + ld %r24,40 + 16*8(%r3) + ld %r25,40 + 17*8(%r3) + ld %r26,40 + 18*8(%r3) + ld %r27,40 + 19*8(%r3) + ld %r28,40 + 20*8(%r3) + ld %r29,40 + 21*8(%r3) + ld %r30,40 + 22*8(%r3) + ld %r31,40 + 23*8(%r3) + mtlr %r11 mtcr %r12 mr %r2,%r9 Modified: projects/ppc64/lib/libc/powerpc64/gen/setjmp.S ============================================================================== --- projects/ppc64/lib/libc/powerpc64/gen/setjmp.S Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/lib/libc/powerpc64/gen/setjmp.S Thu Jan 28 00:48:15 2010 (r203101) @@ -65,14 +65,62 @@ ENTRY(setjmp) mfcr %r12 /* r12 <- condition reg */ mr %r10,%r1 /* r10 <- stackptr */ mr %r9,%r2 /* r9 <- global ptr */ - stmw %r9,20(%r6) + + std %r9,40 + 0*8(%r6) + std %r10,40 + 1*8(%r6) + std %r11,40 + 2*8(%r6) + std %r12,40 + 3*8(%r6) + std %r13,40 + 4*8(%r6) + std %r14,40 + 5*8(%r6) + std %r15,40 + 6*8(%r6) + std %r16,40 + 7*8(%r6) + std %r17,40 + 8*8(%r6) + std %r18,40 + 10*8(%r6) + std %r19,40 + 11*8(%r6) + std %r20,40 + 12*8(%r6) + std %r21,40 + 13*8(%r6) + std %r22,40 + 14*8(%r6) + std %r23,40 + 15*8(%r6) + std %r24,40 + 16*8(%r6) + std %r25,40 + 17*8(%r6) + std %r26,40 + 18*8(%r6) + std %r27,40 + 19*8(%r6) + std %r28,40 + 20*8(%r6) + std %r29,40 + 21*8(%r6) + std %r30,40 + 22*8(%r6) + std %r31,40 + 23*8(%r6) + li %r3,0 /* return (0) */ blr .weak CNAME(longjmp) .set CNAME(longjmp),CNAME(__longjmp) + .weak CNAME(.longjmp) + .set CNAME(.longjmp),CNAME(.__longjmp) ENTRY(__longjmp) - lmw %r9,20(%r3) /* restore regs */ + ld %r9,40 + 0*8(%r3) + ld %r10,40 + 1*8(%r3) + ld %r11,40 + 2*8(%r3) + ld %r12,40 + 3*8(%r3) + ld %r13,40 + 4*8(%r3) + ld %r14,40 + 5*8(%r3) + ld %r15,40 + 6*8(%r3) + ld %r16,40 + 7*8(%r3) + ld %r17,40 + 8*8(%r3) + ld %r18,40 + 10*8(%r3) + ld %r19,40 + 11*8(%r3) + ld %r20,40 + 12*8(%r3) + ld %r21,40 + 13*8(%r3) + ld %r22,40 + 14*8(%r3) + ld %r23,40 + 15*8(%r3) + ld %r24,40 + 16*8(%r3) + ld %r25,40 + 17*8(%r3) + ld %r26,40 + 18*8(%r3) + ld %r27,40 + 19*8(%r3) + ld %r28,40 + 20*8(%r3) + ld %r29,40 + 21*8(%r3) + ld %r30,40 + 22*8(%r3) + ld %r31,40 + 23*8(%r3) mr %r6,%r4 /* save val param */ mtlr %r11 /* r11 -> link reg */ mtcr %r12 /* r12 -> condition reg */ Modified: projects/ppc64/lib/libc/powerpc64/gen/sigsetjmp.S ============================================================================== --- projects/ppc64/lib/libc/powerpc64/gen/sigsetjmp.S Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/lib/libc/powerpc64/gen/sigsetjmp.S Thu Jan 28 00:48:15 2010 (r203101) @@ -70,12 +70,59 @@ ENTRY(sigsetjmp) mfcr %r12 mr %r10,%r1 mr %r9,%r2 - stmw %r9,20(%r6) + + std %r9,40 + 0*8(%r6) + std %r10,40 + 1*8(%r6) + std %r11,40 + 2*8(%r6) + std %r12,40 + 3*8(%r6) + std %r13,40 + 4*8(%r6) + std %r14,40 + 5*8(%r6) + std %r15,40 + 6*8(%r6) + std %r16,40 + 7*8(%r6) + std %r17,40 + 8*8(%r6) + std %r18,40 + 10*8(%r6) + std %r19,40 + 11*8(%r6) + std %r20,40 + 12*8(%r6) + std %r21,40 + 13*8(%r6) + std %r22,40 + 14*8(%r6) + std %r23,40 + 15*8(%r6) + std %r24,40 + 16*8(%r6) + std %r25,40 + 17*8(%r6) + std %r26,40 + 18*8(%r6) + std %r27,40 + 19*8(%r6) + std %r28,40 + 20*8(%r6) + std %r29,40 + 21*8(%r6) + std %r30,40 + 22*8(%r6) + std %r31,40 + 23*8(%r6) + li %r3,0 blr ENTRY(siglongjmp) - lmw %r9,20(%r3) + ld %r9,40 + 0*8(%r3) + ld %r10,40 + 1*8(%r3) + ld %r11,40 + 2*8(%r3) + ld %r12,40 + 3*8(%r3) + ld %r13,40 + 4*8(%r3) + ld %r14,40 + 5*8(%r3) + ld %r15,40 + 6*8(%r3) + ld %r16,40 + 7*8(%r3) + ld %r17,40 + 8*8(%r3) + ld %r18,40 + 10*8(%r3) + ld %r19,40 + 11*8(%r3) + ld %r20,40 + 12*8(%r3) + ld %r21,40 + 13*8(%r3) + ld %r22,40 + 14*8(%r3) + ld %r23,40 + 15*8(%r3) + ld %r24,40 + 16*8(%r3) + ld %r25,40 + 17*8(%r3) + ld %r26,40 + 18*8(%r3) + ld %r27,40 + 19*8(%r3) + ld %r28,40 + 20*8(%r3) + ld %r29,40 + 21*8(%r3) + ld %r30,40 + 22*8(%r3) + ld %r31,40 + 23*8(%r3) + lwz %r7,0(%r3) mr %r6,%r4 mtlr %r11 Modified: projects/ppc64/lib/libdisk/Makefile ============================================================================== --- projects/ppc64/lib/libdisk/Makefile Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/lib/libdisk/Makefile Thu Jan 28 00:48:15 2010 (r203101) @@ -12,6 +12,8 @@ SRCS= blocks.c ${_change} chunk.c create rules.c write_disk.c .if ${MACHINE} == "sun4v" SRCS+= write_sparc64_disk.c +.elif ${MACHINE} == "powerpc64" +SRCS+= write_powerpc_disk.c .else SRCS+= write_${MACHINE}_disk.c .endif Modified: projects/ppc64/lib/libthr/arch/powerpc64/include/pthread_md.h ============================================================================== --- projects/ppc64/lib/libthr/arch/powerpc64/include/pthread_md.h Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/lib/libthr/arch/powerpc64/include/pthread_md.h Thu Jan 28 00:48:15 2010 (r203101) @@ -44,7 +44,7 @@ /* * Variant I tcb. The structure layout is fixed, don't blindly * change it. - * %r2 points to end of the structure. + * %r13 points to end of the structure. */ struct tcb { void *tcb_dtv; Modified: projects/ppc64/libexec/rtld-elf/Makefile ============================================================================== --- projects/ppc64/libexec/rtld-elf/Makefile Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/libexec/rtld-elf/Makefile Thu Jan 28 00:48:15 2010 (r203101) @@ -11,7 +11,11 @@ MAN= rtld.1 CSTD?= gnu99 CFLAGS+= -Wall -DFREEBSD_ELF -DIN_RTLD CFLAGS+= -I${.CURDIR}/${MACHINE_ARCH} -I${.CURDIR} +.if ${MACHINE_ARCH} == "powerpc64" +LDFLAGS+= -nostdlib -e _rtld_start +.else LDFLAGS+= -nostdlib -e .rtld_start +.endif WARNS?= 2 INSTALLFLAGS= -C -b PRECIOUSPROG= Modified: projects/ppc64/libexec/rtld-elf/powerpc64/reloc.c ============================================================================== --- projects/ppc64/libexec/rtld-elf/powerpc/reloc.c Sun Jan 24 20:15:59 2010 (r202947) +++ projects/ppc64/libexec/rtld-elf/powerpc64/reloc.c Thu Jan 28 00:48:15 2010 (r203101) @@ -43,9 +43,11 @@ #include "debug.h" #include "rtld.h" -#define _ppc_ha(x) ((((u_int32_t)(x) & 0x8000) ? \ - ((u_int32_t)(x) + 0x10000) : (u_int32_t)(x)) >> 16) -#define _ppc_la(x) ((u_int32_t)(x) & 0xffff) +struct funcdesc { + uint64_t addr; + uint64_t toc; + uint64_t env; +}; /* * Process the R_PPC_COPY relocations @@ -262,7 +264,7 @@ reloc_nonplt_object(Obj_Entry *obj_rtld, break; default: - _rtld_error("%s: Unsupported relocation type %d" + _rtld_error("%s: Unsupported relocation type %ld" " in non-PLT relocations\n", obj->path, ELF_R_TYPE(rela->r_info)); return (-1); @@ -321,8 +323,6 @@ static int reloc_plt_object(Obj_Entry *obj, const Elf_Rela *rela) { Elf_Word *where = (Elf_Word *)(obj->relocbase + rela->r_offset); - Elf_Addr *pltresolve; - Elf_Addr distance; int reloff; reloff = rela - obj->pltrela; @@ -331,22 +331,13 @@ reloc_plt_object(Obj_Entry *obj, const E return (-1); } - pltresolve = obj->pltgot + 8; - - distance = (Elf_Addr)pltresolve - (Elf_Addr)(where + 1); - dbg(" reloc_plt_object: where=%p,pltres=%p,reloff=%x,distance=%x", (void *)where, (void *)pltresolve, reloff, distance); - /* li r11,reloff */ - /* b pltresolve */ - where[0] = 0x39600000 | reloff; - where[1] = 0x48000000 | (distance & 0x03fffffc); - - /* - * The icache will be sync'd in init_pltgot, which is called - * after all the slots have been updated - */ + ((struct funcdesc *)(where))->addr = + (uint64_t)_rtld_powerpc64_pltresolve; + ((struct funcdesc *)(where))->toc = reloff; + ((struct funcdesc *)(where))->env = (uint64_t)obj; return (0); } @@ -430,9 +421,6 @@ Elf_Addr reloc_jmpslot(Elf_Addr *wherep, Elf_Addr target, const Obj_Entry *defobj, const Obj_Entry *obj, const Elf_Rel *rel) { - Elf_Addr offset; - const Elf_Rela *rela = (const Elf_Rela *) rel; - dbg(" reloc_jmpslot: where=%p, target=%p", (void *)wherep, (void *)target); @@ -441,112 +429,35 @@ reloc_jmpslot(Elf_Addr *wherep, Elf_Addr * a direct transfer to the now fully resolved function * address. */ - offset = target - (Elf_Addr)wherep; - if (abs(offset) < 32*1024*1024) { /* inside 32MB? */ - /* b value # branch directly */ - *wherep = 0x48000000 | (offset & 0x03fffffc); - __syncicache(wherep, 4); - } else { - Elf_Addr *pltcall, *jmptab; - int distance; - int N = obj->pltrelasize / sizeof(Elf_Rela); - int reloff = rela - obj->pltrela; - - if ((reloff < 0) || (reloff >= 0x8000)) { - return (-1); - } - - pltcall = obj->pltgot; - - dbg(" reloc_jmpslot: indir, reloff=%d, N=%d\n", - reloff, N); - - jmptab = obj->pltgot + 18 + N * 2; - jmptab[reloff] = target; - - distance = (Elf_Addr)pltcall - (Elf_Addr)(wherep + 1); - - /* li r11,reloff */ - /* b pltcall # use indirect pltcall routine */ - wherep[0] = 0x39600000 | reloff; - wherep[1] = 0x48000000 | (distance & 0x03fffffc); - __syncicache(wherep, 8); - } + memcpy(wherep, (void *)target, sizeof(struct funcdesc)); return (target); } - -/* - * Setup the plt glue routines. - */ -#define PLTCALL_SIZE 20 -#define PLTRESOLVE_SIZE 24 - void init_pltgot(Obj_Entry *obj) { - Elf_Word *pltcall, *pltresolve; - Elf_Word *jmptab; + struct funcdesc *pltcall; int N = obj->pltrelasize / sizeof(Elf_Rela); - pltcall = obj->pltgot; + pltcall = (struct funcdesc *)obj->pltgot; if (pltcall == NULL) { return; } /* - * From the SVR4 PPC ABI: - * - * 'The first 18 words (72 bytes) of the PLT are reserved for - * use by the dynamic linker. - * ... - * 'If the executable or shared object requires N procedure - * linkage table entries, the link editor shall reserve 3*N - * words (12*N bytes) following the 18 reserved words. The - * first 2*N of these words are the procedure linkage table - * entries themselves. The static linker directs calls to bytes - * (72 + (i-1)*8), for i between 1 and N inclusive. The remaining - * N words (4*N bytes) are reserved for use by the dynamic linker.' - */ - - /* - * Copy the absolute-call assembler stub into the first part of - * the reserved PLT area. + * Copy the function description into the PLT slot */ - memcpy(pltcall, _rtld_powerpc_pltcall, PLTCALL_SIZE); - - /* - * Determine the address of the jumptable, which is the dyn-linker - * reserved area after the call cells. Write the absolute address - * of the jumptable into the absolute-call assembler code so it - * can determine this address. - */ - jmptab = pltcall + 18 + N * 2; - pltcall[1] |= _ppc_ha(jmptab); /* addis 11,11,jmptab@ha */ - pltcall[2] |= _ppc_la(jmptab); /* lwz 11,jmptab@l(11) */ - - /* - * Skip down 32 bytes into the initial reserved area and copy - * in the standard resolving assembler call. Into this assembler, - * insert the absolute address of the _rtld_bind_start routine - * and the address of the relocation object. - */ - pltresolve = obj->pltgot + 8; - - memcpy(pltresolve, _rtld_powerpc_pltresolve, PLTRESOLVE_SIZE); - pltresolve[0] |= _ppc_ha(_rtld_bind_start); - pltresolve[1] |= _ppc_la(_rtld_bind_start); - pltresolve[3] |= _ppc_ha(obj); - pltresolve[4] |= _ppc_la(obj); + memcpy(pltcall, _rtld_powerpc64_pltresolve, sizeof(*pltcall)); /* - * Sync the icache for the byte range represented by the - * trampoline routines and call slots. + * Now fake the two arguments we get in the descriptor to + * pass information to the resolver. */ - __syncicache(pltcall, 72 + N * 8); + pltcall->toc = N; + pltcall->env = (uint64_t)obj; } void Modified: projects/ppc64/libexec/rtld-elf/powerpc64/rtld_machdep.h ============================================================================== --- projects/ppc64/libexec/rtld-elf/powerpc/rtld_machdep.h Sun Jan 24 20:15:59 2010 (r202947) +++ projects/ppc64/libexec/rtld-elf/powerpc64/rtld_machdep.h Thu Jan 28 00:48:15 2010 (r203101) @@ -57,8 +57,7 @@ void _rtld_bind_start(void); * PLT functions. Not really correct prototypes, but the * symbol values are needed. */ -void _rtld_powerpc_pltresolve(void); -void _rtld_powerpc_pltcall(void); +void _rtld_powerpc64_pltresolve(void); /* * TLS Modified: projects/ppc64/libexec/rtld-elf/powerpc64/rtld_start.S ============================================================================== --- projects/ppc64/libexec/rtld-elf/powerpc/rtld_start.S Sun Jan 24 20:15:59 2010 (r202947) +++ projects/ppc64/libexec/rtld-elf/powerpc64/rtld_start.S Thu Jan 28 00:48:15 2010 (r203101) @@ -34,53 +34,19 @@ .extern _GLOBAL_OFFSET_TABLE_ .extern _DYNAMIC -_ENTRY(.rtld_start) - stwu %r1,-48(%r1) /* 16-byte aligned stack for reg saves + +_ENTRY(_rtld_start) + stdu %r1,-96(%r1) /* 16-byte aligned stack for reg saves + exit_proc & obj _rtld args + backchain & lrsave stack frame */ - stw %r3,16(%r1) /* argc */ - stw %r4,20(%r1) /* argv */ - stw %r5,24(%r1) /* envp */ -/* stw %r6,28(%r1) *//* obj (always 0) */ -/* stw %r7,32(%r1) *//* cleanup (always 0) */ - stw %r8,36(%r1) /* ps_strings */ + std %r3,48(%r1) /* argc */ + std %r4,56(%r1) /* argv */ + std %r5,64(%r1) /* envp */ +/* std %r6,72(%r1) *//* obj (always 0) */ +/* std %r7,80(%r1) *//* cleanup (always 0) */ + std %r8,88(%r1) /* ps_strings */ - /* - * Perform initial relocation of ld-elf.so. Not as easy as it - * sounds. - * - perform small forward branch to put PC into link reg - * - use link-time constants to determine offset to the - * _DYNAMIC section and the GOT. Add these to the PC to - * convert to absolute addresses. - * - sync icache to allow execution of the SVR4 ABI-specified - * blrl instruction preceding the GOT - * - Use this instruction to determine the GOT absolute address - * - read GOT[0], which is the SVR4 ABI-specified link-time - * value of _DYNAMIC. Subtract this value from the absolute - * value to determine the load address - * - call reloc_non_plt_self() to fix up ld-elf.so's relocations - */ - bl 1f - .long _DYNAMIC-. - .long _GLOBAL_OFFSET_TABLE_-. /* branch lr + 4 */ -1: - mflr %r3 /* PC value at .long */ - lwz %r4,4(%r3) - add %r4,%r4,%r3 /* &_GLOBAL_OFFSET_TABLE-4, blrl insn. */ - dcbst %r0,%r4 /* sync i-cache with d-cache */ - sync - icbi %r0,%r4 - isync - - lwz %r4,0(%r3) /* offset to _DYNAMIC */ - add %r3,%r4,%r3 /* r3 = &_DYNAMIC, absolute value */ - - bl _GLOBAL_OFFSET_TABLE_@local-4 - mflr %r4 /* &_GLOBAL_OFFSET_TABLE_, absolute value */ - lwz %r4,0(%r4) /* linker &_DYNAMIC, from got[0] */ - subf %r4,%r4,%r3 /* subtract to calculate relocbase */ - - bl reloc_non_plt_self@plt /* reloc_non_plt_self(&_DYNAMIC,base) */ + bl .reloc_non_plt_self /* reloc_non_plt_self(&_DYNAMIC,base) */ + nop /* * The _rtld() function likes to see a stack layout containing @@ -89,25 +55,26 @@ _ENTRY(.rtld_start) * original stack layout has to be found by moving back a word * from the argv pointer. */ - lwz %r4,20(%r1) /* restore argv */ - addi %r3,%r4,-4 /* locate argc ptr, &argv[-1] */ + ld %r4,56(%r1) /* restore argv */ + addi %r3,%r4,-8 /* locate argc ptr, &argv[-1] */ - addi %r4,%r1,8 /* &exit_proc on stack */ - addi %r5,%r1,12 /* &obj_main on stack */ + addi %r4,%r1,16 /* &exit_proc on stack */ + addi %r5,%r1,24 /* &obj_main on stack */ - bl _rtld@plt /* &_start = _rtld(sp, &exit_proc, &obj_main)*/ + bl ._rtld /* &_start = _rtld(sp, &exit_proc, &obj_main)*/ + nop mtlr %r3 /* * Restore args, with new obj/exit proc */ - lwz %r3,16(%r1) /* argc */ - lwz %r4,20(%r1) /* argv */ - lwz %r5,24(%r1) /* envp */ - lwz %r6,12(%r1) /* obj */ - lwz %r7,8(%r1) /* exit proc */ - lwz %r8,36(%r1) /* ps_strings */ - addi %r1,%r1,48 /* restore original stackptr */ + ld %r3,48(%r1) /* argc */ + ld %r4,56(%r1) /* argv */ + ld %r5,64(%r1) /* envp */ + ld %r6,72(%r1) /* obj */ + ld %r7,80(%r1) /* exit proc */ + ld %r8,88(%r1) /* ps_strings */ + addi %r1,%r1,96 /* restore original stackptr */ blrl /* _start(argc, argv, envp, obj, cleanup, ps_strings) */ @@ -119,7 +86,7 @@ _ENTRY(.rtld_start) * * Call into the MI binder. This routine is reached via the PLT call cell, * and then _rtld_powerpc_pltresolve(). - * On entry, %r11 contains the index of the PLT cell, and %r12 contains + * On entry, %r13 contains the index of the PLT cell, and %r12 contains * a pointer to the ELF object for the file. * Save all registers, call into the binder to resolve and fixup the external * routine, and then transfer to the external routine on return. @@ -137,7 +104,8 @@ _ENTRY(_rtld_bind_start) mr %r3,%r12 # obj mulli %r4,%r11,12 # rela index * sizeof(Elf_Rela) - bl _rtld_bind@PLT # target addr = _rtld_bind(obj, reloff) + bl ._rtld_bind # target addr = _rtld_bind(obj, reloff) + nop mtctr %r3 # move absolute target addr into ctr lmw %r3,24(%r1) # restore r3-r31 @@ -152,43 +120,20 @@ _ENTRY(_rtld_bind_start) /* - * _rtld_powerpc_pltresolve() + * _rtld_powerpc64_pltresolve() * - * This routine is copied into the latter part of the 72-byte reserved - * area at the start of the PLT. The absolute address of the _rtld_bind_start - * routine, and the ELF object for the loaded file, are inserted into - * the code by the reloc.c:init_pltgot() routine. * The first time an external routine is called, the PLT slot will - * set up %r11 to the offset of the slot, and will jump to this routine. - * The ELF object is shifted into %r11, and _rtld_bind_start is called + * set up %r2 to the offset of the slot, and will jump to this routine. + * The ELF object is in %r11, and _rtld_bind_start is called * to complete the binding. */ -_ENTRY(_rtld_powerpc_pltresolve) - lis %r12,0 # lis 12,_rtld_bind_start@ha - addi %r12,%r12,0 # addi 12,12,_rtld_bind_start@l +_ENTRY(_rtld_powerpc64_pltresolve) + mr %r13,%r2 + ld %r2,40(%r1) + addis %r12,%r2,_rtld_bind_start@toc@ha + addi %r12,%r12,_rtld_bind_start@toc@l + ld %r2,8(%r12) + ld %r12,0(%r12) mtctr %r12 - lis %r12,0 # lis 12,obj@ha - addi %r12,%r12,0 # addi 12,12,obj@l bctr -/* - * _rtld_powerpc_pltcall() - * - * This routine is copied into the 72-byte reserved area at the - * start of the PLT. The reloc.c:init_pltgot() routine inserts - * the absolute address of the jumptable. - * Control is transferred to this routine when the binder has - * located the external routine, but determined that it is > 32Mb - * from the PLT slot. Code is inserted into the PLT slot to set up - * %r11 with the jumptable index, and jump to here, where the - * absolute address of the external routine is loaded from the - * jumptable and transferred to - */ -_ENTRY(_rtld_powerpc_pltcall) - slwi %r11,%r11,2 # jmptab offset = index * 4 - addis %r11,%r11,0 # addis 11,11,jmptab@ha - lwz %r11,0(%r11) # lwz 11,jmptab@l(11) - mtctr %r11 - bctr # (*jmptab[index])() - - Modified: projects/ppc64/rescue/rescue/Makefile ============================================================================== --- projects/ppc64/rescue/rescue/Makefile Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/rescue/rescue/Makefile Thu Jan 28 00:48:15 2010 (r203101) @@ -47,7 +47,11 @@ CLEANFILES+= dhclient_FIXED # Define Makefile variable RESCUE CRUNCH_BUILDOPTS+= -DRESCUE # Define compile-time RESCUE symbol when compiling components +.if ${TARGET_ARCH} == powerpc64 +CRUNCH_BUILDOPTS+= CRUNCH_CFLAGS=\"-DRESCUE -mminimal-toc\" +.else CRUNCH_BUILDOPTS+= CRUNCH_CFLAGS=-DRESCUE +.endif # An experiment that failed: try overriding bsd.lib.mk and bsd.prog.mk # rather than incorporating rescue-specific logic into standard files. Modified: projects/ppc64/sys/powerpc/include/_stdint.h ============================================================================== --- projects/ppc64/sys/powerpc/include/_stdint.h Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/sys/powerpc/include/_stdint.h Thu Jan 28 00:48:15 2010 (r203101) @@ -80,13 +80,21 @@ #define INT8_MAX 0x7f #define INT16_MAX 0x7fff #define INT32_MAX 0x7fffffff +#ifdef __powerpc64__ +#define INT64_MAX 0x7fffffffffffffffL +#else #define INT64_MAX 0x7fffffffffffffffLL +#endif /* Maximum values of exact-width unsigned integer types. */ #define UINT8_MAX 0xff #define UINT16_MAX 0xffff #define UINT32_MAX 0xffffffffU +#ifdef __powerpc64__ +#define UINT64_MAX 0xffffffffffffffffUL +#else #define UINT64_MAX 0xffffffffffffffffULL +#endif /* * ISO/IEC 9899:1999 Modified: projects/ppc64/sys/powerpc/include/profile.h ============================================================================== --- projects/ppc64/sys/powerpc/include/profile.h Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/sys/powerpc/include/profile.h Thu Jan 28 00:48:15 2010 (r203101) @@ -173,7 +173,11 @@ void __mcount(uintfptr_t frompc, uintfpt #else /* !_KERNEL */ +#ifdef __powerpc64__ +typedef u_long uintfptr_t; +#else typedef u_int uintfptr_t; +#endif #endif /* _KERNEL */ Copied and modified: projects/ppc64/usr.bin/truss/powerpc64-fbsd.c (from r202947, projects/ppc64/usr.bin/truss/powerpc-fbsd.c) ============================================================================== --- projects/ppc64/usr.bin/truss/powerpc-fbsd.c Sun Jan 24 20:15:59 2010 (r202947, copy source) +++ projects/ppc64/usr.bin/truss/powerpc64-fbsd.c Thu Jan 28 00:48:15 2010 (r203101) @@ -118,9 +118,6 @@ powerpc_syscall_entry(struct trussinfo * unsigned int regargs; struct syscall *sc; - /* Account for a 64-bit argument with corresponding alignment. */ - nargs += 2; - cpid = trussinfo->curthread->tid; clear_fsc(); @@ -137,14 +134,10 @@ powerpc_syscall_entry(struct trussinfo * regargs = NARGREG; syscall_num = regs.fixreg[0]; args = ®s.fixreg[3]; - if (syscall_num == SYS_syscall) { + if (syscall_num == SYS_syscall || syscall_num == SYS___syscall) { args = ®s.fixreg[4]; regargs -= 1; syscall_num = regs.fixreg[3]; - } else if (syscall_num == SYS___syscall) { - args = ®s.fixreg[5]; - regargs -= 2; - syscall_num = regs.fixreg[4]; } fsc.number = syscall_num; @@ -172,7 +165,7 @@ powerpc_syscall_entry(struct trussinfo * memmove(&fsc.args[0], args, regargs * sizeof(fsc.args[0])); iorequest.piod_op = PIOD_READ_D; - iorequest.piod_offs = (void *)(regs.fixreg[1] + 8); + iorequest.piod_offs = (void *)(regs.fixreg[1] + 48); iorequest.piod_addr = &fsc.args[regargs]; iorequest.piod_len = (nargs - regargs) * sizeof(fsc.args[0]); ptrace(PT_IO, cpid, (caddr_t)&iorequest, 0); @@ -292,14 +285,6 @@ powerpc_syscall_exit(struct trussinfo *t asprintf(&fsc.s_args[i], "0x%lx", fsc.args[i]); } else { /* - * On 32-bit big-endian, the low word of a 64-bit return is - * in the greater address. Switch to this. XXX note that - * print_syscall_ret can't handle 64-bit return values (llseek) - */ - if (sc->ret_type == 2) - retval = regs.fixreg[4]; - - /* * Here, we only look for arguments that have OUT masked in -- * otherwise, they were handled in the syscall_entry function. */ Modified: projects/ppc64/usr.sbin/crunch/crunchide/Makefile ============================================================================== --- projects/ppc64/usr.sbin/crunch/crunchide/Makefile Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/usr.sbin/crunch/crunchide/Makefile Thu Jan 28 00:48:15 2010 (r203101) @@ -10,7 +10,7 @@ CFLAGS+=-DNLIST_AOUT SRCS+= exec_aout.c .endif -.if ${TARGET_ARCH} == ia64 || \ +.if ${TARGET_ARCH} == ia64 || ${TARGET_ARCH} == powerpc64 || \ ${TARGET_ARCH} == sparc64 || ${TARGET_ARCH} == amd64 CFLAGS+=-DNLIST_ELF64 SRCS+= exec_elf64.c Modified: projects/ppc64/usr.sbin/crunch/crunchide/exec_elf32.c ============================================================================== --- projects/ppc64/usr.sbin/crunch/crunchide/exec_elf32.c Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/usr.sbin/crunch/crunchide/exec_elf32.c Thu Jan 28 00:48:15 2010 (r203101) @@ -176,6 +176,10 @@ ELFNAMEEND(check)(int fd, const char *fn #define EM_PPC 20 #endif case EM_PPC: break; +#ifndef EM_PPC64 +#define EM_PPC64 21 +#endif + case EM_PPC64: break; #ifndef EM_SPARCV9 #define EM_SPARCV9 43 #endif Modified: projects/ppc64/usr.sbin/named/Makefile ============================================================================== --- projects/ppc64/usr.sbin/named/Makefile Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/usr.sbin/named/Makefile Thu Jan 28 00:48:15 2010 (r203101) @@ -48,6 +48,10 @@ CFLAGS+= -DCONFIGARGS="\"${CONFIGARGS}\" CFLAGS+= -I${SRCDIR}/unix/include -I${SRCDIR}/include -I${LIB_BIND_DIR} CFLAGS+= -I${BIND_DIR}/lib/isc/${ISC_ATOMIC_ARCH}/include +.if ${MACHINE_ARCH} == powerpc64 +CFLAGS+= -mminimal-toc +.endif + # Remove the date stamp to make it more obvious when real changes happen CFLAGS+= -U__DATE__ Modified: projects/ppc64/usr.sbin/pmcstat/pmcstat_log.c ============================================================================== --- projects/ppc64/usr.sbin/pmcstat/pmcstat_log.c Wed Jan 27 21:19:25 2010 (r203100) +++ projects/ppc64/usr.sbin/pmcstat/pmcstat_log.c Thu Jan 28 00:48:15 2010 (r203101) @@ -1965,6 +1965,9 @@ pmcstat_callgraph_do_gmon_arcs(void) * callgraph is generated if FLAG_DO_CALLGRAPHS is set. gmon.out * files usable by gprof(1) are created if FLAG_DO_GPROF is set. */ + +int foo[sizeof(uintfptr_t) - 7]; + static int pmcstat_analyze_log(struct pmcstat_args *a) { From owner-svn-src-projects@FreeBSD.ORG Thu Jan 28 01:52:24 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F2311106566B; Thu, 28 Jan 2010 01:52:24 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DC4678FC12; Thu, 28 Jan 2010 01:52:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0S1qOYu092660; Thu, 28 Jan 2010 01:52:24 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0S1qOEX092647; Thu, 28 Jan 2010 01:52:24 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001280152.o0S1qOEX092647@svn.freebsd.org> From: Nathan Whitehorn Date: Thu, 28 Jan 2010 01:52:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203103 - in projects/ppc64: . bin/date bin/ls contrib/bind9 contrib/bind9/bin/dnssec contrib/bind9/bin/named contrib/bind9/doc/arm contrib/bind9/lib/dns contrib/bind9/lib/dns/include/d... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jan 2010 01:52:25 -0000 Author: nwhitehorn Date: Thu Jan 28 01:52:23 2010 New Revision: 203103 URL: http://svn.freebsd.org/changeset/base/203103 Log: IFC Added: projects/ppc64/share/doc/usd/05.dc/ - copied from r203101, head/share/doc/usd/05.dc/ projects/ppc64/share/doc/usd/06.bc/ - copied from r203101, head/share/doc/usd/06.bc/ projects/ppc64/share/man/man4/gpib.4 - copied unchanged from r203101, head/share/man/man4/gpib.4 projects/ppc64/share/man/man4/nvram.4 - copied unchanged from r203101, head/share/man/man4/nvram.4 projects/ppc64/share/man/man4/pcii.4 - copied unchanged from r203101, head/share/man/man4/pcii.4 projects/ppc64/share/man/man4/tnt4882.4 - copied unchanged from r203101, head/share/man/man4/tnt4882.4 projects/ppc64/sys/mips/atheros/pcf2123_rtc.c - copied unchanged from r203101, head/sys/mips/atheros/pcf2123_rtc.c projects/ppc64/sys/mips/atheros/pcf2123reg.h - copied unchanged from r203101, head/sys/mips/atheros/pcf2123reg.h projects/ppc64/usr.bin/bc/ - copied from r203101, head/usr.bin/bc/ projects/ppc64/usr.bin/dc/ - copied from r203101, head/usr.bin/dc/ Deleted: projects/ppc64/sys/mips/cavium/octeonreg.h Modified: projects/ppc64/Makefile.inc1 projects/ppc64/ObsoleteFiles.inc projects/ppc64/bin/date/date.1 projects/ppc64/bin/ls/ls.c projects/ppc64/bin/ls/ls.h projects/ppc64/bin/ls/print.c projects/ppc64/contrib/bind9/CHANGES projects/ppc64/contrib/bind9/FAQ projects/ppc64/contrib/bind9/FAQ.xml projects/ppc64/contrib/bind9/bin/dnssec/dnssec-signzone.8 projects/ppc64/contrib/bind9/bin/dnssec/dnssec-signzone.html projects/ppc64/contrib/bind9/bin/named/query.c projects/ppc64/contrib/bind9/doc/arm/Bv9ARM.pdf projects/ppc64/contrib/bind9/doc/arm/man.dnssec-signzone.html projects/ppc64/contrib/bind9/doc/arm/man.named-checkconf.html projects/ppc64/contrib/bind9/doc/arm/man.named-checkzone.html projects/ppc64/contrib/bind9/doc/arm/man.named.html projects/ppc64/contrib/bind9/doc/arm/man.nsupdate.html projects/ppc64/contrib/bind9/doc/arm/man.rndc-confgen.html projects/ppc64/contrib/bind9/doc/arm/man.rndc.conf.html projects/ppc64/contrib/bind9/doc/arm/man.rndc.html projects/ppc64/contrib/bind9/lib/dns/include/dns/db.h projects/ppc64/contrib/bind9/lib/dns/include/dns/ncache.h projects/ppc64/contrib/bind9/lib/dns/include/dns/types.h projects/ppc64/contrib/bind9/lib/dns/rbtdb.c projects/ppc64/contrib/bind9/lib/dns/resolver.c projects/ppc64/contrib/bind9/lib/dns/validator.c projects/ppc64/contrib/bind9/lib/lwres/man/lwres.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_buffer.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_config.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_context.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_gabn.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_gai_strerror.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_getaddrinfo.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_gethostent.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_getipnode.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_getnameinfo.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_getrrsetbyname.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_gnba.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_hstrerror.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_inetntop.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_noop.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_packet.html projects/ppc64/contrib/bind9/lib/lwres/man/lwres_resutil.html projects/ppc64/contrib/bind9/version projects/ppc64/contrib/groff/tmac/doc-syms projects/ppc64/contrib/libpcap/inet.c projects/ppc64/contrib/sendmail/CACerts projects/ppc64/contrib/sendmail/FREEBSD-upgrade projects/ppc64/contrib/sendmail/LICENSE projects/ppc64/contrib/sendmail/PGPKEYS projects/ppc64/contrib/sendmail/README projects/ppc64/contrib/sendmail/RELEASE_NOTES projects/ppc64/contrib/sendmail/cf/README projects/ppc64/contrib/sendmail/cf/cf/submit.cf projects/ppc64/contrib/sendmail/cf/feature/ldap_routing.m4 projects/ppc64/contrib/sendmail/cf/m4/cfhead.m4 projects/ppc64/contrib/sendmail/cf/m4/proto.m4 projects/ppc64/contrib/sendmail/cf/m4/version.m4 projects/ppc64/contrib/sendmail/contrib/qtool.pl projects/ppc64/contrib/sendmail/contrib/smcontrol.pl projects/ppc64/contrib/sendmail/doc/op/op.me projects/ppc64/contrib/sendmail/include/libmilter/mfapi.h projects/ppc64/contrib/sendmail/include/libmilter/mfdef.h projects/ppc64/contrib/sendmail/include/sm/conf.h projects/ppc64/contrib/sendmail/include/sm/ldap.h projects/ppc64/contrib/sendmail/include/sm/sem.h projects/ppc64/contrib/sendmail/libmilter/Makefile.m4 projects/ppc64/contrib/sendmail/libmilter/comm.c projects/ppc64/contrib/sendmail/libmilter/docs/api.html projects/ppc64/contrib/sendmail/libmilter/docs/overview.html projects/ppc64/contrib/sendmail/libmilter/docs/smfi_addheader.html projects/ppc64/contrib/sendmail/libmilter/docs/smfi_chgheader.html projects/ppc64/contrib/sendmail/libmilter/docs/smfi_insheader.html projects/ppc64/contrib/sendmail/libmilter/engine.c projects/ppc64/contrib/sendmail/libmilter/example.c projects/ppc64/contrib/sendmail/libmilter/handler.c projects/ppc64/contrib/sendmail/libmilter/libmilter.h projects/ppc64/contrib/sendmail/libmilter/listener.c projects/ppc64/contrib/sendmail/libmilter/main.c projects/ppc64/contrib/sendmail/libmilter/worker.c projects/ppc64/contrib/sendmail/libsm/debug.c projects/ppc64/contrib/sendmail/libsm/ldap.c projects/ppc64/contrib/sendmail/libsm/mbdb.c projects/ppc64/contrib/sendmail/libsm/sem.c projects/ppc64/contrib/sendmail/libsm/t-sem.c projects/ppc64/contrib/sendmail/libsmdb/smdb1.c projects/ppc64/contrib/sendmail/libsmdb/smdb2.c projects/ppc64/contrib/sendmail/libsmutil/safefile.c projects/ppc64/contrib/sendmail/praliases/praliases.8 projects/ppc64/contrib/sendmail/praliases/praliases.c projects/ppc64/contrib/sendmail/src/Makefile.m4 projects/ppc64/contrib/sendmail/src/README projects/ppc64/contrib/sendmail/src/TRACEFLAGS projects/ppc64/contrib/sendmail/src/collect.c projects/ppc64/contrib/sendmail/src/conf.c projects/ppc64/contrib/sendmail/src/conf.h projects/ppc64/contrib/sendmail/src/daemon.c projects/ppc64/contrib/sendmail/src/deliver.c projects/ppc64/contrib/sendmail/src/envelope.c projects/ppc64/contrib/sendmail/src/headers.c projects/ppc64/contrib/sendmail/src/main.c projects/ppc64/contrib/sendmail/src/map.c projects/ppc64/contrib/sendmail/src/milter.c projects/ppc64/contrib/sendmail/src/queue.c projects/ppc64/contrib/sendmail/src/ratectrl.c projects/ppc64/contrib/sendmail/src/readcf.c projects/ppc64/contrib/sendmail/src/savemail.c projects/ppc64/contrib/sendmail/src/sendmail.8 projects/ppc64/contrib/sendmail/src/sendmail.h projects/ppc64/contrib/sendmail/src/sfsasl.c projects/ppc64/contrib/sendmail/src/srvrsmtp.c projects/ppc64/contrib/sendmail/src/tls.c projects/ppc64/contrib/sendmail/src/usersmtp.c projects/ppc64/contrib/sendmail/src/util.c projects/ppc64/contrib/sendmail/src/version.c projects/ppc64/contrib/sendmail/vacation/vacation.c projects/ppc64/contrib/smbfs/smbutil/view.c projects/ppc64/etc/etc.amd64/ttys projects/ppc64/etc/etc.arm/ttys projects/ppc64/etc/etc.i386/ttys projects/ppc64/etc/etc.ia64/ttys projects/ppc64/etc/etc.mips/ttys projects/ppc64/etc/etc.pc98/ttys projects/ppc64/etc/etc.powerpc/ttys projects/ppc64/etc/etc.powerpc64/ttys projects/ppc64/etc/etc.sparc64/ttys projects/ppc64/etc/mtree/BSD.usr.dist projects/ppc64/etc/rc.d/devfs projects/ppc64/etc/rc.subr projects/ppc64/etc/sendmail/freebsd.mc projects/ppc64/etc/sendmail/freebsd.submit.mc projects/ppc64/etc/services projects/ppc64/gnu/lib/libstdc++/Makefile projects/ppc64/gnu/lib/libsupc++/Makefile projects/ppc64/gnu/usr.bin/Makefile projects/ppc64/lib/Makefile projects/ppc64/lib/bind/dns/code.h projects/ppc64/lib/bind/dns/dns/enumclass.h projects/ppc64/lib/bind/dns/dns/enumtype.h projects/ppc64/lib/bind/dns/dns/rdatastruct.h projects/ppc64/lib/libarchive/archive_entry_link_resolver.c projects/ppc64/lib/libarchive/archive_read.c projects/ppc64/lib/libarchive/archive_read_disk_entry_from_file.c projects/ppc64/lib/libarchive/archive_read_support_format_iso9660.c projects/ppc64/lib/libarchive/archive_write_set_format_zip.c projects/ppc64/lib/libc/gen/Symbol.map projects/ppc64/lib/libc/gen/getttyent.c projects/ppc64/lib/libc/gen/getutxent.3 projects/ppc64/lib/libc/gen/opendir.c projects/ppc64/lib/libc/gen/pututxline.c projects/ppc64/lib/libc/gen/scandir.3 projects/ppc64/lib/libc/gen/scandir.c projects/ppc64/lib/libc/gen/sem.c projects/ppc64/lib/libc/gen/ttyname.3 projects/ppc64/lib/libc/gen/uname.c projects/ppc64/lib/libc/gen/utxdb.c projects/ppc64/lib/libc/nls/gl_ES.ISO8859-1.msg projects/ppc64/lib/libc/nls/msgcat.c projects/ppc64/lib/libc/stdlib/malloc.c projects/ppc64/lib/libc/string/strsignal.c projects/ppc64/lib/libc/sys/mount.2 projects/ppc64/lib/libc/sys/wait.2 projects/ppc64/lib/libfetch/fetch.3 projects/ppc64/lib/libgssapi/gss_accept_sec_context.3 projects/ppc64/lib/libgssapi/gss_acquire_cred.3 projects/ppc64/lib/libgssapi/gss_add_cred.3 projects/ppc64/lib/libgssapi/gss_add_oid_set_member.3 projects/ppc64/lib/libgssapi/gss_canonicalize_name.3 projects/ppc64/lib/libgssapi/gss_compare_name.3 projects/ppc64/lib/libgssapi/gss_context_time.3 projects/ppc64/lib/libgssapi/gss_create_empty_oid_set.3 projects/ppc64/lib/libgssapi/gss_delete_sec_context.3 projects/ppc64/lib/libgssapi/gss_display_name.3 projects/ppc64/lib/libgssapi/gss_display_status.3 projects/ppc64/lib/libgssapi/gss_duplicate_name.3 projects/ppc64/lib/libgssapi/gss_export_name.3 projects/ppc64/lib/libgssapi/gss_export_sec_context.3 projects/ppc64/lib/libgssapi/gss_get_mic.3 projects/ppc64/lib/libgssapi/gss_import_name.3 projects/ppc64/lib/libgssapi/gss_import_sec_context.3 projects/ppc64/lib/libgssapi/gss_indicate_mechs.3 projects/ppc64/lib/libgssapi/gss_init_sec_context.3 projects/ppc64/lib/libgssapi/gss_inquire_context.3 projects/ppc64/lib/libgssapi/gss_inquire_cred.3 projects/ppc64/lib/libgssapi/gss_inquire_cred_by_mech.3 projects/ppc64/lib/libgssapi/gss_inquire_mechs_for_name.3 projects/ppc64/lib/libgssapi/gss_inquire_names_for_mech.3 projects/ppc64/lib/libgssapi/gss_process_context_token.3 projects/ppc64/lib/libgssapi/gss_release_buffer.3 projects/ppc64/lib/libgssapi/gss_release_cred.3 projects/ppc64/lib/libgssapi/gss_release_name.3 projects/ppc64/lib/libgssapi/gss_release_oid_set.3 projects/ppc64/lib/libgssapi/gss_test_oid_set_member.3 projects/ppc64/lib/libgssapi/gss_unwrap.3 projects/ppc64/lib/libgssapi/gss_verify_mic.3 projects/ppc64/lib/libgssapi/gss_wrap.3 projects/ppc64/lib/libgssapi/gss_wrap_size_limit.3 projects/ppc64/lib/libgssapi/gssapi.3 projects/ppc64/lib/libgssapi/mech.5 projects/ppc64/lib/libpam/modules/pam_lastlog/pam_lastlog.8 projects/ppc64/lib/librpcsec_gss/rpc_gss_get_error.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_get_mech_info.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_get_mechanisms.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_get_principal_name.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_get_versions.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_getcred.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_is_installed.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_max_data_length.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_mech_to_oid.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_oid_to_mech.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_qop_to_num.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_seccreate.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_set_callback.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_set_defaults.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_set_svc_name.3 projects/ppc64/lib/librpcsec_gss/rpc_gss_svc_max_data_length.3 projects/ppc64/lib/librpcsec_gss/rpcsec_gss.3 projects/ppc64/lib/libtacplus/taclib.c projects/ppc64/libexec/comsat/comsat.8 projects/ppc64/libexec/ftpd/ftpd.8 projects/ppc64/release/amd64/boot_crunch.conf projects/ppc64/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/ppc64/release/i386/boot_crunch.conf projects/ppc64/release/i386/fixit_crunch.conf projects/ppc64/release/pc98/boot_crunch.conf projects/ppc64/release/pc98/fixit-small_crunch.conf projects/ppc64/release/pc98/fixit_crunch.conf projects/ppc64/release/picobsd/bridge/crunch.conf projects/ppc64/release/picobsd/qemu/crunch.conf projects/ppc64/release/powerpc/boot_crunch.conf projects/ppc64/release/sparc64/boot_crunch.conf projects/ppc64/release/sun4v/boot_crunch.conf projects/ppc64/rescue/rescue/Makefile projects/ppc64/sbin/camcontrol/camcontrol.8 projects/ppc64/sbin/camcontrol/camcontrol.c projects/ppc64/sbin/ifconfig/ifconfig.8 projects/ppc64/sbin/ifconfig/ifconfig.c projects/ppc64/sbin/init/init.8 projects/ppc64/sbin/init/init.c projects/ppc64/sbin/mdconfig/Makefile projects/ppc64/sbin/mdconfig/mdconfig.c projects/ppc64/sbin/mount_nfs/mount_nfs.8 projects/ppc64/sbin/reboot/reboot.8 projects/ppc64/share/doc/usd/Makefile projects/ppc64/share/man/man3/pthread_join.3 projects/ppc64/share/man/man3/sysexits.3 projects/ppc64/share/man/man4/Makefile projects/ppc64/share/man/man4/netintro.4 projects/ppc64/share/man/man4/snd_hda.4 projects/ppc64/share/man/man7/hier.7 projects/ppc64/share/man/man9/Makefile projects/ppc64/share/man/man9/kthread.9 projects/ppc64/share/misc/committers-ports.dot projects/ppc64/share/mk/bsd.lib.mk projects/ppc64/share/mk/sys.mk projects/ppc64/share/security/lomac-policy.contexts projects/ppc64/share/zoneinfo/northamerica projects/ppc64/share/zoneinfo/zone.tab projects/ppc64/sys/amd64/amd64/machdep.c projects/ppc64/sys/amd64/amd64/pmap.c projects/ppc64/sys/amd64/amd64/trap.c projects/ppc64/sys/amd64/ia32/ia32_reg.c projects/ppc64/sys/amd64/ia32/ia32_syscall.c projects/ppc64/sys/cddl/compat/opensolaris/sys/time.h projects/ppc64/sys/conf/ldscript.mips projects/ppc64/sys/contrib/dev/acpica/changes.txt projects/ppc64/sys/contrib/dev/acpica/common/adfile.c projects/ppc64/sys/contrib/dev/acpica/common/adisasm.c projects/ppc64/sys/contrib/dev/acpica/common/adwalk.c projects/ppc64/sys/contrib/dev/acpica/common/dmextern.c projects/ppc64/sys/contrib/dev/acpica/common/dmrestag.c projects/ppc64/sys/contrib/dev/acpica/common/dmtable.c projects/ppc64/sys/contrib/dev/acpica/common/dmtbdump.c projects/ppc64/sys/contrib/dev/acpica/common/dmtbinfo.c projects/ppc64/sys/contrib/dev/acpica/common/getopt.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslcodegen.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslcompile.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/ppc64/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/ppc64/sys/contrib/dev/acpica/compiler/aslcompiler.y projects/ppc64/sys/contrib/dev/acpica/compiler/asldefine.h projects/ppc64/sys/contrib/dev/acpica/compiler/aslerror.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslfiles.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslfold.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslglobal.h projects/ppc64/sys/contrib/dev/acpica/compiler/asllength.c projects/ppc64/sys/contrib/dev/acpica/compiler/asllisting.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslload.c projects/ppc64/sys/contrib/dev/acpica/compiler/asllookup.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslmain.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslmap.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslopcodes.c projects/ppc64/sys/contrib/dev/acpica/compiler/asloperands.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslopt.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslresource.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslrestype1.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslrestype2.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslstartup.c projects/ppc64/sys/contrib/dev/acpica/compiler/aslstubs.c projects/ppc64/sys/contrib/dev/acpica/compiler/asltransform.c projects/ppc64/sys/contrib/dev/acpica/compiler/asltree.c projects/ppc64/sys/contrib/dev/acpica/compiler/asltypes.h projects/ppc64/sys/contrib/dev/acpica/compiler/aslutils.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbcmds.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbdisply.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbexec.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbfileio.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbhistry.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbinput.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbstats.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbutils.c projects/ppc64/sys/contrib/dev/acpica/debugger/dbxface.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmbuffer.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmnames.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmobject.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmopcode.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmresrc.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmresrcl.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmresrcs.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmutils.c projects/ppc64/sys/contrib/dev/acpica/disassembler/dmwalk.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsfield.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsinit.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsmethod.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsmthdat.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsobject.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsopcode.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dsutils.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dswexec.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dswload.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dswscope.c projects/ppc64/sys/contrib/dev/acpica/dispatcher/dswstate.c projects/ppc64/sys/contrib/dev/acpica/events/evevent.c projects/ppc64/sys/contrib/dev/acpica/events/evgpe.c projects/ppc64/sys/contrib/dev/acpica/events/evgpeblk.c projects/ppc64/sys/contrib/dev/acpica/events/evmisc.c projects/ppc64/sys/contrib/dev/acpica/events/evregion.c projects/ppc64/sys/contrib/dev/acpica/events/evrgnini.c projects/ppc64/sys/contrib/dev/acpica/events/evsci.c projects/ppc64/sys/contrib/dev/acpica/events/evxface.c projects/ppc64/sys/contrib/dev/acpica/events/evxfevnt.c projects/ppc64/sys/contrib/dev/acpica/events/evxfregn.c projects/ppc64/sys/contrib/dev/acpica/executer/exconfig.c projects/ppc64/sys/contrib/dev/acpica/executer/exconvrt.c projects/ppc64/sys/contrib/dev/acpica/executer/excreate.c projects/ppc64/sys/contrib/dev/acpica/executer/exdump.c projects/ppc64/sys/contrib/dev/acpica/executer/exfield.c projects/ppc64/sys/contrib/dev/acpica/executer/exfldio.c projects/ppc64/sys/contrib/dev/acpica/executer/exmisc.c projects/ppc64/sys/contrib/dev/acpica/executer/exmutex.c projects/ppc64/sys/contrib/dev/acpica/executer/exnames.c projects/ppc64/sys/contrib/dev/acpica/executer/exoparg1.c projects/ppc64/sys/contrib/dev/acpica/executer/exoparg2.c projects/ppc64/sys/contrib/dev/acpica/executer/exoparg3.c projects/ppc64/sys/contrib/dev/acpica/executer/exoparg6.c projects/ppc64/sys/contrib/dev/acpica/executer/exprep.c projects/ppc64/sys/contrib/dev/acpica/executer/exregion.c projects/ppc64/sys/contrib/dev/acpica/executer/exresnte.c projects/ppc64/sys/contrib/dev/acpica/executer/exresolv.c projects/ppc64/sys/contrib/dev/acpica/executer/exresop.c projects/ppc64/sys/contrib/dev/acpica/executer/exstore.c projects/ppc64/sys/contrib/dev/acpica/executer/exstoren.c projects/ppc64/sys/contrib/dev/acpica/executer/exstorob.c projects/ppc64/sys/contrib/dev/acpica/executer/exsystem.c projects/ppc64/sys/contrib/dev/acpica/executer/exutils.c projects/ppc64/sys/contrib/dev/acpica/hardware/hwacpi.c projects/ppc64/sys/contrib/dev/acpica/hardware/hwgpe.c projects/ppc64/sys/contrib/dev/acpica/hardware/hwregs.c projects/ppc64/sys/contrib/dev/acpica/hardware/hwsleep.c projects/ppc64/sys/contrib/dev/acpica/hardware/hwtimer.c projects/ppc64/sys/contrib/dev/acpica/hardware/hwvalid.c projects/ppc64/sys/contrib/dev/acpica/hardware/hwxface.c projects/ppc64/sys/contrib/dev/acpica/include/acapps.h projects/ppc64/sys/contrib/dev/acpica/include/accommon.h projects/ppc64/sys/contrib/dev/acpica/include/acconfig.h projects/ppc64/sys/contrib/dev/acpica/include/acdebug.h projects/ppc64/sys/contrib/dev/acpica/include/acdisasm.h projects/ppc64/sys/contrib/dev/acpica/include/acdispat.h projects/ppc64/sys/contrib/dev/acpica/include/acevents.h projects/ppc64/sys/contrib/dev/acpica/include/acexcep.h projects/ppc64/sys/contrib/dev/acpica/include/acglobal.h projects/ppc64/sys/contrib/dev/acpica/include/achware.h projects/ppc64/sys/contrib/dev/acpica/include/acinterp.h projects/ppc64/sys/contrib/dev/acpica/include/aclocal.h projects/ppc64/sys/contrib/dev/acpica/include/acmacros.h projects/ppc64/sys/contrib/dev/acpica/include/acnames.h projects/ppc64/sys/contrib/dev/acpica/include/acnamesp.h projects/ppc64/sys/contrib/dev/acpica/include/acobject.h projects/ppc64/sys/contrib/dev/acpica/include/acopcode.h projects/ppc64/sys/contrib/dev/acpica/include/acoutput.h projects/ppc64/sys/contrib/dev/acpica/include/acparser.h projects/ppc64/sys/contrib/dev/acpica/include/acpi.h projects/ppc64/sys/contrib/dev/acpica/include/acpiosxf.h projects/ppc64/sys/contrib/dev/acpica/include/acpixf.h projects/ppc64/sys/contrib/dev/acpica/include/acpredef.h projects/ppc64/sys/contrib/dev/acpica/include/acresrc.h projects/ppc64/sys/contrib/dev/acpica/include/acrestyp.h projects/ppc64/sys/contrib/dev/acpica/include/acstruct.h projects/ppc64/sys/contrib/dev/acpica/include/actables.h projects/ppc64/sys/contrib/dev/acpica/include/actbl.h projects/ppc64/sys/contrib/dev/acpica/include/actbl1.h projects/ppc64/sys/contrib/dev/acpica/include/actbl2.h projects/ppc64/sys/contrib/dev/acpica/include/actypes.h projects/ppc64/sys/contrib/dev/acpica/include/acutils.h projects/ppc64/sys/contrib/dev/acpica/include/amlcode.h projects/ppc64/sys/contrib/dev/acpica/include/amlresrc.h projects/ppc64/sys/contrib/dev/acpica/include/platform/acenv.h projects/ppc64/sys/contrib/dev/acpica/include/platform/acfreebsd.h projects/ppc64/sys/contrib/dev/acpica/include/platform/acgcc.h projects/ppc64/sys/contrib/dev/acpica/namespace/nsaccess.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsalloc.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsdump.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsdumpdv.c projects/ppc64/sys/contrib/dev/acpica/namespace/nseval.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsinit.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsload.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsnames.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsobject.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsparse.c projects/ppc64/sys/contrib/dev/acpica/namespace/nspredef.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsrepair.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsrepair2.c projects/ppc64/sys/contrib/dev/acpica/namespace/nssearch.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsutils.c projects/ppc64/sys/contrib/dev/acpica/namespace/nswalk.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsxfeval.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsxfname.c projects/ppc64/sys/contrib/dev/acpica/namespace/nsxfobj.c projects/ppc64/sys/contrib/dev/acpica/osunixxf.c projects/ppc64/sys/contrib/dev/acpica/parser/psargs.c projects/ppc64/sys/contrib/dev/acpica/parser/psloop.c projects/ppc64/sys/contrib/dev/acpica/parser/psopcode.c projects/ppc64/sys/contrib/dev/acpica/parser/psparse.c projects/ppc64/sys/contrib/dev/acpica/parser/psscope.c projects/ppc64/sys/contrib/dev/acpica/parser/pstree.c projects/ppc64/sys/contrib/dev/acpica/parser/psutils.c projects/ppc64/sys/contrib/dev/acpica/parser/pswalk.c projects/ppc64/sys/contrib/dev/acpica/parser/psxface.c projects/ppc64/sys/contrib/dev/acpica/resources/rsaddr.c projects/ppc64/sys/contrib/dev/acpica/resources/rscalc.c projects/ppc64/sys/contrib/dev/acpica/resources/rscreate.c projects/ppc64/sys/contrib/dev/acpica/resources/rsdump.c projects/ppc64/sys/contrib/dev/acpica/resources/rsinfo.c projects/ppc64/sys/contrib/dev/acpica/resources/rsio.c projects/ppc64/sys/contrib/dev/acpica/resources/rsirq.c projects/ppc64/sys/contrib/dev/acpica/resources/rslist.c projects/ppc64/sys/contrib/dev/acpica/resources/rsmemory.c projects/ppc64/sys/contrib/dev/acpica/resources/rsmisc.c projects/ppc64/sys/contrib/dev/acpica/resources/rsutils.c projects/ppc64/sys/contrib/dev/acpica/resources/rsxface.c projects/ppc64/sys/contrib/dev/acpica/tables/tbfadt.c projects/ppc64/sys/contrib/dev/acpica/tables/tbfind.c projects/ppc64/sys/contrib/dev/acpica/tables/tbinstal.c projects/ppc64/sys/contrib/dev/acpica/tables/tbutils.c projects/ppc64/sys/contrib/dev/acpica/tables/tbxface.c projects/ppc64/sys/contrib/dev/acpica/tables/tbxfroot.c projects/ppc64/sys/contrib/dev/acpica/tools/acpiexec/aecommon.h projects/ppc64/sys/contrib/dev/acpica/utilities/utalloc.c projects/ppc64/sys/contrib/dev/acpica/utilities/utcache.c projects/ppc64/sys/contrib/dev/acpica/utilities/utcopy.c projects/ppc64/sys/contrib/dev/acpica/utilities/utdebug.c projects/ppc64/sys/contrib/dev/acpica/utilities/utdelete.c projects/ppc64/sys/contrib/dev/acpica/utilities/uteval.c projects/ppc64/sys/contrib/dev/acpica/utilities/utglobal.c projects/ppc64/sys/contrib/dev/acpica/utilities/utids.c projects/ppc64/sys/contrib/dev/acpica/utilities/utinit.c projects/ppc64/sys/contrib/dev/acpica/utilities/utlock.c projects/ppc64/sys/contrib/dev/acpica/utilities/utmath.c projects/ppc64/sys/contrib/dev/acpica/utilities/utmisc.c projects/ppc64/sys/contrib/dev/acpica/utilities/utmutex.c projects/ppc64/sys/contrib/dev/acpica/utilities/utobject.c projects/ppc64/sys/contrib/dev/acpica/utilities/utresrc.c projects/ppc64/sys/contrib/dev/acpica/utilities/utstate.c projects/ppc64/sys/contrib/dev/acpica/utilities/uttrack.c projects/ppc64/sys/contrib/dev/acpica/utilities/utxface.c projects/ppc64/sys/dev/acpi_support/acpi_ibm.c projects/ppc64/sys/dev/acpi_support/acpi_panasonic.c projects/ppc64/sys/dev/acpi_support/acpi_wmi.c projects/ppc64/sys/dev/acpica/Osd/OsdHardware.c projects/ppc64/sys/dev/acpica/Osd/OsdSchedule.c projects/ppc64/sys/dev/acpica/acpi_ec.c projects/ppc64/sys/dev/acpica/acpi_hpet.c projects/ppc64/sys/dev/acpica/acpi_if.m projects/ppc64/sys/dev/acpica/acpi_package.c projects/ppc64/sys/dev/acpica/acpi_powerres.c projects/ppc64/sys/dev/acpica/acpi_smbat.c projects/ppc64/sys/dev/acpica/acpivar.h projects/ppc64/sys/dev/ahci/ahci.c projects/ppc64/sys/dev/ata/ata-pci.c projects/ppc64/sys/dev/ata/ata-pci.h projects/ppc64/sys/dev/ata/ata_if.m projects/ppc64/sys/dev/ata/chipsets/ata-marvell.c projects/ppc64/sys/dev/ata/chipsets/ata-promise.c projects/ppc64/sys/dev/bce/if_bce.c projects/ppc64/sys/dev/bce/if_bcereg.h projects/ppc64/sys/dev/bge/if_bge.c projects/ppc64/sys/dev/cfe/cfe_console.c projects/ppc64/sys/dev/cxgb/cxgb_adapter.h projects/ppc64/sys/dev/cxgb/cxgb_main.c projects/ppc64/sys/dev/cxgb/cxgb_sge.c projects/ppc64/sys/dev/e1000/LICENSE projects/ppc64/sys/dev/e1000/e1000_80003es2lan.c projects/ppc64/sys/dev/e1000/e1000_82540.c projects/ppc64/sys/dev/e1000/e1000_82541.c projects/ppc64/sys/dev/e1000/e1000_82542.c projects/ppc64/sys/dev/e1000/e1000_82543.c projects/ppc64/sys/dev/e1000/e1000_82571.c projects/ppc64/sys/dev/e1000/e1000_82575.c projects/ppc64/sys/dev/e1000/e1000_82575.h projects/ppc64/sys/dev/e1000/e1000_api.c projects/ppc64/sys/dev/e1000/e1000_api.h projects/ppc64/sys/dev/e1000/e1000_defines.h projects/ppc64/sys/dev/e1000/e1000_hw.h projects/ppc64/sys/dev/e1000/e1000_ich8lan.c projects/ppc64/sys/dev/e1000/e1000_ich8lan.h projects/ppc64/sys/dev/e1000/e1000_mac.c projects/ppc64/sys/dev/e1000/e1000_mac.h projects/ppc64/sys/dev/e1000/e1000_manage.c projects/ppc64/sys/dev/e1000/e1000_osdep.h projects/ppc64/sys/dev/e1000/e1000_phy.c projects/ppc64/sys/dev/e1000/e1000_phy.h projects/ppc64/sys/dev/e1000/e1000_regs.h projects/ppc64/sys/dev/e1000/if_em.c projects/ppc64/sys/dev/e1000/if_em.h projects/ppc64/sys/dev/e1000/if_igb.c projects/ppc64/sys/dev/e1000/if_igb.h projects/ppc64/sys/dev/fb/vesa.c projects/ppc64/sys/dev/ichwd/ichwd.c projects/ppc64/sys/dev/ichwd/ichwd.h projects/ppc64/sys/dev/ieee488/pcii.c projects/ppc64/sys/dev/ieee488/tnt4882.c projects/ppc64/sys/dev/ieee488/upd7210.c projects/ppc64/sys/dev/ieee488/upd7210.h projects/ppc64/sys/dev/iwn/if_iwn.c projects/ppc64/sys/dev/iwn/if_iwnreg.h projects/ppc64/sys/dev/msk/if_msk.c projects/ppc64/sys/dev/nve/if_nve.c projects/ppc64/sys/dev/re/if_re.c projects/ppc64/sys/dev/sound/pci/hda/hdac.c projects/ppc64/sys/dev/usb/wlan/if_urtw.c projects/ppc64/sys/dev/usb/wlan/if_urtwvar.h projects/ppc64/sys/fs/cd9660/cd9660_vfsops.c projects/ppc64/sys/fs/cd9660/cd9660_vnops.c projects/ppc64/sys/fs/nwfs/nwfs_node.c projects/ppc64/sys/fs/nwfs/nwfs_vnops.c projects/ppc64/sys/fs/pseudofs/pseudofs_vnops.c projects/ppc64/sys/fs/tmpfs/tmpfs_subr.c projects/ppc64/sys/fs/tmpfs/tmpfs_vfsops.c projects/ppc64/sys/geom/eli/g_eli_key.c projects/ppc64/sys/geom/mountver/g_mountver.c projects/ppc64/sys/geom/part/g_part_bsd.c projects/ppc64/sys/geom/part/g_part_vtoc8.c projects/ppc64/sys/geom/vinum/geom_vinum.c projects/ppc64/sys/geom/vinum/geom_vinum_create.c projects/ppc64/sys/geom/virstor/g_virstor.c projects/ppc64/sys/i386/i386/pmap.c projects/ppc64/sys/i386/i386/trap.c projects/ppc64/sys/i386/include/pmap.h projects/ppc64/sys/ia64/ia64/machdep.c projects/ppc64/sys/kern/kern_intr.c projects/ppc64/sys/kern/kern_jail.c projects/ppc64/sys/kern/kern_kthread.c projects/ppc64/sys/kern/kern_mutex.c projects/ppc64/sys/kern/kern_sig.c projects/ppc64/sys/kern/sched_4bsd.c projects/ppc64/sys/kern/sched_ule.c projects/ppc64/sys/kern/sys_process.c projects/ppc64/sys/mips/adm5120/adm5120_machdep.c projects/ppc64/sys/mips/alchemy/alchemy_machdep.c projects/ppc64/sys/mips/atheros/ar71xx_machdep.c projects/ppc64/sys/mips/atheros/ar71xx_spi.c projects/ppc64/sys/mips/atheros/ar71xxreg.h projects/ppc64/sys/mips/atheros/files.ar71xx projects/ppc64/sys/mips/cavium/dev/rgmii/octeon_fpa.c projects/ppc64/sys/mips/cavium/obio.c projects/ppc64/sys/mips/cavium/octeon_machdep.c projects/ppc64/sys/mips/cavium/octeon_pcmap_regs.h projects/ppc64/sys/mips/cavium/uart_bus_octeonusart.c projects/ppc64/sys/mips/cavium/uart_cpu_octeonusart.c projects/ppc64/sys/mips/conf/AR71XX.hints projects/ppc64/sys/mips/conf/OCTEON1 projects/ppc64/sys/mips/conf/OCTEON1-32 projects/ppc64/sys/mips/conf/OCTEON1.hints projects/ppc64/sys/mips/conf/XLR projects/ppc64/sys/mips/idt/idt_machdep.c projects/ppc64/sys/mips/include/cpu.h projects/ppc64/sys/mips/include/cpuregs.h projects/ppc64/sys/mips/include/elf.h projects/ppc64/sys/mips/include/md_var.h projects/ppc64/sys/mips/include/trap.h projects/ppc64/sys/mips/malta/malta_machdep.c projects/ppc64/sys/mips/mips/busdma_machdep.c projects/ppc64/sys/mips/mips/db_trace.c projects/ppc64/sys/mips/mips/elf_trampoline.c projects/ppc64/sys/mips/mips/exception.S projects/ppc64/sys/mips/mips/locore.S projects/ppc64/sys/mips/mips/machdep.c projects/ppc64/sys/mips/mips/swtch.S projects/ppc64/sys/mips/mips/tick.c projects/ppc64/sys/mips/mips/vm_machdep.c projects/ppc64/sys/mips/rmi/clock.c projects/ppc64/sys/mips/rmi/dev/xlr/rge.c projects/ppc64/sys/mips/rmi/intr_machdep.c projects/ppc64/sys/mips/rmi/pic.h projects/ppc64/sys/mips/rmi/xlr_machdep.c projects/ppc64/sys/mips/sentry5/s5_machdep.c projects/ppc64/sys/mips/sibyte/sb_machdep.c projects/ppc64/sys/modules/Makefile projects/ppc64/sys/net/if.c projects/ppc64/sys/net/if.h projects/ppc64/sys/net/if_var.h projects/ppc64/sys/net80211/ieee80211_ioctl.c projects/ppc64/sys/net80211/ieee80211_sta.c projects/ppc64/sys/netinet/sctp_auth.h projects/ppc64/sys/netinet/sctp_header.h projects/ppc64/sys/netinet/sctp_uio.h projects/ppc64/sys/netinet6/in6_pcb.c projects/ppc64/sys/nfsclient/nfs.h projects/ppc64/sys/nfsclient/nfs_bio.c projects/ppc64/sys/nfsclient/nfs_nfsiod.c projects/ppc64/sys/nfsclient/nfs_subs.c projects/ppc64/sys/nfsclient/nfs_vfsops.c projects/ppc64/sys/nfsclient/nfs_vnops.c projects/ppc64/sys/nfsclient/nfsmount.h projects/ppc64/sys/nfsclient/nfsnode.h projects/ppc64/sys/pci/if_rlreg.h projects/ppc64/sys/pci/nfsmb.c projects/ppc64/sys/sparc64/pci/fire.c projects/ppc64/sys/sparc64/sparc64/trap.c projects/ppc64/sys/sys/kthread.h projects/ppc64/sys/sys/param.h projects/ppc64/sys/sys/priv.h projects/ppc64/sys/sys/proc.h projects/ppc64/sys/sys/signalvar.h projects/ppc64/sys/sys/sockio.h projects/ppc64/sys/ufs/ufs/ufs_acl.c projects/ppc64/sys/ufs/ufs/ufs_vnops.c projects/ppc64/tools/build/mk/OptionalObsoleteFiles.inc projects/ppc64/tools/make_libdeps.sh projects/ppc64/usr.bin/Makefile projects/ppc64/usr.bin/at/at.man projects/ppc64/usr.bin/calendar/calendars/calendar.freebsd projects/ppc64/usr.bin/finger/finger.1 projects/ppc64/usr.bin/getent/getent.c projects/ppc64/usr.bin/last/last.1 projects/ppc64/usr.bin/last/last.c projects/ppc64/usr.bin/make/make.1 projects/ppc64/usr.bin/ncplist/ncplist.1 projects/ppc64/usr.bin/talk/talk.1 projects/ppc64/usr.bin/uname/uname.1 projects/ppc64/usr.bin/uname/uname.c projects/ppc64/usr.bin/unifdef/unifdef.c projects/ppc64/usr.bin/users/users.1 projects/ppc64/usr.bin/w/w.1 projects/ppc64/usr.bin/who/who.1 projects/ppc64/usr.sbin/Makefile projects/ppc64/usr.sbin/ac/ac.8 projects/ppc64/usr.sbin/acpi/acpidb/acpidb.c projects/ppc64/usr.sbin/burncd/burncd.c projects/ppc64/usr.sbin/ctm/ctm_smail/ctm_smail.c projects/ppc64/usr.sbin/extattr/rmextattr.c projects/ppc64/usr.sbin/lastlogin/lastlogin.8 projects/ppc64/usr.sbin/lastlogin/lastlogin.c projects/ppc64/usr.sbin/makefs/makefs.8 projects/ppc64/usr.sbin/mergemaster/mergemaster.sh projects/ppc64/usr.sbin/newsyslog/newsyslog.8 projects/ppc64/usr.sbin/newsyslog/newsyslog.c projects/ppc64/usr.sbin/pkg_install/lib/lib.h projects/ppc64/usr.sbin/pkg_install/updating/main.c projects/ppc64/usr.sbin/pkg_install/updating/pkg_updating.1 projects/ppc64/usr.sbin/rwhod/rwhod.8 projects/ppc64/usr.sbin/sysinstall/dist.c projects/ppc64/usr.sbin/ypserv/yp_main.c Directory Properties: projects/ppc64/ (props changed) projects/ppc64/contrib/bind9/ (props changed) projects/ppc64/contrib/expat/ (props changed) projects/ppc64/contrib/groff/ (props changed) projects/ppc64/contrib/one-true-awk/ (props changed) projects/ppc64/contrib/sendmail/ (props changed) projects/ppc64/share/zoneinfo/ (props changed) projects/ppc64/sys/ (props changed) projects/ppc64/sys/contrib/dev/acpica/ (props changed) projects/ppc64/sys/dev/xen/xenpci/ (props changed) Modified: projects/ppc64/Makefile.inc1 ============================================================================== --- projects/ppc64/Makefile.inc1 Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/Makefile.inc1 Thu Jan 28 01:52:23 2010 (r203103) @@ -1105,19 +1105,19 @@ _startup_libs+= lib/libc gnu/lib/libgcc__L: lib/libc__L -_prebuild_libs= ${_kerberos5_lib_libasn1} ${_kerberos5_lib_libkrb5} \ - ${_kerberos5_lib_libhx509} ${_kerberos5_lib_libroken} \ - ${_kerberos5_lib_libheimntlm} ${_kerberos5_lib_libgssapi_krb5} \ - lib/libbz2 lib/libcom_err lib/libcrypt lib/libelf \ +_prebuild_libs= ${_kerberos5_lib_libasn1} ${_kerberos5_lib_libheimntlm} \ + ${_kerberos5_lib_libhx509} ${_kerberos5_lib_libkrb5} \ + ${_kerberos5_lib_libroken} \ + lib/libbz2 lib/libcom_err lib/libcrypt \ lib/libexpat \ - ${_lib_cddl} ${_lib_libgssapi} ${_lib_libipx} \ + ${_lib_libgssapi} ${_lib_libipx} \ lib/libkiconv lib/libkvm lib/libmd \ lib/ncurses/ncurses lib/ncurses/ncursesw \ lib/libopie lib/libpam ${_lib_libthr} \ - lib/libradius lib/libsbuf lib/libtacplus lib/libulog \ + lib/libradius lib/libsbuf lib/libtacplus \ lib/libutil ${_lib_libypclnt} lib/libz lib/msun \ ${_secure_lib_libcrypto} ${_secure_lib_libssh} \ - ${_secure_lib_libssl} lib/libdwarf lib/libproc + ${_secure_lib_libssl} .if ${MK_LIBTHR} != "no" _lib_libthr= lib/libthr @@ -1139,18 +1139,20 @@ lib/libradius__L secure/lib/libssl__L: s .if ${MK_OPENSSH} != "no" _secure_lib_libssh= secure/lib/libssh secure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L -.if ${MK_KERBEROS} != "no" -kerberos5/lib/libgssapi_krb5__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ +.if ${MK_KERBEROS_SUPPORT} != "no" +secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \ - lib/libmd__L kerberos5/lib/libroken__L secure/lib/libcrypto__L \ - lib/libcrypt__L -secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libgssapi_krb5__L + lib/libmd__L kerberos5/lib/libroken__L .endif .endif .endif _secure_lib= secure/lib .endif +.if ${MK_GSSAPI} != "no" +_lib_libgssapi= lib/libgssapi +.endif + .if ${MK_IPX} != "no" _lib_libipx= lib/libipx .endif @@ -1162,8 +1164,6 @@ _kerberos5_lib_libkrb5= kerberos5/lib/li _kerberos5_lib_libhx509= kerberos5/lib/libhx509 _kerberos5_lib_libroken= kerberos5/lib/libroken _kerberos5_lib_libheimntlm= kerberos5/lib/libheimntlm -_kerberos5_lib_libgssapi_krb5= kerberos5/lib/libgssapi_krb5 -_lib_libgssapi= lib/libgssapi .endif .if ${MK_NIS} != "no" Modified: projects/ppc64/ObsoleteFiles.inc ============================================================================== --- projects/ppc64/ObsoleteFiles.inc Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/ObsoleteFiles.inc Thu Jan 28 01:52:23 2010 (r203103) @@ -14,6 +14,16 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20100122: move BSDL bc/dc USD documents to /usr/share/doc/usd +OLD_FILES+=usr/share/doc/papers/bc.ascii.gz +OLD_FILES+=usr/share/doc/papers/dc.ascii.gz +# 20100120: replacing GNU bc/dc with BSDL versions +OLD_FILES+=usr/share/examples/bc/ckbook.b +OLD_FILES+=usr/share/examples/bc/pi.b +OLD_FILES+=usr/share/examples/bc/primes.b +OLD_FILES+=usr/share/examples/bc/twins.b +OLD_FILES+=usr/share/info/dc.info.gz +OLD_DIRS+=usr/share/examples/bc # 20100114: removal of ttyslot(3) OLD_FILES+=usr/share/man/man3/ttyslot.3.gz # 20100113: remove utmp.h, replace it by utmpx.h Modified: projects/ppc64/bin/date/date.1 ============================================================================== --- projects/ppc64/bin/date/date.1 Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/bin/date/date.1 Thu Jan 28 01:52:23 2010 (r203103) @@ -299,7 +299,7 @@ for more information. .El .Sh FILES .Bl -tag -width /var/log/messages -compact -.It Pa /var/log/wtmp +.It Pa /var/log/utx.log record of date resets and time changes .It Pa /var/log/messages record of the user setting the time @@ -406,9 +406,9 @@ fails. .Sh SEE ALSO .Xr locale 1 , .Xr gettimeofday 2 , +.Xr getutxent 3 , .Xr strftime 3 , .Xr strptime 3 , -.Xr utmp 5 , .Xr timed 8 .Rs .%T "TSP: The Time Synchronization Protocol for UNIX 4.3BSD" Modified: projects/ppc64/bin/ls/ls.c ============================================================================== --- projects/ppc64/bin/ls/ls.c Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/bin/ls/ls.c Thu Jan 28 01:52:23 2010 (r203103) @@ -508,7 +508,7 @@ traverse(int argc, char *argv[], int opt break; case FTS_DNR: case FTS_ERR: - warnx("%s: %s", p->fts_name, strerror(p->fts_errno)); + warnx("%s: %s", p->fts_path, strerror(p->fts_errno)); rval = 1; break; case FTS_D: @@ -559,7 +559,8 @@ display(const FTSENT *p, FTSENT *list, i long maxblock; u_long btotal, labelstrlen, maxinode, maxlen, maxnlink; u_long maxlabelstr; - int bcfile, maxflags; + u_int devstrlen; + int maxflags; gid_t maxgroup; uid_t maxuser; size_t flen, ulen, glen; @@ -651,7 +652,7 @@ display(const FTSENT *p, FTSENT *list, i MAKENINES(maxsize); free(jinitmax); } - bcfile = 0; + devstrlen = 0; flags = NULL; for (cur = list, entries = 0; cur; cur = cur->fts_link) { if (cur->fts_info == FTS_ERR || cur->fts_info == FTS_NS) { @@ -791,9 +792,15 @@ label_out: np->group = &np->data[ulen + 1]; (void)strcpy(np->group, group); - if (S_ISCHR(sp->st_mode) || - S_ISBLK(sp->st_mode)) - bcfile = 1; + if ((S_ISCHR(sp->st_mode) || + S_ISBLK(sp->st_mode)) && + devstrlen < DEVSTR_HEX_LEN) { + if (minor(sp->st_rdev) > 255 || + minor(sp->st_rdev) < 0) + devstrlen = DEVSTR_HEX_LEN; + else + devstrlen = DEVSTR_LEN; + } if (f_flags) { np->flags = &np->data[ulen + glen + 2]; @@ -825,7 +832,6 @@ label_out: d.entries = entries; d.maxlen = maxlen; if (needstats) { - d.bcfile = bcfile; d.btotal = btotal; (void)snprintf(buf, sizeof(buf), "%lu", maxblock); d.s_block = strlen(buf); @@ -836,8 +842,14 @@ label_out: d.s_inode = strlen(buf); (void)snprintf(buf, sizeof(buf), "%lu", maxnlink); d.s_nlink = strlen(buf); - (void)snprintf(buf, sizeof(buf), "%ju", maxsize); - d.s_size = strlen(buf); + if (f_humanval) + d.s_size = HUMANVALSTR_LEN; + else { + (void)snprintf(buf, sizeof(buf), "%ju", maxsize); + d.s_size = strlen(buf); + } + if (d.s_size < devstrlen) + d.s_size = devstrlen; d.s_user = maxuser; } printfcn(&d); Modified: projects/ppc64/bin/ls/ls.h ============================================================================== --- projects/ppc64/bin/ls/ls.h Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/bin/ls/ls.h Thu Jan 28 01:52:23 2010 (r203103) @@ -35,6 +35,10 @@ #define NO_PRINT 1 +#define HUMANVALSTR_LEN 5 +#define DEVSTR_LEN 8 +#define DEVSTR_HEX_LEN 15 + extern long blocksize; /* block size units */ extern int f_accesstime; /* use time of last access */ @@ -62,7 +66,6 @@ extern int f_color; /* add type in colo typedef struct { FTSENT *list; u_long btotal; - int bcfile; int entries; int maxlen; u_int s_block; Modified: projects/ppc64/bin/ls/print.c ============================================================================== --- projects/ppc64/bin/ls/print.c Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/bin/ls/print.c Thu Jan 28 01:52:23 2010 (r203103) @@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$"); #include "extern.h" static int printaname(const FTSENT *, u_long, u_long); +static void printdev(size_t, dev_t); static void printlink(const FTSENT *); static void printtime(time_t); static int printtype(u_int); @@ -165,16 +166,7 @@ printlong(const DISPLAY *dp) if (f_label) (void)printf("%-*s ", dp->s_label, np->label); if (S_ISCHR(sp->st_mode) || S_ISBLK(sp->st_mode)) - if (minor(sp->st_rdev) > 255 || minor(sp->st_rdev) < 0) - (void)printf("%3d, 0x%08x ", - major(sp->st_rdev), - (u_int)minor(sp->st_rdev)); - else - (void)printf("%3d, %3d ", - major(sp->st_rdev), minor(sp->st_rdev)); - else if (dp->bcfile) - (void)printf("%*s%*jd ", - 8 - dp->s_size, "", dp->s_size, sp->st_size); + printdev(dp->s_size, sp->st_rdev); else printsize(dp->s_size, sp->st_size); if (f_accesstime) @@ -353,6 +345,24 @@ printaname(const FTSENT *p, u_long inode return (chcnt); } +/* + * Print device special file major and minor numbers. + */ +static void +printdev(size_t width, dev_t dev) +{ + char buf[DEVSTR_HEX_LEN + 1]; + + if (minor(dev) > 255 || minor(dev) < 0) + (void)snprintf(buf, sizeof(buf), "%3d, 0x%08x", + major(dev), (u_int)minor(dev)); + else + (void)snprintf(buf, sizeof(buf), "%3d, %3d", + major(dev), minor(dev)); + + (void)printf("%*s ", (u_int)width, buf); +} + static void printtime(time_t ftime) { @@ -592,11 +602,15 @@ printsize(size_t width, off_t bytes) { if (f_humanval) { - char buf[5]; + /* + * Reserve one space before the size and allocate room for + * the trailing '\0'. + */ + char buf[HUMANVALSTR_LEN - 1 + 1]; humanize_number(buf, sizeof(buf), (int64_t)bytes, "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL); - (void)printf("%5s ", buf); + (void)printf("%*s ", (u_int)width, buf); } else (void)printf("%*jd ", (u_int)width, bytes); } Modified: projects/ppc64/contrib/bind9/CHANGES ============================================================================== --- projects/ppc64/contrib/bind9/CHANGES Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/contrib/bind9/CHANGES Thu Jan 28 01:52:23 2010 (r203103) @@ -1,3 +1,15 @@ + --- 9.6.1-P3 released --- + +2831. [security] Do not attempt to validate or cache + out-of-bailiwick data returned with a secure + answer; it must be re-fetched from its original + source and validated in that context. [RT #20819] + +2828. [security] Cached CNAME or DNAME RR could be returned to clients + without DNSSEC validation. [RT #20737] + +2827. [security] Bogus NXDOMAIN could be cached as if valid. [RT #20712] + --- 9.6.1-P2 released --- 2772. [security] When validating, track whether pending data was from Modified: projects/ppc64/contrib/bind9/FAQ ============================================================================== --- projects/ppc64/contrib/bind9/FAQ Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/contrib/bind9/FAQ Thu Jan 28 01:52:23 2010 (r203103) @@ -153,24 +153,29 @@ A: BIND 9.3 and later: Use TSIG to selec Master 10.0.1.1: key "external" { - algorithm hmac-md5; - secret "xxxxxxxx"; + algorithm hmac-sha256; + secret "xxxxxxxxxxxxxxxxxxxxxxxx"; }; view "internal" { - match-clients { !key external; 10.0.1/24; }; + match-clients { !key external; // reject message ment for the + // external view. + 10.0.1/24; }; // accept from these addresses. ... }; view "external" { match-clients { key external; any; }; - server 10.0.1.2 { keys external; }; + server 10.0.1.2 { keys external; }; // tag messages from the + // external view to the + // other servers for the + // view. recursion no; ... }; Slave 10.0.1.2: key "external" { - algorithm hmac-md5; - secret "xxxxxxxx"; + algorithm hmac-sha256; + secret "xxxxxxxxxxxxxxxxxxxxxxxx"; }; view "internal" { match-clients { !key external; 10.0.1/24; }; @@ -220,13 +225,13 @@ A: You choose one view to be master and Master 10.0.1.1: key "external" { - algorithm hmac-md5; - secret "xxxxxxxx"; + algorithm hmac-sha256; + secret "xxxxxxxxxxxxxxxxxxxxxxxx"; }; key "mykey" { - algorithm hmac-md5; - secret "yyyyyyyy"; + algorithm hmac-sha256; + secret "yyyyyyyyyyyyyyyyyyyyyyyy"; }; view "internal" { @@ -239,7 +244,7 @@ A: You choose one view to be master and type master; file "internal/example.db"; allow-update { key mykey; }; - notify-also { 10.0.1.1; }; + also-notify { 10.0.1.1; }; }; }; @@ -249,7 +254,7 @@ A: You choose one view to be master and type slave; file "external/example.db"; masters { 10.0.1.1; }; - transfer-source { 10.0.1.1; }; + transfer-source 10.0.1.1; // allow-update-forwarding { any; }; // allow-notify { ... }; }; Modified: projects/ppc64/contrib/bind9/FAQ.xml ============================================================================== --- projects/ppc64/contrib/bind9/FAQ.xml Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/contrib/bind9/FAQ.xml Thu Jan 28 01:52:23 2010 (r203103) @@ -17,7 +17,7 @@ - PERFORMANCE OF THIS SOFTWARE. --> - +
Frequently Asked Questions about BIND 9 @@ -319,24 +319,29 @@ Slave: 10.0.1.3 (internal), 10.0.1.4 (ex Master 10.0.1.1: key "external" { - algorithm hmac-md5; - secret "xxxxxxxx"; + algorithm hmac-sha256; + secret "xxxxxxxxxxxxxxxxxxxxxxxx"; }; view "internal" { - match-clients { !key external; 10.0.1/24; }; + match-clients { !key external; // reject message ment for the + // external view. + 10.0.1/24; }; // accept from these addresses. ... }; view "external" { match-clients { key external; any; }; - server 10.0.1.2 { keys external; }; + server 10.0.1.2 { keys external; }; // tag messages from the + // external view to the + // other servers for the + // view. recursion no; ... }; Slave 10.0.1.2: key "external" { - algorithm hmac-md5; - secret "xxxxxxxx"; + algorithm hmac-sha256; + secret "xxxxxxxxxxxxxxxxxxxxxxxx"; }; view "internal" { match-clients { !key external; 10.0.1/24; }; @@ -424,13 +429,13 @@ named-checkzone example.com tmp Master 10.0.1.1: key "external" { - algorithm hmac-md5; - secret "xxxxxxxx"; + algorithm hmac-sha256; + secret "xxxxxxxxxxxxxxxxxxxxxxxx"; }; key "mykey" { - algorithm hmac-md5; - secret "yyyyyyyy"; + algorithm hmac-sha256; + secret "yyyyyyyyyyyyyyyyyyyyyyyy"; }; view "internal" { @@ -443,7 +448,7 @@ Master 10.0.1.1: type master; file "internal/example.db"; allow-update { key mykey; }; - notify-also { 10.0.1.1; }; + also-notify { 10.0.1.1; }; }; }; @@ -453,7 +458,7 @@ Master 10.0.1.1: type slave; file "external/example.db"; masters { 10.0.1.1; }; - transfer-source { 10.0.1.1; }; + transfer-source 10.0.1.1; // allow-update-forwarding { any; }; // allow-notify { ... }; }; Modified: projects/ppc64/contrib/bind9/bin/dnssec/dnssec-signzone.8 ============================================================================== --- projects/ppc64/contrib/bind9/bin/dnssec/dnssec-signzone.8 Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/contrib/bind9/bin/dnssec/dnssec-signzone.8 Thu Jan 28 01:52:23 2010 (r203103) @@ -13,163 +13,287 @@ .\" OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR .\" PERFORMANCE OF THIS SOFTWARE. .\" -.\" $Id: dnssec-signzone.8,v 1.47.44.4 2009/06/09 01:47:19 each Exp $ +.\" $Id: dnssec-signzone.8,v 1.47.44.4.8.1 2009/12/31 23:17:46 tbox Exp $ .\" .hy 0 .ad l -.\"Generated by db2man.xsl. Don't modify this, modify the source. -.de Sh \" Subsection -.br -.if t .Sp -.ne 5 -.PP -\fB\\$1\fR -.PP -.. -.de Sp \" Vertical space (when we can't use .PP) -.if t .sp .5v -.if n .sp -.. -.de Ip \" List item -.br -.ie \\n(.$>=3 .ne \\$3 -.el .ne 3 -.IP "\\$1" \\$2 -.. -.TH "DNSSEC-SIGNZONE" 8 "June 08, 2009" "" "" -.SH NAME -dnssec-signzone \- DNSSEC zone signing tool +.\" Title: dnssec\-signzone +.\" Author: +.\" Generator: DocBook XSL Stylesheets v1.71.1 +.\" Date: June 08, 2009 +.\" Manual: BIND9 +.\" Source: BIND9 +.\" +.TH "DNSSEC\-SIGNZONE" "8" "June 08, 2009" "BIND9" "BIND9" +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.SH "NAME" +dnssec\-signzone \- DNSSEC zone signing tool .SH "SYNOPSIS" .HP 16 -\fBdnssec\-signzone\fR [\fB\-a\fR] [\fB\-c\ \fIclass\fR\fR] [\fB\-d\ \fIdirectory\fR\fR] [\fB\-e\ \fIend\-time\fR\fR] [\fB\-f\ \fIoutput\-file\fR\fR] [\fB\-g\fR] [\fB\-h\fR] [\fB\-k\ \fIkey\fR\fR] [\fB\-l\ \fIdomain\fR\fR] [\fB\-i\ \fIinterval\fR\fR] [\fB\-I\ \fIinput\-format\fR\fR] [\fB\-j\ \fIjitter\fR\fR] [\fB\-N\ \fIsoa\-serial\-format\fR\fR] [\fB\-o\ \fIorigin\fR\fR] [\fB\-O\ \fIoutput\-format\fR\fR] [\fB\-p\fR] [\fB\-r\ \fIrandomdev\fR\fR] [\fB\-s\ \fIstart\-time\fR\fR] [\fB\-t\fR] [\fB\-v\ \fIlevel\fR\fR] [\fB\-z\fR] [\fB\-3\ \fIsalt\fR\fR] [\fB\-H\ \fIiterations\fR\fR] [\fB\-A\fR] {zonefile} [key...] +\fBdnssec\-signzone\fR [\fB\-a\fR] [\fB\-c\ \fR\fB\fIclass\fR\fR] [\fB\-d\ \fR\fB\fIdirectory\fR\fR] [\fB\-e\ \fR\fB\fIend\-time\fR\fR] [\fB\-f\ \fR\fB\fIoutput\-file\fR\fR] [\fB\-g\fR] [\fB\-h\fR] [\fB\-k\ \fR\fB\fIkey\fR\fR] [\fB\-l\ \fR\fB\fIdomain\fR\fR] [\fB\-i\ \fR\fB\fIinterval\fR\fR] [\fB\-I\ \fR\fB\fIinput\-format\fR\fR] [\fB\-j\ \fR\fB\fIjitter\fR\fR] [\fB\-N\ \fR\fB\fIsoa\-serial\-format\fR\fR] [\fB\-o\ \fR\fB\fIorigin\fR\fR] [\fB\-O\ \fR\fB\fIoutput\-format\fR\fR] [\fB\-p\fR] [\fB\-r\ \fR\fB\fIrandomdev\fR\fR] [\fB\-s\ \fR\fB\fIstart\-time\fR\fR] [\fB\-t\fR] [\fB\-v\ \fR\fB\fIlevel\fR\fR] [\fB\-z\fR] [\fB\-3\ \fR\fB\fIsalt\fR\fR] [\fB\-H\ \fR\fB\fIiterations\fR\fR] [\fB\-A\fR] {zonefile} [key...] .SH "DESCRIPTION" .PP -\fBdnssec\-signzone\fR signs a zone\&. It generates NSEC and RRSIG records and produces a signed version of the zone\&. The security status of delegations from the signed zone (that is, whether the child zones are secure or not) is determined by the presence or absence of a \fIkeyset\fR file for each child zone\&. +\fBdnssec\-signzone\fR +signs a zone. It generates NSEC and RRSIG records and produces a signed version of the zone. The security status of delegations from the signed zone (that is, whether the child zones are secure or not) is determined by the presence or absence of a +\fIkeyset\fR +file for each child zone. .SH "OPTIONS" -.TP +.PP \-a -Verify all generated signatures\&. -.TP +.RS 4 +Verify all generated signatures. +.RE +.PP \-c \fIclass\fR -Specifies the DNS class of the zone\&. -.TP +.RS 4 +Specifies the DNS class of the zone. +.RE +.PP \-k \fIkey\fR -Treat specified key as a key signing key ignoring any key flags\&. This option may be specified multiple times\&. -.TP +.RS 4 +Treat specified key as a key signing key ignoring any key flags. This option may be specified multiple times. +.RE +.PP \-l \fIdomain\fR -Generate a DLV set in addition to the key (DNSKEY) and DS sets\&. The domain is appended to the name of the records\&. -.TP +.RS 4 +Generate a DLV set in addition to the key (DNSKEY) and DS sets. The domain is appended to the name of the records. +.RE +.PP \-d \fIdirectory\fR -Look for \fIkeyset\fR files in \fBdirectory\fR as the directory -.TP +.RS 4 +Look for +\fIkeyset\fR +files in +\fBdirectory\fR +as the directory +.RE +.PP \-g -Generate DS records for child zones from keyset files\&. Existing DS records will be removed\&. -.TP +.RS 4 +Generate DS records for child zones from keyset files. Existing DS records will be removed. +.RE +.PP \-s \fIstart\-time\fR -Specify the date and time when the generated RRSIG records become valid\&. This can be either an absolute or relative time\&. An absolute start time is indicated by a number in YYYYMMDDHHMMSS notation; 20000530144500 denotes 14:45:00 UTC on May 30th, 2000\&. A relative start time is indicated by +N, which is N seconds from the current time\&. If no \fBstart\-time\fR is specified, the current time minus 1 hour (to allow for clock skew) is used\&. -.TP +.RS 4 +Specify the date and time when the generated RRSIG records become valid. This can be either an absolute or relative time. An absolute start time is indicated by a number in YYYYMMDDHHMMSS notation; 20000530144500 denotes 14:45:00 UTC on May 30th, 2000. A relative start time is indicated by +N, which is N seconds from the current time. If no +\fBstart\-time\fR +is specified, the current time minus 1 hour (to allow for clock skew) is used. +.RE +.PP \-e \fIend\-time\fR -Specify the date and time when the generated RRSIG records expire\&. As with \fBstart\-time\fR, an absolute time is indicated in YYYYMMDDHHMMSS notation\&. A time relative to the start time is indicated with +N, which is N seconds from the start time\&. A time relative to the current time is indicated with now+N\&. If no \fBend\-time\fR is specified, 30 days from the start time is used as a default\&. -.TP +.RS 4 +Specify the date and time when the generated RRSIG records expire. As with +\fBstart\-time\fR, an absolute time is indicated in YYYYMMDDHHMMSS notation. A time relative to the start time is indicated with +N, which is N seconds from the start time. A time relative to the current time is indicated with now+N. If no +\fBend\-time\fR +is specified, 30 days from the start time is used as a default. +.RE +.PP \-f \fIoutput\-file\fR -The name of the output file containing the signed zone\&. The default is to append \fI\&.signed\fR to the input filename\&. -.TP +.RS 4 +The name of the output file containing the signed zone. The default is to append +\fI.signed\fR +to the input filename. +.RE +.PP \-h -Prints a short summary of the options and arguments to \fBdnssec\-signzone\fR\&. -.TP +.RS 4 +Prints a short summary of the options and arguments to +\fBdnssec\-signzone\fR. +.RE +.PP \-i \fIinterval\fR -When a previously\-signed zone is passed as input, records may be resigned\&. The \fBinterval\fR option specifies the cycle interval as an offset from the current time (in seconds)\&. If a RRSIG record expires after the cycle interval, it is retained\&. Otherwise, it is considered to be expiring soon, and it will be replaced\&. -The default cycle interval is one quarter of the difference between the signature end and start times\&. So if neither \fBend\-time\fR or \fBstart\-time\fR are specified, \fBdnssec\-signzone\fR generates signatures that are valid for 30 days, with a cycle interval of 7\&.5 days\&. Therefore, if any existing RRSIG records are due to expire in less than 7\&.5 days, they would be replaced\&. -.TP +.RS 4 +When a previously\-signed zone is passed as input, records may be resigned. The +\fBinterval\fR +option specifies the cycle interval as an offset from the current time (in seconds). If a RRSIG record expires after the cycle interval, it is retained. Otherwise, it is considered to be expiring soon, and it will be replaced. +.sp +The default cycle interval is one quarter of the difference between the signature end and start times. So if neither +\fBend\-time\fR +or +\fBstart\-time\fR +are specified, +\fBdnssec\-signzone\fR +generates signatures that are valid for 30 days, with a cycle interval of 7.5 days. Therefore, if any existing RRSIG records are due to expire in less than 7.5 days, they would be replaced. +.RE +.PP \-I \fIinput\-format\fR -The format of the input zone file\&. Possible formats are \fB"text"\fR (default) and \fB"raw"\fR\&. This option is primarily intended to be used for dynamic signed zones so that the dumped zone file in a non\-text format containing updates can be signed directly\&. The use of this option does not make much sense for non\-dynamic zones\&. -.TP +.RS 4 +The format of the input zone file. Possible formats are +\fB"text"\fR +(default) and +\fB"raw"\fR. This option is primarily intended to be used for dynamic signed zones so that the dumped zone file in a non\-text format containing updates can be signed directly. The use of this option does not make much sense for non\-dynamic zones. +.RE +.PP \-j \fIjitter\fR -When signing a zone with a fixed signature lifetime, all RRSIG records issued at the time of signing expires simultaneously\&. If the zone is incrementally signed, i\&.e\&. a previously\-signed zone is passed as input to the signer, all expired signatures have to be regenerated at about the same time\&. The \fBjitter\fR option specifies a jitter window that will be used to randomize the signature expire time, thus spreading incremental signature regeneration over time\&. -Signature lifetime jitter also to some extent benefits validators and servers by spreading out cache expiration, i\&.e\&. if large numbers of RRSIGs don't expire at the same time from all caches there will be less congestion than if all validators need to refetch at mostly the same time\&. -.TP +.RS 4 +When signing a zone with a fixed signature lifetime, all RRSIG records issued at the time of signing expires simultaneously. If the zone is incrementally signed, i.e. a previously\-signed zone is passed as input to the signer, all expired signatures have to be regenerated at about the same time. The +\fBjitter\fR +option specifies a jitter window that will be used to randomize the signature expire time, thus spreading incremental signature regeneration over time. +.sp +Signature lifetime jitter also to some extent benefits validators and servers by spreading out cache expiration, i.e. if large numbers of RRSIGs don't expire at the same time from all caches there will be less congestion than if all validators need to refetch at mostly the same time. +.RE +.PP \-n \fIncpus\fR -Specifies the number of threads to use\&. By default, one thread is started for each detected CPU\&. -.TP +.RS 4 +Specifies the number of threads to use. By default, one thread is started for each detected CPU. +.RE +.PP \-N \fIsoa\-serial\-format\fR -The SOA serial number format of the signed zone\&. Possible formats are \fB"keep"\fR (default), \fB"increment"\fR and \fB"unixtime"\fR\&. -.RS -.TP +.RS 4 +The SOA serial number format of the signed zone. Possible formats are +\fB"keep"\fR +(default), +\fB"increment"\fR +and +\fB"unixtime"\fR. +.RS 4 +.PP \fB"keep"\fR -Do not modify the SOA serial number\&. -.TP +.RS 4 +Do not modify the SOA serial number. +.RE +.PP \fB"increment"\fR -Increment the SOA serial number using RFC 1982 arithmetics\&. -.TP +.RS 4 +Increment the SOA serial number using RFC 1982 arithmetics. +.RE +.PP \fB"unixtime"\fR -Set the SOA serial number to the number of seconds since epoch\&. +.RS 4 +Set the SOA serial number to the number of seconds since epoch. .RE -.IP -.TP +.RE +.RE +.PP \-o \fIorigin\fR -The zone origin\&. If not specified, the name of the zone file is assumed to be the origin\&. -.TP +.RS 4 +The zone origin. If not specified, the name of the zone file is assumed to be the origin. +.RE +.PP \-O \fIoutput\-format\fR -The format of the output file containing the signed zone\&. Possible formats are \fB"text"\fR (default) and \fB"raw"\fR\&. -.TP +.RS 4 +The format of the output file containing the signed zone. Possible formats are +\fB"text"\fR +(default) and +\fB"raw"\fR. +.RE +.PP \-p -Use pseudo\-random data when signing the zone\&. This is faster, but less secure, than using real random data\&. This option may be useful when signing large zones or when the entropy source is limited\&. -.TP +.RS 4 +Use pseudo\-random data when signing the zone. This is faster, but less secure, than using real random data. This option may be useful when signing large zones or when the entropy source is limited. +.RE +.PP \-r \fIrandomdev\fR -Specifies the source of randomness\&. If the operating system does not provide a \fI/dev/random\fR or equivalent device, the default source of randomness is keyboard input\&. \fIrandomdev\fR specifies the name of a character device or file containing random data to be used instead of the default\&. The special value \fIkeyboard\fR indicates that keyboard input should be used\&. -.TP +.RS 4 +Specifies the source of randomness. If the operating system does not provide a +\fI/dev/random\fR +or equivalent device, the default source of randomness is keyboard input. +\fIrandomdev\fR +specifies the name of a character device or file containing random data to be used instead of the default. The special value +\fIkeyboard\fR +indicates that keyboard input should be used. +.RE +.PP \-t -Print statistics at completion\&. -.TP +.RS 4 +Print statistics at completion. +.RE +.PP \-v \fIlevel\fR -Sets the debugging level\&. -.TP +.RS 4 +Sets the debugging level. +.RE +.PP \-z -Ignore KSK flag on key when determining what to sign\&. -.TP +.RS 4 +Ignore KSK flag on key when determining what to sign. +.RE +.PP \-3 \fIsalt\fR -Generate a NSEC3 chain with the given hex encoded salt\&. A dash (\fIsalt\fR) can be used to indicate that no salt is to be used when generating the NSEC3 chain\&. -.TP +.RS 4 +Generate a NSEC3 chain with the given hex encoded salt. A dash (\fIsalt\fR) can be used to indicate that no salt is to be used when generating the NSEC3 chain. +.RE +.PP \-H \fIiterations\fR -When generating a NSEC3 chain use this many interations\&. The default is 100\&. -.TP +.RS 4 +When generating a NSEC3 chain use this many interations. The default is 100. +.RE +.PP \-A -When generating a NSEC3 chain set the OPTOUT flag on all NSEC3 records and do not generate NSEC3 records for insecure delegations\&. -.TP +.RS 4 +When generating a NSEC3 chain set the OPTOUT flag on all NSEC3 records and do not generate NSEC3 records for insecure delegations. +.RE +.PP zonefile -The file containing the zone to be signed\&. -.TP +.RS 4 +The file containing the zone to be signed. +.RE +.PP key -Specify which keys should be used to sign the zone\&. If no keys are specified, then the zone will be examined for DNSKEY records at the zone apex\&. If these are found and there are matching private keys, in the current directory, then these will be used for signing\&. +.RS 4 +Specify which keys should be used to sign the zone. If no keys are specified, then the zone will be examined for DNSKEY records at the zone apex. If these are found and there are matching private keys, in the current directory, then these will be used for signing. +.RE .SH "EXAMPLE" .PP -The following command signs the \fBexample\&.com\fR zone with the DSA key generated by \fBdnssec\-keygen\fR (Kexample\&.com\&.+003+17247)\&. The zone's keys must be in the master file (\fIdb\&.example\&.com\fR)\&. This invocation looks for \fIkeyset\fR files, in the current directory, so that DS records can be generated from them (\fB\-g\fR)\&. +The following command signs the +\fBexample.com\fR +zone with the DSA key generated by +\fBdnssec\-keygen\fR +(Kexample.com.+003+17247). The zone's keys must be in the master file (\fIdb.example.com\fR). This invocation looks for +\fIkeyset\fR +files, in the current directory, so that DS records can be generated from them (\fB\-g\fR). +.sp +.RS 4 .nf -% dnssec\-signzone \-g \-o example\&.com db\&.example\&.com \\ -Kexample\&.com\&.+003+17247 -db\&.example\&.com\&.signed +% dnssec\-signzone \-g \-o example.com db.example.com \\ +Kexample.com.+003+17247 +db.example.com.signed % .fi +.RE .PP -In the above example, \fBdnssec\-signzone\fR creates the file \fIdb\&.example\&.com\&.signed\fR\&. This file should be referenced in a zone statement in a \fInamed\&.conf\fR file\&. -.PP -This example re\-signs a previously signed zone with default parameters\&. The private keys are assumed to be in the current directory\&. +In the above example, +\fBdnssec\-signzone\fR +creates the file +\fIdb.example.com.signed\fR. This file should be referenced in a zone statement in a +\fInamed.conf\fR +file. +.PP +This example re\-signs a previously signed zone with default parameters. The private keys are assumed to be in the current directory. +.sp +.RS 4 .nf -% cp db\&.example\&.com\&.signed db\&.example\&.com -% dnssec\-signzone \-o example\&.com db\&.example\&.com -db\&.example\&.com\&.signed +% cp db.example.com.signed db.example.com +% dnssec\-signzone \-o example.com db.example.com +db.example.com.signed % .fi +.RE .SH "KNOWN BUGS" .PP - \fBdnssec\-signzone\fR was designed so that it could sign a zone partially, using only a subset of the DNSSEC keys needed to produce a fully\-signed zone\&. This permits a zone administrator, for example, to sign a zone with one key on one machine, move the resulting partially\-signed zone to a second machine, and sign it again with a second key\&. -.PP -An unfortunate side\-effect of this flexibility is that \fBdnssec\-signzone\fR does not check to make sure it's signing a zone with any valid keys at all\&. An attempt to sign a zone without any keys will appear to succeed, producing a "signed" zone with no signatures\&. There is no warning issued when a zone is not fully signed\&. +\fBdnssec\-signzone\fR +was designed so that it could sign a zone partially, using only a subset of the DNSSEC keys needed to produce a fully\-signed zone. This permits a zone administrator, for example, to sign a zone with one key on one machine, move the resulting partially\-signed zone to a second machine, and sign it again with a second key. .PP -This will be corrected in a future release\&. In the meantime, ISC recommends examining the output of \fBdnssec\-signzone\fR to confirm that the zone is properly signed by all keys before using it\&. +An unfortunate side\-effect of this flexibility is that +\fBdnssec\-signzone\fR +does not check to make sure it's signing a zone with any valid keys at all. An attempt to sign a zone without any keys will appear to succeed, producing a "signed" zone with no signatures. There is no warning issued when a zone is not fully signed. +.PP +This will be corrected in a future release. In the meantime, ISC recommends examining the output of +\fBdnssec\-signzone\fR +to confirm that the zone is properly signed by all keys before using it. .SH "SEE ALSO" .PP -\fBdnssec\-keygen\fR(8), BIND 9 Administrator Reference Manual, RFC 4033\&. +\fBdnssec\-keygen\fR(8), +BIND 9 Administrator Reference Manual, +RFC 4033. .SH "AUTHOR" .PP -Internet Systems Consortium +Internet Systems Consortium +.SH "COPYRIGHT" +Copyright \(co 2004\-2009 Internet Systems Consortium, Inc. ("ISC") +.br +Copyright \(co 2000\-2003 Internet Software Consortium. +.br Modified: projects/ppc64/contrib/bind9/bin/dnssec/dnssec-signzone.html ============================================================================== --- projects/ppc64/contrib/bind9/bin/dnssec/dnssec-signzone.html Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/contrib/bind9/bin/dnssec/dnssec-signzone.html Thu Jan 28 01:52:23 2010 (r203103) @@ -14,12 +14,12 @@ - OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. --> - + dnssec-signzone - +
@@ -32,7 +32,7 @@

dnssec-signzone [-a] [-c class] [-d directory] [-e end-time] [-f output-file] [-g] [-h] [-k key] [-l domain] [-i interval] [-I input-format] [-j jitter] [-N soa-seria l-format] [-o origin] [-O output-format] [-p] [-r randomdev] [-s start-time] [-t] [-v level] [-z] [-3 salt] [-H iterations] [-A] {zonefile} [key...]

-

DESCRIPTION

+

DESCRIPTION

dnssec-signzone signs a zone. It generates NSEC and RRSIG records and produces a signed version of the @@ -43,7 +43,7 @@

-

OPTIONS

+

OPTIONS

-a

@@ -258,7 +258,7 @@

-

EXAMPLE

+

EXAMPLE

The following command signs the example.com zone with the DSA key generated by dnssec-keygen @@ -287,7 +287,7 @@ db.example.com.signed %

-

KNOWN BUGS

+

KNOWN BUGS

dnssec-signzone was designed so that it could sign a zone partially, using only a subset of the DNSSEC keys @@ -312,14 +312,14 @@ db.example.com.signed

-

SEE ALSO

+

SEE ALSO

dnssec-keygen(8), BIND 9 Administrator Reference Manual, RFC 4033.

-

AUTHOR

+

AUTHOR

Internet Systems Consortium

Modified: projects/ppc64/contrib/bind9/bin/named/query.c ============================================================================== --- projects/ppc64/contrib/bind9/bin/named/query.c Thu Jan 28 01:47:31 2010 (r203102) +++ projects/ppc64/contrib/bind9/bin/named/query.c Thu Jan 28 01:52:23 2010 (r203103) @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: query.c,v 1.313.20.7.12.1 2009/11/18 23:58:04 marka Exp $ */ +/* $Id: query.c,v 1.313.20.7.12.4 2009/12/31 22:53:03 each Exp $ */ /*! \file */ @@ -1160,7 +1160,8 @@ query_addadditional(void *arg, dns_name_ goto cleanup; } result = dns_db_find(db, name, version, type, - client->query.dboptions | DNS_DBFIND_GLUEOK, + client->query.dboptions | + DNS_DBFIND_GLUEOK | DNS_DBFIND_ADDITIONALOK, client->now, &node, fname, rdataset, sigrdataset); if (result == DNS_R_GLUE && @@ -1645,7 +1646,8 @@ query_addadditional2(void *arg, dns_name goto try_glue; result = dns_db_find(db, name, version, type, - client->query.dboptions | DNS_DBFIND_GLUEOK, + client->query.dboptions | + DNS_DBFIND_GLUEOK | DNS_DBFIND_ADDITIONALOK, client->now, &node, fname, NULL, NULL); if (result == ISC_R_SUCCESS) goto found; @@ -3718,8 +3720,6 @@ query_find(ns_client_t *client, dns_fetc dns_rdataset_t *noqname; isc_boolean_t resuming; int line = -1; - dns_rdataset_t tmprdataset; - unsigned int dboptions; CTRACE("query_find"); @@ -3937,49 +3937,9 @@ query_find(ns_client_t *client, dns_fetc /* * Now look for an answer in the database. */ - dboptions = client->query.dboptions; - if (sigrdataset == NULL && client->view->enablednssec) { - /* - * If the client doesn't want DNSSEC we still want to - * look for any data pending validation to save a remote - * lookup if possible. - */ - dns_rdataset_init(&tmprdataset); - sigrdataset = &tmprdataset; - dboptions |= DNS_DBFIND_PENDINGOK; - } - refind: result = dns_db_find(db, client->query.qname, version, type, - dboptions, client->now, &node, fname, - rdataset, sigrdataset); - /* - * If we have found pending data try to validate it. - * If the data does not validate as secure and we can't - * use the unvalidated data requery the database with - * pending disabled to prevent infinite looping. - */ - if (result != ISC_R_SUCCESS || !DNS_TRUST_PENDING(rdataset->trust)) - goto validation_done; - if (validate(client, db, fname, rdataset, sigrdataset)) - goto validation_done; - if (rdataset->trust != dns_trust_pending_answer || - !PENDINGOK(client->query.dboptions)) { - dns_rdataset_disassociate(rdataset); - if (sigrdataset != NULL && - dns_rdataset_isassociated(sigrdataset)) - dns_rdataset_disassociate(sigrdataset); - if (sigrdataset == &tmprdataset) - sigrdataset = NULL; - dns_db_detachnode(db, &node); - dboptions &= ~DNS_DBFIND_PENDINGOK; - goto refind; - } - validation_done: - if (sigrdataset == &tmprdataset) { - if (dns_rdataset_isassociated(sigrdataset)) - dns_rdataset_disassociate(sigrdataset); - sigrdataset = NULL; - } + client->query.dboptions, client->now, + &node, fname, rdataset, sigrdataset); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Jan 28 02:14:49 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7222D106566C; Thu, 28 Jan 2010 02:14:49 +0000 (UTC) (envelope-from lstewart@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 580148FC0C; Thu, 28 Jan 2010 02:14:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0S2En8x097607; Thu, 28 Jan 2010 02:14:49 GMT (envelope-from lstewart@svn.freebsd.org) Received: (from lstewart@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0S2EmqW097576; Thu, 28 Jan 2010 02:14:48 GMT (envelope-from lstewart@svn.freebsd.org) Message-Id: <201001280214.o0S2EmqW097576@svn.freebsd.org> From: Lawrence Stewart Date: Thu, 28 Jan 2010 02:14:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203104 - in projects/tcp_ffcaia2008_head: . bin bin/cp bin/csh bin/date bin/getfacl bin/kenv bin/ls bin/pax bin/pkill bin/ps bin/pwait bin/setfacl bin/sh cddl/contrib/opensolaris/cmd/z... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jan 2010 02:14:49 -0000 Author: lstewart Date: Thu Jan 28 02:14:45 2010 New Revision: 203104 URL: http://svn.freebsd.org/changeset/base/203104 Log: Merge r198700:203101 from head. Sponsored by: FreeBSD Foundation Added: projects/tcp_ffcaia2008_head/bin/pwait/ - copied from r203101, head/bin/pwait/ projects/tcp_ffcaia2008_head/contrib/ntp/html/build/hints/solaris.xtra.4095849 - copied unchanged from r203101, head/contrib/ntp/html/build/hints/solaris.xtra.4095849 projects/tcp_ffcaia2008_head/etc/devd/uath.conf - copied unchanged from r203101, head/etc/devd/uath.conf projects/tcp_ffcaia2008_head/etc/etc.pc98/ - copied from r203101, head/etc/etc.pc98/ projects/tcp_ffcaia2008_head/include/semaphore.h - copied unchanged from r203101, head/include/semaphore.h projects/tcp_ffcaia2008_head/include/termios.h - copied unchanged from r203101, head/include/termios.h projects/tcp_ffcaia2008_head/include/utmpx.h - copied unchanged from r203101, head/include/utmpx.h projects/tcp_ffcaia2008_head/lib/csu/i386-elf/crt1_c.c - copied unchanged from r203101, head/lib/csu/i386-elf/crt1_c.c projects/tcp_ffcaia2008_head/lib/csu/i386-elf/crt1_s.S - copied unchanged from r203101, head/lib/csu/i386-elf/crt1_s.S projects/tcp_ffcaia2008_head/lib/libarchive/archive_crc32.h - copied unchanged from r203101, head/lib/libarchive/archive_crc32.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_entry_xattr.c - copied unchanged from r203101, head/lib/libarchive/archive_entry_xattr.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_hash.h - copied unchanged from r203101, head/lib/libarchive/archive_hash.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_compression_uu.c - copied unchanged from r203101, head/lib/libarchive/archive_read_support_compression_uu.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_format_zip.c - copied unchanged from r203101, head/lib/libarchive/archive_write_set_format_zip.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_compat_cpio.c - copied unchanged from r203101, head/lib/libarchive/test/test_compat_cpio.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_compat_cpio_1.cpio.uu - copied unchanged from r203101, head/lib/libarchive/test/test_compat_cpio_1.cpio.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_compat_lzma.c - copied unchanged from r203101, head/lib/libarchive/test/test_compat_lzma.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_compat_lzma_1.tlz.uu - copied unchanged from r203101, head/lib/libarchive/test/test_compat_lzma_1.tlz.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_compat_lzma_2.tlz.uu - copied unchanged from r203101, head/lib/libarchive/test/test_compat_lzma_2.tlz.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_compat_lzma_3.tlz.uu - copied unchanged from r203101, head/lib/libarchive/test/test_compat_lzma_3.tlz.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_fuzz_1.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_fuzz_1.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_ar.ar.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_ar.ar.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_cpio_bin_lzma.c - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_cpio_bin_lzma.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_joliet.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso_joliet.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso_joliet_long.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso_joliet_rockridge.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_multi_extent.c - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso_multi_extent.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso_multi_extent.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_rockridge.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso_rockridge.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso_rockridge_ce.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso_rockridge_new.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso_rockridge_rr_moved.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_zisofs.iso.Z.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_iso_zisofs.iso.Z.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isojoliet_long.c - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_isojoliet_long.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isojoliet_rr.c - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_isojoliet_rr.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isorr_ce.c - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_isorr_ce.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isorr_new_bz2.c - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_isorr_new_bz2.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isorr_rr_moved.c - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_isorr_rr_moved.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isozisofs_bz2.c - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_isozisofs_bz2.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_mtree.mtree.uu - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_mtree.mtree.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_tlz.c - copied unchanged from r203101, head/lib/libarchive/test/test_read_format_tlz.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_uu.c - copied unchanged from r203101, head/lib/libarchive/test/test_read_uu.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_disk_symlink.c - copied unchanged from r203101, head/lib/libarchive/test/test_write_disk_symlink.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_format_zip.c - copied unchanged from r203101, head/lib/libarchive/test/test_write_format_zip.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_format_zip_empty.c - copied unchanged from r203101, head/lib/libarchive/test/test_write_format_zip_empty.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_format_zip_no_compression.c - copied unchanged from r203101, head/lib/libarchive/test/test_write_format_zip_no_compression.c projects/tcp_ffcaia2008_head/lib/libc/gen/_once_stub.c - copied unchanged from r203101, head/lib/libc/gen/_once_stub.c projects/tcp_ffcaia2008_head/lib/libc/gen/getutxent.3 - copied unchanged from r203101, head/lib/libc/gen/getutxent.3 projects/tcp_ffcaia2008_head/lib/libc/gen/getutxent.c - copied unchanged from r203101, head/lib/libc/gen/getutxent.c projects/tcp_ffcaia2008_head/lib/libc/gen/pututxline.c - copied unchanged from r203101, head/lib/libc/gen/pututxline.c projects/tcp_ffcaia2008_head/lib/libc/gen/sem_new.c - copied unchanged from r203101, head/lib/libc/gen/sem_new.c projects/tcp_ffcaia2008_head/lib/libc/gen/utxdb.c - copied unchanged from r203101, head/lib/libc/gen/utxdb.c projects/tcp_ffcaia2008_head/lib/libc/gen/utxdb.h - copied unchanged from r203101, head/lib/libc/gen/utxdb.h projects/tcp_ffcaia2008_head/lib/libc/mips/gen/hardfloat/ - copied from r203101, head/lib/libc/mips/gen/hardfloat/ projects/tcp_ffcaia2008_head/lib/libc/nls/ja_JP.UTF-8.msg - copied unchanged from r203101, head/lib/libc/nls/ja_JP.UTF-8.msg projects/tcp_ffcaia2008_head/lib/libc/nls/ja_JP.eucJP.msg - copied unchanged from r203101, head/lib/libc/nls/ja_JP.eucJP.msg projects/tcp_ffcaia2008_head/lib/libpmc/pmc.xscale.3 - copied unchanged from r203101, head/lib/libpmc/pmc.xscale.3 projects/tcp_ffcaia2008_head/lib/libulog/ - copied from r203101, head/lib/libulog/ projects/tcp_ffcaia2008_head/libexec/ulog-helper/ - copied from r203101, head/libexec/ulog-helper/ projects/tcp_ffcaia2008_head/release/picobsd/floppy.tree/sbin/ - copied from r203101, head/release/picobsd/floppy.tree/sbin/ projects/tcp_ffcaia2008_head/release/picobsd/qemu/ - copied from r203101, head/release/picobsd/qemu/ projects/tcp_ffcaia2008_head/sbin/geom/class/cache/gcache.8 - copied unchanged from r203101, head/sbin/geom/class/cache/gcache.8 projects/tcp_ffcaia2008_head/sbin/geom/class/mountver/ - copied from r203101, head/sbin/geom/class/mountver/ projects/tcp_ffcaia2008_head/share/doc/usd/05.dc/ - copied from r203101, head/share/doc/usd/05.dc/ projects/tcp_ffcaia2008_head/share/doc/usd/06.bc/ - copied from r203101, head/share/doc/usd/06.bc/ projects/tcp_ffcaia2008_head/share/examples/ses/srcs/eltsub.h - copied unchanged from r203101, head/share/examples/ses/srcs/eltsub.h projects/tcp_ffcaia2008_head/share/man/man3/pthread_affinity_np.3 - copied unchanged from r203101, head/share/man/man3/pthread_affinity_np.3 projects/tcp_ffcaia2008_head/share/man/man3/pthread_attr_affinity_np.3 - copied unchanged from r203101, head/share/man/man3/pthread_attr_affinity_np.3 projects/tcp_ffcaia2008_head/share/man/man4/ada.4 - copied unchanged from r203101, head/share/man/man4/ada.4 projects/tcp_ffcaia2008_head/share/man/man4/amdsbwd.4 - copied unchanged from r203101, head/share/man/man4/amdsbwd.4 projects/tcp_ffcaia2008_head/share/man/man4/atp.4 - copied unchanged from r203101, head/share/man/man4/atp.4 projects/tcp_ffcaia2008_head/share/man/man4/gpib.4 - copied unchanged from r203101, head/share/man/man4/gpib.4 projects/tcp_ffcaia2008_head/share/man/man4/ipwfw.4 - copied unchanged from r203101, head/share/man/man4/ipwfw.4 projects/tcp_ffcaia2008_head/share/man/man4/iwifw.4 - copied unchanged from r203101, head/share/man/man4/iwifw.4 projects/tcp_ffcaia2008_head/share/man/man4/man4.powerpc/adb.4 - copied unchanged from r203101, head/share/man/man4/man4.powerpc/adb.4 projects/tcp_ffcaia2008_head/share/man/man4/man4.powerpc/akbd.4 - copied unchanged from r203101, head/share/man/man4/man4.powerpc/akbd.4 projects/tcp_ffcaia2008_head/share/man/man4/man4.powerpc/ams.4 - copied unchanged from r203101, head/share/man/man4/man4.powerpc/ams.4 projects/tcp_ffcaia2008_head/share/man/man4/man4.powerpc/cuda.4 - copied unchanged from r203101, head/share/man/man4/man4.powerpc/cuda.4 projects/tcp_ffcaia2008_head/share/man/man4/mk48txx.4 - copied unchanged from r203101, head/share/man/man4/mk48txx.4 projects/tcp_ffcaia2008_head/share/man/man4/nvram.4 - copied unchanged from r203101, head/share/man/man4/nvram.4 projects/tcp_ffcaia2008_head/share/man/man4/pcii.4 - copied unchanged from r203101, head/share/man/man4/pcii.4 projects/tcp_ffcaia2008_head/share/man/man4/siba.4 - copied unchanged from r203101, head/share/man/man4/siba.4 projects/tcp_ffcaia2008_head/share/man/man4/tnt4882.4 - copied unchanged from r203101, head/share/man/man4/tnt4882.4 projects/tcp_ffcaia2008_head/share/man/man4/uhso.4 - copied unchanged from r203101, head/share/man/man4/uhso.4 projects/tcp_ffcaia2008_head/sys/arm/arm/cpufunc_asm_fa526.S - copied unchanged from r203101, head/sys/arm/arm/cpufunc_asm_fa526.S projects/tcp_ffcaia2008_head/sys/arm/conf/CNS11XXNAS - copied unchanged from r203101, head/sys/arm/conf/CNS11XXNAS projects/tcp_ffcaia2008_head/sys/arm/econa/ - copied from r203101, head/sys/arm/econa/ projects/tcp_ffcaia2008_head/sys/boot/common/md.c - copied unchanged from r203101, head/sys/boot/common/md.c projects/tcp_ffcaia2008_head/sys/boot/efi/libefi/efipart.c - copied unchanged from r203101, head/sys/boot/efi/libefi/efipart.c projects/tcp_ffcaia2008_head/sys/boot/i386/libi386/spinconsole.c - copied unchanged from r203101, head/sys/boot/i386/libi386/spinconsole.c projects/tcp_ffcaia2008_head/sys/boot/i386/zfsloader/ - copied from r203101, head/sys/boot/i386/zfsloader/ projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/boot1.S - copied unchanged from r203101, head/sys/boot/pc98/boot2/boot1.S projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/boot2.c - copied unchanged from r203101, head/sys/boot/pc98/boot2/boot2.c projects/tcp_ffcaia2008_head/sys/boot/pc98/libpc98/libpc98.h - copied unchanged from r203101, head/sys/boot/pc98/libpc98/libpc98.h projects/tcp_ffcaia2008_head/sys/boot/pc98/libpc98/pc98_sys.c - copied unchanged from r203101, head/sys/boot/pc98/libpc98/pc98_sys.c projects/tcp_ffcaia2008_head/sys/compat/linux/linux_videodev.h - copied unchanged from r203101, head/sys/compat/linux/linux_videodev.h projects/tcp_ffcaia2008_head/sys/compat/linux/linux_videodev_compat.h - copied unchanged from r203101, head/sys/compat/linux/linux_videodev_compat.h projects/tcp_ffcaia2008_head/sys/conf/ldscript.mips.mips64 - copied unchanged from r203101, head/sys/conf/ldscript.mips.mips64 projects/tcp_ffcaia2008_head/sys/conf/ldscript.mips.octeon1.32 - copied unchanged from r203101, head/sys/conf/ldscript.mips.octeon1.32 projects/tcp_ffcaia2008_head/sys/conf/ldscript.mips.octeon1.64 - copied unchanged from r203101, head/sys/conf/ldscript.mips.octeon1.64 projects/tcp_ffcaia2008_head/sys/conf/ldscript.mips.octeon1.n32 - copied unchanged from r203101, head/sys/conf/ldscript.mips.octeon1.n32 projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsrepair2.c - copied unchanged from r203101, head/sys/contrib/dev/acpica/namespace/nsrepair2.c projects/tcp_ffcaia2008_head/sys/contrib/dev/iwn/iwlwifi-1000-128.50.3.1.fw.uu - copied unchanged from r203101, head/sys/contrib/dev/iwn/iwlwifi-1000-128.50.3.1.fw.uu projects/tcp_ffcaia2008_head/sys/contrib/dev/iwn/iwlwifi-4965-228.61.2.24.fw.uu - copied unchanged from r203101, head/sys/contrib/dev/iwn/iwlwifi-4965-228.61.2.24.fw.uu projects/tcp_ffcaia2008_head/sys/contrib/dev/iwn/iwlwifi-5000-8.24.2.12.fw.uu - copied unchanged from r203101, head/sys/contrib/dev/iwn/iwlwifi-5000-8.24.2.12.fw.uu projects/tcp_ffcaia2008_head/sys/contrib/dev/iwn/iwlwifi-6000-9.176.4.1.fw.uu - copied unchanged from r203101, head/sys/contrib/dev/iwn/iwlwifi-6000-9.176.4.1.fw.uu projects/tcp_ffcaia2008_head/sys/dev/amdsbwd/ - copied from r203101, head/sys/dev/amdsbwd/ projects/tcp_ffcaia2008_head/sys/dev/cfe/cfe_env.c - copied unchanged from r203101, head/sys/dev/cfe/cfe_env.c projects/tcp_ffcaia2008_head/sys/dev/flash/mx25l.c - copied unchanged from r203101, head/sys/dev/flash/mx25l.c projects/tcp_ffcaia2008_head/sys/dev/flash/mx25lreg.h - copied unchanged from r203101, head/sys/dev/flash/mx25lreg.h projects/tcp_ffcaia2008_head/sys/dev/hwpmc/hwpmc_xscale.c - copied unchanged from r203101, head/sys/dev/hwpmc/hwpmc_xscale.c projects/tcp_ffcaia2008_head/sys/dev/hwpmc/hwpmc_xscale.h - copied unchanged from r203101, head/sys/dev/hwpmc/hwpmc_xscale.h projects/tcp_ffcaia2008_head/sys/dev/siba/siba_cc.c - copied unchanged from r203101, head/sys/dev/siba/siba_cc.c projects/tcp_ffcaia2008_head/sys/dev/usb/input/atp.c - copied unchanged from r203101, head/sys/dev/usb/input/atp.c projects/tcp_ffcaia2008_head/sys/dev/usb/net/uhso.c - copied unchanged from r203101, head/sys/dev/usb/net/uhso.c projects/tcp_ffcaia2008_head/sys/fs/ext2fs/ - copied from r203101, head/sys/fs/ext2fs/ projects/tcp_ffcaia2008_head/sys/geom/mountver/ - copied from r203101, head/sys/geom/mountver/ projects/tcp_ffcaia2008_head/sys/ia64/ia64/bus_machdep.c - copied unchanged from r203101, head/sys/ia64/ia64/bus_machdep.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/highfp.c - copied unchanged from r203101, head/sys/ia64/ia64/highfp.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/iodev_machdep.c - copied unchanged from r203101, head/sys/ia64/ia64/iodev_machdep.c projects/tcp_ffcaia2008_head/sys/ia64/include/iodev.h - copied unchanged from r203101, head/sys/ia64/include/iodev.h projects/tcp_ffcaia2008_head/sys/libkern/inet_aton.c - copied unchanged from r203101, head/sys/libkern/inet_aton.c projects/tcp_ffcaia2008_head/sys/mips/alchemy/ - copied from r203101, head/sys/mips/alchemy/ projects/tcp_ffcaia2008_head/sys/mips/atheros/ - copied from r203101, head/sys/mips/atheros/ projects/tcp_ffcaia2008_head/sys/mips/cavium/ - copied from r203101, head/sys/mips/cavium/ projects/tcp_ffcaia2008_head/sys/mips/conf/ALCHEMY - copied unchanged from r203101, head/sys/mips/conf/ALCHEMY projects/tcp_ffcaia2008_head/sys/mips/conf/AR71XX - copied unchanged from r203101, head/sys/mips/conf/AR71XX projects/tcp_ffcaia2008_head/sys/mips/conf/AR71XX.hints - copied unchanged from r203101, head/sys/mips/conf/AR71XX.hints projects/tcp_ffcaia2008_head/sys/mips/conf/MALTA64 - copied unchanged from r203101, head/sys/mips/conf/MALTA64 projects/tcp_ffcaia2008_head/sys/mips/conf/OCTEON1 - copied unchanged from r203101, head/sys/mips/conf/OCTEON1 projects/tcp_ffcaia2008_head/sys/mips/conf/OCTEON1-32 - copied unchanged from r203101, head/sys/mips/conf/OCTEON1-32 projects/tcp_ffcaia2008_head/sys/mips/conf/OCTEON1.hints - copied unchanged from r203101, head/sys/mips/conf/OCTEON1.hints projects/tcp_ffcaia2008_head/sys/mips/conf/SWARM - copied unchanged from r203101, head/sys/mips/conf/SWARM projects/tcp_ffcaia2008_head/sys/mips/conf/SWARM.hints - copied unchanged from r203101, head/sys/mips/conf/SWARM.hints projects/tcp_ffcaia2008_head/sys/mips/conf/XLR - copied unchanged from r203101, head/sys/mips/conf/XLR projects/tcp_ffcaia2008_head/sys/mips/include/cdefs.h - copied unchanged from r203101, head/sys/mips/include/cdefs.h projects/tcp_ffcaia2008_head/sys/mips/include/fls64.h - copied unchanged from r203101, head/sys/mips/include/fls64.h projects/tcp_ffcaia2008_head/sys/mips/mips/bus_space_generic.c - copied unchanged from r203101, head/sys/mips/mips/bus_space_generic.c projects/tcp_ffcaia2008_head/sys/mips/mips/elf_trampoline.c - copied unchanged from r203101, head/sys/mips/mips/elf_trampoline.c projects/tcp_ffcaia2008_head/sys/mips/mips/inckern.S - copied unchanged from r203101, head/sys/mips/mips/inckern.S projects/tcp_ffcaia2008_head/sys/mips/mips/ptrace_machdep.c - copied unchanged from r203101, head/sys/mips/mips/ptrace_machdep.c projects/tcp_ffcaia2008_head/sys/mips/mips/sys_machdep.c - copied unchanged from r203101, head/sys/mips/mips/sys_machdep.c projects/tcp_ffcaia2008_head/sys/mips/rmi/ - copied from r203101, head/sys/mips/rmi/ projects/tcp_ffcaia2008_head/sys/mips/sibyte/ - copied from r203101, head/sys/mips/sibyte/ projects/tcp_ffcaia2008_head/sys/modules/amdsbwd/ - copied from r203101, head/sys/modules/amdsbwd/ projects/tcp_ffcaia2008_head/sys/modules/epic/ - copied from r203101, head/sys/modules/epic/ projects/tcp_ffcaia2008_head/sys/modules/geom/geom_mountver/ - copied from r203101, head/sys/modules/geom/geom_mountver/ projects/tcp_ffcaia2008_head/sys/modules/iwnfw/iwn1000/ - copied from r203101, head/sys/modules/iwnfw/iwn1000/ projects/tcp_ffcaia2008_head/sys/modules/iwnfw/iwn6000/ - copied from r203101, head/sys/modules/iwnfw/iwn6000/ projects/tcp_ffcaia2008_head/sys/modules/usb/atp/ - copied from r203101, head/sys/modules/usb/atp/ projects/tcp_ffcaia2008_head/sys/modules/usb/uhso/ - copied from r203101, head/sys/modules/usb/uhso/ projects/tcp_ffcaia2008_head/sys/netinet/ipfw/ip_fw_dynamic.c - copied unchanged from r203101, head/sys/netinet/ipfw/ip_fw_dynamic.c projects/tcp_ffcaia2008_head/sys/netinet/ipfw/ip_fw_log.c - copied unchanged from r203101, head/sys/netinet/ipfw/ip_fw_log.c projects/tcp_ffcaia2008_head/sys/netinet/ipfw/ip_fw_private.h - copied unchanged from r203101, head/sys/netinet/ipfw/ip_fw_private.h projects/tcp_ffcaia2008_head/sys/netinet/ipfw/ip_fw_sockopt.c - copied unchanged from r203101, head/sys/netinet/ipfw/ip_fw_sockopt.c projects/tcp_ffcaia2008_head/sys/netinet/ipfw/ip_fw_table.c - copied unchanged from r203101, head/sys/netinet/ipfw/ip_fw_table.c projects/tcp_ffcaia2008_head/sys/sparc64/ebus/epic.c - copied unchanged from r203101, head/sys/sparc64/ebus/epic.c projects/tcp_ffcaia2008_head/sys/sparc64/pci/fire.c - copied unchanged from r203101, head/sys/sparc64/pci/fire.c projects/tcp_ffcaia2008_head/sys/sparc64/pci/firereg.h - copied unchanged from r203101, head/sys/sparc64/pci/firereg.h projects/tcp_ffcaia2008_head/sys/sparc64/pci/firevar.h - copied unchanged from r203101, head/sys/sparc64/pci/firevar.h projects/tcp_ffcaia2008_head/sys/sys/_termios.h - copied unchanged from r203101, head/sys/sys/_termios.h projects/tcp_ffcaia2008_head/sys/sys/_umtx.h - copied unchanged from r203101, head/sys/sys/_umtx.h projects/tcp_ffcaia2008_head/tools/regression/acltools/02.t - copied unchanged from r203101, head/tools/regression/acltools/02.t projects/tcp_ffcaia2008_head/tools/regression/bin/sh/builtins/builtin1.0 - copied unchanged from r203101, head/tools/regression/bin/sh/builtins/builtin1.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/builtins/cd2.0 - copied unchanged from r203101, head/tools/regression/bin/sh/builtins/cd2.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/builtins/command6.0 - copied unchanged from r203101, head/tools/regression/bin/sh/builtins/command6.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/builtins/command6.0.stdout - copied unchanged from r203101, head/tools/regression/bin/sh/builtins/command6.0.stdout projects/tcp_ffcaia2008_head/tools/regression/bin/sh/builtins/command7.0 - copied unchanged from r203101, head/tools/regression/bin/sh/builtins/command7.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/builtins/fc1.0 - copied unchanged from r203101, head/tools/regression/bin/sh/builtins/fc1.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/builtins/fc2.0 - copied unchanged from r203101, head/tools/regression/bin/sh/builtins/fc2.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/builtins/trap3.0 - copied unchanged from r203101, head/tools/regression/bin/sh/builtins/trap3.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/builtins/type2.0 - copied unchanged from r203101, head/tools/regression/bin/sh/builtins/type2.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/execution/redir1.0 - copied unchanged from r203101, head/tools/regression/bin/sh/execution/redir1.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/execution/redir2.0 - copied unchanged from r203101, head/tools/regression/bin/sh/execution/redir2.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/expansion/arith1.0 - copied unchanged from r203101, head/tools/regression/bin/sh/expansion/arith1.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/expansion/arith2.0 - copied unchanged from r203101, head/tools/regression/bin/sh/expansion/arith2.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/expansion/cmdsubst1.0 - copied unchanged from r203101, head/tools/regression/bin/sh/expansion/cmdsubst1.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/parser/for1.0 - copied unchanged from r203101, head/tools/regression/bin/sh/parser/for1.0 projects/tcp_ffcaia2008_head/tools/regression/bpf/bpf_filter/tests/test0084.h - copied unchanged from r203101, head/tools/regression/bpf/bpf_filter/tests/test0084.h projects/tcp_ffcaia2008_head/tools/regression/kqueue/ - copied from r203101, head/tools/regression/kqueue/ projects/tcp_ffcaia2008_head/tools/regression/lib/libutil/test-pidfile.c - copied unchanged from r203101, head/tools/regression/lib/libutil/test-pidfile.c projects/tcp_ffcaia2008_head/tools/regression/posixsem2/ - copied from r203101, head/tools/regression/posixsem2/ projects/tcp_ffcaia2008_head/tools/regression/usr.bin/comm/ - copied from r203101, head/tools/regression/usr.bin/comm/ projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/directive-t0/ - copied from r203101, head/tools/regression/usr.bin/make/syntax/directive-t0/ projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/sysmk/ - copied from r203101, head/tools/regression/usr.bin/make/sysmk/ projects/tcp_ffcaia2008_head/tools/tools/nanobsd/pcengines/ - copied from r203101, head/tools/tools/nanobsd/pcengines/ projects/tcp_ffcaia2008_head/tools/tools/notescheck/ - copied from r203101, head/tools/tools/notescheck/ projects/tcp_ffcaia2008_head/usr.bin/bc/ - copied from r203101, head/usr.bin/bc/ projects/tcp_ffcaia2008_head/usr.bin/dc/ - copied from r203101, head/usr.bin/dc/ projects/tcp_ffcaia2008_head/usr.bin/wtmpcvt/ - copied from r203101, head/usr.bin/wtmpcvt/ projects/tcp_ffcaia2008_head/usr.sbin/service/ - copied from r203101, head/usr.sbin/service/ projects/tcp_ffcaia2008_head/usr.sbin/traceroute/findsaddr-udp.c - copied unchanged from r203101, head/usr.sbin/traceroute/findsaddr-udp.c projects/tcp_ffcaia2008_head/usr.sbin/uhsoctl/ - copied from r203101, head/usr.sbin/uhsoctl/ Deleted: projects/tcp_ffcaia2008_head/contrib/one-true-awk/mac.code projects/tcp_ffcaia2008_head/etc/rc.d/ip6fw projects/tcp_ffcaia2008_head/etc/rc.firewall6 projects/tcp_ffcaia2008_head/lib/csu/i386-elf/crt1.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_fuzz_1.iso.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_gz.iso.gz.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isojoliet_bz2.iso.bz2.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isojolietrr_bz2.iso.bz2.uu projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isorr_bz2.iso.bz2.uu projects/tcp_ffcaia2008_head/lib/libc/mips/gen/fpgetmask.c projects/tcp_ffcaia2008_head/lib/libc/mips/gen/fpgetround.c projects/tcp_ffcaia2008_head/lib/libc/mips/gen/fpgetsticky.c projects/tcp_ffcaia2008_head/lib/libc/mips/gen/fpsetmask.c projects/tcp_ffcaia2008_head/lib/libc/mips/gen/fpsetround.c projects/tcp_ffcaia2008_head/lib/libc/mips/gen/fpsetsticky.c projects/tcp_ffcaia2008_head/lib/libutil/login.3 projects/tcp_ffcaia2008_head/lib/libutil/login.c projects/tcp_ffcaia2008_head/lib/libutil/logout.3 projects/tcp_ffcaia2008_head/lib/libutil/logout.c projects/tcp_ffcaia2008_head/lib/libutil/logwtmp.3 projects/tcp_ffcaia2008_head/lib/libutil/logwtmp.c projects/tcp_ffcaia2008_head/share/examples/pppd/ projects/tcp_ffcaia2008_head/share/examples/slattach/ projects/tcp_ffcaia2008_head/share/examples/sliplogin/ projects/tcp_ffcaia2008_head/share/examples/startslip/ projects/tcp_ffcaia2008_head/share/man/man5/utmp.5 projects/tcp_ffcaia2008_head/sys/boot/efi/libefi/efifs.c projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/asm.S projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/asm.h projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/bios.S projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/boot.c projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/boot.h projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/boot2.S projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/dinode.h projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/disk.c projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/fs.h projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/inode.h projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/io.c projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/probe_keyboard.c projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/quota.h projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/serial.S projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/serial_16550.S projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/serial_8251.S projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/start.S projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/sys.c projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/table.c projects/tcp_ffcaia2008_head/sys/contrib/dev/iwn/iwlwifi-4965-228.57.2.23.fw.uu projects/tcp_ffcaia2008_head/sys/contrib/dev/iwn/iwlwifi-5000-5.4.A.11.fw.uu projects/tcp_ffcaia2008_head/sys/dev/ata/ata-usb.c projects/tcp_ffcaia2008_head/sys/gnu/fs/ext2fs/ projects/tcp_ffcaia2008_head/sys/mips/include/bus_octeon.h projects/tcp_ffcaia2008_head/sys/mips/include/intr.h projects/tcp_ffcaia2008_head/sys/mips/include/pltfm.h projects/tcp_ffcaia2008_head/sys/mips/sentry5/siba_cc.c projects/tcp_ffcaia2008_head/sys/mips/sentry5/siba_mips.c projects/tcp_ffcaia2008_head/sys/mips/sentry5/siba_sdram.c projects/tcp_ffcaia2008_head/sys/modules/ata/atausb/ projects/tcp_ffcaia2008_head/sys/sys/semaphore.h projects/tcp_ffcaia2008_head/usr.bin/awk/b.c.diff projects/tcp_ffcaia2008_head/usr.bin/awk/main.c.diff projects/tcp_ffcaia2008_head/usr.bin/awk/run.c.diff projects/tcp_ffcaia2008_head/usr.sbin/ndp/gnuc.h projects/tcp_ffcaia2008_head/usr.sbin/ntp/ntptrace/Makefile projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/acpi.c projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/acpidump.h projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/biosmptable.c Modified: projects/tcp_ffcaia2008_head/COPYRIGHT projects/tcp_ffcaia2008_head/MAINTAINERS projects/tcp_ffcaia2008_head/Makefile projects/tcp_ffcaia2008_head/Makefile.inc1 projects/tcp_ffcaia2008_head/ObsoleteFiles.inc projects/tcp_ffcaia2008_head/UPDATING projects/tcp_ffcaia2008_head/bin/Makefile projects/tcp_ffcaia2008_head/bin/cp/cp.1 projects/tcp_ffcaia2008_head/bin/cp/cp.c projects/tcp_ffcaia2008_head/bin/cp/utils.c projects/tcp_ffcaia2008_head/bin/csh/config.h projects/tcp_ffcaia2008_head/bin/csh/config_p.h projects/tcp_ffcaia2008_head/bin/date/Makefile projects/tcp_ffcaia2008_head/bin/date/date.1 projects/tcp_ffcaia2008_head/bin/date/date.c projects/tcp_ffcaia2008_head/bin/getfacl/getfacl.1 projects/tcp_ffcaia2008_head/bin/kenv/kenv.c projects/tcp_ffcaia2008_head/bin/ls/ls.c projects/tcp_ffcaia2008_head/bin/ls/ls.h projects/tcp_ffcaia2008_head/bin/ls/print.c projects/tcp_ffcaia2008_head/bin/pax/ftree.c projects/tcp_ffcaia2008_head/bin/pax/gen_subs.c projects/tcp_ffcaia2008_head/bin/pax/sel_subs.c projects/tcp_ffcaia2008_head/bin/pkill/Makefile projects/tcp_ffcaia2008_head/bin/pkill/pkill.c projects/tcp_ffcaia2008_head/bin/ps/keyword.c projects/tcp_ffcaia2008_head/bin/setfacl/merge.c projects/tcp_ffcaia2008_head/bin/setfacl/remove.c projects/tcp_ffcaia2008_head/bin/setfacl/setfacl.h projects/tcp_ffcaia2008_head/bin/setfacl/util.c projects/tcp_ffcaia2008_head/bin/sh/alias.c projects/tcp_ffcaia2008_head/bin/sh/alias.h projects/tcp_ffcaia2008_head/bin/sh/arith.h projects/tcp_ffcaia2008_head/bin/sh/arith.y projects/tcp_ffcaia2008_head/bin/sh/arith_lex.l projects/tcp_ffcaia2008_head/bin/sh/cd.c projects/tcp_ffcaia2008_head/bin/sh/error.c projects/tcp_ffcaia2008_head/bin/sh/error.h projects/tcp_ffcaia2008_head/bin/sh/eval.c projects/tcp_ffcaia2008_head/bin/sh/eval.h projects/tcp_ffcaia2008_head/bin/sh/exec.c projects/tcp_ffcaia2008_head/bin/sh/exec.h projects/tcp_ffcaia2008_head/bin/sh/expand.c projects/tcp_ffcaia2008_head/bin/sh/expand.h projects/tcp_ffcaia2008_head/bin/sh/histedit.c projects/tcp_ffcaia2008_head/bin/sh/input.c projects/tcp_ffcaia2008_head/bin/sh/input.h projects/tcp_ffcaia2008_head/bin/sh/jobs.c projects/tcp_ffcaia2008_head/bin/sh/mail.c projects/tcp_ffcaia2008_head/bin/sh/main.c projects/tcp_ffcaia2008_head/bin/sh/main.h projects/tcp_ffcaia2008_head/bin/sh/memalloc.c projects/tcp_ffcaia2008_head/bin/sh/memalloc.h projects/tcp_ffcaia2008_head/bin/sh/miscbltin.c projects/tcp_ffcaia2008_head/bin/sh/mkbuiltins projects/tcp_ffcaia2008_head/bin/sh/mkinit.c projects/tcp_ffcaia2008_head/bin/sh/mksyntax.c projects/tcp_ffcaia2008_head/bin/sh/myhistedit.h projects/tcp_ffcaia2008_head/bin/sh/mystring.c projects/tcp_ffcaia2008_head/bin/sh/options.c projects/tcp_ffcaia2008_head/bin/sh/options.h projects/tcp_ffcaia2008_head/bin/sh/output.c projects/tcp_ffcaia2008_head/bin/sh/output.h projects/tcp_ffcaia2008_head/bin/sh/parser.c projects/tcp_ffcaia2008_head/bin/sh/parser.h projects/tcp_ffcaia2008_head/bin/sh/redir.c projects/tcp_ffcaia2008_head/bin/sh/sh.1 projects/tcp_ffcaia2008_head/bin/sh/show.c projects/tcp_ffcaia2008_head/bin/sh/show.h projects/tcp_ffcaia2008_head/bin/sh/trap.c projects/tcp_ffcaia2008_head/bin/sh/trap.h projects/tcp_ffcaia2008_head/bin/sh/var.c projects/tcp_ffcaia2008_head/bin/sh/var.h projects/tcp_ffcaia2008_head/cddl/contrib/opensolaris/cmd/zdb/zdb_il.c projects/tcp_ffcaia2008_head/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/tcp_ffcaia2008_head/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c projects/tcp_ffcaia2008_head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h projects/tcp_ffcaia2008_head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c projects/tcp_ffcaia2008_head/contrib/bind9/CHANGES projects/tcp_ffcaia2008_head/contrib/bind9/FAQ projects/tcp_ffcaia2008_head/contrib/bind9/FAQ.xml projects/tcp_ffcaia2008_head/contrib/bind9/bin/dig/dighost.c projects/tcp_ffcaia2008_head/contrib/bind9/bin/dnssec/dnssec-signzone.8 projects/tcp_ffcaia2008_head/contrib/bind9/bin/dnssec/dnssec-signzone.html projects/tcp_ffcaia2008_head/contrib/bind9/bin/named/query.c projects/tcp_ffcaia2008_head/contrib/bind9/doc/arm/Bv9ARM.pdf projects/tcp_ffcaia2008_head/contrib/bind9/doc/arm/man.dnssec-signzone.html projects/tcp_ffcaia2008_head/contrib/bind9/doc/arm/man.named-checkconf.html projects/tcp_ffcaia2008_head/contrib/bind9/doc/arm/man.named-checkzone.html projects/tcp_ffcaia2008_head/contrib/bind9/doc/arm/man.named.html projects/tcp_ffcaia2008_head/contrib/bind9/doc/arm/man.nsupdate.html projects/tcp_ffcaia2008_head/contrib/bind9/doc/arm/man.rndc-confgen.html projects/tcp_ffcaia2008_head/contrib/bind9/doc/arm/man.rndc.conf.html projects/tcp_ffcaia2008_head/contrib/bind9/doc/arm/man.rndc.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/dns/api projects/tcp_ffcaia2008_head/contrib/bind9/lib/dns/include/dns/db.h projects/tcp_ffcaia2008_head/contrib/bind9/lib/dns/include/dns/ncache.h projects/tcp_ffcaia2008_head/contrib/bind9/lib/dns/include/dns/types.h projects/tcp_ffcaia2008_head/contrib/bind9/lib/dns/masterdump.c projects/tcp_ffcaia2008_head/contrib/bind9/lib/dns/rbtdb.c projects/tcp_ffcaia2008_head/contrib/bind9/lib/dns/resolver.c projects/tcp_ffcaia2008_head/contrib/bind9/lib/dns/validator.c projects/tcp_ffcaia2008_head/contrib/bind9/lib/isc/ia64/include/isc/atomic.h projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_buffer.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_config.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_context.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_gabn.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_gai_strerror.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_getaddrinfo.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_gethostent.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_getipnode.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_getnameinfo.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_getrrsetbyname.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_gnba.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_hstrerror.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_inetntop.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_noop.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_packet.html projects/tcp_ffcaia2008_head/contrib/bind9/lib/lwres/man/lwres_resutil.html projects/tcp_ffcaia2008_head/contrib/bind9/version projects/tcp_ffcaia2008_head/contrib/bsnmp/snmp_mibII/BEGEMOT-MIB2-MIB.txt projects/tcp_ffcaia2008_head/contrib/bsnmp/snmp_mibII/mibII.c projects/tcp_ffcaia2008_head/contrib/bsnmp/snmp_mibII/mibII.h projects/tcp_ffcaia2008_head/contrib/bsnmp/snmp_mibII/mibII_begemot.c projects/tcp_ffcaia2008_head/contrib/bsnmp/snmp_mibII/mibII_tree.def projects/tcp_ffcaia2008_head/contrib/ee/ee.c projects/tcp_ffcaia2008_head/contrib/expat/lib/xmlparse.c projects/tcp_ffcaia2008_head/contrib/expat/lib/xmltok_impl.c projects/tcp_ffcaia2008_head/contrib/gcc/config/freebsd-spec.h projects/tcp_ffcaia2008_head/contrib/gcc/config/mips/freebsd.h projects/tcp_ffcaia2008_head/contrib/groff/font/devutf8/R.proto projects/tcp_ffcaia2008_head/contrib/groff/tmac/an-old.tmac projects/tcp_ffcaia2008_head/contrib/groff/tmac/doc-common projects/tcp_ffcaia2008_head/contrib/groff/tmac/doc-old.tmac projects/tcp_ffcaia2008_head/contrib/groff/tmac/doc-syms projects/tcp_ffcaia2008_head/contrib/groff/tmac/doc.tmac projects/tcp_ffcaia2008_head/contrib/groff/tmac/groff_mdoc.man projects/tcp_ffcaia2008_head/contrib/ipfilter/man/ipf.8 projects/tcp_ffcaia2008_head/contrib/libpcap/inet.c projects/tcp_ffcaia2008_head/contrib/netcat/FREEBSD-vendor projects/tcp_ffcaia2008_head/contrib/netcat/nc.1 projects/tcp_ffcaia2008_head/contrib/netcat/netcat.c projects/tcp_ffcaia2008_head/contrib/ntp/COPYRIGHT projects/tcp_ffcaia2008_head/contrib/ntp/ChangeLog projects/tcp_ffcaia2008_head/contrib/ntp/CommitLog projects/tcp_ffcaia2008_head/contrib/ntp/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/NEWS projects/tcp_ffcaia2008_head/contrib/ntp/README projects/tcp_ffcaia2008_head/contrib/ntp/README.bk projects/tcp_ffcaia2008_head/contrib/ntp/README.patches projects/tcp_ffcaia2008_head/contrib/ntp/WHERE-TO-START projects/tcp_ffcaia2008_head/contrib/ntp/aclocal.m4 projects/tcp_ffcaia2008_head/contrib/ntp/adjtimed/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/arlib/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/arlib/aclocal.m4 projects/tcp_ffcaia2008_head/contrib/ntp/arlib/configure projects/tcp_ffcaia2008_head/contrib/ntp/build projects/tcp_ffcaia2008_head/contrib/ntp/clockstuff/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/config.h.in projects/tcp_ffcaia2008_head/contrib/ntp/configure projects/tcp_ffcaia2008_head/contrib/ntp/configure.ac projects/tcp_ffcaia2008_head/contrib/ntp/flock-build projects/tcp_ffcaia2008_head/contrib/ntp/html/copyright.html projects/tcp_ffcaia2008_head/contrib/ntp/html/drivers/driver40.html projects/tcp_ffcaia2008_head/contrib/ntp/include/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/include/copyright.def projects/tcp_ffcaia2008_head/contrib/ntp/include/isc/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/include/ntp_debug.h projects/tcp_ffcaia2008_head/contrib/ntp/include/version.def projects/tcp_ffcaia2008_head/contrib/ntp/kernel/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/kernel/sys/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/libntp/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/libopts/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/libparse/Makefile.am projects/tcp_ffcaia2008_head/contrib/ntp/libparse/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/libparse/clk_rawdcf.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/cmd_args.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntp_crypto.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntp_intres.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntp_io.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntp_request.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntp_timer.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntpd-opts.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntpd-opts.h projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntpd-opts.texi projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntpd.1 projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntpd.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntpdsim-opts.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntpdsim-opts.h projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntpdsim-opts.texi projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/ntpdsim.1 projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/refclock_dumbclock.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/refclock_hopfser.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/refclock_jjy.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/refclock_nmea.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpd/refclock_palisade.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpdate/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/ntpdc/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/ntpdc/ntpdc-opts.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpdc/ntpdc-opts.h projects/tcp_ffcaia2008_head/contrib/ntp/ntpdc/ntpdc-opts.texi projects/tcp_ffcaia2008_head/contrib/ntp/ntpdc/ntpdc.1 projects/tcp_ffcaia2008_head/contrib/ntp/ntpq/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/ntpq/ntpq-opts.c projects/tcp_ffcaia2008_head/contrib/ntp/ntpq/ntpq-opts.h projects/tcp_ffcaia2008_head/contrib/ntp/ntpq/ntpq-opts.texi projects/tcp_ffcaia2008_head/contrib/ntp/ntpq/ntpq.1 projects/tcp_ffcaia2008_head/contrib/ntp/ntpq/ntpq.c projects/tcp_ffcaia2008_head/contrib/ntp/packageinfo.sh projects/tcp_ffcaia2008_head/contrib/ntp/parseutil/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/scripts/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/sntp/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/sntp/aclocal.m4 projects/tcp_ffcaia2008_head/contrib/ntp/sntp/config.h.in projects/tcp_ffcaia2008_head/contrib/ntp/sntp/configure projects/tcp_ffcaia2008_head/contrib/ntp/sntp/configure.ac projects/tcp_ffcaia2008_head/contrib/ntp/sntp/libopts/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/sntp/sntp-opts.c projects/tcp_ffcaia2008_head/contrib/ntp/sntp/sntp-opts.def projects/tcp_ffcaia2008_head/contrib/ntp/sntp/sntp-opts.h projects/tcp_ffcaia2008_head/contrib/ntp/sntp/sntp-opts.texi projects/tcp_ffcaia2008_head/contrib/ntp/sntp/sntp.1 projects/tcp_ffcaia2008_head/contrib/ntp/sntp/version.def projects/tcp_ffcaia2008_head/contrib/ntp/util/Makefile.in projects/tcp_ffcaia2008_head/contrib/ntp/util/ntp-keygen-opts.c projects/tcp_ffcaia2008_head/contrib/ntp/util/ntp-keygen-opts.h projects/tcp_ffcaia2008_head/contrib/ntp/util/ntp-keygen-opts.texi projects/tcp_ffcaia2008_head/contrib/ntp/util/ntp-keygen.1 projects/tcp_ffcaia2008_head/contrib/ntp/version projects/tcp_ffcaia2008_head/contrib/ntp/version.m4 projects/tcp_ffcaia2008_head/contrib/one-true-awk/FIXES projects/tcp_ffcaia2008_head/contrib/one-true-awk/b.c projects/tcp_ffcaia2008_head/contrib/one-true-awk/lib.c projects/tcp_ffcaia2008_head/contrib/one-true-awk/main.c projects/tcp_ffcaia2008_head/contrib/one-true-awk/makefile projects/tcp_ffcaia2008_head/contrib/one-true-awk/maketab.c projects/tcp_ffcaia2008_head/contrib/one-true-awk/proctab.c projects/tcp_ffcaia2008_head/contrib/one-true-awk/proto.h projects/tcp_ffcaia2008_head/contrib/one-true-awk/run.c projects/tcp_ffcaia2008_head/contrib/opie/libopie/getutmpentry.c projects/tcp_ffcaia2008_head/contrib/opie/libopie/insecure.c projects/tcp_ffcaia2008_head/contrib/opie/libopie/login.c projects/tcp_ffcaia2008_head/contrib/pf/man/pf.conf.5 projects/tcp_ffcaia2008_head/contrib/pf/pfctl/parse.y projects/tcp_ffcaia2008_head/contrib/pf/pfctl/pf_print_state.c projects/tcp_ffcaia2008_head/contrib/pf/pfctl/pfctl_parser.c projects/tcp_ffcaia2008_head/contrib/sendmail/CACerts projects/tcp_ffcaia2008_head/contrib/sendmail/FREEBSD-upgrade projects/tcp_ffcaia2008_head/contrib/sendmail/LICENSE projects/tcp_ffcaia2008_head/contrib/sendmail/PGPKEYS projects/tcp_ffcaia2008_head/contrib/sendmail/README projects/tcp_ffcaia2008_head/contrib/sendmail/RELEASE_NOTES projects/tcp_ffcaia2008_head/contrib/sendmail/cf/README projects/tcp_ffcaia2008_head/contrib/sendmail/cf/cf/submit.cf projects/tcp_ffcaia2008_head/contrib/sendmail/cf/feature/ldap_routing.m4 projects/tcp_ffcaia2008_head/contrib/sendmail/cf/m4/cfhead.m4 projects/tcp_ffcaia2008_head/contrib/sendmail/cf/m4/proto.m4 projects/tcp_ffcaia2008_head/contrib/sendmail/cf/m4/version.m4 projects/tcp_ffcaia2008_head/contrib/sendmail/contrib/qtool.pl projects/tcp_ffcaia2008_head/contrib/sendmail/contrib/smcontrol.pl projects/tcp_ffcaia2008_head/contrib/sendmail/doc/op/op.me projects/tcp_ffcaia2008_head/contrib/sendmail/include/libmilter/mfapi.h projects/tcp_ffcaia2008_head/contrib/sendmail/include/libmilter/mfdef.h projects/tcp_ffcaia2008_head/contrib/sendmail/include/sm/conf.h projects/tcp_ffcaia2008_head/contrib/sendmail/include/sm/ldap.h projects/tcp_ffcaia2008_head/contrib/sendmail/include/sm/sem.h projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/Makefile.m4 projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/comm.c projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/docs/api.html projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/docs/overview.html projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/docs/smfi_addheader.html projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/docs/smfi_chgheader.html projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/docs/smfi_insheader.html projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/engine.c projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/example.c projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/handler.c projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/libmilter.h projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/listener.c projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/main.c projects/tcp_ffcaia2008_head/contrib/sendmail/libmilter/worker.c projects/tcp_ffcaia2008_head/contrib/sendmail/libsm/debug.c projects/tcp_ffcaia2008_head/contrib/sendmail/libsm/ldap.c projects/tcp_ffcaia2008_head/contrib/sendmail/libsm/mbdb.c projects/tcp_ffcaia2008_head/contrib/sendmail/libsm/sem.c projects/tcp_ffcaia2008_head/contrib/sendmail/libsm/t-sem.c projects/tcp_ffcaia2008_head/contrib/sendmail/libsmdb/smdb1.c projects/tcp_ffcaia2008_head/contrib/sendmail/libsmdb/smdb2.c projects/tcp_ffcaia2008_head/contrib/sendmail/libsmutil/safefile.c projects/tcp_ffcaia2008_head/contrib/sendmail/praliases/praliases.8 projects/tcp_ffcaia2008_head/contrib/sendmail/praliases/praliases.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/Makefile.m4 projects/tcp_ffcaia2008_head/contrib/sendmail/src/README projects/tcp_ffcaia2008_head/contrib/sendmail/src/TRACEFLAGS projects/tcp_ffcaia2008_head/contrib/sendmail/src/collect.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/conf.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/conf.h projects/tcp_ffcaia2008_head/contrib/sendmail/src/daemon.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/deliver.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/envelope.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/headers.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/main.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/map.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/milter.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/queue.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/ratectrl.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/readcf.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/savemail.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/sendmail.8 projects/tcp_ffcaia2008_head/contrib/sendmail/src/sendmail.h projects/tcp_ffcaia2008_head/contrib/sendmail/src/sfsasl.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/srvrsmtp.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/tls.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/usersmtp.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/util.c projects/tcp_ffcaia2008_head/contrib/sendmail/src/version.c projects/tcp_ffcaia2008_head/contrib/sendmail/vacation/vacation.c projects/tcp_ffcaia2008_head/contrib/smbfs/smbutil/view.c projects/tcp_ffcaia2008_head/contrib/tcp_wrappers/hosts_access.c projects/tcp_ffcaia2008_head/contrib/telnet/telnet/externs.h projects/tcp_ffcaia2008_head/contrib/telnet/telnetd/sys_term.c projects/tcp_ffcaia2008_head/contrib/telnet/telnetd/telnetd.c projects/tcp_ffcaia2008_head/contrib/top/username.c projects/tcp_ffcaia2008_head/crypto/heimdal/kcm/connect.c projects/tcp_ffcaia2008_head/crypto/openssh/config.h projects/tcp_ffcaia2008_head/crypto/openssh/defines.h projects/tcp_ffcaia2008_head/crypto/openssh/loginrec.c projects/tcp_ffcaia2008_head/crypto/openssh/ssh_namespace.h projects/tcp_ffcaia2008_head/crypto/openssh/sshd.c projects/tcp_ffcaia2008_head/crypto/openssl/ssl/s3_lib.c projects/tcp_ffcaia2008_head/crypto/openssl/ssl/s3_pkt.c projects/tcp_ffcaia2008_head/crypto/openssl/ssl/s3_srvr.c projects/tcp_ffcaia2008_head/etc/Makefile projects/tcp_ffcaia2008_head/etc/defaults/devfs.rules projects/tcp_ffcaia2008_head/etc/defaults/rc.conf projects/tcp_ffcaia2008_head/etc/devd/Makefile projects/tcp_ffcaia2008_head/etc/etc.amd64/ttys projects/tcp_ffcaia2008_head/etc/etc.arm/ttys projects/tcp_ffcaia2008_head/etc/etc.i386/ttys projects/tcp_ffcaia2008_head/etc/etc.ia64/ttys projects/tcp_ffcaia2008_head/etc/etc.mips/ttys projects/tcp_ffcaia2008_head/etc/etc.powerpc/ttys projects/tcp_ffcaia2008_head/etc/etc.sparc64/ttys projects/tcp_ffcaia2008_head/etc/mtree/BIND.chroot.dist projects/tcp_ffcaia2008_head/etc/mtree/BSD.include.dist projects/tcp_ffcaia2008_head/etc/mtree/BSD.usr.dist projects/tcp_ffcaia2008_head/etc/mtree/BSD.var.dist projects/tcp_ffcaia2008_head/etc/namedb/named.conf projects/tcp_ffcaia2008_head/etc/namedb/named.root projects/tcp_ffcaia2008_head/etc/network.subr projects/tcp_ffcaia2008_head/etc/newsyslog.conf projects/tcp_ffcaia2008_head/etc/periodic/monthly/200.accounting projects/tcp_ffcaia2008_head/etc/rc.d/Makefile projects/tcp_ffcaia2008_head/etc/rc.d/cleanvar projects/tcp_ffcaia2008_head/etc/rc.d/devfs projects/tcp_ffcaia2008_head/etc/rc.d/ipfw projects/tcp_ffcaia2008_head/etc/rc.d/jail projects/tcp_ffcaia2008_head/etc/rc.d/named projects/tcp_ffcaia2008_head/etc/rc.d/nsswitch projects/tcp_ffcaia2008_head/etc/rc.d/var projects/tcp_ffcaia2008_head/etc/rc.firewall projects/tcp_ffcaia2008_head/etc/rc.subr projects/tcp_ffcaia2008_head/etc/root/dot.profile projects/tcp_ffcaia2008_head/etc/sendmail/freebsd.mc projects/tcp_ffcaia2008_head/etc/sendmail/freebsd.submit.mc projects/tcp_ffcaia2008_head/etc/services projects/tcp_ffcaia2008_head/etc/termcap.small projects/tcp_ffcaia2008_head/games/factor/factor.c projects/tcp_ffcaia2008_head/games/fortune/datfiles/fortunes projects/tcp_ffcaia2008_head/games/fortune/datfiles/fortunes-o.real projects/tcp_ffcaia2008_head/games/fortune/datfiles/freebsd-tips projects/tcp_ffcaia2008_head/games/fortune/strfile/strfile.c projects/tcp_ffcaia2008_head/games/fortune/unstr/unstr.c projects/tcp_ffcaia2008_head/games/number/number.c projects/tcp_ffcaia2008_head/games/pom/pom.6 projects/tcp_ffcaia2008_head/games/pom/pom.c projects/tcp_ffcaia2008_head/gnu/lib/libgcc/Makefile projects/tcp_ffcaia2008_head/gnu/lib/libstdc++/Makefile projects/tcp_ffcaia2008_head/gnu/lib/libsupc++/Makefile projects/tcp_ffcaia2008_head/gnu/usr.bin/Makefile projects/tcp_ffcaia2008_head/gnu/usr.bin/binutils/Makefile.inc0 projects/tcp_ffcaia2008_head/gnu/usr.bin/binutils/ld/Makefile.mips projects/tcp_ffcaia2008_head/gnu/usr.bin/cc/Makefile.tgt projects/tcp_ffcaia2008_head/gnu/usr.bin/groff/tmac/mdoc.local projects/tcp_ffcaia2008_head/include/Makefile projects/tcp_ffcaia2008_head/include/dirent.h projects/tcp_ffcaia2008_head/include/paths.h projects/tcp_ffcaia2008_head/include/signal.h projects/tcp_ffcaia2008_head/include/strings.h projects/tcp_ffcaia2008_head/include/unistd.h projects/tcp_ffcaia2008_head/include/utmp.h projects/tcp_ffcaia2008_head/kerberos5/usr.bin/kdestroy/Makefile projects/tcp_ffcaia2008_head/kerberos5/usr.bin/kpasswd/Makefile projects/tcp_ffcaia2008_head/lib/Makefile projects/tcp_ffcaia2008_head/lib/Makefile.inc projects/tcp_ffcaia2008_head/lib/bind/config.h projects/tcp_ffcaia2008_head/lib/bind/dns/code.h projects/tcp_ffcaia2008_head/lib/bind/dns/dns/enumclass.h projects/tcp_ffcaia2008_head/lib/bind/dns/dns/enumtype.h projects/tcp_ffcaia2008_head/lib/bind/dns/dns/rdatastruct.h projects/tcp_ffcaia2008_head/lib/csu/Makefile.inc projects/tcp_ffcaia2008_head/lib/csu/amd64/Makefile projects/tcp_ffcaia2008_head/lib/csu/arm/Makefile projects/tcp_ffcaia2008_head/lib/csu/i386-elf/Makefile projects/tcp_ffcaia2008_head/lib/csu/ia64/Makefile projects/tcp_ffcaia2008_head/lib/csu/mips/Makefile projects/tcp_ffcaia2008_head/lib/csu/powerpc/Makefile projects/tcp_ffcaia2008_head/lib/csu/sparc64/Makefile projects/tcp_ffcaia2008_head/lib/libarchive/Makefile projects/tcp_ffcaia2008_head/lib/libarchive/archive.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_check_magic.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_endian.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_entry.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_entry.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_entry_link_resolver.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_entry_private.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_entry_stat.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_platform.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_private.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_read.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_disk_entry_from_file.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_disk_private.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_disk_set_standard_lookup.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_open_fd.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_open_file.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_open_filename.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_private.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_compression_all.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_compression_bzip2.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_compression_compress.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_compression_gzip.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_compression_program.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_compression_xz.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_format_ar.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_format_cpio.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_format_iso9660.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_format_mtree.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_format_raw.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_format_tar.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_read_support_format_zip.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_string.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_string.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_util.3 projects/tcp_ffcaia2008_head/lib/libarchive/archive_util.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_virtual.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write.3 projects/tcp_ffcaia2008_head/lib/libarchive/archive_write.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_disk.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_disk_private.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_disk_set_standard_lookup.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_open_fd.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_private.h projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_compression_bzip2.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_compression_compress.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_compression_gzip.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_compression_none.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_compression_program.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_compression_xz.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_format.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_format_ar.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_format_by_name.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_format_cpio.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_format_cpio_newc.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_format_mtree.c projects/tcp_ffcaia2008_head/lib/libarchive/archive_write_set_format_pax.c projects/tcp_ffcaia2008_head/lib/libarchive/config_freebsd.h projects/tcp_ffcaia2008_head/lib/libarchive/filter_fork.h projects/tcp_ffcaia2008_head/lib/libarchive/libarchive-formats.5 projects/tcp_ffcaia2008_head/lib/libarchive/tar.5 projects/tcp_ffcaia2008_head/lib/libarchive/test/Makefile projects/tcp_ffcaia2008_head/lib/libarchive/test/main.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test.h projects/tcp_ffcaia2008_head/lib/libarchive/test/test_acl_pax.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_compat_bzip2.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_compat_solaris_tar_acl.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_entry.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_entry_strmode.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_extattr_freebsd.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_fuzz.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_open_fd.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_open_file.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_pax_filename_encoding.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_compress_program.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_data_large.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_disk.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_disk_entry_from_file.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_extract.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_ar.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_cpio_bin_bz2.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_iso_gz.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isojoliet_bz2.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_isorr_bz2.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_mtree.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_pax_bz2.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_tar.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_format_tbz.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_read_large.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_tar_large.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_compress_program.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_disk.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_disk_failures.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_disk_hardlink.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_disk_perms.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_disk_secure.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_disk_sparse.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_disk_times.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_format_cpio_empty.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_format_cpio_newc.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_format_cpio_odc.c projects/tcp_ffcaia2008_head/lib/libarchive/test/test_write_format_tar_ustar.c projects/tcp_ffcaia2008_head/lib/libauditd/Makefile projects/tcp_ffcaia2008_head/lib/libautofs/Makefile projects/tcp_ffcaia2008_head/lib/libbegemot/Makefile projects/tcp_ffcaia2008_head/lib/libbsm/Makefile projects/tcp_ffcaia2008_head/lib/libbz2/Makefile projects/tcp_ffcaia2008_head/lib/libc/Makefile projects/tcp_ffcaia2008_head/lib/libc/compat-43/Makefile.inc projects/tcp_ffcaia2008_head/lib/libc/compat-43/Symbol.map projects/tcp_ffcaia2008_head/lib/libc/compat-43/sigcompat.c projects/tcp_ffcaia2008_head/lib/libc/compat-43/sigpause.2 projects/tcp_ffcaia2008_head/lib/libc/gen/Makefile.inc projects/tcp_ffcaia2008_head/lib/libc/gen/Symbol.map projects/tcp_ffcaia2008_head/lib/libc/gen/_pthread_stubs.c projects/tcp_ffcaia2008_head/lib/libc/gen/exec.c projects/tcp_ffcaia2008_head/lib/libc/gen/fdevname.c projects/tcp_ffcaia2008_head/lib/libc/gen/fmtmsg.c projects/tcp_ffcaia2008_head/lib/libc/gen/fts.3 projects/tcp_ffcaia2008_head/lib/libc/gen/fts.c projects/tcp_ffcaia2008_head/lib/libc/gen/getcap.c projects/tcp_ffcaia2008_head/lib/libc/gen/getlogin.c projects/tcp_ffcaia2008_head/lib/libc/gen/getttyent.3 projects/tcp_ffcaia2008_head/lib/libc/gen/getttyent.c projects/tcp_ffcaia2008_head/lib/libc/gen/getusershell.c projects/tcp_ffcaia2008_head/lib/libc/gen/nlist.c projects/tcp_ffcaia2008_head/lib/libc/gen/opendir.c projects/tcp_ffcaia2008_head/lib/libc/gen/pause.c projects/tcp_ffcaia2008_head/lib/libc/gen/posix_spawn.3 projects/tcp_ffcaia2008_head/lib/libc/gen/posix_spawn_file_actions_addopen.3 projects/tcp_ffcaia2008_head/lib/libc/gen/posix_spawn_file_actions_init.3 projects/tcp_ffcaia2008_head/lib/libc/gen/posix_spawnattr_getflags.3 projects/tcp_ffcaia2008_head/lib/libc/gen/posix_spawnattr_getpgroup.3 projects/tcp_ffcaia2008_head/lib/libc/gen/posix_spawnattr_getschedparam.3 projects/tcp_ffcaia2008_head/lib/libc/gen/posix_spawnattr_getschedpolicy.3 projects/tcp_ffcaia2008_head/lib/libc/gen/posix_spawnattr_getsigdefault.3 projects/tcp_ffcaia2008_head/lib/libc/gen/posix_spawnattr_getsigmask.3 projects/tcp_ffcaia2008_head/lib/libc/gen/posix_spawnattr_init.3 projects/tcp_ffcaia2008_head/lib/libc/gen/pwcache.c projects/tcp_ffcaia2008_head/lib/libc/gen/raise.c projects/tcp_ffcaia2008_head/lib/libc/gen/scandir.3 projects/tcp_ffcaia2008_head/lib/libc/gen/scandir.c projects/tcp_ffcaia2008_head/lib/libc/gen/sem.c projects/tcp_ffcaia2008_head/lib/libc/gen/sem_init.3 projects/tcp_ffcaia2008_head/lib/libc/gen/sem_open.3 projects/tcp_ffcaia2008_head/lib/libc/gen/sleep.c projects/tcp_ffcaia2008_head/lib/libc/gen/termios.c projects/tcp_ffcaia2008_head/lib/libc/gen/time.3 projects/tcp_ffcaia2008_head/lib/libc/gen/time.c projects/tcp_ffcaia2008_head/lib/libc/gen/timezone.c projects/tcp_ffcaia2008_head/lib/libc/gen/ttyname.3 projects/tcp_ffcaia2008_head/lib/libc/gen/ttyslot.c projects/tcp_ffcaia2008_head/lib/libc/gen/tzset.3 projects/tcp_ffcaia2008_head/lib/libc/gen/usleep.c projects/tcp_ffcaia2008_head/lib/libc/gen/wordexp.c projects/tcp_ffcaia2008_head/lib/libc/gmon/gmon.c projects/tcp_ffcaia2008_head/lib/libc/include/libc_private.h projects/tcp_ffcaia2008_head/lib/libc/locale/isblank.3 projects/tcp_ffcaia2008_head/lib/libc/locale/isgraph.3 projects/tcp_ffcaia2008_head/lib/libc/locale/isprint.3 projects/tcp_ffcaia2008_head/lib/libc/locale/nl_langinfo.3 projects/tcp_ffcaia2008_head/lib/libc/mips/Symbol.map projects/tcp_ffcaia2008_head/lib/libc/mips/sys/brk.S projects/tcp_ffcaia2008_head/lib/libc/net/gai_strerror.c projects/tcp_ffcaia2008_head/lib/libc/net/getnameinfo.c projects/tcp_ffcaia2008_head/lib/libc/net/ip6opt.c projects/tcp_ffcaia2008_head/lib/libc/net/sctp_bindx.3 projects/tcp_ffcaia2008_head/lib/libc/net/sctp_connectx.3 projects/tcp_ffcaia2008_head/lib/libc/net/sctp_getaddrlen.3 projects/tcp_ffcaia2008_head/lib/libc/net/sctp_getassocid.3 projects/tcp_ffcaia2008_head/lib/libc/net/sctp_getpaddrs.3 projects/tcp_ffcaia2008_head/lib/libc/net/sctp_opt_info.3 projects/tcp_ffcaia2008_head/lib/libc/net/sctp_recvmsg.3 projects/tcp_ffcaia2008_head/lib/libc/net/sctp_send.3 projects/tcp_ffcaia2008_head/lib/libc/net/sctp_sendmsg.3 projects/tcp_ffcaia2008_head/lib/libc/nls/C.msg projects/tcp_ffcaia2008_head/lib/libc/nls/Makefile.inc projects/tcp_ffcaia2008_head/lib/libc/nls/es_ES.ISO8859-1.msg projects/tcp_ffcaia2008_head/lib/libc/nls/gl_ES.ISO8859-1.msg projects/tcp_ffcaia2008_head/lib/libc/nls/hu_HU.ISO8859-2.msg projects/tcp_ffcaia2008_head/lib/libc/nls/ko_KR.UTF-8.msg (contents, props changed) projects/tcp_ffcaia2008_head/lib/libc/nls/ko_KR.eucKR.msg (contents, props changed) projects/tcp_ffcaia2008_head/lib/libc/nls/msgcat.c projects/tcp_ffcaia2008_head/lib/libc/nls/nl_NL.ISO8859-1.msg projects/tcp_ffcaia2008_head/lib/libc/nls/uk_UA.UTF-8.msg (contents, props changed) projects/tcp_ffcaia2008_head/lib/libc/posix1e/Makefile.inc projects/tcp_ffcaia2008_head/lib/libc/posix1e/acl_delete_entry.c projects/tcp_ffcaia2008_head/lib/libc/posix1e/acl_from_text.c projects/tcp_ffcaia2008_head/lib/libc/posix1e/acl_to_text.c projects/tcp_ffcaia2008_head/lib/libc/rpc/clnt_raw.c projects/tcp_ffcaia2008_head/lib/libc/rpc/getnetconfig.c projects/tcp_ffcaia2008_head/lib/libc/rpc/getnetpath.c projects/tcp_ffcaia2008_head/lib/libc/rpc/getrpcent.c projects/tcp_ffcaia2008_head/lib/libc/rpc/key_call.c projects/tcp_ffcaia2008_head/lib/libc/rpc/svc.c projects/tcp_ffcaia2008_head/lib/libc/rpc/svc_auth_des.c projects/tcp_ffcaia2008_head/lib/libc/rpc/svc_raw.c projects/tcp_ffcaia2008_head/lib/libc/stdio/fgetws.c projects/tcp_ffcaia2008_head/lib/libc/stdio/findfp.c projects/tcp_ffcaia2008_head/lib/libc/stdio/fread.c projects/tcp_ffcaia2008_head/lib/libc/stdio/funopen.c projects/tcp_ffcaia2008_head/lib/libc/stdio/fvwrite.c projects/tcp_ffcaia2008_head/lib/libc/stdio/fwrite.c projects/tcp_ffcaia2008_head/lib/libc/stdio/getc.3 projects/tcp_ffcaia2008_head/lib/libc/stdio/getline.3 projects/tcp_ffcaia2008_head/lib/libc/stdio/printf.3 projects/tcp_ffcaia2008_head/lib/libc/stdio/sprintf.c projects/tcp_ffcaia2008_head/lib/libc/stdio/sscanf.c projects/tcp_ffcaia2008_head/lib/libc/stdio/vfwprintf.c projects/tcp_ffcaia2008_head/lib/libc/stdio/vsscanf.c projects/tcp_ffcaia2008_head/lib/libc/stdio/xprintf_time.c projects/tcp_ffcaia2008_head/lib/libc/stdlib/getenv.3 projects/tcp_ffcaia2008_head/lib/libc/stdlib/getenv.c projects/tcp_ffcaia2008_head/lib/libc/stdlib/malloc.c projects/tcp_ffcaia2008_head/lib/libc/stdlib/system.c projects/tcp_ffcaia2008_head/lib/libc/stdtime/localtime.c projects/tcp_ffcaia2008_head/lib/libc/stdtime/tzfile.5 projects/tcp_ffcaia2008_head/lib/libc/string/strcat.3 projects/tcp_ffcaia2008_head/lib/libc/string/strcmp.3 projects/tcp_ffcaia2008_head/lib/libc/string/strsignal.c projects/tcp_ffcaia2008_head/lib/libc/sys/__error.c projects/tcp_ffcaia2008_head/lib/libc/sys/accept.2 projects/tcp_ffcaia2008_head/lib/libc/sys/clock_gettime.2 projects/tcp_ffcaia2008_head/lib/libc/sys/cpuset.2 projects/tcp_ffcaia2008_head/lib/libc/sys/cpuset_getaffinity.2 projects/tcp_ffcaia2008_head/lib/libc/sys/kqueue.2 projects/tcp_ffcaia2008_head/lib/libc/sys/mmap.2 projects/tcp_ffcaia2008_head/lib/libc/sys/mount.2 projects/tcp_ffcaia2008_head/lib/libc/sys/sctp_generic_recvmsg.2 projects/tcp_ffcaia2008_head/lib/libc/sys/sctp_generic_sendmsg.2 projects/tcp_ffcaia2008_head/lib/libc/sys/sctp_peeloff.2 projects/tcp_ffcaia2008_head/lib/libc/sys/sendfile.2 projects/tcp_ffcaia2008_head/lib/libc/sys/setpgid.2 projects/tcp_ffcaia2008_head/lib/libc/sys/vfork.2 projects/tcp_ffcaia2008_head/lib/libc/sys/wait.2 projects/tcp_ffcaia2008_head/lib/libc/yp/yplib.c projects/tcp_ffcaia2008_head/lib/libcalendar/Makefile projects/tcp_ffcaia2008_head/lib/libcam/Makefile projects/tcp_ffcaia2008_head/lib/libcompat/Makefile projects/tcp_ffcaia2008_head/lib/libcrypt/Makefile projects/tcp_ffcaia2008_head/lib/libdevinfo/Makefile projects/tcp_ffcaia2008_head/lib/libdevinfo/devinfo.h projects/tcp_ffcaia2008_head/lib/libdevstat/Makefile projects/tcp_ffcaia2008_head/lib/libdwarf/Makefile projects/tcp_ffcaia2008_head/lib/libedit/Makefile projects/tcp_ffcaia2008_head/lib/libelf/Makefile projects/tcp_ffcaia2008_head/lib/libelf/elf.3 projects/tcp_ffcaia2008_head/lib/libexpat/Makefile projects/tcp_ffcaia2008_head/lib/libexpat/libbsdxml.3 projects/tcp_ffcaia2008_head/lib/libfetch/Makefile projects/tcp_ffcaia2008_head/lib/libfetch/fetch.3 projects/tcp_ffcaia2008_head/lib/libfetch/ftp.c projects/tcp_ffcaia2008_head/lib/libfetch/http.c projects/tcp_ffcaia2008_head/lib/libftpio/Makefile projects/tcp_ffcaia2008_head/lib/libgeom/geom_getxml.c projects/tcp_ffcaia2008_head/lib/libgeom/geom_util.c projects/tcp_ffcaia2008_head/lib/libgeom/geom_xml2tree.c projects/tcp_ffcaia2008_head/lib/libgeom/libgeom.3 projects/tcp_ffcaia2008_head/lib/libgeom/libgeom.h projects/tcp_ffcaia2008_head/lib/libgpib/Makefile projects/tcp_ffcaia2008_head/lib/libgssapi/Makefile projects/tcp_ffcaia2008_head/lib/libgssapi/gss_accept_sec_context.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_acquire_cred.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_add_cred.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_add_oid_set_member.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_canonicalize_name.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_compare_name.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_context_time.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_create_empty_oid_set.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_delete_sec_context.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_display_name.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_display_status.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_duplicate_name.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_export_name.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_export_sec_context.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_get_mic.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_import_name.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_import_sec_context.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_indicate_mechs.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_init_sec_context.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_inquire_context.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_inquire_cred.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_inquire_cred_by_mech.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_inquire_mechs_for_name.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_inquire_names_for_mech.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_mech_switch.c projects/tcp_ffcaia2008_head/lib/libgssapi/gss_process_context_token.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_release_buffer.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_release_cred.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_release_name.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_release_oid_set.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_test_oid_set_member.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_unwrap.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_verify_mic.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_wrap.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gss_wrap_size_limit.3 projects/tcp_ffcaia2008_head/lib/libgssapi/gssapi.3 projects/tcp_ffcaia2008_head/lib/libgssapi/mech.5 projects/tcp_ffcaia2008_head/lib/libipsec/Makefile projects/tcp_ffcaia2008_head/lib/libipx/Makefile projects/tcp_ffcaia2008_head/lib/libjail/Makefile projects/tcp_ffcaia2008_head/lib/libjail/jail.c projects/tcp_ffcaia2008_head/lib/libkiconv/Makefile projects/tcp_ffcaia2008_head/lib/libkvm/Makefile projects/tcp_ffcaia2008_head/lib/libkvm/kvm_i386.c projects/tcp_ffcaia2008_head/lib/libkvm/kvm_proc.c projects/tcp_ffcaia2008_head/lib/libmagic/Makefile projects/tcp_ffcaia2008_head/lib/libmd/Makefile projects/tcp_ffcaia2008_head/lib/libmilter/Makefile projects/tcp_ffcaia2008_head/lib/libmp/Makefile projects/tcp_ffcaia2008_head/lib/libncp/Makefile projects/tcp_ffcaia2008_head/lib/libngatm/Makefile projects/tcp_ffcaia2008_head/lib/libopie/Makefile projects/tcp_ffcaia2008_head/lib/libopie/config.h projects/tcp_ffcaia2008_head/lib/libpam/modules/Makefile.inc projects/tcp_ffcaia2008_head/lib/libpam/modules/pam_exec/Makefile projects/tcp_ffcaia2008_head/lib/libpam/modules/pam_krb5/Makefile projects/tcp_ffcaia2008_head/lib/libpam/modules/pam_lastlog/Makefile projects/tcp_ffcaia2008_head/lib/libpam/modules/pam_lastlog/pam_lastlog.8 projects/tcp_ffcaia2008_head/lib/libpam/modules/pam_lastlog/pam_lastlog.c projects/tcp_ffcaia2008_head/lib/libpam/modules/pam_radius/Makefile projects/tcp_ffcaia2008_head/lib/libpam/modules/pam_ssh/Makefile projects/tcp_ffcaia2008_head/lib/libpam/modules/pam_unix/pam_unix.8 projects/tcp_ffcaia2008_head/lib/libpcap/Makefile projects/tcp_ffcaia2008_head/lib/libpmc/Makefile projects/tcp_ffcaia2008_head/lib/libpmc/libpmc.c projects/tcp_ffcaia2008_head/lib/libpmc/pmc_attach.3 projects/tcp_ffcaia2008_head/lib/libproc/Makefile projects/tcp_ffcaia2008_head/lib/libradius/Makefile projects/tcp_ffcaia2008_head/lib/librpcsec_gss/Makefile projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_get_error.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_get_mech_info.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_get_mechanisms.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_get_principal_name.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_get_versions.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_getcred.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_is_installed.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_max_data_length.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_mech_to_oid.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_oid_to_mech.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_qop_to_num.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_seccreate.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_set_callback.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_set_defaults.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_set_svc_name.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpc_gss_svc_max_data_length.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpcsec_gss.3 projects/tcp_ffcaia2008_head/lib/librpcsec_gss/rpcsec_gss_conf.c projects/tcp_ffcaia2008_head/lib/librpcsec_gss/svc_rpcsec_gss.c projects/tcp_ffcaia2008_head/lib/librt/Makefile projects/tcp_ffcaia2008_head/lib/librt/mq.c projects/tcp_ffcaia2008_head/lib/librt/sigev_thread.c projects/tcp_ffcaia2008_head/lib/libsbuf/Makefile projects/tcp_ffcaia2008_head/lib/libsm/Makefile projects/tcp_ffcaia2008_head/lib/libsmdb/Makefile projects/tcp_ffcaia2008_head/lib/libsmutil/Makefile projects/tcp_ffcaia2008_head/lib/libstand/Makefile projects/tcp_ffcaia2008_head/lib/libstand/bzipfs.c projects/tcp_ffcaia2008_head/lib/libstand/dosfs.c projects/tcp_ffcaia2008_head/lib/libstand/gzipfs.c projects/tcp_ffcaia2008_head/lib/libstand/udp.c projects/tcp_ffcaia2008_head/lib/libtacplus/Makefile projects/tcp_ffcaia2008_head/lib/libtacplus/libtacplus.3 projects/tcp_ffcaia2008_head/lib/libtacplus/taclib.c projects/tcp_ffcaia2008_head/lib/libtacplus/taclib.h projects/tcp_ffcaia2008_head/lib/libtacplus/taclib_private.h projects/tcp_ffcaia2008_head/lib/libthr/arch/mips/include/pthread_md.h projects/tcp_ffcaia2008_head/lib/libthr/pthread.map projects/tcp_ffcaia2008_head/lib/libthr/thread/thr_init.c projects/tcp_ffcaia2008_head/lib/libthr/thread/thr_private.h projects/tcp_ffcaia2008_head/lib/libthr/thread/thr_sem.c projects/tcp_ffcaia2008_head/lib/libthr/thread/thr_umtx.c projects/tcp_ffcaia2008_head/lib/libthread_db/Makefile projects/tcp_ffcaia2008_head/lib/libufs/Makefile projects/tcp_ffcaia2008_head/lib/libugidfw/Makefile projects/tcp_ffcaia2008_head/lib/libugidfw/ugidfw.c projects/tcp_ffcaia2008_head/lib/libusb/Makefile projects/tcp_ffcaia2008_head/lib/libusb/libusb.h projects/tcp_ffcaia2008_head/lib/libusb/libusb10.c projects/tcp_ffcaia2008_head/lib/libusb/libusb10.h projects/tcp_ffcaia2008_head/lib/libusb/libusb10_desc.c projects/tcp_ffcaia2008_head/lib/libusb/libusb10_io.c projects/tcp_ffcaia2008_head/lib/libusb/libusb20.3 projects/tcp_ffcaia2008_head/lib/libusb/libusb20.c projects/tcp_ffcaia2008_head/lib/libusb/libusb20.h projects/tcp_ffcaia2008_head/lib/libusb/libusb20_desc.c projects/tcp_ffcaia2008_head/lib/libusb/libusb20_ugen20.c projects/tcp_ffcaia2008_head/lib/libutil/Makefile projects/tcp_ffcaia2008_head/lib/libutil/gr_util.c projects/tcp_ffcaia2008_head/lib/libutil/libutil.h projects/tcp_ffcaia2008_head/lib/libutil/login_tty.c projects/tcp_ffcaia2008_head/lib/libutil/pw_util.c projects/tcp_ffcaia2008_head/lib/libvgl/Makefile projects/tcp_ffcaia2008_head/lib/libwrap/Makefile projects/tcp_ffcaia2008_head/lib/liby/Makefile projects/tcp_ffcaia2008_head/lib/libypclnt/Makefile projects/tcp_ffcaia2008_head/lib/libz/Makefile projects/tcp_ffcaia2008_head/lib/ncurses/Makefile.inc projects/tcp_ffcaia2008_head/libexec/Makefile projects/tcp_ffcaia2008_head/libexec/Makefile.inc projects/tcp_ffcaia2008_head/libexec/atrun/Makefile projects/tcp_ffcaia2008_head/libexec/atrun/atrun.c projects/tcp_ffcaia2008_head/libexec/bootpd/Makefile projects/tcp_ffcaia2008_head/libexec/bootpd/Makefile.inc projects/tcp_ffcaia2008_head/libexec/bootpd/tools/Makefile.inc projects/tcp_ffcaia2008_head/libexec/comsat/comsat.8 projects/tcp_ffcaia2008_head/libexec/comsat/comsat.c projects/tcp_ffcaia2008_head/libexec/fingerd/Makefile projects/tcp_ffcaia2008_head/libexec/ftpd/ftpd.8 projects/tcp_ffcaia2008_head/libexec/ftpd/ftpd.c projects/tcp_ffcaia2008_head/libexec/ftpd/logwtmp.c projects/tcp_ffcaia2008_head/libexec/getty/Makefile projects/tcp_ffcaia2008_head/libexec/getty/ttys.5 projects/tcp_ffcaia2008_head/libexec/mail.local/Makefile projects/tcp_ffcaia2008_head/libexec/mknetid/Makefile projects/tcp_ffcaia2008_head/libexec/pppoed/Makefile projects/tcp_ffcaia2008_head/libexec/rbootd/Makefile projects/tcp_ffcaia2008_head/libexec/revnetgroup/Makefile projects/tcp_ffcaia2008_head/libexec/rlogind/rlogind.c projects/tcp_ffcaia2008_head/libexec/rpc.rquotad/Makefile projects/tcp_ffcaia2008_head/libexec/rpc.rstatd/Makefile projects/tcp_ffcaia2008_head/libexec/rpc.rusersd/Makefile projects/tcp_ffcaia2008_head/libexec/rpc.rusersd/rusers_proc.c projects/tcp_ffcaia2008_head/libexec/rpc.rusersd/rusersd.c projects/tcp_ffcaia2008_head/libexec/rpc.rwalld/Makefile projects/tcp_ffcaia2008_head/libexec/rpc.sprayd/Makefile projects/tcp_ffcaia2008_head/libexec/rshd/Makefile projects/tcp_ffcaia2008_head/libexec/rtld-aout/shlib.c projects/tcp_ffcaia2008_head/libexec/rtld-aout/support.c projects/tcp_ffcaia2008_head/libexec/rtld-elf/Makefile projects/tcp_ffcaia2008_head/libexec/rtld-elf/rtld.c projects/tcp_ffcaia2008_head/libexec/rtld-elf/rtld.h projects/tcp_ffcaia2008_head/libexec/smrsh/Makefile projects/tcp_ffcaia2008_head/libexec/talkd/Makefile projects/tcp_ffcaia2008_head/libexec/talkd/process.c projects/tcp_ffcaia2008_head/libexec/tcpd/Makefile projects/tcp_ffcaia2008_head/libexec/tftp-proxy/Makefile projects/tcp_ffcaia2008_head/libexec/tftpd/Makefile projects/tcp_ffcaia2008_head/libexec/ypxfr/Makefile projects/tcp_ffcaia2008_head/release/Makefile projects/tcp_ffcaia2008_head/release/amd64/boot_crunch.conf projects/tcp_ffcaia2008_head/release/doc/en_US.ISO8859-1/hardware/article.sgml projects/tcp_ffcaia2008_head/release/doc/share/misc/dev.archlist.txt projects/tcp_ffcaia2008_head/release/i386/boot_crunch.conf projects/tcp_ffcaia2008_head/release/pc98/boot_crunch.conf projects/tcp_ffcaia2008_head/release/picobsd/bridge/PICOBSD projects/tcp_ffcaia2008_head/release/picobsd/bridge/crunch.conf projects/tcp_ffcaia2008_head/release/picobsd/build/mfs.mtree projects/tcp_ffcaia2008_head/release/picobsd/build/picobsd projects/tcp_ffcaia2008_head/release/picobsd/floppy.tree/etc/master.passwd projects/tcp_ffcaia2008_head/release/picobsd/floppy.tree/etc/ttys projects/tcp_ffcaia2008_head/release/picobsd/tinyware/oinit/oinit.c projects/tcp_ffcaia2008_head/release/powerpc/boot_crunch.conf projects/tcp_ffcaia2008_head/release/sparc64/boot_crunch.conf projects/tcp_ffcaia2008_head/release/sun4v/boot_crunch.conf projects/tcp_ffcaia2008_head/sbin/adjkerntz/Makefile projects/tcp_ffcaia2008_head/sbin/atacontrol/atacontrol.c projects/tcp_ffcaia2008_head/sbin/camcontrol/camcontrol.8 projects/tcp_ffcaia2008_head/sbin/camcontrol/camcontrol.c projects/tcp_ffcaia2008_head/sbin/comcontrol/comcontrol.c projects/tcp_ffcaia2008_head/sbin/ddb/ddb_capture.c projects/tcp_ffcaia2008_head/sbin/dumpfs/dumpfs.c projects/tcp_ffcaia2008_head/sbin/fsck/fsck.c projects/tcp_ffcaia2008_head/sbin/fsck_ffs/fsutil.c projects/tcp_ffcaia2008_head/sbin/fsck_ffs/gjournal.c projects/tcp_ffcaia2008_head/sbin/fsck_ffs/main.c projects/tcp_ffcaia2008_head/sbin/fsck_ffs/pass1.c projects/tcp_ffcaia2008_head/sbin/fsck_ffs/pass2.c projects/tcp_ffcaia2008_head/sbin/geom/class/Makefile projects/tcp_ffcaia2008_head/sbin/geom/class/cache/Makefile projects/tcp_ffcaia2008_head/sbin/geom/class/mirror/geom_mirror.c projects/tcp_ffcaia2008_head/sbin/geom/class/mirror/gmirror.8 projects/tcp_ffcaia2008_head/sbin/geom/class/raid3/geom_raid3.c projects/tcp_ffcaia2008_head/sbin/geom/class/raid3/graid3.8 projects/tcp_ffcaia2008_head/sbin/geom/class/stripe/geom_stripe.c projects/tcp_ffcaia2008_head/sbin/geom/core/geom.8 projects/tcp_ffcaia2008_head/sbin/geom/core/geom.c projects/tcp_ffcaia2008_head/sbin/ggate/ggated/ggated.c projects/tcp_ffcaia2008_head/sbin/growfs/growfs.c projects/tcp_ffcaia2008_head/sbin/ifconfig/Makefile projects/tcp_ffcaia2008_head/sbin/ifconfig/af_inet.c projects/tcp_ffcaia2008_head/sbin/ifconfig/ifconfig.8 projects/tcp_ffcaia2008_head/sbin/ifconfig/ifconfig.c projects/tcp_ffcaia2008_head/sbin/ifconfig/ifieee80211.c projects/tcp_ffcaia2008_head/sbin/ifconfig/regdomain.c projects/tcp_ffcaia2008_head/sbin/init/init.8 projects/tcp_ffcaia2008_head/sbin/init/init.c projects/tcp_ffcaia2008_head/sbin/ipfw/dummynet.c projects/tcp_ffcaia2008_head/sbin/ipfw/ipfw.8 projects/tcp_ffcaia2008_head/sbin/ipfw/ipfw2.c projects/tcp_ffcaia2008_head/sbin/ipfw/ipfw2.h projects/tcp_ffcaia2008_head/sbin/kldconfig/Makefile projects/tcp_ffcaia2008_head/sbin/kldload/Makefile projects/tcp_ffcaia2008_head/sbin/kldstat/Makefile projects/tcp_ffcaia2008_head/sbin/ldconfig/ldconfig.c projects/tcp_ffcaia2008_head/sbin/mdconfig/Makefile projects/tcp_ffcaia2008_head/sbin/mdconfig/mdconfig.c projects/tcp_ffcaia2008_head/sbin/mknod/mknod.8 projects/tcp_ffcaia2008_head/sbin/mount/mntopts.h projects/tcp_ffcaia2008_head/sbin/mount/mount.8 projects/tcp_ffcaia2008_head/sbin/mount/mount.c projects/tcp_ffcaia2008_head/sbin/mount/vfslist.c projects/tcp_ffcaia2008_head/sbin/mount_cd9660/mount_cd9660.c projects/tcp_ffcaia2008_head/sbin/mount_msdosfs/mount_msdosfs.8 projects/tcp_ffcaia2008_head/sbin/mount_msdosfs/mount_msdosfs.c projects/tcp_ffcaia2008_head/sbin/mount_nfs/mount_nfs.8 projects/tcp_ffcaia2008_head/sbin/mount_nullfs/mount_nullfs.c projects/tcp_ffcaia2008_head/sbin/natd/Makefile projects/tcp_ffcaia2008_head/sbin/natd/natd.c projects/tcp_ffcaia2008_head/sbin/newfs/Makefile projects/tcp_ffcaia2008_head/sbin/newfs/mkfs.c projects/tcp_ffcaia2008_head/sbin/nfsiod/nfsiod.8 projects/tcp_ffcaia2008_head/sbin/nfsiod/nfsiod.c projects/tcp_ffcaia2008_head/sbin/rcorder/ealloc.c projects/tcp_ffcaia2008_head/sbin/rcorder/hash.c projects/tcp_ffcaia2008_head/sbin/rcorder/rcorder.c projects/tcp_ffcaia2008_head/sbin/reboot/Makefile projects/tcp_ffcaia2008_head/sbin/reboot/reboot.8 projects/tcp_ffcaia2008_head/sbin/reboot/reboot.c projects/tcp_ffcaia2008_head/sbin/routed/if.c projects/tcp_ffcaia2008_head/sbin/setkey/setkey.8 projects/tcp_ffcaia2008_head/sbin/shutdown/shutdown.c projects/tcp_ffcaia2008_head/sbin/swapon/Makefile projects/tcp_ffcaia2008_head/sbin/sysctl/sysctl.c projects/tcp_ffcaia2008_head/sbin/tunefs/Makefile projects/tcp_ffcaia2008_head/sbin/tunefs/tunefs.8 projects/tcp_ffcaia2008_head/sbin/tunefs/tunefs.c projects/tcp_ffcaia2008_head/sbin/umount/Makefile projects/tcp_ffcaia2008_head/sbin/umount/umount.c projects/tcp_ffcaia2008_head/secure/Makefile projects/tcp_ffcaia2008_head/secure/Makefile.inc projects/tcp_ffcaia2008_head/secure/lib/libssh/Makefile projects/tcp_ffcaia2008_head/secure/usr.bin/bdes/bdes.c projects/tcp_ffcaia2008_head/share/doc/usd/Makefile projects/tcp_ffcaia2008_head/share/examples/Makefile projects/tcp_ffcaia2008_head/share/examples/etc/make.conf projects/tcp_ffcaia2008_head/share/examples/kld/cdev/test/Makefile projects/tcp_ffcaia2008_head/share/examples/kld/cdev/test/testcdev.c projects/tcp_ffcaia2008_head/share/examples/kld/firmware/fwconsumer/fw_consumer.c projects/tcp_ffcaia2008_head/share/examples/kld/syscall/test/Makefile projects/tcp_ffcaia2008_head/share/examples/kld/syscall/test/call.c projects/tcp_ffcaia2008_head/share/examples/ses/srcs/chpmon.c projects/tcp_ffcaia2008_head/share/examples/ses/srcs/eltsub.c projects/tcp_ffcaia2008_head/share/examples/ses/srcs/getencstat.c projects/tcp_ffcaia2008_head/share/examples/ses/srcs/getnobj.c projects/tcp_ffcaia2008_head/share/examples/ses/srcs/getobjmap.c projects/tcp_ffcaia2008_head/share/examples/ses/srcs/getobjstat.c projects/tcp_ffcaia2008_head/share/examples/ses/srcs/inienc.c projects/tcp_ffcaia2008_head/share/examples/ses/srcs/sesd.c projects/tcp_ffcaia2008_head/share/examples/ses/srcs/setencstat.c projects/tcp_ffcaia2008_head/share/examples/ses/srcs/setobjstat.c projects/tcp_ffcaia2008_head/share/man/man3/Makefile projects/tcp_ffcaia2008_head/share/man/man3/pthread.3 projects/tcp_ffcaia2008_head/share/man/man3/pthread_attr.3 projects/tcp_ffcaia2008_head/share/man/man3/pthread_join.3 projects/tcp_ffcaia2008_head/share/man/man3/queue.3 projects/tcp_ffcaia2008_head/share/man/man3/sysexits.3 projects/tcp_ffcaia2008_head/share/man/man3/tree.3 projects/tcp_ffcaia2008_head/share/man/man4/Makefile projects/tcp_ffcaia2008_head/share/man/man4/acpi.4 projects/tcp_ffcaia2008_head/share/man/man4/acpi_asus.4 projects/tcp_ffcaia2008_head/share/man/man4/ata.4 projects/tcp_ffcaia2008_head/share/man/man4/ath.4 projects/tcp_ffcaia2008_head/share/man/man4/aue.4 projects/tcp_ffcaia2008_head/share/man/man4/axe.4 projects/tcp_ffcaia2008_head/share/man/man4/bridge.4 projects/tcp_ffcaia2008_head/share/man/man4/carp.4 projects/tcp_ffcaia2008_head/share/man/man4/cdce.4 projects/tcp_ffcaia2008_head/share/man/man4/cpufreq.4 projects/tcp_ffcaia2008_head/share/man/man4/dc.4 projects/tcp_ffcaia2008_head/share/man/man4/epair.4 projects/tcp_ffcaia2008_head/share/man/man4/faith.4 projects/tcp_ffcaia2008_head/share/man/man4/gem.4 projects/tcp_ffcaia2008_head/share/man/man4/gif.4 projects/tcp_ffcaia2008_head/share/man/man4/hme.4 projects/tcp_ffcaia2008_head/share/man/man4/hptrr.4 projects/tcp_ffcaia2008_head/share/man/man4/ifmib.4 projects/tcp_ffcaia2008_head/share/man/man4/ipsec.4 projects/tcp_ffcaia2008_head/share/man/man4/iwnfw.4 projects/tcp_ffcaia2008_head/share/man/man4/lge.4 projects/tcp_ffcaia2008_head/share/man/man4/mac.4 projects/tcp_ffcaia2008_head/share/man/man4/man4.i386/vpd.4 projects/tcp_ffcaia2008_head/share/man/man4/man4.powerpc/Makefile projects/tcp_ffcaia2008_head/share/man/man4/man4.powerpc/pmu.4 projects/tcp_ffcaia2008_head/share/man/man4/man4.sparc64/ebus.4 projects/tcp_ffcaia2008_head/share/man/man4/mfi.4 projects/tcp_ffcaia2008_head/share/man/man4/mpt.4 projects/tcp_ffcaia2008_head/share/man/man4/msk.4 projects/tcp_ffcaia2008_head/share/man/man4/mwlfw.4 projects/tcp_ffcaia2008_head/share/man/man4/ndis.4 projects/tcp_ffcaia2008_head/share/man/man4/netintro.4 projects/tcp_ffcaia2008_head/share/man/man4/nge.4 projects/tcp_ffcaia2008_head/share/man/man4/pcm.4 projects/tcp_ffcaia2008_head/share/man/man4/pcn.4 projects/tcp_ffcaia2008_head/share/man/man4/psm.4 projects/tcp_ffcaia2008_head/share/man/man4/pts.4 projects/tcp_ffcaia2008_head/share/man/man4/ral.4 projects/tcp_ffcaia2008_head/share/man/man4/re.4 projects/tcp_ffcaia2008_head/share/man/man4/rl.4 projects/tcp_ffcaia2008_head/share/man/man4/rue.4 projects/tcp_ffcaia2008_head/share/man/man4/rum.4 projects/tcp_ffcaia2008_head/share/man/man4/sctp.4 projects/tcp_ffcaia2008_head/share/man/man4/sf.4 projects/tcp_ffcaia2008_head/share/man/man4/sis.4 projects/tcp_ffcaia2008_head/share/man/man4/sk.4 projects/tcp_ffcaia2008_head/share/man/man4/smbus.4 projects/tcp_ffcaia2008_head/share/man/man4/snd_hda.4 projects/tcp_ffcaia2008_head/share/man/man4/snd_uaudio.4 projects/tcp_ffcaia2008_head/share/man/man4/ste.4 projects/tcp_ffcaia2008_head/share/man/man4/sysmouse.4 projects/tcp_ffcaia2008_head/share/man/man4/targ.4 projects/tcp_ffcaia2008_head/share/man/man4/termios.4 projects/tcp_ffcaia2008_head/share/man/man4/tty.4 projects/tcp_ffcaia2008_head/share/man/man4/u3g.4 projects/tcp_ffcaia2008_head/share/man/man4/uart.4 projects/tcp_ffcaia2008_head/share/man/man4/ucom.4 projects/tcp_ffcaia2008_head/share/man/man4/udav.4 projects/tcp_ffcaia2008_head/share/man/man4/ural.4 projects/tcp_ffcaia2008_head/share/man/man4/urio.4 projects/tcp_ffcaia2008_head/share/man/man4/urtw.4 projects/tcp_ffcaia2008_head/share/man/man4/vge.4 projects/tcp_ffcaia2008_head/share/man/man4/vr.4 projects/tcp_ffcaia2008_head/share/man/man4/watchdog.4 projects/tcp_ffcaia2008_head/share/man/man4/wi.4 projects/tcp_ffcaia2008_head/share/man/man4/wlan.4 projects/tcp_ffcaia2008_head/share/man/man5/Makefile projects/tcp_ffcaia2008_head/share/man/man5/ar.5 projects/tcp_ffcaia2008_head/share/man/man5/devfs.rules.5 projects/tcp_ffcaia2008_head/share/man/man5/make.conf.5 projects/tcp_ffcaia2008_head/share/man/man5/msdosfs.5 projects/tcp_ffcaia2008_head/share/man/man5/rc.conf.5 projects/tcp_ffcaia2008_head/share/man/man5/src.conf.5 projects/tcp_ffcaia2008_head/share/man/man7/adding_user.7 projects/tcp_ffcaia2008_head/share/man/man7/build.7 projects/tcp_ffcaia2008_head/share/man/man7/hier.7 projects/tcp_ffcaia2008_head/share/man/man7/release.7 projects/tcp_ffcaia2008_head/share/man/man7/security.7 projects/tcp_ffcaia2008_head/share/man/man8/Makefile projects/tcp_ffcaia2008_head/share/man/man8/rc.8 projects/tcp_ffcaia2008_head/share/man/man9/LOCK_PROFILING.9 projects/tcp_ffcaia2008_head/share/man/man9/Makefile projects/tcp_ffcaia2008_head/share/man/man9/VFS.9 projects/tcp_ffcaia2008_head/share/man/man9/VFS_CHECKEXP.9 projects/tcp_ffcaia2008_head/share/man/man9/VFS_FHTOVP.9 projects/tcp_ffcaia2008_head/share/man/man9/VOP_OPENCLOSE.9 projects/tcp_ffcaia2008_head/share/man/man9/ifnet.9 projects/tcp_ffcaia2008_head/share/man/man9/kthread.9 projects/tcp_ffcaia2008_head/share/man/man9/mac.9 projects/tcp_ffcaia2008_head/share/man/man9/namei.9 projects/tcp_ffcaia2008_head/share/man/man9/pci.9 projects/tcp_ffcaia2008_head/share/man/man9/sleep.9 projects/tcp_ffcaia2008_head/share/man/man9/sleepqueue.9 projects/tcp_ffcaia2008_head/share/man/man9/sysctl.9 projects/tcp_ffcaia2008_head/share/man/man9/usbdi.9 projects/tcp_ffcaia2008_head/share/man/man9/vm_page_bits.9 projects/tcp_ffcaia2008_head/share/misc/bsd-family-tree projects/tcp_ffcaia2008_head/share/misc/committers-doc.dot projects/tcp_ffcaia2008_head/share/misc/committers-ports.dot projects/tcp_ffcaia2008_head/share/misc/committers-src.dot projects/tcp_ffcaia2008_head/share/misc/iso3166 projects/tcp_ffcaia2008_head/share/misc/organization.dot projects/tcp_ffcaia2008_head/share/mk/bsd.dep.mk projects/tcp_ffcaia2008_head/share/mk/bsd.lib.mk projects/tcp_ffcaia2008_head/share/mk/bsd.libnames.mk projects/tcp_ffcaia2008_head/share/mk/bsd.own.mk projects/tcp_ffcaia2008_head/share/mk/bsd.subdir.mk projects/tcp_ffcaia2008_head/share/mk/bsd.sys.mk projects/tcp_ffcaia2008_head/share/mk/sys.mk projects/tcp_ffcaia2008_head/share/security/lomac-policy.contexts projects/tcp_ffcaia2008_head/share/skel/dot.profile projects/tcp_ffcaia2008_head/share/termcap/termcap.5 projects/tcp_ffcaia2008_head/share/termcap/termcap.src projects/tcp_ffcaia2008_head/share/timedef/ja_JP.SJIS.src projects/tcp_ffcaia2008_head/share/timedef/ja_JP.UTF-8.src projects/tcp_ffcaia2008_head/share/timedef/ja_JP.eucJP.src projects/tcp_ffcaia2008_head/share/zoneinfo/antarctica projects/tcp_ffcaia2008_head/share/zoneinfo/asia projects/tcp_ffcaia2008_head/share/zoneinfo/australasia projects/tcp_ffcaia2008_head/share/zoneinfo/etcetera projects/tcp_ffcaia2008_head/share/zoneinfo/europe projects/tcp_ffcaia2008_head/share/zoneinfo/northamerica projects/tcp_ffcaia2008_head/share/zoneinfo/zone.tab projects/tcp_ffcaia2008_head/sys/amd64/acpica/acpi_switch.S projects/tcp_ffcaia2008_head/sys/amd64/acpica/acpi_wakeup.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/bpf_jit_machdep.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/bpf_jit_machdep.h projects/tcp_ffcaia2008_head/sys/amd64/amd64/identcpu.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/initcpu.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/io.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/local_apic.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/machdep.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/mca.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/mem.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/mp_machdep.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/pmap.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/sys_machdep.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/trap.c projects/tcp_ffcaia2008_head/sys/amd64/amd64/vm_machdep.c projects/tcp_ffcaia2008_head/sys/amd64/conf/DEFAULTS projects/tcp_ffcaia2008_head/sys/amd64/conf/GENERIC projects/tcp_ffcaia2008_head/sys/amd64/conf/Makefile projects/tcp_ffcaia2008_head/sys/amd64/conf/NOTES projects/tcp_ffcaia2008_head/sys/amd64/conf/XENHVM projects/tcp_ffcaia2008_head/sys/amd64/ia32/ia32_reg.c projects/tcp_ffcaia2008_head/sys/amd64/ia32/ia32_syscall.c projects/tcp_ffcaia2008_head/sys/amd64/include/apicvar.h projects/tcp_ffcaia2008_head/sys/amd64/include/cpufunc.h projects/tcp_ffcaia2008_head/sys/amd64/include/iodev.h projects/tcp_ffcaia2008_head/sys/amd64/include/mca.h projects/tcp_ffcaia2008_head/sys/amd64/include/md_var.h projects/tcp_ffcaia2008_head/sys/amd64/include/param.h projects/tcp_ffcaia2008_head/sys/amd64/include/specialreg.h projects/tcp_ffcaia2008_head/sys/amd64/isa/clock.c projects/tcp_ffcaia2008_head/sys/amd64/isa/isa_dma.c projects/tcp_ffcaia2008_head/sys/arm/arm/busdma_machdep.c projects/tcp_ffcaia2008_head/sys/arm/arm/cpufunc.c projects/tcp_ffcaia2008_head/sys/arm/arm/db_trace.c projects/tcp_ffcaia2008_head/sys/arm/arm/elf_trampoline.c projects/tcp_ffcaia2008_head/sys/arm/arm/gdb_machdep.c projects/tcp_ffcaia2008_head/sys/arm/arm/machdep.c projects/tcp_ffcaia2008_head/sys/arm/arm/mem.c projects/tcp_ffcaia2008_head/sys/arm/arm/trap.c projects/tcp_ffcaia2008_head/sys/arm/arm/vm_machdep.c projects/tcp_ffcaia2008_head/sys/arm/at91/at91_machdep.c projects/tcp_ffcaia2008_head/sys/arm/at91/if_ate.c projects/tcp_ffcaia2008_head/sys/arm/conf/AVILA projects/tcp_ffcaia2008_head/sys/arm/conf/CAMBRIA projects/tcp_ffcaia2008_head/sys/arm/conf/CRB projects/tcp_ffcaia2008_head/sys/arm/conf/EP80219 projects/tcp_ffcaia2008_head/sys/arm/conf/GUMSTIX projects/tcp_ffcaia2008_head/sys/arm/conf/IQ31244 projects/tcp_ffcaia2008_head/sys/arm/conf/SIMICS projects/tcp_ffcaia2008_head/sys/arm/conf/SKYEYE projects/tcp_ffcaia2008_head/sys/arm/include/cpuconf.h projects/tcp_ffcaia2008_head/sys/arm/include/cpufunc.h projects/tcp_ffcaia2008_head/sys/arm/include/pmc_mdep.h projects/tcp_ffcaia2008_head/sys/arm/mv/mv_machdep.c projects/tcp_ffcaia2008_head/sys/arm/mv/mv_sata.c projects/tcp_ffcaia2008_head/sys/arm/sa11x0/assabet_machdep.c projects/tcp_ffcaia2008_head/sys/arm/xscale/ixp425/files.ixp425 projects/tcp_ffcaia2008_head/sys/boot/Makefile projects/tcp_ffcaia2008_head/sys/boot/common/Makefile.inc projects/tcp_ffcaia2008_head/sys/boot/common/boot.c projects/tcp_ffcaia2008_head/sys/boot/common/bootstrap.h projects/tcp_ffcaia2008_head/sys/boot/common/dev_net.c projects/tcp_ffcaia2008_head/sys/boot/common/module.c projects/tcp_ffcaia2008_head/sys/boot/efi/include/efilib.h projects/tcp_ffcaia2008_head/sys/boot/efi/libefi/Makefile projects/tcp_ffcaia2008_head/sys/boot/forth/loader.conf projects/tcp_ffcaia2008_head/sys/boot/forth/loader.conf.5 projects/tcp_ffcaia2008_head/sys/boot/i386/Makefile projects/tcp_ffcaia2008_head/sys/boot/i386/gptboot/gptboot.c projects/tcp_ffcaia2008_head/sys/boot/i386/libi386/Makefile projects/tcp_ffcaia2008_head/sys/boot/i386/libi386/biosacpi.c projects/tcp_ffcaia2008_head/sys/boot/i386/libi386/biosdisk.c projects/tcp_ffcaia2008_head/sys/boot/i386/libi386/biosmem.c projects/tcp_ffcaia2008_head/sys/boot/i386/libi386/elf32_freebsd.c projects/tcp_ffcaia2008_head/sys/boot/i386/libi386/elf64_freebsd.c projects/tcp_ffcaia2008_head/sys/boot/i386/libi386/libi386.h projects/tcp_ffcaia2008_head/sys/boot/i386/libi386/vidconsole.c projects/tcp_ffcaia2008_head/sys/boot/i386/loader/Makefile projects/tcp_ffcaia2008_head/sys/boot/i386/loader/conf.c projects/tcp_ffcaia2008_head/sys/boot/i386/loader/main.c projects/tcp_ffcaia2008_head/sys/boot/i386/zfsboot/zfsboot.c projects/tcp_ffcaia2008_head/sys/boot/i386/zfsboot/zfsldr.S projects/tcp_ffcaia2008_head/sys/boot/ia64/efi/conf.c projects/tcp_ffcaia2008_head/sys/boot/ia64/efi/main.c projects/tcp_ffcaia2008_head/sys/boot/ia64/efi/version projects/tcp_ffcaia2008_head/sys/boot/ofw/libofw/ofw_disk.c projects/tcp_ffcaia2008_head/sys/boot/pc98/Makefile.inc projects/tcp_ffcaia2008_head/sys/boot/pc98/boot0.5/selector.s projects/tcp_ffcaia2008_head/sys/boot/pc98/boot2/Makefile projects/tcp_ffcaia2008_head/sys/boot/pc98/btx/btx/btx.S projects/tcp_ffcaia2008_head/sys/boot/pc98/kgzldr/crt.s projects/tcp_ffcaia2008_head/sys/boot/pc98/libpc98/Makefile projects/tcp_ffcaia2008_head/sys/boot/pc98/libpc98/biosdisk.c projects/tcp_ffcaia2008_head/sys/boot/pc98/libpc98/biosmem.c projects/tcp_ffcaia2008_head/sys/boot/pc98/loader/main.c projects/tcp_ffcaia2008_head/sys/boot/sparc64/loader/Makefile projects/tcp_ffcaia2008_head/sys/boot/sparc64/loader/main.c projects/tcp_ffcaia2008_head/sys/boot/uboot/common/metadata.c projects/tcp_ffcaia2008_head/sys/boot/uboot/lib/glue.c projects/tcp_ffcaia2008_head/sys/boot/zfs/zfsimpl.c projects/tcp_ffcaia2008_head/sys/cam/ata/ata_all.c projects/tcp_ffcaia2008_head/sys/cam/ata/ata_all.h projects/tcp_ffcaia2008_head/sys/cam/ata/ata_da.c projects/tcp_ffcaia2008_head/sys/cam/ata/ata_pmp.c projects/tcp_ffcaia2008_head/sys/cam/ata/ata_xpt.c projects/tcp_ffcaia2008_head/sys/cam/cam.c projects/tcp_ffcaia2008_head/sys/cam/cam.h projects/tcp_ffcaia2008_head/sys/cam/cam_ccb.h projects/tcp_ffcaia2008_head/sys/cam/cam_periph.c projects/tcp_ffcaia2008_head/sys/cam/cam_periph.h projects/tcp_ffcaia2008_head/sys/cam/cam_queue.c projects/tcp_ffcaia2008_head/sys/cam/cam_queue.h projects/tcp_ffcaia2008_head/sys/cam/cam_xpt.c projects/tcp_ffcaia2008_head/sys/cam/cam_xpt_internal.h projects/tcp_ffcaia2008_head/sys/cam/scsi/scsi_cd.c projects/tcp_ffcaia2008_head/sys/cam/scsi/scsi_ch.c projects/tcp_ffcaia2008_head/sys/cam/scsi/scsi_da.c projects/tcp_ffcaia2008_head/sys/cam/scsi/scsi_ses.c projects/tcp_ffcaia2008_head/sys/cam/scsi/scsi_sg.c projects/tcp_ffcaia2008_head/sys/cam/scsi/scsi_targ_bh.c projects/tcp_ffcaia2008_head/sys/cam/scsi/scsi_xpt.c projects/tcp_ffcaia2008_head/sys/cddl/boot/zfs/zfsimpl.h projects/tcp_ffcaia2008_head/sys/cddl/boot/zfs/zfssubr.c projects/tcp_ffcaia2008_head/sys/cddl/compat/opensolaris/sys/time.h projects/tcp_ffcaia2008_head/sys/cddl/compat/opensolaris/sys/vnode.h projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_acl.h projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil.h projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h projects/tcp_ffcaia2008_head/sys/cddl/contrib/opensolaris/uts/common/sys/vnode.h projects/tcp_ffcaia2008_head/sys/compat/freebsd32/freebsd32_proto.h projects/tcp_ffcaia2008_head/sys/compat/freebsd32/freebsd32_syscall.h projects/tcp_ffcaia2008_head/sys/compat/freebsd32/freebsd32_syscalls.c projects/tcp_ffcaia2008_head/sys/compat/freebsd32/freebsd32_sysent.c projects/tcp_ffcaia2008_head/sys/compat/freebsd32/syscalls.master projects/tcp_ffcaia2008_head/sys/compat/linux/linux_file.c projects/tcp_ffcaia2008_head/sys/compat/linux/linux_futex.c projects/tcp_ffcaia2008_head/sys/compat/linux/linux_ioctl.c projects/tcp_ffcaia2008_head/sys/compat/linux/linux_ioctl.h projects/tcp_ffcaia2008_head/sys/compat/linux/linux_ipc.c projects/tcp_ffcaia2008_head/sys/compat/linux/linux_misc.c projects/tcp_ffcaia2008_head/sys/compat/linux/linux_signal.c projects/tcp_ffcaia2008_head/sys/compat/linux/linux_uid16.c projects/tcp_ffcaia2008_head/sys/compat/ndis/kern_ndis.c projects/tcp_ffcaia2008_head/sys/compat/ndis/kern_windrv.c projects/tcp_ffcaia2008_head/sys/compat/ndis/subr_hal.c projects/tcp_ffcaia2008_head/sys/compat/ndis/subr_ndis.c projects/tcp_ffcaia2008_head/sys/compat/ndis/subr_ntoskrnl.c projects/tcp_ffcaia2008_head/sys/compat/ndis/subr_pe.c projects/tcp_ffcaia2008_head/sys/compat/ndis/subr_usbd.c projects/tcp_ffcaia2008_head/sys/compat/svr4/svr4_misc.c projects/tcp_ffcaia2008_head/sys/compat/svr4/svr4_termios.c projects/tcp_ffcaia2008_head/sys/compat/x86bios/x86bios.c projects/tcp_ffcaia2008_head/sys/conf/Makefile.arm projects/tcp_ffcaia2008_head/sys/conf/Makefile.mips projects/tcp_ffcaia2008_head/sys/conf/NOTES projects/tcp_ffcaia2008_head/sys/conf/files projects/tcp_ffcaia2008_head/sys/conf/files.amd64 projects/tcp_ffcaia2008_head/sys/conf/files.arm projects/tcp_ffcaia2008_head/sys/conf/files.i386 projects/tcp_ffcaia2008_head/sys/conf/files.ia64 projects/tcp_ffcaia2008_head/sys/conf/files.mips projects/tcp_ffcaia2008_head/sys/conf/files.pc98 projects/tcp_ffcaia2008_head/sys/conf/files.sparc64 projects/tcp_ffcaia2008_head/sys/conf/files.sun4v projects/tcp_ffcaia2008_head/sys/conf/kern.mk projects/tcp_ffcaia2008_head/sys/conf/ldscript.mips projects/tcp_ffcaia2008_head/sys/conf/makeLINT.mk projects/tcp_ffcaia2008_head/sys/conf/options projects/tcp_ffcaia2008_head/sys/conf/options.arm projects/tcp_ffcaia2008_head/sys/conf/options.i386 projects/tcp_ffcaia2008_head/sys/conf/options.mips projects/tcp_ffcaia2008_head/sys/conf/options.pc98 projects/tcp_ffcaia2008_head/sys/conf/options.sparc64 projects/tcp_ffcaia2008_head/sys/contrib/altq/altq/altq_hfsc.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/changes.txt projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/common/adfile.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/common/adisasm.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/common/adwalk.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/common/dmextern.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/common/dmrestag.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/common/dmtable.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/common/dmtbdump.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/common/dmtbinfo.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/common/getopt.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslcodegen.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslcompile.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslcompiler.y projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/asldefine.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslerror.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslfiles.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslfold.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslglobal.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/asllength.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/asllisting.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslload.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/asllookup.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslmain.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslmap.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslopcodes.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/asloperands.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslopt.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslresource.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslrestype1.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslrestype2.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslstartup.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslstubs.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/asltransform.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/asltree.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/asltypes.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/compiler/aslutils.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/debugger/dbcmds.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/debugger/dbdisply.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/debugger/dbexec.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/debugger/dbfileio.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/debugger/dbhistry.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/debugger/dbinput.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/debugger/dbstats.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/debugger/dbutils.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/debugger/dbxface.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/disassembler/dmbuffer.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/disassembler/dmnames.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/disassembler/dmobject.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/disassembler/dmopcode.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/disassembler/dmresrc.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/disassembler/dmresrcl.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/disassembler/dmresrcs.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/disassembler/dmutils.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/disassembler/dmwalk.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dsfield.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dsinit.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dsmethod.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dsmthdat.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dsobject.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dsopcode.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dsutils.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dswexec.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dswload.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dswscope.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/dispatcher/dswstate.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/events/evevent.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/events/evgpe.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/events/evgpeblk.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/events/evmisc.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/events/evregion.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/events/evrgnini.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/events/evsci.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/events/evxface.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/events/evxfevnt.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/events/evxfregn.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exconfig.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exconvrt.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/excreate.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exdump.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exfield.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exfldio.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exmisc.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exmutex.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exnames.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exoparg1.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exoparg2.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exoparg3.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exoparg6.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exprep.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exregion.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exresnte.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exresolv.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exresop.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exstore.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exstoren.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exstorob.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exsystem.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/executer/exutils.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/hardware/hwacpi.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/hardware/hwgpe.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/hardware/hwregs.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/hardware/hwsleep.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/hardware/hwtimer.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/hardware/hwvalid.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/hardware/hwxface.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acapps.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/accommon.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acconfig.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acdebug.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acdisasm.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acdispat.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acevents.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acexcep.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acglobal.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/achware.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acinterp.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/aclocal.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acmacros.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acnames.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acnamesp.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acobject.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acopcode.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acoutput.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acparser.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acpi.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acpiosxf.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acpixf.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acpredef.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acresrc.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acrestyp.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acstruct.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/actables.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/actbl.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/actbl1.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/actbl2.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/actypes.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/acutils.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/amlcode.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/amlresrc.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/platform/acenv.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/platform/acfreebsd.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/include/platform/acgcc.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsaccess.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsalloc.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsdump.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsdumpdv.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nseval.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsinit.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsload.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsnames.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsobject.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsparse.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nspredef.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsrepair.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nssearch.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsutils.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nswalk.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsxfeval.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsxfname.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/namespace/nsxfobj.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/osunixxf.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/parser/psargs.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/parser/psloop.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/parser/psopcode.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/parser/psparse.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/parser/psscope.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/parser/pstree.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/parser/psutils.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/parser/pswalk.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/parser/psxface.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rsaddr.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rscalc.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rscreate.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rsdump.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rsinfo.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rsio.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rsirq.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rslist.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rsmemory.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rsmisc.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rsutils.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/resources/rsxface.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/tables/tbfadt.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/tables/tbfind.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/tables/tbinstal.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/tables/tbutils.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/tables/tbxface.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/tables/tbxfroot.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/tools/acpiexec/aecommon.h projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utalloc.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utcache.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utcopy.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utdebug.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utdelete.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/uteval.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utglobal.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utids.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utinit.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utlock.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utmath.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utmisc.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utmutex.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utobject.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utresrc.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utstate.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/uttrack.c projects/tcp_ffcaia2008_head/sys/contrib/dev/acpica/utilities/utxface.c projects/tcp_ffcaia2008_head/sys/contrib/dev/uath/ar5523.bin.uu projects/tcp_ffcaia2008_head/sys/contrib/ngatm/netnatm/api/cc_conn.c projects/tcp_ffcaia2008_head/sys/contrib/pf/net/if_pfsync.c projects/tcp_ffcaia2008_head/sys/contrib/pf/net/if_pfsync.h projects/tcp_ffcaia2008_head/sys/contrib/pf/net/pf.c projects/tcp_ffcaia2008_head/sys/contrib/pf/net/pfvar.h projects/tcp_ffcaia2008_head/sys/contrib/rdma/krping/krping.c projects/tcp_ffcaia2008_head/sys/ddb/db_command.c projects/tcp_ffcaia2008_head/sys/ddb/db_ps.c projects/tcp_ffcaia2008_head/sys/dev/aac/aac.c projects/tcp_ffcaia2008_head/sys/dev/aac/aac_cam.c projects/tcp_ffcaia2008_head/sys/dev/aac/aacvar.h projects/tcp_ffcaia2008_head/sys/dev/acpi_support/acpi_ibm.c projects/tcp_ffcaia2008_head/sys/dev/acpi_support/acpi_panasonic.c projects/tcp_ffcaia2008_head/sys/dev/acpi_support/acpi_wmi.c projects/tcp_ffcaia2008_head/sys/dev/acpica/Osd/OsdHardware.c projects/tcp_ffcaia2008_head/sys/dev/acpica/Osd/OsdSchedule.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi_cpu.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi_dock.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi_ec.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi_hpet.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi_if.m projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi_package.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi_pci.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi_powerres.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi_smbat.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpi_video.c projects/tcp_ffcaia2008_head/sys/dev/acpica/acpivar.h projects/tcp_ffcaia2008_head/sys/dev/adb/adb.h projects/tcp_ffcaia2008_head/sys/dev/adb/adb_bus.c projects/tcp_ffcaia2008_head/sys/dev/adb/adb_mouse.c projects/tcp_ffcaia2008_head/sys/dev/adlink/adlink.c projects/tcp_ffcaia2008_head/sys/dev/ae/if_ae.c projects/tcp_ffcaia2008_head/sys/dev/agp/agp.c projects/tcp_ffcaia2008_head/sys/dev/agp/agp_via.c projects/tcp_ffcaia2008_head/sys/dev/ahci/ahci.c projects/tcp_ffcaia2008_head/sys/dev/ahci/ahci.h projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/ahd_pci.c projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/aic79xx.c projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/aic79xx.h projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/aic79xx_osm.c projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/aic79xx_osm.h projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/aic79xx_pci.c projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/aicasm/Makefile projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/aicasm/aicasm.c projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/aicasm/aicasm_macro_scan.l projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/aicasm/aicasm_scan.l projects/tcp_ffcaia2008_head/sys/dev/aic7xxx/aicasm/aicasm_symbol.c projects/tcp_ffcaia2008_head/sys/dev/amd/amd.c projects/tcp_ffcaia2008_head/sys/dev/amr/amr.c projects/tcp_ffcaia2008_head/sys/dev/an/if_an.c projects/tcp_ffcaia2008_head/sys/dev/an/if_an_isa.c projects/tcp_ffcaia2008_head/sys/dev/an/if_an_pccard.c projects/tcp_ffcaia2008_head/sys/dev/an/if_an_pci.c projects/tcp_ffcaia2008_head/sys/dev/an/if_anreg.h projects/tcp_ffcaia2008_head/sys/dev/arcmsr/arcmsr.c projects/tcp_ffcaia2008_head/sys/dev/arcmsr/arcmsr.h projects/tcp_ffcaia2008_head/sys/dev/ata/ata-all.c projects/tcp_ffcaia2008_head/sys/dev/ata/ata-all.h projects/tcp_ffcaia2008_head/sys/dev/ata/ata-disk.c projects/tcp_ffcaia2008_head/sys/dev/ata/ata-dma.c projects/tcp_ffcaia2008_head/sys/dev/ata/ata-lowlevel.c projects/tcp_ffcaia2008_head/sys/dev/ata/ata-pci.c projects/tcp_ffcaia2008_head/sys/dev/ata/ata-pci.h projects/tcp_ffcaia2008_head/sys/dev/ata/ata-queue.c projects/tcp_ffcaia2008_head/sys/dev/ata/ata-raid.c projects/tcp_ffcaia2008_head/sys/dev/ata/ata-sata.c projects/tcp_ffcaia2008_head/sys/dev/ata/ata_if.m projects/tcp_ffcaia2008_head/sys/dev/ata/atapi-cd.c projects/tcp_ffcaia2008_head/sys/dev/ata/atapi-cd.h projects/tcp_ffcaia2008_head/sys/dev/ata/atapi-fd.c projects/tcp_ffcaia2008_head/sys/dev/ata/atapi-tape.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-acard.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-acerlabs.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-ahci.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-amd.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-ati.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-cenatek.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-cypress.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-cyrix.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-highpoint.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-intel.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-ite.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-jmicron.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-marvell.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-micron.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-national.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-netcell.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-nvidia.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-promise.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-serverworks.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-siliconimage.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-sis.c projects/tcp_ffcaia2008_head/sys/dev/ata/chipsets/ata-via.c projects/tcp_ffcaia2008_head/sys/dev/ath/ath_hal/ah_regdomain.c projects/tcp_ffcaia2008_head/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c projects/tcp_ffcaia2008_head/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c projects/tcp_ffcaia2008_head/sys/dev/ath/ath_hal/ar5212/ar5212_interrupts.c projects/tcp_ffcaia2008_head/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c projects/tcp_ffcaia2008_head/sys/dev/ath/if_ath.c projects/tcp_ffcaia2008_head/sys/dev/atkbdc/psm.c projects/tcp_ffcaia2008_head/sys/dev/auxio/auxio.c projects/tcp_ffcaia2008_head/sys/dev/bce/if_bce.c projects/tcp_ffcaia2008_head/sys/dev/bce/if_bcereg.h projects/tcp_ffcaia2008_head/sys/dev/bge/if_bge.c projects/tcp_ffcaia2008_head/sys/dev/bge/if_bgereg.h projects/tcp_ffcaia2008_head/sys/dev/bktr/bktr_i2c.c projects/tcp_ffcaia2008_head/sys/dev/bktr/bktr_os.c projects/tcp_ffcaia2008_head/sys/dev/bwi/if_bwi.c projects/tcp_ffcaia2008_head/sys/dev/bwi/if_bwivar.h projects/tcp_ffcaia2008_head/sys/dev/cardbus/cardbus.c projects/tcp_ffcaia2008_head/sys/dev/cardbus/cardbus_cis.c projects/tcp_ffcaia2008_head/sys/dev/ce/if_ce.c projects/tcp_ffcaia2008_head/sys/dev/cfe/cfe_api.c projects/tcp_ffcaia2008_head/sys/dev/cfe/cfe_console.c projects/tcp_ffcaia2008_head/sys/dev/ciss/ciss.c projects/tcp_ffcaia2008_head/sys/dev/cm/smc90cx6.c projects/tcp_ffcaia2008_head/sys/dev/cm/smc90cx6var.h projects/tcp_ffcaia2008_head/sys/dev/cp/if_cp.c projects/tcp_ffcaia2008_head/sys/dev/cs/if_cs.c projects/tcp_ffcaia2008_head/sys/dev/cs/if_csreg.h projects/tcp_ffcaia2008_head/sys/dev/ct/ct_isa.c projects/tcp_ffcaia2008_head/sys/dev/ctau/if_ct.c projects/tcp_ffcaia2008_head/sys/dev/cx/if_cx.c projects/tcp_ffcaia2008_head/sys/dev/cxgb/common/cxgb_ael1002.c projects/tcp_ffcaia2008_head/sys/dev/cxgb/common/cxgb_aq100x.c projects/tcp_ffcaia2008_head/sys/dev/cxgb/common/cxgb_common.h projects/tcp_ffcaia2008_head/sys/dev/cxgb/common/cxgb_t3_hw.c projects/tcp_ffcaia2008_head/sys/dev/cxgb/common/cxgb_xgmac.c projects/tcp_ffcaia2008_head/sys/dev/cxgb/cxgb_adapter.h projects/tcp_ffcaia2008_head/sys/dev/cxgb/cxgb_main.c projects/tcp_ffcaia2008_head/sys/dev/cxgb/cxgb_sge.c projects/tcp_ffcaia2008_head/sys/dev/cxgb/cxgb_t3fw.h projects/tcp_ffcaia2008_head/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c projects/tcp_ffcaia2008_head/sys/dev/cxgb/ulp/tom/cxgb_vm.c projects/tcp_ffcaia2008_head/sys/dev/dc/if_dc.c projects/tcp_ffcaia2008_head/sys/dev/dc/if_dcreg.h projects/tcp_ffcaia2008_head/sys/dev/de/if_de.c projects/tcp_ffcaia2008_head/sys/dev/de/if_devar.h projects/tcp_ffcaia2008_head/sys/dev/dpms/dpms.c projects/tcp_ffcaia2008_head/sys/dev/dpt/dpt.h projects/tcp_ffcaia2008_head/sys/dev/dpt/dpt_scsi.c projects/tcp_ffcaia2008_head/sys/dev/drm/drm_vm.c projects/tcp_ffcaia2008_head/sys/dev/e1000/LICENSE projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_80003es2lan.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_80003es2lan.h projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_82540.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_82541.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_82542.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_82543.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_82571.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_82575.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_82575.h projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_api.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_api.h projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_defines.h projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_hw.h projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_ich8lan.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_ich8lan.h projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_mac.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_mac.h projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_manage.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_osdep.h projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_phy.c projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_phy.h projects/tcp_ffcaia2008_head/sys/dev/e1000/e1000_regs.h projects/tcp_ffcaia2008_head/sys/dev/e1000/if_em.c projects/tcp_ffcaia2008_head/sys/dev/e1000/if_em.h projects/tcp_ffcaia2008_head/sys/dev/e1000/if_igb.c projects/tcp_ffcaia2008_head/sys/dev/e1000/if_igb.h projects/tcp_ffcaia2008_head/sys/dev/ed/if_ed.c projects/tcp_ffcaia2008_head/sys/dev/ed/if_ed_pccard.c projects/tcp_ffcaia2008_head/sys/dev/ed/if_edvar.h projects/tcp_ffcaia2008_head/sys/dev/ep/if_ep.c projects/tcp_ffcaia2008_head/sys/dev/ep/if_epvar.h projects/tcp_ffcaia2008_head/sys/dev/et/if_et.c projects/tcp_ffcaia2008_head/sys/dev/et/if_etreg.h projects/tcp_ffcaia2008_head/sys/dev/et/if_etvar.h projects/tcp_ffcaia2008_head/sys/dev/ex/if_ex.c projects/tcp_ffcaia2008_head/sys/dev/exca/excareg.h projects/tcp_ffcaia2008_head/sys/dev/fatm/if_fatm.c projects/tcp_ffcaia2008_head/sys/dev/fatm/if_fatmvar.h projects/tcp_ffcaia2008_head/sys/dev/fb/creator.c projects/tcp_ffcaia2008_head/sys/dev/fb/fb.c projects/tcp_ffcaia2008_head/sys/dev/fb/fbreg.h projects/tcp_ffcaia2008_head/sys/dev/fb/machfb.c projects/tcp_ffcaia2008_head/sys/dev/fb/s3_pci.c projects/tcp_ffcaia2008_head/sys/dev/fb/vesa.c projects/tcp_ffcaia2008_head/sys/dev/fb/vga.c projects/tcp_ffcaia2008_head/sys/dev/fb/vgareg.h projects/tcp_ffcaia2008_head/sys/dev/fdc/fdc.c projects/tcp_ffcaia2008_head/sys/dev/fdc/fdc_acpi.c projects/tcp_ffcaia2008_head/sys/dev/fe/if_fe_pccard.c projects/tcp_ffcaia2008_head/sys/dev/firewire/fwdev.c projects/tcp_ffcaia2008_head/sys/dev/firewire/fwmem.c projects/tcp_ffcaia2008_head/sys/dev/firewire/sbp.c projects/tcp_ffcaia2008_head/sys/dev/hatm/if_hatm.c projects/tcp_ffcaia2008_head/sys/dev/hifn/hifn7751.c projects/tcp_ffcaia2008_head/sys/dev/hptmv/entry.c projects/tcp_ffcaia2008_head/sys/dev/hptrr/hptrr_osm_bsd.c projects/tcp_ffcaia2008_head/sys/dev/hwpmc/hwpmc_arm.c projects/tcp_ffcaia2008_head/sys/dev/hwpmc/hwpmc_core.c projects/tcp_ffcaia2008_head/sys/dev/hwpmc/hwpmc_intel.c projects/tcp_ffcaia2008_head/sys/dev/hwpmc/hwpmc_logging.c projects/tcp_ffcaia2008_head/sys/dev/hwpmc/hwpmc_mod.c projects/tcp_ffcaia2008_head/sys/dev/hwpmc/hwpmc_x86.c projects/tcp_ffcaia2008_head/sys/dev/hwpmc/pmc_events.h projects/tcp_ffcaia2008_head/sys/dev/ic/ns16550.h projects/tcp_ffcaia2008_head/sys/dev/ichsmb/ichsmb_pci.c projects/tcp_ffcaia2008_head/sys/dev/ichwd/ichwd.c projects/tcp_ffcaia2008_head/sys/dev/ichwd/ichwd.h projects/tcp_ffcaia2008_head/sys/dev/ieee488/ibfoo.c projects/tcp_ffcaia2008_head/sys/dev/ieee488/pcii.c projects/tcp_ffcaia2008_head/sys/dev/ieee488/tnt4882.c projects/tcp_ffcaia2008_head/sys/dev/ieee488/upd7210.c projects/tcp_ffcaia2008_head/sys/dev/ieee488/upd7210.h projects/tcp_ffcaia2008_head/sys/dev/if_ndis/if_ndis.c projects/tcp_ffcaia2008_head/sys/dev/if_ndis/if_ndis_usb.c projects/tcp_ffcaia2008_head/sys/dev/iir/iir.c projects/tcp_ffcaia2008_head/sys/dev/iir/iir_ctrl.c projects/tcp_ffcaia2008_head/sys/dev/iir/iir_pci.c projects/tcp_ffcaia2008_head/sys/dev/io/iodev.c projects/tcp_ffcaia2008_head/sys/dev/ipmi/ipmi.c projects/tcp_ffcaia2008_head/sys/dev/ips/ips_pci.c projects/tcp_ffcaia2008_head/sys/dev/iscsi/initiator/isc_sm.c projects/tcp_ffcaia2008_head/sys/dev/isp/isp.c projects/tcp_ffcaia2008_head/sys/dev/isp/isp_freebsd.c projects/tcp_ffcaia2008_head/sys/dev/isp/isp_freebsd.h projects/tcp_ffcaia2008_head/sys/dev/isp/isp_library.c projects/tcp_ffcaia2008_head/sys/dev/isp/isp_sbus.c projects/tcp_ffcaia2008_head/sys/dev/iwn/if_iwn.c projects/tcp_ffcaia2008_head/sys/dev/iwn/if_iwnreg.h projects/tcp_ffcaia2008_head/sys/dev/iwn/if_iwnvar.h projects/tcp_ffcaia2008_head/sys/dev/ixgb/if_ixgb.c projects/tcp_ffcaia2008_head/sys/dev/ixgb/if_ixgb.h projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe.c projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe.h projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe_82598.c projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe_82599.c projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe_api.c projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe_api.h projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe_common.c projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe_common.h projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe_osdep.h projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe_phy.c projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe_phy.h projects/tcp_ffcaia2008_head/sys/dev/ixgbe/ixgbe_type.h projects/tcp_ffcaia2008_head/sys/dev/jme/if_jme.c projects/tcp_ffcaia2008_head/sys/dev/ksyms/ksyms.c projects/tcp_ffcaia2008_head/sys/dev/led/led.c projects/tcp_ffcaia2008_head/sys/dev/lge/if_lge.c projects/tcp_ffcaia2008_head/sys/dev/lge/if_lgereg.h projects/tcp_ffcaia2008_head/sys/dev/lmc/if_lmc.c projects/tcp_ffcaia2008_head/sys/dev/lmc/if_lmc.h projects/tcp_ffcaia2008_head/sys/dev/malo/if_malo.c projects/tcp_ffcaia2008_head/sys/dev/malo/if_malo.h projects/tcp_ffcaia2008_head/sys/dev/mc146818/mc146818.c projects/tcp_ffcaia2008_head/sys/dev/mc146818/mc146818reg.h projects/tcp_ffcaia2008_head/sys/dev/mc146818/mc146818var.h projects/tcp_ffcaia2008_head/sys/dev/md/md.c projects/tcp_ffcaia2008_head/sys/dev/mge/if_mge.c projects/tcp_ffcaia2008_head/sys/dev/mii/brgphy.c projects/tcp_ffcaia2008_head/sys/dev/mii/ip1000phy.c projects/tcp_ffcaia2008_head/sys/dev/mii/miidevs projects/tcp_ffcaia2008_head/sys/dev/mii/tdkphy.c projects/tcp_ffcaia2008_head/sys/dev/mk48txx/mk48txx.c projects/tcp_ffcaia2008_head/sys/dev/mk48txx/mk48txxreg.h projects/tcp_ffcaia2008_head/sys/dev/mk48txx/mk48txxvar.h projects/tcp_ffcaia2008_head/sys/dev/mly/mly.c projects/tcp_ffcaia2008_head/sys/dev/mpt/mpt_pci.c projects/tcp_ffcaia2008_head/sys/dev/msk/if_msk.c projects/tcp_ffcaia2008_head/sys/dev/msk/if_mskreg.h projects/tcp_ffcaia2008_head/sys/dev/mwl/if_mwl.c projects/tcp_ffcaia2008_head/sys/dev/mwl/if_mwlvar.h projects/tcp_ffcaia2008_head/sys/dev/mxge/eth_z8e.h projects/tcp_ffcaia2008_head/sys/dev/mxge/ethp_z8e.h projects/tcp_ffcaia2008_head/sys/dev/mxge/if_mxge.c projects/tcp_ffcaia2008_head/sys/dev/mxge/rss_eth_z8e.h projects/tcp_ffcaia2008_head/sys/dev/mxge/rss_ethp_z8e.h projects/tcp_ffcaia2008_head/sys/dev/my/if_my.c projects/tcp_ffcaia2008_head/sys/dev/my/if_myreg.h projects/tcp_ffcaia2008_head/sys/dev/nfe/if_nfe.c projects/tcp_ffcaia2008_head/sys/dev/nve/if_nve.c projects/tcp_ffcaia2008_head/sys/dev/nve/if_nvereg.h projects/tcp_ffcaia2008_head/sys/dev/nxge/if_nxge.c projects/tcp_ffcaia2008_head/sys/dev/patm/if_patm_attach.c projects/tcp_ffcaia2008_head/sys/dev/patm/if_patm_intr.c projects/tcp_ffcaia2008_head/sys/dev/pccard/card_if.m projects/tcp_ffcaia2008_head/sys/dev/pci/pci.c projects/tcp_ffcaia2008_head/sys/dev/pci/pci_pci.c projects/tcp_ffcaia2008_head/sys/dev/pci/pci_private.h projects/tcp_ffcaia2008_head/sys/dev/pci/vga_pci.c projects/tcp_ffcaia2008_head/sys/dev/pcn/if_pcn.c projects/tcp_ffcaia2008_head/sys/dev/pcn/if_pcnreg.h projects/tcp_ffcaia2008_head/sys/dev/pdq/if_fea.c projects/tcp_ffcaia2008_head/sys/dev/pdq/if_fpa.c projects/tcp_ffcaia2008_head/sys/dev/pdq/pdq_freebsd.h projects/tcp_ffcaia2008_head/sys/dev/pdq/pdq_ifsubr.c projects/tcp_ffcaia2008_head/sys/dev/puc/puc.c projects/tcp_ffcaia2008_head/sys/dev/puc/pucdata.c projects/tcp_ffcaia2008_head/sys/dev/re/if_re.c projects/tcp_ffcaia2008_head/sys/dev/safe/safe.c projects/tcp_ffcaia2008_head/sys/dev/siis/siis.c projects/tcp_ffcaia2008_head/sys/dev/siis/siis.h projects/tcp_ffcaia2008_head/sys/dev/sk/if_sk.c projects/tcp_ffcaia2008_head/sys/dev/sn/if_sn.c projects/tcp_ffcaia2008_head/sys/dev/sn/if_sn_pccard.c projects/tcp_ffcaia2008_head/sys/dev/sn/if_snvar.h projects/tcp_ffcaia2008_head/sys/dev/sound/pci/hda/hdac.c projects/tcp_ffcaia2008_head/sys/dev/sound/pci/hda/hdac_private.h projects/tcp_ffcaia2008_head/sys/dev/sound/pci/maestro3.c projects/tcp_ffcaia2008_head/sys/dev/sound/pcm/channel.c projects/tcp_ffcaia2008_head/sys/dev/sound/pcm/dsp.c projects/tcp_ffcaia2008_head/sys/dev/sound/pcm/mixer.c projects/tcp_ffcaia2008_head/sys/dev/sound/pcm/sndstat.c projects/tcp_ffcaia2008_head/sys/dev/sound/pcm/sndstat.h projects/tcp_ffcaia2008_head/sys/dev/sound/usb/uaudio.c projects/tcp_ffcaia2008_head/sys/dev/ste/if_ste.c projects/tcp_ffcaia2008_head/sys/dev/ste/if_stereg.h projects/tcp_ffcaia2008_head/sys/dev/stge/if_stge.c projects/tcp_ffcaia2008_head/sys/dev/sym/sym_hipd.c projects/tcp_ffcaia2008_head/sys/dev/syscons/scterm-teken.c projects/tcp_ffcaia2008_head/sys/dev/syscons/scvidctl.c projects/tcp_ffcaia2008_head/sys/dev/syscons/syscons.c projects/tcp_ffcaia2008_head/sys/dev/syscons/syscons.h projects/tcp_ffcaia2008_head/sys/dev/syscons/sysmouse.c projects/tcp_ffcaia2008_head/sys/dev/tdfx/tdfx_pci.c projects/tcp_ffcaia2008_head/sys/dev/ti/if_ti.c projects/tcp_ffcaia2008_head/sys/dev/ti/if_tireg.h projects/tcp_ffcaia2008_head/sys/dev/tl/if_tl.c projects/tcp_ffcaia2008_head/sys/dev/tl/if_tlreg.h projects/tcp_ffcaia2008_head/sys/dev/trm/trm.c projects/tcp_ffcaia2008_head/sys/dev/tsec/if_tsec.c projects/tcp_ffcaia2008_head/sys/dev/twe/twe.c projects/tcp_ffcaia2008_head/sys/dev/twe/twe_freebsd.c projects/tcp_ffcaia2008_head/sys/dev/twe/twevar.h projects/tcp_ffcaia2008_head/sys/dev/uart/uart_bus_acpi.c projects/tcp_ffcaia2008_head/sys/dev/uart/uart_bus_ebus.c projects/tcp_ffcaia2008_head/sys/dev/uart/uart_bus_pci.c projects/tcp_ffcaia2008_head/sys/dev/uart/uart_core.c projects/tcp_ffcaia2008_head/sys/dev/uart/uart_cpu_sparc64.c projects/tcp_ffcaia2008_head/sys/dev/uart/uart_tty.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/at91dci.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/atmegadci.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/avr32dci.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/ehci.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/ehci.h projects/tcp_ffcaia2008_head/sys/dev/usb/controller/ehci_ixp4xx.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/ehci_mbus.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/ehci_pci.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/musb_otg.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/musb_otg.h projects/tcp_ffcaia2008_head/sys/dev/usb/controller/ohci.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/ohci_pci.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/uhci.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/uhci_pci.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/uhcireg.h projects/tcp_ffcaia2008_head/sys/dev/usb/controller/usb_controller.c projects/tcp_ffcaia2008_head/sys/dev/usb/controller/uss820dci.c projects/tcp_ffcaia2008_head/sys/dev/usb/input/uhid.c projects/tcp_ffcaia2008_head/sys/dev/usb/input/ukbd.c projects/tcp_ffcaia2008_head/sys/dev/usb/input/ums.c projects/tcp_ffcaia2008_head/sys/dev/usb/net/if_aue.c projects/tcp_ffcaia2008_head/sys/dev/usb/net/if_axe.c projects/tcp_ffcaia2008_head/sys/dev/usb/net/if_cdce.c projects/tcp_ffcaia2008_head/sys/dev/usb/net/if_cue.c projects/tcp_ffcaia2008_head/sys/dev/usb/net/if_kue.c projects/tcp_ffcaia2008_head/sys/dev/usb/net/if_rue.c projects/tcp_ffcaia2008_head/sys/dev/usb/net/if_udav.c projects/tcp_ffcaia2008_head/sys/dev/usb/quirk/usb_quirk.c projects/tcp_ffcaia2008_head/sys/dev/usb/quirk/usb_quirk.h projects/tcp_ffcaia2008_head/sys/dev/usb/serial/u3g.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/uark.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/ubser.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/ucycom.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/ufoma.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/uftdi.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/ugensa.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/uipaq.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/umct.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/umodem.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/uplcom.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/usb_serial.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/usb_serial.h projects/tcp_ffcaia2008_head/sys/dev/usb/serial/uslcom.c projects/tcp_ffcaia2008_head/sys/dev/usb/serial/uvisor.c projects/tcp_ffcaia2008_head/sys/dev/usb/storage/umass.c projects/tcp_ffcaia2008_head/sys/dev/usb/template/usb_template.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_busdma.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_compat_linux.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_compat_linux.h projects/tcp_ffcaia2008_head/sys/dev/usb/usb_core.h projects/tcp_ffcaia2008_head/sys/dev/usb/usb_debug.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_debug.h projects/tcp_ffcaia2008_head/sys/dev/usb/usb_dev.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_device.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_dynamic.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_dynamic.h projects/tcp_ffcaia2008_head/sys/dev/usb/usb_generic.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_hid.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_hub.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_hub.h projects/tcp_ffcaia2008_head/sys/dev/usb/usb_msctest.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_msctest.h projects/tcp_ffcaia2008_head/sys/dev/usb/usb_process.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_request.c projects/tcp_ffcaia2008_head/sys/dev/usb/usb_transfer.c projects/tcp_ffcaia2008_head/sys/dev/usb/usbdevs projects/tcp_ffcaia2008_head/sys/dev/usb/usbdi.h projects/tcp_ffcaia2008_head/sys/dev/usb/wlan/if_rum.c projects/tcp_ffcaia2008_head/sys/dev/usb/wlan/if_uath.c projects/tcp_ffcaia2008_head/sys/dev/usb/wlan/if_upgt.c projects/tcp_ffcaia2008_head/sys/dev/usb/wlan/if_ural.c projects/tcp_ffcaia2008_head/sys/dev/usb/wlan/if_urtw.c projects/tcp_ffcaia2008_head/sys/dev/usb/wlan/if_urtwvar.h projects/tcp_ffcaia2008_head/sys/dev/vge/if_vge.c projects/tcp_ffcaia2008_head/sys/dev/vge/if_vgereg.h projects/tcp_ffcaia2008_head/sys/dev/vge/if_vgevar.h projects/tcp_ffcaia2008_head/sys/dev/vx/if_vx.c projects/tcp_ffcaia2008_head/sys/dev/vx/if_vxvar.h projects/tcp_ffcaia2008_head/sys/dev/wb/if_wb.c projects/tcp_ffcaia2008_head/sys/dev/wb/if_wbreg.h projects/tcp_ffcaia2008_head/sys/dev/wl/if_wl.c projects/tcp_ffcaia2008_head/sys/dev/wpi/if_wpi.c projects/tcp_ffcaia2008_head/sys/dev/xen/blkfront/blkfront.c projects/tcp_ffcaia2008_head/sys/dev/xen/blkfront/block.h projects/tcp_ffcaia2008_head/sys/dev/xen/console/console.c projects/tcp_ffcaia2008_head/sys/dev/xen/netfront/netfront.c projects/tcp_ffcaia2008_head/sys/dev/xl/if_xl.c projects/tcp_ffcaia2008_head/sys/fs/cd9660/cd9660_vfsops.c projects/tcp_ffcaia2008_head/sys/fs/cd9660/cd9660_vnops.c projects/tcp_ffcaia2008_head/sys/fs/devfs/devfs_vnops.c projects/tcp_ffcaia2008_head/sys/fs/fifofs/fifo_vnops.c projects/tcp_ffcaia2008_head/sys/fs/nfs/nfs_commonacl.c projects/tcp_ffcaia2008_head/sys/fs/nfs/nfs_commonport.c projects/tcp_ffcaia2008_head/sys/fs/nfs/nfs_commonsubs.c projects/tcp_ffcaia2008_head/sys/fs/nfs/nfs_var.h projects/tcp_ffcaia2008_head/sys/fs/nfs/nfsport.h projects/tcp_ffcaia2008_head/sys/fs/nfsclient/nfs.h projects/tcp_ffcaia2008_head/sys/fs/nfsclient/nfs_clbio.c projects/tcp_ffcaia2008_head/sys/fs/nfsclient/nfs_clrpcops.c projects/tcp_ffcaia2008_head/sys/fs/nfsclient/nfs_clstate.c projects/tcp_ffcaia2008_head/sys/fs/nfsclient/nfs_clvnops.c projects/tcp_ffcaia2008_head/sys/fs/nfsserver/nfs_nfsdcache.c projects/tcp_ffcaia2008_head/sys/fs/nfsserver/nfs_nfsdport.c projects/tcp_ffcaia2008_head/sys/fs/nfsserver/nfs_nfsdserv.c projects/tcp_ffcaia2008_head/sys/fs/nfsserver/nfs_nfsdstate.c projects/tcp_ffcaia2008_head/sys/fs/ntfs/ntfs.h projects/tcp_ffcaia2008_head/sys/fs/ntfs/ntfs_subr.c projects/tcp_ffcaia2008_head/sys/fs/ntfs/ntfs_vfsops.c projects/tcp_ffcaia2008_head/sys/fs/nwfs/nwfs_node.c projects/tcp_ffcaia2008_head/sys/fs/nwfs/nwfs_vnops.c projects/tcp_ffcaia2008_head/sys/fs/portalfs/portal_vnops.c projects/tcp_ffcaia2008_head/sys/fs/procfs/procfs_status.c projects/tcp_ffcaia2008_head/sys/fs/pseudofs/pseudofs_vnops.c projects/tcp_ffcaia2008_head/sys/fs/smbfs/smbfs_smb.c projects/tcp_ffcaia2008_head/sys/fs/tmpfs/tmpfs.h projects/tcp_ffcaia2008_head/sys/fs/tmpfs/tmpfs_subr.c projects/tcp_ffcaia2008_head/sys/fs/tmpfs/tmpfs_vfsops.c projects/tcp_ffcaia2008_head/sys/geom/concat/g_concat.c projects/tcp_ffcaia2008_head/sys/geom/eli/g_eli_key.c projects/tcp_ffcaia2008_head/sys/geom/gate/g_gate.c projects/tcp_ffcaia2008_head/sys/geom/geom_dev.c projects/tcp_ffcaia2008_head/sys/geom/geom_dump.c projects/tcp_ffcaia2008_head/sys/geom/geom_io.c projects/tcp_ffcaia2008_head/sys/geom/geom_slice.c projects/tcp_ffcaia2008_head/sys/geom/label/g_label.c projects/tcp_ffcaia2008_head/sys/geom/label/g_label.h projects/tcp_ffcaia2008_head/sys/geom/label/g_label_ext2fs.c projects/tcp_ffcaia2008_head/sys/geom/label/g_label_gpt.c projects/tcp_ffcaia2008_head/sys/geom/label/g_label_iso9660.c projects/tcp_ffcaia2008_head/sys/geom/label/g_label_msdosfs.c projects/tcp_ffcaia2008_head/sys/geom/label/g_label_ntfs.c projects/tcp_ffcaia2008_head/sys/geom/label/g_label_reiserfs.c projects/tcp_ffcaia2008_head/sys/geom/label/g_label_ufs.c projects/tcp_ffcaia2008_head/sys/geom/mirror/g_mirror.c projects/tcp_ffcaia2008_head/sys/geom/mirror/g_mirror.h projects/tcp_ffcaia2008_head/sys/geom/part/g_part.c projects/tcp_ffcaia2008_head/sys/geom/part/g_part.h projects/tcp_ffcaia2008_head/sys/geom/part/g_part_bsd.c projects/tcp_ffcaia2008_head/sys/geom/part/g_part_gpt.c projects/tcp_ffcaia2008_head/sys/geom/part/g_part_vtoc8.c projects/tcp_ffcaia2008_head/sys/geom/raid3/g_raid3.c projects/tcp_ffcaia2008_head/sys/geom/raid3/g_raid3.h projects/tcp_ffcaia2008_head/sys/geom/stripe/g_stripe.c projects/tcp_ffcaia2008_head/sys/geom/uzip/g_uzip.c projects/tcp_ffcaia2008_head/sys/geom/vinum/geom_vinum.c projects/tcp_ffcaia2008_head/sys/geom/vinum/geom_vinum_create.c projects/tcp_ffcaia2008_head/sys/geom/virstor/g_virstor.c projects/tcp_ffcaia2008_head/sys/gnu/fs/reiserfs/reiserfs_fs.h projects/tcp_ffcaia2008_head/sys/gnu/fs/reiserfs/reiserfs_vfsops.c projects/tcp_ffcaia2008_head/sys/gnu/fs/xfs/FreeBSD/xfs_vnops.c projects/tcp_ffcaia2008_head/sys/i386/bios/apm.c projects/tcp_ffcaia2008_head/sys/i386/conf/GENERIC projects/tcp_ffcaia2008_head/sys/i386/conf/Makefile projects/tcp_ffcaia2008_head/sys/i386/conf/NOTES projects/tcp_ffcaia2008_head/sys/i386/conf/PAE projects/tcp_ffcaia2008_head/sys/i386/cpufreq/est.c projects/tcp_ffcaia2008_head/sys/i386/i386/bpf_jit_machdep.c projects/tcp_ffcaia2008_head/sys/i386/i386/bpf_jit_machdep.h projects/tcp_ffcaia2008_head/sys/i386/i386/elan-mmcr.c projects/tcp_ffcaia2008_head/sys/i386/i386/identcpu.c projects/tcp_ffcaia2008_head/sys/i386/i386/initcpu.c projects/tcp_ffcaia2008_head/sys/i386/i386/io.c projects/tcp_ffcaia2008_head/sys/i386/i386/local_apic.c projects/tcp_ffcaia2008_head/sys/i386/i386/locore.s projects/tcp_ffcaia2008_head/sys/i386/i386/machdep.c projects/tcp_ffcaia2008_head/sys/i386/i386/mca.c projects/tcp_ffcaia2008_head/sys/i386/i386/mem.c projects/tcp_ffcaia2008_head/sys/i386/i386/minidump_machdep.c projects/tcp_ffcaia2008_head/sys/i386/i386/pmap.c projects/tcp_ffcaia2008_head/sys/i386/i386/trap.c projects/tcp_ffcaia2008_head/sys/i386/i386/vm_machdep.c projects/tcp_ffcaia2008_head/sys/i386/ibcs2/ibcs2_misc.c projects/tcp_ffcaia2008_head/sys/i386/include/apicvar.h projects/tcp_ffcaia2008_head/sys/i386/include/cpufunc.h projects/tcp_ffcaia2008_head/sys/i386/include/iodev.h projects/tcp_ffcaia2008_head/sys/i386/include/mca.h projects/tcp_ffcaia2008_head/sys/i386/include/pmap.h projects/tcp_ffcaia2008_head/sys/i386/include/specialreg.h projects/tcp_ffcaia2008_head/sys/i386/isa/clock.c projects/tcp_ffcaia2008_head/sys/i386/isa/isa_dma.c projects/tcp_ffcaia2008_head/sys/i386/xbox/xboxfb.c projects/tcp_ffcaia2008_head/sys/i386/xen/exception.s projects/tcp_ffcaia2008_head/sys/i386/xen/locore.s projects/tcp_ffcaia2008_head/sys/i386/xen/mp_machdep.c projects/tcp_ffcaia2008_head/sys/i386/xen/pmap.c projects/tcp_ffcaia2008_head/sys/i386/xen/xen_machdep.c projects/tcp_ffcaia2008_head/sys/ia64/conf/DEFAULTS projects/tcp_ffcaia2008_head/sys/ia64/conf/GENERIC projects/tcp_ffcaia2008_head/sys/ia64/conf/Makefile projects/tcp_ffcaia2008_head/sys/ia64/ia64/clock.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/db_machdep.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/efi.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/exception.S projects/tcp_ffcaia2008_head/sys/ia64/ia64/genassym.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/interrupt.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/machdep.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/mem.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/mp_machdep.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/nexus.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/pmap.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/sscdisk.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/sys_machdep.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/trap.c projects/tcp_ffcaia2008_head/sys/ia64/ia64/vm_machdep.c projects/tcp_ffcaia2008_head/sys/ia64/include/bus.h projects/tcp_ffcaia2008_head/sys/ia64/include/clock.h projects/tcp_ffcaia2008_head/sys/ia64/include/cpufunc.h projects/tcp_ffcaia2008_head/sys/ia64/include/efi.h projects/tcp_ffcaia2008_head/sys/ia64/include/ia64_cpu.h projects/tcp_ffcaia2008_head/sys/ia64/include/kdb.h projects/tcp_ffcaia2008_head/sys/ia64/include/mca.h projects/tcp_ffcaia2008_head/sys/ia64/include/md_var.h projects/tcp_ffcaia2008_head/sys/ia64/include/param.h projects/tcp_ffcaia2008_head/sys/ia64/include/pcpu.h projects/tcp_ffcaia2008_head/sys/ia64/include/pmap.h projects/tcp_ffcaia2008_head/sys/ia64/include/proc.h projects/tcp_ffcaia2008_head/sys/ia64/include/sysarch.h projects/tcp_ffcaia2008_head/sys/isa/pnp.c projects/tcp_ffcaia2008_head/sys/isa/vga_isa.c projects/tcp_ffcaia2008_head/sys/kern/kern_clock.c projects/tcp_ffcaia2008_head/sys/kern/kern_conf.c projects/tcp_ffcaia2008_head/sys/kern/kern_cpu.c projects/tcp_ffcaia2008_head/sys/kern/kern_descrip.c projects/tcp_ffcaia2008_head/sys/kern/kern_environment.c projects/tcp_ffcaia2008_head/sys/kern/kern_event.c projects/tcp_ffcaia2008_head/sys/kern/kern_exit.c projects/tcp_ffcaia2008_head/sys/kern/kern_fail.c projects/tcp_ffcaia2008_head/sys/kern/kern_idle.c projects/tcp_ffcaia2008_head/sys/kern/kern_intr.c projects/tcp_ffcaia2008_head/sys/kern/kern_jail.c projects/tcp_ffcaia2008_head/sys/kern/kern_kthread.c projects/tcp_ffcaia2008_head/sys/kern/kern_linker.c projects/tcp_ffcaia2008_head/sys/kern/kern_lock.c projects/tcp_ffcaia2008_head/sys/kern/kern_mib.c projects/tcp_ffcaia2008_head/sys/kern/kern_mutex.c projects/tcp_ffcaia2008_head/sys/kern/kern_proc.c projects/tcp_ffcaia2008_head/sys/kern/kern_prot.c projects/tcp_ffcaia2008_head/sys/kern/kern_rmlock.c projects/tcp_ffcaia2008_head/sys/kern/kern_sig.c projects/tcp_ffcaia2008_head/sys/kern/kern_sx.c projects/tcp_ffcaia2008_head/sys/kern/kern_timeout.c projects/tcp_ffcaia2008_head/sys/kern/kern_umtx.c projects/tcp_ffcaia2008_head/sys/kern/sched_4bsd.c projects/tcp_ffcaia2008_head/sys/kern/sched_ule.c projects/tcp_ffcaia2008_head/sys/kern/subr_acl_nfs4.c projects/tcp_ffcaia2008_head/sys/kern/subr_acl_posix1e.c projects/tcp_ffcaia2008_head/sys/kern/subr_bus.c projects/tcp_ffcaia2008_head/sys/kern/subr_devstat.c projects/tcp_ffcaia2008_head/sys/kern/subr_eventhandler.c projects/tcp_ffcaia2008_head/sys/kern/subr_firmware.c projects/tcp_ffcaia2008_head/sys/kern/subr_log.c projects/tcp_ffcaia2008_head/sys/kern/subr_param.c projects/tcp_ffcaia2008_head/sys/kern/subr_prf.c projects/tcp_ffcaia2008_head/sys/kern/subr_sleepqueue.c projects/tcp_ffcaia2008_head/sys/kern/subr_turnstile.c projects/tcp_ffcaia2008_head/sys/kern/subr_witness.c projects/tcp_ffcaia2008_head/sys/kern/sys_process.c projects/tcp_ffcaia2008_head/sys/kern/tty.c projects/tcp_ffcaia2008_head/sys/kern/tty_compat.c projects/tcp_ffcaia2008_head/sys/kern/tty_inq.c projects/tcp_ffcaia2008_head/sys/kern/tty_pts.c projects/tcp_ffcaia2008_head/sys/kern/uipc_accf.c projects/tcp_ffcaia2008_head/sys/kern/uipc_sem.c projects/tcp_ffcaia2008_head/sys/kern/uipc_syscalls.c projects/tcp_ffcaia2008_head/sys/kern/vfs_acl.c projects/tcp_ffcaia2008_head/sys/kern/vfs_lookup.c projects/tcp_ffcaia2008_head/sys/kern/vfs_mount.c projects/tcp_ffcaia2008_head/sys/kern/vfs_subr.c projects/tcp_ffcaia2008_head/sys/kern/vfs_syscalls.c projects/tcp_ffcaia2008_head/sys/kern/vfs_vnops.c projects/tcp_ffcaia2008_head/sys/mips/adm5120/adm5120_machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/files.adm5120 (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/if_admsw.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/if_admswvar.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/obio.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/uart_cpu_adm5120.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/MALTA (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/QEMU (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/SENTRY5 (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/files.idt (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/idt_machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/obio.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/uart_bus_rc32434.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/uart_cpu_rc32434.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/_align.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/_bus.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/_types.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/asm.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/atomic.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/bus.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/cache.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/cache_mipsNN.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/cpu.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/cpufunc.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/cpuinfo.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/cpuregs.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/db_machdep.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/elf.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/endian.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/float.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/hwfunc.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/intr_machdep.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/kdb.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/locore.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/md_var.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/param.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/pcb.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/pmap.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/proc.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/profile.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/psl.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/pte.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/regdef.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/regnum.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/sysarch.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/trap.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/include/ucontext.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/files.malta (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/gt_pci.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/malta_machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/maltareg.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/obio.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/std.malta (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/uart_bus_maltausart.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/uart_cpu_maltausart.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/yamon.h (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/busdma_machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/cache.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/cache_mipsNN.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/copystr.S (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/cpu.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/db_trace.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/elf_machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/exception.S (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/fp.S (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/gdb_machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/genassym.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/in_cksum.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/intr_machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/locore.S (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/mainbus.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/mem.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/nexus.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/pm_machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/pmap.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/psraccess.S (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/support.S (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/swtch.S (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/tick.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/tlb.S (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/trap.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/vm_machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/sentry5/files.sentry5 (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/sentry5/obio.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/sentry5/s5_machdep.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/sentry5/uart_bus_sbusart.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/mips/sentry5/uart_cpu_sbusart.c (contents, props changed) projects/tcp_ffcaia2008_head/sys/modules/Makefile projects/tcp_ffcaia2008_head/sys/modules/acpi/acpi/Makefile projects/tcp_ffcaia2008_head/sys/modules/crypto/Makefile projects/tcp_ffcaia2008_head/sys/modules/ext2fs/Makefile projects/tcp_ffcaia2008_head/sys/modules/geom/Makefile projects/tcp_ffcaia2008_head/sys/modules/ichwd/Makefile projects/tcp_ffcaia2008_head/sys/modules/ipfw/Makefile projects/tcp_ffcaia2008_head/sys/modules/iwnfw/Makefile projects/tcp_ffcaia2008_head/sys/modules/iwnfw/iwn4965/Makefile projects/tcp_ffcaia2008_head/sys/modules/iwnfw/iwn5000/Makefile projects/tcp_ffcaia2008_head/sys/modules/usb/Makefile projects/tcp_ffcaia2008_head/sys/net/bpf_jitter.c projects/tcp_ffcaia2008_head/sys/net/bpf_jitter.h projects/tcp_ffcaia2008_head/sys/net/flowtable.c projects/tcp_ffcaia2008_head/sys/net/if.c projects/tcp_ffcaia2008_head/sys/net/if.h projects/tcp_ffcaia2008_head/sys/net/if_bridge.c projects/tcp_ffcaia2008_head/sys/net/if_dead.c projects/tcp_ffcaia2008_head/sys/net/if_ef.c projects/tcp_ffcaia2008_head/sys/net/if_epair.c projects/tcp_ffcaia2008_head/sys/net/if_ethersubr.c projects/tcp_ffcaia2008_head/sys/net/if_lagg.c projects/tcp_ffcaia2008_head/sys/net/if_llatbl.c projects/tcp_ffcaia2008_head/sys/net/if_llatbl.h projects/tcp_ffcaia2008_head/sys/net/if_var.h projects/tcp_ffcaia2008_head/sys/net/if_vlan.c projects/tcp_ffcaia2008_head/sys/net/netisr.c projects/tcp_ffcaia2008_head/sys/net/radix.c projects/tcp_ffcaia2008_head/sys/net/radix.h projects/tcp_ffcaia2008_head/sys/net/route.c projects/tcp_ffcaia2008_head/sys/net/route.h projects/tcp_ffcaia2008_head/sys/net/rtsock.c projects/tcp_ffcaia2008_head/sys/net80211/ieee80211.c projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_action.c projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_freebsd.c projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_hostap.c projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_ioctl.c projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_ioctl.h projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_mesh.c projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_mesh.h projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_node.c projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_proto.h projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_sta.c projects/tcp_ffcaia2008_head/sys/net80211/ieee80211_var.h projects/tcp_ffcaia2008_head/sys/netgraph/atm/uni/ng_uni.c projects/tcp_ffcaia2008_head/sys/netgraph/ng_base.c projects/tcp_ffcaia2008_head/sys/netgraph/ng_bridge.c projects/tcp_ffcaia2008_head/sys/netgraph/ng_eiface.c projects/tcp_ffcaia2008_head/sys/netgraph/ng_ether.c projects/tcp_ffcaia2008_head/sys/netgraph/ng_fec.c projects/tcp_ffcaia2008_head/sys/netgraph/ng_iface.c projects/tcp_ffcaia2008_head/sys/netgraph/ng_ipfw.c projects/tcp_ffcaia2008_head/sys/netgraph/ng_ipfw.h projects/tcp_ffcaia2008_head/sys/netgraph/ng_sppp.c projects/tcp_ffcaia2008_head/sys/netinet/if_ether.c projects/tcp_ffcaia2008_head/sys/netinet/in.c projects/tcp_ffcaia2008_head/sys/netinet/in.h projects/tcp_ffcaia2008_head/sys/netinet/in_mcast.c projects/tcp_ffcaia2008_head/sys/netinet/in_pcb.c projects/tcp_ffcaia2008_head/sys/netinet/ip_carp.c projects/tcp_ffcaia2008_head/sys/netinet/ip_divert.c projects/tcp_ffcaia2008_head/sys/netinet/ip_divert.h projects/tcp_ffcaia2008_head/sys/netinet/ip_dummynet.h projects/tcp_ffcaia2008_head/sys/netinet/ip_encap.c projects/tcp_ffcaia2008_head/sys/netinet/ip_fw.h projects/tcp_ffcaia2008_head/sys/netinet/ip_ipsec.c projects/tcp_ffcaia2008_head/sys/netinet/ip_ipsec.h projects/tcp_ffcaia2008_head/sys/netinet/ip_mroute.c projects/tcp_ffcaia2008_head/sys/netinet/ip_output.c projects/tcp_ffcaia2008_head/sys/netinet/ip_var.h projects/tcp_ffcaia2008_head/sys/netinet/ipfw/ip_dummynet.c projects/tcp_ffcaia2008_head/sys/netinet/ipfw/ip_fw2.c projects/tcp_ffcaia2008_head/sys/netinet/ipfw/ip_fw_nat.c projects/tcp_ffcaia2008_head/sys/netinet/ipfw/ip_fw_pfil.c projects/tcp_ffcaia2008_head/sys/netinet/libalias/alias_db.c projects/tcp_ffcaia2008_head/sys/netinet/libalias/alias_mod.c projects/tcp_ffcaia2008_head/sys/netinet/libalias/alias_proxy.c projects/tcp_ffcaia2008_head/sys/netinet/raw_ip.c projects/tcp_ffcaia2008_head/sys/netinet/sctp_asconf.c projects/tcp_ffcaia2008_head/sys/netinet/sctp_auth.c projects/tcp_ffcaia2008_head/sys/netinet/sctp_auth.h projects/tcp_ffcaia2008_head/sys/netinet/sctp_constants.h projects/tcp_ffcaia2008_head/sys/netinet/sctp_header.h projects/tcp_ffcaia2008_head/sys/netinet/sctp_indata.c projects/tcp_ffcaia2008_head/sys/netinet/sctp_indata.h projects/tcp_ffcaia2008_head/sys/netinet/sctp_input.c projects/tcp_ffcaia2008_head/sys/netinet/sctp_os_bsd.h projects/tcp_ffcaia2008_head/sys/netinet/sctp_output.c projects/tcp_ffcaia2008_head/sys/netinet/sctp_pcb.c projects/tcp_ffcaia2008_head/sys/netinet/sctp_structs.h projects/tcp_ffcaia2008_head/sys/netinet/sctp_sysctl.c projects/tcp_ffcaia2008_head/sys/netinet/sctp_uio.h projects/tcp_ffcaia2008_head/sys/netinet/sctp_usrreq.c projects/tcp_ffcaia2008_head/sys/netinet/sctputil.c projects/tcp_ffcaia2008_head/sys/netinet/tcp.h projects/tcp_ffcaia2008_head/sys/netinet/tcp_output.c projects/tcp_ffcaia2008_head/sys/netinet/tcp_usrreq.c projects/tcp_ffcaia2008_head/sys/netinet/tcp_var.h projects/tcp_ffcaia2008_head/sys/netinet6/icmp6.c projects/tcp_ffcaia2008_head/sys/netinet6/in6.c projects/tcp_ffcaia2008_head/sys/netinet6/in6_mcast.c projects/tcp_ffcaia2008_head/sys/netinet6/in6_pcb.c projects/tcp_ffcaia2008_head/sys/netinet6/in6_proto.c projects/tcp_ffcaia2008_head/sys/netinet6/in6_src.c projects/tcp_ffcaia2008_head/sys/netinet6/ip6_input.c projects/tcp_ffcaia2008_head/sys/netinet6/mld6.c projects/tcp_ffcaia2008_head/sys/netinet6/mld6_var.h projects/tcp_ffcaia2008_head/sys/netinet6/nd6.c projects/tcp_ffcaia2008_head/sys/netinet6/nd6_rtr.c projects/tcp_ffcaia2008_head/sys/netinet6/raw_ip6.c projects/tcp_ffcaia2008_head/sys/netipsec/ipcomp_var.h projects/tcp_ffcaia2008_head/sys/netipsec/ipsec_mbuf.c projects/tcp_ffcaia2008_head/sys/netipsec/key.c projects/tcp_ffcaia2008_head/sys/netipsec/xform_ipcomp.c projects/tcp_ffcaia2008_head/sys/nfsclient/bootp_subr.c projects/tcp_ffcaia2008_head/sys/nfsclient/krpc_subr.c projects/tcp_ffcaia2008_head/sys/nfsclient/nfs.h projects/tcp_ffcaia2008_head/sys/nfsclient/nfs_bio.c projects/tcp_ffcaia2008_head/sys/nfsclient/nfs_nfsiod.c projects/tcp_ffcaia2008_head/sys/nfsclient/nfs_subs.c projects/tcp_ffcaia2008_head/sys/nfsclient/nfs_vfsops.c projects/tcp_ffcaia2008_head/sys/nfsclient/nfs_vnops.c projects/tcp_ffcaia2008_head/sys/nfsclient/nfsmount.h projects/tcp_ffcaia2008_head/sys/nfsclient/nfsnode.h projects/tcp_ffcaia2008_head/sys/nfsserver/nfs.h projects/tcp_ffcaia2008_head/sys/nfsserver/nfs_fha.c projects/tcp_ffcaia2008_head/sys/nfsserver/nfs_serv.c projects/tcp_ffcaia2008_head/sys/nfsserver/nfs_srvkrpc.c projects/tcp_ffcaia2008_head/sys/opencrypto/crypto.c projects/tcp_ffcaia2008_head/sys/opencrypto/cryptosoft.c projects/tcp_ffcaia2008_head/sys/opencrypto/deflate.c projects/tcp_ffcaia2008_head/sys/opencrypto/deflate.h projects/tcp_ffcaia2008_head/sys/pc98/cbus/cbus_dma.c projects/tcp_ffcaia2008_head/sys/pc98/cbus/clock.c projects/tcp_ffcaia2008_head/sys/pc98/cbus/gdc.c projects/tcp_ffcaia2008_head/sys/pc98/cbus/scterm-sck.c projects/tcp_ffcaia2008_head/sys/pc98/conf/DEFAULTS projects/tcp_ffcaia2008_head/sys/pc98/conf/GENERIC projects/tcp_ffcaia2008_head/sys/pc98/conf/Makefile projects/tcp_ffcaia2008_head/sys/pc98/conf/NOTES projects/tcp_ffcaia2008_head/sys/pci/if_rlreg.h projects/tcp_ffcaia2008_head/sys/pci/ncr.c projects/tcp_ffcaia2008_head/sys/pci/nfsmb.c projects/tcp_ffcaia2008_head/sys/powerpc/aim/copyinout.c projects/tcp_ffcaia2008_head/sys/powerpc/aim/machdep.c projects/tcp_ffcaia2008_head/sys/powerpc/aim/mmu_oea.c projects/tcp_ffcaia2008_head/sys/powerpc/aim/mmu_oea64.c projects/tcp_ffcaia2008_head/sys/powerpc/aim/ofw_machdep.c projects/tcp_ffcaia2008_head/sys/powerpc/aim/swtch.S projects/tcp_ffcaia2008_head/sys/powerpc/aim/trap.c projects/tcp_ffcaia2008_head/sys/powerpc/aim/vm_machdep.c projects/tcp_ffcaia2008_head/sys/powerpc/booke/clock.c projects/tcp_ffcaia2008_head/sys/powerpc/booke/machdep.c projects/tcp_ffcaia2008_head/sys/powerpc/booke/pmap.c projects/tcp_ffcaia2008_head/sys/powerpc/booke/trap.c projects/tcp_ffcaia2008_head/sys/powerpc/booke/vm_machdep.c projects/tcp_ffcaia2008_head/sys/powerpc/conf/GENERIC projects/tcp_ffcaia2008_head/sys/powerpc/conf/Makefile projects/tcp_ffcaia2008_head/sys/powerpc/include/cpu.h projects/tcp_ffcaia2008_head/sys/powerpc/include/md_var.h projects/tcp_ffcaia2008_head/sys/powerpc/include/vmparam.h projects/tcp_ffcaia2008_head/sys/powerpc/mpc85xx/pci_ocp.c projects/tcp_ffcaia2008_head/sys/powerpc/ofw/ofw_syscons.c projects/tcp_ffcaia2008_head/sys/powerpc/powermac/ata_dbdma.c projects/tcp_ffcaia2008_head/sys/powerpc/powermac/ata_kauai.c projects/tcp_ffcaia2008_head/sys/powerpc/powermac/ata_macio.c projects/tcp_ffcaia2008_head/sys/powerpc/powerpc/cpu.c projects/tcp_ffcaia2008_head/sys/powerpc/powerpc/mem.c projects/tcp_ffcaia2008_head/sys/powerpc/psim/ata_iobus.c projects/tcp_ffcaia2008_head/sys/rpc/authunix_prot.c projects/tcp_ffcaia2008_head/sys/rpc/clnt_dg.c projects/tcp_ffcaia2008_head/sys/rpc/clnt_vc.c projects/tcp_ffcaia2008_head/sys/rpc/rpcsec_gss/rpcsec_gss_prot.c projects/tcp_ffcaia2008_head/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c projects/tcp_ffcaia2008_head/sys/security/audit/audit_arg.c projects/tcp_ffcaia2008_head/sys/security/mac_lomac/mac_lomac.c projects/tcp_ffcaia2008_head/sys/sparc64/central/central.c projects/tcp_ffcaia2008_head/sys/sparc64/conf/GENERIC projects/tcp_ffcaia2008_head/sys/sparc64/conf/Makefile projects/tcp_ffcaia2008_head/sys/sparc64/conf/NOTES projects/tcp_ffcaia2008_head/sys/sparc64/ebus/ebus.c projects/tcp_ffcaia2008_head/sys/sparc64/fhc/fhc.c projects/tcp_ffcaia2008_head/sys/sparc64/include/bus_common.h projects/tcp_ffcaia2008_head/sys/sparc64/include/intr_machdep.h projects/tcp_ffcaia2008_head/sys/sparc64/include/iommureg.h projects/tcp_ffcaia2008_head/sys/sparc64/include/iommuvar.h projects/tcp_ffcaia2008_head/sys/sparc64/include/pcb.h projects/tcp_ffcaia2008_head/sys/sparc64/isa/ofw_isa.c projects/tcp_ffcaia2008_head/sys/sparc64/pci/apb.c projects/tcp_ffcaia2008_head/sys/sparc64/pci/ofw_pci.h projects/tcp_ffcaia2008_head/sys/sparc64/pci/ofw_pcib.c projects/tcp_ffcaia2008_head/sys/sparc64/pci/ofw_pcibus.c projects/tcp_ffcaia2008_head/sys/sparc64/pci/psycho.c projects/tcp_ffcaia2008_head/sys/sparc64/pci/psychovar.h projects/tcp_ffcaia2008_head/sys/sparc64/pci/schizo.c projects/tcp_ffcaia2008_head/sys/sparc64/pci/schizovar.h projects/tcp_ffcaia2008_head/sys/sparc64/sbus/dma_sbus.c projects/tcp_ffcaia2008_head/sys/sparc64/sbus/sbus.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/eeprom.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/identcpu.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/interrupt.S projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/intr_machdep.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/iommu.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/machdep.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/nexus.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/ofw_machdep.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/rtc.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/stack_machdep.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/trap.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/upa.c projects/tcp_ffcaia2008_head/sys/sparc64/sparc64/vm_machdep.c projects/tcp_ffcaia2008_head/sys/sun4v/conf/GENERIC projects/tcp_ffcaia2008_head/sys/sun4v/conf/Makefile projects/tcp_ffcaia2008_head/sys/sun4v/conf/NOTES projects/tcp_ffcaia2008_head/sys/sun4v/sun4v/stack_machdep.c projects/tcp_ffcaia2008_head/sys/sun4v/sun4v/trap.c projects/tcp_ffcaia2008_head/sys/sun4v/sun4v/vm_machdep.c projects/tcp_ffcaia2008_head/sys/sys/_lockmgr.h projects/tcp_ffcaia2008_head/sys/sys/_semaphore.h projects/tcp_ffcaia2008_head/sys/sys/acl.h projects/tcp_ffcaia2008_head/sys/sys/apm.h projects/tcp_ffcaia2008_head/sys/sys/ata.h projects/tcp_ffcaia2008_head/sys/sys/bio.h projects/tcp_ffcaia2008_head/sys/sys/bus.h projects/tcp_ffcaia2008_head/sys/sys/cdefs.h projects/tcp_ffcaia2008_head/sys/sys/conf.h projects/tcp_ffcaia2008_head/sys/sys/copyright.h projects/tcp_ffcaia2008_head/sys/sys/disk.h projects/tcp_ffcaia2008_head/sys/sys/elf_common.h projects/tcp_ffcaia2008_head/sys/sys/event.h projects/tcp_ffcaia2008_head/sys/sys/fbio.h projects/tcp_ffcaia2008_head/sys/sys/file.h projects/tcp_ffcaia2008_head/sys/sys/gpt.h projects/tcp_ffcaia2008_head/sys/sys/jail.h projects/tcp_ffcaia2008_head/sys/sys/kthread.h projects/tcp_ffcaia2008_head/sys/sys/mman.h projects/tcp_ffcaia2008_head/sys/sys/mount.h projects/tcp_ffcaia2008_head/sys/sys/msgbuf.h projects/tcp_ffcaia2008_head/sys/sys/param.h projects/tcp_ffcaia2008_head/sys/sys/pmc.h projects/tcp_ffcaia2008_head/sys/sys/priv.h projects/tcp_ffcaia2008_head/sys/sys/proc.h projects/tcp_ffcaia2008_head/sys/sys/sdt.h projects/tcp_ffcaia2008_head/sys/sys/signal.h projects/tcp_ffcaia2008_head/sys/sys/signalvar.h projects/tcp_ffcaia2008_head/sys/sys/sleepqueue.h projects/tcp_ffcaia2008_head/sys/sys/socket.h projects/tcp_ffcaia2008_head/sys/sys/sockio.h projects/tcp_ffcaia2008_head/sys/sys/syscallsubr.h projects/tcp_ffcaia2008_head/sys/sys/systm.h projects/tcp_ffcaia2008_head/sys/sys/termios.h projects/tcp_ffcaia2008_head/sys/sys/tty.h projects/tcp_ffcaia2008_head/sys/sys/ttydevsw.h projects/tcp_ffcaia2008_head/sys/sys/umtx.h projects/tcp_ffcaia2008_head/sys/sys/vnode.h projects/tcp_ffcaia2008_head/sys/teken/teken.c projects/tcp_ffcaia2008_head/sys/teken/teken.h projects/tcp_ffcaia2008_head/sys/teken/teken_subr.h projects/tcp_ffcaia2008_head/sys/ufs/ffs/ffs_alloc.c projects/tcp_ffcaia2008_head/sys/ufs/ffs/ffs_rawread.c projects/tcp_ffcaia2008_head/sys/ufs/ffs/ffs_snapshot.c projects/tcp_ffcaia2008_head/sys/ufs/ffs/ffs_vfsops.c projects/tcp_ffcaia2008_head/sys/ufs/ffs/fs.h projects/tcp_ffcaia2008_head/sys/ufs/ufs/acl.h projects/tcp_ffcaia2008_head/sys/ufs/ufs/ufs_acl.c projects/tcp_ffcaia2008_head/sys/ufs/ufs/ufs_dirhash.c projects/tcp_ffcaia2008_head/sys/ufs/ufs/ufs_lookup.c projects/tcp_ffcaia2008_head/sys/ufs/ufs/ufs_vnops.c projects/tcp_ffcaia2008_head/sys/vm/device_pager.c projects/tcp_ffcaia2008_head/sys/vm/swap_pager.c projects/tcp_ffcaia2008_head/sys/vm/uma_core.c projects/tcp_ffcaia2008_head/sys/vm/uma_int.h projects/tcp_ffcaia2008_head/sys/vm/vm.h projects/tcp_ffcaia2008_head/sys/vm/vm_extern.h projects/tcp_ffcaia2008_head/sys/vm/vm_fault.c projects/tcp_ffcaia2008_head/sys/vm/vm_map.c projects/tcp_ffcaia2008_head/sys/vm/vm_map.h projects/tcp_ffcaia2008_head/sys/vm/vm_object.c projects/tcp_ffcaia2008_head/sys/vm/vm_object.h projects/tcp_ffcaia2008_head/sys/vm/vm_pageout.c projects/tcp_ffcaia2008_head/sys/vm/vm_zeroidle.c projects/tcp_ffcaia2008_head/sys/vm/vnode_pager.c projects/tcp_ffcaia2008_head/sys/xen/gnttab.c projects/tcp_ffcaia2008_head/sys/xen/xenbus/xenbus_probe.c projects/tcp_ffcaia2008_head/tools/build/mk/OptionalObsoleteFiles.inc projects/tcp_ffcaia2008_head/tools/make_libdeps.sh projects/tcp_ffcaia2008_head/tools/regression/acct/Makefile projects/tcp_ffcaia2008_head/tools/regression/acct/regress.t (contents, props changed) projects/tcp_ffcaia2008_head/tools/regression/acltools/tools-crossfs.test projects/tcp_ffcaia2008_head/tools/regression/bin/date/regress.sh projects/tcp_ffcaia2008_head/tools/regression/bin/mv/regress.sh projects/tcp_ffcaia2008_head/tools/regression/bin/sh/builtins/cd1.0 projects/tcp_ffcaia2008_head/tools/regression/bin/sh/errors/backquote-error1.0 projects/tcp_ffcaia2008_head/tools/regression/bpf/bpf_filter/Makefile projects/tcp_ffcaia2008_head/tools/regression/bpf/bpf_filter/bpf_test.c projects/tcp_ffcaia2008_head/tools/regression/bpf/bpf_filter/tests/test0075.h projects/tcp_ffcaia2008_head/tools/regression/bpf/bpf_filter/tests/test0076.h projects/tcp_ffcaia2008_head/tools/regression/bpf/bpf_filter/tests/test0077.h projects/tcp_ffcaia2008_head/tools/regression/bpf/bpf_filter/tests/test0078.h projects/tcp_ffcaia2008_head/tools/regression/bpf/bpf_filter/tests/test0080.h projects/tcp_ffcaia2008_head/tools/regression/environ/Makefile.envctl projects/tcp_ffcaia2008_head/tools/regression/environ/envctl.c projects/tcp_ffcaia2008_head/tools/regression/environ/envtest.t projects/tcp_ffcaia2008_head/tools/regression/fifo/fifo_misc/fifo_misc.c projects/tcp_ffcaia2008_head/tools/regression/geom/ConfCmp/ConfCmp.c projects/tcp_ffcaia2008_head/tools/regression/lib/libutil/Makefile projects/tcp_ffcaia2008_head/tools/regression/lib/libutil/test-flopen.c projects/tcp_ffcaia2008_head/tools/regression/lib/libutil/test-grp.c projects/tcp_ffcaia2008_head/tools/regression/lib/libutil/test-trimdomain-nodomain.c projects/tcp_ffcaia2008_head/tools/regression/lib/libutil/test-trimdomain.c projects/tcp_ffcaia2008_head/tools/regression/usr.bin/Makefile projects/tcp_ffcaia2008_head/tools/regression/usr.bin/calendar/regress.sh projects/tcp_ffcaia2008_head/tools/regression/usr.bin/jot/regress.sh projects/tcp_ffcaia2008_head/tools/regression/usr.bin/lastcomm/values.sh projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/common.sh projects/tcp_ffcaia2008_head/tools/regression/usr.bin/pkill/pgrep-t.t projects/tcp_ffcaia2008_head/tools/regression/usr.bin/pkill/pkill-t.t projects/tcp_ffcaia2008_head/tools/regression/usr.bin/sed/multitest.t projects/tcp_ffcaia2008_head/tools/tools/README projects/tcp_ffcaia2008_head/tools/tools/ath/athdecode/main.c projects/tcp_ffcaia2008_head/tools/tools/nanobsd/gateworks/Files/root/.profile projects/tcp_ffcaia2008_head/tools/tools/nanobsd/rescue/Files/etc/ttys projects/tcp_ffcaia2008_head/tools/tools/ncpus/acpi.c projects/tcp_ffcaia2008_head/tools/tools/sysbuild/sysbuild.sh projects/tcp_ffcaia2008_head/tools/tools/tinybsd/conf/wrap/etc/ttys projects/tcp_ffcaia2008_head/tools/tools/tinybsd/tinybsd projects/tcp_ffcaia2008_head/usr.bin/Makefile projects/tcp_ffcaia2008_head/usr.bin/Makefile.inc projects/tcp_ffcaia2008_head/usr.bin/apply/Makefile projects/tcp_ffcaia2008_head/usr.bin/ar/Makefile projects/tcp_ffcaia2008_head/usr.bin/ar/acpyacc.y projects/tcp_ffcaia2008_head/usr.bin/ar/ar.c projects/tcp_ffcaia2008_head/usr.bin/ar/read.c projects/tcp_ffcaia2008_head/usr.bin/at/Makefile projects/tcp_ffcaia2008_head/usr.bin/at/at.c projects/tcp_ffcaia2008_head/usr.bin/at/at.man projects/tcp_ffcaia2008_head/usr.bin/atm/sscop/Makefile projects/tcp_ffcaia2008_head/usr.bin/awk/Makefile projects/tcp_ffcaia2008_head/usr.bin/banner/banner.c projects/tcp_ffcaia2008_head/usr.bin/biff/biff.c projects/tcp_ffcaia2008_head/usr.bin/bluetooth/bthost/Makefile projects/tcp_ffcaia2008_head/usr.bin/brandelf/brandelf.1 projects/tcp_ffcaia2008_head/usr.bin/bsdiff/Makefile.inc projects/tcp_ffcaia2008_head/usr.bin/bzip2/Makefile projects/tcp_ffcaia2008_head/usr.bin/calendar/Makefile projects/tcp_ffcaia2008_head/usr.bin/calendar/calendar.c projects/tcp_ffcaia2008_head/usr.bin/calendar/calendars/calendar.all projects/tcp_ffcaia2008_head/usr.bin/calendar/calendars/calendar.dutch projects/tcp_ffcaia2008_head/usr.bin/calendar/calendars/calendar.freebsd projects/tcp_ffcaia2008_head/usr.bin/calendar/day.c projects/tcp_ffcaia2008_head/usr.bin/calendar/io.c projects/tcp_ffcaia2008_head/usr.bin/calendar/ostern.c projects/tcp_ffcaia2008_head/usr.bin/calendar/paskha.c projects/tcp_ffcaia2008_head/usr.bin/catman/Makefile projects/tcp_ffcaia2008_head/usr.bin/catman/catman.c projects/tcp_ffcaia2008_head/usr.bin/chkey/Makefile projects/tcp_ffcaia2008_head/usr.bin/chpass/Makefile projects/tcp_ffcaia2008_head/usr.bin/chpass/chpass.1 projects/tcp_ffcaia2008_head/usr.bin/colldef/Makefile projects/tcp_ffcaia2008_head/usr.bin/comm/comm.1 projects/tcp_ffcaia2008_head/usr.bin/comm/comm.c projects/tcp_ffcaia2008_head/usr.bin/compile_et/Makefile projects/tcp_ffcaia2008_head/usr.bin/compress/Makefile projects/tcp_ffcaia2008_head/usr.bin/cpio/Makefile projects/tcp_ffcaia2008_head/usr.bin/cpio/test/Makefile projects/tcp_ffcaia2008_head/usr.bin/cpuset/Makefile projects/tcp_ffcaia2008_head/usr.bin/ctags/ctags.c projects/tcp_ffcaia2008_head/usr.bin/ctags/fortran.c projects/tcp_ffcaia2008_head/usr.bin/dig/Makefile projects/tcp_ffcaia2008_head/usr.bin/du/Makefile projects/tcp_ffcaia2008_head/usr.bin/elf2aout/Makefile projects/tcp_ffcaia2008_head/usr.bin/elfdump/Makefile projects/tcp_ffcaia2008_head/usr.bin/elfdump/elfdump.1 projects/tcp_ffcaia2008_head/usr.bin/env/Makefile projects/tcp_ffcaia2008_head/usr.bin/fetch/Makefile projects/tcp_ffcaia2008_head/usr.bin/fetch/fetch.c projects/tcp_ffcaia2008_head/usr.bin/file2c/Makefile projects/tcp_ffcaia2008_head/usr.bin/find/Makefile projects/tcp_ffcaia2008_head/usr.bin/find/function.c projects/tcp_ffcaia2008_head/usr.bin/finger/Makefile projects/tcp_ffcaia2008_head/usr.bin/finger/extern.h projects/tcp_ffcaia2008_head/usr.bin/finger/finger.1 projects/tcp_ffcaia2008_head/usr.bin/finger/finger.c projects/tcp_ffcaia2008_head/usr.bin/finger/finger.h projects/tcp_ffcaia2008_head/usr.bin/finger/lprint.c projects/tcp_ffcaia2008_head/usr.bin/finger/net.c projects/tcp_ffcaia2008_head/usr.bin/finger/sprint.c projects/tcp_ffcaia2008_head/usr.bin/finger/util.c projects/tcp_ffcaia2008_head/usr.bin/fstat/Makefile projects/tcp_ffcaia2008_head/usr.bin/fsync/Makefile projects/tcp_ffcaia2008_head/usr.bin/ftp/Makefile projects/tcp_ffcaia2008_head/usr.bin/gcore/Makefile projects/tcp_ffcaia2008_head/usr.bin/gcore/elfcore.c projects/tcp_ffcaia2008_head/usr.bin/gcore/gcore.1 projects/tcp_ffcaia2008_head/usr.bin/gcore/gcore.c projects/tcp_ffcaia2008_head/usr.bin/gencat/Makefile projects/tcp_ffcaia2008_head/usr.bin/gencat/gencat.c projects/tcp_ffcaia2008_head/usr.bin/getent/Makefile projects/tcp_ffcaia2008_head/usr.bin/getent/getent.1 projects/tcp_ffcaia2008_head/usr.bin/getent/getent.c projects/tcp_ffcaia2008_head/usr.bin/gprof/Makefile projects/tcp_ffcaia2008_head/usr.bin/gprof/aout.c projects/tcp_ffcaia2008_head/usr.bin/gzip/Makefile projects/tcp_ffcaia2008_head/usr.bin/gzip/unbzip2.c projects/tcp_ffcaia2008_head/usr.bin/head/Makefile projects/tcp_ffcaia2008_head/usr.bin/hexdump/Makefile projects/tcp_ffcaia2008_head/usr.bin/host/Makefile projects/tcp_ffcaia2008_head/usr.bin/id/Makefile projects/tcp_ffcaia2008_head/usr.bin/ipcrm/Makefile projects/tcp_ffcaia2008_head/usr.bin/ipcs/Makefile projects/tcp_ffcaia2008_head/usr.bin/kdump/Makefile projects/tcp_ffcaia2008_head/usr.bin/kdump/kdump.c projects/tcp_ffcaia2008_head/usr.bin/keylogin/Makefile projects/tcp_ffcaia2008_head/usr.bin/killall/killall.1 projects/tcp_ffcaia2008_head/usr.bin/ktrace/Makefile projects/tcp_ffcaia2008_head/usr.bin/ktrdump/Makefile projects/tcp_ffcaia2008_head/usr.bin/lam/lam.c projects/tcp_ffcaia2008_head/usr.bin/last/Makefile projects/tcp_ffcaia2008_head/usr.bin/last/last.1 projects/tcp_ffcaia2008_head/usr.bin/last/last.c projects/tcp_ffcaia2008_head/usr.bin/lastcomm/Makefile projects/tcp_ffcaia2008_head/usr.bin/lastcomm/lastcomm.c projects/tcp_ffcaia2008_head/usr.bin/lastcomm/pathnames.h projects/tcp_ffcaia2008_head/usr.bin/ldd/Makefile projects/tcp_ffcaia2008_head/usr.bin/ldd/ldd.1 projects/tcp_ffcaia2008_head/usr.bin/leave/Makefile projects/tcp_ffcaia2008_head/usr.bin/leave/leave.c projects/tcp_ffcaia2008_head/usr.bin/less/Makefile.common projects/tcp_ffcaia2008_head/usr.bin/lex/Makefile projects/tcp_ffcaia2008_head/usr.bin/lex/flex.skl projects/tcp_ffcaia2008_head/usr.bin/lex/initscan.c projects/tcp_ffcaia2008_head/usr.bin/lex/lib/Makefile projects/tcp_ffcaia2008_head/usr.bin/limits/Makefile projects/tcp_ffcaia2008_head/usr.bin/locale/Makefile projects/tcp_ffcaia2008_head/usr.bin/locate/Makefile.inc projects/tcp_ffcaia2008_head/usr.bin/locate/locate/Makefile projects/tcp_ffcaia2008_head/usr.bin/lock/Makefile projects/tcp_ffcaia2008_head/usr.bin/logger/Makefile projects/tcp_ffcaia2008_head/usr.bin/logger/logger.c projects/tcp_ffcaia2008_head/usr.bin/login/Makefile projects/tcp_ffcaia2008_head/usr.bin/login/login.c projects/tcp_ffcaia2008_head/usr.bin/login/login_fbtab.c projects/tcp_ffcaia2008_head/usr.bin/logins/Makefile projects/tcp_ffcaia2008_head/usr.bin/logname/Makefile projects/tcp_ffcaia2008_head/usr.bin/look/Makefile projects/tcp_ffcaia2008_head/usr.bin/lsvfs/Makefile projects/tcp_ffcaia2008_head/usr.bin/m4/Makefile projects/tcp_ffcaia2008_head/usr.bin/mail/Makefile projects/tcp_ffcaia2008_head/usr.bin/make/Makefile projects/tcp_ffcaia2008_head/usr.bin/make/arch.c projects/tcp_ffcaia2008_head/usr.bin/make/dir.c projects/tcp_ffcaia2008_head/usr.bin/make/dir.h projects/tcp_ffcaia2008_head/usr.bin/make/for.c projects/tcp_ffcaia2008_head/usr.bin/make/globals.h projects/tcp_ffcaia2008_head/usr.bin/make/job.c projects/tcp_ffcaia2008_head/usr.bin/make/lst.c projects/tcp_ffcaia2008_head/usr.bin/make/lst.h projects/tcp_ffcaia2008_head/usr.bin/make/main.c projects/tcp_ffcaia2008_head/usr.bin/make/make.1 projects/tcp_ffcaia2008_head/usr.bin/make/make.c projects/tcp_ffcaia2008_head/usr.bin/make/parse.c projects/tcp_ffcaia2008_head/usr.bin/make/proc.c projects/tcp_ffcaia2008_head/usr.bin/make/str.c projects/tcp_ffcaia2008_head/usr.bin/make/targ.c projects/tcp_ffcaia2008_head/usr.bin/make/var.c projects/tcp_ffcaia2008_head/usr.bin/makewhatis/makewhatis.c projects/tcp_ffcaia2008_head/usr.bin/minigzip/Makefile projects/tcp_ffcaia2008_head/usr.bin/mkfifo/Makefile projects/tcp_ffcaia2008_head/usr.bin/mklocale/Makefile projects/tcp_ffcaia2008_head/usr.bin/mklocale/lex.l projects/tcp_ffcaia2008_head/usr.bin/mklocale/yacc.y projects/tcp_ffcaia2008_head/usr.bin/mkstr/Makefile projects/tcp_ffcaia2008_head/usr.bin/mktemp/mktemp.c projects/tcp_ffcaia2008_head/usr.bin/mkuzip/Makefile projects/tcp_ffcaia2008_head/usr.bin/msgs/Makefile projects/tcp_ffcaia2008_head/usr.bin/nc/Makefile projects/tcp_ffcaia2008_head/usr.bin/ncplist/Makefile projects/tcp_ffcaia2008_head/usr.bin/ncplist/ncplist.1 projects/tcp_ffcaia2008_head/usr.bin/netstat/if.c projects/tcp_ffcaia2008_head/usr.bin/netstat/ipsec.c projects/tcp_ffcaia2008_head/usr.bin/netstat/main.c projects/tcp_ffcaia2008_head/usr.bin/netstat/netstat.1 projects/tcp_ffcaia2008_head/usr.bin/netstat/netstat.h projects/tcp_ffcaia2008_head/usr.bin/newkey/Makefile projects/tcp_ffcaia2008_head/usr.bin/nfsstat/Makefile projects/tcp_ffcaia2008_head/usr.bin/nl/Makefile projects/tcp_ffcaia2008_head/usr.bin/nohup/Makefile projects/tcp_ffcaia2008_head/usr.bin/nslookup/Makefile projects/tcp_ffcaia2008_head/usr.bin/nsupdate/Makefile projects/tcp_ffcaia2008_head/usr.bin/opieinfo/Makefile projects/tcp_ffcaia2008_head/usr.bin/opiekey/Makefile projects/tcp_ffcaia2008_head/usr.bin/opiepasswd/Makefile projects/tcp_ffcaia2008_head/usr.bin/passwd/Makefile projects/tcp_ffcaia2008_head/usr.bin/passwd/passwd.c projects/tcp_ffcaia2008_head/usr.bin/perror/perror.c projects/tcp_ffcaia2008_head/usr.bin/pr/Makefile projects/tcp_ffcaia2008_head/usr.bin/pr/egetopt.c projects/tcp_ffcaia2008_head/usr.bin/printf/Makefile projects/tcp_ffcaia2008_head/usr.bin/procstat/Makefile projects/tcp_ffcaia2008_head/usr.bin/renice/renice.c projects/tcp_ffcaia2008_head/usr.bin/revoke/Makefile projects/tcp_ffcaia2008_head/usr.bin/rlogin/Makefile projects/tcp_ffcaia2008_head/usr.bin/rpcgen/Makefile projects/tcp_ffcaia2008_head/usr.bin/rpcgen/rpc_hout.c projects/tcp_ffcaia2008_head/usr.bin/rpcgen/rpc_main.c projects/tcp_ffcaia2008_head/usr.bin/rpcinfo/Makefile projects/tcp_ffcaia2008_head/usr.bin/rsh/Makefile projects/tcp_ffcaia2008_head/usr.bin/rup/Makefile projects/tcp_ffcaia2008_head/usr.bin/ruptime/Makefile projects/tcp_ffcaia2008_head/usr.bin/rusers/Makefile projects/tcp_ffcaia2008_head/usr.bin/rwho/Makefile projects/tcp_ffcaia2008_head/usr.bin/rwho/rwho.c projects/tcp_ffcaia2008_head/usr.bin/script/script.c projects/tcp_ffcaia2008_head/usr.bin/sed/Makefile projects/tcp_ffcaia2008_head/usr.bin/showmount/showmount.c projects/tcp_ffcaia2008_head/usr.bin/smbutil/Makefile projects/tcp_ffcaia2008_head/usr.bin/sockstat/Makefile projects/tcp_ffcaia2008_head/usr.bin/sockstat/sockstat.1 projects/tcp_ffcaia2008_head/usr.bin/sockstat/sockstat.c projects/tcp_ffcaia2008_head/usr.bin/su/Makefile projects/tcp_ffcaia2008_head/usr.bin/systat/Makefile projects/tcp_ffcaia2008_head/usr.bin/systat/main.c projects/tcp_ffcaia2008_head/usr.bin/systat/vmstat.c projects/tcp_ffcaia2008_head/usr.bin/tail/Makefile projects/tcp_ffcaia2008_head/usr.bin/tail/misc.c projects/tcp_ffcaia2008_head/usr.bin/tail/tail.1 projects/tcp_ffcaia2008_head/usr.bin/talk/ctl_transact.c projects/tcp_ffcaia2008_head/usr.bin/talk/display.c projects/tcp_ffcaia2008_head/usr.bin/talk/get_addrs.c projects/tcp_ffcaia2008_head/usr.bin/talk/get_iface.c projects/tcp_ffcaia2008_head/usr.bin/talk/get_names.c projects/tcp_ffcaia2008_head/usr.bin/talk/invite.c projects/tcp_ffcaia2008_head/usr.bin/talk/look_up.c projects/tcp_ffcaia2008_head/usr.bin/talk/talk.1 projects/tcp_ffcaia2008_head/usr.bin/talk/talk.c projects/tcp_ffcaia2008_head/usr.bin/talk/talk.h projects/tcp_ffcaia2008_head/usr.bin/tar/Makefile projects/tcp_ffcaia2008_head/usr.bin/tar/test/Makefile projects/tcp_ffcaia2008_head/usr.bin/tcopy/Makefile projects/tcp_ffcaia2008_head/usr.bin/tcopy/tcopy.c projects/tcp_ffcaia2008_head/usr.bin/telnet/Makefile projects/tcp_ffcaia2008_head/usr.bin/tftp/tftp.c projects/tcp_ffcaia2008_head/usr.bin/time/Makefile projects/tcp_ffcaia2008_head/usr.bin/top/Makefile projects/tcp_ffcaia2008_head/usr.bin/tr/Makefile projects/tcp_ffcaia2008_head/usr.bin/truss/Makefile projects/tcp_ffcaia2008_head/usr.bin/truss/amd64-fbsd32.c projects/tcp_ffcaia2008_head/usr.bin/truss/i386-fbsd.c projects/tcp_ffcaia2008_head/usr.bin/truss/main.c projects/tcp_ffcaia2008_head/usr.bin/truss/syscalls.c projects/tcp_ffcaia2008_head/usr.bin/tset/extern.h projects/tcp_ffcaia2008_head/usr.bin/tset/map.c projects/tcp_ffcaia2008_head/usr.bin/tset/misc.c projects/tcp_ffcaia2008_head/usr.bin/tset/set.c projects/tcp_ffcaia2008_head/usr.bin/tset/term.c projects/tcp_ffcaia2008_head/usr.bin/tset/tset.c projects/tcp_ffcaia2008_head/usr.bin/tset/wrterm.c projects/tcp_ffcaia2008_head/usr.bin/uname/uname.1 projects/tcp_ffcaia2008_head/usr.bin/uname/uname.c projects/tcp_ffcaia2008_head/usr.bin/unifdef/Makefile projects/tcp_ffcaia2008_head/usr.bin/unifdef/unifdef.1 projects/tcp_ffcaia2008_head/usr.bin/unifdef/unifdef.c projects/tcp_ffcaia2008_head/usr.bin/unifdef/unifdefall.sh projects/tcp_ffcaia2008_head/usr.bin/uniq/uniq.1 projects/tcp_ffcaia2008_head/usr.bin/uniq/uniq.c projects/tcp_ffcaia2008_head/usr.bin/unzip/Makefile projects/tcp_ffcaia2008_head/usr.bin/unzip/unzip.c projects/tcp_ffcaia2008_head/usr.bin/users/users.1 projects/tcp_ffcaia2008_head/usr.bin/users/users.c projects/tcp_ffcaia2008_head/usr.bin/uudecode/Makefile projects/tcp_ffcaia2008_head/usr.bin/uuencode/Makefile projects/tcp_ffcaia2008_head/usr.bin/vacation/Makefile projects/tcp_ffcaia2008_head/usr.bin/vgrind/Makefile projects/tcp_ffcaia2008_head/usr.bin/vi/Makefile projects/tcp_ffcaia2008_head/usr.bin/vis/foldit.c projects/tcp_ffcaia2008_head/usr.bin/vmstat/Makefile projects/tcp_ffcaia2008_head/usr.bin/w/w.1 projects/tcp_ffcaia2008_head/usr.bin/w/w.c projects/tcp_ffcaia2008_head/usr.bin/wall/Makefile projects/tcp_ffcaia2008_head/usr.bin/wall/wall.c projects/tcp_ffcaia2008_head/usr.bin/wc/Makefile projects/tcp_ffcaia2008_head/usr.bin/wc/wc.c projects/tcp_ffcaia2008_head/usr.bin/whereis/Makefile projects/tcp_ffcaia2008_head/usr.bin/who/Makefile projects/tcp_ffcaia2008_head/usr.bin/who/who.1 projects/tcp_ffcaia2008_head/usr.bin/who/who.c projects/tcp_ffcaia2008_head/usr.bin/whois/whois.1 projects/tcp_ffcaia2008_head/usr.bin/whois/whois.c projects/tcp_ffcaia2008_head/usr.bin/write/Makefile projects/tcp_ffcaia2008_head/usr.bin/write/write.c projects/tcp_ffcaia2008_head/usr.bin/xargs/Makefile projects/tcp_ffcaia2008_head/usr.bin/xinstall/Makefile projects/tcp_ffcaia2008_head/usr.bin/xinstall/xinstall.c projects/tcp_ffcaia2008_head/usr.bin/xlint/xlint/xlint.c projects/tcp_ffcaia2008_head/usr.bin/yacc/Makefile projects/tcp_ffcaia2008_head/usr.bin/yacc/defs.h projects/tcp_ffcaia2008_head/usr.bin/yacc/skeleton.c projects/tcp_ffcaia2008_head/usr.bin/ypcat/Makefile projects/tcp_ffcaia2008_head/usr.bin/ypmatch/Makefile projects/tcp_ffcaia2008_head/usr.bin/ypwhich/Makefile projects/tcp_ffcaia2008_head/usr.sbin/Makefile projects/tcp_ffcaia2008_head/usr.sbin/Makefile.inc projects/tcp_ffcaia2008_head/usr.sbin/ac/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ac/ac.8 projects/tcp_ffcaia2008_head/usr.sbin/ac/ac.c projects/tcp_ffcaia2008_head/usr.sbin/accton/Makefile projects/tcp_ffcaia2008_head/usr.sbin/accton/accton.c projects/tcp_ffcaia2008_head/usr.sbin/acpi/acpiconf/Makefile projects/tcp_ffcaia2008_head/usr.sbin/acpi/acpidb/Makefile projects/tcp_ffcaia2008_head/usr.sbin/acpi/acpidb/acpidb.c projects/tcp_ffcaia2008_head/usr.sbin/acpi/acpidump/Makefile projects/tcp_ffcaia2008_head/usr.sbin/acpi/iasl/Makefile projects/tcp_ffcaia2008_head/usr.sbin/adduser/adduser.sh projects/tcp_ffcaia2008_head/usr.sbin/amd/Makefile.inc projects/tcp_ffcaia2008_head/usr.sbin/ancontrol/ancontrol.c projects/tcp_ffcaia2008_head/usr.sbin/apm/Makefile projects/tcp_ffcaia2008_head/usr.sbin/apm/apm.8 projects/tcp_ffcaia2008_head/usr.sbin/apm/apm.c projects/tcp_ffcaia2008_head/usr.sbin/apmd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/arp/arp.c projects/tcp_ffcaia2008_head/usr.sbin/asf/Makefile projects/tcp_ffcaia2008_head/usr.sbin/asf/asf_kld.c projects/tcp_ffcaia2008_head/usr.sbin/audit/Makefile projects/tcp_ffcaia2008_head/usr.sbin/auditd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/auditreduce/Makefile projects/tcp_ffcaia2008_head/usr.sbin/authpf/Makefile projects/tcp_ffcaia2008_head/usr.sbin/boot0cfg/Makefile projects/tcp_ffcaia2008_head/usr.sbin/bootparamd/Makefile.inc projects/tcp_ffcaia2008_head/usr.sbin/bootparamd/bootparamd/bootparamd.c projects/tcp_ffcaia2008_head/usr.sbin/bsnmpd/bsnmpd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/bsnmpd/gensnmptree/Makefile projects/tcp_ffcaia2008_head/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_device_tbl.c projects/tcp_ffcaia2008_head/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_scalars.c projects/tcp_ffcaia2008_head/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_snmp.c projects/tcp_ffcaia2008_head/usr.sbin/bsnmpd/modules/snmp_pf/Makefile projects/tcp_ffcaia2008_head/usr.sbin/bsnmpd/modules/snmp_pf/pf_snmp.c projects/tcp_ffcaia2008_head/usr.sbin/btxld/Makefile projects/tcp_ffcaia2008_head/usr.sbin/burncd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/burncd/burncd.8 projects/tcp_ffcaia2008_head/usr.sbin/burncd/burncd.c projects/tcp_ffcaia2008_head/usr.sbin/cdcontrol/Makefile projects/tcp_ffcaia2008_head/usr.sbin/cdcontrol/cdcontrol.c projects/tcp_ffcaia2008_head/usr.sbin/chkgrp/Makefile projects/tcp_ffcaia2008_head/usr.sbin/chown/Makefile projects/tcp_ffcaia2008_head/usr.sbin/chroot/Makefile projects/tcp_ffcaia2008_head/usr.sbin/chroot/chroot.c projects/tcp_ffcaia2008_head/usr.sbin/clear_locks/Makefile projects/tcp_ffcaia2008_head/usr.sbin/config/Makefile projects/tcp_ffcaia2008_head/usr.sbin/config/lang.l projects/tcp_ffcaia2008_head/usr.sbin/cpucontrol/Makefile projects/tcp_ffcaia2008_head/usr.sbin/cpucontrol/cpucontrol.c projects/tcp_ffcaia2008_head/usr.sbin/crashinfo/crashinfo.sh projects/tcp_ffcaia2008_head/usr.sbin/cron/cron/Makefile projects/tcp_ffcaia2008_head/usr.sbin/cron/cron/cron.c projects/tcp_ffcaia2008_head/usr.sbin/crunch/Makefile.inc projects/tcp_ffcaia2008_head/usr.sbin/crunch/examples/really-big.conf projects/tcp_ffcaia2008_head/usr.sbin/ctm/ctm/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ctm/ctm_dequeue/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ctm/ctm_rmail/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ctm/ctm_smail/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ctm/ctm_smail/ctm_smail.c projects/tcp_ffcaia2008_head/usr.sbin/daemon/Makefile projects/tcp_ffcaia2008_head/usr.sbin/dconschat/Makefile projects/tcp_ffcaia2008_head/usr.sbin/devinfo/Makefile projects/tcp_ffcaia2008_head/usr.sbin/devinfo/devinfo.c projects/tcp_ffcaia2008_head/usr.sbin/digictl/Makefile projects/tcp_ffcaia2008_head/usr.sbin/diskinfo/Makefile projects/tcp_ffcaia2008_head/usr.sbin/diskinfo/diskinfo.8 projects/tcp_ffcaia2008_head/usr.sbin/diskinfo/diskinfo.c projects/tcp_ffcaia2008_head/usr.sbin/dnssec-dsfromkey/Makefile projects/tcp_ffcaia2008_head/usr.sbin/dnssec-keyfromlabel/Makefile projects/tcp_ffcaia2008_head/usr.sbin/dnssec-keygen/Makefile projects/tcp_ffcaia2008_head/usr.sbin/dnssec-signzone/Makefile projects/tcp_ffcaia2008_head/usr.sbin/dumpcis/Makefile projects/tcp_ffcaia2008_head/usr.sbin/editmap/Makefile projects/tcp_ffcaia2008_head/usr.sbin/edquota/Makefile projects/tcp_ffcaia2008_head/usr.sbin/eeprom/Makefile projects/tcp_ffcaia2008_head/usr.sbin/eeprom/eeprom.c projects/tcp_ffcaia2008_head/usr.sbin/extattr/Makefile projects/tcp_ffcaia2008_head/usr.sbin/extattr/rmextattr.c projects/tcp_ffcaia2008_head/usr.sbin/extattrctl/Makefile projects/tcp_ffcaia2008_head/usr.sbin/extattrctl/extattrctl.c projects/tcp_ffcaia2008_head/usr.sbin/faithd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/faithd/faithd.8 projects/tcp_ffcaia2008_head/usr.sbin/faithd/faithd.c projects/tcp_ffcaia2008_head/usr.sbin/fdcontrol/Makefile projects/tcp_ffcaia2008_head/usr.sbin/fdformat/Makefile projects/tcp_ffcaia2008_head/usr.sbin/fdread/Makefile projects/tcp_ffcaia2008_head/usr.sbin/fdwrite/Makefile projects/tcp_ffcaia2008_head/usr.sbin/fifolog/Makefile.inc projects/tcp_ffcaia2008_head/usr.sbin/fifolog/fifolog_writer/fifolog_writer.c projects/tcp_ffcaia2008_head/usr.sbin/fifolog/lib/getdate.y projects/tcp_ffcaia2008_head/usr.sbin/freebsd-update/freebsd-update.sh projects/tcp_ffcaia2008_head/usr.sbin/ftp-proxy/libevent/Makefile projects/tcp_ffcaia2008_head/usr.sbin/getfmac/Makefile projects/tcp_ffcaia2008_head/usr.sbin/getpmac/Makefile projects/tcp_ffcaia2008_head/usr.sbin/gstat/Makefile projects/tcp_ffcaia2008_head/usr.sbin/i2c/i2c.8 projects/tcp_ffcaia2008_head/usr.sbin/inetd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/inetd/inetd.c projects/tcp_ffcaia2008_head/usr.sbin/iostat/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ip6addrctl/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ipfwpcap/Makefile projects/tcp_ffcaia2008_head/usr.sbin/jail/Makefile projects/tcp_ffcaia2008_head/usr.sbin/jail/jail.8 projects/tcp_ffcaia2008_head/usr.sbin/jexec/Makefile projects/tcp_ffcaia2008_head/usr.sbin/jls/Makefile projects/tcp_ffcaia2008_head/usr.sbin/jls/jls.c projects/tcp_ffcaia2008_head/usr.sbin/kbdcontrol/kbdcontrol.c projects/tcp_ffcaia2008_head/usr.sbin/kernbb/Makefile projects/tcp_ffcaia2008_head/usr.sbin/lastlogin/Makefile projects/tcp_ffcaia2008_head/usr.sbin/lastlogin/lastlogin.8 projects/tcp_ffcaia2008_head/usr.sbin/lastlogin/lastlogin.c projects/tcp_ffcaia2008_head/usr.sbin/lmcconfig/Makefile projects/tcp_ffcaia2008_head/usr.sbin/lpr/common_source/Makefile projects/tcp_ffcaia2008_head/usr.sbin/lpr/common_source/lp.h projects/tcp_ffcaia2008_head/usr.sbin/lpr/common_source/rmjob.c projects/tcp_ffcaia2008_head/usr.sbin/lpr/filters.ru/Makefile.inc projects/tcp_ffcaia2008_head/usr.sbin/lpr/lpc/Makefile projects/tcp_ffcaia2008_head/usr.sbin/lpr/lpd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/lpr/lpr/Makefile projects/tcp_ffcaia2008_head/usr.sbin/lptcontrol/Makefile projects/tcp_ffcaia2008_head/usr.sbin/mailstats/Makefile projects/tcp_ffcaia2008_head/usr.sbin/mailwrapper/Makefile projects/tcp_ffcaia2008_head/usr.sbin/makefs/makefs.8 projects/tcp_ffcaia2008_head/usr.sbin/makemap/Makefile projects/tcp_ffcaia2008_head/usr.sbin/memcontrol/Makefile projects/tcp_ffcaia2008_head/usr.sbin/mergemaster/mergemaster.8 projects/tcp_ffcaia2008_head/usr.sbin/mergemaster/mergemaster.sh projects/tcp_ffcaia2008_head/usr.sbin/mixer/Makefile projects/tcp_ffcaia2008_head/usr.sbin/mld6query/Makefile projects/tcp_ffcaia2008_head/usr.sbin/mlxcontrol/Makefile projects/tcp_ffcaia2008_head/usr.sbin/mount_portalfs/mount_portalfs.c projects/tcp_ffcaia2008_head/usr.sbin/mount_smbfs/Makefile projects/tcp_ffcaia2008_head/usr.sbin/mountd/exports.5 projects/tcp_ffcaia2008_head/usr.sbin/moused/Makefile projects/tcp_ffcaia2008_head/usr.sbin/mptable/Makefile projects/tcp_ffcaia2008_head/usr.sbin/mtree/Makefile projects/tcp_ffcaia2008_head/usr.sbin/named-checkconf/Makefile projects/tcp_ffcaia2008_head/usr.sbin/named-checkzone/Makefile projects/tcp_ffcaia2008_head/usr.sbin/named/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ndiscvt/ndiscvt.c projects/tcp_ffcaia2008_head/usr.sbin/ndp/Makefile projects/tcp_ffcaia2008_head/usr.sbin/newsyslog/Makefile projects/tcp_ffcaia2008_head/usr.sbin/newsyslog/newsyslog.8 projects/tcp_ffcaia2008_head/usr.sbin/newsyslog/newsyslog.c projects/tcp_ffcaia2008_head/usr.sbin/nfsd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/nfsd/nfsd.c projects/tcp_ffcaia2008_head/usr.sbin/nfsd/nfsv4.4 projects/tcp_ffcaia2008_head/usr.sbin/nfsd/stablerestart.5 projects/tcp_ffcaia2008_head/usr.sbin/nghook/Makefile projects/tcp_ffcaia2008_head/usr.sbin/nscd/nscd.conf.5 projects/tcp_ffcaia2008_head/usr.sbin/ntp/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ntp/Makefile.inc projects/tcp_ffcaia2008_head/usr.sbin/ntp/config.h projects/tcp_ffcaia2008_head/usr.sbin/ntp/doc/Makefile projects/tcp_ffcaia2008_head/usr.sbin/nvram/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ofwdump/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pciconf/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/add/main.c projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/create/main.c projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/delete/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/delete/main.c projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/info/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/info/main.c projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/lib/lib.h projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/updating/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/updating/main.c projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/updating/pkg_updating.1 projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/version/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pkg_install/version/main.c projects/tcp_ffcaia2008_head/usr.sbin/pmcannotate/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pmcannotate/pmcannotate.c projects/tcp_ffcaia2008_head/usr.sbin/pmccontrol/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pmcstat/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pmcstat/pmcstat_log.c projects/tcp_ffcaia2008_head/usr.sbin/pnpinfo/Makefile projects/tcp_ffcaia2008_head/usr.sbin/portsnap/make_index/Makefile projects/tcp_ffcaia2008_head/usr.sbin/portsnap/phttpget/Makefile projects/tcp_ffcaia2008_head/usr.sbin/portsnap/portsnap/portsnap.sh projects/tcp_ffcaia2008_head/usr.sbin/powerd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/powerd/powerd.8 projects/tcp_ffcaia2008_head/usr.sbin/powerd/powerd.c projects/tcp_ffcaia2008_head/usr.sbin/ppp/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ppp/id.c projects/tcp_ffcaia2008_head/usr.sbin/ppp/id.h projects/tcp_ffcaia2008_head/usr.sbin/ppp/physical.c projects/tcp_ffcaia2008_head/usr.sbin/ppp/physical.h projects/tcp_ffcaia2008_head/usr.sbin/ppp/ppp.8.m4 projects/tcp_ffcaia2008_head/usr.sbin/pppctl/Makefile projects/tcp_ffcaia2008_head/usr.sbin/praliases/Makefile projects/tcp_ffcaia2008_head/usr.sbin/praudit/Makefile projects/tcp_ffcaia2008_head/usr.sbin/procctl/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pstat/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pw/Makefile projects/tcp_ffcaia2008_head/usr.sbin/pw/pw_user.c projects/tcp_ffcaia2008_head/usr.sbin/pwd_mkdb/Makefile projects/tcp_ffcaia2008_head/usr.sbin/quotaon/Makefile projects/tcp_ffcaia2008_head/usr.sbin/quotaon/quotaon.c projects/tcp_ffcaia2008_head/usr.sbin/repquota/Makefile projects/tcp_ffcaia2008_head/usr.sbin/repquota/repquota.c projects/tcp_ffcaia2008_head/usr.sbin/rip6query/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rip6query/rip6query.c projects/tcp_ffcaia2008_head/usr.sbin/rmt/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rmt/rmt.c projects/tcp_ffcaia2008_head/usr.sbin/rndc-confgen/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rndc/Makefile projects/tcp_ffcaia2008_head/usr.sbin/route6d/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rpc.lockd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rpc.statd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rpc.umntall/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rpc.umntall/mounttab.c projects/tcp_ffcaia2008_head/usr.sbin/rpc.yppasswdd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rpc.ypupdated/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rpc.ypxfrd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rpcbind/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rrenumd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rtadvd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rtprio/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rtsold/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rtsold/probe.c projects/tcp_ffcaia2008_head/usr.sbin/rwhod/Makefile projects/tcp_ffcaia2008_head/usr.sbin/rwhod/rwhod.8 projects/tcp_ffcaia2008_head/usr.sbin/rwhod/rwhod.c projects/tcp_ffcaia2008_head/usr.sbin/sa/Makefile projects/tcp_ffcaia2008_head/usr.sbin/sa/main.c projects/tcp_ffcaia2008_head/usr.sbin/sa/pdb.c projects/tcp_ffcaia2008_head/usr.sbin/sa/usrdb.c projects/tcp_ffcaia2008_head/usr.sbin/sade/termcap.c projects/tcp_ffcaia2008_head/usr.sbin/sendmail/Makefile projects/tcp_ffcaia2008_head/usr.sbin/setfmac/Makefile projects/tcp_ffcaia2008_head/usr.sbin/setpmac/Makefile projects/tcp_ffcaia2008_head/usr.sbin/smbmsg/Makefile projects/tcp_ffcaia2008_head/usr.sbin/smbmsg/smbmsg.8 projects/tcp_ffcaia2008_head/usr.sbin/snapinfo/snapinfo.c projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/Makefile projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/disks.c projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/dist.c projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/install.c projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/label.c projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/menus.c projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/sysinstall.8 projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/termcap.c projects/tcp_ffcaia2008_head/usr.sbin/sysinstall/user.c projects/tcp_ffcaia2008_head/usr.sbin/syslogd/syslogd.c projects/tcp_ffcaia2008_head/usr.sbin/tcpdchk/Makefile projects/tcp_ffcaia2008_head/usr.sbin/tcpdmatch/Makefile projects/tcp_ffcaia2008_head/usr.sbin/tcpdrop/Makefile projects/tcp_ffcaia2008_head/usr.sbin/tcpdump/Makefile.inc projects/tcp_ffcaia2008_head/usr.sbin/timed/timed/master.c projects/tcp_ffcaia2008_head/usr.sbin/timed/timed/slave.c projects/tcp_ffcaia2008_head/usr.sbin/traceroute/Makefile projects/tcp_ffcaia2008_head/usr.sbin/traceroute6/Makefile projects/tcp_ffcaia2008_head/usr.sbin/tzsetup/Makefile projects/tcp_ffcaia2008_head/usr.sbin/uathload/Makefile projects/tcp_ffcaia2008_head/usr.sbin/usbconfig/Makefile projects/tcp_ffcaia2008_head/usr.sbin/usbconfig/dump.c projects/tcp_ffcaia2008_head/usr.sbin/usbconfig/dump.h projects/tcp_ffcaia2008_head/usr.sbin/usbconfig/usbconfig.8 projects/tcp_ffcaia2008_head/usr.sbin/usbconfig/usbconfig.c projects/tcp_ffcaia2008_head/usr.sbin/usbdevs/Makefile projects/tcp_ffcaia2008_head/usr.sbin/vidcontrol/Makefile projects/tcp_ffcaia2008_head/usr.sbin/vidcontrol/vidcontrol.1 projects/tcp_ffcaia2008_head/usr.sbin/vidcontrol/vidcontrol.c projects/tcp_ffcaia2008_head/usr.sbin/vipw/Makefile projects/tcp_ffcaia2008_head/usr.sbin/wake/Makefile projects/tcp_ffcaia2008_head/usr.sbin/wake/wake.8 projects/tcp_ffcaia2008_head/usr.sbin/wake/wake.c projects/tcp_ffcaia2008_head/usr.sbin/watchdogd/Makefile projects/tcp_ffcaia2008_head/usr.sbin/watchdogd/watchdogd.c projects/tcp_ffcaia2008_head/usr.sbin/wlandebug/Makefile projects/tcp_ffcaia2008_head/usr.sbin/wlconfig/Makefile projects/tcp_ffcaia2008_head/usr.sbin/yp_mkdb/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ypbind/Makefile projects/tcp_ffcaia2008_head/usr.sbin/yppoll/Makefile projects/tcp_ffcaia2008_head/usr.sbin/yppush/Makefile projects/tcp_ffcaia2008_head/usr.sbin/yppush/yppush_main.c projects/tcp_ffcaia2008_head/usr.sbin/ypserv/Makefile projects/tcp_ffcaia2008_head/usr.sbin/ypserv/yp_main.c projects/tcp_ffcaia2008_head/usr.sbin/ypserv/yp_server.c projects/tcp_ffcaia2008_head/usr.sbin/ypserv/ypinit.sh projects/tcp_ffcaia2008_head/usr.sbin/ypserv/ypserv.8 projects/tcp_ffcaia2008_head/usr.sbin/ypset/Makefile projects/tcp_ffcaia2008_head/usr.sbin/zic/Theory projects/tcp_ffcaia2008_head/usr.sbin/zic/zdump.c projects/tcp_ffcaia2008_head/usr.sbin/zic/zdump/Makefile projects/tcp_ffcaia2008_head/usr.sbin/zic/zic.8 projects/tcp_ffcaia2008_head/usr.sbin/zic/zic/Makefile Directory Properties: projects/tcp_ffcaia2008_head/ (props changed) projects/tcp_ffcaia2008_head/etc/rc.d/static_arp (props changed) projects/tcp_ffcaia2008_head/games/fortune/datfiles/gerrold.limerick (props changed) projects/tcp_ffcaia2008_head/sys/ (props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/adm5120reg.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/admpci.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/console.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/if_admswreg.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/obiovar.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/std.adm5120 (props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/uart_bus_adm5120.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/uart_dev_adm5120.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/adm5120/uart_dev_adm5120.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/.cvsignore (props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/ADM5120 (props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/ADM5120.hints (props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/DEFAULTS (props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/IDT (props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/IDT.hints (props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/MALTA.hints (props changed) projects/tcp_ffcaia2008_head/sys/mips/conf/SENTRY5.hints (props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/idtpci.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/idtreg.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/if_kr.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/if_krreg.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/obiovar.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/idt/std.idt (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/_bus_octeon.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/_inttypes.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/_limits.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/_stdint.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/archtype.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/asmacros.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/bootinfo.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/bswap.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/bus_dma.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/cache_r4k.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/clock.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/clockvar.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/cputypes.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/defs.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/exec.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/floatingpoint.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/fpu.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/frame.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/gdb_machdep.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/ieee.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/ieeefp.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/in_cksum.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/iodev.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/limits.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/memdev.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/metadata.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/minidump.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/mips_opcode.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/mp_watchdog.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/mutex.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/pci_cfgreg.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/pcpu.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/pmc_mdep.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/ppireg.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/ptrace.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/queue.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/reg.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/reloc.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/resource.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/rm7000.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/runq.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/segments.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/setjmp.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/sf_buf.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/sigframe.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/signal.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/smp.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/stdarg.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/timerreg.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/varargs.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/include/vmparam.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/gt.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/gtreg.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/gtvar.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/obiovar.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/malta/yamon.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/autoconf.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/db_disasm.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/db_interface.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/dump_machdep.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/elf64_machdep.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/mp_machdep.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/stack_machdep.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/mips/uio_machdep.c (props changed) projects/tcp_ffcaia2008_head/sys/mips/sentry5/obiovar.h (props changed) projects/tcp_ffcaia2008_head/sys/mips/sentry5/s5reg.h (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/lastcomm/regress.t (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.3 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.4 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.5 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.6 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.status.7 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.3 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.4 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.5 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.6 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stderr.7 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.3 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.4 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.5 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.6 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd/expected.stdout.7 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.3 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.4 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.5 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.6 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.status.7 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.3 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.4 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.5 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.6 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stderr.7 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.3 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.4 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.5 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.6 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_44bsd_mod/expected.stdout.7 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.3 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.4 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.5 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.6 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.status.7 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.3 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.4 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.5 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.6 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stderr.7 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.3 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.4 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.5 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.6 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/archives/fmt_oldbsd/expected.stdout.7 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t0/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t0/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t0/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t1/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t1/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t1/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t2/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t2/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t2/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t3/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t3/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/basic/t3/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/builtin/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/builtin/expected.status.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/builtin/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/builtin/expected.stderr.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/builtin/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/builtin/expected.stdout.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path/expected.status.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path/expected.stderr.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path/expected.stdout.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path_select/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path_select/expected.status.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path_select/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path_select/expected.stderr.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path_select/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/path_select/expected.stdout.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/replace/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/replace/expected.status.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/replace/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/replace/expected.stderr.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/replace/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/replace/expected.stdout.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/select/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/select/expected.status.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/select/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/select/expected.stderr.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/select/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/shell/select/expected.stdout.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/suffixes/basic/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/suffixes/basic/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/suffixes/basic/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/suffixes/src_wild1/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/suffixes/src_wild1/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/suffixes/src_wild1/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/suffixes/src_wild2/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/suffixes/src_wild2/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/suffixes/src_wild2/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/enl/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/enl/expected.status.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/enl/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/enl/expected.stderr.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/enl/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/enl/expected.stdout.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/semi/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/semi/expected.status.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/semi/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/semi/expected.stderr.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/semi/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/syntax/semi/expected.stdout.2 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/variables/modifier_M/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/variables/modifier_M/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/variables/modifier_M/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/variables/t0/expected.status.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/variables/t0/expected.stderr.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.bin/make/variables/t0/expected.stdout.1 (props changed) projects/tcp_ffcaia2008_head/tools/regression/usr.sbin/sa/regress.t (props changed) Modified: projects/tcp_ffcaia2008_head/COPYRIGHT ============================================================================== --- projects/tcp_ffcaia2008_head/COPYRIGHT Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/COPYRIGHT Thu Jan 28 02:14:45 2010 (r203104) @@ -4,7 +4,7 @@ The compilation of software known as FreeBSD is distributed under the following terms: -Copyright (c) 1992-2009 The FreeBSD Project. All rights reserved. +Copyright (c) 1992-2010 The FreeBSD Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions Modified: projects/tcp_ffcaia2008_head/MAINTAINERS ============================================================================== --- projects/tcp_ffcaia2008_head/MAINTAINERS Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/MAINTAINERS Thu Jan 28 02:14:45 2010 (r203104) @@ -48,7 +48,6 @@ iostat(8) ken Pre-commit review requeste cd(4) ken Pre-commit review requested. pass(4) ken Pre-commit review requested. ch(4) ken Pre-commit review requested. -isp(4) mjacob Pre-commit review requested. em(4) jfv Pre-commit review requested. tdfx(4) cokane Just keep me informed of changes, try not to break it. sendmail gshapiro Pre-commit review requested. @@ -124,6 +123,8 @@ usr.bin/bluetooth emax Pre-commit review usr.sbin/bluetooth emax Pre-commit review preferred. gnu/usr.bin/send-pr bugmaster Pre-commit review requested. ncurses rafan Heads-up appreciated, try not to break it. +*env(3) secteam Due to the problematic security history of this + code, please have patches reviewed by secteam. Following are the entries from the Makefiles, and a few other sources. Please remove stale entries from both their origin, and this file. Modified: projects/tcp_ffcaia2008_head/Makefile ============================================================================== --- projects/tcp_ffcaia2008_head/Makefile Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/Makefile Thu Jan 28 02:14:45 2010 (r203104) @@ -278,7 +278,7 @@ tinderbox: # with a reasonable chance of success, regardless of how old your # existing system is. # -.if make(universe) || make(tinderbox) +.if make(universe) || make(universe_kernels) || make(tinderbox) TARGETS?=amd64 arm i386 ia64 mips pc98 powerpc sparc64 sun4v .if defined(DOING_TINDERBOX) @@ -297,10 +297,6 @@ universe_prologue: rm -f ${FAILFILE} .endif .for target in ${TARGETS} -KERNCONFS!= cd ${.CURDIR}/sys/${target}/conf && \ - find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \ - ! -name DEFAULTS ! -name LINT -KERNCONFS:= ${KERNCONFS:S/^NOTES$/LINT/} universe: universe_${target} .ORDER: universe_prologue universe_${target} universe_epilogue universe_${target}: @@ -320,16 +316,26 @@ universe_${target}: (echo "${target} 'make LINT' failed," \ "check _.${target}.makeLINT for details"| ${MAKEFAIL})) .endif + @cd ${.CURDIR} && ${MAKE} ${.MAKEFLAGS} TARGET=${target} \ + universe_kernels + @echo ">> ${target} completed on `LC_ALL=C date`" +.endfor +universe_kernels: universe_kernconfs +.if !defined(TARGET) +TARGET!= uname -m +.endif +KERNCONFS!= cd ${.CURDIR}/sys/${TARGET}/conf && \ + find [A-Z0-9]*[A-Z0-9] -type f -maxdepth 0 \ + ! -name DEFAULTS ! -name NOTES +universe_kernconfs: .for kernel in ${KERNCONFS} @(cd ${.CURDIR} && env __MAKE_CONF=/dev/null \ ${MAKE} ${JFLAG} buildkernel \ - TARGET=${target} \ + TARGET=${TARGET} \ KERNCONF=${kernel} \ - > _.${target}.${kernel} 2>&1 || \ - (echo "${target} ${kernel} kernel failed," \ - "check _.${target}.${kernel} for details"| ${MAKEFAIL})) -.endfor - @echo ">> ${target} completed on `LC_ALL=C date`" + > _.${TARGET}.${kernel} 2>&1 || \ + (echo "${TARGET} ${kernel} kernel failed," \ + "check _.${TARGET}.${kernel} for details"| ${MAKEFAIL})) .endfor universe: universe_epilogue universe_epilogue: Modified: projects/tcp_ffcaia2008_head/Makefile.inc1 ============================================================================== --- projects/tcp_ffcaia2008_head/Makefile.inc1 Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/Makefile.inc1 Thu Jan 28 02:14:45 2010 (r203104) @@ -5,10 +5,11 @@ # -DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir # -DNO_CLEAN do not clean at all # -DNO_SHARE do not go into share subdir -# -DKERNFAST define NO_KERNELCONFIG, NO_KERNELCLEAN and NO_KERNELDEPEND +# -DKERNFAST define NO_KERNEL{CONFIG,CLEAN,DEPEND,OBJ} # -DNO_KERNELCONFIG do not run config in ${MAKE} buildkernel # -DNO_KERNELCLEAN do not run ${MAKE} clean in ${MAKE} buildkernel # -DNO_KERNELDEPEND do not run ${MAKE} depend in ${MAKE} buildkernel +# -DNO_KERNELOBJ do not run ${MAKE} obj in ${MAKE} buildkernel # -DNO_PORTSUPDATE do not update ports in ${MAKE} update # -DNO_DOCUPDATE do not update doc in ${MAKE} update # -DNO_CTF do not run the DTrace CTF conversion tools on built objects @@ -272,7 +273,7 @@ LIB32CPUFLAGS= -march=i686 -mmmx -msse - LIB32CPUFLAGS= -march=${TARGET_CPUTYPE} .endif LIB32FLAGS= -m32 ${LIB32CPUFLAGS} -mfancy-math-387 -DCOMPAT_32BIT \ - -iprefix ${LIB32TMP}/usr/ \ + -isystem ${LIB32TMP}/usr/include/ \ -L${LIB32TMP}/usr/lib32 \ -B${LIB32TMP}/usr/lib32 @@ -694,6 +695,7 @@ distrib-dirs distribution: NO_KERNELCLEAN= t NO_KERNELCONFIG= t NO_KERNELDEPEND= t +NO_KERNELOBJ= t # Shortcut for KERNCONF=Blah -DKERNFAST is now KERNFAST=Blah .if !defined(KERNCONF) && ${KERNFAST} != "1" KERNCONF=${KERNFAST} @@ -763,11 +765,13 @@ buildkernel: @echo "--------------------------------------------------------------" cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} ${CLEANDIR} .endif +.if !defined(NO_KERNELOBJ) @echo @echo "--------------------------------------------------------------" @echo ">>> stage 2.2: rebuilding the object tree" @echo "--------------------------------------------------------------" cd ${KRNLOBJDIR}/${_kernel}; ${KMAKE} obj +.endif @echo @echo "--------------------------------------------------------------" @echo ">>> stage 2.3: build tools" @@ -936,6 +940,11 @@ _mklocale= usr.bin/mklocale _sed= usr.bin/sed .endif +.if ${BOOTSTRAPPING} < 900006 +_lex= usr.bin/lex +_yacc= usr.bin/yacc +.endif + .if ${BOOTSTRAPPING} < 700018 _gensnmptree= usr.sbin/bsnmpd/gensnmptree .endif @@ -962,6 +971,8 @@ bootstrap-tools: ${_mklocale} \ usr.bin/rpcgen \ ${_sed} \ + ${_lex} \ + ${_yacc} \ usr.bin/xinstall \ ${_gensnmptree} \ usr.sbin/config \ @@ -1094,19 +1105,19 @@ _startup_libs+= lib/libc gnu/lib/libgcc__L: lib/libc__L -_prebuild_libs= ${_kerberos5_lib_libasn1} ${_kerberos5_lib_libkrb5} \ - ${_kerberos5_lib_libhx509} ${_kerberos5_lib_libroken} \ - ${_kerberos5_lib_libheimntlm} ${_kerberos5_lib_libgssapi_krb5} \ - lib/libbz2 lib/libcom_err lib/libcrypt lib/libelf \ +_prebuild_libs= ${_kerberos5_lib_libasn1} ${_kerberos5_lib_libheimntlm} \ + ${_kerberos5_lib_libhx509} ${_kerberos5_lib_libkrb5} \ + ${_kerberos5_lib_libroken} \ + lib/libbz2 lib/libcom_err lib/libcrypt \ lib/libexpat \ - ${_lib_cddl} ${_lib_libgssapi} ${_lib_libipx} \ + ${_lib_libgssapi} ${_lib_libipx} \ lib/libkiconv lib/libkvm lib/libmd \ lib/ncurses/ncurses lib/ncurses/ncursesw \ lib/libopie lib/libpam ${_lib_libthr} \ - lib/libradius lib/libsbuf lib/libtacplus lib/libutil \ - ${_lib_libypclnt} lib/libz lib/msun \ + lib/libradius lib/libsbuf lib/libtacplus \ + lib/libutil ${_lib_libypclnt} lib/libz lib/msun \ ${_secure_lib_libcrypto} ${_secure_lib_libssh} \ - ${_secure_lib_libssl} lib/libdwarf lib/libproc + ${_secure_lib_libssl} .if ${MK_LIBTHR} != "no" _lib_libthr= lib/libthr @@ -1128,18 +1139,20 @@ lib/libradius__L secure/lib/libssl__L: s .if ${MK_OPENSSH} != "no" _secure_lib_libssh= secure/lib/libssh secure/lib/libssh__L: lib/libz__L secure/lib/libcrypto__L lib/libcrypt__L -.if ${MK_KERBEROS} != "no" -kerberos5/lib/libgssapi_krb5__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ +.if ${MK_KERBEROS_SUPPORT} != "no" +secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libkrb5__L \ kerberos5/lib/libhx509__L kerberos5/lib/libasn1__L lib/libcom_err__L \ - lib/libmd__L kerberos5/lib/libroken__L secure/lib/libcrypto__L \ - lib/libcrypt__L -secure/lib/libssh__L: lib/libgssapi__L kerberos5/lib/libgssapi_krb5__L + lib/libmd__L kerberos5/lib/libroken__L .endif .endif .endif _secure_lib= secure/lib .endif +.if ${MK_GSSAPI} != "no" +_lib_libgssapi= lib/libgssapi +.endif + .if ${MK_IPX} != "no" _lib_libipx= lib/libipx .endif @@ -1151,8 +1164,6 @@ _kerberos5_lib_libkrb5= kerberos5/lib/li _kerberos5_lib_libhx509= kerberos5/lib/libhx509 _kerberos5_lib_libroken= kerberos5/lib/libroken _kerberos5_lib_libheimntlm= kerberos5/lib/libheimntlm -_kerberos5_lib_libgssapi_krb5= kerberos5/lib/libgssapi_krb5 -_lib_libgssapi= lib/libgssapi .endif .if ${MK_NIS} != "no" @@ -1255,7 +1266,7 @@ delete-old-files: fi; \ done # Remove catpages without corresponding manpages. - @3<&0; \ + @exec 3<&0; \ find ${DESTDIR}/usr/share/man/cat* ! -type d | \ sed -ep -e's:${DESTDIR}/usr/share/man/cat:${DESTDIR}/usr/share/man/man:' | \ while read catpage; do \ Modified: projects/tcp_ffcaia2008_head/ObsoleteFiles.inc ============================================================================== --- projects/tcp_ffcaia2008_head/ObsoleteFiles.inc Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/ObsoleteFiles.inc Thu Jan 28 02:14:45 2010 (r203104) @@ -14,6 +14,69 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20100122: move BSDL bc/dc USD documents to /usr/share/doc/usd +OLD_FILES+=usr/share/doc/papers/bc.ascii.gz +OLD_FILES+=usr/share/doc/papers/dc.ascii.gz +# 20100120: replacing GNU bc/dc with BSDL versions +OLD_FILES+=usr/share/examples/bc/ckbook.b +OLD_FILES+=usr/share/examples/bc/pi.b +OLD_FILES+=usr/share/examples/bc/primes.b +OLD_FILES+=usr/share/examples/bc/twins.b +OLD_FILES+=usr/share/info/dc.info.gz +OLD_DIRS+=usr/share/examples/bc +# 20100114: removal of ttyslot(3) +OLD_FILES+=usr/share/man/man3/ttyslot.3.gz +# 20100113: remove utmp.h, replace it by utmpx.h +OLD_FILES+=usr/share/man/man3/login.3.gz +OLD_FILES+=usr/share/man/man3/logout.3.gz +OLD_FILES+=usr/share/man/man3/logwtmp.3.gz +OLD_FILES+=usr/share/man/man3/ulog_endutxent.3.gz +OLD_FILES+=usr/share/man/man3/ulog_getutxent.3.gz +OLD_FILES+=usr/share/man/man3/ulog_getutxline.3.gz +OLD_FILES+=usr/share/man/man3/ulog_getutxuser.3.gz +OLD_FILES+=usr/share/man/man3/ulog_pututxline.3.gz +OLD_FILES+=usr/share/man/man3/ulog_setutxent.3.gz +OLD_FILES+=usr/share/man/man3/ulog_setutxfile.3.gz +OLD_FILES+=usr/share/man/man5/lastlog.5.gz +OLD_FILES+=usr/share/man/man5/utmp.5.gz +OLD_FILES+=usr/share/man/man5/wtmp.5.gz +OLD_LIBS+=lib/libutil.so.8 +# 20100105: new userland semaphore implementation +OLD_FILES+=usr/include/sys/semaphore.h +# 20100103: ntptrace(8) removed +OLD_FILES+=usr/sbin/ntptrace +OLD_FILES+=usr/share/man/man8/ntptrace.8.gz +# 20091229: remove no longer relevant examples +OLD_FILES+=usr/share/examples/pppd/auth-down.sample +OLD_FILES+=usr/share/examples/pppd/auth-up.sample +OLD_FILES+=usr/share/examples/pppd/chap-secrets.sample +OLD_FILES+=usr/share/examples/pppd/chat.sh.sample +OLD_FILES+=usr/share/examples/pppd/ip-down.sample +OLD_FILES+=usr/share/examples/pppd/ip-up.sample +OLD_FILES+=usr/share/examples/pppd/options.sample +OLD_FILES+=usr/share/examples/pppd/pap-secrets.sample +OLD_FILES+=usr/share/examples/pppd/ppp.deny.sample +OLD_FILES+=usr/share/examples/pppd/ppp.shells.sample +OLD_DIRS+=usr/share/examples/pppd +OLD_FILES+=usr/share/examples/slattach/unit-command.sh +OLD_DIRS+=usr/share/examples/slattach +OLD_FILES+=usr/share/examples/sliplogin/slip.hosts +OLD_FILES+=usr/share/examples/sliplogin/slip.login +OLD_FILES+=usr/share/examples/sliplogin/slip.logout +OLD_FILES+=usr/share/examples/sliplogin/slip.slparms +OLD_DIRS+=usr/share/examples/sliplogin +OLD_FILES+=usr/share/examples/startslip/sldown.sh +OLD_FILES+=usr/share/examples/startslip/slip.sh +OLD_FILES+=usr/share/examples/startslip/slup.sh +OLD_DIRS+=usr/share/examples/startslip +# 20091202: unify rc.firewall and rc.firewall6. +OLD_FILES+=etc/rc.d/ip6fw +OLD_FILES+=etc/rc.firewall6 +OLD_FILES+=usr/share/examples/etc/rc.firewall6 +# 20091117: removal of rc.early(8) link +OLD_FILES+=usr/share/man/man8/rc.early.8.gz +# 20091117: usr/share/zoneinfo/GMT link removed +OLD_FILES+=usr/share/zoneinfo/GMT # 20091027: pselect.3 implemented as syscall OLD_FILES+=usr/share/man/man3/pselect.3.gz # 20091005: fusword.9 and susword.9 removed Modified: projects/tcp_ffcaia2008_head/UPDATING ============================================================================== --- projects/tcp_ffcaia2008_head/UPDATING Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/UPDATING Thu Jan 28 02:14:45 2010 (r203104) @@ -22,6 +22,67 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. machines to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20100113: + The utmp user accounting database has been replaced with utmpx, + the user accounting interface standardized by POSIX. + Unfortunately the semantics of utmp and utmpx don't match, + making it practically impossible to support both interfaces. + The user accounting database is used by tools like finger(1), + last(1), talk(1), w(1) and ac(8). + + All applications in the base system use utmpx. This means only + local binaries (e.g. from the ports tree) may still use these + utmp database files. These applications must be rebuilt to make + use of utmpx. + + After the system has been upgraded, it is safe to remove the old + log files (/var/run/utmp, /var/log/lastlog and /var/log/wtmp*), + assuming their contents is of no importance anymore. Old wtmp + databases can only be used by last(1) and ac(8) after they have + been converted to the new format using wtmpcvt(1). + +20100108: + Introduce the kernel thread "deadlock resolver" (which can be enabled + via the DEADLKRES option, see NOTES for more details) and the + sleepq_type() function for sleepqueues. + +20091202: + The rc.firewall and rc.firewall6 were unified, and + rc.firewall6 and rc.d/ip6fw were removed. + According to the removal of rc.d/ip6fw, ipv6_firewall_* rc + variables are obsoleted. Instead, the following new rc + variables are added to rc.d/ipfw: + + firewall_client_net_ipv6, firewall_simple_iif_ipv6, + firewall_simple_inet_ipv6, firewall_simple_oif_ipv6, + firewall_simple_onet_ipv6, firewall_trusted_ipv6 + + The meanings correspond to the relevant IPv4 variables. + +20091113: + The default terminal emulation for syscons(4) has been changed + from cons25 to xterm on all platforms except pc98. This means + that the /etc/ttys file needs to be updated to ensure correct + operation of applications on the console. + + The terminal emulation style can be toggled per window by using + vidcontrol(1)'s -T flag. The TEKEN_CONS25 kernel configuration + options can be used to change the compile-time default back to + cons25. + + To prevent graphical artifacts, make sure the TERM environment + variable is set to match the terminal emulation that is being + performed by syscons(4). + +20091109: + The layout of the structure ieee80211req_scan_result has changed. + Applications that require wireless scan results (e.g. ifconfig(8)) + from net80211 need to be recompiled. + + Applications such as wpa_supplicant(8) may require a full world + build without using NO_CLEAN in order to get synchronized with the + new structure. + 20091025: The iwn(4) driver has been updated to support the 5000 and 5150 series. There's one kernel module for each firmware. Adding "device iwnfw" @@ -124,7 +185,7 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. 20090712: Padding has been added to struct tcpcb, sackhint and tcpstat in to facilitate future MFCs and bug fixes whilst - maintainig the ABI. However, this change breaks the ABI, so bump + maintaining the ABI. However, this change breaks the ABI, so bump __FreeBSD_version to 800102. User space tools that rely on the size of any of these structs (e.g. sockstat) need to be recompiled. @@ -537,6 +598,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. # Map old usb library to new one for usb2 stack libusb-0.1.so.8 libusb20.so.1 +20090209: + All USB ethernet devices now attach as interfaces under the name ueN + (eg. ue0). This is to provide a predictable name as vendors often + change usb chipsets in a product without notice. + 20090203: The ichsmb(4) driver has been changed to require SMBus slave addresses be left-justified (xxxxxxx0b) rather than right-justified. @@ -853,7 +919,7 @@ COMMON ITEMS: ------------- Avoid using make -j when upgrading. While generally safe, there are sometimes problems using -j to upgrade. If your upgrade fails with - -j, please try again wtihout -j. From time to time in the past there + -j, please try again without -j. From time to time in the past there have been problems using -j with buildworld and/or installworld. This is especially true when upgrading between "distant" versions (eg one that cross a major release boundary or several minor releases, or when Modified: projects/tcp_ffcaia2008_head/bin/Makefile ============================================================================== --- projects/tcp_ffcaia2008_head/bin/Makefile Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/Makefile Thu Jan 28 02:14:45 2010 (r203104) @@ -27,6 +27,7 @@ SUBDIR= cat \ pax \ pkill \ ps \ + pwait \ pwd \ ${_rcp} \ realpath \ Modified: projects/tcp_ffcaia2008_head/bin/cp/cp.1 ============================================================================== --- projects/tcp_ffcaia2008_head/bin/cp/cp.1 Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/cp/cp.1 Thu Jan 28 02:14:45 2010 (r203104) @@ -32,7 +32,7 @@ .\" @(#)cp.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd October 27, 2006 +.Dd January 17, 2010 .Dt CP 1 .Os .Sh NAME @@ -45,7 +45,7 @@ .Op Fl H | Fl L | Fl P .Oc .Op Fl f | i | n -.Op Fl alpv +.Op Fl alpvx .Ar source_file target_file .Nm .Oo @@ -53,7 +53,7 @@ .Op Fl H | Fl L | Fl P .Oc .Op Fl f | i | n -.Op Fl alpv +.Op Fl alpvx .Ar source_file ... target_directory .Sh DESCRIPTION In the first synopsis form, the @@ -183,6 +183,8 @@ permissions. Cause .Nm to be verbose, showing files as they are copied. +.It Fl x +File system mount points are not traversed. .El .Pp For each destination file that already exists, its contents are Modified: projects/tcp_ffcaia2008_head/bin/cp/cp.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/cp/cp.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/cp/cp.c Thu Jan 28 02:14:45 2010 (r203104) @@ -101,8 +101,9 @@ main(int argc, char *argv[]) int Hflag, Lflag, Pflag, ch, fts_options, r, have_trailing_slash; char *target; + fts_options = FTS_NOCHDIR | FTS_PHYSICAL; Hflag = Lflag = Pflag = 0; - while ((ch = getopt(argc, argv, "HLPRafilnprv")) != -1) + while ((ch = getopt(argc, argv, "HLPRafilnprvx")) != -1) switch (ch) { case 'H': Hflag = 1; @@ -150,6 +151,9 @@ main(int argc, char *argv[]) case 'v': vflag = 1; break; + case 'x': + fts_options |= FTS_XDEV; + break; default: usage(); break; @@ -160,7 +164,6 @@ main(int argc, char *argv[]) if (argc < 2) usage(); - fts_options = FTS_NOCHDIR | FTS_PHYSICAL; if (Rflag && rflag) errx(1, "the -R and -r options may not be specified together"); if (rflag) Modified: projects/tcp_ffcaia2008_head/bin/cp/utils.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/cp/utils.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/cp/utils.c Thu Jan 28 02:14:45 2010 (r203104) @@ -518,8 +518,8 @@ usage(void) { (void)fprintf(stderr, "%s\n%s\n", -"usage: cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpv] source_file target_file", -" cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpv] source_file ... " +"usage: cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpvx] source_file target_file", +" cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpvx] source_file ... " "target_directory"); exit(EX_USAGE); } Modified: projects/tcp_ffcaia2008_head/bin/csh/config.h ============================================================================== --- projects/tcp_ffcaia2008_head/bin/csh/config.h Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/csh/config.h Thu Jan 28 02:14:45 2010 (r203104) @@ -54,7 +54,7 @@ #define HAVE_GETPWENT 1 /* Define to 1 if you have the `getutent' function. */ -/* #undef HAVE_GETUTENT */ +#define HAVE_GETUTENT 1 /* Define if you have the iconv() function. */ /* #undef HAVE_ICONV */ @@ -130,10 +130,10 @@ #define HAVE_STRUCT_UTMP_UT_HOST 1 /* Define to 1 if `ut_tv' is member of `struct utmp'. */ -/* #undef HAVE_STRUCT_UTMP_UT_TV */ +#define HAVE_STRUCT_UTMP_UT_TV 1 /* Define to 1 if `ut_user' is member of `struct utmp'. */ -/* #undef HAVE_STRUCT_UTMP_UT_USER */ +#define HAVE_STRUCT_UTMP_UT_USER 1 /* Define to 1 if `ut_xtime' is member of `struct utmp'. */ /* #undef HAVE_STRUCT_UTMP_UT_XTIME */ @@ -159,10 +159,10 @@ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the header file. */ -/* #undef HAVE_UTMPX_H */ +#define HAVE_UTMPX_H 1 /* Define to 1 if you have the header file. */ -#define HAVE_UTMP_H 1 +/* #undef HAVE_UTMP_H */ /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 Modified: projects/tcp_ffcaia2008_head/bin/csh/config_p.h ============================================================================== --- projects/tcp_ffcaia2008_head/bin/csh/config_p.h Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/csh/config_p.h Thu Jan 28 02:14:45 2010 (r203104) @@ -85,6 +85,7 @@ /* Use LC_MESSAGES locale category to open the message catalog */ #define MCLoadBySet NL_CAT_LOCALE #define BUFSIZE 8192 +#define UTMPX_FILE "/var/run/utx.active" #endif #if defined(__bsdi__) Modified: projects/tcp_ffcaia2008_head/bin/date/Makefile ============================================================================== --- projects/tcp_ffcaia2008_head/bin/date/Makefile Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/date/Makefile Thu Jan 28 02:14:45 2010 (r203104) @@ -3,7 +3,5 @@ PROG= date SRCS= date.c netdate.c vary.c -DPADD= ${LIBUTIL} -LDADD= -lutil .include Modified: projects/tcp_ffcaia2008_head/bin/date/date.1 ============================================================================== --- projects/tcp_ffcaia2008_head/bin/date/date.1 Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/date/date.1 Thu Jan 28 02:14:45 2010 (r203104) @@ -299,7 +299,7 @@ for more information. .El .Sh FILES .Bl -tag -width /var/log/messages -compact -.It Pa /var/log/wtmp +.It Pa /var/log/utx.log record of date resets and time changes .It Pa /var/log/messages record of the user setting the time @@ -406,9 +406,9 @@ fails. .Sh SEE ALSO .Xr locale 1 , .Xr gettimeofday 2 , +.Xr getutxent 3 , .Xr strftime 3 , .Xr strptime 3 , -.Xr utmp 5 , .Xr timed 8 .Rs .%T "TSP: The Time Synchronization Protocol for UNIX 4.3BSD" Modified: projects/tcp_ffcaia2008_head/bin/date/date.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/date/date.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/date/date.c Thu Jan 28 02:14:45 2010 (r203104) @@ -48,12 +48,12 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include #include #include +#include #include "extern.h" #include "vary.h" @@ -181,6 +181,7 @@ main(int argc, char *argv[]) static void setthetime(const char *fmt, const char *p, int jflag, int nflag) { + struct utmpx utx; struct tm *lt; struct timeval tv; const char *dot, *t; @@ -271,12 +272,16 @@ setthetime(const char *fmt, const char * if (!jflag) { /* set the time */ if (nflag || netsettime(tval)) { - logwtmp("|", "date", ""); + utx.ut_type = OLD_TIME; + gettimeofday(&utx.ut_tv, NULL); + pututxline(&utx); tv.tv_sec = tval; tv.tv_usec = 0; if (settimeofday(&tv, (struct timezone *)NULL)) err(1, "settimeofday (timeval)"); - logwtmp("{", "date", ""); + utx.ut_type = NEW_TIME; + gettimeofday(&utx.ut_tv, NULL); + pututxline(&utx); } if ((p = getlogin()) == NULL) Modified: projects/tcp_ffcaia2008_head/bin/getfacl/getfacl.1 ============================================================================== --- projects/tcp_ffcaia2008_head/bin/getfacl/getfacl.1 Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/getfacl/getfacl.1 Thu Jan 28 02:14:45 2010 (r203104) @@ -30,7 +30,7 @@ .\" Developed by the TrustedBSD Project. .\" Support for POSIX.1e access control lists. .\" -.Dd September 04, 2009 +.Dd September 4, 2009 .Dt GETFACL 1 .Os .Sh NAME Modified: projects/tcp_ffcaia2008_head/bin/kenv/kenv.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/kenv/kenv.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/kenv/kenv.c Thu Jan 28 02:14:45 2010 (r203104) @@ -118,7 +118,7 @@ main(int argc, char **argv) } static int -kdumpenv() +kdumpenv(void) { char *buf, *cp; int buflen, envlen; Modified: projects/tcp_ffcaia2008_head/bin/ls/ls.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/ls/ls.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/ls/ls.c Thu Jan 28 02:14:45 2010 (r203104) @@ -508,7 +508,7 @@ traverse(int argc, char *argv[], int opt break; case FTS_DNR: case FTS_ERR: - warnx("%s: %s", p->fts_name, strerror(p->fts_errno)); + warnx("%s: %s", p->fts_path, strerror(p->fts_errno)); rval = 1; break; case FTS_D: @@ -559,7 +559,8 @@ display(const FTSENT *p, FTSENT *list, i long maxblock; u_long btotal, labelstrlen, maxinode, maxlen, maxnlink; u_long maxlabelstr; - int bcfile, maxflags; + u_int devstrlen; + int maxflags; gid_t maxgroup; uid_t maxuser; size_t flen, ulen, glen; @@ -651,7 +652,7 @@ display(const FTSENT *p, FTSENT *list, i MAKENINES(maxsize); free(jinitmax); } - bcfile = 0; + devstrlen = 0; flags = NULL; for (cur = list, entries = 0; cur; cur = cur->fts_link) { if (cur->fts_info == FTS_ERR || cur->fts_info == FTS_NS) { @@ -791,9 +792,15 @@ label_out: np->group = &np->data[ulen + 1]; (void)strcpy(np->group, group); - if (S_ISCHR(sp->st_mode) || - S_ISBLK(sp->st_mode)) - bcfile = 1; + if ((S_ISCHR(sp->st_mode) || + S_ISBLK(sp->st_mode)) && + devstrlen < DEVSTR_HEX_LEN) { + if (minor(sp->st_rdev) > 255 || + minor(sp->st_rdev) < 0) + devstrlen = DEVSTR_HEX_LEN; + else + devstrlen = DEVSTR_LEN; + } if (f_flags) { np->flags = &np->data[ulen + glen + 2]; @@ -825,7 +832,6 @@ label_out: d.entries = entries; d.maxlen = maxlen; if (needstats) { - d.bcfile = bcfile; d.btotal = btotal; (void)snprintf(buf, sizeof(buf), "%lu", maxblock); d.s_block = strlen(buf); @@ -836,8 +842,14 @@ label_out: d.s_inode = strlen(buf); (void)snprintf(buf, sizeof(buf), "%lu", maxnlink); d.s_nlink = strlen(buf); - (void)snprintf(buf, sizeof(buf), "%ju", maxsize); - d.s_size = strlen(buf); + if (f_humanval) + d.s_size = HUMANVALSTR_LEN; + else { + (void)snprintf(buf, sizeof(buf), "%ju", maxsize); + d.s_size = strlen(buf); + } + if (d.s_size < devstrlen) + d.s_size = devstrlen; d.s_user = maxuser; } printfcn(&d); Modified: projects/tcp_ffcaia2008_head/bin/ls/ls.h ============================================================================== --- projects/tcp_ffcaia2008_head/bin/ls/ls.h Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/ls/ls.h Thu Jan 28 02:14:45 2010 (r203104) @@ -35,6 +35,10 @@ #define NO_PRINT 1 +#define HUMANVALSTR_LEN 5 +#define DEVSTR_LEN 8 +#define DEVSTR_HEX_LEN 15 + extern long blocksize; /* block size units */ extern int f_accesstime; /* use time of last access */ @@ -62,7 +66,6 @@ extern int f_color; /* add type in colo typedef struct { FTSENT *list; u_long btotal; - int bcfile; int entries; int maxlen; u_int s_block; Modified: projects/tcp_ffcaia2008_head/bin/ls/print.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/ls/print.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/ls/print.c Thu Jan 28 02:14:45 2010 (r203104) @@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$"); #include "extern.h" static int printaname(const FTSENT *, u_long, u_long); +static void printdev(size_t, dev_t); static void printlink(const FTSENT *); static void printtime(time_t); static int printtype(u_int); @@ -165,16 +166,7 @@ printlong(const DISPLAY *dp) if (f_label) (void)printf("%-*s ", dp->s_label, np->label); if (S_ISCHR(sp->st_mode) || S_ISBLK(sp->st_mode)) - if (minor(sp->st_rdev) > 255 || minor(sp->st_rdev) < 0) - (void)printf("%3d, 0x%08x ", - major(sp->st_rdev), - (u_int)minor(sp->st_rdev)); - else - (void)printf("%3d, %3d ", - major(sp->st_rdev), minor(sp->st_rdev)); - else if (dp->bcfile) - (void)printf("%*s%*jd ", - 8 - dp->s_size, "", dp->s_size, sp->st_size); + printdev(dp->s_size, sp->st_rdev); else printsize(dp->s_size, sp->st_size); if (f_accesstime) @@ -353,6 +345,24 @@ printaname(const FTSENT *p, u_long inode return (chcnt); } +/* + * Print device special file major and minor numbers. + */ +static void +printdev(size_t width, dev_t dev) +{ + char buf[DEVSTR_HEX_LEN + 1]; + + if (minor(dev) > 255 || minor(dev) < 0) + (void)snprintf(buf, sizeof(buf), "%3d, 0x%08x", + major(dev), (u_int)minor(dev)); + else + (void)snprintf(buf, sizeof(buf), "%3d, %3d", + major(dev), minor(dev)); + + (void)printf("%*s ", (u_int)width, buf); +} + static void printtime(time_t ftime) { @@ -592,11 +602,15 @@ printsize(size_t width, off_t bytes) { if (f_humanval) { - char buf[5]; + /* + * Reserve one space before the size and allocate room for + * the trailing '\0'. + */ + char buf[HUMANVALSTR_LEN - 1 + 1]; humanize_number(buf, sizeof(buf), (int64_t)bytes, "", HN_AUTOSCALE, HN_B | HN_NOSPACE | HN_DECIMAL); - (void)printf("%5s ", buf); + (void)printf("%*s ", (u_int)width, buf); } else (void)printf("%*jd ", (u_int)width, bytes); } Modified: projects/tcp_ffcaia2008_head/bin/pax/ftree.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/pax/ftree.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/pax/ftree.c Thu Jan 28 02:14:45 2010 (r203104) @@ -219,7 +219,7 @@ ftree_sel(ARCHD *arcn) */ void -ftree_notsel() +ftree_notsel(void) { if (ftent != NULL) (void)fts_set(ftsp, ftent, FTS_SKIP); Modified: projects/tcp_ffcaia2008_head/bin/pax/gen_subs.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/pax/gen_subs.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/pax/gen_subs.c Thu Jan 28 02:14:45 2010 (r203104) @@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include @@ -66,10 +65,6 @@ __FBSDID("$FreeBSD$"); #define OLDFRMTM "%b %e %Y" #define CURFRMTD "%e %b %H:%M" #define OLDFRMTD "%e %b %Y" -#ifndef UT_NAMESIZE -#define UT_NAMESIZE 8 -#endif -#define UT_GRPSIZE 6 static int d_first = -1; @@ -116,9 +111,8 @@ ls_list(ARCHD *arcn, time_t now, FILE *f */ if (strftime(f_date,DATELEN,timefrmt,localtime(&(sbp->st_mtime))) == 0) f_date[0] = '\0'; - (void)fprintf(fp, "%s%2u %-*s %-*s ", f_mode, sbp->st_nlink, - UT_NAMESIZE, name_uid(sbp->st_uid, 1), UT_GRPSIZE, - name_gid(sbp->st_gid, 1)); + (void)fprintf(fp, "%s%2u %-12s %-12s ", f_mode, sbp->st_nlink, + name_uid(sbp->st_uid, 1), name_gid(sbp->st_gid, 1)); /* * print device id's for devices, or sizes for other nodes Modified: projects/tcp_ffcaia2008_head/bin/pax/sel_subs.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/pax/sel_subs.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/pax/sel_subs.c Thu Jan 28 02:14:45 2010 (r203104) @@ -396,6 +396,7 @@ trng_add(char *str) default: paxwarn(1, "Bad option %c with time range %s", *flgpt, str); + free(pt); goto out; } ++flgpt; Modified: projects/tcp_ffcaia2008_head/bin/pkill/Makefile ============================================================================== --- projects/tcp_ffcaia2008_head/bin/pkill/Makefile Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/pkill/Makefile Thu Jan 28 02:14:45 2010 (r203104) @@ -2,7 +2,6 @@ # $FreeBSD$ PROG= pkill -WARNS?= 5 DPADD= ${LIBKVM} LDADD= -lkvm Modified: projects/tcp_ffcaia2008_head/bin/pkill/pkill.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/pkill/pkill.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/pkill/pkill.c Thu Jan 28 02:14:45 2010 (r203104) @@ -113,14 +113,14 @@ static int cflags = REG_EXTENDED; static kvm_t *kd; static pid_t mypid; -static struct listhead euidlist = SLIST_HEAD_INITIALIZER(list); -static struct listhead ruidlist = SLIST_HEAD_INITIALIZER(list); -static struct listhead rgidlist = SLIST_HEAD_INITIALIZER(list); -static struct listhead pgrplist = SLIST_HEAD_INITIALIZER(list); -static struct listhead ppidlist = SLIST_HEAD_INITIALIZER(list); -static struct listhead tdevlist = SLIST_HEAD_INITIALIZER(list); -static struct listhead sidlist = SLIST_HEAD_INITIALIZER(list); -static struct listhead jidlist = SLIST_HEAD_INITIALIZER(list); +static struct listhead euidlist = SLIST_HEAD_INITIALIZER(euidlist); +static struct listhead ruidlist = SLIST_HEAD_INITIALIZER(ruidlist); +static struct listhead rgidlist = SLIST_HEAD_INITIALIZER(rgidlist); +static struct listhead pgrplist = SLIST_HEAD_INITIALIZER(pgrplist); +static struct listhead ppidlist = SLIST_HEAD_INITIALIZER(ppidlist); +static struct listhead tdevlist = SLIST_HEAD_INITIALIZER(tdevlist); +static struct listhead sidlist = SLIST_HEAD_INITIALIZER(sidlist); +static struct listhead jidlist = SLIST_HEAD_INITIALIZER(jidlist); static void usage(void) __attribute__((__noreturn__)); static int killact(const struct kinfo_proc *); @@ -671,8 +671,19 @@ makelist(struct listhead *head, enum lis li->li_number = -1; /* any jail */ break; case LT_TTY: - usage(); - /* NOTREACHED */ + if (li->li_number < 0) + errx(STATUS_BADUSAGE, + "Negative /dev/pts tty `%s'", sp); + snprintf(buf, sizeof(buf), _PATH_DEV "pts/%s", + sp); + if (stat(buf, &st) != -1) + goto foundtty; + if (errno == ENOENT) + errx(STATUS_BADUSAGE, "No such tty: `" + _PATH_DEV "pts/%s'", sp); + err(STATUS_ERROR, "Cannot access `" + _PATH_DEV "pts/%s'", sp); + break; default: break; } Modified: projects/tcp_ffcaia2008_head/bin/ps/keyword.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/ps/keyword.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/ps/keyword.c Thu Jan 28 02:14:45 2010 (r203104) @@ -70,7 +70,7 @@ static int vcmp(const void *, const voi /* PLEASE KEEP THE TABLE BELOW SORTED ALPHABETICALLY!!! */ static VAR var[] = { - {"%cpu", "%CPU", NULL, 0, pcpu, NULL, 4, 0, CHAR, NULL, 0}, + {"%cpu", "%CPU", NULL, 0, pcpu, NULL, 5, 0, CHAR, NULL, 0}, {"%mem", "%MEM", NULL, 0, pmem, NULL, 4, 0, CHAR, NULL, 0}, {"acflag", "ACFLG", NULL, 0, kvar, NULL, 3, KOFF(ki_acflag), USHORT, "x", 0}, @@ -159,7 +159,7 @@ static VAR var[] = { UINT, UIDFMT, 0}, {"rgroup", "RGROUP", NULL, LJUST|DSIZ, rgroupname, s_rgroupname, USERLEN, 0, CHAR, NULL, 0}, - {"rss", "RSS", NULL, 0, kvar, NULL, 5, KOFF(ki_rssize), PGTOK, "ld", 0}, + {"rss", "RSS", NULL, 0, kvar, NULL, 6, KOFF(ki_rssize), PGTOK, "ld", 0}, {"rtprio", "RTPRIO", NULL, 0, priorityr, NULL, 7, KOFF(ki_pri), CHAR, NULL, 0}, {"ruid", "RUID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_ruid), @@ -207,7 +207,7 @@ static VAR var[] = { NULL, 0}, {"usrpri", "", "upr", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"vsize", "", "vsz", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, - {"vsz", "VSZ", NULL, 0, vsize, NULL, 5, 0, CHAR, NULL, 0}, + {"vsz", "VSZ", NULL, 0, vsize, NULL, 6, 0, CHAR, NULL, 0}, {"wchan", "WCHAN", NULL, LJUST, wchan, NULL, 6, 0, CHAR, NULL, 0}, {"xstat", "XSTAT", NULL, 0, kvar, NULL, 4, KOFF(ki_xstat), USHORT, "x", 0}, @@ -330,6 +330,7 @@ findvar(char *p, int user, char **header errx(1, "malloc failed"); snprintf(realfmt, rflen, "%s=%s", v->alias, hp); parsefmt(realfmt, user); + free(realfmt); } return ((VAR *)NULL); } Modified: projects/tcp_ffcaia2008_head/bin/setfacl/merge.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/setfacl/merge.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/setfacl/merge.c Thu Jan 28 02:14:45 2010 (r203104) @@ -100,11 +100,10 @@ merge_acl(acl_t acl, acl_t *prev_acl, co acl_get_brand_np(acl, &acl_brand); acl_get_brand_np(*prev_acl, &prev_acl_brand); - if (acl_brand != prev_acl_brand) { + if (branding_mismatch(acl_brand, prev_acl_brand)) { warnx("%s: branding mismatch; existing ACL is %s, " "entry to be merged is %s", filename, - prev_acl_brand == ACL_BRAND_NFS4 ? "NFSv4" : "POSIX.1e", - acl_brand == ACL_BRAND_NFS4 ? "NFSv4" : "POSIX.1e"); + brand_name(prev_acl_brand), brand_name(acl_brand)); return (-1); } @@ -252,9 +251,10 @@ add_acl(acl_t acl, uint entry_number, ac return (-1); } - if (acl_brand != ACL_BRAND_NFS4) { + if (branding_mismatch(acl_brand, ACL_BRAND_NFS4)) { warnx("%s: branding mismatch; existing ACL is NFSv4, " - "entry to be added is POSIX.1e", filename); + "entry to be added is %s", filename, + brand_name(acl_brand)); return (-1); } Modified: projects/tcp_ffcaia2008_head/bin/setfacl/remove.c ============================================================================== --- projects/tcp_ffcaia2008_head/bin/setfacl/remove.c Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/setfacl/remove.c Thu Jan 28 02:14:45 2010 (r203104) @@ -53,11 +53,10 @@ remove_acl(acl_t acl, acl_t *prev_acl, c acl_get_brand_np(acl, &acl_brand); acl_get_brand_np(*prev_acl, &prev_acl_brand); - if (acl_brand != prev_acl_brand) { + if (branding_mismatch(acl_brand, prev_acl_brand)) { warnx("%s: branding mismatch; existing ACL is %s, " "entry to be removed is %s", filename, - prev_acl_brand == ACL_BRAND_NFS4 ? "NFSv4" : "POSIX.1e", - acl_brand == ACL_BRAND_NFS4 ? "NFSv4" : "POSIX.1e"); + brand_name(prev_acl_brand), brand_name(acl_brand)); return (-1); } Modified: projects/tcp_ffcaia2008_head/bin/setfacl/setfacl.h ============================================================================== --- projects/tcp_ffcaia2008_head/bin/setfacl/setfacl.h Thu Jan 28 01:52:23 2010 (r203103) +++ projects/tcp_ffcaia2008_head/bin/setfacl/setfacl.h Thu Jan 28 02:14:45 2010 (r203104) @@ -71,6 +71,8 @@ void remove_ext(acl_t *prev_acl, const int set_acl_mask(acl_t *prev_acl, const char *filename); /* util.c */ void *zmalloc(size_t size); +const char *brand_name(int brand); +int branding_mismatch(int brand1, int brand2); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Jan 28 05:28:49 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3CE841065693; Thu, 28 Jan 2010 05:28:49 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2CF578FC2A; Thu, 28 Jan 2010 05:28:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0S5Sngc040454; Thu, 28 Jan 2010 05:28:49 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0S5Sn98040452; Thu, 28 Jan 2010 05:28:49 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001280528.o0S5Sn98040452@svn.freebsd.org> From: Nathan Whitehorn Date: Thu, 28 Jan 2010 05:28:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203107 - projects/ppc64/sys/powerpc/powerpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jan 2010 05:28:49 -0000 Author: nwhitehorn Date: Thu Jan 28 05:28:48 2010 New Revision: 203107 URL: http://svn.freebsd.org/changeset/base/203107 Log: Fix passing argc to user space. MI code uses suword, which copies a 64-bit quantity, but arginfo.ps_nargvstr is an unsigned int. Thus, it ended up being always zero when read back with copyin() on big-endian 64-bit systems. This fixes argument passing to 64-bit executables. Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c ============================================================================== --- projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Thu Jan 28 04:50:09 2010 (r203106) +++ projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Thu Jan 28 05:28:48 2010 (r203107) @@ -526,7 +526,7 @@ exec_setregs(struct thread *td, u_long e */ td->td_retval[0] = arginfo.ps_nargvstr; td->td_retval[1] = (register_t)arginfo.ps_argvstr; - tf->fixreg[3] = arginfo.ps_nargvstr; + tf->fixreg[3] = *((register_t *)(&arginfo.ps_nargvstr)); tf->fixreg[4] = (register_t)arginfo.ps_argvstr; tf->fixreg[5] = (register_t)arginfo.ps_envstr; tf->fixreg[6] = 0; /* auxillary vector */ From owner-svn-src-projects@FreeBSD.ORG Thu Jan 28 09:24:10 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 48C081065672; Thu, 28 Jan 2010 09:24:10 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 367778FC13; Thu, 28 Jan 2010 09:24:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0S9OANf093520; Thu, 28 Jan 2010 09:24:10 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0S9OA7K093518; Thu, 28 Jan 2010 09:24:10 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001280924.o0S9OA7K093518@svn.freebsd.org> From: Jeff Roberson Date: Thu, 28 Jan 2010 09:24:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203109 - projects/suj/head/sbin/fsck_ffs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jan 2010 09:24:10 -0000 Author: jeff Date: Thu Jan 28 09:24:10 2010 New Revision: 203109 URL: http://svn.freebsd.org/changeset/base/203109 Log: - Process all truncations, block frees, block count and size adjustments prior to performing any directory lookups. Previously we could mark a link is valid and later truncate a directory, freeing the block containing the link. - Rewrite the algorithm for detecting dups and processing inode moves. The old algorithm was intended to work one record at a time as they were discovered in the journal and could ultimately become confused about the lineage of a particular inode reference resulting in link adjustment errors. The new algorithm processes the whole history of a single reference at once while resolving dups and eliminating unnecessary removes. Modified: projects/suj/head/sbin/fsck_ffs/suj.c Modified: projects/suj/head/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/head/sbin/fsck_ffs/suj.c Thu Jan 28 08:41:30 2010 (r203108) +++ projects/suj/head/sbin/fsck_ffs/suj.c Thu Jan 28 09:24:10 2010 (r203109) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2009 Jeffrey W. Roberson + * Copyright 2009, 2010 Jeffrey W. Roberson * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -48,8 +48,6 @@ __FBSDID("$FreeBSD$"); #include "fsck.h" -static void ino_decr(ino_t); - #define DOTDOT_OFFSET DIRECTSIZ(1) #define SUJ_HASHSIZE 2048 #define SUJ_HASHMASK (SUJ_HASHSIZE - 1) @@ -64,7 +62,6 @@ struct suj_seg { struct suj_rec { TAILQ_ENTRY(suj_rec) sr_next; union jrec *sr_rec; - int sr_alt; /* Is alternate address? */ }; TAILQ_HEAD(srechd, suj_rec); @@ -75,11 +72,14 @@ struct suj_ino { struct srechd si_movs; struct jtrncrec *si_trunc; ino_t si_ino; - int si_nlinkadj; - int si_skipparent; - int si_linkadj; - int si_hasrecs; - int si_blkadj; + char si_skipparent; + char si_hasrecs; + char si_blkadj; + char si_linkadj; + int si_mode; + nlink_t si_nlinkadj; + nlink_t si_nlink; + nlink_t si_dotlinks; }; LIST_HEAD(inohd, suj_ino); @@ -143,6 +143,8 @@ uint64_t jrecs; typedef void (*ino_visitor)(ino_t, ufs_lbn_t, ufs2_daddr_t, int); static void ino_trunc(ino_t ino, off_t size); +static void ino_decr(ino_t); +static void ino_adjust(struct suj_ino *); static void ino_build(struct suj_ino *sino); static void * @@ -266,7 +268,6 @@ ino_lookup(ino_t ino, int creat) sino = errmalloc(sizeof(*sino)); bzero(sino, sizeof(*sino)); sino->si_ino = ino; - sino->si_nlinkadj = 0; TAILQ_INIT(&sino->si_recs); TAILQ_INIT(&sino->si_newrecs); TAILQ_INIT(&sino->si_movs); @@ -1095,6 +1096,9 @@ ino_setskip(struct suj_ino *sino, ino_t sino->si_skipparent = 1; } +/* + * Free the children of a directory when the directory is discarded. + */ static void ino_free_children(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, int frags) { @@ -1136,11 +1140,21 @@ ino_free_children(ino_t ino, ufs_lbn_t l * was valid and we have to adjust once more. */ sino = ino_lookup(dp->d_ino, 0); - if (sino == NULL || sino->si_linkadj || sino->si_hasrecs == 0) { - ino_decr(dp->d_ino); + if (sino == NULL || sino->si_hasrecs == 0) { + ino_decr(ino); continue; } /* + * Use ino_adjust() so if we lose the last non-dot reference + * to a directory it can be discarded. + */ + if (sino->si_linkadj) { + sino->si_nlink--; + if (isparent) + sino->si_dotlinks--; + ino_adjust(sino); + } + /* * Tell any child directories we've already removed their * parent. Don't try to adjust our link down again. */ @@ -1234,12 +1248,39 @@ ino_decr(ino_t ino) * free it. */ static void -ino_adjust(ino_t ino, int lastmode, nlink_t nlink) +ino_adjust(struct suj_ino *sino) { + struct jrefrec *rrec; + struct suj_rec *srec; + struct suj_ino *stmp; union dinode *ip; + nlink_t nlink; int reqlink; int mode; + ino_t ino; + nlink = sino->si_nlink; + ino = sino->si_ino; + /* + * If it's a directory with no real names pointing to it go ahead + * and truncate it. This will free any children. + */ + if ((sino->si_mode & IFMT) == IFDIR && + nlink - sino->si_dotlinks == 0) { + sino->si_nlink = nlink = 0; + /* + * Mark any .. links so they know not to free this inode + * when they are removed. + */ + TAILQ_FOREACH(srec, &sino->si_recs, sr_next) { + rrec = (struct jrefrec *)srec->sr_rec; + if (rrec->jr_diroff == DOTDOT_OFFSET) { + stmp = ino_lookup(rrec->jr_parent, 0); + if (stmp) + ino_setskip(stmp, ino); + } + } + } ip = ino_read(ino); mode = DIP(ip, di_mode) & IFMT; if (nlink > LINK_MAX) @@ -1248,16 +1289,16 @@ ino_adjust(ino_t ino, int lastmode, nlin ino, nlink, DIP(ip, di_nlink)); if (debug) printf("Adjusting ino %d, nlink %d, old link %d lastmode %o\n", - ino, nlink, DIP(ip, di_nlink), lastmode); + ino, nlink, DIP(ip, di_nlink), sino->si_mode); if (mode == 0) { if (debug) printf("ino %d, zero inode freeing bitmap\n", ino); - ino_free(ino, lastmode); + ino_free(ino, sino->si_mode); return; } /* XXX Should be an assert? */ - if (mode != lastmode && debug) - printf("ino %d, mode %o != %o\n", ino, mode, lastmode); + if (mode != sino->si_mode && debug) + printf("ino %d, mode %o != %o\n", ino, mode, sino->si_mode); if ((mode & IFMT) == IFDIR) reqlink = 2; else @@ -1426,10 +1467,12 @@ ino_trunc(ino_t ino, off_t size) * If we're truncating direct blocks we have to adjust frags * accordingly. */ - if (visitlbn < NDADDR) { + if (visitlbn < NDADDR && totalfrags) { long oldspace, newspace; bn = DIP(ip, di_db[visitlbn]); + if (bn == 0) + errx(1, "Bad blk at ino %d lbn %jd\n", ino, visitlbn); oldspace = sblksize(fs, cursize, visitlbn); newspace = sblksize(fs, size, visitlbn); if (oldspace != newspace) { @@ -1474,7 +1517,6 @@ ino_check(struct suj_ino *sino) { struct suj_rec *srec; struct jrefrec *rrec; - struct suj_ino *stmp; nlink_t dotlinks; int newlinks; int removes; @@ -1484,18 +1526,9 @@ ino_check(struct suj_ino *sino) int isat; int mode; - /* - * Handle truncations that were not complete. We don't have - * to worry about truncating directory entries as they must have - * been removed for truncate to succeed. - */ - ino = sino->si_ino; - if (sino->si_trunc) { - ino_trunc(ino, sino->si_trunc->jt_size); - sino->si_trunc = NULL; - } if (sino->si_hasrecs == 0) return; + ino = sino->si_ino; rrec = (struct jrefrec *)TAILQ_FIRST(&sino->si_recs)->sr_rec; nlink = rrec->jr_nlink; newlinks = 0; @@ -1528,29 +1561,16 @@ ino_check(struct suj_ino *sino) * makes no change to the link count but an add increases * by one. */ + if (debug) + printf("ino %d nlink %d newlinks %d removes %d dotlinks %d\n", + ino, nlink, newlinks, removes, dotlinks); nlink += newlinks; nlink -= removes; - /* - * If it's a directory with no real names pointing to it go ahead - * and truncate it. This will free any children. - */ - if ((mode & IFMT) == IFDIR && nlink - dotlinks == 0) { - nlink = 0; - /* - * Mark any .. links so they know not to free this inode - * when they are removed. - */ - TAILQ_FOREACH(srec, &sino->si_recs, sr_next) { - rrec = (struct jrefrec *)srec->sr_rec; - if (rrec->jr_diroff == DOTDOT_OFFSET) { - stmp = ino_lookup(rrec->jr_parent, 0); - if (stmp) - ino_setskip(stmp, ino); - } - } - } sino->si_linkadj = 1; - ino_adjust(ino, mode, nlink); + sino->si_nlink = nlink; + sino->si_dotlinks = dotlinks; + sino->si_mode = mode; + ino_adjust(sino); } /* @@ -1632,42 +1652,63 @@ cg_build(struct suj_cg *sc) } /* - * Walk the list of inode and block records for this cg, recovering any - * changes which were not complete at the time of crash. + * Handle inodes requiring truncation. This must be done prior to + * looking up any inodes in directories. */ static void -cg_check(struct suj_cg *sc) +cg_trunc(struct suj_cg *sc) { struct suj_ino *sino; - struct suj_blk *sblk; int i; - if (debug) - printf("Recovering cg %d\n", sc->sc_cgx); - for (i = 0; i < SUJ_HASHSIZE; i++) LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) - ino_check(sino); + if (sino->si_trunc) { + ino_trunc(sino->si_ino, + sino->si_trunc->jt_size); + sino->si_trunc = NULL; + } +} + +/* + * Free any partially allocated blocks and then resolve inode block + * counts. + */ +static void +cg_check_blk(struct suj_cg *sc) +{ + struct suj_ino *sino; + struct suj_blk *sblk; + int i; + for (i = 0; i < SUJ_HASHSIZE; i++) LIST_FOREACH(sblk, &sc->sc_blkhash[i], sb_next) blk_check(sblk); + /* + * Now that we've freed blocks which are not referenced we + * make a second pass over all inodes to adjust their block + * counts. + */ + for (i = 0; i < SUJ_HASHSIZE; i++) + LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) + if (sino->si_blkadj) + ino_adjblks(sino); } /* - * Now that we've freed blocks which are not referenced we make a second - * pass over all inodes to adjust their block counts. + * Walk the list of inode records for this cg, recovering any + * changes which were not complete at the time of crash. */ static void -cg_check2(struct suj_cg *sc) +cg_check_ino(struct suj_cg *sc) { struct suj_ino *sino; int i; for (i = 0; i < SUJ_HASHSIZE; i++) LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) - if (sino->si_blkadj) - ino_adjblks(sino); + ino_check(sino); } /* @@ -1789,9 +1830,23 @@ ino_unlinked(void) static void ino_append(union jrec *rec) { + struct jrefrec *refrec; + struct jmvrec *mvrec; struct suj_ino *sino; struct suj_rec *srec; + mvrec = &rec->rec_jmvrec; + refrec = &rec->rec_jrefrec; + if (debug && mvrec->jm_op == JOP_MVREF) + printf("ino move: ino %d, parent %d, diroff %jd, oldoff %jd\n", + mvrec->jm_ino, mvrec->jm_parent, mvrec->jm_newoff, + mvrec->jm_oldoff); + else if (debug && + (refrec->jr_op == JOP_ADDREF || refrec->jr_op == JOP_REMREF)) + printf("ino ref: op %d, ino %d, nlink %d, " + "parent %d, diroff %jd\n", + refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, + refrec->jr_parent, refrec->jr_diroff); /* * Lookup the ino and clear truncate if one is found. Partial * truncates are always done synchronously so if we discover @@ -1803,69 +1858,27 @@ ino_append(union jrec *rec) sino->si_hasrecs = 1; srec = errmalloc(sizeof(*srec)); srec->sr_rec = rec; - srec->sr_alt = 0; TAILQ_INSERT_TAIL(&sino->si_newrecs, srec, sr_next); } /* - * If we see two ops for the same inode to the same parent at the same - * offset we could miscount the link with ino_isat() returning twice. - * Keep only the first record because it has the valid link count but keep - * the mode from the final op as that should be the correct mode in case - * it changed. + * Add a reference adjustment to the sino list and eliminate dups. The + * primary loop in ino_build_ref() checks for dups but new ones may be + * created as a result of offset adjustments. */ static void -ino_build_ref(struct suj_ino *sino, struct suj_rec *srec) +ino_add_ref(struct suj_ino *sino, struct suj_rec *srec) { struct jrefrec *refrec; - struct jmvrec *mvrec; - struct suj_rec *srp; struct suj_rec *srn; struct jrefrec *rrn; refrec = (struct jrefrec *)srec->sr_rec; - if (debug) - printf("ino_build: op %d, ino %d, nlink %d, " - "parent %d, diroff %jd\n", - refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, - refrec->jr_parent, refrec->jr_diroff); - - /* - * Search for a mvrec that matches this offset. Whether it's an add - * or a remove we can delete the mvref. It no longer applies to this - * location. - * - * For removes, we have to find the original offset so we can create - * a remove that matches the earlier add so it can be abandoned - * if necessary. We create an add in the new location so we can - * tolerate the directory block as it existed before or after - * the move. - */ - if (!TAILQ_EMPTY(&sino->si_movs)) { - for (srn = TAILQ_LAST(&sino->si_movs, srechd); srn; srn = srp) { - srp = TAILQ_PREV(srn, srechd, sr_next); - mvrec = (struct jmvrec *)srn->sr_rec; - if (mvrec->jm_parent != refrec->jr_parent || - mvrec->jm_newoff != refrec->jr_diroff) - continue; - TAILQ_REMOVE(&sino->si_movs, srn, sr_next); - if (refrec->jr_op == JOP_REMREF) { - rrn = errmalloc(sizeof(*refrec)); - *rrn = *refrec; - rrn->jr_op = JOP_ADDREF; - rrn->jr_diroff = mvrec->jm_oldoff; - srn = errmalloc(sizeof(*srec)); - srn->sr_alt = 1; - srn->sr_rec = (union jrec *)rrn; - ino_build_ref(sino, srn); - } - } - } /* - * We walk backwards so that adds and removes are evaluated in the - * correct order. If a primary record conflicts with an alt keep - * the primary and discard the alt. We must track this to keep - * the correct number of removes in the list. + * We walk backwards so that the oldest link count is preserved. If + * an add record conflicts with a remove keep the remove. Redundant + * removes are eliminated in ino_build_ref. Otherwise we keep the + * oldest record at a given location. */ for (srn = TAILQ_LAST(&sino->si_recs, srechd); srn; srn = TAILQ_PREV(srn, srechd, sr_next)) { @@ -1873,91 +1886,135 @@ ino_build_ref(struct suj_ino *sino, stru if (rrn->jr_parent != refrec->jr_parent || rrn->jr_diroff != refrec->jr_diroff) continue; - if (debug) - printf("Discarding dup.\n"); - if (srn->sr_alt == 0) { + if (rrn->jr_op == JOP_REMREF || refrec->jr_op == JOP_ADDREF) { rrn->jr_mode = refrec->jr_mode; return; } /* + * Adding a remove. + * * Replace the record in place with the old nlink in case * we replace the head of the list. Abandon srec as a dup. */ refrec->jr_nlink = rrn->jr_nlink; srn->sr_rec = srec->sr_rec; - srn->sr_alt = srec->sr_alt; return; } TAILQ_INSERT_TAIL(&sino->si_recs, srec, sr_next); } /* - * Apply a move record to an inode. We must search for adds that preceed us - * and add duplicates because we won't know which location to search first. - * Then we add movs to a queue that is maintained until the moved location - * is removed. If a single record is moved multiple times we only maintain - * one copy that contains the original and final diroffs. + * Create a duplicate of a reference at a previous location. */ static void -ino_move_ref(struct suj_ino *sino, struct suj_rec *srec) +ino_dup_ref(struct suj_ino *sino, struct jrefrec *refrec, off_t diroff) +{ + struct jrefrec *rrn; + struct suj_rec *srn; + + rrn = errmalloc(sizeof(*refrec)); + *rrn = *refrec; + rrn->jr_op = JOP_ADDREF; + rrn->jr_diroff = diroff; + srn = errmalloc(sizeof(*srn)); + srn->sr_rec = (union jrec *)rrn; + ino_add_ref(sino, srn); +} + +/* + * Add a reference to the list at all known locations. We follow the offset + * changes for a single instance and create duplicate add refs at each so + * that we can tolerate any version of the directory block. Eliminate + * removes which collide with adds that are seen in the journal. They should + * not adjust the link count down. + */ +static void +ino_build_ref(struct suj_ino *sino, struct suj_rec *srec) { struct jrefrec *refrec; - struct jmvrec *mvrn; + struct jmvrec *mvrec; + struct suj_rec *srp; struct suj_rec *srn; struct jrefrec *rrn; - struct jmvrec *mvrec; + off_t diroff; - mvrec = (struct jmvrec *)srec->sr_rec; - if (debug) - printf("ino_move: ino %d, parent %d, diroff %jd, oldoff %jd\n", - mvrec->jm_ino, mvrec->jm_parent, mvrec->jm_newoff, - mvrec->jm_oldoff); + refrec = (struct jrefrec *)srec->sr_rec; /* - * We walk backwards so we only evaluate the most recent record at - * this offset. + * Search for a mvrec that matches this offset. Whether it's an add + * or a remove we can delete the mvref after creating a dup record in + * the old location. */ - for (srn = TAILQ_LAST(&sino->si_recs, srechd); srn; - srn = TAILQ_PREV(srn, srechd, sr_next)) { - rrn = (struct jrefrec *)srn->sr_rec; - if (rrn->jr_parent != mvrec->jm_parent || - rrn->jr_diroff != mvrec->jm_oldoff) - continue; - /* - * When an entry is moved we don't know whether the write - * to move has completed yet. To resolve this we create - * a new add dependency in the new location as if it were - * added twice. Only one will succeed. Consider the - * new offset the primary location for the inode and the - * old offset the alt. - */ - srn->sr_alt = 1; - refrec = errmalloc(sizeof(*refrec)); - refrec->jr_op = JOP_ADDREF; - refrec->jr_ino = mvrec->jm_ino; - refrec->jr_parent = mvrec->jm_parent; - refrec->jr_diroff = mvrec->jm_newoff; - refrec->jr_mode = rrn->jr_mode; - refrec->jr_nlink = rrn->jr_nlink; - srn = errmalloc(sizeof(*srn)); - srn->sr_alt = 0; - srn->sr_rec = (union jrec *)refrec; - ino_build_ref(sino, srn); - break; + if (!TAILQ_EMPTY(&sino->si_movs)) { + diroff = refrec->jr_diroff; + for (srn = TAILQ_LAST(&sino->si_movs, srechd); srn; srn = srp) { + srp = TAILQ_PREV(srn, srechd, sr_next); + mvrec = (struct jmvrec *)srn->sr_rec; + if (mvrec->jm_parent != refrec->jr_parent || + mvrec->jm_newoff != diroff) + continue; + diroff = mvrec->jm_oldoff; + TAILQ_REMOVE(&sino->si_movs, srn, sr_next); + ino_dup_ref(sino, refrec, diroff); + } } /* - * Add this mvrec to the queue of pending mvs, possibly collapsing - * it with a prior move for the same inode and offset. + * If a remove wasn't eliminated by an earlier add just append it to + * the list. */ - for (srn = TAILQ_LAST(&sino->si_movs, srechd); srn; - srn = TAILQ_PREV(srn, srechd, sr_next)) { - mvrn = (struct jmvrec *)srn->sr_rec; - if (mvrn->jm_parent != mvrec->jm_parent || - mvrn->jm_newoff != mvrec->jm_oldoff) - continue; - mvrn->jm_newoff = mvrec->jm_newoff; + if (refrec->jr_op == JOP_REMREF) { + ino_add_ref(sino, srec); return; } - TAILQ_INSERT_TAIL(&sino->si_movs, srec, sr_next); + /* + * Walk the list of records waiting to be added to the list. We + * must check for moves that apply to our current offset and remove + * them from the list. Remove any duplicates to eliminate removes + * with corresponding adds. + */ + TAILQ_FOREACH_SAFE(srn, &sino->si_newrecs, sr_next, srp) { + switch (srn->sr_rec->rec_jrefrec.jr_op) { + case JOP_ADDREF: + /* + * This should actually be an error we should + * have a remove for every add journaled. + */ + rrn = (struct jrefrec *)srn->sr_rec; + if (rrn->jr_parent != refrec->jr_parent || + rrn->jr_diroff != refrec->jr_diroff) + break; + TAILQ_REMOVE(&sino->si_newrecs, srn, sr_next); + break; + case JOP_REMREF: + /* + * Once we remove the current iteration of the + * record at this address we're done. + */ + rrn = (struct jrefrec *)srn->sr_rec; + if (rrn->jr_parent != refrec->jr_parent || + rrn->jr_diroff != refrec->jr_diroff) + break; + TAILQ_REMOVE(&sino->si_newrecs, srn, sr_next); + ino_add_ref(sino, srec); + return; + case JOP_MVREF: + /* + * Update our diroff based on any moves that match + * and remove the move. + */ + mvrec = (struct jmvrec *)srn->sr_rec; + if (mvrec->jm_parent != refrec->jr_parent || + mvrec->jm_oldoff != refrec->jr_diroff) + break; + ino_dup_ref(sino, refrec, mvrec->jm_oldoff); + refrec->jr_diroff = mvrec->jm_newoff; + TAILQ_REMOVE(&sino->si_newrecs, srn, sr_next); + break; + default: + errx(1, "ino_build_ref: Unknown op %d", + srn->sr_rec->rec_jrefrec.jr_op); + } + } + ino_add_ref(sino, srec); } /* @@ -1977,7 +2034,10 @@ ino_build(struct suj_ino *sino) ino_build_ref(sino, srec); break; case JOP_MVREF: - ino_move_ref(sino, srec); + /* + * Add this mvrec to the queue of pending mvs. + */ + TAILQ_INSERT_TAIL(&sino->si_movs, srec, sr_next); break; default: errx(1, "ino_build: Unknown op %d", @@ -2531,8 +2591,9 @@ suj_check(const char *filesys) printf("** Resolving unreferenced inode list.\n"); ino_unlinked(); printf("** Processing journal entries.\n"); - cg_apply(cg_check); - cg_apply(cg_check2); + cg_apply(cg_trunc); + cg_apply(cg_check_blk); + cg_apply(cg_check_ino); } /* * To remain idempotent with partial truncations the free bitmaps From owner-svn-src-projects@FreeBSD.ORG Thu Jan 28 09:25:35 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A62F106566B; Thu, 28 Jan 2010 09:25:35 +0000 (UTC) (envelope-from jeff@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 473CA8FC16; Thu, 28 Jan 2010 09:25:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0S9PZV1093860; Thu, 28 Jan 2010 09:25:35 GMT (envelope-from jeff@svn.freebsd.org) Received: (from jeff@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0S9PZ5U093856; Thu, 28 Jan 2010 09:25:35 GMT (envelope-from jeff@svn.freebsd.org) Message-Id: <201001280925.o0S9PZ5U093856@svn.freebsd.org> From: Jeff Roberson Date: Thu, 28 Jan 2010 09:25:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203110 - in projects/suj: 6/sbin/fsck_ffs 7/sbin/fsck_ffs 8/sbin/fsck_ffs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jan 2010 09:25:35 -0000 Author: jeff Date: Thu Jan 28 09:25:34 2010 New Revision: 203110 URL: http://svn.freebsd.org/changeset/base/203110 Log: - Merge r203109 from suj/head Modified: projects/suj/6/sbin/fsck_ffs/suj.c projects/suj/7/sbin/fsck_ffs/suj.c projects/suj/8/sbin/fsck_ffs/suj.c Modified: projects/suj/6/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/6/sbin/fsck_ffs/suj.c Thu Jan 28 09:24:10 2010 (r203109) +++ projects/suj/6/sbin/fsck_ffs/suj.c Thu Jan 28 09:25:34 2010 (r203110) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2009 Jeffrey W. Roberson + * Copyright 2009, 2010 Jeffrey W. Roberson * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -48,8 +48,6 @@ __FBSDID("$FreeBSD$"); #include "fsck.h" -static void ino_decr(ino_t); - #define DOTDOT_OFFSET DIRECTSIZ(1) #define SUJ_HASHSIZE 2048 #define SUJ_HASHMASK (SUJ_HASHSIZE - 1) @@ -64,7 +62,6 @@ struct suj_seg { struct suj_rec { TAILQ_ENTRY(suj_rec) sr_next; union jrec *sr_rec; - int sr_alt; /* Is alternate address? */ }; TAILQ_HEAD(srechd, suj_rec); @@ -75,11 +72,14 @@ struct suj_ino { struct srechd si_movs; struct jtrncrec *si_trunc; ino_t si_ino; - int si_nlinkadj; - int si_skipparent; - int si_linkadj; - int si_hasrecs; - int si_blkadj; + char si_skipparent; + char si_hasrecs; + char si_blkadj; + char si_linkadj; + int si_mode; + nlink_t si_nlinkadj; + nlink_t si_nlink; + nlink_t si_dotlinks; }; LIST_HEAD(inohd, suj_ino); @@ -143,6 +143,8 @@ uint64_t jrecs; typedef void (*ino_visitor)(ino_t, ufs_lbn_t, ufs2_daddr_t, int); static void ino_trunc(ino_t ino, off_t size); +static void ino_decr(ino_t); +static void ino_adjust(struct suj_ino *); static void ino_build(struct suj_ino *sino); static void * @@ -266,7 +268,6 @@ ino_lookup(ino_t ino, int creat) sino = errmalloc(sizeof(*sino)); bzero(sino, sizeof(*sino)); sino->si_ino = ino; - sino->si_nlinkadj = 0; TAILQ_INIT(&sino->si_recs); TAILQ_INIT(&sino->si_newrecs); TAILQ_INIT(&sino->si_movs); @@ -1095,6 +1096,9 @@ ino_setskip(struct suj_ino *sino, ino_t sino->si_skipparent = 1; } +/* + * Free the children of a directory when the directory is discarded. + */ static void ino_free_children(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, int frags) { @@ -1136,11 +1140,21 @@ ino_free_children(ino_t ino, ufs_lbn_t l * was valid and we have to adjust once more. */ sino = ino_lookup(dp->d_ino, 0); - if (sino == NULL || sino->si_linkadj || sino->si_hasrecs == 0) { - ino_decr(dp->d_ino); + if (sino == NULL || sino->si_hasrecs == 0) { + ino_decr(ino); continue; } /* + * Use ino_adjust() so if we lose the last non-dot reference + * to a directory it can be discarded. + */ + if (sino->si_linkadj) { + sino->si_nlink--; + if (isparent) + sino->si_dotlinks--; + ino_adjust(sino); + } + /* * Tell any child directories we've already removed their * parent. Don't try to adjust our link down again. */ @@ -1234,12 +1248,39 @@ ino_decr(ino_t ino) * free it. */ static void -ino_adjust(ino_t ino, int lastmode, nlink_t nlink) +ino_adjust(struct suj_ino *sino) { + struct jrefrec *rrec; + struct suj_rec *srec; + struct suj_ino *stmp; union dinode *ip; + nlink_t nlink; int reqlink; int mode; + ino_t ino; + nlink = sino->si_nlink; + ino = sino->si_ino; + /* + * If it's a directory with no real names pointing to it go ahead + * and truncate it. This will free any children. + */ + if ((sino->si_mode & IFMT) == IFDIR && + nlink - sino->si_dotlinks == 0) { + sino->si_nlink = nlink = 0; + /* + * Mark any .. links so they know not to free this inode + * when they are removed. + */ + TAILQ_FOREACH(srec, &sino->si_recs, sr_next) { + rrec = (struct jrefrec *)srec->sr_rec; + if (rrec->jr_diroff == DOTDOT_OFFSET) { + stmp = ino_lookup(rrec->jr_parent, 0); + if (stmp) + ino_setskip(stmp, ino); + } + } + } ip = ino_read(ino); mode = DIP(ip, di_mode) & IFMT; if (nlink > LINK_MAX) @@ -1248,16 +1289,16 @@ ino_adjust(ino_t ino, int lastmode, nlin ino, nlink, DIP(ip, di_nlink)); if (debug) printf("Adjusting ino %d, nlink %d, old link %d lastmode %o\n", - ino, nlink, DIP(ip, di_nlink), lastmode); + ino, nlink, DIP(ip, di_nlink), sino->si_mode); if (mode == 0) { if (debug) printf("ino %d, zero inode freeing bitmap\n", ino); - ino_free(ino, lastmode); + ino_free(ino, sino->si_mode); return; } /* XXX Should be an assert? */ - if (mode != lastmode && debug) - printf("ino %d, mode %o != %o\n", ino, mode, lastmode); + if (mode != sino->si_mode && debug) + printf("ino %d, mode %o != %o\n", ino, mode, sino->si_mode); if ((mode & IFMT) == IFDIR) reqlink = 2; else @@ -1426,10 +1467,12 @@ ino_trunc(ino_t ino, off_t size) * If we're truncating direct blocks we have to adjust frags * accordingly. */ - if (visitlbn < NDADDR) { + if (visitlbn < NDADDR && totalfrags) { long oldspace, newspace; bn = DIP(ip, di_db[visitlbn]); + if (bn == 0) + errx(1, "Bad blk at ino %d lbn %jd\n", ino, visitlbn); oldspace = sblksize(fs, cursize, visitlbn); newspace = sblksize(fs, size, visitlbn); if (oldspace != newspace) { @@ -1474,7 +1517,6 @@ ino_check(struct suj_ino *sino) { struct suj_rec *srec; struct jrefrec *rrec; - struct suj_ino *stmp; nlink_t dotlinks; int newlinks; int removes; @@ -1484,18 +1526,9 @@ ino_check(struct suj_ino *sino) int isat; int mode; - /* - * Handle truncations that were not complete. We don't have - * to worry about truncating directory entries as they must have - * been removed for truncate to succeed. - */ - ino = sino->si_ino; - if (sino->si_trunc) { - ino_trunc(ino, sino->si_trunc->jt_size); - sino->si_trunc = NULL; - } if (sino->si_hasrecs == 0) return; + ino = sino->si_ino; rrec = (struct jrefrec *)TAILQ_FIRST(&sino->si_recs)->sr_rec; nlink = rrec->jr_nlink; newlinks = 0; @@ -1528,29 +1561,16 @@ ino_check(struct suj_ino *sino) * makes no change to the link count but an add increases * by one. */ + if (debug) + printf("ino %d nlink %d newlinks %d removes %d dotlinks %d\n", + ino, nlink, newlinks, removes, dotlinks); nlink += newlinks; nlink -= removes; - /* - * If it's a directory with no real names pointing to it go ahead - * and truncate it. This will free any children. - */ - if ((mode & IFMT) == IFDIR && nlink - dotlinks == 0) { - nlink = 0; - /* - * Mark any .. links so they know not to free this inode - * when they are removed. - */ - TAILQ_FOREACH(srec, &sino->si_recs, sr_next) { - rrec = (struct jrefrec *)srec->sr_rec; - if (rrec->jr_diroff == DOTDOT_OFFSET) { - stmp = ino_lookup(rrec->jr_parent, 0); - if (stmp) - ino_setskip(stmp, ino); - } - } - } sino->si_linkadj = 1; - ino_adjust(ino, mode, nlink); + sino->si_nlink = nlink; + sino->si_dotlinks = dotlinks; + sino->si_mode = mode; + ino_adjust(sino); } /* @@ -1632,42 +1652,63 @@ cg_build(struct suj_cg *sc) } /* - * Walk the list of inode and block records for this cg, recovering any - * changes which were not complete at the time of crash. + * Handle inodes requiring truncation. This must be done prior to + * looking up any inodes in directories. */ static void -cg_check(struct suj_cg *sc) +cg_trunc(struct suj_cg *sc) { struct suj_ino *sino; - struct suj_blk *sblk; int i; - if (debug) - printf("Recovering cg %d\n", sc->sc_cgx); - for (i = 0; i < SUJ_HASHSIZE; i++) LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) - ino_check(sino); + if (sino->si_trunc) { + ino_trunc(sino->si_ino, + sino->si_trunc->jt_size); + sino->si_trunc = NULL; + } +} + +/* + * Free any partially allocated blocks and then resolve inode block + * counts. + */ +static void +cg_check_blk(struct suj_cg *sc) +{ + struct suj_ino *sino; + struct suj_blk *sblk; + int i; + for (i = 0; i < SUJ_HASHSIZE; i++) LIST_FOREACH(sblk, &sc->sc_blkhash[i], sb_next) blk_check(sblk); + /* + * Now that we've freed blocks which are not referenced we + * make a second pass over all inodes to adjust their block + * counts. + */ + for (i = 0; i < SUJ_HASHSIZE; i++) + LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) + if (sino->si_blkadj) + ino_adjblks(sino); } /* - * Now that we've freed blocks which are not referenced we make a second - * pass over all inodes to adjust their block counts. + * Walk the list of inode records for this cg, recovering any + * changes which were not complete at the time of crash. */ static void -cg_check2(struct suj_cg *sc) +cg_check_ino(struct suj_cg *sc) { struct suj_ino *sino; int i; for (i = 0; i < SUJ_HASHSIZE; i++) LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) - if (sino->si_blkadj) - ino_adjblks(sino); + ino_check(sino); } /* @@ -1789,9 +1830,23 @@ ino_unlinked(void) static void ino_append(union jrec *rec) { + struct jrefrec *refrec; + struct jmvrec *mvrec; struct suj_ino *sino; struct suj_rec *srec; + mvrec = &rec->rec_jmvrec; + refrec = &rec->rec_jrefrec; + if (debug && mvrec->jm_op == JOP_MVREF) + printf("ino move: ino %d, parent %d, diroff %jd, oldoff %jd\n", + mvrec->jm_ino, mvrec->jm_parent, mvrec->jm_newoff, + mvrec->jm_oldoff); + else if (debug && + (refrec->jr_op == JOP_ADDREF || refrec->jr_op == JOP_REMREF)) + printf("ino ref: op %d, ino %d, nlink %d, " + "parent %d, diroff %jd\n", + refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, + refrec->jr_parent, refrec->jr_diroff); /* * Lookup the ino and clear truncate if one is found. Partial * truncates are always done synchronously so if we discover @@ -1803,69 +1858,27 @@ ino_append(union jrec *rec) sino->si_hasrecs = 1; srec = errmalloc(sizeof(*srec)); srec->sr_rec = rec; - srec->sr_alt = 0; TAILQ_INSERT_TAIL(&sino->si_newrecs, srec, sr_next); } /* - * If we see two ops for the same inode to the same parent at the same - * offset we could miscount the link with ino_isat() returning twice. - * Keep only the first record because it has the valid link count but keep - * the mode from the final op as that should be the correct mode in case - * it changed. + * Add a reference adjustment to the sino list and eliminate dups. The + * primary loop in ino_build_ref() checks for dups but new ones may be + * created as a result of offset adjustments. */ static void -ino_build_ref(struct suj_ino *sino, struct suj_rec *srec) +ino_add_ref(struct suj_ino *sino, struct suj_rec *srec) { struct jrefrec *refrec; - struct jmvrec *mvrec; - struct suj_rec *srp; struct suj_rec *srn; struct jrefrec *rrn; refrec = (struct jrefrec *)srec->sr_rec; - if (debug) - printf("ino_build: op %d, ino %d, nlink %d, " - "parent %d, diroff %jd\n", - refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, - refrec->jr_parent, refrec->jr_diroff); - - /* - * Search for a mvrec that matches this offset. Whether it's an add - * or a remove we can delete the mvref. It no longer applies to this - * location. - * - * For removes, we have to find the original offset so we can create - * a remove that matches the earlier add so it can be abandoned - * if necessary. We create an add in the new location so we can - * tolerate the directory block as it existed before or after - * the move. - */ - if (!TAILQ_EMPTY(&sino->si_movs)) { - for (srn = TAILQ_LAST(&sino->si_movs, srechd); srn; srn = srp) { - srp = TAILQ_PREV(srn, srechd, sr_next); - mvrec = (struct jmvrec *)srn->sr_rec; - if (mvrec->jm_parent != refrec->jr_parent || - mvrec->jm_newoff != refrec->jr_diroff) - continue; - TAILQ_REMOVE(&sino->si_movs, srn, sr_next); - if (refrec->jr_op == JOP_REMREF) { - rrn = errmalloc(sizeof(*refrec)); - *rrn = *refrec; - rrn->jr_op = JOP_ADDREF; - rrn->jr_diroff = mvrec->jm_oldoff; - srn = errmalloc(sizeof(*srec)); - srn->sr_alt = 1; - srn->sr_rec = (union jrec *)rrn; - ino_build_ref(sino, srn); - } - } - } /* - * We walk backwards so that adds and removes are evaluated in the - * correct order. If a primary record conflicts with an alt keep - * the primary and discard the alt. We must track this to keep - * the correct number of removes in the list. + * We walk backwards so that the oldest link count is preserved. If + * an add record conflicts with a remove keep the remove. Redundant + * removes are eliminated in ino_build_ref. Otherwise we keep the + * oldest record at a given location. */ for (srn = TAILQ_LAST(&sino->si_recs, srechd); srn; srn = TAILQ_PREV(srn, srechd, sr_next)) { @@ -1873,91 +1886,135 @@ ino_build_ref(struct suj_ino *sino, stru if (rrn->jr_parent != refrec->jr_parent || rrn->jr_diroff != refrec->jr_diroff) continue; - if (debug) - printf("Discarding dup.\n"); - if (srn->sr_alt == 0) { + if (rrn->jr_op == JOP_REMREF || refrec->jr_op == JOP_ADDREF) { rrn->jr_mode = refrec->jr_mode; return; } /* + * Adding a remove. + * * Replace the record in place with the old nlink in case * we replace the head of the list. Abandon srec as a dup. */ refrec->jr_nlink = rrn->jr_nlink; srn->sr_rec = srec->sr_rec; - srn->sr_alt = srec->sr_alt; return; } TAILQ_INSERT_TAIL(&sino->si_recs, srec, sr_next); } /* - * Apply a move record to an inode. We must search for adds that preceed us - * and add duplicates because we won't know which location to search first. - * Then we add movs to a queue that is maintained until the moved location - * is removed. If a single record is moved multiple times we only maintain - * one copy that contains the original and final diroffs. + * Create a duplicate of a reference at a previous location. */ static void -ino_move_ref(struct suj_ino *sino, struct suj_rec *srec) +ino_dup_ref(struct suj_ino *sino, struct jrefrec *refrec, off_t diroff) +{ + struct jrefrec *rrn; + struct suj_rec *srn; + + rrn = errmalloc(sizeof(*refrec)); + *rrn = *refrec; + rrn->jr_op = JOP_ADDREF; + rrn->jr_diroff = diroff; + srn = errmalloc(sizeof(*srn)); + srn->sr_rec = (union jrec *)rrn; + ino_add_ref(sino, srn); +} + +/* + * Add a reference to the list at all known locations. We follow the offset + * changes for a single instance and create duplicate add refs at each so + * that we can tolerate any version of the directory block. Eliminate + * removes which collide with adds that are seen in the journal. They should + * not adjust the link count down. + */ +static void +ino_build_ref(struct suj_ino *sino, struct suj_rec *srec) { struct jrefrec *refrec; - struct jmvrec *mvrn; + struct jmvrec *mvrec; + struct suj_rec *srp; struct suj_rec *srn; struct jrefrec *rrn; - struct jmvrec *mvrec; + off_t diroff; - mvrec = (struct jmvrec *)srec->sr_rec; - if (debug) - printf("ino_move: ino %d, parent %d, diroff %jd, oldoff %jd\n", - mvrec->jm_ino, mvrec->jm_parent, mvrec->jm_newoff, - mvrec->jm_oldoff); + refrec = (struct jrefrec *)srec->sr_rec; /* - * We walk backwards so we only evaluate the most recent record at - * this offset. + * Search for a mvrec that matches this offset. Whether it's an add + * or a remove we can delete the mvref after creating a dup record in + * the old location. */ - for (srn = TAILQ_LAST(&sino->si_recs, srechd); srn; - srn = TAILQ_PREV(srn, srechd, sr_next)) { - rrn = (struct jrefrec *)srn->sr_rec; - if (rrn->jr_parent != mvrec->jm_parent || - rrn->jr_diroff != mvrec->jm_oldoff) - continue; - /* - * When an entry is moved we don't know whether the write - * to move has completed yet. To resolve this we create - * a new add dependency in the new location as if it were - * added twice. Only one will succeed. Consider the - * new offset the primary location for the inode and the - * old offset the alt. - */ - srn->sr_alt = 1; - refrec = errmalloc(sizeof(*refrec)); - refrec->jr_op = JOP_ADDREF; - refrec->jr_ino = mvrec->jm_ino; - refrec->jr_parent = mvrec->jm_parent; - refrec->jr_diroff = mvrec->jm_newoff; - refrec->jr_mode = rrn->jr_mode; - refrec->jr_nlink = rrn->jr_nlink; - srn = errmalloc(sizeof(*srn)); - srn->sr_alt = 0; - srn->sr_rec = (union jrec *)refrec; - ino_build_ref(sino, srn); - break; + if (!TAILQ_EMPTY(&sino->si_movs)) { + diroff = refrec->jr_diroff; + for (srn = TAILQ_LAST(&sino->si_movs, srechd); srn; srn = srp) { + srp = TAILQ_PREV(srn, srechd, sr_next); + mvrec = (struct jmvrec *)srn->sr_rec; + if (mvrec->jm_parent != refrec->jr_parent || + mvrec->jm_newoff != diroff) + continue; + diroff = mvrec->jm_oldoff; + TAILQ_REMOVE(&sino->si_movs, srn, sr_next); + ino_dup_ref(sino, refrec, diroff); + } } /* - * Add this mvrec to the queue of pending mvs, possibly collapsing - * it with a prior move for the same inode and offset. + * If a remove wasn't eliminated by an earlier add just append it to + * the list. */ - for (srn = TAILQ_LAST(&sino->si_movs, srechd); srn; - srn = TAILQ_PREV(srn, srechd, sr_next)) { - mvrn = (struct jmvrec *)srn->sr_rec; - if (mvrn->jm_parent != mvrec->jm_parent || - mvrn->jm_newoff != mvrec->jm_oldoff) - continue; - mvrn->jm_newoff = mvrec->jm_newoff; + if (refrec->jr_op == JOP_REMREF) { + ino_add_ref(sino, srec); return; } - TAILQ_INSERT_TAIL(&sino->si_movs, srec, sr_next); + /* + * Walk the list of records waiting to be added to the list. We + * must check for moves that apply to our current offset and remove + * them from the list. Remove any duplicates to eliminate removes + * with corresponding adds. + */ + TAILQ_FOREACH_SAFE(srn, &sino->si_newrecs, sr_next, srp) { + switch (srn->sr_rec->rec_jrefrec.jr_op) { + case JOP_ADDREF: + /* + * This should actually be an error we should + * have a remove for every add journaled. + */ + rrn = (struct jrefrec *)srn->sr_rec; + if (rrn->jr_parent != refrec->jr_parent || + rrn->jr_diroff != refrec->jr_diroff) + break; + TAILQ_REMOVE(&sino->si_newrecs, srn, sr_next); + break; + case JOP_REMREF: + /* + * Once we remove the current iteration of the + * record at this address we're done. + */ + rrn = (struct jrefrec *)srn->sr_rec; + if (rrn->jr_parent != refrec->jr_parent || + rrn->jr_diroff != refrec->jr_diroff) + break; + TAILQ_REMOVE(&sino->si_newrecs, srn, sr_next); + ino_add_ref(sino, srec); + return; + case JOP_MVREF: + /* + * Update our diroff based on any moves that match + * and remove the move. + */ + mvrec = (struct jmvrec *)srn->sr_rec; + if (mvrec->jm_parent != refrec->jr_parent || + mvrec->jm_oldoff != refrec->jr_diroff) + break; + ino_dup_ref(sino, refrec, mvrec->jm_oldoff); + refrec->jr_diroff = mvrec->jm_newoff; + TAILQ_REMOVE(&sino->si_newrecs, srn, sr_next); + break; + default: + errx(1, "ino_build_ref: Unknown op %d", + srn->sr_rec->rec_jrefrec.jr_op); + } + } + ino_add_ref(sino, srec); } /* @@ -1977,7 +2034,10 @@ ino_build(struct suj_ino *sino) ino_build_ref(sino, srec); break; case JOP_MVREF: - ino_move_ref(sino, srec); + /* + * Add this mvrec to the queue of pending mvs. + */ + TAILQ_INSERT_TAIL(&sino->si_movs, srec, sr_next); break; default: errx(1, "ino_build: Unknown op %d", @@ -2531,8 +2591,9 @@ suj_check(const char *filesys) printf("** Resolving unreferenced inode list.\n"); ino_unlinked(); printf("** Processing journal entries.\n"); - cg_apply(cg_check); - cg_apply(cg_check2); + cg_apply(cg_trunc); + cg_apply(cg_check_blk); + cg_apply(cg_check_ino); } /* * To remain idempotent with partial truncations the free bitmaps Modified: projects/suj/7/sbin/fsck_ffs/suj.c ============================================================================== --- projects/suj/7/sbin/fsck_ffs/suj.c Thu Jan 28 09:24:10 2010 (r203109) +++ projects/suj/7/sbin/fsck_ffs/suj.c Thu Jan 28 09:25:34 2010 (r203110) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2009 Jeffrey W. Roberson + * Copyright 2009, 2010 Jeffrey W. Roberson * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -48,8 +48,6 @@ __FBSDID("$FreeBSD$"); #include "fsck.h" -static void ino_decr(ino_t); - #define DOTDOT_OFFSET DIRECTSIZ(1) #define SUJ_HASHSIZE 2048 #define SUJ_HASHMASK (SUJ_HASHSIZE - 1) @@ -64,7 +62,6 @@ struct suj_seg { struct suj_rec { TAILQ_ENTRY(suj_rec) sr_next; union jrec *sr_rec; - int sr_alt; /* Is alternate address? */ }; TAILQ_HEAD(srechd, suj_rec); @@ -75,11 +72,14 @@ struct suj_ino { struct srechd si_movs; struct jtrncrec *si_trunc; ino_t si_ino; - int si_nlinkadj; - int si_skipparent; - int si_linkadj; - int si_hasrecs; - int si_blkadj; + char si_skipparent; + char si_hasrecs; + char si_blkadj; + char si_linkadj; + int si_mode; + nlink_t si_nlinkadj; + nlink_t si_nlink; + nlink_t si_dotlinks; }; LIST_HEAD(inohd, suj_ino); @@ -143,6 +143,8 @@ uint64_t jrecs; typedef void (*ino_visitor)(ino_t, ufs_lbn_t, ufs2_daddr_t, int); static void ino_trunc(ino_t ino, off_t size); +static void ino_decr(ino_t); +static void ino_adjust(struct suj_ino *); static void ino_build(struct suj_ino *sino); static void * @@ -266,7 +268,6 @@ ino_lookup(ino_t ino, int creat) sino = errmalloc(sizeof(*sino)); bzero(sino, sizeof(*sino)); sino->si_ino = ino; - sino->si_nlinkadj = 0; TAILQ_INIT(&sino->si_recs); TAILQ_INIT(&sino->si_newrecs); TAILQ_INIT(&sino->si_movs); @@ -1095,6 +1096,9 @@ ino_setskip(struct suj_ino *sino, ino_t sino->si_skipparent = 1; } +/* + * Free the children of a directory when the directory is discarded. + */ static void ino_free_children(ino_t ino, ufs_lbn_t lbn, ufs2_daddr_t blk, int frags) { @@ -1136,11 +1140,21 @@ ino_free_children(ino_t ino, ufs_lbn_t l * was valid and we have to adjust once more. */ sino = ino_lookup(dp->d_ino, 0); - if (sino == NULL || sino->si_linkadj || sino->si_hasrecs == 0) { - ino_decr(dp->d_ino); + if (sino == NULL || sino->si_hasrecs == 0) { + ino_decr(ino); continue; } /* + * Use ino_adjust() so if we lose the last non-dot reference + * to a directory it can be discarded. + */ + if (sino->si_linkadj) { + sino->si_nlink--; + if (isparent) + sino->si_dotlinks--; + ino_adjust(sino); + } + /* * Tell any child directories we've already removed their * parent. Don't try to adjust our link down again. */ @@ -1234,12 +1248,39 @@ ino_decr(ino_t ino) * free it. */ static void -ino_adjust(ino_t ino, int lastmode, nlink_t nlink) +ino_adjust(struct suj_ino *sino) { + struct jrefrec *rrec; + struct suj_rec *srec; + struct suj_ino *stmp; union dinode *ip; + nlink_t nlink; int reqlink; int mode; + ino_t ino; + nlink = sino->si_nlink; + ino = sino->si_ino; + /* + * If it's a directory with no real names pointing to it go ahead + * and truncate it. This will free any children. + */ + if ((sino->si_mode & IFMT) == IFDIR && + nlink - sino->si_dotlinks == 0) { + sino->si_nlink = nlink = 0; + /* + * Mark any .. links so they know not to free this inode + * when they are removed. + */ + TAILQ_FOREACH(srec, &sino->si_recs, sr_next) { + rrec = (struct jrefrec *)srec->sr_rec; + if (rrec->jr_diroff == DOTDOT_OFFSET) { + stmp = ino_lookup(rrec->jr_parent, 0); + if (stmp) + ino_setskip(stmp, ino); + } + } + } ip = ino_read(ino); mode = DIP(ip, di_mode) & IFMT; if (nlink > LINK_MAX) @@ -1248,16 +1289,16 @@ ino_adjust(ino_t ino, int lastmode, nlin ino, nlink, DIP(ip, di_nlink)); if (debug) printf("Adjusting ino %d, nlink %d, old link %d lastmode %o\n", - ino, nlink, DIP(ip, di_nlink), lastmode); + ino, nlink, DIP(ip, di_nlink), sino->si_mode); if (mode == 0) { if (debug) printf("ino %d, zero inode freeing bitmap\n", ino); - ino_free(ino, lastmode); + ino_free(ino, sino->si_mode); return; } /* XXX Should be an assert? */ - if (mode != lastmode && debug) - printf("ino %d, mode %o != %o\n", ino, mode, lastmode); + if (mode != sino->si_mode && debug) + printf("ino %d, mode %o != %o\n", ino, mode, sino->si_mode); if ((mode & IFMT) == IFDIR) reqlink = 2; else @@ -1426,10 +1467,12 @@ ino_trunc(ino_t ino, off_t size) * If we're truncating direct blocks we have to adjust frags * accordingly. */ - if (visitlbn < NDADDR) { + if (visitlbn < NDADDR && totalfrags) { long oldspace, newspace; bn = DIP(ip, di_db[visitlbn]); + if (bn == 0) + errx(1, "Bad blk at ino %d lbn %jd\n", ino, visitlbn); oldspace = sblksize(fs, cursize, visitlbn); newspace = sblksize(fs, size, visitlbn); if (oldspace != newspace) { @@ -1474,7 +1517,6 @@ ino_check(struct suj_ino *sino) { struct suj_rec *srec; struct jrefrec *rrec; - struct suj_ino *stmp; nlink_t dotlinks; int newlinks; int removes; @@ -1484,18 +1526,9 @@ ino_check(struct suj_ino *sino) int isat; int mode; - /* - * Handle truncations that were not complete. We don't have - * to worry about truncating directory entries as they must have - * been removed for truncate to succeed. - */ - ino = sino->si_ino; - if (sino->si_trunc) { - ino_trunc(ino, sino->si_trunc->jt_size); - sino->si_trunc = NULL; - } if (sino->si_hasrecs == 0) return; + ino = sino->si_ino; rrec = (struct jrefrec *)TAILQ_FIRST(&sino->si_recs)->sr_rec; nlink = rrec->jr_nlink; newlinks = 0; @@ -1528,29 +1561,16 @@ ino_check(struct suj_ino *sino) * makes no change to the link count but an add increases * by one. */ + if (debug) + printf("ino %d nlink %d newlinks %d removes %d dotlinks %d\n", + ino, nlink, newlinks, removes, dotlinks); nlink += newlinks; nlink -= removes; - /* - * If it's a directory with no real names pointing to it go ahead - * and truncate it. This will free any children. - */ - if ((mode & IFMT) == IFDIR && nlink - dotlinks == 0) { - nlink = 0; - /* - * Mark any .. links so they know not to free this inode - * when they are removed. - */ - TAILQ_FOREACH(srec, &sino->si_recs, sr_next) { - rrec = (struct jrefrec *)srec->sr_rec; - if (rrec->jr_diroff == DOTDOT_OFFSET) { - stmp = ino_lookup(rrec->jr_parent, 0); - if (stmp) - ino_setskip(stmp, ino); - } - } - } sino->si_linkadj = 1; - ino_adjust(ino, mode, nlink); + sino->si_nlink = nlink; + sino->si_dotlinks = dotlinks; + sino->si_mode = mode; + ino_adjust(sino); } /* @@ -1632,42 +1652,63 @@ cg_build(struct suj_cg *sc) } /* - * Walk the list of inode and block records for this cg, recovering any - * changes which were not complete at the time of crash. + * Handle inodes requiring truncation. This must be done prior to + * looking up any inodes in directories. */ static void -cg_check(struct suj_cg *sc) +cg_trunc(struct suj_cg *sc) { struct suj_ino *sino; - struct suj_blk *sblk; int i; - if (debug) - printf("Recovering cg %d\n", sc->sc_cgx); - for (i = 0; i < SUJ_HASHSIZE; i++) LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) - ino_check(sino); + if (sino->si_trunc) { + ino_trunc(sino->si_ino, + sino->si_trunc->jt_size); + sino->si_trunc = NULL; + } +} + +/* + * Free any partially allocated blocks and then resolve inode block + * counts. + */ +static void +cg_check_blk(struct suj_cg *sc) +{ + struct suj_ino *sino; + struct suj_blk *sblk; + int i; + for (i = 0; i < SUJ_HASHSIZE; i++) LIST_FOREACH(sblk, &sc->sc_blkhash[i], sb_next) blk_check(sblk); + /* + * Now that we've freed blocks which are not referenced we + * make a second pass over all inodes to adjust their block + * counts. + */ + for (i = 0; i < SUJ_HASHSIZE; i++) + LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) + if (sino->si_blkadj) + ino_adjblks(sino); } /* - * Now that we've freed blocks which are not referenced we make a second - * pass over all inodes to adjust their block counts. + * Walk the list of inode records for this cg, recovering any + * changes which were not complete at the time of crash. */ static void -cg_check2(struct suj_cg *sc) +cg_check_ino(struct suj_cg *sc) { struct suj_ino *sino; int i; for (i = 0; i < SUJ_HASHSIZE; i++) LIST_FOREACH(sino, &sc->sc_inohash[i], si_next) - if (sino->si_blkadj) - ino_adjblks(sino); + ino_check(sino); } /* @@ -1789,9 +1830,23 @@ ino_unlinked(void) static void ino_append(union jrec *rec) { + struct jrefrec *refrec; + struct jmvrec *mvrec; struct suj_ino *sino; struct suj_rec *srec; + mvrec = &rec->rec_jmvrec; + refrec = &rec->rec_jrefrec; + if (debug && mvrec->jm_op == JOP_MVREF) + printf("ino move: ino %d, parent %d, diroff %jd, oldoff %jd\n", + mvrec->jm_ino, mvrec->jm_parent, mvrec->jm_newoff, + mvrec->jm_oldoff); + else if (debug && + (refrec->jr_op == JOP_ADDREF || refrec->jr_op == JOP_REMREF)) + printf("ino ref: op %d, ino %d, nlink %d, " + "parent %d, diroff %jd\n", + refrec->jr_op, refrec->jr_ino, refrec->jr_nlink, + refrec->jr_parent, refrec->jr_diroff); /* * Lookup the ino and clear truncate if one is found. Partial * truncates are always done synchronously so if we discover @@ -1803,69 +1858,27 @@ ino_append(union jrec *rec) sino->si_hasrecs = 1; srec = errmalloc(sizeof(*srec)); srec->sr_rec = rec; - srec->sr_alt = 0; TAILQ_INSERT_TAIL(&sino->si_newrecs, srec, sr_next); } /* - * If we see two ops for the same inode to the same parent at the same - * offset we could miscount the link with ino_isat() returning twice. - * Keep only the first record because it has the valid link count but keep - * the mode from the final op as that should be the correct mode in case - * it changed. + * Add a reference adjustment to the sino list and eliminate dups. The + * primary loop in ino_build_ref() checks for dups but new ones may be + * created as a result of offset adjustments. */ static void -ino_build_ref(struct suj_ino *sino, struct suj_rec *srec) +ino_add_ref(struct suj_ino *sino, struct suj_rec *srec) { struct jrefrec *refrec; - struct jmvrec *mvrec; - struct suj_rec *srp; struct suj_rec *srn; struct jrefrec *rrn; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Jan 28 15:09:40 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DE1AA1065672; Thu, 28 Jan 2010 15:09:40 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CD62C8FC1F; Thu, 28 Jan 2010 15:09:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0SF9eD6074179; Thu, 28 Jan 2010 15:09:40 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0SF9eHs074177; Thu, 28 Jan 2010 15:09:40 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001281509.o0SF9eHs074177@svn.freebsd.org> From: Nathan Whitehorn Date: Thu, 28 Jan 2010 15:09:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203118 - projects/ppc64/usr.sbin/pmcstat X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jan 2010 15:09:41 -0000 Author: nwhitehorn Date: Thu Jan 28 15:09:40 2010 New Revision: 203118 URL: http://svn.freebsd.org/changeset/base/203118 Log: Revert some debugging that snuck in. Modified: projects/ppc64/usr.sbin/pmcstat/pmcstat_log.c Modified: projects/ppc64/usr.sbin/pmcstat/pmcstat_log.c ============================================================================== --- projects/ppc64/usr.sbin/pmcstat/pmcstat_log.c Thu Jan 28 15:09:11 2010 (r203117) +++ projects/ppc64/usr.sbin/pmcstat/pmcstat_log.c Thu Jan 28 15:09:40 2010 (r203118) @@ -1966,8 +1966,6 @@ pmcstat_callgraph_do_gmon_arcs(void) * files usable by gprof(1) are created if FLAG_DO_GPROF is set. */ -int foo[sizeof(uintfptr_t) - 7]; - static int pmcstat_analyze_log(struct pmcstat_args *a) { From owner-svn-src-projects@FreeBSD.ORG Fri Jan 29 05:44:21 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 55974106566C; Fri, 29 Jan 2010 05:44:21 +0000 (UTC) (envelope-from lstewart@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0DB358FC17; Fri, 29 Jan 2010 05:44:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0T5iLPB067948; Fri, 29 Jan 2010 05:44:21 GMT (envelope-from lstewart@svn.freebsd.org) Received: (from lstewart@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0T5iLN5067944; Fri, 29 Jan 2010 05:44:21 GMT (envelope-from lstewart@svn.freebsd.org) Message-Id: <201001290544.o0T5iLN5067944@svn.freebsd.org> From: Lawrence Stewart Date: Fri, 29 Jan 2010 05:44:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203153 - in projects/tcp_cc_head/sys: modules/cc_hd modules/cc_vegas netinet X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Jan 2010 05:44:21 -0000 Author: lstewart Date: Fri Jan 29 05:44:20 2010 New Revision: 203153 URL: http://svn.freebsd.org/changeset/base/203153 Log: Initial import of David Hayes' Vegas and Hamilton delay-based congestion control algorithms, with tweaks to integrate them into the modular CC framework. Lots of infrastructure related to RTT estimation is missing at the moment in order to make these work. Added: projects/tcp_cc_head/sys/modules/cc_hd/ projects/tcp_cc_head/sys/modules/cc_hd/Makefile (contents, props changed) projects/tcp_cc_head/sys/modules/cc_vegas/ projects/tcp_cc_head/sys/modules/cc_vegas/Makefile (contents, props changed) projects/tcp_cc_head/sys/netinet/cc_hd.c (contents, props changed) projects/tcp_cc_head/sys/netinet/cc_vegas.c (contents, props changed) Added: projects/tcp_cc_head/sys/modules/cc_hd/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/tcp_cc_head/sys/modules/cc_hd/Makefile Fri Jan 29 05:44:20 2010 (r203153) @@ -0,0 +1,10 @@ +# $FreeBSD$ + +.include + +.PATH: ${.CURDIR}/../../netinet +KMOD=cc_hd +SRCS=cc_hd.c + +.include + Added: projects/tcp_cc_head/sys/modules/cc_vegas/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/tcp_cc_head/sys/modules/cc_vegas/Makefile Fri Jan 29 05:44:20 2010 (r203153) @@ -0,0 +1,10 @@ +# $FreeBSD$ + +.include + +.PATH: ${.CURDIR}/../../netinet +KMOD=cc_vegas +SRCS=cc_vegas.c + +.include + Added: projects/tcp_cc_head/sys/netinet/cc_hd.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/tcp_cc_head/sys/netinet/cc_hd.c Fri Jan 29 05:44:20 2010 (r203153) @@ -0,0 +1,268 @@ +/*- + * Copyright (c) 2009-2010 + * Swinburne University of Technology, Melbourne, Australia + * + * This software was developed at the Centre for Advanced Internet + * Architectures, Swinburne University, by David Hayes and Lawrence Stewart, + * made possible in part by a grant from the Cisco University Research Program + * Fund at Community Foundation Silicon Valley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Hamilton Delay-Based CC + * + * An implementation of the Hamilton Institute's delay based + * congestion algorithm for FreeBSD. + * The algorithm is based on the one described in "Delay-based AIMD congestion + * control" by D. Leith, R. Shorten, G. McCullagh and J. Heffner. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#define CAST_PTR_INT(X) (*((int*)(X))) + + +struct cc_algo hd_cc_algo = { + .name = "hd", + .mod_init = hd_mod_init, + .pre_fr = hd_pre_fr, + .post_fr = hd_post_fr, +}; + +static int +hd_qthresh_handler(SYSCTL_HANDLER_ARGS) +{ + INIT_VNET_INET(TD_TO_VNET(req->td)); + int error, new; + + new = V_delaycc_queue_thresh; + error = sysctl_handle_int(oidp, &new, 0, req); + if (error == 0 && req->newptr) { + if (1000*new < hz) /* if less than kernel tick rate */ + error = EINVAL; + else + V_delaycc_queue_thresh = new*hz/1000; /* number of kernel ticks */ + } + return (error); +} + +static int +hd_qmin_handler(SYSCTL_HANDLER_ARGS) +{ + if(req-V>newptr != NULL) { + if(CAST_PTR_INT(req->newptr) < 1) + return (EINVAL); + } + + return sysctl_handle_int(oidp, arg1, arg2, req); +} + + +static int +hd_pmax_handler(SYSCTL_HANDLER_ARGS) +{ + if(req->newptr != NULL) { + if(CAST_PTR_INT(req->newptr) == 0 || + CAST_PTR_INT(req->newptr) > 100) + return (EINVAL); + } + + return sysctl_handle_int(oidp, arg1, arg2, req); +} + + +static int +hd_wnd_backoff_handler(SYSCTL_HANDLER_ARGS) +{ + if(req->newptr != NULL) { + if(CAST_PTR_INT(req->newptr) == 0 || + CAST_PTR_INT(req->newptr) > 100) + return (EINVAL); + } + + return sysctl_handle_int(oidp, arg1, arg2, req); +} + +/* Modifications to impliment the Hamilton delay based congestion control + algorithm -- David Hayes The key differences between delay_tcp_congestion_exp + and tcp_congestion_exp are: + + 1. instead of ssthresh being set to half cwnd, it is set to: + + delta * minrtt/rtt * cwnd. + + The basic back off factor is the ratio between the current measured rtt + and the lowest measured rtt. To ensure a good minrtt measurment, this + is modified by 0 < delta < 1 . Delta is the window_backoff_modifier/100. + (see D.Leith, R.Shorten, J.Heffner, L.Dunn, F.Baker + Delay-based AIMD Congestion Control, Proc. PFLDnet 2007) + + 2. snd_cwnd = snd_ssthresh. Since no packet has been lost + the normal fast recovery mechanism is not necessary. +*/ +/* invbeta*8 for interger arithmetic */ +static void inline +beta_tcp_congestion_exp(struct tcpcb *tp, int invbeta) +{ + u_int win; + if (invbeta < 8 || invbeta > 16) + invbeta=16; /* for safety, must reduce but not by more than 1/2 */ + + win = min(tp->snd_wnd, tp->snd_cwnd) * 8/ + invbeta / tp->t_maxseg; + if (win < 2) + win = 2; + tp->snd_ssthresh = win * tp->t_maxseg; + tp->snd_recover = tp->snd_max; + if (tp->t_flags & TF_ECN_PERMIT) + tp->t_flags |= TF_ECN_SND_CWR; + tp->snd_cwnd = tp->snd_ssthresh; + ENTER_DELAYRATERECOVERY(tp); +} + + +/* Hamilto backoff function (see reference below) */ +static int inline +prob_backoff_func(int Qdly, int maxQdly) +{ + int p; + if (Qdly < V_delaycc_queue_thresh) + p = INT_MAX / 100 * V_delaycc_pmax + / (V_delaycc_queue_thresh - V_delaycc_queue_min) + * (Qdly - V_delaycc_queue_min); + else + if (Qdly > V_delaycc_queue_thresh) + p = INT_MAX / 100 * V_delaycc_pmax + / (maxQdly - V_delaycc_queue_thresh) + * (maxQdly - Qdly); + else + p = INT_MAX / 100 * V_delaycc_pmax; + return(p); +} + +/* half cwnd backoff - David Hayes */V +static void inline +tcp_congestion_exp(struct tcpcb *tp) +{ + u_int win, decr; + win = tp->snd_cwnd/tp->t_maxseg; + decr = win>>2; + win -= decr; + if (win < 2) + win = 2; + tp->snd_ssthresh = win * tp->t_maxseg; + tp->snd_recover = tp->snd_max; + if (tp->t_flags & TF_ECN_PERMIT) + tp->t_flags |= TF_ECN_SND_CWR; + tp->snd_cwnd = tp->snd_ssthresh; + ENTER_DELAYRATERECOVERY(tp); +} + +/* Hamilton delay based congestion control detection and response + David Hayes*/ +void +hamilton_delay_congestion(struct tcpcb *tp) +{ + if (!IN_DELAYRATERECOVERY(tp) && !IN_FASTRECOVERY(tp)) { + struct enhanced_timing *e_t; + e_t = &tp->e_t; + + + if (e_t->rtt && e_t->minrtt && V_delaycc_window_backoff_modifier + && (V_delaycc_queue_thresh > 0)) { + int Qdly = e_t->rtt - e_t->minrtt; + if (mod_tests & HD_ProbBackoff && (Qdly > V_delaycc_queue_min)) { + /* based on algorithm developed at the Hamilton Institute, Ireland + See Lukasz Budzisz, Rade Stanojevic, Robert Shorton and Fred Baker, + "A stratagy for fair coexistence of loss and delay-based congestion + control algorithms", to be published IEEE Communication Letters 2009 */ + int p; + p = prob_backoff_func(Qdly, e_t->maxrtt - e_t->minrtt); + if (random() < p) { + tcp_congestion_exp(tp); /* halve cwnd */ + } + } else { + /* test for congestion using measured rtt as an indicator */ + if ((e_t->rtt - e_t->minrtt) > V_delaycc_queue_thresh) { + /* 8 factor to add precision */ + int invbeta = e_t->rtt *800 / e_t->minrtt / V_delaycc_window_backoff_modifier; + beta_tcp_congestion_exp(tp, invbeta); + } + } + } + } +} + +int +hd_mod_init(void) +{ + hd_cc_algo.ack_received = newreno_cc_algo.ack_received; + return (0); +} + +SYSCTL_DECL(_net_inet_tcp_cc_hd); +SYSCTL_NODE(_net_inet_tcp_cc, OID_AUTO, hd, CTLFLAG_RW, NULL, + "Hamilton delay-based congestion control related settings"); + +SYSCTL_OID(_net_inet_tcp_cc_hd, OID_AUTO, window_backoff_modifier, + CTLTYPE_UINT|CTLFLAG_RW, &hd_wnd_backoff_modifier, 0, + &hd_wnd_backoff_handler, "IU", + "percentage - When Hamilton delay based congestion control is used, this sets the percent modification to the multiplicative decrease factor"); + +SYSCTL_OID(_net_inet_tcp_cc_hd, OID_AUTO, queue_threshold + CTLTYPE_UINT|CTLFLAG_RW, &hd_qthresh, 0, + &hd_qthresh_handler, "IU", + "Entered in milliseconds, but converted to kernel ticks - When Hamilton delay based congestion control is used, this sets the queueing congestion threshold"); + +SYSCTL_OID(_net_inet_tcp_cc_hd, OID_AUTO, pmax + CTLTYPE_UINT|CTLFLAG_RW, &hd_pmax, 0, + &hd_pmax_handler, "IU", + "percentage - When Hamilton delay based congestion control is used, this sets the minimum queueing delay for the probabilistic backoff function"); + +SYSCTL_OID(_net_inet_tcp_cc_hd, OID_AUTO, queue_min + CTLTYPE_UINT|CTLFLAG_RW, &hd_qmin, 0, + &hd_qmin_handler, "IU", + "Entered in milliseconds, but converted to kernel ticks - When Hamilton delay based congestion control is used, this sets the minimum queueing delay for the probabilistic backoff function"); + +DECLARE_CC_MODULE(hd, &hd_cc_algo); Added: projects/tcp_cc_head/sys/netinet/cc_vegas.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/tcp_cc_head/sys/netinet/cc_vegas.c Fri Jan 29 05:44:20 2010 (r203153) @@ -0,0 +1,154 @@ +/*- + * Copyright (c) 2009-2010 + * Swinburne University of Technology, Melbourne, Australia + * + * This software was developed at the Centre for Advanced Internet + * Architectures, Swinburne University, by David Hayes and Lawrence Stewart, + * made possible in part by a grant from the Cisco University Research Program + * Fund at Community Foundation Silicon Valley. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * VEGAS + * + * An implementation of VEGAS congestion algorithm for FreeBSD. + * The algorithm is based on the one described in "TCP Vegas: End to End + * Congestion Avoidance on a Global Internet" by Lawrence S. Brakmo and Larry L. + * Peterson. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#define CAST_PTR_INT(X) (*((int*)(X))) + +int vegas_mod_init(void); +void vegas_pre_fr(struct tcpcb *tp, struct tcphdr *th); +void vegas_post_fr(struct tcpcb *tp, struct tcphdr *th); + +/* function pointers for various hooks into the TCP stack */ +struct cc_algo vegas_cc_algo = { + .name = "vegas", + .mod_init = vegas_mod_init, + .pre_fr = vegas_pre_fr, + .post_fr = vegas_post_fr, +}; + +static uint32_t vegas_alpha = 1; +static uint32_t vegas_beta = 3; + +static int +vegas_alpha_handler(SYSCTL_HANDLER_ARGS) +{ + if(req->newptr != NULL) { + if(CAST_PTR_INT(req->newptr) < 1 || + CAST_PTR_INT(req->newptr) > vegas_beta) + return (EINVAL); + } + + return sysctl_handle_int(oidp, arg1, arg2, req); +} + +static int +vegas_beta_handler(SYSCTL_HANDLER_ARGS) +{ + if(req->newptr != NULL) { + if(CAST_PTR_INT(req->newptr) < 1 || + CAST_PTR_INT(req->newptr) <= vegas_alpha) + return (EINVAL); + } + + return sysctl_handle_int(oidp, arg1, arg2, req); +} + +void +vegas_post_fr(struct tcpcb *tp, struct tcphdr *th) +{ +/* struct enhanced_timing *e_t; + struct rateinfo *r_i; + e_t = &tp->e_t; + r_i = &e_t->r_i; + + if (!IN_FASTRECOVERY(tp) && (tp->e_t.flags & DRCC_NEW_MEASUREMENT)) { + + long diff = r_i->expected_tx_rate - r_i->actual_tx_rate; + if (diff < V_ratecc_vegas_alpha*tp->t_maxseg/e_t->minrtt) + tp->snd_cwnd = min(tp->snd_cwnd + tp->t_maxseg, TCP_MAXWIN<snd_scale); + else if (diff > V_ratecc_vegas_beta*tp->t_maxseg/e_t->minrtt) + tp->snd_cwnd = max(2*tp->t_maxseg,tp->snd_cwnd-tp->t_maxseg); + + e_t->flags &= ~DRCC_NEW_MEASUREMENT; + + } +*/ +} + +void +vegas_pre_fr(struct tcpcb *tp, struct tcphdr *th) +{ + //EXIT_RATE_AVOID(tp); + //EXIT_DELAYRATERECOVERY(tp); +} + +int +vegas_mod_init(void) +{ + vegas_cc_algo.ack_received = newreno_cc_algo.ack_received; + return (0); +} + +SYSCTL_DECL(_net_inet_tcp_cc_vegas); +SYSCTL_NODE(_net_inet_tcp_cc, OID_AUTO, vegas, CTLFLAG_RW, NULL, + "VEGAS related settings"); + +SYSCTL_OID(_net_inet_tcp_cc_vegas, OID_AUTO, vegas_alpha, + CTLTYPE_UINT|CTLFLAG_RW, &vegas_alpha, 0, + &vegas_alpha_handler, "IU", + "vegas alpha parameter - Entered in terms of number \"buffers\" (0 < alpha < beta)"); + +SYSCTL_OID(_net_inet_tcp_cc_vegas, OID_AUTO, vegas_beta, + CTLTYPE_UINT|CTLFLAG_RW, &vegas_beta, 0, + &vegas_beta_handler, "IU", + "vegas beta parameter - Entered in terms of number \"buffers\" (0 < alpha < beta)"); + +DECLARE_CC_MODULE(vegas, &vegas_cc_algo); From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:00:16 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B88AE106566C; Sat, 30 Jan 2010 18:00:16 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A73C98FC14; Sat, 30 Jan 2010 18:00:16 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UI0Gnw065403; Sat, 30 Jan 2010 18:00:16 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UI0GwA065399; Sat, 30 Jan 2010 18:00:16 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301800.o0UI0GwA065399@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:00:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203201 - projects/capabilities8/libexec/rtld-elf-cap X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:00:16 -0000 Author: rwatson Date: Sat Jan 30 18:00:16 2010 New Revision: 203201 URL: http://svn.freebsd.org/changeset/base/203201 Log: Merge c169395 from the p4 TrustedBSD capabilities branch into capabilities8: Rename rtld_caplibindex to rtld_libcache to better reflect what is going on. Sponsored by: Google, Inc. Added: projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c - copied unchanged from r203185, projects/capabilities8/libexec/rtld-elf-cap/rtld_caplibindex.c projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h - copied unchanged from r203185, projects/capabilities8/libexec/rtld-elf-cap/rtld_caplibindex.h Deleted: projects/capabilities8/libexec/rtld-elf-cap/rtld_caplibindex.c projects/capabilities8/libexec/rtld-elf-cap/rtld_caplibindex.h Modified: projects/capabilities8/libexec/rtld-elf-cap/Makefile Modified: projects/capabilities8/libexec/rtld-elf-cap/Makefile ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/Makefile Sat Jan 30 16:34:52 2010 (r203200) +++ projects/capabilities8/libexec/rtld-elf-cap/Makefile Sat Jan 30 18:00:16 2010 (r203201) @@ -1,5 +1,5 @@ # $FreeBSD$ -# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#17 $ +# $P4: //depot/projects/trustedbsd/capabilities/src/libexec/rtld-elf-cap/Makefile#18 $ WITHOUT_SSP= @@ -9,7 +9,7 @@ PROG?= ld-elf-cap.so.1 SRCS= rtld_start.S \ reloc.c rtld.c rtld_lock.c map_object.c \ malloc.c xmalloc.c debug.c \ - crtbrand.c rtld_caplibindex.c rtld_sandbox.c + crtbrand.c rtld_libcache.c rtld_sandbox.c MAN= rtld-elf-cap.1 CSTD?= gnu99 CFLAGS+= -Wall -DFREEBSD_ELF -DIN_RTLD -DIN_RTLD_CAP -g Copied: projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c (from r203185, projects/capabilities8/libexec/rtld-elf-cap/rtld_caplibindex.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c Sat Jan 30 18:00:16 2010 (r203201, copy of r203185, projects/capabilities8/libexec/rtld-elf-cap/rtld_caplibindex.c) @@ -0,0 +1,117 @@ +/*- + * Copyright (c) 2009 Robert N. M. Watson + * All rights reserved. + * + * WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED + * ON IN PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND + * UNEXPECTED WAYS. + * + * This software was developed at the University of Cambridge Computer + * Laboratory with support from a grant from Google, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * When running in a capability sandbox, rtld-elf-cap will be passed a set of + * open file descriptors to potentially useful libraries, along with an index + * to these in the LD_CAPLIBINDEX environmental variable. These routines + * parse that index, and allow lookups by library name. A typical string + * might be: + * + * 6:libc.so.7,7:libm.so.5 + * + * In the event of ambiguity, the earliest entry will be matched. + */ + +#include +#include +#include + +#include +#include +#include + +#include "rtld.h" +#include "rtld_caplibindex.h" + +struct libindex_entry { + char *lie_name; + int lie_fd; + TAILQ_ENTRY(libindex_entry) lie_list; +}; + +static TAILQ_HEAD(, libindex_entry) ld_caplibindex_list = + TAILQ_HEAD_INITIALIZER(ld_caplibindex_list); + +static void +ld_caplibindex_add(const char *name, const char *fdnumber) +{ + struct libindex_entry *liep; + long long l; + char *endp; + + if (strlen(name) == 0 || strlen(fdnumber) == 0) + return; + + l = strtoll(fdnumber, &endp, 10); + if (l < 0 || l > INT_MAX || *endp != '\0') + return; + + liep = xmalloc(sizeof(*liep)); + liep->lie_name = xstrdup(name); + liep->lie_fd = l; + TAILQ_INSERT_TAIL(&ld_caplibindex_list, liep, lie_list); +} + +int +ld_caplibindex_lookup(const char *libname, int *fdp) +{ + struct libindex_entry *liep; + + TAILQ_FOREACH(liep, &ld_caplibindex_list, lie_list) { + if (strcmp(liep->lie_name, libname) == 0) { + *fdp = liep->lie_fd; + return (0); + } + } + return (-1); +} + +void +ld_caplibindex_init(const char *caplibindex) +{ + char *caplibindex_copy, *caplibindex_tofree; + char *entry, *fdnumber; + + caplibindex_copy = caplibindex_tofree = xstrdup(caplibindex); + while ((entry = strsep(&caplibindex_copy, ",")) != NULL) { + fdnumber = strsep(&entry, ":"); + if (fdnumber == NULL) + continue; + ld_caplibindex_add(entry, fdnumber); + } + free(caplibindex_tofree); +} Copied: projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h (from r203185, projects/capabilities8/libexec/rtld-elf-cap/rtld_caplibindex.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h Sat Jan 30 18:00:16 2010 (r203201, copy of r203185, projects/capabilities8/libexec/rtld-elf-cap/rtld_caplibindex.h) @@ -0,0 +1,40 @@ +/*- + * Copyright (c) 2009 Robert N. M. Watson + * All rights reserved. + * + * WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED + * ON IN PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND + * UNEXPECTED WAYS. + * + * This software was developed at the University of Cambridge Computer + * Laboratory with support from a grant from Google, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef RTLD_CAPLIBINDEX_H +#define RTLD_CAPLIBINDEX_H + +int ld_caplibindex_lookup(const char *libname, int *fdp); +void ld_caplibindex_init(const char *caplibindex); + +#endif /* !RTLD_CAPLIBINDEX_H */ From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:04:57 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 48E801065670; Sat, 30 Jan 2010 18:04:57 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1F9078FC0C; Sat, 30 Jan 2010 18:04:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UI4vgj066444; Sat, 30 Jan 2010 18:04:57 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UI4vui066441; Sat, 30 Jan 2010 18:04:57 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001301804.o0UI4vui066441@svn.freebsd.org> From: Nathan Whitehorn Date: Sat, 30 Jan 2010 18:04:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203202 - projects/ppc64/sys/powerpc/mambo X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:04:57 -0000 Author: nwhitehorn Date: Sat Jan 30 18:04:56 2010 New Revision: 203202 URL: http://svn.freebsd.org/changeset/base/203202 Log: Make Mambo disk behave slightly better in the case of very large (> 4 GB) disk images. It still has issues. Modified: projects/ppc64/sys/powerpc/mambo/mambo_disk.c projects/ppc64/sys/powerpc/mambo/mambocall.h Modified: projects/ppc64/sys/powerpc/mambo/mambo_disk.c ============================================================================== --- projects/ppc64/sys/powerpc/mambo/mambo_disk.c Sat Jan 30 18:00:16 2010 (r203201) +++ projects/ppc64/sys/powerpc/mambo/mambo_disk.c Sat Jan 30 18:04:56 2010 (r203202) @@ -112,7 +112,6 @@ mambodisk_attach(device_t dev) d->d_open = mambodisk_open; d->d_close = mambodisk_close; d->d_strategy = mambodisk_strategy; - // d->d_dump = mambodisk_dump; Need polling mmc layer d->d_name = "mambodisk"; d->d_drv1 = sc; d->d_maxsize = MAXPHYS; /* Maybe ask bridge? */ @@ -123,7 +122,7 @@ mambodisk_attach(device_t dev) d->d_unit = device_get_unit(dev); d->d_mediasize = mambocall(MAMBO_DISK_INFO,MAMBO_INFO_DEVSZ,d->d_unit) - * 1024; /* Mambo gives size in KB */ + * 1024ULL; /* Mambo gives size in KB */ mb = d->d_mediasize >> 20; /* 1MiB == 1 << 20 */ unit = 'M'; @@ -197,10 +196,11 @@ mambodisk_task(void *arg) { struct mambodisk_softc *sc = (struct mambodisk_softc*)arg; struct bio *bp; - int sz, result; + size_t sz; + int result; daddr_t block, end; device_t dev; - uint32_t unit; + u_long unit; dev = sc->dev; unit = device_get_unit(dev); @@ -220,7 +220,7 @@ mambodisk_task(void *arg) sz = sc->disk->d_sectorsize; end = bp->bio_pblkno + (bp->bio_bcount / sz); for (block = bp->bio_pblkno; block < end;) { - uint32_t numblocks; + u_long numblocks; char *vaddr = bp->bio_data + (block - bp->bio_pblkno) * sz; @@ -230,10 +230,10 @@ mambodisk_task(void *arg) if (bp->bio_cmd == BIO_READ) { result = mambocall(MAMBO_DISK_READ, vaddr, - (uint32_t)block, (numblocks << 16) | unit); + (u_long)block, (numblocks << 16) | unit); } else if (bp->bio_cmd == BIO_WRITE) { result = mambocall(MAMBO_DISK_WRITE, vaddr, - (uint32_t)block, (numblocks << 16) | unit); + (u_long)block, (numblocks << 16) | unit); } else { result = 1; } Modified: projects/ppc64/sys/powerpc/mambo/mambocall.h ============================================================================== --- projects/ppc64/sys/powerpc/mambo/mambocall.h Sat Jan 30 18:00:16 2010 (r203201) +++ projects/ppc64/sys/powerpc/mambo/mambocall.h Sat Jan 30 18:04:56 2010 (r203202) @@ -30,6 +30,6 @@ #ifndef _MAMBO_MAMBOCALL_H_ #define _MAMBO_MAMBOCALL_H_ -int mambocall(int op, ...); +long mambocall(int op, ...); #endif /* _MAMBO_MAMBOCALL_H_ */ From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:05:18 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A57E91065748; Sat, 30 Jan 2010 18:05:18 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 953D08FC13; Sat, 30 Jan 2010 18:05:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UI5IwK066555; Sat, 30 Jan 2010 18:05:18 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UI5IUY066552; Sat, 30 Jan 2010 18:05:18 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301805.o0UI5IUY066552@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:05:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203203 - projects/capabilities8/lib/libc/gen X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:05:18 -0000 Author: rwatson Date: Sat Jan 30 18:05:18 2010 New Revision: 203203 URL: http://svn.freebsd.org/changeset/base/203203 Log: Mege c169369 from the p4 TrustedBSD Capabilities branch to capabilities8: Rename caplibindex -> libcache Sponsored by: Google, Inc. Added: projects/capabilities8/lib/libc/gen/ld_libcache.c - copied unchanged from r203185, projects/capabilities8/lib/libc/gen/ld_caplibindex.c Deleted: projects/capabilities8/lib/libc/gen/ld_caplibindex.c Modified: projects/capabilities8/lib/libc/gen/Makefile.inc Modified: projects/capabilities8/lib/libc/gen/Makefile.inc ============================================================================== --- projects/capabilities8/lib/libc/gen/Makefile.inc Sat Jan 30 18:04:56 2010 (r203202) +++ projects/capabilities8/lib/libc/gen/Makefile.inc Sat Jan 30 18:05:18 2010 (r203203) @@ -20,7 +20,7 @@ SRCS+= __getosreldate.c __xuname.c \ getpeereid.c getprogname.c getpwent.c getttyent.c \ getusershell.c getvfsbyname.c glob.c \ initgroups.c isatty.c isinf.c isnan.c jrand48.c lcong48.c \ - ld_caplibindex.c ld_sandbox.c \ + ld_libcache.c ld_sandbox.c \ lockf.c lrand48.c mrand48.c nftw.c nice.c \ nlist.c nrand48.c opendir.c \ pause.c pmadvise.c popen.c posix_spawn.c \ Copied: projects/capabilities8/lib/libc/gen/ld_libcache.c (from r203185, projects/capabilities8/lib/libc/gen/ld_caplibindex.c) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/lib/libc/gen/ld_libcache.c Sat Jan 30 18:05:18 2010 (r203203, copy of r203185, projects/capabilities8/lib/libc/gen/ld_caplibindex.c) @@ -0,0 +1,43 @@ +/*- + * Copyright (c) 2008-2009 Robert N. M. Watson + * All rights reserved. + * + * WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED + * ON IN PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND + * UNEXPECTED WAYS. + * + * This software was developed at the University of Cambridge Computer + * Laboratory with support from a grant from Google, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include + +#pragma weak ld_caplibindex_lookup +int +ld_caplibindex_lookup(const char *libname, int *fdp) +{ + + errno = EOPNOTSUPP; + return (-1); +} From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:11:41 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DF0531065672; Sat, 30 Jan 2010 18:11:41 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CD39D8FC15; Sat, 30 Jan 2010 18:11:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIBfrR067977; Sat, 30 Jan 2010 18:11:41 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIBfhQ067967; Sat, 30 Jan 2010 18:11:41 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301811.o0UIBfhQ067967@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:11:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203204 - in projects/capabilities8: lib/libc/gen lib/libcapability libexec/rtld-elf libexec/rtld-elf-cap X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:11:42 -0000 Author: rwatson Date: Sat Jan 30 18:11:41 2010 New Revision: 203204 URL: http://svn.freebsd.org/changeset/base/203204 Log: Merge c169400 from the p4 TrustedBSD Capabilities branch to capabilities8: Rename many references to caplibinde to libcache, as that's a more accurate name for the functionality. This changes the host<->sandbox ABI so requires recompiling/reinstalling rtld/libcapability. Sponsored by: Google, Inc. Modified: projects/capabilities8/lib/libc/gen/Symbol.map projects/capabilities8/lib/libc/gen/ld_libcache.c projects/capabilities8/lib/libcapability/libcapability.h projects/capabilities8/lib/libcapability/libcapability_host.c projects/capabilities8/libexec/rtld-elf-cap/Symbol.map projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h projects/capabilities8/libexec/rtld-elf/rtld.c Modified: projects/capabilities8/lib/libc/gen/Symbol.map ============================================================================== --- projects/capabilities8/lib/libc/gen/Symbol.map Sat Jan 30 18:05:18 2010 (r203203) +++ projects/capabilities8/lib/libc/gen/Symbol.map Sat Jan 30 18:11:41 2010 (r203204) @@ -340,7 +340,7 @@ FBSD_1.1 { fts_read; fts_set; fts_set_clientptr; - ld_caplibindex_lookup; + ld_libcache_lookup; ld_insandbox; posix_spawn; posix_spawn_file_actions_addclose; Modified: projects/capabilities8/lib/libc/gen/ld_libcache.c ============================================================================== --- projects/capabilities8/lib/libc/gen/ld_libcache.c Sat Jan 30 18:05:18 2010 (r203203) +++ projects/capabilities8/lib/libc/gen/ld_libcache.c Sat Jan 30 18:11:41 2010 (r203204) @@ -33,9 +33,9 @@ #include -#pragma weak ld_caplibindex_lookup +#pragma weak ld_libcache_lookup int -ld_caplibindex_lookup(const char *libname, int *fdp) +ld_libcache_lookup(const char *libname, int *fdp) { errno = EOPNOTSUPP; Modified: projects/capabilities8/lib/libcapability/libcapability.h ============================================================================== --- projects/capabilities8/lib/libcapability/libcapability.h Sat Jan 30 18:05:18 2010 (r203203) +++ projects/capabilities8/lib/libcapability/libcapability.h Sat Jan 30 18:11:41 2010 (r203204) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#24 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#25 $ */ #ifndef _LIBCAPABILITY_H_ @@ -148,7 +148,7 @@ int lcs_sendrpc_rights(struct lc_host *l * Actually an rtld-elf-cap symbol, but declared here so it is available to * applications. */ -int ld_caplibindex_lookup(const char *libname, int *fdp); +int ld_libcache_lookup(const char *libname, int *fdp); int ld_insandbox(void); /* Modified: projects/capabilities8/lib/libcapability/libcapability_host.c ============================================================================== --- projects/capabilities8/lib/libcapability/libcapability_host.c Sat Jan 30 18:05:18 2010 (r203203) +++ projects/capabilities8/lib/libcapability/libcapability_host.c Sat Jan 30 18:11:41 2010 (r203204) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_host.c#22 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_host.c#23 $ */ #include @@ -214,7 +214,7 @@ lch_sandbox(int fd_sock, int fd_sandbox, sbuf_finish(sbufp); if (sbuf_overflowed(sbufp)) return; - if (setenv("LD_CAPLIBINDEX", sbuf_data(sbufp), 1) == -1) + if (setenv("LD_LIBCACHE", sbuf_data(sbufp), 1) == -1) return; sbuf_delete(sbufp); @@ -255,16 +255,16 @@ lch_startfd_libs(int fd_sandbox, const c bzero(lcsp, sizeof(*lcsp)); if (ld_insandbox()) { - if (ld_caplibindex_lookup(LD_ELF_CAP_SO, &fd_ldso) < 0) + if (ld_libcache_lookup(LD_ELF_CAP_SO, &fd_ldso) < 0) goto out_error; - if (ld_caplibindex_lookup(LIBC_SO, &fd_libc) < 0) + if (ld_libcache_lookup(LIBC_SO, &fd_libc) < 0) goto out_error; - if (ld_caplibindex_lookup(LIBCAPABILITY_SO, + if (ld_libcache_lookup(LIBCAPABILITY_SO, &fd_libcapability) < 0) goto out_error; - if (ld_caplibindex_lookup(LIBSBUF_SO, &fd_libsbuf) < 0) + if (ld_libcache_lookup(LIBSBUF_SO, &fd_libsbuf) < 0) goto out_error; - if (ld_caplibindex_lookup(_PATH_DEVNULL, &fd_devnull) < 0) + if (ld_libcache_lookup(_PATH_DEVNULL, &fd_devnull) < 0) goto out_error; } else { fd_ldso = open(PATH_LD_ELF_CAP_SO "/" LD_ELF_CAP_SO, Modified: projects/capabilities8/libexec/rtld-elf-cap/Symbol.map ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/Symbol.map Sat Jan 30 18:05:18 2010 (r203203) +++ projects/capabilities8/libexec/rtld-elf-cap/Symbol.map Sat Jan 30 18:11:41 2010 (r203204) @@ -3,6 +3,6 @@ */ FBSD_1.1 { - ld_caplibindex_lookup; + ld_libcache_lookup; ld_insandbox; }; Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 Sat Jan 30 18:05:18 2010 (r203203) +++ projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 Sat Jan 30 18:11:41 2010 (r203204) @@ -68,7 +68,7 @@ the different environments. Interprets the .Dv LD_CAPLIBINDEX environmental variable set by sandbox start routines, and implements -.Fn ld_caplibindex_lookup , +.Fn ld_libcache_lookup , allowing file descriptors for binaries and libraries passed across .Xr fexecve 2 to be used by Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c Sat Jan 30 18:05:18 2010 (r203203) +++ projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c Sat Jan 30 18:11:41 2010 (r203204) @@ -55,21 +55,21 @@ __FBSDID("$FreeBSD$"); #include #include "rtld.h" -#include "rtld_caplibindex.h" +#include "rtld_libcache.h" -struct libindex_entry { +struct libcache_entry { char *lie_name; int lie_fd; - TAILQ_ENTRY(libindex_entry) lie_list; + TAILQ_ENTRY(libcache_entry) lie_list; }; -static TAILQ_HEAD(, libindex_entry) ld_caplibindex_list = - TAILQ_HEAD_INITIALIZER(ld_caplibindex_list); +static TAILQ_HEAD(, libcache_entry) ld_libcache_list = + TAILQ_HEAD_INITIALIZER(ld_libcache_list); static void -ld_caplibindex_add(const char *name, const char *fdnumber) +ld_libcache_add(const char *name, const char *fdnumber) { - struct libindex_entry *liep; + struct libcache_entry *liep; long long l; char *endp; @@ -83,15 +83,15 @@ ld_caplibindex_add(const char *name, con liep = xmalloc(sizeof(*liep)); liep->lie_name = xstrdup(name); liep->lie_fd = l; - TAILQ_INSERT_TAIL(&ld_caplibindex_list, liep, lie_list); + TAILQ_INSERT_TAIL(&ld_libcache_list, liep, lie_list); } int -ld_caplibindex_lookup(const char *libname, int *fdp) +ld_libcache_lookup(const char *libname, int *fdp) { - struct libindex_entry *liep; + struct libcache_entry *liep; - TAILQ_FOREACH(liep, &ld_caplibindex_list, lie_list) { + TAILQ_FOREACH(liep, &ld_libcache_list, lie_list) { if (strcmp(liep->lie_name, libname) == 0) { *fdp = liep->lie_fd; return (0); @@ -101,17 +101,17 @@ ld_caplibindex_lookup(const char *libnam } void -ld_caplibindex_init(const char *caplibindex) +ld_libcache_init(const char *libcache) { - char *caplibindex_copy, *caplibindex_tofree; + char *libcache_copy, *libcache_tofree; char *entry, *fdnumber; - caplibindex_copy = caplibindex_tofree = xstrdup(caplibindex); - while ((entry = strsep(&caplibindex_copy, ",")) != NULL) { + libcache_copy = libcache_tofree = xstrdup(libcache); + while ((entry = strsep(&libcache_copy, ",")) != NULL) { fdnumber = strsep(&entry, ":"); if (fdnumber == NULL) continue; - ld_caplibindex_add(entry, fdnumber); + ld_libcache_add(entry, fdnumber); } - free(caplibindex_tofree); + free(libcache_tofree); } Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h Sat Jan 30 18:05:18 2010 (r203203) +++ projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h Sat Jan 30 18:11:41 2010 (r203204) @@ -34,7 +34,7 @@ #ifndef RTLD_CAPLIBINDEX_H #define RTLD_CAPLIBINDEX_H -int ld_caplibindex_lookup(const char *libname, int *fdp); -void ld_caplibindex_init(const char *caplibindex); +int ld_libcache_lookup(const char *libname, int *fdp); +void ld_libcache_init(const char *libcache); #endif /* !RTLD_CAPLIBINDEX_H */ Modified: projects/capabilities8/libexec/rtld-elf/rtld.c ============================================================================== --- projects/capabilities8/libexec/rtld-elf/rtld.c Sat Jan 30 18:05:18 2010 (r203203) +++ projects/capabilities8/libexec/rtld-elf/rtld.c Sat Jan 30 18:11:41 2010 (r203204) @@ -60,7 +60,7 @@ #include "rtld_tls.h" #ifdef IN_RTLD_CAP -#include "rtld_caplibindex.h" +#include "rtld_libcache.h" #include "rtld_sandbox.h" #endif @@ -192,7 +192,7 @@ static char *ld_elf_hints_path; /* Envir static char *ld_tracing; /* Called from ldd to print libs */ static char *ld_utrace; /* Use utrace() to log events. */ #ifdef IN_RTLD_CAP -static char *ld_caplibindex; +static char *ld_libcache; #endif static Obj_Entry *obj_list; /* Head of linked list of shared objects */ static Obj_Entry **obj_tail; /* Link field of last object in list */ @@ -245,7 +245,7 @@ static func_ptr_type exports[] = { (func_ptr_type) &_rtld_atfork_pre, (func_ptr_type) &_rtld_atfork_post, #ifdef IN_RTLD_CAP - (func_ptr_type) &ld_caplibindex_lookup, + (func_ptr_type) &ld_libcache_lookup, (func_ptr_type) &ld_insandbox, #endif NULL @@ -439,7 +439,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_ } ld_debug = getenv(LD_ "DEBUG"); #ifdef IN_RTLD_CAP - ld_caplibindex = getenv(LD_ "CAPLIBINDEX"); + ld_libcache = getenv(LD_ "LIBCACHE"); #else libmap_disable = getenv(LD_ "LIBMAP_DISABLE") != NULL; libmap_override = getenv(LD_ "LIBMAP"); @@ -554,8 +554,8 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_ sym_zero.st_value = -(uintptr_t)obj_main->relocbase; #ifdef IN_RTLD_CAP - if (ld_caplibindex != NULL) - ld_caplibindex_init(ld_caplibindex); + if (ld_libcache != NULL) + ld_libcache_init(ld_libcache); #endif #ifndef IN_RTLD_CAP @@ -1632,8 +1632,8 @@ load_object(const char *name, const Obj_ return NULL; } path = xstrdup(name); - if (ld_caplibindex_lookup(path, &fd) < 0) { - _rtld_error("Unable to find \"%s\" in LD_CAPLIBINDEX", path); + if (ld_libcache_lookup(path, &fd) < 0) { + _rtld_error("Unable to find \"%s\" in LD_LIBCACHE", path); return NULL; } #else From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:14:01 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9D535106566C; Sat, 30 Jan 2010 18:14:01 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8C5828FC0A; Sat, 30 Jan 2010 18:14:01 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIE1gQ068539; Sat, 30 Jan 2010 18:14:01 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIE1pL068533; Sat, 30 Jan 2010 18:14:01 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301814.o0UIE1pL068533@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:14:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203205 - in projects/capabilities8: lib/libc/gen libexec/rtld-elf libexec/rtld-elf-cap X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:14:01 -0000 Author: rwatson Date: Sat Jan 30 18:14:01 2010 New Revision: 203205 URL: http://svn.freebsd.org/changeset/base/203205 Log: Merge c169401 from the p4 TrustedBSD Capabilities branch to capabilities8: Update further reference to LD_CAPLIBINDEX -> LD_LIBCACHE. Add public interface for inserting libraries into the library cache: ld_libcache_add(3), which is implemented by rtld when in a sandbox, and returns EOPNOTSUPP if not. Comment on two known limitations of the libcache code. Sponsored by: Google, Inc. Modified: projects/capabilities8/lib/libc/gen/Symbol.map projects/capabilities8/lib/libc/gen/ld_libcache.c projects/capabilities8/libexec/rtld-elf-cap/Symbol.map projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c projects/capabilities8/libexec/rtld-elf/rtld.c Modified: projects/capabilities8/lib/libc/gen/Symbol.map ============================================================================== --- projects/capabilities8/lib/libc/gen/Symbol.map Sat Jan 30 18:11:41 2010 (r203204) +++ projects/capabilities8/lib/libc/gen/Symbol.map Sat Jan 30 18:14:01 2010 (r203205) @@ -340,6 +340,7 @@ FBSD_1.1 { fts_read; fts_set; fts_set_clientptr; + ld_libcache_add; ld_libcache_lookup; ld_insandbox; posix_spawn; Modified: projects/capabilities8/lib/libc/gen/ld_libcache.c ============================================================================== --- projects/capabilities8/lib/libc/gen/ld_libcache.c Sat Jan 30 18:11:41 2010 (r203204) +++ projects/capabilities8/lib/libc/gen/ld_libcache.c Sat Jan 30 18:14:01 2010 (r203205) @@ -33,6 +33,15 @@ #include +#pragma weak ld_libcache_add +int +ld_libcache_add(const char *libname, int fd) +{ + + errno = EOPNOTSUPP; + return (-1); +} + #pragma weak ld_libcache_lookup int ld_libcache_lookup(const char *libname, int *fdp) Modified: projects/capabilities8/libexec/rtld-elf-cap/Symbol.map ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/Symbol.map Sat Jan 30 18:11:41 2010 (r203204) +++ projects/capabilities8/libexec/rtld-elf-cap/Symbol.map Sat Jan 30 18:14:01 2010 (r203205) @@ -3,6 +3,7 @@ */ FBSD_1.1 { + ld_libcache_add; ld_libcache_lookup; ld_insandbox; }; Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c Sat Jan 30 18:11:41 2010 (r203204) +++ projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c Sat Jan 30 18:14:01 2010 (r203205) @@ -35,15 +35,20 @@ __FBSDID("$FreeBSD$"); /* - * When running in a capability sandbox, rtld-elf-cap will be passed a set of - * open file descriptors to potentially useful libraries, along with an index - * to these in the LD_CAPLIBINDEX environmental variable. These routines - * parse that index, and allow lookups by library name. A typical string - * might be: + * rtld maintains a cache of library file descriptors, which is passed from + * host to sandbox at exec()-time in order to avoid the need for direct file + * system access from within sandboxes. When rtld starts, it inspects + * LD_LIBCACHE to find library descriptors passed from the host. This + * variable maps file descriptor numbers to library names: * * 6:libc.so.7,7:libm.so.5 * * In the event of ambiguity, the earliest entry will be matched. + * + * XXXRW: There should be locking around the libcache list. + * + * XXXRW: ld_libcache_lookup() should dup the fd before returning it so that + * the caller is responsible for managing the returned fd reference. */ #include @@ -66,10 +71,27 @@ struct libcache_entry { static TAILQ_HEAD(, libcache_entry) ld_libcache_list = TAILQ_HEAD_INITIALIZER(ld_libcache_list); -static void -ld_libcache_add(const char *name, const char *fdnumber) +/* + * Add a library to the library cache. + */ +void +ld_libcache_add(const char *name, int fd) { struct libcache_entry *liep; + + liep = xmalloc(sizeof(*liep)); + liep->lie_name = xstrdup(name); + liep->lie_fd = fd; + TAILQ_INSERT_TAIL(&ld_libcache_list, liep, lie_list); +} + +/* + * Add a library to the library cache, with file descriptor passed as a + * string. Used internally when parsing LD_LIBCACHE. + */ +static void +ld_libcache_add_string(const char *name, const char *fdnumber) +{ long long l; char *endp; @@ -80,12 +102,14 @@ ld_libcache_add(const char *name, const if (l < 0 || l > INT_MAX || *endp != '\0') return; - liep = xmalloc(sizeof(*liep)); - liep->lie_name = xstrdup(name); - liep->lie_fd = l; - TAILQ_INSERT_TAIL(&ld_libcache_list, liep, lie_list); + ld_libcache_add(name, l); } +/* + * Given a library name, return its file descriptor (if defined). Arguably, + * we should dup the cache-owned fd rather than returning it directly to the + * caller. + */ int ld_libcache_lookup(const char *libname, int *fdp) { @@ -100,6 +124,9 @@ ld_libcache_lookup(const char *libname, return (-1); } +/* + * Initialize the library cache given the LD_LIBCACHE environmental variable. + */ void ld_libcache_init(const char *libcache) { @@ -111,7 +138,7 @@ ld_libcache_init(const char *libcache) fdnumber = strsep(&entry, ":"); if (fdnumber == NULL) continue; - ld_libcache_add(entry, fdnumber); + ld_libcache_add_string(entry, fdnumber); } free(libcache_tofree); } Modified: projects/capabilities8/libexec/rtld-elf/rtld.c ============================================================================== --- projects/capabilities8/libexec/rtld-elf/rtld.c Sat Jan 30 18:11:41 2010 (r203204) +++ projects/capabilities8/libexec/rtld-elf/rtld.c Sat Jan 30 18:14:01 2010 (r203205) @@ -245,6 +245,7 @@ static func_ptr_type exports[] = { (func_ptr_type) &_rtld_atfork_pre, (func_ptr_type) &_rtld_atfork_post, #ifdef IN_RTLD_CAP + (func_ptr_type) &ld_libcache_add, (func_ptr_type) &ld_libcache_lookup, (func_ptr_type) &ld_insandbox, #endif From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:15:31 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A61F0106566B; Sat, 30 Jan 2010 18:15:31 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7C6798FC14; Sat, 30 Jan 2010 18:15:31 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIFVIc068913; Sat, 30 Jan 2010 18:15:31 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIFV7F068909; Sat, 30 Jan 2010 18:15:31 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301815.o0UIFV7F068909@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:15:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203206 - in projects/capabilities8/libexec: rtld-elf rtld-elf-cap X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:15:31 -0000 Author: rwatson Date: Sat Jan 30 18:15:31 2010 New Revision: 203206 URL: http://svn.freebsd.org/changeset/base/203206 Log: Merge c169402 from the p4 TrustedBSD Capabilities branch to capabilities8: Convert more references to caplibindex into libcache references. Sponsored by: Google, Inc. Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h projects/capabilities8/libexec/rtld-elf/rtld.c Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 Sat Jan 30 18:14:01 2010 (r203205) +++ projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 Sat Jan 30 18:15:31 2010 (r203206) @@ -66,7 +66,7 @@ This makes it easy a single binary to se the different environments. .It Interprets the -.Dv LD_CAPLIBINDEX +.Dv LD_LIBCACHE environmental variable set by sandbox start routines, and implements .Fn ld_libcache_lookup , allowing file descriptors for binaries and libraries passed across @@ -106,7 +106,7 @@ WARNING: THIS IS EXPERIMENTAL SECURITY S PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND UNEXPECTED WAYS. .Pp The format of -.Dv LD_CAPLIBINDEX +.Dv LD_LIBCACHE is not documented, and may change. .Sh AUTHORS .Nm Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h Sat Jan 30 18:14:01 2010 (r203205) +++ projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.h Sat Jan 30 18:15:31 2010 (r203206) @@ -31,10 +31,11 @@ * SUCH DAMAGE. */ -#ifndef RTLD_CAPLIBINDEX_H -#define RTLD_CAPLIBINDEX_H +#ifndef RTLD_LIBCACHE_H +#define RTLD_LIBCACHE_H +int ld_libcache_add(const char *libname, int fd); int ld_libcache_lookup(const char *libname, int *fdp); void ld_libcache_init(const char *libcache); -#endif /* !RTLD_CAPLIBINDEX_H */ +#endif /* !RTLD_LIBCACHE_H */ Modified: projects/capabilities8/libexec/rtld-elf/rtld.c ============================================================================== --- projects/capabilities8/libexec/rtld-elf/rtld.c Sat Jan 30 18:14:01 2010 (r203205) +++ projects/capabilities8/libexec/rtld-elf/rtld.c Sat Jan 30 18:15:31 2010 (r203206) @@ -435,7 +435,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_ die(); } #ifdef IN_RTLD_CAP - unsetenv(LD_ "CAPLIBINDEX"); + unsetenv(LD_ "LIBCACHE"); #endif } ld_debug = getenv(LD_ "DEBUG"); From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:16:57 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C355106566B; Sat, 30 Jan 2010 18:16:57 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7C7D28FC0C; Sat, 30 Jan 2010 18:16:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIGvBn069255; Sat, 30 Jan 2010 18:16:57 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIGvtW069253; Sat, 30 Jan 2010 18:16:57 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301816.o0UIGvtW069253@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:16:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203207 - projects/capabilities8/libexec/rtld-elf-cap X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:16:57 -0000 Author: rwatson Date: Sat Jan 30 18:16:57 2010 New Revision: 203207 URL: http://svn.freebsd.org/changeset/base/203207 Log: Merge (partial) c169404 from the p4 TrustedBSD Capabilities branch to capabilities8: Do offer a return code from ld_libcache_add(), as the caller will expect it when coming from outside of rtld. Excluded: In FreeBSD 9, need to use FBSD_1.2. Sponsored by: Google, Inc. Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c Sat Jan 30 18:15:31 2010 (r203206) +++ projects/capabilities8/libexec/rtld-elf-cap/rtld_libcache.c Sat Jan 30 18:16:57 2010 (r203207) @@ -74,7 +74,7 @@ static TAILQ_HEAD(, libcache_entry) ld_l /* * Add a library to the library cache. */ -void +int ld_libcache_add(const char *name, int fd) { struct libcache_entry *liep; @@ -83,6 +83,7 @@ ld_libcache_add(const char *name, int fd liep->lie_name = xstrdup(name); liep->lie_fd = fd; TAILQ_INSERT_TAIL(&ld_libcache_list, liep, lie_list); + return (0); } /* From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:18:38 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 972EA106566B; Sat, 30 Jan 2010 18:18:38 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 879238FC0A; Sat, 30 Jan 2010 18:18:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIIcf2069732; Sat, 30 Jan 2010 18:18:38 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIIcJc069729; Sat, 30 Jan 2010 18:18:38 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301818.o0UIIcJc069729@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:18:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203209 - projects/capabilities8/sys/amd64/conf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:18:38 -0000 Author: rwatson Date: Sat Jan 30 18:18:38 2010 New Revision: 203209 URL: http://svn.freebsd.org/changeset/base/203209 Log: Merge c169594 from the p4 TrustedBSD Capabilities branch to capabilities8: Add reference kernel config for amd64 capabilities work. Sponsored by: Google, Inc. Added: projects/capabilities8/sys/amd64/conf/CAPABILITIES Added: projects/capabilities8/sys/amd64/conf/CAPABILITIES ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/sys/amd64/conf/CAPABILITIES Sat Jan 30 18:18:38 2010 (r203209) @@ -0,0 +1,4 @@ +include GENERIC +options CAPABILITIES +options PROCDESC +options KDTRACE_HOOKS From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:30:12 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AE8F71065670; Sat, 30 Jan 2010 18:30:12 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9D9138FC12; Sat, 30 Jan 2010 18:30:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIUCtN072294; Sat, 30 Jan 2010 18:30:12 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIUCTT072289; Sat, 30 Jan 2010 18:30:12 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301830.o0UIUCTT072289@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:30:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203210 - in projects/capabilities8: lib/csu/amd64 lib/csu/common lib/csu/i386-elf libexec/rtld-elf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:30:12 -0000 Author: rwatson Date: Sat Jan 30 18:30:12 2010 New Revision: 203210 URL: http://svn.freebsd.org/changeset/base/203210 Log: Merge c169737 from the p4 TrustedBSD Capabilities branch to capabilities8: Add a _capstart() to crt.o which calls the [weak symbol] cap_main(); this fixes the problem where rtld on amd64 gets the stack wrong when entering cap_main() Submitted by: Jonathan Anderson Modified: projects/capabilities8/lib/csu/amd64/crt1.c projects/capabilities8/lib/csu/common/crtbrand.c projects/capabilities8/lib/csu/i386-elf/crt1_c.c projects/capabilities8/libexec/rtld-elf/rtld.c Modified: projects/capabilities8/lib/csu/amd64/crt1.c ============================================================================== --- projects/capabilities8/lib/csu/amd64/crt1.c Sat Jan 30 18:18:38 2010 (r203209) +++ projects/capabilities8/lib/csu/amd64/crt1.c Sat Jan 30 18:30:12 2010 (r203210) @@ -43,7 +43,9 @@ typedef void (*fptr)(void); extern void _fini(void); extern void _init(void); extern int main(int, char **, char **); +extern int cap_main(int, char **, char **) __attribute__((weak)); extern void _start(char **, void (*)(void)); +extern void _capstart(char **, void (*)(void)); #ifdef GCRT extern void _mcleanup(void); @@ -92,4 +94,42 @@ __asm__("eprol:"); exit( main(argc, argv, env) ); } + +/* The Capsicum entry function. */ +void +_capstart(char **ap, void (*cleanup)(void)) +{ + int argc; + char **argv; + char **env; + const char *s; + + argc = *(long *)(void *)ap; + argv = ap + 1; + env = ap + 2 + argc; + environ = env; + if (argc > 0 && argv[0] != NULL) { + __progname = argv[0]; + for (s = __progname; *s != '\0'; s++) + if (*s == '/') + __progname = s + 1; + } + + if (&_DYNAMIC != NULL) + atexit(cleanup); + else + _init_tls(); + +#ifdef GCRT + atexit(_mcleanup); +#endif + atexit(_fini); +#ifdef GCRT +/* monstartup(&eprol, &etext); +__asm__("eprol:");*/ /* XXX: does this interfere with profiling? */ +#endif + _init(); + exit( cap_main(argc, argv, env) ); +} + __asm__(".ident\t\"$FreeBSD$\""); Modified: projects/capabilities8/lib/csu/common/crtbrand.c ============================================================================== --- projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 18:18:38 2010 (r203209) +++ projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 18:30:12 2010 (r203210) @@ -27,6 +27,7 @@ __FBSDID("$FreeBSD$"); #include +#include #define ABI_VENDOR "FreeBSD" #define ABI_SECTION ".note.ABI-tag" @@ -50,3 +51,12 @@ static const struct { ABI_VENDOR, __FreeBSD_version }; + +int cap_main(int argc, char **argv, char **env) +{ + const char warning[] = + "ERROR: attempting to run a regular binary in capability mode.\n\nIf you wish to run a binary in a sandbox, you must provide a cap_main() function which takes the same arguments as main().\n"; + + write(2, warning, sizeof(warning)); +} + Modified: projects/capabilities8/lib/csu/i386-elf/crt1_c.c ============================================================================== --- projects/capabilities8/lib/csu/i386-elf/crt1_c.c Sat Jan 30 18:18:38 2010 (r203209) +++ projects/capabilities8/lib/csu/i386-elf/crt1_c.c Sat Jan 30 18:30:12 2010 (r203210) @@ -45,7 +45,9 @@ typedef void (*fptr)(void); extern void _fini(void); extern void _init(void); extern int main(int, char **, char **); +extern int cap_main(int, char **, char **) __attribute__((weak)); extern void _start(char *, ...); +extern void _capstart(char *, ...); #ifdef GCRT extern void _mcleanup(void); @@ -92,4 +94,47 @@ __asm__("eprol:"); exit( main(argc, argv, env) ); } + +/* The Capsicum entry function. */ +void +_capstart(char *ap, ...) +{ + fptr cleanup; + int argc; + char **argv; + char **env; + const char *s; + +#ifdef __GNUC__ + __asm__("and $0xfffffff0,%esp"); +#endif + cleanup = get_rtld_cleanup(); + argv = ≈ + argc = *(long *)(void *)(argv - 1); + env = argv + argc + 1; + environ = env; + if (argc > 0 && argv[0] != NULL) { + __progname = argv[0]; + for (s = __progname; *s != '\0'; s++) + if (*s == '/') + __progname = s + 1; + } + + if (&_DYNAMIC != NULL) + atexit(cleanup); + else + _init_tls(); + +#ifdef GCRT + atexit(_mcleanup); +#endif + atexit(_fini); +#ifdef GCRT +/* monstartup(&eprol, &etext); +__asm__("eprol:");*/ /* XXX: does this interfere with profiling? */ +#endif + _init(); + exit( cap_main(argc, argv, env) ); +} + __asm(".hidden _start1"); Modified: projects/capabilities8/libexec/rtld-elf/rtld.c ============================================================================== --- projects/capabilities8/libexec/rtld-elf/rtld.c Sat Jan 30 18:18:38 2010 (r203209) +++ projects/capabilities8/libexec/rtld-elf/rtld.c Sat Jan 30 18:30:12 2010 (r203210) @@ -106,7 +106,7 @@ static bool donelist_check(DoneList *, c static void errmsg_restore(char *); static char *errmsg_save(void); #ifdef IN_RTLD_CAP -static void *find_cap_main(const Obj_Entry *); +static void *find_capstart(const Obj_Entry *); #else static void *fill_search_info(const char *, size_t, void *); static char *find_library(const char *, const Obj_Entry *); @@ -348,7 +348,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_ #ifdef IN_RTLD_CAP struct stat sb; Elf_Auxinfo aux_execfd; - void *cap_main_ptr; + void *capstart_ptr; #endif Elf_Auxinfo *aux_info[AT_COUNT]; int i; @@ -647,12 +647,12 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_ * point, prefer that to the ELF default entry point. Otherwise, use the * ELF default. */ - cap_main_ptr = find_cap_main(obj_main); - if (cap_main_ptr == NULL) { - _rtld_error("cap_main not found"); + capstart_ptr = find_capstart(obj_main); + if (capstart_ptr == NULL) { + _rtld_error("_capstart not found; has the binary been compiled with -rdynamic?"); die(); } - return (func_ptr_type) cap_main_ptr; + return (func_ptr_type) capstart_ptr; #else return (func_ptr_type) obj_main->entry; #endif @@ -824,15 +824,15 @@ origin_subst(const char *real, const cha #ifdef IN_RTLD_CAP static void * -find_cap_main(const Obj_Entry *obj) +find_capstart(const Obj_Entry *obj) { - const char *cap_main_str = "cap_main"; + const char *capstart_str = "_capstart"; const Elf_Sym *def; const Obj_Entry *defobj; unsigned long hash; - hash = elf_hash(cap_main_str); - def = symlook_default(cap_main_str, hash, obj, &defobj, NULL, + hash = elf_hash(capstart_str); + def = symlook_default(capstart_str, hash, obj, &defobj, NULL, SYMLOOK_IN_PLT); if (def == NULL) return (NULL); From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:33:11 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0AA8F1065672; Sat, 30 Jan 2010 18:33:11 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EF4F58FC13; Sat, 30 Jan 2010 18:33:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIXAh4072990; Sat, 30 Jan 2010 18:33:10 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIXA5o072988; Sat, 30 Jan 2010 18:33:10 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301833.o0UIXA5o072988@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:33:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203211 - projects/capabilities8/lib/csu/common X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:33:11 -0000 Author: rwatson Date: Sat Jan 30 18:33:10 2010 New Revision: 203211 URL: http://svn.freebsd.org/changeset/base/203211 Log: Merge c169761 from the p4 TrustedBSD Capabilities branch to capabilities8: Since we're using write() rather than err(), we need to actually return something from cap_main() Submitted by: Jonathan Anderson Modified: projects/capabilities8/lib/csu/common/crtbrand.c Modified: projects/capabilities8/lib/csu/common/crtbrand.c ============================================================================== --- projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 18:30:12 2010 (r203210) +++ projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 18:33:10 2010 (r203211) @@ -58,5 +58,6 @@ int cap_main(int argc, char **argv, char "ERROR: attempting to run a regular binary in capability mode.\n\nIf you wish to run a binary in a sandbox, you must provide a cap_main() function which takes the same arguments as main().\n"; write(2, warning, sizeof(warning)); + return 1; } From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:35:56 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 062AC1065670; Sat, 30 Jan 2010 18:35:56 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E9BC08FC27; Sat, 30 Jan 2010 18:35:55 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIZtrh073622; Sat, 30 Jan 2010 18:35:55 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIZtXk073618; Sat, 30 Jan 2010 18:35:55 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301835.o0UIZtXk073618@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:35:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203212 - in projects/capabilities8/lib/csu: amd64 common i386-elf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:35:56 -0000 Author: rwatson Date: Sat Jan 30 18:35:55 2010 New Revision: 203212 URL: http://svn.freebsd.org/changeset/base/203212 Log: Merge c170404 from the p4 TrustedBSD Capabilities branch to capabilities8: cap_main and _capstart for both i386 and amd64. Submitted by: Jonathan Anderson Modified: projects/capabilities8/lib/csu/amd64/crt1.c projects/capabilities8/lib/csu/common/crtbrand.c projects/capabilities8/lib/csu/i386-elf/crt1_c.c Modified: projects/capabilities8/lib/csu/amd64/crt1.c ============================================================================== --- projects/capabilities8/lib/csu/amd64/crt1.c Sat Jan 30 18:33:10 2010 (r203211) +++ projects/capabilities8/lib/csu/amd64/crt1.c Sat Jan 30 18:35:55 2010 (r203212) @@ -31,6 +31,7 @@ #endif /* lint */ #include +#include #include "libc_private.h" #include "crtbrand.c" @@ -95,6 +96,45 @@ __asm__("eprol:"); } + +/* The Capsicum entry function. */ +void +_capstart(char **ap, void (*cleanup)(void)) +{ + int argc; + char **argv; + char **env; + const char *s; + + argc = *(long *)(void *)ap; + argv = ap + 1; + env = ap + 2 + argc; + environ = env; + if (argc > 0 && argv[0] != NULL) { + __progname = argv[0]; + for (s = __progname; *s != '\0'; s++) + if (*s == '/') + __progname = s + 1; + } + + if (&_DYNAMIC != NULL) + atexit(cleanup); + else + _init_tls(); + +#ifdef GCRT + atexit(_mcleanup); +#endif + atexit(_fini); +#ifdef GCRT +/* monstartup(&eprol, &etext);*/ +/*__asm__("eprol:");*/ /* JA hope and pray... */ +#endif + _init(); + exit( cap_main(argc, argv, env) ); +} + + /* The Capsicum entry function. */ void _capstart(char **ap, void (*cleanup)(void)) Modified: projects/capabilities8/lib/csu/common/crtbrand.c ============================================================================== --- projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 18:33:10 2010 (r203211) +++ projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 18:35:55 2010 (r203212) @@ -52,10 +52,25 @@ static const struct { __FreeBSD_version }; + + +int cap_main(int argc, char **argv, char **env) +{ + const char warning[] = + "ERROR: attempting to run a regular binary in capability mode!\n\nIf you want to run a binary in a sandbox, you must provide a cap_main() function, which takes the same arguments as main().\n"; + + write(2, warning, sizeof(warning)); +} + + int cap_main(int argc, char **argv, char **env) { const char warning[] = - "ERROR: attempting to run a regular binary in capability mode.\n\nIf you wish to run a binary in a sandbox, you must provide a cap_main() function which takes the same arguments as main().\n"; + "ERROR: attempting to run a regular binary in capability mode." + "\n\n" + "If you wish to run a binary in a sandbox, you must provide a " + "cap_main() function which takes the same arguments as main()." + "\n"; write(2, warning, sizeof(warning)); return 1; Modified: projects/capabilities8/lib/csu/i386-elf/crt1_c.c ============================================================================== --- projects/capabilities8/lib/csu/i386-elf/crt1_c.c Sat Jan 30 18:33:10 2010 (r203211) +++ projects/capabilities8/lib/csu/i386-elf/crt1_c.c Sat Jan 30 18:35:55 2010 (r203212) @@ -130,6 +130,51 @@ _capstart(char *ap, ...) #endif atexit(_fini); #ifdef GCRT + monstartup(&eprol, &etext); +__asm__("eprol:"); +#endif + _init(); + exit( cap_main(argc, argv, env) ); +} + + + + +/* The Capsicum entry function. */ +void +_capstart(char *ap, ...) +{ + fptr cleanup; + int argc; + char **argv; + char **env; + const char *s; + +#ifdef __GNUC__ + __asm__("and $0xfffffff0,%esp"); +#endif + cleanup = get_rtld_cleanup(); + argv = ≈ + argc = *(long *)(void *)(argv - 1); + env = argv + argc + 1; + environ = env; + if (argc > 0 && argv[0] != NULL) { + __progname = argv[0]; + for (s = __progname; *s != '\0'; s++) + if (*s == '/') + __progname = s + 1; + } + + if (&_DYNAMIC != NULL) + atexit(cleanup); + else + _init_tls(); + +#ifdef GCRT + atexit(_mcleanup); +#endif + atexit(_fini); +#ifdef GCRT /* monstartup(&eprol, &etext); __asm__("eprol:");*/ /* XXX: does this interfere with profiling? */ #endif From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:43:54 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 82D5B106566C; Sat, 30 Jan 2010 18:43:54 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 72E1F8FC08; Sat, 30 Jan 2010 18:43:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIhsQe075395; Sat, 30 Jan 2010 18:43:54 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIhsAv075391; Sat, 30 Jan 2010 18:43:54 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301843.o0UIhsAv075391@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:43:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203213 - in projects/capabilities8/lib/csu: amd64 common i386-elf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:43:54 -0000 Author: rwatson Date: Sat Jan 30 18:43:54 2010 New Revision: 203213 URL: http://svn.freebsd.org/changeset/base/203213 Log: Merge c170405 from the p4 TrustedBSD Capabilities branch to capabilities8: Removed the multiple definitions which snuck in here Submitted by: Jonathan Anderson Modified: projects/capabilities8/lib/csu/amd64/crt1.c projects/capabilities8/lib/csu/common/crtbrand.c projects/capabilities8/lib/csu/i386-elf/crt1_c.c Modified: projects/capabilities8/lib/csu/amd64/crt1.c ============================================================================== --- projects/capabilities8/lib/csu/amd64/crt1.c Sat Jan 30 18:35:55 2010 (r203212) +++ projects/capabilities8/lib/csu/amd64/crt1.c Sat Jan 30 18:43:54 2010 (r203213) @@ -134,42 +134,4 @@ _capstart(char **ap, void (*cleanup)(voi exit( cap_main(argc, argv, env) ); } - -/* The Capsicum entry function. */ -void -_capstart(char **ap, void (*cleanup)(void)) -{ - int argc; - char **argv; - char **env; - const char *s; - - argc = *(long *)(void *)ap; - argv = ap + 1; - env = ap + 2 + argc; - environ = env; - if (argc > 0 && argv[0] != NULL) { - __progname = argv[0]; - for (s = __progname; *s != '\0'; s++) - if (*s == '/') - __progname = s + 1; - } - - if (&_DYNAMIC != NULL) - atexit(cleanup); - else - _init_tls(); - -#ifdef GCRT - atexit(_mcleanup); -#endif - atexit(_fini); -#ifdef GCRT -/* monstartup(&eprol, &etext); -__asm__("eprol:");*/ /* XXX: does this interfere with profiling? */ -#endif - _init(); - exit( cap_main(argc, argv, env) ); -} - __asm__(".ident\t\"$FreeBSD$\""); Modified: projects/capabilities8/lib/csu/common/crtbrand.c ============================================================================== --- projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 18:35:55 2010 (r203212) +++ projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 18:43:54 2010 (r203213) @@ -62,17 +62,3 @@ int cap_main(int argc, char **argv, char write(2, warning, sizeof(warning)); } - -int cap_main(int argc, char **argv, char **env) -{ - const char warning[] = - "ERROR: attempting to run a regular binary in capability mode." - "\n\n" - "If you wish to run a binary in a sandbox, you must provide a " - "cap_main() function which takes the same arguments as main()." - "\n"; - - write(2, warning, sizeof(warning)); - return 1; -} - Modified: projects/capabilities8/lib/csu/i386-elf/crt1_c.c ============================================================================== --- projects/capabilities8/lib/csu/i386-elf/crt1_c.c Sat Jan 30 18:35:55 2010 (r203212) +++ projects/capabilities8/lib/csu/i386-elf/crt1_c.c Sat Jan 30 18:43:54 2010 (r203213) @@ -137,49 +137,4 @@ __asm__("eprol:"); exit( cap_main(argc, argv, env) ); } - - - -/* The Capsicum entry function. */ -void -_capstart(char *ap, ...) -{ - fptr cleanup; - int argc; - char **argv; - char **env; - const char *s; - -#ifdef __GNUC__ - __asm__("and $0xfffffff0,%esp"); -#endif - cleanup = get_rtld_cleanup(); - argv = ≈ - argc = *(long *)(void *)(argv - 1); - env = argv + argc + 1; - environ = env; - if (argc > 0 && argv[0] != NULL) { - __progname = argv[0]; - for (s = __progname; *s != '\0'; s++) - if (*s == '/') - __progname = s + 1; - } - - if (&_DYNAMIC != NULL) - atexit(cleanup); - else - _init_tls(); - -#ifdef GCRT - atexit(_mcleanup); -#endif - atexit(_fini); -#ifdef GCRT -/* monstartup(&eprol, &etext); -__asm__("eprol:");*/ /* XXX: does this interfere with profiling? */ -#endif - _init(); - exit( cap_main(argc, argv, env) ); -} - __asm(".hidden _start1"); From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:45:11 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CCC411065672; Sat, 30 Jan 2010 18:45:10 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A33318FC0A; Sat, 30 Jan 2010 18:45:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIjADS075808; Sat, 30 Jan 2010 18:45:10 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIjAMb075804; Sat, 30 Jan 2010 18:45:10 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301845.o0UIjAMb075804@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 18:45:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203214 - in projects/capabilities8/lib/csu: amd64 common i386-elf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:45:11 -0000 Author: rwatson Date: Sat Jan 30 18:45:10 2010 New Revision: 203214 URL: http://svn.freebsd.org/changeset/base/203214 Log: Merge c170545 from the p4 TrustedBSD Capabilities branch to capabilities8: Some CSU cleanup Submitted by: Jonathan Anderson Modified: projects/capabilities8/lib/csu/amd64/crt1.c projects/capabilities8/lib/csu/common/crtbrand.c projects/capabilities8/lib/csu/i386-elf/crt1_c.c Modified: projects/capabilities8/lib/csu/amd64/crt1.c ============================================================================== --- projects/capabilities8/lib/csu/amd64/crt1.c Sat Jan 30 18:43:54 2010 (r203213) +++ projects/capabilities8/lib/csu/amd64/crt1.c Sat Jan 30 18:45:10 2010 (r203214) @@ -44,7 +44,6 @@ typedef void (*fptr)(void); extern void _fini(void); extern void _init(void); extern int main(int, char **, char **); -extern int cap_main(int, char **, char **) __attribute__((weak)); extern void _start(char **, void (*)(void)); extern void _capstart(char **, void (*)(void)); Modified: projects/capabilities8/lib/csu/common/crtbrand.c ============================================================================== --- projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 18:43:54 2010 (r203213) +++ projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 18:45:10 2010 (r203214) @@ -54,11 +54,14 @@ static const struct { -int cap_main(int argc, char **argv, char **env) +extern int cap_main(int, char **, char **) __attribute__((weak)); +int cap_main(__unused int argc, __unused char **argv, __unused char **env) { const char warning[] = "ERROR: attempting to run a regular binary in capability mode!\n\nIf you want to run a binary in a sandbox, you must provide a cap_main() function, which takes the same arguments as main().\n"; write(2, warning, sizeof(warning)); + + return -1; } Modified: projects/capabilities8/lib/csu/i386-elf/crt1_c.c ============================================================================== --- projects/capabilities8/lib/csu/i386-elf/crt1_c.c Sat Jan 30 18:43:54 2010 (r203213) +++ projects/capabilities8/lib/csu/i386-elf/crt1_c.c Sat Jan 30 18:45:10 2010 (r203214) @@ -45,7 +45,6 @@ typedef void (*fptr)(void); extern void _fini(void); extern void _init(void); extern int main(int, char **, char **); -extern int cap_main(int, char **, char **) __attribute__((weak)); extern void _start(char *, ...); extern void _capstart(char *, ...); @@ -130,8 +129,8 @@ _capstart(char *ap, ...) #endif atexit(_fini); #ifdef GCRT - monstartup(&eprol, &etext); -__asm__("eprol:"); +/* monstartup(&eprol, &etext); +__asm__("eprol:");*/ #endif _init(); exit( cap_main(argc, argv, env) ); From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 18:50:57 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE278106566B; Sat, 30 Jan 2010 18:50:57 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AE50D8FC25; Sat, 30 Jan 2010 18:50:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UIovUJ077081; Sat, 30 Jan 2010 18:50:57 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UIovGh077079; Sat, 30 Jan 2010 18:50:57 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001301850.o0UIovGh077079@svn.freebsd.org> From: Nathan Whitehorn Date: Sat, 30 Jan 2010 18:50:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203215 - projects/ppc64/sys/powerpc/powerpc X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 18:50:57 -0000 Author: nwhitehorn Date: Sat Jan 30 18:50:57 2010 New Revision: 203215 URL: http://svn.freebsd.org/changeset/base/203215 Log: Really fix setting argc. This problem should be properly fixed in kern_exec.c, which incorrectly uses suword() instead of suword32() to set nargvstr, but I am afraid of breaking sparc64. This should be revisited before merging. With this change, all statically linked binaries appear to be working correctly -- I can even compile things with gcc! Discussed with: Patrick Kerharo Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c ============================================================================== --- projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Sat Jan 30 18:45:10 2010 (r203214) +++ projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Sat Jan 30 18:50:57 2010 (r203215) @@ -524,7 +524,7 @@ exec_setregs(struct thread *td, u_long e * Emulate by setting the syscall return value cells. The * registers still have to be set for init's fork trampoline. */ - td->td_retval[0] = arginfo.ps_nargvstr; + td->td_retval[0] = *((register_t *)(&arginfo.ps_nargvstr)); td->td_retval[1] = (register_t)arginfo.ps_argvstr; tf->fixreg[3] = *((register_t *)(&arginfo.ps_nargvstr)); tf->fixreg[4] = (register_t)arginfo.ps_argvstr; From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:15:40 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CAA361065670; Sat, 30 Jan 2010 19:15:40 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B991E8FC08; Sat, 30 Jan 2010 19:15:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJFenY082598; Sat, 30 Jan 2010 19:15:40 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJFeKI082587; Sat, 30 Jan 2010 19:15:40 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301915.o0UJFeKI082587@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:15:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203216 - in projects/capabilities8/sys: amd64/conf kern sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:15:40 -0000 Author: rwatson Date: Sat Jan 30 19:15:40 2010 New Revision: 203216 URL: http://svn.freebsd.org/changeset/base/203216 Log: Merge c171017 from the p4 TrustedBSD Capabilities branch to capabilities8: Add openat(2) in capability mode. openat(2) is now permitted in capability mode, subject to the constraint that the relative path must not "escape" the FD that the lookup is being conducted relative to. This results in EPERM when in capability mode (no change otherwise). openat(2) also now wraps the resulting FD with a capability if the directory FD was a capability. The rights of the new capability are identical to those of the original. Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/amd64/conf/CAPABILITIES projects/capabilities8/sys/kern/capabilities.conf projects/capabilities8/sys/kern/init_sysent.c projects/capabilities8/sys/kern/kern_descrip.c projects/capabilities8/sys/kern/sys_capability.c projects/capabilities8/sys/kern/vfs_lookup.c projects/capabilities8/sys/kern/vfs_syscalls.c projects/capabilities8/sys/sys/capability.h projects/capabilities8/sys/sys/filedesc.h projects/capabilities8/sys/sys/namei.h Modified: projects/capabilities8/sys/amd64/conf/CAPABILITIES ============================================================================== --- projects/capabilities8/sys/amd64/conf/CAPABILITIES Sat Jan 30 18:50:57 2010 (r203215) +++ projects/capabilities8/sys/amd64/conf/CAPABILITIES Sat Jan 30 19:15:40 2010 (r203216) @@ -1,4 +1,9 @@ include GENERIC + options CAPABILITIES options PROCDESC options KDTRACE_HOOKS +options WITNESS +options KDB +options DDB + Modified: projects/capabilities8/sys/kern/capabilities.conf ============================================================================== --- projects/capabilities8/sys/kern/capabilities.conf Sat Jan 30 18:50:57 2010 (r203215) +++ projects/capabilities8/sys/kern/capabilities.conf Sat Jan 30 19:15:40 2010 (r203216) @@ -38,7 +38,7 @@ ## - sys_exit(2), abort2(2) and close(2) are very important. ## - Sorted alphabetically, please keep it that way. ## -## $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#21 $ +## $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#22 $ ## ## @@ -453,6 +453,12 @@ obreak olio_listio ## +## Allow openat(2), which we have constrained to prevent accessing files +## which are not "under" the directory FD given to the syscall. +## +openat + +## ## Allow poll(2), which will be scoped by capability rights. ## ## XXXRW: Perhaps we don't need the OpenBSD version? Modified: projects/capabilities8/sys/kern/init_sysent.c ============================================================================== --- projects/capabilities8/sys/kern/init_sysent.c Sat Jan 30 18:50:57 2010 (r203215) +++ projects/capabilities8/sys/kern/init_sysent.c Sat Jan 30 19:15:40 2010 (r203216) @@ -533,7 +533,7 @@ struct sysent sysent[] = { { AS(mkdirat_args), (sy_call_t *)mkdirat, AUE_MKDIRAT, NULL, 0, 0, 0 }, /* 496 = mkdirat */ { AS(mkfifoat_args), (sy_call_t *)mkfifoat, AUE_MKFIFOAT, NULL, 0, 0, 0 }, /* 497 = mkfifoat */ { AS(mknodat_args), (sy_call_t *)mknodat, AUE_MKNODAT, NULL, 0, 0, 0 }, /* 498 = mknodat */ - { AS(openat_args), (sy_call_t *)openat, AUE_OPENAT_RWTC, NULL, 0, 0, 0 }, /* 499 = openat */ + { AS(openat_args), (sy_call_t *)openat, AUE_OPENAT_RWTC, NULL, 0, 0, SYF_CAPENABLED }, /* 499 = openat */ { AS(readlinkat_args), (sy_call_t *)readlinkat, AUE_READLINKAT, NULL, 0, 0, 0 }, /* 500 = readlinkat */ { AS(renameat_args), (sy_call_t *)renameat, AUE_RENAMEAT, NULL, 0, 0, 0 }, /* 501 = renameat */ { AS(symlinkat_args), (sy_call_t *)symlinkat, AUE_SYMLINKAT, NULL, 0, 0, 0 }, /* 502 = symlinkat */ Modified: projects/capabilities8/sys/kern/kern_descrip.c ============================================================================== --- projects/capabilities8/sys/kern/kern_descrip.c Sat Jan 30 18:50:57 2010 (r203215) +++ projects/capabilities8/sys/kern/kern_descrip.c Sat Jan 30 19:15:40 2010 (r203216) @@ -1544,13 +1544,31 @@ fdavail(struct thread *td, int n) int falloc(struct thread *td, struct file **resultfp, int *resultfd) { + return _falloc(td, resultfp, resultfd, 1); +} + +/* + * Create a new open file structure and, optionally, allocate a file decriptor + * for the process that refers to it. + */ +int +_falloc(struct thread *td, struct file **resultfp, int *resultfd, + int addfd) +{ struct proc *p = td->td_proc; struct file *fp; - int error, i; + int error, i = -1; int maxuserfiles = maxfiles - (maxfiles / 20); static struct timeval lastfail; static int curfail; + /* + * Cowardly refuse to create a referenceless file: if we're not adding + * the file to the process descriptor array, then the calling code + * MUST expect a pointer to be returned. + */ + if (!addfd && !resultfp) return (error = EINVAL); + fp = uma_zalloc(file_zone, M_WAITOK | M_ZERO); if ((openfiles >= maxuserfiles && priv_check(td, PRIV_MAXFILES) != 0) || @@ -1562,14 +1580,16 @@ falloc(struct thread *td, struct file ** uma_zfree(file_zone, fp); return (ENFILE); } - atomic_add_int(&openfiles, 1); + if (addfd) + atomic_add_int(&openfiles, 1); /* + * If addfd: * If the process has file descriptor zero open, add the new file * descriptor to the list of open files at that point, otherwise * put it at the front of the list of open files. */ - refcount_init(&fp->f_count, 1); + refcount_init(&fp->f_count, (addfd > 0)); if (resultfp) fhold(fp); fp->f_cred = crhold(td->td_ucred); @@ -1578,16 +1598,20 @@ falloc(struct thread *td, struct file ** fp->f_vnode = NULL; LIST_INIT(&fp->f_caps); fp->f_capcount = 0; - FILEDESC_XLOCK(p->p_fd); - if ((error = fdalloc(td, 0, &i))) { - FILEDESC_XUNLOCK(p->p_fd); - fdrop(fp, td); - if (resultfp) + + if (addfd) { + FILEDESC_XLOCK(p->p_fd); + if ((error = fdalloc(td, 0, &i))) { + FILEDESC_XUNLOCK(p->p_fd); fdrop(fp, td); - return (error); + if (resultfp) + fdrop(fp, td); + return (error); + } + p->p_fd->fd_ofiles[i] = fp; + FILEDESC_XUNLOCK(p->p_fd); } - p->p_fd->fd_ofiles[i] = fp; - FILEDESC_XUNLOCK(p->p_fd); + if (resultfp) *resultfp = fp; if (resultfd) Modified: projects/capabilities8/sys/kern/sys_capability.c ============================================================================== --- projects/capabilities8/sys/kern/sys_capability.c Sat Jan 30 18:50:57 2010 (r203215) +++ projects/capabilities8/sys/kern/sys_capability.c Sat Jan 30 19:15:40 2010 (r203216) @@ -50,7 +50,7 @@ #include "opt_capabilities.h" #include -__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#26 $"); +__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#27 $"); #include #include @@ -278,28 +278,52 @@ cap_getmode(struct thread *td, struct ca int cap_new(struct thread *td, struct cap_new_args *uap) { - struct capability *c, *c_old; - struct file *fp, *fp_cap, *fp_object; - int error, fd_cap; + int error, capfd; + int fd = uap->fd; + struct file *fp, *cap; + cap_rights_t rights = uap->rights; - AUDIT_ARG_FD(uap->fd); - AUDIT_ARG_RIGHTS(uap->rights); - if ((uap->rights | CAP_MASK_VALID) != CAP_MASK_VALID) - return (EINVAL); - - c = uma_zalloc(capability_zone, M_WAITOK | M_ZERO); + AUDIT_ARG_FD(fd); + AUDIT_ARG_RIGHTS(rights); /* * We always allow creating a capability referencing an existing * descriptor or capability, even if it's not of much use to the * application. */ - error = fget(td, uap->fd, 0, &fp); - if (error) - goto fail; + error = fget(td, fd, 0, &fp); + if (error) return (error); AUDIT_ARG_FILE(td->td_proc, fp); + error = kern_capwrap(td, fp, rights, &cap, &capfd); + + /* + * Release our reference to the file (another one has been taken for + * the capability's sake if necessary). + */ + fdrop(fp, td); + + return error; +} + + +/* + * Create a capability to wrap around an existing file. + */ +int kern_capwrap(struct thread *td, struct file *fp, cap_rights_t rights, + struct file **cap, int *capfd) +{ + struct capability *c, *c_old; + struct file *fp_object; + int error; + + if ((rights | CAP_MASK_VALID) != CAP_MASK_VALID) + return (EINVAL); + + c = uma_zalloc(capability_zone, M_WAITOK | M_ZERO); + + /* * If a new capability is being derived from an existing capability, * then the new capability rights must be a subset of the existing @@ -307,18 +331,18 @@ cap_new(struct thread *td, struct cap_ne */ if (fp->f_type == DTYPE_CAPABILITY) { c_old = fp->f_data; - if ((c_old->cap_rights | uap->rights) != c_old->cap_rights) { + if ((c_old->cap_rights | rights) != c_old->cap_rights) { error = ENOTCAPABLE; - goto fail2; + goto fail; } } /* * Allocate a new file descriptor to hang the capability off. */ - error = falloc(td, &fp_cap, &fd_cap); + error = falloc(td, cap, capfd); if (error) - goto fail2; + goto fail; /* * Rather than nesting capabilities, directly reference the object an @@ -332,10 +356,10 @@ cap_new(struct thread *td, struct cap_ne else fp_object = fp; fhold(fp_object); - c->cap_rights = uap->rights; + c->cap_rights = rights; c->cap_object = fp_object; - c->cap_file = fp_cap; - finit(fp_cap, fp->f_flag, DTYPE_CAPABILITY, c, &capability_ops); + c->cap_file = *cap; + finit(*cap, fp->f_flag, DTYPE_CAPABILITY, c, &capability_ops); /* * Add this capability to the per-file list of referencing @@ -345,13 +369,15 @@ cap_new(struct thread *td, struct cap_ne LIST_INSERT_HEAD(&fp_object->f_caps, c, cap_filelist); fp_object->f_capcount++; mtx_pool_unlock(mtxpool_sleep, fp_object); - td->td_retval[0] = fd_cap; - fdrop(fp, td); - fdrop(fp_cap, td); + td->td_retval[0] = *capfd; + + /* + * Release our private reference (the proc filedesc still has one). + */ + fdrop(*cap, td); + return (0); -fail2: - fdrop(fp, td); fail: uma_zfree(capability_zone, c); return (error); Modified: projects/capabilities8/sys/kern/vfs_lookup.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_lookup.c Sat Jan 30 18:50:57 2010 (r203215) +++ projects/capabilities8/sys/kern/vfs_lookup.c Sat Jan 30 19:15:40 2010 (r203216) @@ -140,9 +140,11 @@ namei(struct nameidata *ndp) int vfslocked; #ifdef KDB - if (td->td_ucred->cr_flags & CRED_FLAG_CAPMODE) { + if ((td->td_ucred->cr_flags & CRED_FLAG_CAPMODE) + && (ndp->ni_dirfd == AT_FDCWD)) + { printf("namei: pid %d proc %s performed namei in capability " - "mode\n", p->p_pid, p->p_comm); + "mode (and it's not *at())\n", p->p_pid, p->p_comm); kdb_backtrace(); } #endif @@ -478,6 +480,7 @@ lookup(struct nameidata *ndp) int dvfslocked; /* VFS Giant state for parent */ int tvfslocked; int lkflags_save; + int insidebasedir = 0; /* we're under the *at() base */ /* * Setup: break out flag bits into variables. @@ -504,6 +507,11 @@ lookup(struct nameidata *ndp) cnp->cn_lkflags = LK_SHARED; else cnp->cn_lkflags = LK_EXCLUSIVE; + + /* we do not allow absolute lookups in capability mode */ + if(ndp->ni_basedir && (ndp->ni_startdir == ndp->ni_rootdir)) + return (error = EPERM); + dp = ndp->ni_startdir; ndp->ni_startdir = NULLVP; vn_lock(dp, @@ -572,6 +580,11 @@ dirloop: goto bad; } + + /* Check to see if we're at the *at directory */ + if(dp == ndp->ni_basedir) insidebasedir = 1; + + /* * Check for degenerate name (e.g. / or "") * which is a way of talking about a directory, @@ -626,6 +639,13 @@ dirloop: goto bad; } for (;;) { + /* attempting to wander out of the *at root */ + if(dp == ndp->ni_basedir) + { + error = EPERM; + goto bad; + } + for (pr = cnp->cn_cred->cr_prison; pr != NULL; pr = pr->pr_parent) if (dp == pr->pr_root) @@ -886,6 +906,16 @@ nextname: VOP_UNLOCK(dp, 0); success: /* + * If we're in capability mode and the syscall was *at(), ensure + * that the *at() base was part of the path + */ + if(ndp->ni_basedir && !insidebasedir) + { + error = EPERM; + goto bad; + } + + /* * Because of lookup_shared we may have the vnode shared locked, but * the caller may want it to be exclusively locked. */ Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 18:50:57 2010 (r203215) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:15:40 2010 (r203216) @@ -1083,6 +1083,8 @@ kern_open(struct thread *td, char *path, return (kern_openat(td, AT_FDCWD, path, pathseg, flags, mode)); } + + int kern_openat(struct thread *td, int fd, char *path, enum uio_seg pathseg, int flags, int mode) @@ -1090,7 +1092,7 @@ kern_openat(struct thread *td, int fd, c struct proc *p = td->td_proc; struct filedesc *fdp = p->p_fd; struct file *fp; - struct vnode *vp; + struct vnode *vp, *base = 0; struct vattr vat; struct mount *mp; int cmode; @@ -1099,6 +1101,7 @@ kern_openat(struct thread *td, int fd, c struct flock lf; struct nameidata nd; int vfslocked; + cap_rights_t baserights = -1; AUDIT_ARG_FFLAGS(flags); AUDIT_ARG_MODE(mode); @@ -1115,16 +1118,69 @@ kern_openat(struct thread *td, int fd, c else flags = FFLAGS(flags); - error = falloc(td, &nfp, &indx); + /* get capability info of base FD */ + if (fd >= 0) + { + struct file *f; + const cap_rights_t LOOKUP_RIGHTS = CAP_LOOKUP | CAP_ATBASE; + + FILEDESC_SLOCK(fdp); + + error = fgetcap(td, fd, &f); + if (error == 0) { + /* FD is a capability; get rights and unwrap */ + struct file *real_fp = NULL; + + baserights = cap_rights(f); + error = cap_fextract(f, LOOKUP_RIGHTS, &real_fp); + + /* hold the underlying file, not the capability */ + if (error == 0) fhold(real_fp); + fdrop(f, td); + + f = real_fp; + } + else if (error == EINVAL) + /* not a capability; get the real file pointer */ + error = fget(td, fd, LOOKUP_RIGHTS, &f); + + + + /* if in capability mode, get base vnode (for namei) */ + if (!error && (td->td_ucred->cr_flags & CRED_FLAG_CAPMODE)) { + base = f->f_vnode; + vref(base); + } + + + /* don't need to hold the base any more */ + if (f != NULL) fdrop(f, td); + + if (error) { + FILEDESC_SUNLOCK(fdp); + return (error); + } + else + FILEDESC_SUNLOCK(fdp); + } + + + /* + * allocate the file descriptor, but only add it to the descriptor + * array if fd isn't a capability (in which case we'll add the + * capability instead, later) + */ + error = _falloc(td, &nfp, &indx, (baserights == -1)); if (error) return (error); - /* An extra reference on `nfp' has been held for us by falloc(). */ + + /* An extra reference on `nfp' has been held for us by _falloc(). */ fp = nfp; /* Set the flags early so the finit in devfs can pick them up. */ fp->f_flag = flags & FMASK; cmode = ((mode &~ fdp->fd_cmask) & ALLPERMS) &~ S_ISTXT; - NDINIT_AT(&nd, LOOKUP, FOLLOW | AUDITVNODE1 | MPSAFE, pathseg, path, fd, - td); + NDINIT_ATBASE(&nd, LOOKUP, FOLLOW | AUDITVNODE1 | MPSAFE, pathseg, + path, fd, base, td); td->td_dupfd = -1; /* XXX check for fdopen */ error = vn_open(&nd, &flags, cmode, fp); if (error) { @@ -1133,11 +1189,8 @@ kern_openat(struct thread *td, int fd, c * wonderous happened deep below and we just pass it up * pretending we know what we do. */ - if (error == ENXIO && fp->f_ops != &badfileops) { - fdrop(fp, td); - td->td_retval[0] = indx; - return (0); - } + if (error == ENXIO && fp->f_ops != &badfileops) + goto success; /* * handle special fdopen() case. bleh. dupfdopen() is @@ -1147,15 +1200,14 @@ kern_openat(struct thread *td, int fd, c if ((error == ENODEV || error == ENXIO) && td->td_dupfd >= 0 && /* XXX from fdopen */ (error = - dupfdopen(td, fdp, indx, td->td_dupfd, flags, error)) == 0) { - td->td_retval[0] = indx; - fdrop(fp, td); - return (0); - } + dupfdopen(td, fdp, indx, td->td_dupfd, flags, error)) == 0) + goto success; + /* * Clean up the descriptor, but only if another thread hadn't * replaced or closed it. */ + if (base) vrele(base); fdclose(fdp, fp, indx, td); fdrop(fp, td); @@ -1213,15 +1265,28 @@ kern_openat(struct thread *td, int fd, c goto bad; } VFS_UNLOCK_GIANT(vfslocked); + +success: + if (baserights != -1) { + /* wrap the result in a capability */ + struct file *cap; + + error = kern_capwrap(td, fp, baserights, &cap, &indx); + if (error) goto bad_unlocked; + } + /* * Release our private reference, leaving the one associated with * the descriptor table intact. */ + if (base) vrele(base); fdrop(fp, td); td->td_retval[0] = indx; return (0); bad: VFS_UNLOCK_GIANT(vfslocked); +bad_unlocked: + if (base) vrele(base); fdclose(fdp, fp, indx, td); fdrop(fp, td); return (error); Modified: projects/capabilities8/sys/sys/capability.h ============================================================================== --- projects/capabilities8/sys/sys/capability.h Sat Jan 30 18:50:57 2010 (r203215) +++ projects/capabilities8/sys/sys/capability.h Sat Jan 30 19:15:40 2010 (r203216) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/sys/sys/capability.h#25 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/sys/sys/capability.h#26 $ */ /* @@ -96,7 +96,8 @@ #define CAP_TTYHOOK 0x0001000000000000ULL /* register tty hook */ #define CAP_FCHDIR 0x0002000000000000ULL /* fchdir(2) */ #define CAP_FSCK 0x0004000000000000ULL /* sysctl_ffs_fsck */ -#define CAP_MASK_VALID 0x0007ffffffffffffULL +#define CAP_ATBASE 0x0008000000000000ULL /* openat(2), etc. */ +#define CAP_MASK_VALID 0x000fffffffffffffULL /* * Notes: @@ -138,6 +139,13 @@ #ifdef _KERNEL struct file; +struct thread; + +/* + * Create a capability to wrap a file object. + */ +int kern_capwrap(struct thread *td, struct file *fp, cap_rights_t rights, + struct file **cap, int *capfd); /* * Given a file descriptor that may be a capability, check the requested Modified: projects/capabilities8/sys/sys/filedesc.h ============================================================================== --- projects/capabilities8/sys/sys/filedesc.h Sat Jan 30 18:50:57 2010 (r203215) +++ projects/capabilities8/sys/sys/filedesc.h Sat Jan 30 19:15:40 2010 (r203216) @@ -112,6 +112,8 @@ int closef(struct file *fp, struct threa int dupfdopen(struct thread *td, struct filedesc *fdp, int indx, int dfd, int mode, int error); int falloc(struct thread *td, struct file **resultfp, int *resultfd); +int _falloc(struct thread *td, struct file **resultfp, int *resultfd, + int addfd); int fdalloc(struct thread *td, int minfd, int *result); int fdavail(struct thread *td, int n); int fdcheckstd(struct thread *td); Modified: projects/capabilities8/sys/sys/namei.h ============================================================================== --- projects/capabilities8/sys/sys/namei.h Sat Jan 30 18:50:57 2010 (r203215) +++ projects/capabilities8/sys/sys/namei.h Sat Jan 30 19:15:40 2010 (r203216) @@ -70,6 +70,7 @@ struct nameidata { struct vnode *ni_rootdir; /* logical root directory */ struct vnode *ni_topdir; /* logical top directory */ int ni_dirfd; /* starting directory for *at functions */ + struct vnode *ni_basedir; /* root for capability-mode *at */ /* * Results: returned from/manipulated by lookup */ @@ -151,11 +152,13 @@ struct nameidata { * Initialization of a nameidata structure. */ #define NDINIT(ndp, op, flags, segflg, namep, td) \ - NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, NULL, td) -#define NDINIT_AT(ndp, op, flags, segflg, namep, dirfd, td) \ - NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, NULL, td) -#define NDINIT_ATVP(ndp, op, flags, segflg, namep, vp, td) \ - NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, vp, td) + NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, NULL, NULL, td) +#define NDINIT_AT(ndp, op, flags, segflg, namep, dirfd, td) \ + NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, NULL, NULL, td) +#define NDINIT_ATBASE(ndp, op, flags, segflg, namep, dirfd, base, td) \ + NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, NULL, base, td) +#define NDINIT_ATVP(ndp, op, flags, segflg, namep, vp, td) \ + NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, vp, NULL, td) static __inline void NDINIT_ALL(struct nameidata *ndp, @@ -164,6 +167,7 @@ NDINIT_ALL(struct nameidata *ndp, const char *namep, int dirfd, struct vnode *startdir, + struct vnode *basedir, struct thread *td) { ndp->ni_cnd.cn_nameiop = op; @@ -172,6 +176,7 @@ NDINIT_ALL(struct nameidata *ndp, ndp->ni_dirp = namep; ndp->ni_dirfd = dirfd; ndp->ni_startdir = startdir; + ndp->ni_basedir = basedir; ndp->ni_cnd.cn_thread = td; } From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:16:41 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A69631065676; Sat, 30 Jan 2010 19:16:41 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 96E128FC0A; Sat, 30 Jan 2010 19:16:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJGf23082837; Sat, 30 Jan 2010 19:16:41 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJGfek082833; Sat, 30 Jan 2010 19:16:41 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301916.o0UJGfek082833@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:16:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203217 - projects/capabilities8/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:16:41 -0000 Author: rwatson Date: Sat Jan 30 19:16:41 2010 New Revision: 203217 URL: http://svn.freebsd.org/changeset/base/203217 Log: Merge c171267 from the p4 TrustedBSD Capabilities branch to capabilities8: Enable faccessat(2) in capability mode Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/kern/capabilities.conf projects/capabilities8/sys/kern/init_sysent.c projects/capabilities8/sys/kern/vfs_syscalls.c Modified: projects/capabilities8/sys/kern/capabilities.conf ============================================================================== --- projects/capabilities8/sys/kern/capabilities.conf Sat Jan 30 19:15:40 2010 (r203216) +++ projects/capabilities8/sys/kern/capabilities.conf Sat Jan 30 19:16:41 2010 (r203217) @@ -38,7 +38,7 @@ ## - sys_exit(2), abort2(2) and close(2) are very important. ## - Sorted alphabetically, please keep it that way. ## -## $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#22 $ +## $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#23 $ ## ## @@ -453,9 +453,10 @@ obreak olio_listio ## -## Allow openat(2), which we have constrained to prevent accessing files -## which are not "under" the directory FD given to the syscall. +## Allow faccessat(2) and openat(2), which we have constrained to prevent accessing +## files which are not "under" the directory FD given to the syscall. ## +faccessat openat ## Modified: projects/capabilities8/sys/kern/init_sysent.c ============================================================================== --- projects/capabilities8/sys/kern/init_sysent.c Sat Jan 30 19:15:40 2010 (r203216) +++ projects/capabilities8/sys/kern/init_sysent.c Sat Jan 30 19:16:41 2010 (r203217) @@ -523,7 +523,7 @@ struct sysent sysent[] = { { AS(cpuset_getid_args), (sy_call_t *)cpuset_getid, AUE_NULL, NULL, 0, 0, 0 }, /* 486 = cpuset_getid */ { AS(cpuset_getaffinity_args), (sy_call_t *)cpuset_getaffinity, AUE_NULL, NULL, 0, 0, 0 }, /* 487 = cpuset_getaffinity */ { AS(cpuset_setaffinity_args), (sy_call_t *)cpuset_setaffinity, AUE_NULL, NULL, 0, 0, 0 }, /* 488 = cpuset_setaffinity */ - { AS(faccessat_args), (sy_call_t *)faccessat, AUE_FACCESSAT, NULL, 0, 0, 0 }, /* 489 = faccessat */ + { AS(faccessat_args), (sy_call_t *)faccessat, AUE_FACCESSAT, NULL, 0, 0, SYF_CAPENABLED }, /* 489 = faccessat */ { AS(fchmodat_args), (sy_call_t *)fchmodat, AUE_FCHMODAT, NULL, 0, 0, 0 }, /* 490 = fchmodat */ { AS(fchownat_args), (sy_call_t *)fchownat, AUE_FCHOWNAT, NULL, 0, 0, 0 }, /* 491 = fchownat */ { AS(fexecve_args), (sy_call_t *)fexecve, AUE_FEXECVE, NULL, 0, 0, SYF_CAPENABLED }, /* 492 = fexecve */ Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:15:40 2010 (r203216) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:16:41 2010 (r203217) @@ -2219,7 +2219,7 @@ kern_accessat(struct thread *td, int fd, int flags, int mode) { struct ucred *cred, *tmpcred; - struct vnode *vp; + struct vnode *vp, *base = 0; struct nameidata nd; int vfslocked; int error; @@ -2238,8 +2238,25 @@ kern_accessat(struct thread *td, int fd, } else cred = tmpcred = td->td_ucred; AUDIT_ARG_VALUE(mode); - NDINIT_AT(&nd, LOOKUP, FOLLOW | LOCKSHARED | LOCKLEAF | MPSAFE | - AUDITVNODE1, pathseg, path, fd, td); + + /* + * if a relative base was specified and we're in capability mode, find + * the vnode of the base so that namei() can restrict itself accordingly + */ + if ((cred->cr_flags & CRED_FLAG_CAPMODE) && (fd >= 0)) { + + if ((error = fgetvp(td, fd, CAP_LOOKUP | CAP_ATBASE, &base))) + /* XXX: more CAP_FOO? */ + return (error); + + if ((error = vn_lock(base, LK_SHARED))) { + vrele (base); + return (error); + } + } + + NDINIT_ATBASE(&nd, LOOKUP, FOLLOW | LOCKSHARED | LOCKLEAF | MPSAFE | + AUDITVNODE1, pathseg, path, fd, base, td); if ((error = namei(&nd)) != 0) goto out1; vfslocked = NDHASGIANT(&nd); @@ -2254,6 +2271,7 @@ out1: td->td_ucred = cred; crfree(tmpcred); } + if (base) vput(base); return (error); } From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:20:36 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AD789106568B; Sat, 30 Jan 2010 19:20:36 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 84A728FC13; Sat, 30 Jan 2010 19:20:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJKaDO083732; Sat, 30 Jan 2010 19:20:36 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJKaiL083729; Sat, 30 Jan 2010 19:20:36 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001301920.o0UJKaiL083729@svn.freebsd.org> From: Nathan Whitehorn Date: Sat, 30 Jan 2010 19:20:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203218 - in projects/ppc64/sys: powerpc/powerpc sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:20:36 -0000 Author: nwhitehorn Date: Sat Jan 30 19:20:36 2010 New Revision: 203218 URL: http://svn.freebsd.org/changeset/base/203218 Log: Fix argc passing in an alternative way by changing nargvstr and nenvstr to be unsigned long instead of int. This preserves argument passing conventions on sparc64, and eliminates hacks on powerpc64. Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c projects/ppc64/sys/sys/exec.h Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c ============================================================================== --- projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Sat Jan 30 19:16:41 2010 (r203217) +++ projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Sat Jan 30 19:20:36 2010 (r203218) @@ -524,9 +524,9 @@ exec_setregs(struct thread *td, u_long e * Emulate by setting the syscall return value cells. The * registers still have to be set for init's fork trampoline. */ - td->td_retval[0] = *((register_t *)(&arginfo.ps_nargvstr)); + td->td_retval[0] = arginfo.ps_nargvstr; td->td_retval[1] = (register_t)arginfo.ps_argvstr; - tf->fixreg[3] = *((register_t *)(&arginfo.ps_nargvstr)); + tf->fixreg[3] = arginfo.ps_nargvstr; tf->fixreg[4] = (register_t)arginfo.ps_argvstr; tf->fixreg[5] = (register_t)arginfo.ps_envstr; tf->fixreg[6] = 0; /* auxillary vector */ Modified: projects/ppc64/sys/sys/exec.h ============================================================================== --- projects/ppc64/sys/sys/exec.h Sat Jan 30 19:16:41 2010 (r203217) +++ projects/ppc64/sys/sys/exec.h Sat Jan 30 19:20:36 2010 (r203218) @@ -48,9 +48,9 @@ */ struct ps_strings { char **ps_argvstr; /* first of 0 or more argument strings */ - unsigned int ps_nargvstr; /* the number of argument strings */ + unsigned long ps_nargvstr; /* the number of argument strings */ char **ps_envstr; /* first of 0 or more environment strings */ - unsigned int ps_nenvstr; /* the number of environment strings */ + unsigned long ps_nenvstr; /* the number of environment strings */ }; /* From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:23:56 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ACDB7106566B; Sat, 30 Jan 2010 19:23:56 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9D22C8FC1B; Sat, 30 Jan 2010 19:23:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJNu5W084533; Sat, 30 Jan 2010 19:23:56 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJNub1084499; Sat, 30 Jan 2010 19:23:56 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301923.o0UJNub1084499@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:23:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203219 - in projects/capabilities8/sys: kern sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:23:56 -0000 Author: rwatson Date: Sat Jan 30 19:23:56 2010 New Revision: 203219 URL: http://svn.freebsd.org/changeset/base/203219 Log: Merge c171323 from the p4 TrustedBSD Capabilities branch to capabilities8: Refactored out fgetbase(), which will be used for other syscalls besides faccessat() Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/kern/vfs_syscalls.c projects/capabilities8/sys/sys/capability.h projects/capabilities8/sys/sys/filedesc.h Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:20:36 2010 (r203218) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:23:56 2010 (r203219) @@ -160,6 +160,40 @@ getvnode_cap(struct filedesc *fdp, int f } /* + * Get the "base" vnode defined by a user file descriptor. + * + * Several *at() system calls are now supported in capability mode. This function + * finds out what their "*at base" vnode, which is needed by namei(), should be: + * + * 1. In non-capability (and thus unconstrained) mode, base = 0. + * 2. In capability mode, base is the vnode given by the fd parameter, subject to + * the condition that the supplied 'rights' parameter (OR'ed with CAP_LOOKUP + * and CAP_ATBASE) is satisfied. The vnode is returned with a shared lock. + */ +int +fgetbase(struct thread *td, int fd, cap_rights_t rights, struct vnode **base) +{ + if (!(td->td_ucred->cr_flags & CRED_FLAG_CAPMODE)) + base = 0; + + else { + int error; + + error = fgetvp(td, fd, rights | CAP_LOOKUP | CAP_ATBASE, base); + if (error) + return (error); + + if ((error = vn_lock(*base, LK_SHARED))) { + vrele(*base); + return (error); + } + } + + return 0; +} + + +/* * Sync each mounted filesystem. */ #ifndef _SYS_SYSPROTO_H_ @@ -2239,21 +2273,9 @@ kern_accessat(struct thread *td, int fd, cred = tmpcred = td->td_ucred; AUDIT_ARG_VALUE(mode); - /* - * if a relative base was specified and we're in capability mode, find - * the vnode of the base so that namei() can restrict itself accordingly - */ - if ((cred->cr_flags & CRED_FLAG_CAPMODE) && (fd >= 0)) { - - if ((error = fgetvp(td, fd, CAP_LOOKUP | CAP_ATBASE, &base))) - /* XXX: more CAP_FOO? */ - return (error); - - if ((error = vn_lock(base, LK_SHARED))) { - vrele (base); - return (error); - } - } + /* get *at base vnode for namei() */ + if ((error = fgetbase(td, fd, CAP_FSTAT, &base))) + return (error); NDINIT_ATBASE(&nd, LOOKUP, FOLLOW | LOCKSHARED | LOCKLEAF | MPSAFE | AUDITVNODE1, pathseg, path, fd, base, td); Modified: projects/capabilities8/sys/sys/capability.h ============================================================================== --- projects/capabilities8/sys/sys/capability.h Sat Jan 30 19:20:36 2010 (r203218) +++ projects/capabilities8/sys/sys/capability.h Sat Jan 30 19:23:56 2010 (r203219) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/sys/sys/capability.h#26 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/sys/sys/capability.h#27 $ */ /* @@ -52,7 +52,7 @@ #define CAP_GETSOCKNAME 0x0000000000000010ULL /* getsockname */ #define CAP_FCHFLAGS 0x0000000000000020ULL /* fchflags */ #define CAP_IOCTL 0x0000000000000040ULL /* ioctl */ -#define CAP_FSTAT 0x0000000000000080ULL /* fstat */ +#define CAP_FSTAT 0x0000000000000080ULL /* fstat, faccessat */ #define CAP_MMAP 0x0000000000000100ULL /* mmap */ #define CAP_FCNTL 0x0000000000000200ULL /* fcntl */ #define CAP_EVENT 0x0000000000000400ULL /* select/poll */ Modified: projects/capabilities8/sys/sys/filedesc.h ============================================================================== --- projects/capabilities8/sys/sys/filedesc.h Sat Jan 30 19:20:36 2010 (r203218) +++ projects/capabilities8/sys/sys/filedesc.h Sat Jan 30 19:23:56 2010 (r203219) @@ -130,6 +130,8 @@ struct filedesc_to_leader * int getvnode(struct filedesc *fdp, int fd, struct file **fpp); int getvnode_cap(struct filedesc *fdp, int fd, cap_rights_t rights, struct file **fpp); +int fgetbase(struct thread *td, int fd, cap_rights_t rights, + struct vnode **base); void mountcheckdirs(struct vnode *olddp, struct vnode *newdp); void setugidsafety(struct thread *td); From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:25:19 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F405D106566C; Sat, 30 Jan 2010 19:25:18 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E46178FC13; Sat, 30 Jan 2010 19:25:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJPIKp084866; Sat, 30 Jan 2010 19:25:18 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJPIhx084862; Sat, 30 Jan 2010 19:25:18 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301925.o0UJPIhx084862@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:25:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203220 - projects/capabilities8/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:25:19 -0000 Author: rwatson Date: Sat Jan 30 19:25:18 2010 New Revision: 203220 URL: http://svn.freebsd.org/changeset/base/203220 Log: Merge c171326 from the p4 TrustedBSD Capabilities branch to capabilities8: Enable fchmodat(2). Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/kern/capabilities.conf projects/capabilities8/sys/kern/init_sysent.c projects/capabilities8/sys/kern/vfs_syscalls.c Modified: projects/capabilities8/sys/kern/capabilities.conf ============================================================================== --- projects/capabilities8/sys/kern/capabilities.conf Sat Jan 30 19:23:56 2010 (r203219) +++ projects/capabilities8/sys/kern/capabilities.conf Sat Jan 30 19:25:18 2010 (r203220) @@ -38,7 +38,7 @@ ## - sys_exit(2), abort2(2) and close(2) are very important. ## - Sorted alphabetically, please keep it that way. ## -## $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#23 $ +## $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#24 $ ## ## @@ -453,10 +453,11 @@ obreak olio_listio ## -## Allow faccessat(2) and openat(2), which we have constrained to prevent accessing +## Allow some of the *at(2) calls, which we have constrained to prevent accessing ## files which are not "under" the directory FD given to the syscall. ## faccessat +fchmodat openat ## Modified: projects/capabilities8/sys/kern/init_sysent.c ============================================================================== --- projects/capabilities8/sys/kern/init_sysent.c Sat Jan 30 19:23:56 2010 (r203219) +++ projects/capabilities8/sys/kern/init_sysent.c Sat Jan 30 19:25:18 2010 (r203220) @@ -524,7 +524,7 @@ struct sysent sysent[] = { { AS(cpuset_getaffinity_args), (sy_call_t *)cpuset_getaffinity, AUE_NULL, NULL, 0, 0, 0 }, /* 487 = cpuset_getaffinity */ { AS(cpuset_setaffinity_args), (sy_call_t *)cpuset_setaffinity, AUE_NULL, NULL, 0, 0, 0 }, /* 488 = cpuset_setaffinity */ { AS(faccessat_args), (sy_call_t *)faccessat, AUE_FACCESSAT, NULL, 0, 0, SYF_CAPENABLED }, /* 489 = faccessat */ - { AS(fchmodat_args), (sy_call_t *)fchmodat, AUE_FCHMODAT, NULL, 0, 0, 0 }, /* 490 = fchmodat */ + { AS(fchmodat_args), (sy_call_t *)fchmodat, AUE_FCHMODAT, NULL, 0, 0, SYF_CAPENABLED }, /* 490 = fchmodat */ { AS(fchownat_args), (sy_call_t *)fchownat, AUE_FCHOWNAT, NULL, 0, 0, 0 }, /* 491 = fchownat */ { AS(fexecve_args), (sy_call_t *)fexecve, AUE_FEXECVE, NULL, 0, 0, SYF_CAPENABLED }, /* 492 = fexecve */ { AS(fstatat_args), (sy_call_t *)fstatat, AUE_FSTATAT, NULL, 0, 0, 0 }, /* 493 = fstatat */ Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:23:56 2010 (r203219) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:25:18 2010 (r203220) @@ -3042,13 +3042,20 @@ kern_fchmodat(struct thread *td, int fd, struct nameidata nd; int vfslocked; int follow; + struct vnode *base; AUDIT_ARG_MODE(mode); follow = (flag & AT_SYMLINK_NOFOLLOW) ? NOFOLLOW : FOLLOW; - NDINIT_AT(&nd, LOOKUP, follow | MPSAFE | AUDITVNODE1, pathseg, path, - fd, td); - if ((error = namei(&nd)) != 0) + if ((error = fgetbase(td, fd, CAP_FCHMOD, &base))) return (error); + + NDINIT_ATBASE(&nd, LOOKUP, follow | MPSAFE | AUDITVNODE1, pathseg, path, + fd, base, td); + error = namei(&nd); + if (base) vput(base); + if (error) + return (error); + vfslocked = NDHASGIANT(&nd); NDFREE(&nd, NDF_ONLY_PNBUF); error = setfmode(td, nd.ni_vp, mode); From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:26:35 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4E1E0106576B; Sat, 30 Jan 2010 19:26:35 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3EBF68FC21; Sat, 30 Jan 2010 19:26:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJQZrr085199; Sat, 30 Jan 2010 19:26:35 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJQZ70085197; Sat, 30 Jan 2010 19:26:35 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301926.o0UJQZ70085197@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:26:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203222 - projects/capabilities8/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:26:35 -0000 Author: rwatson Date: Sat Jan 30 19:26:34 2010 New Revision: 203222 URL: http://svn.freebsd.org/changeset/base/203222 Log: Merge c171327 from the p4 TrustedBSD Capabilities branch to capabilities8: We should, of course, be setting *base to 0, not the local variable base. Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/kern/vfs_syscalls.c Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:26:28 2010 (r203221) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:26:34 2010 (r203222) @@ -165,7 +165,7 @@ getvnode_cap(struct filedesc *fdp, int f * Several *at() system calls are now supported in capability mode. This function * finds out what their "*at base" vnode, which is needed by namei(), should be: * - * 1. In non-capability (and thus unconstrained) mode, base = 0. + * 1. In non-capability (and thus unconstrained) mode, *base = 0. * 2. In capability mode, base is the vnode given by the fd parameter, subject to * the condition that the supplied 'rights' parameter (OR'ed with CAP_LOOKUP * and CAP_ATBASE) is satisfied. The vnode is returned with a shared lock. @@ -174,7 +174,7 @@ int fgetbase(struct thread *td, int fd, cap_rights_t rights, struct vnode **base) { if (!(td->td_ucred->cr_flags & CRED_FLAG_CAPMODE)) - base = 0; + *base = 0; else { int error; From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:28:07 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7E7C3106566B; Sat, 30 Jan 2010 19:28:07 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6ED968FC1D; Sat, 30 Jan 2010 19:28:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJS7MC085564; Sat, 30 Jan 2010 19:28:07 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJS7iQ085562; Sat, 30 Jan 2010 19:28:07 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301928.o0UJS7iQ085562@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:28:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203223 - projects/capabilities8/contrib/tcpdump X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:28:07 -0000 Author: rwatson Date: Sat Jan 30 19:28:07 2010 New Revision: 203223 URL: http://svn.freebsd.org/changeset/base/203223 Log: Merge c172961 from the p4 TrustedBSD Capabilities branch to capabilities8: With higher warnings level, proper include of capability.h is now required. Sponsored by: Google, Inc. Modified: projects/capabilities8/contrib/tcpdump/tcpdump.c Modified: projects/capabilities8/contrib/tcpdump/tcpdump.c ============================================================================== --- projects/capabilities8/contrib/tcpdump/tcpdump.c Sat Jan 30 19:26:34 2010 (r203222) +++ projects/capabilities8/contrib/tcpdump/tcpdump.c Sat Jan 30 19:28:07 2010 (r203223) @@ -76,6 +76,7 @@ extern int SIZE_BUF; #include #endif /* WIN32 */ +#include #include "netdissect.h" #include "interface.h" From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:29:54 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 33D9E106568F; Sat, 30 Jan 2010 19:29:54 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 23BF78FC0C; Sat, 30 Jan 2010 19:29:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJTs3Q086019; Sat, 30 Jan 2010 19:29:54 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJTs9p086017; Sat, 30 Jan 2010 19:29:54 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301929.o0UJTs9p086017@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:29:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203225 - projects/capabilities8/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:29:54 -0000 Author: rwatson Date: Sat Jan 30 19:29:53 2010 New Revision: 203225 URL: http://svn.freebsd.org/changeset/base/203225 Log: Merge c172965 from the p4 TrustedBSD Capabilites branch to capabilities8: Make post fooat(2) capability support in vfs_syscalls.c compile when "options CAPABILITIES" is not present. Do a bit of style cleanup, and prefer NULL to 0 when talking about pointers. Sponsored by: Google, Inc. Modified: projects/capabilities8/sys/kern/vfs_syscalls.c Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:29:02 2010 (r203224) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:29:53 2010 (r203225) @@ -159,23 +159,26 @@ getvnode_cap(struct filedesc *fdp, int f return (0); } -/* +#ifdef CAPABILITIES +/*- * Get the "base" vnode defined by a user file descriptor. * - * Several *at() system calls are now supported in capability mode. This function - * finds out what their "*at base" vnode, which is needed by namei(), should be: + * Several *at() system calls are now supported in capability mode. This + * function finds out what their "*at base" vnode, which is needed by + * namei(), should be: * - * 1. In non-capability (and thus unconstrained) mode, *base = 0. - * 2. In capability mode, base is the vnode given by the fd parameter, subject to - * the condition that the supplied 'rights' parameter (OR'ed with CAP_LOOKUP - * and CAP_ATBASE) is satisfied. The vnode is returned with a shared lock. + * 1. In non-capability (and thus unconstrained) mode, *base = NULL. + * 2. In capability mode, base is the vnode given by the fd parameter, + * subject to the condition that the supplied 'rights' parameter (OR'ed + * with CAP_LOOKUP and CAP_ATBASE) is satisfied. The vnode is returned + * with a shared lock. */ int fgetbase(struct thread *td, int fd, cap_rights_t rights, struct vnode **base) { - if (!(td->td_ucred->cr_flags & CRED_FLAG_CAPMODE)) - *base = 0; + if (!(td->td_ucred->cr_flags & CRED_FLAG_CAPMODE)) + *base = NULL; else { int error; @@ -188,10 +191,9 @@ fgetbase(struct thread *td, int fd, cap_ return (error); } } - - return 0; + return (0); } - +#endif /* * Sync each mounted filesystem. @@ -1126,7 +1128,7 @@ kern_openat(struct thread *td, int fd, c struct proc *p = td->td_proc; struct filedesc *fdp = p->p_fd; struct file *fp; - struct vnode *vp, *base = 0; + struct vnode *vp, *base = NULL; struct vattr vat; struct mount *mp; int cmode; @@ -1152,9 +1154,9 @@ kern_openat(struct thread *td, int fd, c else flags = FFLAGS(flags); +#ifdef CAPABILITIES /* get capability info of base FD */ - if (fd >= 0) - { + if (fd >= 0) { struct file *f; const cap_rights_t LOOKUP_RIGHTS = CAP_LOOKUP | CAP_ATBASE; @@ -1169,35 +1171,32 @@ kern_openat(struct thread *td, int fd, c error = cap_fextract(f, LOOKUP_RIGHTS, &real_fp); /* hold the underlying file, not the capability */ - if (error == 0) fhold(real_fp); + if (error == 0) + fhold(real_fp); fdrop(f, td); f = real_fp; - } - else if (error == EINVAL) + } else if (error == EINVAL) /* not a capability; get the real file pointer */ error = fget(td, fd, LOOKUP_RIGHTS, &f); - - /* if in capability mode, get base vnode (for namei) */ if (!error && (td->td_ucred->cr_flags & CRED_FLAG_CAPMODE)) { base = f->f_vnode; vref(base); } - /* don't need to hold the base any more */ - if (f != NULL) fdrop(f, td); + if (f != NULL) + fdrop(f, td); if (error) { FILEDESC_SUNLOCK(fdp); return (error); - } - else + } else FILEDESC_SUNLOCK(fdp); } - +#endif /* * allocate the file descriptor, but only add it to the descriptor @@ -1241,7 +1240,10 @@ kern_openat(struct thread *td, int fd, c * Clean up the descriptor, but only if another thread hadn't * replaced or closed it. */ - if (base) vrele(base); +#ifdef CAPABILITIES + if (base) + vrele(base); +#endif fdclose(fdp, fp, indx, td); fdrop(fp, td); @@ -1301,26 +1303,35 @@ kern_openat(struct thread *td, int fd, c VFS_UNLOCK_GIANT(vfslocked); success: +#ifdef CAPABILITIES if (baserights != -1) { /* wrap the result in a capability */ struct file *cap; error = kern_capwrap(td, fp, baserights, &cap, &indx); - if (error) goto bad_unlocked; + if (error) + goto bad_unlocked; } +#endif /* * Release our private reference, leaving the one associated with * the descriptor table intact. */ - if (base) vrele(base); +#ifdef CAPABILITIES + if (base) + vrele(base); +#endif fdrop(fp, td); td->td_retval[0] = indx; return (0); bad: VFS_UNLOCK_GIANT(vfslocked); +#ifdef CAPABILITIES bad_unlocked: - if (base) vrele(base); + if (base) + vrele(base); +#endif fdclose(fdp, fp, indx, td); fdrop(fp, td); return (error); @@ -2253,7 +2264,7 @@ kern_accessat(struct thread *td, int fd, int flags, int mode) { struct ucred *cred, *tmpcred; - struct vnode *vp, *base = 0; + struct vnode *vp, *base = NULL; struct nameidata nd; int vfslocked; int error; @@ -2273,9 +2284,11 @@ kern_accessat(struct thread *td, int fd, cred = tmpcred = td->td_ucred; AUDIT_ARG_VALUE(mode); +#ifdef CAPABILITIES /* get *at base vnode for namei() */ if ((error = fgetbase(td, fd, CAP_FSTAT, &base))) return (error); +#endif NDINIT_ATBASE(&nd, LOOKUP, FOLLOW | LOCKSHARED | LOCKLEAF | MPSAFE | AUDITVNODE1, pathseg, path, fd, base, td); @@ -2293,7 +2306,10 @@ out1: td->td_ucred = cred; crfree(tmpcred); } - if (base) vput(base); +#ifdef CAPABILITIES + if (base) + vput(base); +#endif return (error); } @@ -3042,17 +3058,22 @@ kern_fchmodat(struct thread *td, int fd, struct nameidata nd; int vfslocked; int follow; - struct vnode *base; + struct vnode *base = NULL; AUDIT_ARG_MODE(mode); follow = (flag & AT_SYMLINK_NOFOLLOW) ? NOFOLLOW : FOLLOW; +#ifdef CAPABILITIES if ((error = fgetbase(td, fd, CAP_FCHMOD, &base))) return (error); +#endif - NDINIT_ATBASE(&nd, LOOKUP, follow | MPSAFE | AUDITVNODE1, pathseg, path, - fd, base, td); + NDINIT_ATBASE(&nd, LOOKUP, follow | MPSAFE | AUDITVNODE1, pathseg, + path, fd, base, td); error = namei(&nd); - if (base) vput(base); +#ifdef CAPABILITIES + if (base) + vput(base); +#endif if (error) return (error); From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:32:11 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B4D6210656D8; Sat, 30 Jan 2010 19:32:11 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A57AA8FC18; Sat, 30 Jan 2010 19:32:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJWBql086599; Sat, 30 Jan 2010 19:32:11 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJWBU1086597; Sat, 30 Jan 2010 19:32:11 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301932.o0UJWBU1086597@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:32:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203227 - projects/capabilities8/contrib/tcpdump X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:32:11 -0000 Author: rwatson Date: Sat Jan 30 19:32:11 2010 New Revision: 203227 URL: http://svn.freebsd.org/changeset/base/203227 Log: Merge c172967 from the p4 TrustedBSD Capabilities branch to capabilities8: Prefer tcpdump's own error() routine to err(). Sponsored by: Google, Inc. Modified: projects/capabilities8/contrib/tcpdump/tcpdump.c Modified: projects/capabilities8/contrib/tcpdump/tcpdump.c ============================================================================== --- projects/capabilities8/contrib/tcpdump/tcpdump.c Sat Jan 30 19:32:01 2010 (r203226) +++ projects/capabilities8/contrib/tcpdump/tcpdump.c Sat Jan 30 19:32:11 2010 (r203227) @@ -1199,7 +1199,7 @@ main(int argc, char **argv) } #endif /* WIN32 */ if (cap_enter() < 0) - err(-1, "cap_enter"); + error("cap_enter: %s", pcap_strerror(errno)); status = pcap_loop(pd, cnt, callback, pcap_userdata); if (WFileName == NULL) { /* From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:35:39 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1CBC010656E2; Sat, 30 Jan 2010 19:35:39 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0BD0F8FC14; Sat, 30 Jan 2010 19:35:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJZcIW087473; Sat, 30 Jan 2010 19:35:38 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJZceb087464; Sat, 30 Jan 2010 19:35:38 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301935.o0UJZceb087464@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:35:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203229 - in projects/capabilities8/sys: kern sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:35:39 -0000 Author: rwatson Date: Sat Jan 30 19:35:38 2010 New Revision: 203229 URL: http://svn.freebsd.org/changeset/base/203229 Log: Merge c173524 from the p4 TrustedBSD capabilities branch to capabilities8: namei() / lookup() changes, take 2. Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/kern/kern_descrip.c projects/capabilities8/sys/kern/sys_capability.c projects/capabilities8/sys/kern/vfs_lookup.c projects/capabilities8/sys/kern/vfs_syscalls.c projects/capabilities8/sys/sys/capability.h projects/capabilities8/sys/sys/file.h projects/capabilities8/sys/sys/filedesc.h projects/capabilities8/sys/sys/namei.h Modified: projects/capabilities8/sys/kern/kern_descrip.c ============================================================================== --- projects/capabilities8/sys/kern/kern_descrip.c Sat Jan 30 19:33:45 2010 (r203228) +++ projects/capabilities8/sys/kern/kern_descrip.c Sat Jan 30 19:35:38 2010 (r203229) @@ -1544,30 +1544,44 @@ fdavail(struct thread *td, int n) int falloc(struct thread *td, struct file **resultfp, int *resultfd) { - return _falloc(td, resultfp, resultfd, 1); + struct file *fp; + int error; + + error = falloc_noinstall(td, &fp); + if (error) return (error); /* no reference held on error */ + + error = finstall(td, fp, resultfd); + if (error) { + fdrop(fp, td); /* one reference (fp only) */ + return (error); + } + + if (resultfp) *resultfp = fp; /* copy out result */ + else fdrop(fp, td); /* release local reference */ + + return (0); } /* - * Create a new open file structure and, optionally, allocate a file decriptor - * for the process that refers to it. + * Create a new open file structure without allocating a file decriptor. */ int -_falloc(struct thread *td, struct file **resultfp, int *resultfd, - int addfd) +falloc_noinstall(struct thread *td, struct file **resultfp) { - struct proc *p = td->td_proc; struct file *fp; - int error, i = -1; + int error; int maxuserfiles = maxfiles - (maxfiles / 20); static struct timeval lastfail; static int curfail; /* - * Cowardly refuse to create a referenceless file: if we're not adding - * the file to the process descriptor array, then the calling code + * Cowardly refuse to create a referenceless file; the calling code * MUST expect a pointer to be returned. */ - if (!addfd && !resultfp) return (error = EINVAL); + if (!resultfp) + return (error = EINVAL); + + atomic_add_int(&openfiles, 1); fp = uma_zalloc(file_zone, M_WAITOK | M_ZERO); if ((openfiles >= maxuserfiles && @@ -1580,18 +1594,8 @@ _falloc(struct thread *td, struct file * uma_zfree(file_zone, fp); return (ENFILE); } - if (addfd) - atomic_add_int(&openfiles, 1); - /* - * If addfd: - * If the process has file descriptor zero open, add the new file - * descriptor to the list of open files at that point, otherwise - * put it at the front of the list of open files. - */ - refcount_init(&fp->f_count, (addfd > 0)); - if (resultfp) - fhold(fp); + refcount_init(&fp->f_count, 1); fp->f_cred = crhold(td->td_ucred); fp->f_ops = &badfileops; fp->f_data = NULL; @@ -1599,23 +1603,33 @@ _falloc(struct thread *td, struct file * LIST_INIT(&fp->f_caps); fp->f_capcount = 0; - if (addfd) { - FILEDESC_XLOCK(p->p_fd); - if ((error = fdalloc(td, 0, &i))) { - FILEDESC_XUNLOCK(p->p_fd); - fdrop(fp, td); - if (resultfp) - fdrop(fp, td); - return (error); - } - p->p_fd->fd_ofiles[i] = fp; - FILEDESC_XUNLOCK(p->p_fd); + *resultfp = fp; + + return (0); +} + + +/* + * Install a file in the file descriptor table. + */ +int +finstall(struct thread *td, struct file *fp, int *fd) +{ + struct filedesc *fdp = td->td_proc->p_fd; + int error; + + FILEDESC_XLOCK(fdp); + + if ((error = fdalloc(td, 0, fd))) { + FILEDESC_XUNLOCK(fdp); + return (error); } - if (resultfp) - *resultfp = fp; - if (resultfd) - *resultfd = i; + fhold(fp); + fdp->fd_ofiles[*fd] = fp; + + FILEDESC_XUNLOCK(fdp); + return (0); } @@ -2247,7 +2261,8 @@ fget_unlocked(struct filedesc *fdp, int #define FGET_GETCAP 0x00000001 static __inline int _fget(struct thread *td, int fd, struct file **fpp, int flags, - cap_rights_t rights, u_char *maxprotp, int fget_flags) + cap_rights_t needrights, cap_rights_t *haverights, + u_char *maxprotp, int fget_flags) { struct filedesc *fdp; struct file *fp; @@ -2270,6 +2285,14 @@ _fget(struct thread *td, int fd, struct } #ifdef CAPABILITIES + /* If this is a capability, what rights does it have? */ + if (haverights) { + if (fp->f_type == DTYPE_CAPABILITY) + *haverights = cap_rights(fp); + else + *haverights = -1; + } + /* * If a capability has been requested, return the capability * directly. Otherwise, check capability rights, extract the @@ -2286,10 +2309,10 @@ _fget(struct thread *td, int fd, struct * capability and find the underlying object. */ if (maxprotp != NULL) - error = cap_fextract_mmap(fp, rights, maxprotp, + error = cap_fextract_mmap(fp, needrights, maxprotp, &fp_fromcap); else - error = cap_fextract(fp, rights, &fp_fromcap); + error = cap_fextract(fp, needrights, &fp_fromcap); if (error) { fdrop(fp, td); return (error); @@ -2328,7 +2351,7 @@ int fget(struct thread *td, int fd, cap_rights_t rights, struct file **fpp) { - return(_fget(td, fd, fpp, 0, rights, NULL, 0)); + return(_fget(td, fd, fpp, 0, rights, NULL, NULL, 0)); } int @@ -2336,21 +2359,21 @@ fget_mmap(struct thread *td, int fd, cap struct file **fpp) { - return (_fget(td, fd, fpp, 0, rights, maxprotp, 0)); + return (_fget(td, fd, fpp, 0, rights, NULL, maxprotp, 0)); } int fget_read(struct thread *td, int fd, cap_rights_t rights, struct file **fpp) { - return(_fget(td, fd, fpp, FREAD, rights, NULL, 0)); + return(_fget(td, fd, fpp, FREAD, rights, NULL, NULL, 0)); } int fget_write(struct thread *td, int fd, cap_rights_t rights, struct file **fpp) { - return(_fget(td, fd, fpp, FWRITE, rights, NULL, 0)); + return(_fget(td, fd, fpp, FWRITE, rights, NULL, NULL, 0)); } /* @@ -2362,7 +2385,7 @@ int fgetcap(struct thread *td, int fd, struct file **fpp) { - return (_fget(td, fd, fpp, 0, 0, NULL, FGET_GETCAP)); + return (_fget(td, fd, fpp, 0, 0, NULL, NULL, FGET_GETCAP)); } /* @@ -2373,14 +2396,15 @@ fgetcap(struct thread *td, int fd, struc * XXX: what about the unused flags ? */ static __inline int -_fgetvp(struct thread *td, int fd, int flags, cap_rights_t rights, - struct vnode **vpp) +_fgetvp(struct thread *td, int fd, int flags, + cap_rights_t needrights, cap_rights_t *haverights, struct vnode **vpp) { struct file *fp; int error; *vpp = NULL; - if ((error = _fget(td, fd, &fp, flags, rights, NULL, 0)) != 0) + if ((error = _fget(td, fd, &fp, flags, needrights, haverights, NULL, 0)) + != 0) return (error); if (fp->f_vnode == NULL) { error = EINVAL; @@ -2397,7 +2421,14 @@ int fgetvp(struct thread *td, int fd, cap_rights_t rights, struct vnode **vpp) { - return (_fgetvp(td, fd, 0, rights, vpp)); + return (_fgetvp(td, fd, 0, rights, NULL, vpp)); +} + +int +fgetvp_rights(struct thread *td, int fd, cap_rights_t need, cap_rights_t *have, + struct vnode **vpp) +{ + return (_fgetvp(td, fd, 0, need, have, vpp)); } int @@ -2405,7 +2436,7 @@ fgetvp_read(struct thread *td, int fd, c struct vnode **vpp) { - return (_fgetvp(td, fd, FREAD, rights, vpp)); + return (_fgetvp(td, fd, FREAD, rights, NULL, vpp)); } #ifdef notyet @@ -2414,7 +2445,7 @@ fgetvp_write(struct thread *td, int fd, struct vnode **vpp) { - return (_fgetvp(td, fd, FWRITE, rights, vpp)); + return (_fgetvp(td, fd, FWRITE, rights, NULL, vpp)); } #endif @@ -2439,7 +2470,7 @@ fgetsock(struct thread *td, int fd, cap_ *spp = NULL; if (fflagp != NULL) *fflagp = 0; - if ((error = _fget(td, fd, &fp, 0, rights, NULL, 0)) != 0) + if ((error = _fget(td, fd, &fp, 0, rights, NULL, NULL, 0)) != 0) return (error); if (fp->f_type != DTYPE_SOCKET) { error = ENOTSOCK; Modified: projects/capabilities8/sys/kern/sys_capability.c ============================================================================== --- projects/capabilities8/sys/kern/sys_capability.c Sat Jan 30 19:33:45 2010 (r203228) +++ projects/capabilities8/sys/kern/sys_capability.c Sat Jan 30 19:35:38 2010 (r203229) @@ -50,7 +50,7 @@ #include "opt_capabilities.h" #include -__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#27 $"); +__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#28 $"); #include #include @@ -153,8 +153,11 @@ static int cap_check(struct capability *c, cap_rights_t rights) { - if ((c->cap_rights | rights) != c->cap_rights) + if ((c->cap_rights | rights) != c->cap_rights) { + printf("ENOTCAPABLE: %016x < %016x\n", + (unsigned int) c->cap_rights, (unsigned int) rights); return (ENOTCAPABLE); + } return (0); } Modified: projects/capabilities8/sys/kern/vfs_lookup.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_lookup.c Sat Jan 30 19:33:45 2010 (r203228) +++ projects/capabilities8/sys/kern/vfs_lookup.c Sat Jan 30 19:35:38 2010 (r203229) @@ -37,6 +37,7 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_capabilities.h" #include "opt_kdb.h" #include "opt_kdtrace.h" #include "opt_ktrace.h" @@ -139,16 +140,6 @@ namei(struct nameidata *ndp) struct proc *p = td->td_proc; int vfslocked; -#ifdef KDB - if ((td->td_ucred->cr_flags & CRED_FLAG_CAPMODE) - && (ndp->ni_dirfd == AT_FDCWD)) - { - printf("namei: pid %d proc %s performed namei in capability " - "mode (and it's not *at())\n", p->p_pid, p->p_comm); - kdb_backtrace(); - } -#endif - KASSERT((cnp->cn_flags & MPSAFE) != 0 || mtx_owned(&Giant) != 0, ("NOT MPSAFE and Giant not held")); ndp->ni_cnd.cn_cred = ndp->ni_cnd.cn_thread->td_ucred; @@ -206,6 +197,7 @@ namei(struct nameidata *ndp) ktrnamei(cnp->cn_pnbuf); } #endif + /* * Get starting point for the translation. */ @@ -214,7 +206,18 @@ namei(struct nameidata *ndp) ndp->ni_topdir = fdp->fd_jdir; dp = NULL; +#ifdef CAPABILITIES + /* + * in capability mode, lookups must be performed relative to a real file + * descriptor, not the pseudo-descriptor AT_FDCWD + */ + if (IN_CAPABILITY_MODE(td) && (ndp->ni_dirfd == AT_FDCWD)) { + error = EOPNOTSUPP; + } else { +#else /* !CAPABILITIES */ + /* this optimisation doesn't apply if we have capabilities */ if (cnp->cn_pnbuf[0] != '/') { +#endif if (ndp->ni_startdir != NULL) { dp = ndp->ni_startdir; error = 0; @@ -223,26 +226,39 @@ namei(struct nameidata *ndp) AUDIT_ARG_ATFD1(ndp->ni_dirfd); if (cnp->cn_flags & AUDITVNODE2) AUDIT_ARG_ATFD2(ndp->ni_dirfd); - error = fgetvp(td, ndp->ni_dirfd, CAP_LOOKUP, &dp); + error = fgetvp_rights(td, ndp->ni_dirfd, + ndp->ni_rightsneeded | CAP_LOOKUP, + &(ndp->ni_baserights), &dp); + +#ifdef CAPABILITIES + /* + * only set ni_basedir if base was a capability or we are + * in capability mode + */ + if ((ndp->ni_baserights != -1) || (IN_CAPABILITY_MODE(td))) + ndp->ni_basedir = dp; +#endif } - if (error != 0 || dp != NULL) { - FILEDESC_SUNLOCK(fdp); - if (error == 0 && dp->v_type != VDIR) { - vfslocked = VFS_LOCK_GIANT(dp->v_mount); - vrele(dp); - VFS_UNLOCK_GIANT(vfslocked); - error = ENOTDIR; - } + } + if (error != 0 || dp != NULL) { + FILEDESC_SUNLOCK(fdp); + if (error == 0 && dp->v_type != VDIR) { + vfslocked = VFS_LOCK_GIANT(dp->v_mount); + vrele(dp); + VFS_UNLOCK_GIANT(vfslocked); + error = ENOTDIR; } - if (error) { - uma_zfree(namei_zone, cnp->cn_pnbuf); + } + + if (error) { + uma_zfree(namei_zone, cnp->cn_pnbuf); #ifdef DIAGNOSTIC - cnp->cn_pnbuf = NULL; - cnp->cn_nameptr = NULL; + cnp->cn_pnbuf = NULL; + cnp->cn_nameptr = NULL; #endif - return (error); - } + return (error); } + if (dp == NULL) { dp = fdp->fd_cdir; VREF(dp); @@ -260,6 +276,8 @@ namei(struct nameidata *ndp) /* * Check if root directory should replace current directory. * Done at start of translation and after symbolic link. + * This is illegal if looking up relative to a capability unless + * that capability is for '/' and has CAP_ABSOLUTEPATH. */ cnp->cn_nameptr = cnp->cn_pnbuf; if (*(cnp->cn_nameptr) == '/') { @@ -269,6 +287,21 @@ namei(struct nameidata *ndp) cnp->cn_nameptr++; ndp->ni_pathlen--; } +#ifdef CAPABILITIES + if (ndp->ni_basedir) + printf("ABSOLUTE namei(); " + "basedir: %016lx, rootdir: %016lx" + ", baserights: %016lx\n", + (unsigned long) ndp->ni_basedir, + (unsigned long) ndp->ni_rootdir, + (unsigned long) ndp->ni_baserights); + + if (ndp->ni_basedir + && !((ndp->ni_basedir == ndp->ni_rootdir) + && (ndp->ni_baserights & CAP_ABSOLUTEPATH))) + return (ENOTCAPABLE); +#endif + dp = ndp->ni_rootdir; vfslocked = VFS_LOCK_GIANT(dp->v_mount); VREF(dp); @@ -480,8 +513,7 @@ lookup(struct nameidata *ndp) int dvfslocked; /* VFS Giant state for parent */ int tvfslocked; int lkflags_save; - int insidebasedir = 0; /* we're under the *at() base */ - + /* * Setup: break out flag bits into variables. */ @@ -508,10 +540,6 @@ lookup(struct nameidata *ndp) else cnp->cn_lkflags = LK_EXCLUSIVE; - /* we do not allow absolute lookups in capability mode */ - if(ndp->ni_basedir && (ndp->ni_startdir == ndp->ni_rootdir)) - return (error = EPERM); - dp = ndp->ni_startdir; ndp->ni_startdir = NULLVP; vn_lock(dp, @@ -580,11 +608,6 @@ dirloop: goto bad; } - - /* Check to see if we're at the *at directory */ - if(dp == ndp->ni_basedir) insidebasedir = 1; - - /* * Check for degenerate name (e.g. / or "") * which is a way of talking about a directory, @@ -619,17 +642,18 @@ dirloop: } /* - * Handle "..": four special cases. + * Handle "..": five special cases. * 1. Return an error if this is the last component of * the name and the operation is DELETE or RENAME. - * 2. If at root directory (e.g. after chroot) + * 2. If at the base of a capability *at call, return ENOTCAPABLE. + * 3. If at root directory (e.g. after chroot) * or at absolute root directory * then ignore it so can't get out. - * 3. If this vnode is the root of a mounted + * 4. If this vnode is the root of a mounted * filesystem, then replace it with the * vnode which was mounted on so we take the * .. in the other filesystem. - * 4. If the vnode is the top directory of + * 5. If the vnode is the top directory of * the jail or chroot, don't let them out. */ if (cnp->cn_flags & ISDOTDOT) { @@ -639,13 +663,17 @@ dirloop: goto bad; } for (;;) { - /* attempting to wander out of the *at root */ - if(dp == ndp->ni_basedir) - { - error = EPERM; +#ifdef CAPABILITIES + /* + * Attempting to wander out of the *at root; whether or + * not this is allowed is a capability option on the + * '/' capability. + */ + if (dp == ndp->ni_basedir) { + error = ENOTCAPABLE; goto bad; } - +#endif for (pr = cnp->cn_cred->cr_prison; pr != NULL; pr = pr->pr_parent) if (dp == pr->pr_root) @@ -906,16 +934,6 @@ nextname: VOP_UNLOCK(dp, 0); success: /* - * If we're in capability mode and the syscall was *at(), ensure - * that the *at() base was part of the path - */ - if(ndp->ni_basedir && !insidebasedir) - { - error = EPERM; - goto bad; - } - - /* * Because of lookup_shared we may have the vnode shared locked, but * the caller may want it to be exclusively locked. */ Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:33:45 2010 (r203228) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:35:38 2010 (r203229) @@ -159,42 +159,6 @@ getvnode_cap(struct filedesc *fdp, int f return (0); } -#ifdef CAPABILITIES -/*- - * Get the "base" vnode defined by a user file descriptor. - * - * Several *at() system calls are now supported in capability mode. This - * function finds out what their "*at base" vnode, which is needed by - * namei(), should be: - * - * 1. In non-capability (and thus unconstrained) mode, *base = NULL. - * 2. In capability mode, base is the vnode given by the fd parameter, - * subject to the condition that the supplied 'rights' parameter (OR'ed - * with CAP_LOOKUP and CAP_ATBASE) is satisfied. The vnode is returned - * with a shared lock. - */ -int -fgetbase(struct thread *td, int fd, cap_rights_t rights, struct vnode **base) -{ - - if (!(td->td_ucred->cr_flags & CRED_FLAG_CAPMODE)) - *base = NULL; - else { - int error; - - error = fgetvp(td, fd, rights | CAP_LOOKUP | CAP_ATBASE, base); - if (error) - return (error); - - if ((error = vn_lock(*base, LK_SHARED))) { - vrele(*base); - return (error); - } - } - return (0); -} -#endif - /* * Sync each mounted filesystem. */ @@ -1128,7 +1092,7 @@ kern_openat(struct thread *td, int fd, c struct proc *p = td->td_proc; struct filedesc *fdp = p->p_fd; struct file *fp; - struct vnode *vp, *base = NULL; + struct vnode *vp; struct vattr vat; struct mount *mp; int cmode; @@ -1137,7 +1101,7 @@ kern_openat(struct thread *td, int fd, c struct flock lf; struct nameidata nd; int vfslocked; - cap_rights_t baserights = -1; + cap_rights_t baserights = CAP_ATBASE; AUDIT_ARG_FFLAGS(flags); AUDIT_ARG_MODE(mode); @@ -1147,6 +1111,7 @@ kern_openat(struct thread *td, int fd, c * be specified. */ if (flags & O_EXEC) { + baserights |= CAP_FEXECVE; if (flags & O_ACCMODE) return (EINVAL); } else if ((flags & O_ACCMODE) == O_ACCMODE) @@ -1155,65 +1120,24 @@ kern_openat(struct thread *td, int fd, c flags = FFLAGS(flags); #ifdef CAPABILITIES - /* get capability info of base FD */ - if (fd >= 0) { - struct file *f; - const cap_rights_t LOOKUP_RIGHTS = CAP_LOOKUP | CAP_ATBASE; - - FILEDESC_SLOCK(fdp); - - error = fgetcap(td, fd, &f); - if (error == 0) { - /* FD is a capability; get rights and unwrap */ - struct file *real_fp = NULL; - - baserights = cap_rights(f); - error = cap_fextract(f, LOOKUP_RIGHTS, &real_fp); - - /* hold the underlying file, not the capability */ - if (error == 0) - fhold(real_fp); - fdrop(f, td); - - f = real_fp; - } else if (error == EINVAL) - /* not a capability; get the real file pointer */ - error = fget(td, fd, LOOKUP_RIGHTS, &f); - - /* if in capability mode, get base vnode (for namei) */ - if (!error && (td->td_ucred->cr_flags & CRED_FLAG_CAPMODE)) { - base = f->f_vnode; - vref(base); - } - - /* don't need to hold the base any more */ - if (f != NULL) - fdrop(f, td); - - if (error) { - FILEDESC_SUNLOCK(fdp); - return (error); - } else - FILEDESC_SUNLOCK(fdp); - } + if (flags & FREAD) baserights |= CAP_READ; + if (flags & FWRITE) baserights |= CAP_WRITE; #endif /* - * allocate the file descriptor, but only add it to the descriptor - * array if fd isn't a capability (in which case we'll add the - * capability instead, later) + * allocate the file descriptor, but don't install a descriptor yet */ - error = _falloc(td, &nfp, &indx, (baserights == -1)); + error = falloc_noinstall(td, &nfp); if (error) return (error); - /* An extra reference on `nfp' has been held for us by _falloc(). */ + /* An extra reference on `nfp' has been held for us by falloc(). */ fp = nfp; /* Set the flags early so the finit in devfs can pick them up. */ fp->f_flag = flags & FMASK; cmode = ((mode &~ fdp->fd_cmask) & ALLPERMS) &~ S_ISTXT; - NDINIT_ATBASE(&nd, LOOKUP, FOLLOW | AUDITVNODE1 | MPSAFE, pathseg, - path, fd, base, td); + NDINIT_ATRIGHTS(&nd, LOOKUP, FOLLOW | AUDITVNODE1 | MPSAFE, pathseg, + path, fd, baserights, td); td->td_dupfd = -1; /* XXX check for fdopen */ error = vn_open(&nd, &flags, cmode, fp); if (error) { @@ -1229,8 +1153,12 @@ kern_openat(struct thread *td, int fd, c * handle special fdopen() case. bleh. dupfdopen() is * responsible for dropping the old contents of ofiles[indx] * if it succeeds. + * + * Don't do this for relative (capability) lookups; we don't + * understand exactly what would happen, and we don't think that + * it ever should. */ - if ((error == ENODEV || error == ENXIO) && + if (!nd.ni_basedir && (error == ENODEV || error == ENXIO) && td->td_dupfd >= 0 && /* XXX from fdopen */ (error = dupfdopen(td, fdp, indx, td->td_dupfd, flags, error)) == 0) @@ -1240,10 +1168,6 @@ kern_openat(struct thread *td, int fd, c * Clean up the descriptor, but only if another thread hadn't * replaced or closed it. */ -#ifdef CAPABILITIES - if (base) - vrele(base); -#endif fdclose(fdp, fp, indx, td); fdrop(fp, td); @@ -1304,34 +1228,29 @@ kern_openat(struct thread *td, int fd, c success: #ifdef CAPABILITIES - if (baserights != -1) { + if (nd.ni_baserights != -1) { /* wrap the result in a capability */ struct file *cap; - error = kern_capwrap(td, fp, baserights, &cap, &indx); + error = kern_capwrap(td, fp, nd.ni_baserights, &cap, &indx); if (error) goto bad_unlocked; } + else #endif + if ((error = finstall(td, fp, &indx)) != 0) + goto bad_unlocked; /* * Release our private reference, leaving the one associated with * the descriptor table intact. */ -#ifdef CAPABILITIES - if (base) - vrele(base); -#endif fdrop(fp, td); td->td_retval[0] = indx; return (0); bad: VFS_UNLOCK_GIANT(vfslocked); -#ifdef CAPABILITIES bad_unlocked: - if (base) - vrele(base); -#endif fdclose(fdp, fp, indx, td); fdrop(fp, td); return (error); @@ -2264,7 +2183,7 @@ kern_accessat(struct thread *td, int fd, int flags, int mode) { struct ucred *cred, *tmpcred; - struct vnode *vp, *base = NULL; + struct vnode *vp; struct nameidata nd; int vfslocked; int error; @@ -2284,14 +2203,8 @@ kern_accessat(struct thread *td, int fd, cred = tmpcred = td->td_ucred; AUDIT_ARG_VALUE(mode); -#ifdef CAPABILITIES - /* get *at base vnode for namei() */ - if ((error = fgetbase(td, fd, CAP_FSTAT, &base))) - return (error); -#endif - - NDINIT_ATBASE(&nd, LOOKUP, FOLLOW | LOCKSHARED | LOCKLEAF | MPSAFE | - AUDITVNODE1, pathseg, path, fd, base, td); + NDINIT_ATRIGHTS(&nd, LOOKUP, FOLLOW | LOCKSHARED | LOCKLEAF | MPSAFE | + AUDITVNODE1, pathseg, path, fd, CAP_FSTAT, td); if ((error = namei(&nd)) != 0) goto out1; vfslocked = NDHASGIANT(&nd); @@ -2306,10 +2219,6 @@ out1: td->td_ucred = cred; crfree(tmpcred); } -#ifdef CAPABILITIES - if (base) - vput(base); -#endif return (error); } @@ -3058,22 +2967,13 @@ kern_fchmodat(struct thread *td, int fd, struct nameidata nd; int vfslocked; int follow; - struct vnode *base = NULL; AUDIT_ARG_MODE(mode); follow = (flag & AT_SYMLINK_NOFOLLOW) ? NOFOLLOW : FOLLOW; -#ifdef CAPABILITIES - if ((error = fgetbase(td, fd, CAP_FCHMOD, &base))) - return (error); -#endif - NDINIT_ATBASE(&nd, LOOKUP, follow | MPSAFE | AUDITVNODE1, pathseg, - path, fd, base, td); + NDINIT_ATRIGHTS(&nd, LOOKUP, follow | MPSAFE | AUDITVNODE1, pathseg, + path, fd, CAP_FCHMOD, td); error = namei(&nd); -#ifdef CAPABILITIES - if (base) - vput(base); -#endif if (error) return (error); Modified: projects/capabilities8/sys/sys/capability.h ============================================================================== --- projects/capabilities8/sys/sys/capability.h Sat Jan 30 19:33:45 2010 (r203228) +++ projects/capabilities8/sys/sys/capability.h Sat Jan 30 19:35:38 2010 (r203229) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/sys/sys/capability.h#27 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/sys/sys/capability.h#28 $ */ /* @@ -97,7 +97,8 @@ #define CAP_FCHDIR 0x0002000000000000ULL /* fchdir(2) */ #define CAP_FSCK 0x0004000000000000ULL /* sysctl_ffs_fsck */ #define CAP_ATBASE 0x0008000000000000ULL /* openat(2), etc. */ -#define CAP_MASK_VALID 0x000fffffffffffffULL +#define CAP_ABSOLUTEPATH 0x0010000000000000ULL /* abs. lookup from '/' */ +#define CAP_MASK_VALID 0x001fffffffffffffULL /* * Notes: @@ -141,6 +142,9 @@ struct file; struct thread; +#define IN_CAPABILITY_MODE(td) (td->td_ucred->cr_flags & CRED_FLAG_CAPMODE) + + /* * Create a capability to wrap a file object. */ Modified: projects/capabilities8/sys/sys/file.h ============================================================================== --- projects/capabilities8/sys/sys/file.h Sat Jan 30 19:33:45 2010 (r203228) +++ projects/capabilities8/sys/sys/file.h Sat Jan 30 19:35:38 2010 (r203229) @@ -206,6 +206,8 @@ fo_close_t soo_close; void finit(struct file *, u_int, short, void *, struct fileops *); int fgetvp(struct thread *td, int fd, cap_rights_t rights, struct vnode **vpp); +int fgetvp_rights(struct thread *td, int fd, cap_rights_t need, cap_rights_t *have, + struct vnode **vpp); int fgetvp_read(struct thread *td, int fd, cap_rights_t rights, struct vnode **vpp); int fgetvp_write(struct thread *td, int fd, cap_rights_t rights, Modified: projects/capabilities8/sys/sys/filedesc.h ============================================================================== --- projects/capabilities8/sys/sys/filedesc.h Sat Jan 30 19:33:45 2010 (r203228) +++ projects/capabilities8/sys/sys/filedesc.h Sat Jan 30 19:35:38 2010 (r203229) @@ -112,8 +112,8 @@ int closef(struct file *fp, struct threa int dupfdopen(struct thread *td, struct filedesc *fdp, int indx, int dfd, int mode, int error); int falloc(struct thread *td, struct file **resultfp, int *resultfd); -int _falloc(struct thread *td, struct file **resultfp, int *resultfd, - int addfd); +int falloc_noinstall(struct thread *td, struct file **resultfp); +int finstall(struct thread *td, struct file *fp, int *resultfp); int fdalloc(struct thread *td, int minfd, int *result); int fdavail(struct thread *td, int n); int fdcheckstd(struct thread *td); Modified: projects/capabilities8/sys/sys/namei.h ============================================================================== --- projects/capabilities8/sys/sys/namei.h Sat Jan 30 19:33:45 2010 (r203228) +++ projects/capabilities8/sys/sys/namei.h Sat Jan 30 19:35:38 2010 (r203229) @@ -63,6 +63,7 @@ struct nameidata { */ const char *ni_dirp; /* pathname pointer */ enum uio_seg ni_segflg; /* location of pathname */ + cap_rights_t ni_rightsneeded; /* rights required to look up vnode */ /* * Arguments to lookup. */ @@ -72,6 +73,10 @@ struct nameidata { int ni_dirfd; /* starting directory for *at functions */ struct vnode *ni_basedir; /* root for capability-mode *at */ /* + * Results: returned from namei + */ + cap_rights_t ni_baserights; /* rights that the *at base has (or -1) */ + /* * Results: returned from/manipulated by lookup */ struct vnode *ni_vp; /* vnode of result */ @@ -152,13 +157,13 @@ struct nameidata { * Initialization of a nameidata structure. */ #define NDINIT(ndp, op, flags, segflg, namep, td) \ - NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, NULL, NULL, td) + NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, NULL, NULL, 0, td) #define NDINIT_AT(ndp, op, flags, segflg, namep, dirfd, td) \ - NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, NULL, NULL, td) -#define NDINIT_ATBASE(ndp, op, flags, segflg, namep, dirfd, base, td) \ - NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, NULL, base, td) + NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, NULL, NULL, 0, td) +#define NDINIT_ATRIGHTS(ndp, op, flags, segflg, namep, dirfd, rights, td) \ + NDINIT_ALL(ndp, op, flags, segflg, namep, dirfd, NULL, NULL, rights, td) #define NDINIT_ATVP(ndp, op, flags, segflg, namep, vp, td) \ - NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, vp, NULL, td) + NDINIT_ALL(ndp, op, flags, segflg, namep, AT_FDCWD, vp, NULL, 0, td) static __inline void NDINIT_ALL(struct nameidata *ndp, @@ -168,6 +173,7 @@ NDINIT_ALL(struct nameidata *ndp, int dirfd, struct vnode *startdir, struct vnode *basedir, + cap_rights_t rights, struct thread *td) { ndp->ni_cnd.cn_nameiop = op; @@ -177,6 +183,8 @@ NDINIT_ALL(struct nameidata *ndp, ndp->ni_dirfd = dirfd; ndp->ni_startdir = startdir; ndp->ni_basedir = basedir; + ndp->ni_rightsneeded = rights; + ndp->ni_baserights = -1; ndp->ni_cnd.cn_thread = td; } From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:36:29 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AC510106568D; Sat, 30 Jan 2010 19:36:29 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9D6058FC0A; Sat, 30 Jan 2010 19:36:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJaTB5087707; Sat, 30 Jan 2010 19:36:29 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJaTmM087705; Sat, 30 Jan 2010 19:36:29 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301936.o0UJaTmM087705@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:36:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203230 - projects/capabilities8/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:36:29 -0000 Author: rwatson Date: Sat Jan 30 19:36:29 2010 New Revision: 203230 URL: http://svn.freebsd.org/changeset/base/203230 Log: Merge c173527 from the p4 TrustedBSD Capabilities branch to capabilities8: This printf shouldn't be here any more. Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/kern/vfs_lookup.c Modified: projects/capabilities8/sys/kern/vfs_lookup.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_lookup.c Sat Jan 30 19:35:38 2010 (r203229) +++ projects/capabilities8/sys/kern/vfs_lookup.c Sat Jan 30 19:36:29 2010 (r203230) @@ -288,14 +288,6 @@ namei(struct nameidata *ndp) ndp->ni_pathlen--; } #ifdef CAPABILITIES - if (ndp->ni_basedir) - printf("ABSOLUTE namei(); " - "basedir: %016lx, rootdir: %016lx" - ", baserights: %016lx\n", - (unsigned long) ndp->ni_basedir, - (unsigned long) ndp->ni_rootdir, - (unsigned long) ndp->ni_baserights); - if (ndp->ni_basedir && !((ndp->ni_basedir == ndp->ni_rootdir) && (ndp->ni_baserights & CAP_ABSOLUTEPATH))) From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:39:33 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E03E8106568F; Sat, 30 Jan 2010 19:39:33 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D14608FC1C; Sat, 30 Jan 2010 19:39:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJdXsM088426; Sat, 30 Jan 2010 19:39:33 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJdX89088424; Sat, 30 Jan 2010 19:39:33 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301939.o0UJdX89088424@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:39:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203232 - projects/capabilities8/sys/fs/fdescfs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:39:34 -0000 Author: rwatson Date: Sat Jan 30 19:39:33 2010 New Revision: 203232 URL: http://svn.freebsd.org/changeset/base/203232 Log: Merge c173596 from the p4 TrustedBSD Capabilities branch to capabilities8: Don't allow VOP_SETATTR() on fdescfs -- we could build up a capability rights mask for the operations it represents, but it actually isn't very coherent conceptually. For example, you can chmod /dev/fd/X if that fd refers to a file, but if you stat() you don't see the file's mode. Sponsored by: Google, Inc. Modified: projects/capabilities8/sys/fs/fdescfs/fdesc_vnops.c Modified: projects/capabilities8/sys/fs/fdescfs/fdesc_vnops.c ============================================================================== --- projects/capabilities8/sys/fs/fdescfs/fdesc_vnops.c Sat Jan 30 19:36:55 2010 (r203231) +++ projects/capabilities8/sys/fs/fdescfs/fdesc_vnops.c Sat Jan 30 19:39:33 2010 (r203232) @@ -391,6 +391,8 @@ fdesc_getattr(ap) struct ucred *a_cred; } */ *ap; { + +#if 0 struct vnode *vp = ap->a_vp; struct vattr *vap = ap->a_vap; @@ -430,6 +432,9 @@ fdesc_getattr(ap) vp->v_type = vap->va_type; return (0); +#else + return (EOPNOTSUPP); +#endif } static int From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:40:33 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E9DC91065670; Sat, 30 Jan 2010 19:40:33 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DAD0B8FC08; Sat, 30 Jan 2010 19:40:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJeXro088697; Sat, 30 Jan 2010 19:40:33 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJeX4j088695; Sat, 30 Jan 2010 19:40:33 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301940.o0UJeX4j088695@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:40:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203233 - projects/capabilities8/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:40:34 -0000 Author: rwatson Date: Sat Jan 30 19:40:33 2010 New Revision: 203233 URL: http://svn.freebsd.org/changeset/base/203233 Log: Merge c173616 from the p4 TrustedBSD Capabilities branch to capabilities8: Trim slightly verbose printf in capability code. Sponsored by: Google, Inc. Modified: projects/capabilities8/sys/kern/sys_capability.c Modified: projects/capabilities8/sys/kern/sys_capability.c ============================================================================== --- projects/capabilities8/sys/kern/sys_capability.c Sat Jan 30 19:39:33 2010 (r203232) +++ projects/capabilities8/sys/kern/sys_capability.c Sat Jan 30 19:40:33 2010 (r203233) @@ -50,7 +50,7 @@ #include "opt_capabilities.h" #include -__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#28 $"); +__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#29 $"); #include #include @@ -153,11 +153,8 @@ static int cap_check(struct capability *c, cap_rights_t rights) { - if ((c->cap_rights | rights) != c->cap_rights) { - printf("ENOTCAPABLE: %016x < %016x\n", - (unsigned int) c->cap_rights, (unsigned int) rights); + if ((c->cap_rights | rights) != c->cap_rights) return (ENOTCAPABLE); - } return (0); } From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:42:23 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6EFB5106566C; Sat, 30 Jan 2010 19:42:23 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 601218FC13; Sat, 30 Jan 2010 19:42:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJgNhf089132; Sat, 30 Jan 2010 19:42:23 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJgN5J089130; Sat, 30 Jan 2010 19:42:23 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301942.o0UJgN5J089130@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:42:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203234 - projects/capabilities8/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:42:23 -0000 Author: rwatson Date: Sat Jan 30 19:42:23 2010 New Revision: 203234 URL: http://svn.freebsd.org/changeset/base/203234 Log: Merge c173617 from the p4 TrustedBSD Capabilities branch to capabilities8: Comment on an incorrect comment. Sponsored by: Google, Inc. Modified: projects/capabilities8/sys/kern/sys_capability.c Modified: projects/capabilities8/sys/kern/sys_capability.c ============================================================================== --- projects/capabilities8/sys/kern/sys_capability.c Sat Jan 30 19:40:33 2010 (r203233) +++ projects/capabilities8/sys/kern/sys_capability.c Sat Jan 30 19:42:23 2010 (r203234) @@ -50,7 +50,7 @@ #include "opt_capabilities.h" #include -__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#29 $"); +__FBSDID("$P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/sys_capability.c#30 $"); #include #include @@ -118,6 +118,9 @@ static struct fileops capability_ops = { * objects, which raises the question as to why the flag exists at * all. * + * XXXRW: Actually, this is not true: kqueue's aren't passable, so we + * do need to do this. + * * No need to set DFLAG_SEEKABLE as any seek operations will fall * through to the underlying object once the capability is verified. */ From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:43:27 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 76D7F106568D; Sat, 30 Jan 2010 19:43:27 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 67DB98FC1F; Sat, 30 Jan 2010 19:43:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJhRln089404; Sat, 30 Jan 2010 19:43:27 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJhRlG089402; Sat, 30 Jan 2010 19:43:27 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301943.o0UJhRlG089402@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:43:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203235 - projects/capabilities8/lib/libc/sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:43:27 -0000 Author: rwatson Date: Sat Jan 30 19:43:27 2010 New Revision: 203235 URL: http://svn.freebsd.org/changeset/base/203235 Log: Merge c173657 from the p4 TrustedBSD Capabilities branch to capabilities8: Clarify interaction of CAP_EVENT and CAP_KEVENT in the cap_new(2) man page. Sponsored by: Google, Inc. Modified: projects/capabilities8/lib/libc/sys/cap_new.2 Modified: projects/capabilities8/lib/libc/sys/cap_new.2 ============================================================================== --- projects/capabilities8/lib/libc/sys/cap_new.2 Sat Jan 30 19:42:23 2010 (r203234) +++ projects/capabilities8/lib/libc/sys/cap_new.2 Sat Jan 30 19:43:27 2010 (r203235) @@ -1,5 +1,5 @@ .\" -.\" Copyright (c) 2008-2009 Robert N. M. Watson +.\" Copyright (c) 2008-2010 Robert N. M. Watson .\" All rights reserved. .\" .\" WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED @@ -224,7 +224,7 @@ global scope for some objects. Permit .Xr kevent 2 ; .Dv CAP_EVENT -may also be required on file descriptors to be monitored using +is also required on file descriptors that will be monitored using .Xr kevent 2 . .It Dv CAP_LISTEN Permit From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:44:37 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 57A0C1065676; Sat, 30 Jan 2010 19:44:37 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2F4278FC0C; Sat, 30 Jan 2010 19:44:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJibaH089715; Sat, 30 Jan 2010 19:44:37 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJibZ8089713; Sat, 30 Jan 2010 19:44:37 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301944.o0UJibZ8089713@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:44:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203236 - projects/capabilities8/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:44:37 -0000 Author: rwatson Date: Sat Jan 30 19:44:36 2010 New Revision: 203236 URL: http://svn.freebsd.org/changeset/base/203236 Log: Merge c173670 from the p4 TrustedBSD Capabilities branch to capabilities8: Fixed dupfdopen() error in kern_openat() - we must finstall() the file to give it a valid descriptor before dupfdopen() is called. Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/kern/vfs_syscalls.c Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:43:27 2010 (r203235) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:44:36 2010 (r203236) @@ -74,6 +74,9 @@ __FBSDID("$FreeBSD$"); #ifdef KTRACE #include #endif +#ifdef KDB +#include +#endif #include @@ -1097,7 +1100,7 @@ kern_openat(struct thread *td, int fd, c struct mount *mp; int cmode; struct file *nfp; - int type, indx, error; + int type, indx = -1, error; struct flock lf; struct nameidata nd; int vfslocked; @@ -1159,10 +1162,17 @@ kern_openat(struct thread *td, int fd, c * it ever should. */ if (!nd.ni_basedir && (error == ENODEV || error == ENXIO) && - td->td_dupfd >= 0 && /* XXX from fdopen */ - (error = - dupfdopen(td, fdp, indx, td->td_dupfd, flags, error)) == 0) - goto success; + td->td_dupfd >= 0) { + /* XXX from fdopen */ + int olderror = error; + + if ((error = finstall(td, fp, &indx)) != 0) + goto bad_unlocked; + + if ((error = dupfdopen(td, fdp, indx, td->td_dupfd, + flags, olderror)) == 0) + goto success; + } /* * Clean up the descriptor, but only if another thread hadn't @@ -1238,8 +1248,10 @@ success: } else #endif - if ((error = finstall(td, fp, &indx)) != 0) - goto bad_unlocked; + /* if we haven't already installed the FD (for dupfdopen), do so now */ + if (indx == -1) + if((error = finstall(td, fp, &indx)) != 0) + goto bad_unlocked; /* * Release our private reference, leaving the one associated with From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:45:35 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 453C81065672; Sat, 30 Jan 2010 19:45:35 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 363A78FC1A; Sat, 30 Jan 2010 19:45:35 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJjZmB089957; Sat, 30 Jan 2010 19:45:35 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJjZuT089955; Sat, 30 Jan 2010 19:45:35 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301945.o0UJjZuT089955@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:45:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203237 - projects/capabilities8/sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:45:35 -0000 Author: rwatson Date: Sat Jan 30 19:45:34 2010 New Revision: 203237 URL: http://svn.freebsd.org/changeset/base/203237 Log: Merge c173673 from the p4 TrustedBSD Capabilities branch to capabilities8: But we don't need these KDB bits, which were used for debugging only... Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/kern/vfs_syscalls.c Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:44:36 2010 (r203236) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:45:34 2010 (r203237) @@ -74,9 +74,6 @@ __FBSDID("$FreeBSD$"); #ifdef KTRACE #include #endif -#ifdef KDB -#include -#endif #include From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:48:02 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D1ABF106566B; Sat, 30 Jan 2010 19:48:02 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C0FBA8FC14; Sat, 30 Jan 2010 19:48:02 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJm2xd090544; Sat, 30 Jan 2010 19:48:02 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJm2ad090539; Sat, 30 Jan 2010 19:48:02 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301948.o0UJm2ad090539@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:48:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203238 - in projects/capabilities8/sys: kern sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:48:02 -0000 Author: rwatson Date: Sat Jan 30 19:48:02 2010 New Revision: 203238 URL: http://svn.freebsd.org/changeset/base/203238 Log: Merge c173679 from the p4 TrustedBSD Capabilities branch to capabilities8: Enable more *at(2) system calls Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/kern/capabilities.conf projects/capabilities8/sys/kern/init_sysent.c projects/capabilities8/sys/kern/vfs_syscalls.c projects/capabilities8/sys/sys/capability.h Modified: projects/capabilities8/sys/kern/capabilities.conf ============================================================================== --- projects/capabilities8/sys/kern/capabilities.conf Sat Jan 30 19:45:34 2010 (r203237) +++ projects/capabilities8/sys/kern/capabilities.conf Sat Jan 30 19:48:02 2010 (r203238) @@ -38,7 +38,7 @@ ## - sys_exit(2), abort2(2) and close(2) are very important. ## - Sorted alphabetically, please keep it that way. ## -## $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#24 $ +## $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#25 $ ## ## @@ -458,7 +458,13 @@ olio_listio ## faccessat fchmodat +futimesat +mkdirat +rmdirat +mkfifoat +mknodat openat +renameat ## ## Allow poll(2), which will be scoped by capability rights. Modified: projects/capabilities8/sys/kern/init_sysent.c ============================================================================== --- projects/capabilities8/sys/kern/init_sysent.c Sat Jan 30 19:45:34 2010 (r203237) +++ projects/capabilities8/sys/kern/init_sysent.c Sat Jan 30 19:48:02 2010 (r203238) @@ -528,14 +528,14 @@ struct sysent sysent[] = { { AS(fchownat_args), (sy_call_t *)fchownat, AUE_FCHOWNAT, NULL, 0, 0, 0 }, /* 491 = fchownat */ { AS(fexecve_args), (sy_call_t *)fexecve, AUE_FEXECVE, NULL, 0, 0, SYF_CAPENABLED }, /* 492 = fexecve */ { AS(fstatat_args), (sy_call_t *)fstatat, AUE_FSTATAT, NULL, 0, 0, 0 }, /* 493 = fstatat */ - { AS(futimesat_args), (sy_call_t *)futimesat, AUE_FUTIMESAT, NULL, 0, 0, 0 }, /* 494 = futimesat */ + { AS(futimesat_args), (sy_call_t *)futimesat, AUE_FUTIMESAT, NULL, 0, 0, SYF_CAPENABLED }, /* 494 = futimesat */ { AS(linkat_args), (sy_call_t *)linkat, AUE_LINKAT, NULL, 0, 0, 0 }, /* 495 = linkat */ - { AS(mkdirat_args), (sy_call_t *)mkdirat, AUE_MKDIRAT, NULL, 0, 0, 0 }, /* 496 = mkdirat */ - { AS(mkfifoat_args), (sy_call_t *)mkfifoat, AUE_MKFIFOAT, NULL, 0, 0, 0 }, /* 497 = mkfifoat */ - { AS(mknodat_args), (sy_call_t *)mknodat, AUE_MKNODAT, NULL, 0, 0, 0 }, /* 498 = mknodat */ + { AS(mkdirat_args), (sy_call_t *)mkdirat, AUE_MKDIRAT, NULL, 0, 0, SYF_CAPENABLED }, /* 496 = mkdirat */ + { AS(mkfifoat_args), (sy_call_t *)mkfifoat, AUE_MKFIFOAT, NULL, 0, 0, SYF_CAPENABLED }, /* 497 = mkfifoat */ + { AS(mknodat_args), (sy_call_t *)mknodat, AUE_MKNODAT, NULL, 0, 0, SYF_CAPENABLED }, /* 498 = mknodat */ { AS(openat_args), (sy_call_t *)openat, AUE_OPENAT_RWTC, NULL, 0, 0, SYF_CAPENABLED }, /* 499 = openat */ { AS(readlinkat_args), (sy_call_t *)readlinkat, AUE_READLINKAT, NULL, 0, 0, 0 }, /* 500 = readlinkat */ - { AS(renameat_args), (sy_call_t *)renameat, AUE_RENAMEAT, NULL, 0, 0, 0 }, /* 501 = renameat */ + { AS(renameat_args), (sy_call_t *)renameat, AUE_RENAMEAT, NULL, 0, 0, SYF_CAPENABLED }, /* 501 = renameat */ { AS(symlinkat_args), (sy_call_t *)symlinkat, AUE_SYMLINKAT, NULL, 0, 0, 0 }, /* 502 = symlinkat */ { AS(unlinkat_args), (sy_call_t *)unlinkat, AUE_UNLINKAT, NULL, 0, 0, 0 }, /* 503 = unlinkat */ { AS(posix_openpt_args), (sy_call_t *)posix_openpt, AUE_POSIX_OPENPT, NULL, 0, 0, 0 }, /* 504 = posix_openpt */ Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:45:34 2010 (r203237) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 19:48:02 2010 (r203238) @@ -1372,7 +1372,12 @@ kern_mknodat(struct thread *td, int fd, if (error) return (error); restart: + if (IN_CAPABILITY_MODE(td)) + /* only mkfifoat(2) allowed in capability mode */ + return (EOPNOTSUPP); + bwillwrite(); + NDINIT_AT(&nd, CREATE, LOCKPARENT | SAVENAME | MPSAFE | AUDITVNODE1, pathseg, path, fd, td); if ((error = namei(&nd)) != 0) @@ -1498,8 +1503,8 @@ kern_mkfifoat(struct thread *td, int fd, AUDIT_ARG_MODE(mode); restart: bwillwrite(); - NDINIT_AT(&nd, CREATE, LOCKPARENT | SAVENAME | MPSAFE | AUDITVNODE1, - pathseg, path, fd, td); + NDINIT_ATRIGHTS(&nd, CREATE, LOCKPARENT | SAVENAME | MPSAFE | AUDITVNODE1, + pathseg, path, fd, CAP_MKFIFO, td); if ((error = namei(&nd)) != 0) return (error); vfslocked = NDHASGIANT(&nd); @@ -3125,8 +3130,8 @@ kern_fchownat(struct thread *td, int fd, AUDIT_ARG_OWNER(uid, gid); follow = (flag & AT_SYMLINK_NOFOLLOW) ? NOFOLLOW : FOLLOW; - NDINIT_AT(&nd, LOOKUP, follow | MPSAFE | AUDITVNODE1, pathseg, path, - fd, td); + NDINIT_ATRIGHTS(&nd, LOOKUP, follow | MPSAFE | AUDITVNODE1, pathseg, path, + fd, CAP_FCHOWN, td); if ((error = namei(&nd)) != 0) return (error); @@ -3341,8 +3346,8 @@ kern_utimesat(struct thread *td, int fd, if ((error = getutimes(tptr, tptrseg, ts)) != 0) return (error); - NDINIT_AT(&nd, LOOKUP, FOLLOW | MPSAFE | AUDITVNODE1, pathseg, path, - fd, td); + NDINIT_ATRIGHTS(&nd, LOOKUP, FOLLOW | MPSAFE | AUDITVNODE1, pathseg, path, + fd, CAP_FUTIMES, td); if ((error = namei(&nd)) != 0) return (error); @@ -3672,11 +3677,11 @@ kern_renameat(struct thread *td, int old bwillwrite(); #ifdef MAC - NDINIT_AT(&fromnd, DELETE, LOCKPARENT | LOCKLEAF | SAVESTART | MPSAFE | - AUDITVNODE1, pathseg, old, oldfd, td); + NDINIT_ATRIGHTS(&fromnd, DELETE, LOCKPARENT | LOCKLEAF | SAVESTART | + MPSAFE | AUDITVNODE1, pathseg, old, oldfd, CAP_DELETE, td); #else - NDINIT_AT(&fromnd, DELETE, WANTPARENT | SAVESTART | MPSAFE | - AUDITVNODE1, pathseg, old, oldfd, td); + NDINIT_ATRIGHTS(&fromnd, DELETE, WANTPARENT | SAVESTART | MPSAFE | + AUDITVNODE1, pathseg, old, oldfd, CAP_DELETE, td); #endif if ((error = namei(&fromnd)) != 0) @@ -3699,8 +3704,8 @@ kern_renameat(struct thread *td, int old vrele(fvp); goto out1; } - NDINIT_AT(&tond, RENAME, LOCKPARENT | LOCKLEAF | NOCACHE | SAVESTART | - MPSAFE | AUDITVNODE2, pathseg, new, newfd, td); + NDINIT_ATRIGHTS(&tond, RENAME, LOCKPARENT | LOCKLEAF | NOCACHE | + SAVESTART | MPSAFE | AUDITVNODE2, pathseg, new, newfd, CAP_CREATE, td); if (fromnd.ni_vp->v_type == VDIR) tond.ni_cnd.cn_flags |= WILLBEDIR; if ((error = namei(&tond)) != 0) { @@ -3826,8 +3831,8 @@ kern_mkdirat(struct thread *td, int fd, AUDIT_ARG_MODE(mode); restart: bwillwrite(); - NDINIT_AT(&nd, CREATE, LOCKPARENT | SAVENAME | MPSAFE | AUDITVNODE1, - segflg, path, fd, td); + NDINIT_ATRIGHTS(&nd, CREATE, LOCKPARENT | SAVENAME | MPSAFE | AUDITVNODE1, + segflg, path, fd, CAP_MKDIR, td); nd.ni_cnd.cn_flags |= WILLBEDIR; if ((error = namei(&nd)) != 0) return (error); @@ -3915,8 +3920,8 @@ kern_rmdirat(struct thread *td, int fd, restart: bwillwrite(); - NDINIT_AT(&nd, DELETE, LOCKPARENT | LOCKLEAF | MPSAFE | AUDITVNODE1, - pathseg, path, fd, td); + NDINIT_ATRIGHTS(&nd, DELETE, LOCKPARENT | LOCKLEAF | MPSAFE | AUDITVNODE1, + pathseg, path, fd, CAP_RMDIR, td); if ((error = namei(&nd)) != 0) return (error); vfslocked = NDHASGIANT(&nd); Modified: projects/capabilities8/sys/sys/capability.h ============================================================================== --- projects/capabilities8/sys/sys/capability.h Sat Jan 30 19:45:34 2010 (r203237) +++ projects/capabilities8/sys/sys/capability.h Sat Jan 30 19:48:02 2010 (r203238) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/sys/sys/capability.h#28 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/sys/sys/capability.h#29 $ */ /* @@ -98,7 +98,12 @@ #define CAP_FSCK 0x0004000000000000ULL /* sysctl_ffs_fsck */ #define CAP_ATBASE 0x0008000000000000ULL /* openat(2), etc. */ #define CAP_ABSOLUTEPATH 0x0010000000000000ULL /* abs. lookup from '/' */ -#define CAP_MASK_VALID 0x001fffffffffffffULL +#define CAP_CREATE 0x0020000000000000ULL /* open, rename, etc. */ +#define CAP_DELETE 0x0040000000000000ULL /* rename, remove, etc. */ +#define CAP_MKDIR 0x0080000000000000ULL /* mkdirat(2), mknodat(2) */ +#define CAP_RMDIR 0x0100000000000000ULL /* rmdirat(2) */ +#define CAP_MKFIFO 0x0200000000000000ULL /* mkfifoat(2) */ +#define CAP_MASK_VALID 0x03ffffffffffffffULL /* * Notes: From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:49:15 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0FF83106566B; Sat, 30 Jan 2010 19:49:15 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 00EFF8FC0C; Sat, 30 Jan 2010 19:49:15 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJnEje090841; Sat, 30 Jan 2010 19:49:14 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJnEEX090839; Sat, 30 Jan 2010 19:49:14 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301949.o0UJnEEX090839@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:49:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203239 - projects/capabilities8/lib/csu/common X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:49:15 -0000 Author: rwatson Date: Sat Jan 30 19:49:14 2010 New Revision: 203239 URL: http://svn.freebsd.org/changeset/base/203239 Log: Merge c173710 from the p4 TrustedBSD Capabilities branch to capabilities8: Minor style tweak. Sponsored by: Google, Inc. Modified: projects/capabilities8/lib/csu/common/crtbrand.c Modified: projects/capabilities8/lib/csu/common/crtbrand.c ============================================================================== --- projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 19:48:02 2010 (r203238) +++ projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 19:49:14 2010 (r203239) @@ -62,6 +62,5 @@ int cap_main(__unused int argc, __unused write(2, warning, sizeof(warning)); - return -1; + return (-1); } - From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 19:50:33 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F2CDD106566C; Sat, 30 Jan 2010 19:50:33 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E3A938FC16; Sat, 30 Jan 2010 19:50:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UJoXTD091148; Sat, 30 Jan 2010 19:50:33 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UJoXRQ091146; Sat, 30 Jan 2010 19:50:33 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001301950.o0UJoXRQ091146@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 19:50:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203240 - projects/capabilities8/lib/libcapability X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 19:50:34 -0000 Author: rwatson Date: Sat Jan 30 19:50:33 2010 New Revision: 203240 URL: http://svn.freebsd.org/changeset/base/203240 Log: Merge c173711 from the p4 TrustedBSD Capabilities branch to capabilities8: Remove duplicate bzero of msghdr. Sponsored by: Google, Inc. Modified: projects/capabilities8/lib/libcapability/libcapability.c Modified: projects/capabilities8/lib/libcapability/libcapability.c ============================================================================== --- projects/capabilities8/lib/libcapability/libcapability.c Sat Jan 30 19:49:14 2010 (r203239) +++ projects/capabilities8/lib/libcapability/libcapability.c Sat Jan 30 19:50:33 2010 (r203240) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.c#10 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.c#11 $ */ #include @@ -179,7 +179,6 @@ _lc_send_rights(int fd, const void *msg, iov.iov_base = __DECONST(void *, msg); iov.iov_len = len; - bzero(&msghdr, sizeof(msghdr)); bzero(&cmsgbuf, sizeof(cmsgbuf)); cmsg = (struct cmsghdr *)cmsgbuf; cmsg->cmsg_len = CMSG_SPACE(fdcount * sizeof(int)); From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:04:59 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 74BC3106566C; Sat, 30 Jan 2010 20:04:59 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 64BE48FC18; Sat, 30 Jan 2010 20:04:59 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UK4xes094343; Sat, 30 Jan 2010 20:04:59 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UK4xlB094338; Sat, 30 Jan 2010 20:04:59 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302004.o0UK4xlB094338@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:04:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203241 - in projects/capabilities8: lib/libcapability sys/kern X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:04:59 -0000 Author: rwatson Date: Sat Jan 30 20:04:59 2010 New Revision: 203241 URL: http://svn.freebsd.org/changeset/base/203241 Log: Merge c173714 from the p4 TrustedBSD Capabilities branch to capabilities8: open(2) is now properly constrained (it always fails with EOPNOTSUPP), so we can allow the syscall for auditing / debugging purposes This includes Jon's accidentally committed libcapability changes for consistency with the original p4 commit. Submitted by: Jonathan Anderson Modified: projects/capabilities8/lib/libcapability/Makefile projects/capabilities8/lib/libcapability/libcapability.h projects/capabilities8/sys/kern/capabilities.conf projects/capabilities8/sys/kern/init_sysent.c Modified: projects/capabilities8/lib/libcapability/Makefile ============================================================================== --- projects/capabilities8/lib/libcapability/Makefile Sat Jan 30 19:50:33 2010 (r203240) +++ projects/capabilities8/lib/libcapability/Makefile Sat Jan 30 20:04:59 2010 (r203241) @@ -9,7 +9,8 @@ SRCS= \ libcapability_sandbox.c \ libcapability_sandbox_io.c \ libcapability_host.c \ - libcapability_host_io.c + libcapability_host_io.c \ + libcapability_registry.c INCS= libcapability.h Modified: projects/capabilities8/lib/libcapability/libcapability.h ============================================================================== --- projects/capabilities8/lib/libcapability/libcapability.h Sat Jan 30 19:50:33 2010 (r203240) +++ projects/capabilities8/lib/libcapability/libcapability.h Sat Jan 30 20:04:59 2010 (r203241) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#25 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#26 $ */ #ifndef _LIBCAPABILITY_H_ @@ -53,6 +53,30 @@ struct lc_library { }; /* + * A file descriptor "registry" + */ +struct lc_fdregistry_entry; +struct lc_fdregistry { + struct lc_fdregistry_entry *entries; /* registry entries */ + + unsigned int count; /* number of entries */ + unsigned int capacity; /* entries that we can hold */ +}; + +/* + * Registry operations + */ +struct lc_fdregistry* lc_fdregistry_new(void); +struct lc_fdregistry* lc_fdregistry_dup(const struct lc_fdregistry *orig); +void lc_fdregistry_free(struct lc_fdregistry *registry); + +int lc_fdregistry_add(const struct lc_fdregistry *reg, + const char *id, const char *name, int fd); + +int lc_fdregistry_lookup(const struct lc_fdregistry *reg, + const char *id, char **name, int *fdp); + +/* * Capability interfaces. */ int lc_limitfd(int fd, cap_rights_t rights); Modified: projects/capabilities8/sys/kern/capabilities.conf ============================================================================== --- projects/capabilities8/sys/kern/capabilities.conf Sat Jan 30 19:50:33 2010 (r203240) +++ projects/capabilities8/sys/kern/capabilities.conf Sat Jan 30 20:04:59 2010 (r203241) @@ -38,7 +38,7 @@ ## - sys_exit(2), abort2(2) and close(2) are very important. ## - Sorted alphabetically, please keep it that way. ## -## $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#25 $ +## $P4: //depot/projects/trustedbsd/capabilities/src/sys/kern/capabilities.conf#26 $ ## ## @@ -467,6 +467,13 @@ openat renameat ## +## Allow entry into open(2). This system call will fail, since access to the global +## file namespace has been disallowed, but allowing entry into the syscall means +## that an audit trail will be generated (which is also very useful for debugging), +## +open + +## ## Allow poll(2), which will be scoped by capability rights. ## ## XXXRW: Perhaps we don't need the OpenBSD version? Modified: projects/capabilities8/sys/kern/init_sysent.c ============================================================================== --- projects/capabilities8/sys/kern/init_sysent.c Sat Jan 30 19:50:33 2010 (r203240) +++ projects/capabilities8/sys/kern/init_sysent.c Sat Jan 30 20:04:59 2010 (r203241) @@ -39,7 +39,7 @@ struct sysent sysent[] = { { 0, (sy_call_t *)fork, AUE_FORK, NULL, 0, 0, SYF_CAPENABLED }, /* 2 = fork */ { AS(read_args), (sy_call_t *)read, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED }, /* 3 = read */ { AS(write_args), (sy_call_t *)write, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED }, /* 4 = write */ - { AS(open_args), (sy_call_t *)open, AUE_OPEN_RWTC, NULL, 0, 0, 0 }, /* 5 = open */ + { AS(open_args), (sy_call_t *)open, AUE_OPEN_RWTC, NULL, 0, 0, SYF_CAPENABLED }, /* 5 = open */ { AS(close_args), (sy_call_t *)close, AUE_CLOSE, NULL, 0, 0, SYF_CAPENABLED }, /* 6 = close */ { AS(wait_args), (sy_call_t *)wait4, AUE_WAIT4, NULL, 0, 0, 0 }, /* 7 = wait4 */ { compat(AS(ocreat_args),creat), AUE_CREAT, NULL, 0, 0, 0 }, /* 8 = old creat */ From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:06:52 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 79DBF106566B; Sat, 30 Jan 2010 20:06:52 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 698178FC14; Sat, 30 Jan 2010 20:06:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UK6qEb094807; Sat, 30 Jan 2010 20:06:52 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UK6qvg094803; Sat, 30 Jan 2010 20:06:52 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302006.o0UK6qvg094803@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:06:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203242 - projects/capabilities8/lib/libcapability X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:06:52 -0000 Author: rwatson Date: Sat Jan 30 20:06:52 2010 New Revision: 203242 URL: http://svn.freebsd.org/changeset/base/203242 Log: Merge c173834 from the p4 TrustedBSD Capabilities branch to capabilities8: Initial lc_fdlist work. No mmap'ing yet. Submitted by: Jonathan Anderson Added: projects/capabilities8/lib/libcapability/libcapability_fdlist.c Modified: projects/capabilities8/lib/libcapability/Makefile projects/capabilities8/lib/libcapability/libcapability.h Modified: projects/capabilities8/lib/libcapability/Makefile ============================================================================== --- projects/capabilities8/lib/libcapability/Makefile Sat Jan 30 20:04:59 2010 (r203241) +++ projects/capabilities8/lib/libcapability/Makefile Sat Jan 30 20:06:52 2010 (r203242) @@ -10,7 +10,7 @@ SRCS= \ libcapability_sandbox_io.c \ libcapability_host.c \ libcapability_host_io.c \ - libcapability_registry.c + libcapability_fdlist.c INCS= libcapability.h Modified: projects/capabilities8/lib/libcapability/libcapability.h ============================================================================== --- projects/capabilities8/lib/libcapability/libcapability.h Sat Jan 30 20:04:59 2010 (r203241) +++ projects/capabilities8/lib/libcapability/libcapability.h Sat Jan 30 20:06:52 2010 (r203242) @@ -30,13 +30,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#26 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability.h#27 $ */ #ifndef _LIBCAPABILITY_H_ #define _LIBCAPABILITY_H_ #include +#include __BEGIN_DECLS @@ -52,29 +53,53 @@ struct lc_library { int lcl_fd; }; -/* - * A file descriptor "registry" - */ -struct lc_fdregistry_entry; -struct lc_fdregistry { - struct lc_fdregistry_entry *entries; /* registry entries */ - unsigned int count; /* number of entries */ - unsigned int capacity; /* entries that we can hold */ -}; +/* A list of file descriptors, which can be passed around in shared memory */ +struct lc_fdlist; + + +struct lc_fdlist* lc_fdlist_new(void); +struct lc_fdlist* lc_fdlist_dup(struct lc_fdlist *orig); +void lc_fdlist_free(struct lc_fdlist *l); + +/* Size of an FD list in bytes, including all associated string data */ +int lc_fdlist_size(struct lc_fdlist *l); + /* - * Registry operations + * Add a file descriptor to the list. + * + * l the list to add to + * subsystem a software component name, e.g. "org.freebsd.rtld-elf" + * classname a class name, e.g. "libdir" or "library" + * name an instance name, e.g. "system library dir" or "libc.so.6" + * fd the file descriptor */ -struct lc_fdregistry* lc_fdregistry_new(void); -struct lc_fdregistry* lc_fdregistry_dup(const struct lc_fdregistry *orig); -void lc_fdregistry_free(struct lc_fdregistry *registry); +int lc_fdlist_add(struct lc_fdlist **l, + const char *subsystem, const char *classname, + const char *name, int fd); -int lc_fdregistry_add(const struct lc_fdregistry *reg, - const char *id, const char *name, int fd); +/* + * Like lc_fdlist_add(), but allows capability rights to be specified. The file + * descriptor will be wrapped in a capability with the given rights (so if the + * descriptor *is* a capability, its rights will be constrained according to this + * rights mask) + */ +int lc_fdlist_addcap(struct lc_fdlist **l, + const char *subsystem, const char *classname, + const char *name, int fd, cap_rights_t rights); -int lc_fdregistry_lookup(const struct lc_fdregistry *reg, - const char *id, char **name, int *fdp); +/* + * Look up a file descriptor. + * + * Multiple entries with the same classname are allowed, so iterating through + * all instances of a class is done by supplying an integer 'pos' which is used + * internally to skip entries which have already been seen. If 'pos' is 0 or NULL, + * the first matching entry will be returned. + */ +int lc_fdlist_lookup(struct lc_fdlist *l, + const char *subsystem, const char *classname, + char **name, int *fdp, int *pos); /* * Capability interfaces. Added: projects/capabilities8/lib/libcapability/libcapability_fdlist.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/lib/libcapability/libcapability_fdlist.c Sat Jan 30 20:06:52 2010 (r203242) @@ -0,0 +1,332 @@ +/*- + * Copyright (c) 2009 Jonathan Anderson + * All rights reserved. + * + * WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED + * ON IN PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND + * UNEXPECTED WAYS. + * + * This software was developed at the University of Cambridge Computer + * Laboratory with support from a grant from Google, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapability/libcapability_fdlist.c#1 $ + */ + +#include +#include +#include +#include +#include + + +struct lc_fdlist_entry { + + unsigned int sysoff; /* offset of e.g. "org.freebsd.rtld-elf-cap" */ + unsigned int syslen; /* length of above */ + + unsigned int idoff; /* offset of variable ID e.g. "libs" */ + unsigned int idlen; /* length of above */ + + unsigned int nameoff; /* offset of entry name (e.g. "libc.so.7") */ + unsigned int namelen; /* length of above */ + + int fd; /* the file descriptor */ +}; + + +struct lc_fdlist { + + unsigned int count; /* number of entries */ + unsigned int capacity; /* entries that we can hold */ + + unsigned int namelen; /* bytes of name data */ + unsigned int namecapacity; /* bytes of name data we can hold */ + + pthread_mutex_t lock; /* for thread safety */ + + struct lc_fdlist_entry entries[]; /* entries in the descriptor list */ + + /* followed by bytes of name data */ +}; + + + + +#define LOCK(l) pthread_mutex_lock(&((l)->lock)); +#define UNLOCK(l) pthread_mutex_unlock(&((l)->lock)); + +/* Where an FD list's name byte array starts */ +char* lc_fdlist_names(struct lc_fdlist *l); + + + +#define INITIAL_ENTRIES 16 +#define INITIAL_NAMEBYTES (64 * INITIAL_ENTRIES) + + +struct lc_fdlist* +lc_fdlist_new(void) { + + int bytes = sizeof(struct lc_fdlist) + + INITIAL_ENTRIES * sizeof(struct lc_fdlist_entry) + + INITIAL_NAMEBYTES; + + struct lc_fdlist *fdlist = malloc(bytes); + if (fdlist == NULL) return (NULL); + + fdlist->count = 0; + fdlist->capacity = INITIAL_ENTRIES; + fdlist->namelen = 0; + fdlist->namecapacity = INITIAL_NAMEBYTES; + + if (pthread_mutex_init(&fdlist->lock, NULL)) { + free(fdlist); + return NULL; + } + + return fdlist; +} + + +struct lc_fdlist* +lc_fdlist_dup(struct lc_fdlist *orig) { + + LOCK(orig); + + int size = lc_fdlist_size(orig); + + struct lc_fdlist *copy = malloc(size); + if (copy == NULL) return (NULL); + + UNLOCK(orig); + + return copy; +} + + +void +lc_fdlist_free(struct lc_fdlist *l) { + + LOCK(l); + + pthread_mutex_destroy(&l->lock); + free(l); +} + + + +int +lc_fdlist_add(struct lc_fdlist **fdlist, + const char *subsystem, const char *id, + const char *name, int fd) { + + struct lc_fdlist *l = *fdlist; + + LOCK(l); + + /* do we need more entry space? */ + if (l->count == l->capacity) { + + /* move name data out of the way */ + char *tmp = NULL; + if (l->namelen > 0) { + tmp = malloc(l->namelen); + if (tmp == NULL) { + UNLOCK(l); + return (-1); + } + + memcpy(tmp, lc_fdlist_names(l), l->namelen); + } + + /* double the number of available entries */ + int namebytes_per_entry = l->namecapacity / l->capacity; + int newnamebytes = l->capacity * namebytes_per_entry; + + int newsize = lc_fdlist_size(l) + newnamebytes + + l->capacity * sizeof(struct lc_fdlist_entry); + + struct lc_fdlist *copy = realloc(l, newsize); + if (copy == NULL) { + free(tmp); + UNLOCK(l); + return (-1); + } + + copy->capacity *= 2; + copy->namecapacity += newnamebytes; + + /* copy name bytes back */ + if (copy->namelen > 0) + memcpy(lc_fdlist_names(copy), tmp, copy->namelen); + + free(tmp); + + *fdlist = copy; + l = *fdlist; + } + + + /* do we need more name space? */ + int subsyslen = strlen(subsystem); + int idlen = strlen(id); + int namelen = strlen(name); + + if ((l->namelen + subsyslen + idlen + namelen) >= l->namecapacity) { + + /* double the name capacity */ + struct lc_fdlist* enlarged + = realloc(l, lc_fdlist_size(l) + l->namecapacity); + + if (enlarged == NULL) { + UNLOCK(l); + return (-1); + } + + enlarged->namecapacity *= 2; + *fdlist = enlarged; + l = *fdlist; + } + + + /* create the new entry */ + struct lc_fdlist_entry *entry = l->entries + l->count; + + entry->fd = fd; + + char *names = lc_fdlist_names(l); + char *head = names + l->namelen; + + strncpy(head, subsystem, subsyslen + 1); + entry->sysoff = (head - names); + entry->syslen = subsyslen; + head += subsyslen + 1; + + strncpy(head, id, idlen + 1); + entry->idoff = (head - names); + entry->idlen = idlen; + head += idlen + 1; + + strncpy(head, name, namelen + 1); + entry->nameoff = (head - names); + entry->namelen = namelen + 1; + head += namelen + 1; + + l->count++; + l->namelen = (head - names); + + UNLOCK(l); + + return 0; +} + + +int +lc_fdlist_addcap(struct lc_fdlist **fdlist, + const char *subsystem, const char *id, + const char *name, int fd, cap_rights_t rights) { + + int cap = cap_new(fd, rights); + + return lc_fdlist_add(fdlist, subsystem, id, name, cap); +} + + +int +lc_fdlist_lookup(struct lc_fdlist *l, + const char *subsystem, const char *id, char **name, int *fdp, + int *pos) { + + LOCK(l); + + int successful = 0; + const char *names = lc_fdlist_names(l); + + for (unsigned int i = (pos ? *pos + 1 : 0); i < l->count; i++) { + + struct lc_fdlist_entry *entry = l->entries + i; + + if (!strncmp(subsystem, names + entry->sysoff, entry->syslen + 1) + && !strncmp(id, names + entry->idoff, entry->idlen + 1)) { + + /* found a matching entry! */ + *name = malloc(entry->namelen + 1); + strncpy(*name, names + entry->nameoff, entry->namelen + 1); + + *fdp = entry->fd; + + if (pos) *pos = i; + successful = 1; + + break; + } + } + + UNLOCK(l); + + if (successful) return 0; + else { + errno = ENOENT; + return (-1); + } +} + + +int +lc_fdlist_size(struct lc_fdlist* l) { + + LOCK(l); + + if (l == NULL) { + errno = EINVAL; + return (-1); + } + + int size = sizeof(struct lc_fdlist) + + l->capacity * sizeof(struct lc_fdlist_entry) + + l->namecapacity; + + UNLOCK(l); + + return size; +} + + +char* +lc_fdlist_names(struct lc_fdlist *l) { + + LOCK(l); + + if (l == NULL) { + errno = EINVAL; + return NULL; + } + + char *names = ((char*) l) + lc_fdlist_size(l) - l->namecapacity; + + UNLOCK(l); + + return names; +} + From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:28:39 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AE948106568B; Sat, 30 Jan 2010 20:28:39 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9C6138FC08; Sat, 30 Jan 2010 20:28:39 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKSd8m099665; Sat, 30 Jan 2010 20:28:39 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKSdIk099655; Sat, 30 Jan 2010 20:28:39 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302028.o0UKSdIk099655@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:28:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203243 - in projects/capabilities8: lib lib/libc/sys lib/libcapability lib/libcapsicum usr.bin/gzip X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:28:39 -0000 Author: rwatson Date: Sat Jan 30 20:28:39 2010 New Revision: 203243 URL: http://svn.freebsd.org/changeset/base/203243 Log: Merge c173835 from the p4 TrustedBSD Capabilities branch to capabilities8: libcapability => libcapsicum Submitted by: Jonathan Anderson Added: projects/capabilities8/lib/libcapsicum/ projects/capabilities8/lib/libcapsicum/libcapsicum.3 projects/capabilities8/lib/libcapsicum/libcapsicum.c projects/capabilities8/lib/libcapsicum/libcapsicum.h projects/capabilities8/lib/libcapsicum/libcapsicum_host.3 projects/capabilities8/lib/libcapsicum/libcapsicum_host.c projects/capabilities8/lib/libcapsicum/libcapsicum_host_io.c projects/capabilities8/lib/libcapsicum/libcapsicum_internal.h projects/capabilities8/lib/libcapsicum/libcapsicum_sandbox.3 projects/capabilities8/lib/libcapsicum/libcapsicum_sandbox.c projects/capabilities8/lib/libcapsicum/libcapsicum_sandbox_api.h projects/capabilities8/lib/libcapsicum/libcapsicum_sandbox_io.c projects/capabilities8/lib/libcapsicum/libscapsicum_sandbox.c Deleted: projects/capabilities8/lib/libcapability/ Modified: projects/capabilities8/lib/Makefile projects/capabilities8/lib/libc/sys/cap_enter.2 projects/capabilities8/lib/libc/sys/cap_new.2 projects/capabilities8/usr.bin/gzip/Makefile projects/capabilities8/usr.bin/gzip/gzsandbox.c Modified: projects/capabilities8/lib/Makefile ============================================================================== --- projects/capabilities8/lib/Makefile Sat Jan 30 20:06:52 2010 (r203242) +++ projects/capabilities8/lib/Makefile Sat Jan 30 20:28:39 2010 (r203243) @@ -32,7 +32,7 @@ SUBDIR= ${_csu} libc libbsm libauditd li ncurses ${_libnetgraph} libradius librpcsvc libsbuf \ libtacplus libutil ${_libypclnt} libalias libarchive ${_libatm} \ libbegemot ${_libbluetooth} ${_libbsnmp} libbz2 \ - libcalendar libcam libcapability libcompat \ + libcalendar libcam libcapsicum libcompat \ libdevinfo libdevstat \ libdisk \ libdwarf libedit libexpat libfetch libftpio libgeom ${_libgpib} \ Modified: projects/capabilities8/lib/libc/sys/cap_enter.2 ============================================================================== --- projects/capabilities8/lib/libc/sys/cap_enter.2 Sat Jan 30 20:06:52 2010 (r203242) +++ projects/capabilities8/lib/libc/sys/cap_enter.2 Sat Jan 30 20:28:39 2010 (r203243) @@ -68,7 +68,7 @@ When combined with capabilities created may be used to create kernel-enforced sandboxes in which appropriately-crafted applications or application components may be run. Most sandboxes will be created and managed using the -.Xr libcapability +.Xr libcapsicum library, rather than using system calls directly. .Pp .Fn cap_getmode @@ -97,7 +97,7 @@ acquired rights as possible. .Sh SEE ALSO .Xr cap_new 2 , .Xr fexecve 2 , -.Xr libcapability 3 +.Xr libcapsicum 3 .Sh HISTORY Support for capabilities and capabilities mode was developed as part of the .Tn TrustedBSD Modified: projects/capabilities8/lib/libc/sys/cap_new.2 ============================================================================== --- projects/capabilities8/lib/libc/sys/cap_new.2 Sat Jan 30 20:06:52 2010 (r203242) +++ projects/capabilities8/lib/libc/sys/cap_new.2 Sat Jan 30 20:28:39 2010 (r203243) @@ -88,7 +88,7 @@ descriptor, including open file flags, b Many applications will prefer to use the .Xr cap_limitfd 3 library call, part of -.Xr libcapability 3 , +.Xr libcapsicum 3 , as it offers a more convenient interface. .Pp .Fn cap_getrights @@ -455,7 +455,7 @@ argument is not a capability. .Xr unlinkat 2 , .Xr write 2 , .Xr cap_limitfd 3 , -.Xr libcapability 3 , +.Xr libcapsicum 3 , .Xr sem_getvalue 3 , .Xr sem_post 3 , .Xr sem_trywait 3 , Added: projects/capabilities8/lib/libcapsicum/libcapsicum.3 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/lib/libcapsicum/libcapsicum.3 Sat Jan 30 20:28:39 2010 (r203243) @@ -0,0 +1,116 @@ +.\" +.\" Copyright (c) 2009 Robert N. M. Watson +.\" All rights reserved. +.\" +.\" WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED +.\" ON IN PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND +.\" UNEXPECTED WAYS. +.\" +.\" This software was developed at the University of Cambridge Computer +.\" Laboratory with support from a grant from Google, Inc. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd June 11, 2009 +.Os +.Dt LIBCAPABILITY 3 +.Sh NAME +.Nm libcapsicum +.Nd "library interface to capability-mode services" +.Sh LIBRARY +.Lb libcapsicum +.Sh SYNOPSIS +.In sys/types.h +.In sys/capability.h +.In libcapsicum.h +.Ft int +.Fn lc_limitfd "int fd" "cap_rights_t rights" +.Sh DESCRIPTION +.Nm +implements APIs that allow applications to create, manage, and interact with +sandboxed software services running in capability mode, described in +.Xr cap_enter 2 . +Applications linked against +.Nm +will use one or both of "host" and "sandbox" APIs, depending on whether they +consume or produce sandboxed services. +.Nm +will start sandboxed components using a sandbox-specific run-time linker, +.Xr rtld-elf-cap 1 , +rather than the standard +.Xr rtld-elf 1 . +.Pp +Host processes use the +.Nm +host API, +described in +.Xr libcapsicum_host 3 , +to launch compartmentalized components in sandboxes. +They may also use +.Nm +to communication with the sandboxed service based on socket I/O or remote +procedure call (RPC). +.Pp +Sandbox processes run in capability mode, and are only able to use resources +either assigned to the sandbox during creation, or later explicitly passed to +the process. +Sandbox processes use the +.Nm +sandbox API, +described in +.Xr libcapsicum_sandbox 3 . +Sandboxed processes themselves may launch software components in further +sandboxes, so a single program may use both host and sandbox APIs. +.Sh CAPABILITY API +.Fn lc_limitfd +is a wrapper around +.Xr cap_new 2 , +.Xr dup2 2 , +and +.Xr close 2 . +which takes an existing file descriptor and replaces it with a capability +with the requested rights mask. +.Sh SEE ALSO +.Xr rpcgen 1 , +.Xr rtld-elf 1 , +.Xr rtld-elf-cap 1 , +.Xr cap_enter 2 , +.Xr cap_new 2 , +.Xr close 2 , +.Xr dup2 2 , +.Xr libcapsicum_host 3 , +.Xr libcapsicum_sandbox 3 , +.Xr unix 4 +.Sh HISTORY +Support for capabilities and capabilities mode was developed as part of the +.Tn TrustedBSD +Project. +.Sh BUGS +WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED ON IN +PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND UNEXPECTED WAYS. +.Sh AUTHORS +These functions and the capability facility were created by +.An "Robert N. M. Watson" +at the University of Cambridge Computer Laboratory with support from a grant +from Google, Inc. Added: projects/capabilities8/lib/libcapsicum/libcapsicum.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/lib/libcapsicum/libcapsicum.c Sat Jan 30 20:28:39 2010 (r203243) @@ -0,0 +1,268 @@ +/*- + * Copyright (c) 2009 Robert N. M. Watson + * All rights reserved. + * + * WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED + * ON IN PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND + * UNEXPECTED WAYS. + * + * This software was developed at the University of Cambridge Computer + * Laboratory with support from a grant from Google, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum.c#1 $ + */ + +#include +#include +#include + +#include +#include +#include + +#include "libcapsicum.h" +#include "libcapsicum_internal.h" +#include "libcapsicum_sandbox_api.h" + +int +lc_limitfd(int fd, cap_rights_t rights) +{ + int fd_cap; + int error; + + fd_cap = cap_new(fd, rights); + if (fd_cap < 0) + return (-1); + if (dup2(fd_cap, fd) < 0) { + error = errno; + close(fd_cap); + errno = error; + return (-1); + } + close(fd_cap); + return (0); +} + +void +_lc_dispose_rights(int *fdp, int fdcount) +{ + int i; + + for (i = 0; i < fdcount; i++) + close(fdp[i]); +} + +/* + * Given a 'struct msghdr' returned by a successful call to recvmsg(), + * extract up to the desired number of file descriptors (or clean up the + * mess if something goes wrong). + */ +int +_lc_receive_rights(struct msghdr *msg, int *fdp, int *fdcountp) +{ + int *cmsg_fdp, fdcount, i, scmrightscount; + struct cmsghdr *cmsg; + + /* + * Walk the complete control message chain to count received control + * messages and rights. If there is more than one rights message or + * there are too many file descriptors, re-walk and close them all + * and return an error. + */ + fdcount = 0; + scmrightscount = 0; + for (cmsg = CMSG_FIRSTHDR(msg); cmsg != NULL; + cmsg = CMSG_NXTHDR(msg, cmsg)) { + if (cmsg->cmsg_level != SOL_SOCKET || + cmsg->cmsg_type != SCM_RIGHTS) + continue; + fdcount += (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int); + scmrightscount++; + } + if (scmrightscount > 1 || fdcount > *fdcountp) { + for (cmsg = CMSG_FIRSTHDR(msg); cmsg != NULL; + cmsg = CMSG_NXTHDR(msg, cmsg)) { + if (cmsg->cmsg_level != SOL_SOCKET || + cmsg->cmsg_type != SCM_RIGHTS) + continue; + cmsg_fdp = (int *)CMSG_DATA(cmsg); + fdcount = (cmsg->cmsg_len - CMSG_LEN(0)) / + sizeof(int); + _lc_dispose_rights(cmsg_fdp, fdcount); + } + errno = EBADMSG; + return (-1); + } + + /* + * Re-walk the control messages and copy out the file descriptor + * numbers, return success. No need to recalculate fdcount. + */ + for (cmsg = CMSG_FIRSTHDR(msg); cmsg != NULL; + cmsg = CMSG_NXTHDR(msg, cmsg)) { + if (cmsg->cmsg_level != SOL_SOCKET || + cmsg->cmsg_type != SCM_RIGHTS) + continue; + cmsg_fdp = (int *)CMSG_DATA(cmsg); + for (i = 0; i < fdcount; i++) + fdp[i] = cmsg_fdp[i]; + } + *fdcountp = fdcount; + return (0); +} + +ssize_t +_lc_send(int fd, const void *msg, size_t len, int flags, int lc_flags) +{ + ssize_t retlen; + + if (fd == -1 || fd == 0) { + errno = ECHILD; + return (-1); + } + if (lc_flags & LC_IGNOREEINTR) { + do { + retlen = send(fd, msg, len, flags); + } while (retlen < 0 && errno == EINTR); + } else + retlen = send(fd, msg, len, flags); + return (retlen); +} + +ssize_t +_lc_send_rights(int fd, const void *msg, size_t len, int flags, int lc_flags, + int *fdp, int fdcount) +{ + char cmsgbuf[CMSG_SPACE(LIBCAPABILITY_SANDBOX_API_MAXRIGHTS * + sizeof(int))]; + struct cmsghdr *cmsg; + struct msghdr msghdr; + struct iovec iov; + ssize_t retlen; + int i; + + if (fdcount == 0) + return (_lc_send(fd, msg, len, flags, lc_flags)); + + if (fd == -1 || fd == 0) { + errno = ECHILD; + return (-1); + } + + if (fdcount > LIBCAPABILITY_SANDBOX_API_MAXRIGHTS) { + errno = EMSGSIZE; + return (-1); + } + + bzero(&iov, sizeof(iov)); + iov.iov_base = __DECONST(void *, msg); + iov.iov_len = len; + + bzero(&cmsgbuf, sizeof(cmsgbuf)); + cmsg = (struct cmsghdr *)cmsgbuf; + cmsg->cmsg_len = CMSG_SPACE(fdcount * sizeof(int)); + cmsg->cmsg_level = SOL_SOCKET; + cmsg->cmsg_type = SCM_RIGHTS; + for (i = 0; i < fdcount; i++) + ((int *)CMSG_DATA(cmsg))[i] = fdp[i]; + + bzero(&msghdr, sizeof(msghdr)); + msghdr.msg_iov = &iov; + msghdr.msg_iovlen = 1; + msghdr.msg_control = cmsg; + msghdr.msg_controllen = cmsg->cmsg_len; + + if (lc_flags & LC_IGNOREEINTR) { + do { + retlen = sendmsg(fd, &msghdr, flags); + } while (retlen < 0 && errno == EINTR); + } else + retlen = sendmsg(fd, &msghdr, flags); + return (retlen); +} + +ssize_t +_lc_recv(int fd, void *buf, size_t len, int flags, int lc_flags) +{ + ssize_t retlen; + + if (fd == -1 || fd == 0) { + errno = ESRCH; + return (-1); + } + if (lc_flags & LC_IGNOREEINTR) { + do { + retlen = recv(fd, buf, len, flags); + } while (retlen < 0 && errno == EINTR); + return (retlen); + } else + return (recv(fd, buf, len, flags)); +} + +ssize_t +_lc_recv_rights(int fd, void *buf, size_t len, int flags, int lc_flags, + int *fdp, int *fdcountp) +{ + char cmsgbuf[CMSG_SPACE(LIBCAPABILITY_SANDBOX_API_MAXRIGHTS * + sizeof(int))]; + struct msghdr msghdr; + struct iovec iov; + ssize_t retlen; + + if (*fdcountp == 0) + return (_lc_recv(fd, buf, len, flags, lc_flags)); + + if (fd == -1 || fd == 0) { + errno = ECHILD; + return (-1); + } + + if (*fdcountp > LIBCAPABILITY_SANDBOX_API_MAXRIGHTS) { + errno = EMSGSIZE; + return (-1); + } + + bzero(&iov, sizeof(iov)); + iov.iov_base = buf; + iov.iov_len = len; + + bzero(cmsgbuf, sizeof(cmsgbuf)); + bzero(&msghdr, sizeof(msghdr)); + msghdr.msg_iov = &iov; + msghdr.msg_iovlen = 1; + msghdr.msg_control = cmsgbuf; + msghdr.msg_controllen = sizeof(cmsgbuf); + + if (lc_flags & LC_IGNOREEINTR) { + do { + retlen = recvmsg(fd, &msghdr, flags); + } while (retlen < 0 && errno == EINTR); + } else + retlen = recvmsg(fd, &msghdr, flags); + if (retlen < 0) + return (-1); + if (_lc_receive_rights(&msghdr, fdp, fdcountp) < 0) + return (-1); + return (retlen); +} Added: projects/capabilities8/lib/libcapsicum/libcapsicum.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/lib/libcapsicum/libcapsicum.h Sat Jan 30 20:28:39 2010 (r203243) @@ -0,0 +1,212 @@ +/*- + * Copyright (c) 2009 Robert N. M. Watson + * All rights reserved. + * + * WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED + * ON IN PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND + * UNEXPECTED WAYS. + * + * This software was developed at the University of Cambridge Computer + * Laboratory with support from a grant from Google, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum.h#1 $ + */ + +#ifndef _LIBCAPABILITY_H_ +#define _LIBCAPABILITY_H_ + +#include +#include + +__BEGIN_DECLS + +struct lc_sandbox; +struct lc_host; + +/* + * Description of a library passed to lch_start_libs(). + */ +struct lc_library { + const char *lcl_libpath; + const char *lcl_libname; + int lcl_fd; +}; + + +/* A list of file descriptors, which can be passed around in shared memory */ +struct lc_fdlist; + + +struct lc_fdlist* lc_fdlist_new(void); +struct lc_fdlist* lc_fdlist_dup(struct lc_fdlist *orig); +void lc_fdlist_free(struct lc_fdlist *l); + +/* Size of an FD list in bytes, including all associated string data */ +int lc_fdlist_size(struct lc_fdlist *l); + + +/* + * Add a file descriptor to the list. + * + * l the list to add to + * subsystem a software component name, e.g. "org.freebsd.rtld-elf" + * classname a class name, e.g. "libdir" or "library" + * name an instance name, e.g. "system library dir" or "libc.so.6" + * fd the file descriptor + */ +int lc_fdlist_add(struct lc_fdlist **l, + const char *subsystem, const char *classname, + const char *name, int fd); + +/* + * Like lc_fdlist_add(), but allows capability rights to be specified. The file + * descriptor will be wrapped in a capability with the given rights (so if the + * descriptor *is* a capability, its rights will be constrained according to this + * rights mask) + */ +int lc_fdlist_addcap(struct lc_fdlist **l, + const char *subsystem, const char *classname, + const char *name, int fd, cap_rights_t rights); + +/* + * Look up a file descriptor. + * + * Multiple entries with the same classname are allowed, so iterating through + * all instances of a class is done by supplying an integer 'pos' which is used + * internally to skip entries which have already been seen. If 'pos' is 0 or NULL, + * the first matching entry will be returned. + */ +int lc_fdlist_lookup(struct lc_fdlist *l, + const char *subsystem, const char *classname, + char **name, int *fdp, int *pos); + +/* + * Capability interfaces. + */ +int lc_limitfd(int fd, cap_rights_t rights); + +/* + * Global policy interface to ask whether we should, in fact, sandbox a + * particular optionally sandboxed service, by name. + */ +int lch_autosandbox_isenabled(const char *servicename); + +/* + * Interfaces to start and stop capability mode sandboxs. + */ +int lch_start(const char *sandbox, char *const argv[], u_int flags, + struct lc_sandbox **lcspp); +int lch_start_libs(const char *sandbox, char *const argv[], u_int flags, + struct lc_library *lclp, u_int lcl_count, + struct lc_sandbox **lcspp); +int lch_startfd(int fd_sandbox, const char *binname, char *const argv[], + u_int flags, struct lc_sandbox **lcspp); +int lch_startfd_libs(int fd_sandbox, const char *binname, + char *const argv[], u_int flags, struct lc_library *lclp, + u_int lcl_count, struct lc_sandbox **lcspp); +void lch_stop(struct lc_sandbox *lcsp); + +/* + * Flags to lch_start_flags: + */ +#define LCH_PERMIT_STDERR 0x00000001 +#define LCH_PERMIT_STDOUT 0x00000002 + +/* + * Interfaces to query state about capability mode sandboxs. + */ +int lch_getsock(struct lc_sandbox *lcsp, int *fdp); +int lch_getpid(struct lc_sandbox *lcsp, pid_t *pidp); +int lch_getprocdesc(struct lc_sandbox *lcsp, int *fdp); + +/* + * Message-passing APIs for the host environment. + */ +struct iovec; +ssize_t lch_recv(struct lc_sandbox *lcsp, void *buf, size_t len, int flags); +ssize_t lch_recv_rights(struct lc_sandbox *lcsp, void *buf, size_t len, + int flags, int *fdp, int *fdcountp); +ssize_t lch_send(struct lc_sandbox *lcsp, const void *msg, size_t len, + int flags); +ssize_t lch_send_rights(struct lc_sandbox *lcsp, const void *msg, size_t len, + int flags, int *fdp, int fdcount); + +/* + * RPC APIs for the host environment. + */ +int lch_rpc(struct lc_sandbox *lcsp, u_int32_t opno, struct iovec *req, + int reqcount, struct iovec *rep, int repcount, size_t *replenp); +int lch_rpc_rights(struct lc_sandbox *lcsp, u_int32_t opno, + struct iovec *req, int reqcount, int *req_fdp, int req_fdcount, + struct iovec *rep, int repcount, size_t *replenp, int *rep_fdp, + int *rep_fdcountp); + +/* + * Interfaces to query state from within capability mode sandboxes. + */ +int lcs_get(struct lc_host **lchpp); +int lcs_getsock(struct lc_host *lchp, int *fdp); + +/* + * Message-passing APIs for the sandbox environment. + */ +ssize_t lcs_recv(struct lc_host *lchp, void *buf, size_t len, int flags); +ssize_t lcs_recv_rights(struct lc_host *lchp, void *buf, size_t len, + int flags, int *fdp, int *fdcountp); +ssize_t lcs_send(struct lc_host *lchp, const void *msg, size_t len, + int flags); +ssize_t lcs_send_rights(struct lc_host *lchp, const void *msg, size_t len, + int flags, int *fdp, int fdcount); + +/* + * RPC APIs for the sandbox environment. + */ +int lcs_recvrpc(struct lc_host *lchp, u_int32_t *opnop, + u_int32_t *seqnop, u_char **bufferp, size_t *lenp); +int lcs_recvrpc_rights(struct lc_host *lchp, u_int32_t *opnop, + u_int32_t *seqnop, u_char **bufferp, size_t *lenp, int *fdp, + int *fdcountp); +int lcs_sendrpc(struct lc_host *lchp, u_int32_t opno, u_int32_t seqno, + struct iovec *rep, int repcount); +int lcs_sendrpc_rights(struct lc_host *lchp, u_int32_t opno, + u_int32_t seqno, struct iovec *rep, int repcount, int *fdp, + int fdcount); + +/* + * Actually an rtld-elf-cap symbol, but declared here so it is available to + * applications. + */ +int ld_libcache_lookup(const char *libname, int *fdp); +int ld_insandbox(void); + +/* + * Applications may declare an alternative entry point to the default ELF + * entry point for their binary, which will be used in preference to 'main' + * in the sandbox environment. + */ +int cap_main(int argc, char *argv[]); + +__END_DECLS + +#endif /* !_LIBCAPABILITY_H_ */ Added: projects/capabilities8/lib/libcapsicum/libcapsicum_host.3 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_host.3 Sat Jan 30 20:28:39 2010 (r203243) @@ -0,0 +1,236 @@ +.\" +.\" Copyright (c) 2009 Robert N. M. Watson +.\" All rights reserved. +.\" +.\" WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED +.\" ON IN PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND +.\" UNEXPECTED WAYS. +.\" +.\" This software was developed at the University of Cambridge Computer +.\" Laboratory with support from a grant from Google, Inc. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD$ +.\" +.Dd June 11, 2009 +.Os +.Dt LIBCAPABILITY_HOST 3 +.Sh NAME +.Nm libcapsicum +.Nd "library interface to capability-mode services" +.Sh LIBRARY +.Lb libcapsicum +.Sh SYNOPSIS +.In sys/types.h +.In sys/capability.h +.In libcapsicum.h +.Ft int +.Fn lch_start "const char *sandbox" "char *const argv[]" "u_int flags" "struct lc_sandbox **lcsp" +.Ft int +.Fn lch_startfd "int fd_sandbox" "char *const argv[]" "u_int flags" "struct lc_sandbox **lcsp" +.Ft void +.Fn lch_stop "struct lc_sandbox *lcsp" +.Ft int +.Fn lch_autosandbox_isenabled "const char *servicename" +.Ft int +.Fn lch_getsock "struct lc_sandbox *lcsp" "int *fdp" +.Ft int +.Fn lch_getpid "struct lc_sandbox *lcsp" "pid_t *pidp" +.Ft int +.Fn lch_getprocdesc "struct lc_sandbox *lcsp" "int *fdp" +.Ft ssize_t +.Fn lch_recv "struct lc_sandbox *lcsp, void *buf" "size_t len" "int flags" +.Ft ssize_t +.Fn lch_recv_rights "struct lc_sandbox *lcsp" "void *buf" "size_t len" "int flags" "int *fdp" "int *fdcountp" +.Ft int +.Fn lch_rpc "struct lc_sandbox *lcsp" "u_int32_t opno" "struct iovec *req" "int reqcount" "struct iovec *rep" "int repcount" "size_t *replenp" +.Ft int +.Fn lch_rpc_rights "struct lc_sandbox *lcsp" "u_int32_t opno" "struct iovec *req" "int reqcount" "int *req_fdp" "int req_fdcount" "struct iovec *rep" "int repcount" "size_t *replenp" "int *rep_fdp" "int *rep_fdcountp" +.Ft ssize_t +.Fn lch_send "struct lc_sandbox *lcsp" "const void *msg" "size_t len" "int flags" +.Ft ssize_t +.Fn lch_send_rights "struct lc_sandbox *lcsp" "const void *msg" "size_t len" "int flags" "int *fdp" "int fdcount" +.Sh DESCRIPTION +The +.Nm +library routines provide services for processes hosting or running in +capability mode. +Depending on the requirements of the host and sandbox, the API can simply be +used to set up and stop sandboxes, used to manage I/O using a +.Xr unix 4 +domain socket connection to the sandbox, or can provide a basic remote +procedure call (RPC) facility. +Applications may also use RPC generators such as +.Xr rpcgen 1 +to build event handling and marshaling code. +.Pp +This man page describes the host API. +General information on +.Nm +may be found in +.Xr libcapsicum 3 . +Information on the sandbox API may be found in +.Xr libcapsicum_sandbox 3 . +.Sh HOST API +The +.Nm +host API allows processes to start, stop, and manage sandboxes running in +capability mode. +Host API functions can be identified by their function name prefix, +.Dv lch_ . +.Pp +Each executing sandbox instance is described by an opaque +.Dt "struct lc_sandbox *" , +which is returned by +.Fn lch_start +for successfully started sandboxes, and passed into other APIs to indicate +which sandbox should be acted on. +.Fn lch_start +creates a new executing sandboxes, given the name of the sandbox binary via +.Va sandbox , +and command line arguments +.Va argv , +and optional flags +.Va flags +to fine-tune aspects of sandbox operation; the only currently defined flag is +.Dv LCH_PERMIT_STDERR , +which allows the sandbox to write to the current process's +.Dv stderr . +By default, this is not permitted. +.Pp +.Fn lch_startfd +accept a file descriptor argument, +.Va fd_sandbox , +rather than a path, so is appropriate for use within a sandbox. +.Pp +Executing sandboxes may be stopped (and all state freed) using +.Fn lch_stop . +Following a call to +.Fn lch_stop , +the +.Va lchp +argument will no longer be valid. +.Pp +Libraries and tools performing self-compartmentalization can use the +interface +.Nm lch_autosandbox_isenabled +along with a unique string identifying their service to determine whether or +not a global policy affecting the service requires sandboxing to be enabled +or not. +.Pp +Properties of the sandbox, such as the socket used to communicate with it, +the proces descriptor for the sandbox process, and the pid, may be queried +using +.Fn lch_getsock , +.Fn lch_getprocdesc , +and +.Fn lch_getpid . +.Pp +.Nm +implements a number of I/O functions as part of the host API, which are +documented in +.Xr libcapsicum_host 3 . +.Fn lch_recv +and +.Fn lch_send +provide simple wrappers around +.Xr recv 2 +and +.Xr send 2 +to avoid sandbox consumers from having to query sandbox socket file +descriptors before use. +.Pp +.Fn lch_recv_rights +and +.Fn lch_send_rights +are similar, but allow file descriptors to be attached the the messages +received and sent. +Both accept a pointer to a file descriptor array, +.Va fdp . +Callers to +.Fn lch_recv_rights +will pass in the length of the array via +.Va fdcountp , +whose value will be changed to the actual number of file descriptors +received. +Callers to +.Fn lch_send_rights +will pass in the number of file descriptors in the array via +.Va fdcount . +.Pp +.Fn lch_rpc +provides a simple synchronous RPC facility, and is intended to be used in +coordination with the +.Fn lcs_recvrpc +and +.Fn lcs_sendrpc +sandbox APIs. +The host provides an operation number meaningful to the sandbox, +.Va opno, +RPC arguments represented by +.Va req +and +.Va reqcount +using an +.Vt iovec +in the style of +.Xr writev 2 , +and similar receive buffers passed via +.Va rep +and +.Va repcount . +If the RPC fails, -1 will be returned, or 0 and the size of any reply will be +returned by reference using +.Va replenp . +.Nm lch_rpc_rights +allows the sending and receiving of file descriptors as part of the RPC +operation. +.Sh SEE ALSO +.Xr rpcgen 1 , +.Xr recv 2 , +.Xr send 2 , +.Xr writev 2 , +.Xr free 3 , +.Xr libcapsicum 3 , +.Xr libcapsicum_sandbox 3 , +.Xr malloc 3 , +.Xr unix 4 +.Sh HISTORY +Support for capabilities and capabilities mode was developed as part of the +.Tn TrustedBSD +Project. +.Sh BUGS +WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED ON IN +PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND UNEXPECTED WAYS. +.Pp +All sequence numbers will always have the value 0. +This is fine from a retransmission perspective, as generally no +retransmission should be required, but consumers should serialize use of the +RPC service when consuming it from concurrent callers (such as multiple +threads or multiple processes) to prevent I/O interlacing from corrupting the +RPC stream. +.Sh AUTHORS +These functions and the capability facility were created by +.An "Robert N. M. Watson" +at the University of Cambridge Computer Laboratory with support from a grant +from Google, Inc. Added: projects/capabilities8/lib/libcapsicum/libcapsicum_host.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Sat Jan 30 20:28:39 2010 (r203243) @@ -0,0 +1,422 @@ +/*- + * Copyright (c) 2009 Robert N. M. Watson + * All rights reserved. + * + * WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED + * ON IN PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND + * UNEXPECTED WAYS. + * + * This software was developed at the University of Cambridge Computer + * Laboratory with support from a grant from Google, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host.c#1 $ + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "libcapsicum.h" +#include "libcapsicum_internal.h" +#include "libcapsicum_sandbox_api.h" + +#define LIBCAPABILITY_CAPMASK_DEVNULL (CAP_EVENT | CAP_READ | CAP_WRITE) +#define LIBCAPABILITY_CAPMASK_SOCK (CAP_EVENT | CAP_READ | CAP_WRITE) +#define LIBCAPABILITY_CAPMASK_BIN (CAP_READ | CAP_EVENT | CAP_FSTAT | \ + CAP_FSTATFS | \ + CAP_FEXECVE | CAP_MMAP | \ + CAP_MAPEXEC) +#define LIBCAPABILITY_CAPMASK_SANDBOX LIBCAPABILITY_CAPMASK_BIN +#define LIBCAPABILITY_CAPMASK_LDSO LIBCAPABILITY_CAPMASK_BIN +#define LIBCAPABILITY_CAPMASK_LIB LIBCAPABILITY_CAPMASK_BIN + +#define _PATH_LIB "/lib" +#define _PATH_USR_LIB "/usr/lib" +#define LIBC_SO "libc.so.7" +#define LIBCAPABILITY_SO "libcapsicum.so.1" +#define LIBSBUF_SO "libsbuf.so.5" + +extern char **environ; + +#define LD_ELF_CAP_SO "ld-elf-cap.so.1" +#define PATH_LD_ELF_CAP_SO "/libexec" +char *ldso_argv[] = { + __DECONST(char *, PATH_LD_ELF_CAP_SO "/" LD_ELF_CAP_SO), + NULL, +}; + +int +lch_autosandbox_isenabled(__unused const char *servicename) +{ + + if (getenv("LIBCAPABILITY_NOAUTOSANDBOX") != NULL) + return (0); + return (1); +} + +/* + * Install an array of file descriptors using the array index of each + * descriptor in the array as its destination file descriptor number. All + * other existing file descriptors will be closed when this function returns, + * leaving a pristine vector. If calls fail, then we return (-1), but there + * are no guarantees about the state of the file descriptor array for the + * process, so it's a throw-away. + * + * It would be nice not to shuffle descriptors that already have the right + * number. + */ +static int +lch_installfds(u_int fd_count, int *fds) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:29:51 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 035491065676; Sat, 30 Jan 2010 20:29:51 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CEF0A8FC12; Sat, 30 Jan 2010 20:29:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKTorR099929; Sat, 30 Jan 2010 20:29:50 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKTo6Z099927; Sat, 30 Jan 2010 20:29:50 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302029.o0UKTo6Z099927@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:29:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203244 - projects/capabilities8/lib/libcapsicum X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:29:51 -0000 Author: rwatson Date: Sat Jan 30 20:29:50 2010 New Revision: 203244 URL: http://svn.freebsd.org/changeset/base/203244 Log: Merge c173854 from p4 TrustedBSD Capabilities branch to capabilities8: Makefile was missed earlier... Submitted by: Jonathan Anderson Added: projects/capabilities8/lib/libcapsicum/Makefile Added: projects/capabilities8/lib/libcapsicum/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/lib/libcapsicum/Makefile Sat Jan 30 20:29:50 2010 (r203244) @@ -0,0 +1,51 @@ +# $FreeBSD$ + +LIB= capsicum +DPADD= ${LIBSBUF} +LDADD= -lsbuf + +SRCS= \ + libcapsicum.c \ + libcapsicum_sandbox.c \ + libcapsicum_sandbox_io.c \ + libcapsicum_host.c \ + libcapsicum_host_io.c \ + libcapsicum_fdlist.c + +INCS= libcapsicum.h + +CFLAGS+= -I. + +SHLIB_MAJOR= 1 + +WARNS?= 6 + +MAN= libcapsicum.3 +MAN+= libcapsicum_host.3 +MAN+= libcapsicum_sandbox.3 +MLINKS= libcapsicum.3 lc_limitfd.3 \ + libcapsicum_host.3 lch_autosandbox_isenabled.3 \ + libcapsicum_host.3 lch_start.3 \ + libcapsicum_host.3 lch_startfd.3 \ + libcapsicum_host.3 lch_stop.3 \ + libcapsicum_host.3 lch_getsock.3 \ + libcapsicum_host.3 lch_getpid.3 \ + libcapsicum_host.3 lch_getprocdesc.3 \ + libcapsicum_host.3 lch_recv.3 \ + libcapsicum_host.3 lch_recv_rights.3 \ + libcapsicum_host.3 lch_rpc.3 \ + libcapsicum_host.3 lch_rpc_rights.3 \ + libcapsicum_host.3 lch_send.3 \ + libcapsicum_host.3 lch_send_rights.3 \ + libcapsicum_sandbox.3 lcs_get.3 \ + libcapsicum_sandbox.3 lcs_getsock.3 \ + libcapsicum_sandbox.3 lcs_recv.3 \ + libcapsicum_sandbox.3 lcs_recv_rights.3 \ + libcapsicum_sandbox.3 lcs_recvrpc.3 \ + libcapsicum_sandbox.3 lcs_recvrpc_rights.3 \ + libcapsicum_sandbox.3 lcs_send.3 \ + libcapsicum_sandbox.3 lcs_send_rights.3 \ + libcapsicum_sandbox.3 lcs_sendrpc.3 \ + libcapsicum_sandbox.3 lcs_sendrpc_rights.3 + +.include From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:32:23 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D2EC51065696; Sat, 30 Jan 2010 20:32:23 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AA4528FC1B; Sat, 30 Jan 2010 20:32:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKWNS5000629; Sat, 30 Jan 2010 20:32:23 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKWNPG000626; Sat, 30 Jan 2010 20:32:23 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302032.o0UKWNPG000626@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:32:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203245 - projects/capabilities8/lib/libcapsicum X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:32:23 -0000 Author: rwatson Date: Sat Jan 30 20:32:23 2010 New Revision: 203245 URL: http://svn.freebsd.org/changeset/base/203245 Log: Merge c173855 from the p4 TrustedBSD Capabilities branch to capabilities8: Changed the libcapsicum startfd API to accept an lc_fdlist (no implementation changes yet) Submitted by: Jonathan Anderson Modified: projects/capabilities8/lib/libcapsicum/libcapsicum.h projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Modified: projects/capabilities8/lib/libcapsicum/libcapsicum.h ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum.h Sat Jan 30 20:29:50 2010 (r203244) +++ projects/capabilities8/lib/libcapsicum/libcapsicum.h Sat Jan 30 20:32:23 2010 (r203245) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum.h#1 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum.h#2 $ */ #ifndef _LIBCAPABILITY_H_ @@ -121,7 +121,7 @@ int lch_start_libs(const char *sandbox, struct lc_library *lclp, u_int lcl_count, struct lc_sandbox **lcspp); int lch_startfd(int fd_sandbox, const char *binname, char *const argv[], - u_int flags, struct lc_sandbox **lcspp); + u_int flags, struct lc_fdlist *fds, struct lc_sandbox **lcspp); int lch_startfd_libs(int fd_sandbox, const char *binname, char *const argv[], u_int flags, struct lc_library *lclp, u_int lcl_count, struct lc_sandbox **lcspp); Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_host.c ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Sat Jan 30 20:29:50 2010 (r203244) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Sat Jan 30 20:32:23 2010 (r203245) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host.c#1 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host.c#2 $ */ #include @@ -349,7 +349,7 @@ out_error: int lch_startfd(int fd_sandbox, const char *binname, char *const argv[], - u_int flags, struct lc_sandbox **lcspp) + u_int flags, __unused struct lc_fdlist *fds, struct lc_sandbox **lcspp) { return (lch_startfd_libs(fd_sandbox, binname, argv, flags, NULL, 0, From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:37:48 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D313F1065672; Sat, 30 Jan 2010 20:37:47 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C32368FC08; Sat, 30 Jan 2010 20:37:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKbld7001878; Sat, 30 Jan 2010 20:37:47 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKbl7a001875; Sat, 30 Jan 2010 20:37:47 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302037.o0UKbl7a001875@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:37:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203246 - projects/capabilities8/lib/libcapsicum X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:37:48 -0000 Author: rwatson Date: Sat Jan 30 20:37:47 2010 New Revision: 203246 URL: http://svn.freebsd.org/changeset/base/203246 Log: Add missed file from c173855: Changed the libcapsicum startfd API to accept an lc_fdlist (no implementation changes yet) Submitted by: Jonathan Anderson Added: projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c Modified: projects/capabilities8/lib/libcapsicum/libcapsicum.h Modified: projects/capabilities8/lib/libcapsicum/libcapsicum.h ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum.h Sat Jan 30 20:32:23 2010 (r203245) +++ projects/capabilities8/lib/libcapsicum/libcapsicum.h Sat Jan 30 20:37:47 2010 (r203246) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum.h#2 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum.h#3 $ */ #ifndef _LIBCAPABILITY_H_ @@ -57,11 +57,12 @@ struct lc_library { /* A list of file descriptors, which can be passed around in shared memory */ struct lc_fdlist; - struct lc_fdlist* lc_fdlist_new(void); +struct lc_fdlist* lc_fdlist_global(void); struct lc_fdlist* lc_fdlist_dup(struct lc_fdlist *orig); void lc_fdlist_free(struct lc_fdlist *l); + /* Size of an FD list in bytes, including all associated string data */ int lc_fdlist_size(struct lc_fdlist *l); Added: projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c Sat Jan 30 20:37:47 2010 (r203246) @@ -0,0 +1,332 @@ +/*- + * Copyright (c) 2009 Jonathan Anderson + * All rights reserved. + * + * WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED + * ON IN PRODUCTION SYSTEMS. IT WILL BREAK YOUR SOFTWARE IN NEW AND + * UNEXPECTED WAYS. + * + * This software was developed at the University of Cambridge Computer + * Laboratory with support from a grant from Google, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_fdlist.c#1 $ + */ + +#include +#include +#include +#include +#include + + +struct lc_fdlist_entry { + + unsigned int sysoff; /* offset of e.g. "org.freebsd.rtld-elf-cap" */ + unsigned int syslen; /* length of above */ + + unsigned int idoff; /* offset of variable ID e.g. "libs" */ + unsigned int idlen; /* length of above */ + + unsigned int nameoff; /* offset of entry name (e.g. "libc.so.7") */ + unsigned int namelen; /* length of above */ + + int fd; /* the file descriptor */ +}; + + +struct lc_fdlist { + + unsigned int count; /* number of entries */ + unsigned int capacity; /* entries that we can hold */ + + unsigned int namelen; /* bytes of name data */ + unsigned int namecapacity; /* bytes of name data we can hold */ + + pthread_mutex_t lock; /* for thread safety */ + + struct lc_fdlist_entry entries[]; /* entries in the descriptor list */ + + /* followed by bytes of name data */ +}; + + + + +#define LOCK(l) pthread_mutex_lock(&((l)->lock)); +#define UNLOCK(l) pthread_mutex_unlock(&((l)->lock)); + +/* Where an FD list's name byte array starts */ +char* lc_fdlist_names(struct lc_fdlist *l); + + + +#define INITIAL_ENTRIES 16 +#define INITIAL_NAMEBYTES (64 * INITIAL_ENTRIES) + + +struct lc_fdlist* +lc_fdlist_new(void) { + + int bytes = sizeof(struct lc_fdlist) + + INITIAL_ENTRIES * sizeof(struct lc_fdlist_entry) + + INITIAL_NAMEBYTES; + + struct lc_fdlist *fdlist = malloc(bytes); + if (fdlist == NULL) return (NULL); + + fdlist->count = 0; + fdlist->capacity = INITIAL_ENTRIES; + fdlist->namelen = 0; + fdlist->namecapacity = INITIAL_NAMEBYTES; + + if (pthread_mutex_init(&fdlist->lock, NULL)) { + free(fdlist); + return NULL; + } + + return fdlist; +} + + +struct lc_fdlist* +lc_fdlist_dup(struct lc_fdlist *orig) { + + LOCK(orig); + + int size = lc_fdlist_size(orig); + + struct lc_fdlist *copy = malloc(size); + if (copy == NULL) return (NULL); + + UNLOCK(orig); + + return copy; +} + + +void +lc_fdlist_free(struct lc_fdlist *l) { + + LOCK(l); + + pthread_mutex_destroy(&l->lock); + free(l); +} + + + +int +lc_fdlist_add(struct lc_fdlist **fdlist, + const char *subsystem, const char *id, + const char *name, int fd) { + + struct lc_fdlist *l = *fdlist; + + LOCK(l); + + /* do we need more entry space? */ + if (l->count == l->capacity) { + + /* move name data out of the way */ + char *tmp = NULL; + if (l->namelen > 0) { + tmp = malloc(l->namelen); + if (tmp == NULL) { + UNLOCK(l); + return (-1); + } + + memcpy(tmp, lc_fdlist_names(l), l->namelen); + } + + /* double the number of available entries */ + int namebytes_per_entry = l->namecapacity / l->capacity; + int newnamebytes = l->capacity * namebytes_per_entry; + + int newsize = lc_fdlist_size(l) + newnamebytes + + l->capacity * sizeof(struct lc_fdlist_entry); + + struct lc_fdlist *copy = realloc(l, newsize); + if (copy == NULL) { + free(tmp); + UNLOCK(l); + return (-1); + } + + copy->capacity *= 2; + copy->namecapacity += newnamebytes; + + /* copy name bytes back */ + if (copy->namelen > 0) + memcpy(lc_fdlist_names(copy), tmp, copy->namelen); + + free(tmp); + + *fdlist = copy; + l = *fdlist; + } + + + /* do we need more name space? */ + int subsyslen = strlen(subsystem); + int idlen = strlen(id); + int namelen = strlen(name); + + if ((l->namelen + subsyslen + idlen + namelen) >= l->namecapacity) { + + /* double the name capacity */ + struct lc_fdlist* enlarged + = realloc(l, lc_fdlist_size(l) + l->namecapacity); + + if (enlarged == NULL) { + UNLOCK(l); + return (-1); + } + + enlarged->namecapacity *= 2; + *fdlist = enlarged; + l = *fdlist; + } + + + /* create the new entry */ + struct lc_fdlist_entry *entry = l->entries + l->count; + + entry->fd = fd; + + char *names = lc_fdlist_names(l); + char *head = names + l->namelen; + + strncpy(head, subsystem, subsyslen + 1); + entry->sysoff = (head - names); + entry->syslen = subsyslen; + head += subsyslen + 1; + + strncpy(head, id, idlen + 1); + entry->idoff = (head - names); + entry->idlen = idlen; + head += idlen + 1; + + strncpy(head, name, namelen + 1); + entry->nameoff = (head - names); + entry->namelen = namelen + 1; + head += namelen + 1; + + l->count++; + l->namelen = (head - names); + + UNLOCK(l); + + return 0; +} + + +int +lc_fdlist_addcap(struct lc_fdlist **fdlist, + const char *subsystem, const char *id, + const char *name, int fd, cap_rights_t rights) { + + int cap = cap_new(fd, rights); + + return lc_fdlist_add(fdlist, subsystem, id, name, cap); +} + + +int +lc_fdlist_lookup(struct lc_fdlist *l, + const char *subsystem, const char *id, char **name, int *fdp, + int *pos) { + + LOCK(l); + + int successful = 0; + const char *names = lc_fdlist_names(l); + + for (unsigned int i = (pos ? *pos + 1 : 0); i < l->count; i++) { + + struct lc_fdlist_entry *entry = l->entries + i; + + if (!strncmp(subsystem, names + entry->sysoff, entry->syslen + 1) + && !strncmp(id, names + entry->idoff, entry->idlen + 1)) { + + /* found a matching entry! */ + *name = malloc(entry->namelen + 1); + strncpy(*name, names + entry->nameoff, entry->namelen + 1); + + *fdp = entry->fd; + + if (pos) *pos = i; + successful = 1; + + break; + } + } + + UNLOCK(l); + + if (successful) return 0; + else { + errno = ENOENT; + return (-1); + } +} + + +int +lc_fdlist_size(struct lc_fdlist* l) { + + LOCK(l); + + if (l == NULL) { + errno = EINVAL; + return (-1); + } + + int size = sizeof(struct lc_fdlist) + + l->capacity * sizeof(struct lc_fdlist_entry) + + l->namecapacity; + + UNLOCK(l); + + return size; +} + + +char* +lc_fdlist_names(struct lc_fdlist *l) { + + LOCK(l); + + if (l == NULL) { + errno = EINVAL; + return NULL; + } + + char *names = ((char*) l) + lc_fdlist_size(l) - l->namecapacity; + + UNLOCK(l); + + return names; +} + From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:38:40 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 204F21065676; Sat, 30 Jan 2010 20:38:40 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0E9058FC1A; Sat, 30 Jan 2010 20:38:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKcdSr002113; Sat, 30 Jan 2010 20:38:39 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKcda0002111; Sat, 30 Jan 2010 20:38:39 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302038.o0UKcda0002111@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:38:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203247 - projects/capabilities8/lib/libcapsicum X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:38:40 -0000 Author: rwatson Date: Sat Jan 30 20:38:39 2010 New Revision: 203247 URL: http://svn.freebsd.org/changeset/base/203247 Log: Merge c173856 from the p4 TrustedBSD Capabilities branch to capabilities8: Aded lc_fdlist_global() and tests, although there is no implementation. Submitted by: Jonathan Anderson Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c Sat Jan 30 20:37:47 2010 (r203246) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c Sat Jan 30 20:38:39 2010 (r203247) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_fdlist.c#1 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_fdlist.c#2 $ */ #include @@ -81,6 +81,16 @@ char* lc_fdlist_names(struct lc_fdlist * +struct lc_fdlist *global_fdlist = NULL; + + +struct lc_fdlist* +lc_fdlist_global(void) { + + return global_fdlist; +} + + #define INITIAL_ENTRIES 16 #define INITIAL_NAMEBYTES (64 * INITIAL_ENTRIES) @@ -143,6 +153,12 @@ lc_fdlist_add(struct lc_fdlist **fdlist, struct lc_fdlist *l = *fdlist; + if (l == NULL) { + + errno = EINVAL; + return -1; + } + LOCK(l); /* do we need more entry space? */ @@ -258,6 +274,11 @@ lc_fdlist_lookup(struct lc_fdlist *l, const char *subsystem, const char *id, char **name, int *fdp, int *pos) { + if (l == NULL) { + errno = EINVAL; + return -1; + } + LOCK(l); int successful = 0; From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:40:04 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 19CBE106566C; Sat, 30 Jan 2010 20:40:04 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 08E158FC1B; Sat, 30 Jan 2010 20:40:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKe3G0002456; Sat, 30 Jan 2010 20:40:03 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKe3Dw002448; Sat, 30 Jan 2010 20:40:03 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302040.o0UKe3Dw002448@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:40:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203248 - projects/capabilities8/lib/libcapsicum X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:40:04 -0000 Author: rwatson Date: Sat Jan 30 20:40:03 2010 New Revision: 203248 URL: http://svn.freebsd.org/changeset/base/203248 Log: Merge c173905 from the p4 TrustedBSD Capabilities branch to capabilities8: fdlist changes to libcapsicum - WARNING: due to some kernel bug, this library code might cause a panic Submitted by: Jonathan Anderson Modified: projects/capabilities8/lib/libcapsicum/libcapsicum.c projects/capabilities8/lib/libcapsicum/libcapsicum.h projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c projects/capabilities8/lib/libcapsicum/libcapsicum_host.c projects/capabilities8/lib/libcapsicum/libcapsicum_host_io.c projects/capabilities8/lib/libcapsicum/libcapsicum_internal.h projects/capabilities8/lib/libcapsicum/libcapsicum_sandbox_api.h Modified: projects/capabilities8/lib/libcapsicum/libcapsicum.c ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum.c Sat Jan 30 20:38:39 2010 (r203247) +++ projects/capabilities8/lib/libcapsicum/libcapsicum.c Sat Jan 30 20:40:03 2010 (r203248) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum.c#1 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum.c#2 $ */ #include Modified: projects/capabilities8/lib/libcapsicum/libcapsicum.h ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum.h Sat Jan 30 20:38:39 2010 (r203247) +++ projects/capabilities8/lib/libcapsicum/libcapsicum.h Sat Jan 30 20:40:03 2010 (r203248) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum.h#3 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum.h#4 $ */ #ifndef _LIBCAPABILITY_H_ @@ -117,15 +117,15 @@ int lch_autosandbox_isenabled(const char * Interfaces to start and stop capability mode sandboxs. */ int lch_start(const char *sandbox, char *const argv[], u_int flags, - struct lc_sandbox **lcspp); + struct lc_fdlist *fds, struct lc_sandbox **lcspp); int lch_start_libs(const char *sandbox, char *const argv[], u_int flags, - struct lc_library *lclp, u_int lcl_count, + struct lc_library *lclp, u_int lcl_count, struct lc_fdlist *fds, struct lc_sandbox **lcspp); int lch_startfd(int fd_sandbox, const char *binname, char *const argv[], u_int flags, struct lc_fdlist *fds, struct lc_sandbox **lcspp); int lch_startfd_libs(int fd_sandbox, const char *binname, char *const argv[], u_int flags, struct lc_library *lclp, - u_int lcl_count, struct lc_sandbox **lcspp); + u_int lcl_count, struct lc_fdlist *fds, struct lc_sandbox **lcspp); void lch_stop(struct lc_sandbox *lcsp); /* Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c Sat Jan 30 20:38:39 2010 (r203247) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c Sat Jan 30 20:40:03 2010 (r203248) @@ -30,15 +30,21 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_fdlist.c#2 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_fdlist.c#3 $ */ +#include +#include + #include #include #include +#include #include #include +#include "libcapsicum_sandbox_api.h" + struct lc_fdlist_entry { @@ -87,6 +93,41 @@ struct lc_fdlist *global_fdlist = NULL; struct lc_fdlist* lc_fdlist_global(void) { + if (global_fdlist == NULL) { + + char *env = getenv(LIBCAPABILITY_SANDBOX_FDLIST); + printf("%s: %s\n", LIBCAPABILITY_SANDBOX_FDLIST, env); + + if ((env != NULL) && (strnlen(env, 8) < 7)) { + + for (int i = 0; (i < 7) && env[i]; i++) + if ((env[i] < '0') || (env[i] > '9')) + return NULL; + + int fd = -1; + if (sscanf(env, "%d", &fd) != 1) + return NULL; + + if (fd < 0) + return NULL; + + printf("testing FD %i...", fd); fflush(stdout); + struct stat stats; + if (fstat(fd, &stats) < 0) + return NULL; + + printf(" done. Size: %lu\n", stats.st_size); + + printf("mapping FD %i... ", fd); fflush(stdout); + /* + global_fdlist = mmap(NULL, stats.st_size, + PROT_READ | PROT_WRITE, + MAP_NOSYNC | MAP_PRIVATE, fd, 0); + */ + printf(" done.\n"); + } + } + return global_fdlist; } Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_host.c ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Sat Jan 30 20:38:39 2010 (r203247) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Sat Jan 30 20:40:03 2010 (r203248) @@ -30,11 +30,12 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host.c#2 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host.c#3 $ */ #include #include +#include #include #include #include @@ -147,12 +148,41 @@ static void lch_sandbox(int fd_sock, int fd_sandbox, int fd_ldso, int fd_libc, int fd_libcapsicum, int fd_libsbuf, int fd_devnull, u_int flags, struct lc_library *lclp, u_int lcl_count, const char *binname, - char *const argv[]) + char *const argv[], struct lc_fdlist *fds) { int *fd_array, fdcount; struct sbuf *sbufp; + int shmfd, fdlistsize; + /*void *shm;*/ + char fdliststr[8]; u_int i; + + /* create an anonymous shared memory segment for the FD list */ + shmfd = shm_open(SHM_ANON, O_RDWR, 0600); + if (shmfd < 0) return; + + fdlistsize = lc_fdlist_size(fds); + if (ftruncate(shmfd, fdlistsize) < 0) return; + + + printf("%dB of memory to mmap\n", fdlistsize); + + + /* map it and copy the list */ + /* + shm = mmap(NULL, fdlistsize, PROT_READ | PROT_WRITE, + MAP_NOSYNC | MAP_SHARED, shmfd, 0); + + if (shm == MAP_FAILED) return; + memcpy(shm, fds, fdlistsize); + + if (munmap(shm, fdlistsize)) return; + */ + + + + if (lc_limitfd(fd_devnull, LIBCAPABILITY_CAPMASK_DEVNULL) < 0) return; if (lc_limitfd(fd_sandbox, LIBCAPABILITY_CAPMASK_SANDBOX) < 0) @@ -168,7 +198,7 @@ lch_sandbox(int fd_sock, int fd_sandbox, if (lc_limitfd(fd_libsbuf, LIBCAPABILITY_CAPMASK_LIB) < 0) return; - fdcount = 10 + lcl_count; + fdcount = 11 + lcl_count; fd_array = malloc(fdcount * sizeof(int)); if (fd_array == NULL) return; @@ -193,10 +223,11 @@ lch_sandbox(int fd_sock, int fd_sandbox, fd_array[7] = fd_libcapsicum; fd_array[8] = fd_libsbuf; fd_array[9] = fd_devnull; + fd_array[10] = shmfd; for (i = 0; i < lcl_count; i++) { if (lc_limitfd(lclp->lcl_fd, LIBCAPABILITY_CAPMASK_LIB) < 0) return; - fd_array[i + 10] = lclp[i].lcl_fd; + fd_array[i + 11] = lclp[i].lcl_fd; } if (lch_installfds(fdcount, fd_array) < 0) @@ -209,7 +240,7 @@ lch_sandbox(int fd_sock, int fd_sandbox, 3, binname, 5, LD_ELF_CAP_SO, 6, LIBC_SO, 7, LIBCAPABILITY_SO, 8, LIBSBUF_SO, 9, _PATH_DEVNULL); for (i = 0; i < lcl_count; i++) - (void)sbuf_printf(sbufp, ",%d:%s", i + 10, + (void)sbuf_printf(sbufp, ",%d:%s", i + 11, lclp[i].lcl_libname); sbuf_finish(sbufp); if (sbuf_overflowed(sbufp)) @@ -229,6 +260,10 @@ lch_sandbox(int fd_sock, int fd_sandbox, return; sbuf_delete(sbufp); + sprintf(fdliststr, "%d", 10); + if (setenv(LIBCAPABILITY_SANDBOX_FDLIST, fdliststr, 1) == -1) + return; + if (cap_enter() < 0) return; @@ -238,7 +273,7 @@ lch_sandbox(int fd_sock, int fd_sandbox, int lch_startfd_libs(int fd_sandbox, const char *binname, char *const argv[], u_int flags, struct lc_library *lclp, u_int lcl_count, - struct lc_sandbox **lcspp) + struct lc_fdlist *fds, struct lc_sandbox **lcspp) { struct lc_sandbox *lcsp; int fd_devnull, fd_ldso, fd_libc, fd_libcapsicum, fd_libsbuf; @@ -304,7 +339,7 @@ lch_startfd_libs(int fd_sandbox, const c if (pid == 0) { lch_sandbox(fd_sockpair[1], fd_sandbox, fd_ldso, fd_libc, fd_libcapsicum, fd_libsbuf, fd_devnull, flags, lclp, - lcl_count, binname, argv); + lcl_count, binname, argv, fds); exit(-1); } #ifndef IN_CAP_MODE @@ -353,12 +388,13 @@ lch_startfd(int fd_sandbox, const char * { return (lch_startfd_libs(fd_sandbox, binname, argv, flags, NULL, 0, - lcspp)); + fds, lcspp)); } int lch_start_libs(const char *sandbox, char *const argv[], u_int flags, - struct lc_library *lclp, u_int lcl_count, struct lc_sandbox **lcspp) + struct lc_library *lclp, u_int lcl_count, struct lc_fdlist *fds, + struct lc_sandbox **lcspp) { char binname[MAXPATHLEN]; int error, fd_sandbox, ret; @@ -371,7 +407,7 @@ lch_start_libs(const char *sandbox, char return (-1); ret = lch_startfd_libs(fd_sandbox, binname, argv, flags, lclp, - lcl_count, lcspp); + lcl_count, fds, lcspp); error = errno; close(fd_sandbox); errno = error; @@ -380,10 +416,10 @@ lch_start_libs(const char *sandbox, char int lch_start(const char *sandbox, char *const argv[], u_int flags, - struct lc_sandbox **lcspp) + struct lc_fdlist *fds, struct lc_sandbox **lcspp) { - return (lch_start_libs(sandbox, argv, flags, NULL, 0, lcspp)); + return (lch_start_libs(sandbox, argv, flags, NULL, 0, fds, lcspp)); } void Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_host_io.c ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum_host_io.c Sat Jan 30 20:38:39 2010 (r203247) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_host_io.c Sat Jan 30 20:40:03 2010 (r203248) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host_io.c#1 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host_io.c#2 $ */ #include Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_internal.h ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum_internal.h Sat Jan 30 20:38:39 2010 (r203247) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_internal.h Sat Jan 30 20:40:03 2010 (r203248) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_internal.h#1 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_internal.h#2 $ */ #ifndef _LIBCAPABILITY_INTERNAL_H_ Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_sandbox_api.h ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum_sandbox_api.h Sat Jan 30 20:38:39 2010 (r203247) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_sandbox_api.h Sat Jan 30 20:40:03 2010 (r203248) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_sandbox_api.h#1 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_sandbox_api.h#2 $ */ #ifndef _LIBCAPABILITY_SANDBOX_API_H_ @@ -41,6 +41,7 @@ * make about the runtime environment set up by libcapsicum hosts. */ #define LIBCAPABILITY_SANDBOX_API_ENV "LIBCAPABILITY_SANDBOX" +#define LIBCAPABILITY_SANDBOX_FDLIST "LIBCAPABILITY_FDLIST" #define LIBCAPABILITY_SANDBOX_API_SOCK "sock" /* From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:41:45 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AB73D1065672; Sat, 30 Jan 2010 20:41:45 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9C92C8FC1A; Sat, 30 Jan 2010 20:41:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKfjqW002884; Sat, 30 Jan 2010 20:41:45 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKfjCg002882; Sat, 30 Jan 2010 20:41:45 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302041.o0UKfjCg002882@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:41:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203249 - projects/capabilities8/sys/vm X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:41:45 -0000 Author: rwatson Date: Sat Jan 30 20:41:45 2010 New Revision: 203249 URL: http://svn.freebsd.org/changeset/base/203249 Log: Merge c173917 from the p4 TrustedBSD Capabilities branch to capabilities8: Fixed an assertion in vm_map_insert which led to unnecessary panic. Submitted by: Jonathan Anderson Modified: projects/capabilities8/sys/vm/vm_map.c Modified: projects/capabilities8/sys/vm/vm_map.c ============================================================================== --- projects/capabilities8/sys/vm/vm_map.c Sat Jan 30 20:40:03 2010 (r203248) +++ projects/capabilities8/sys/vm/vm_map.c Sat Jan 30 20:41:45 2010 (r203249) @@ -1136,7 +1136,7 @@ vm_map_insert(vm_map_t map, vm_object_t ((protoeflags & MAP_ENTRY_NEEDS_COPY) || object == NULL))) { if (!(cow & MAP_ACC_CHARGED) && !swap_reserve(end - start)) return (KERN_RESOURCE_SHORTAGE); - KASSERT(object == NULL || (cow & MAP_ENTRY_NEEDS_COPY) || + KASSERT(object == NULL || (protoeflags & MAP_ENTRY_NEEDS_COPY) || object->uip == NULL, ("OVERCOMMIT: vm_map_insert o %p", object)); uip = curthread->td_ucred->cr_ruidinfo; From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:42:27 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E11C61065695; Sat, 30 Jan 2010 20:42:26 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D03F28FC13; Sat, 30 Jan 2010 20:42:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKgQYP003055; Sat, 30 Jan 2010 20:42:26 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKgQ2Y003052; Sat, 30 Jan 2010 20:42:26 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302042.o0UKgQ2Y003052@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:42:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203250 - projects/capabilities8/lib/libcapsicum X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:42:27 -0000 Author: rwatson Date: Sat Jan 30 20:42:26 2010 New Revision: 203250 URL: http://svn.freebsd.org/changeset/base/203250 Log: Merge c173919 from the p4 TrustedBSD Capabilities branch to capabilities8: Enable libcapsicum_fdlist stuff, since the mmap panic is gone. Submitted by: Jonathan Anderson Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c Sat Jan 30 20:41:45 2010 (r203249) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_fdlist.c Sat Jan 30 20:42:26 2010 (r203250) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_fdlist.c#3 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_fdlist.c#4 $ */ #include @@ -42,6 +42,7 @@ #include #include #include +#include #include "libcapsicum_sandbox_api.h" @@ -96,7 +97,6 @@ lc_fdlist_global(void) { if (global_fdlist == NULL) { char *env = getenv(LIBCAPABILITY_SANDBOX_FDLIST); - printf("%s: %s\n", LIBCAPABILITY_SANDBOX_FDLIST, env); if ((env != NULL) && (strnlen(env, 8) < 7)) { @@ -111,20 +111,13 @@ lc_fdlist_global(void) { if (fd < 0) return NULL; - printf("testing FD %i...", fd); fflush(stdout); struct stat stats; if (fstat(fd, &stats) < 0) return NULL; - printf(" done. Size: %lu\n", stats.st_size); - - printf("mapping FD %i... ", fd); fflush(stdout); - /* global_fdlist = mmap(NULL, stats.st_size, PROT_READ | PROT_WRITE, - MAP_NOSYNC | MAP_PRIVATE, fd, 0); - */ - printf(" done.\n"); + MAP_NOSYNC | MAP_SHARED, fd, 0); } } @@ -166,9 +159,12 @@ lc_fdlist_dup(struct lc_fdlist *orig) { LOCK(orig); int size = lc_fdlist_size(orig); + struct lc_fdlist *copy = NULL; - struct lc_fdlist *copy = malloc(size); - if (copy == NULL) return (NULL); + if (size > 0) { + copy = malloc(size); + if (copy != NULL) memcpy(copy, orig, size); + } UNLOCK(orig); Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_host.c ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Sat Jan 30 20:41:45 2010 (r203249) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Sat Jan 30 20:42:26 2010 (r203250) @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host.c#3 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host.c#4 $ */ #include @@ -153,7 +153,7 @@ lch_sandbox(int fd_sock, int fd_sandbox, int *fd_array, fdcount; struct sbuf *sbufp; int shmfd, fdlistsize; - /*void *shm;*/ + void *shm; char fdliststr[8]; u_int i; @@ -166,11 +166,7 @@ lch_sandbox(int fd_sock, int fd_sandbox, if (ftruncate(shmfd, fdlistsize) < 0) return; - printf("%dB of memory to mmap\n", fdlistsize); - - /* map it and copy the list */ - /* shm = mmap(NULL, fdlistsize, PROT_READ | PROT_WRITE, MAP_NOSYNC | MAP_SHARED, shmfd, 0); @@ -178,8 +174,6 @@ lch_sandbox(int fd_sock, int fd_sandbox, memcpy(shm, fds, fdlistsize); if (munmap(shm, fdlistsize)) return; - */ - From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:51:47 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4CE681065693; Sat, 30 Jan 2010 20:51:47 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3D7948FC17; Sat, 30 Jan 2010 20:51:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKplaq005134; Sat, 30 Jan 2010 20:51:47 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKplnw005131; Sat, 30 Jan 2010 20:51:47 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302051.o0UKplnw005131@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:51:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203251 - in projects/capabilities8: share/mk usr.bin/gzip X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:51:47 -0000 Author: rwatson Date: Sat Jan 30 20:51:46 2010 New Revision: 203251 URL: http://svn.freebsd.org/changeset/base/203251 Log: Merge c173934 and c173936 from the p4 TrustedBSD Capabilities branch to capbilities8: LIBCAPABILITY->LIBCAPSICUM. Clean up some loose end references to libcapability. Sponsored by: Google, Inc. Modified: projects/capabilities8/share/mk/bsd.libnames.mk projects/capabilities8/usr.bin/gzip/Makefile Modified: projects/capabilities8/share/mk/bsd.libnames.mk ============================================================================== --- projects/capabilities8/share/mk/bsd.libnames.mk Sat Jan 30 20:42:26 2010 (r203250) +++ projects/capabilities8/share/mk/bsd.libnames.mk Sat Jan 30 20:51:46 2010 (r203251) @@ -30,7 +30,7 @@ LIBC?= ${DESTDIR}${LIBDIR}/libc.a LIBC_PIC?= ${DESTDIR}${LIBDIR}/libc_pic.a LIBCALENDAR?= ${DESTDIR}${LIBDIR}/libcalendar.a LIBCAM?= ${DESTDIR}${LIBDIR}/libcam.a -LIBCAPABILITY?= ${DESTDIR}${LIBDIR}/libcapability.a +LIBCAPSICUM?= ${DESTDIR}${LIBDIR}/libcapsicum.a LIBCOM_ERR?= ${DESTDIR}${LIBDIR}/libcom_err.a LIBCOMPAT?= ${DESTDIR}${LIBDIR}/libcompat.a LIBCRYPT?= ${DESTDIR}${LIBDIR}/libcrypt.a Modified: projects/capabilities8/usr.bin/gzip/Makefile ============================================================================== --- projects/capabilities8/usr.bin/gzip/Makefile Sat Jan 30 20:42:26 2010 (r203250) +++ projects/capabilities8/usr.bin/gzip/Makefile Sat Jan 30 20:51:46 2010 (r203251) @@ -7,7 +7,7 @@ PROG= gzip MAN= gzip.1 gzexe.1 zdiff.1 zforce.1 zmore.1 znew.1 SRCS= gzip.c gzsandbox.c -DPADD= ${LIBZ} ${LIBCAPABILITY} +DPADD= ${LIBZ} ${LIBCAPSICUM} LDADD= -lz -lcapsicum WARNS?= 6 CFLAGS+= -rdynamic # For sandbox cap_main From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:56:04 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 679A5106568B; Sat, 30 Jan 2010 20:56:04 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 57D4C8FC18; Sat, 30 Jan 2010 20:56:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKu4Dv006125; Sat, 30 Jan 2010 20:56:04 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKu4db006123; Sat, 30 Jan 2010 20:56:04 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302056.o0UKu4db006123@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:56:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203252 - projects/capabilities8/lib/libcapsicum X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:56:04 -0000 Author: rwatson Date: Sat Jan 30 20:56:04 2010 New Revision: 203252 URL: http://svn.freebsd.org/changeset/base/203252 Log: Merge c173944 and c173945 from the p4 TrustedBSD Capabilities branch to capabilities8: Only set up a file descriptor list (and its corresponding POSIX shared memory segment + environmental variable) if we're going to use it. Update copyright year. Support optionally passing the pshm segment into the sandbox better; don't try to install the fd if we don't have one. Sponsored by: Google, Inc. Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Modified: projects/capabilities8/lib/libcapsicum/libcapsicum_host.c ============================================================================== --- projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Sat Jan 30 20:51:46 2010 (r203251) +++ projects/capabilities8/lib/libcapsicum/libcapsicum_host.c Sat Jan 30 20:56:04 2010 (r203252) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2009 Robert N. M. Watson + * Copyright (c) 2009-2010 Robert N. M. Watson * All rights reserved. * * WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host.c#4 $ + * $P4: //depot/projects/trustedbsd/capabilities/src/lib/libcapsicum/libcapsicum_host.c#6 $ */ #include @@ -150,32 +150,36 @@ lch_sandbox(int fd_sock, int fd_sandbox, struct lc_library *lclp, u_int lcl_count, const char *binname, char *const argv[], struct lc_fdlist *fds) { - int *fd_array, fdcount; + int *fd_array, fdcount, fdnum; struct sbuf *sbufp; - int shmfd, fdlistsize; + int shmfd = -1; + size_t fdlistsize; void *shm; char fdliststr[8]; u_int i; + /* + * Create an anonymous shared memory segment for the FD list. + */ + if (fds != NULL) { + shmfd = shm_open(SHM_ANON, O_RDWR, 0600); + if (shmfd < 0) + return; + fdlistsize = lc_fdlist_size(fds); + if (ftruncate(shmfd, fdlistsize) < 0) + return; - /* create an anonymous shared memory segment for the FD list */ - shmfd = shm_open(SHM_ANON, O_RDWR, 0600); - if (shmfd < 0) return; - - fdlistsize = lc_fdlist_size(fds); - if (ftruncate(shmfd, fdlistsize) < 0) return; - - - /* map it and copy the list */ - shm = mmap(NULL, fdlistsize, PROT_READ | PROT_WRITE, - MAP_NOSYNC | MAP_SHARED, shmfd, 0); - - if (shm == MAP_FAILED) return; - memcpy(shm, fds, fdlistsize); - - if (munmap(shm, fdlistsize)) return; - - + /* + * Map it and copy the list. + */ + shm = mmap(NULL, fdlistsize, PROT_READ | PROT_WRITE, + MAP_NOSYNC | MAP_SHARED, shmfd, 0); + if (shm == MAP_FAILED) + return; + memcpy(shm, fds, fdlistsize); + if (munmap(shm, fdlistsize)) + return; + } if (lc_limitfd(fd_devnull, LIBCAPABILITY_CAPMASK_DEVNULL) < 0) return; @@ -192,7 +196,11 @@ lch_sandbox(int fd_sock, int fd_sandbox, if (lc_limitfd(fd_libsbuf, LIBCAPABILITY_CAPMASK_LIB) < 0) return; - fdcount = 11 + lcl_count; + fdnum = 10; + if (shmfd != -1) + fdnum++; + + fdcount = fdnum + lcl_count; fd_array = malloc(fdcount * sizeof(int)); if (fd_array == NULL) return; @@ -217,11 +225,12 @@ lch_sandbox(int fd_sock, int fd_sandbox, fd_array[7] = fd_libcapsicum; fd_array[8] = fd_libsbuf; fd_array[9] = fd_devnull; - fd_array[10] = shmfd; + if (shmfd != -1) + fd_array[10] = shmfd; for (i = 0; i < lcl_count; i++) { if (lc_limitfd(lclp->lcl_fd, LIBCAPABILITY_CAPMASK_LIB) < 0) return; - fd_array[i + 11] = lclp[i].lcl_fd; + fd_array[i + fdnum] = lclp[i].lcl_fd; } if (lch_installfds(fdcount, fd_array) < 0) @@ -234,7 +243,7 @@ lch_sandbox(int fd_sock, int fd_sandbox, 3, binname, 5, LD_ELF_CAP_SO, 6, LIBC_SO, 7, LIBCAPABILITY_SO, 8, LIBSBUF_SO, 9, _PATH_DEVNULL); for (i = 0; i < lcl_count; i++) - (void)sbuf_printf(sbufp, ",%d:%s", i + 11, + (void)sbuf_printf(sbufp, ",%d:%s", i + fdnum, lclp[i].lcl_libname); sbuf_finish(sbufp); if (sbuf_overflowed(sbufp)) @@ -254,9 +263,11 @@ lch_sandbox(int fd_sock, int fd_sandbox, return; sbuf_delete(sbufp); - sprintf(fdliststr, "%d", 10); - if (setenv(LIBCAPABILITY_SANDBOX_FDLIST, fdliststr, 1) == -1) - return; + if (shmfd != -1) { + sprintf(fdliststr, "%d", 10); + if (setenv(LIBCAPABILITY_SANDBOX_FDLIST, fdliststr, 1) == -1) + return; + } if (cap_enter() < 0) return; From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 20:57:04 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE701106568B; Sat, 30 Jan 2010 20:57:04 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BF4E28FC12; Sat, 30 Jan 2010 20:57:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UKv4EA006362; Sat, 30 Jan 2010 20:57:04 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UKv4X6006360; Sat, 30 Jan 2010 20:57:04 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302057.o0UKv4X6006360@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 20:57:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203253 - projects/capabilities8/usr.bin/gzip X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 20:57:04 -0000 Author: rwatson Date: Sat Jan 30 20:57:04 2010 New Revision: 203253 URL: http://svn.freebsd.org/changeset/base/203253 Log: Merge c173946 from the p4 TrustedBSD Capabilities branch to capabilities8: libcapsicum now expects an (optional) fdlist when creating a sandbox, so update gzip. Sponsored by: Google, Inc. Modified: projects/capabilities8/usr.bin/gzip/gzsandbox.c Modified: projects/capabilities8/usr.bin/gzip/gzsandbox.c ============================================================================== --- projects/capabilities8/usr.bin/gzip/gzsandbox.c Sat Jan 30 20:56:04 2010 (r203252) +++ projects/capabilities8/usr.bin/gzip/gzsandbox.c Sat Jan 30 20:57:04 2010 (r203253) @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2009 Robert N. M. Watson + * Copyright (c) 2009-2010 Robert N. M. Watson * All rights reserved. * * WARNING: THIS IS EXPERIMENTAL SECURITY SOFTWARE THAT MUST NOT BE RELIED @@ -104,8 +104,8 @@ gzsandbox_initialize(void) err(-1, "open: %s", gzsandbox_libs[i].lcl_libname); } if (lch_start_libs(LC_USR_BIN_GZIP_SANDBOX, lc_sandbox_argv, - LCH_PERMIT_STDERR, gzsandbox_libs, gzsandbox_libs_count, &lcsp) - < 0) + LCH_PERMIT_STDERR, gzsandbox_libs, gzsandbox_libs_count, NULL, + &lcsp) < 0) err(-1, "lch_start %s", LC_USR_BIN_GZIP_SANDBOX); } From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 21:02:32 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 51719106566B; Sat, 30 Jan 2010 21:02:32 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 41E5C8FC14; Sat, 30 Jan 2010 21:02:32 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UL2Wiu007647; Sat, 30 Jan 2010 21:02:32 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UL2Wu8007645; Sat, 30 Jan 2010 21:02:32 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302102.o0UL2Wu8007645@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 21:02:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203254 - projects/capabilities8/gnu/usr.bin/groff/tmac X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 21:02:32 -0000 Author: rwatson Date: Sat Jan 30 21:02:31 2010 New Revision: 203254 URL: http://svn.freebsd.org/changeset/base/203254 Log: Merge missing portion of c173936 from the p4 TrustedBSD Capabilities branch to capabilities8: Clean up some loose end references to libcapability. Sponsored by: Google, Inc. Modified: projects/capabilities8/gnu/usr.bin/groff/tmac/mdoc.local Modified: projects/capabilities8/gnu/usr.bin/groff/tmac/mdoc.local ============================================================================== --- projects/capabilities8/gnu/usr.bin/groff/tmac/mdoc.local Sat Jan 30 20:57:04 2010 (r203253) +++ projects/capabilities8/gnu/usr.bin/groff/tmac/mdoc.local Sat Jan 30 21:02:31 2010 (r203254) @@ -38,7 +38,7 @@ .ds doc-str-Lb-libc_r Reentrant C\~Library (libc_r, \-lc_r) .ds doc-str-Lb-libcalendar Calendar Arithmetic Library (libcalendar, \-lcalendar) .ds doc-str-Lb-libcam Common Access Method User Library (libcam, \-lcam) -.ds doc-str-Lb-libcapability Capability Services Library (libcapability, \-lcapability) +.ds doc-str-Lb-libcapsicum Capability Services Library (libcapsicum, \-lcapsicum) .ds doc-str-Lb-libcipher FreeSec Crypt Library (libcipher, \-lcipher) .ds doc-str-Lb-libdevinfo Device and Resource Information Utility Library (libdevinfo, \-ldevinfo) .ds doc-str-Lb-libdevstat Device Statistics Library (libdevstat, \-ldevstat) From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 21:06:48 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9C5641065676; Sat, 30 Jan 2010 21:06:48 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8CF308FC16; Sat, 30 Jan 2010 21:06:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UL6mCx008604; Sat, 30 Jan 2010 21:06:48 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UL6mhv008602; Sat, 30 Jan 2010 21:06:48 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302106.o0UL6mhv008602@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 21:06:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203255 - projects/capabilities8/libexec/rtld-elf-cap X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 21:06:48 -0000 Author: rwatson Date: Sat Jan 30 21:06:48 2010 New Revision: 203255 URL: http://svn.freebsd.org/changeset/base/203255 Log: Catch another uncommitted portion of c173936 from the p4 TrustedBSD Capabilities branch and merge to capabilities8: Clean up some loose end references to libcapability. Sponsored by: Google, Inc. Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 Modified: projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 ============================================================================== --- projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 Sat Jan 30 21:02:31 2010 (r203254) +++ projects/capabilities8/libexec/rtld-elf-cap/rtld-elf-cap.1 Sat Jan 30 21:06:48 2010 (r203255) @@ -45,7 +45,7 @@ The is a version of .Xr ld-elf.so.1 1 specific to the sandbox environment created using -.Xr libcapability 3 , +.Xr libcapsicum 3 , which provides certain extended or modified linker services for that environment: .Bl -bullet @@ -72,7 +72,7 @@ environmental variable set by sandbox st allowing file descriptors for binaries and libraries passed across .Xr fexecve 2 to be used by -.Xr libcapability 3 , +.Xr libcapsicum 3 , as well as applications. .It Implements a version of @@ -88,7 +88,7 @@ will need to export it as a dynamic symb command line flag. .Pp Most capability-mode applications will be started using the APIs defined in -.Xr libcapability 3 , +.Xr libcapsicum 3 , which properly set up the run-time environment for .Nm . .Sh SEE ALSO @@ -96,7 +96,7 @@ which properly set up the run-time envir .Xr ld-elf.so.1 1 , .Xr cap_enter 2 , .Xr fexecve 2 , -.Xr libcapability 3 +.Xr libcapsicum 3 .Sh HISTORY Support for capabilities and capabilities mode was developed as part of the .Tn TrustedBSD From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 21:08:17 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 79DBD106566C; Sat, 30 Jan 2010 21:08:17 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 696928FC1F; Sat, 30 Jan 2010 21:08:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UL8H3S008993; Sat, 30 Jan 2010 21:08:17 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UL8Hp0008986; Sat, 30 Jan 2010 21:08:17 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302108.o0UL8Hp0008986@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 21:08:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203256 - in projects/capabilities8: lib/csu/amd64 lib/csu/common sys/kern sys/sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 21:08:17 -0000 Author: rwatson Date: Sat Jan 30 21:08:17 2010 New Revision: 203256 URL: http://svn.freebsd.org/changeset/base/203256 Log: Merge c173948, c173950, c173951, c173952 from the p4 TrustedBSD Capabilities branch to capabilities8: Revert and clean up various local whitespace changes. Modified: projects/capabilities8/lib/csu/amd64/crt1.c projects/capabilities8/lib/csu/common/crtbrand.c projects/capabilities8/sys/kern/vfs_lookup.c projects/capabilities8/sys/kern/vfs_syscalls.c projects/capabilities8/sys/sys/file.h Modified: projects/capabilities8/lib/csu/amd64/crt1.c ============================================================================== --- projects/capabilities8/lib/csu/amd64/crt1.c Sat Jan 30 21:06:48 2010 (r203255) +++ projects/capabilities8/lib/csu/amd64/crt1.c Sat Jan 30 21:08:17 2010 (r203256) @@ -94,8 +94,6 @@ __asm__("eprol:"); exit( main(argc, argv, env) ); } - - /* The Capsicum entry function. */ void _capstart(char **ap, void (*cleanup)(void)) Modified: projects/capabilities8/lib/csu/common/crtbrand.c ============================================================================== --- projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 21:06:48 2010 (r203255) +++ projects/capabilities8/lib/csu/common/crtbrand.c Sat Jan 30 21:08:17 2010 (r203256) @@ -52,8 +52,6 @@ static const struct { __FreeBSD_version }; - - extern int cap_main(int, char **, char **) __attribute__((weak)); int cap_main(__unused int argc, __unused char **argv, __unused char **env) { @@ -61,6 +59,5 @@ int cap_main(__unused int argc, __unused "ERROR: attempting to run a regular binary in capability mode!\n\nIf you want to run a binary in a sandbox, you must provide a cap_main() function, which takes the same arguments as main().\n"; write(2, warning, sizeof(warning)); - return (-1); } Modified: projects/capabilities8/sys/kern/vfs_lookup.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_lookup.c Sat Jan 30 21:06:48 2010 (r203255) +++ projects/capabilities8/sys/kern/vfs_lookup.c Sat Jan 30 21:08:17 2010 (r203256) @@ -505,7 +505,7 @@ lookup(struct nameidata *ndp) int dvfslocked; /* VFS Giant state for parent */ int tvfslocked; int lkflags_save; - + /* * Setup: break out flag bits into variables. */ @@ -531,7 +531,6 @@ lookup(struct nameidata *ndp) cnp->cn_lkflags = LK_SHARED; else cnp->cn_lkflags = LK_EXCLUSIVE; - dp = ndp->ni_startdir; ndp->ni_startdir = NULLVP; vn_lock(dp, Modified: projects/capabilities8/sys/kern/vfs_syscalls.c ============================================================================== --- projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 21:06:48 2010 (r203255) +++ projects/capabilities8/sys/kern/vfs_syscalls.c Sat Jan 30 21:08:17 2010 (r203256) @@ -1083,8 +1083,6 @@ kern_open(struct thread *td, char *path, return (kern_openat(td, AT_FDCWD, path, pathseg, flags, mode)); } - - int kern_openat(struct thread *td, int fd, char *path, enum uio_seg pathseg, int flags, int mode) Modified: projects/capabilities8/sys/sys/file.h ============================================================================== --- projects/capabilities8/sys/sys/file.h Sat Jan 30 21:06:48 2010 (r203255) +++ projects/capabilities8/sys/sys/file.h Sat Jan 30 21:08:17 2010 (r203256) @@ -274,6 +274,7 @@ fo_ioctl(fp, com, data, active_cred, td) struct ucred *active_cred; struct thread *td; { + return ((*fp->f_ops->fo_ioctl)(fp, com, data, active_cred, td)); } From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 21:09:07 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EAF421065679; Sat, 30 Jan 2010 21:09:07 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DBECC8FC1C; Sat, 30 Jan 2010 21:09:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UL97mS009205; Sat, 30 Jan 2010 21:09:07 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UL97aB009203; Sat, 30 Jan 2010 21:09:07 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302109.o0UL97aB009203@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 21:09:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203257 - projects/capabilities8/sys/sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 21:09:08 -0000 Author: rwatson Date: Sat Jan 30 21:09:07 2010 New Revision: 203257 URL: http://svn.freebsd.org/changeset/base/203257 Log: Merge c173953 from the p4 TrustedBSD Capabilities branch to capabilities8: Eliminate collision on capability sysctl flags due to new flags being added in SVN Sponsored by: Google, Inc. Modified: projects/capabilities8/sys/sys/sysctl.h Modified: projects/capabilities8/sys/sys/sysctl.h ============================================================================== --- projects/capabilities8/sys/sys/sysctl.h Sat Jan 30 21:08:17 2010 (r203256) +++ projects/capabilities8/sys/sys/sysctl.h Sat Jan 30 21:09:07 2010 (r203257) @@ -87,8 +87,8 @@ struct ctlname { #define CTLFLAG_MPSAFE 0x00040000 /* Handler is MP safe */ #define CTLFLAG_VNET 0x00020000 /* Prisons with vnet can fiddle */ #define CTLFLAG_RDTUN (CTLFLAG_RD|CTLFLAG_TUN) -#define CTLFLAG_CAPRD 0x00040000 /* Can be read in capability mode */ -#define CTLFLAG_CAPWR 0x00020000 /* Can be written in capability mode */ +#define CTLFLAG_CAPRD 0x00010000 /* Can be read in capability mode */ +#define CTLFLAG_CAPWR 0x00008000 /* Can be written in capability mode */ #define CTLFLAG_CAPRW (CTLFLAG_CAPRD|CTLFLAG_CAPWR) /* From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 21:09:48 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0CE85106566B; Sat, 30 Jan 2010 21:09:48 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F1BEB8FC0C; Sat, 30 Jan 2010 21:09:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UL9lpc009412; Sat, 30 Jan 2010 21:09:47 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UL9lap009410; Sat, 30 Jan 2010 21:09:47 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302109.o0UL9lap009410@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 21:09:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203258 - projects/capabilities8/sys/sys X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 21:09:48 -0000 Author: rwatson Date: Sat Jan 30 21:09:47 2010 New Revision: 203258 URL: http://svn.freebsd.org/changeset/base/203258 Log: Merge c173954 from the p4 TrustedBSD Capabilities branch to capabilities8: Fix typo in comment. Sponsored by: Google, Inc. Modified: projects/capabilities8/sys/sys/user.h Modified: projects/capabilities8/sys/sys/user.h ============================================================================== --- projects/capabilities8/sys/sys/user.h Sat Jan 30 21:09:07 2010 (r203257) +++ projects/capabilities8/sys/sys/user.h Sat Jan 30 21:09:47 2010 (r203258) @@ -334,7 +334,7 @@ struct kinfo_file { struct sockaddr_storage kf_sa_peer; /* Peer address. */ pid_t kf_pid; /* Process identifier. */ int _kf_ispare0; /* Space for more stuff. */ - cap_rights_t kf_cap_rights; /* Capabiity rights. */ + cap_rights_t kf_cap_rights; /* Capability rights. */ int _kf_ispare[12]; /* Space for more stuff. */ /* Truncated before copyout in sysctl */ char kf_path[PATH_MAX]; /* Path to file, if any. */ From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 21:44:19 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EFD1A1065694; Sat, 30 Jan 2010 21:44:19 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DF3268FC08; Sat, 30 Jan 2010 21:44:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0ULiJfq017000; Sat, 30 Jan 2010 21:44:19 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0ULiJl0016997; Sat, 30 Jan 2010 21:44:19 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201001302144.o0ULiJl0016997@svn.freebsd.org> From: Robert Watson Date: Sat, 30 Jan 2010 21:44:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203259 - in projects/capabilities8/sys: amd64/conf i386/conf X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 21:44:20 -0000 Author: rwatson Date: Sat Jan 30 21:44:19 2010 New Revision: 203259 URL: http://svn.freebsd.org/changeset/base/203259 Log: Merge c173971 from the p4 TrustedBSD Capabilities branch to capabilities8: For sample CAPABILITIES configuration files, set the kernel ident, and synchronize between amd64/i386 options. Sponsored by: Google, Inc. Modified: projects/capabilities8/sys/amd64/conf/CAPABILITIES projects/capabilities8/sys/i386/conf/CAPABILITIES Modified: projects/capabilities8/sys/amd64/conf/CAPABILITIES ============================================================================== --- projects/capabilities8/sys/amd64/conf/CAPABILITIES Sat Jan 30 21:09:47 2010 (r203258) +++ projects/capabilities8/sys/amd64/conf/CAPABILITIES Sat Jan 30 21:44:19 2010 (r203259) @@ -1,4 +1,5 @@ include GENERIC +ident CAPABILITIES options CAPABILITIES options PROCDESC @@ -6,4 +7,3 @@ options KDTRACE_HOOKS options WITNESS options KDB options DDB - Modified: projects/capabilities8/sys/i386/conf/CAPABILITIES ============================================================================== --- projects/capabilities8/sys/i386/conf/CAPABILITIES Sat Jan 30 21:09:47 2010 (r203258) +++ projects/capabilities8/sys/i386/conf/CAPABILITIES Sat Jan 30 21:44:19 2010 (r203259) @@ -1,3 +1,9 @@ include GENERIC +ident CAPABILITIES + options CAPABILITIES options PROCDESC +options KDTRACE_HOOKS +options WITNESS +options KDB +options DDB From owner-svn-src-projects@FreeBSD.ORG Sat Jan 30 23:59:41 2010 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DC08106566C; Sat, 30 Jan 2010 23:59:41 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 68F568FC1F; Sat, 30 Jan 2010 23:59:41 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0UNxfRC046813; Sat, 30 Jan 2010 23:59:41 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0UNxfgv046795; Sat, 30 Jan 2010 23:59:41 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201001302359.o0UNxfgv046795@svn.freebsd.org> From: Nathan Whitehorn Date: Sat, 30 Jan 2010 23:59:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r203262 - in projects/ppc64/sys: amd64/amd64 amd64/ia32 amd64/linux32 arm/arm compat/ia32 i386/i386 i386/linux ia64/ia32 ia64/ia64 kern mips/mips pc98/pc98 powerpc/include powerpc/power... X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Jan 2010 23:59:41 -0000 Author: nwhitehorn Date: Sat Jan 30 23:59:40 2010 New Revision: 203262 URL: http://svn.freebsd.org/changeset/base/203262 Log: Pass the image_params struct as a new parameter to exec_setregs(), and add a new field with the ELF base address to the struct. This is required to relocate the subfields of PPC64 function descriptors for dynamic executables, and with this change, RTLD is able to start (although not work). Suggested by: kib Modified: projects/ppc64/sys/amd64/amd64/machdep.c projects/ppc64/sys/amd64/ia32/ia32_signal.c projects/ppc64/sys/amd64/linux32/linux32_sysvec.c projects/ppc64/sys/arm/arm/machdep.c projects/ppc64/sys/compat/ia32/ia32_signal.h projects/ppc64/sys/i386/i386/machdep.c projects/ppc64/sys/i386/linux/linux_sysvec.c projects/ppc64/sys/ia64/ia32/ia32_signal.c projects/ppc64/sys/ia64/ia64/machdep.c projects/ppc64/sys/kern/imgact_elf.c projects/ppc64/sys/kern/kern_exec.c projects/ppc64/sys/mips/mips/pm_machdep.c projects/ppc64/sys/pc98/pc98/machdep.c projects/ppc64/sys/powerpc/include/reg.h projects/ppc64/sys/powerpc/powerpc/exec_machdep.c projects/ppc64/sys/sparc64/sparc64/machdep.c projects/ppc64/sys/sun4v/sun4v/machdep.c projects/ppc64/sys/sys/imgact.h projects/ppc64/sys/sys/sysent.h Modified: projects/ppc64/sys/amd64/amd64/machdep.c ============================================================================== --- projects/ppc64/sys/amd64/amd64/machdep.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/amd64/amd64/machdep.c Sat Jan 30 23:59:40 2010 (r203262) @@ -841,11 +841,12 @@ SYSCTL_PROC(_machdep, OID_AUTO, idle, CT * Reset registers to default values on exec. */ void -exec_setregs(td, entry, stack, ps_strings) +exec_setregs(td, entry, stack, ps_strings, imgp) struct thread *td; u_long entry; u_long stack; u_long ps_strings; + struct image_params *imgp; { struct trapframe *regs = td->td_frame; struct pcb *pcb = td->td_pcb; Modified: projects/ppc64/sys/amd64/ia32/ia32_signal.c ============================================================================== --- projects/ppc64/sys/amd64/ia32/ia32_signal.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/amd64/ia32/ia32_signal.c Sat Jan 30 23:59:40 2010 (r203262) @@ -701,11 +701,12 @@ freebsd32_sigreturn(td, uap) * Clear registers on exec */ void -ia32_setregs(td, entry, stack, ps_strings) +ia32_setregs(td, entry, stack, ps_strings, imgp) struct thread *td; u_long entry; u_long stack; u_long ps_strings; + struct image_params *imgp; { struct trapframe *regs = td->td_frame; struct pcb *pcb = td->td_pcb; Modified: projects/ppc64/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- projects/ppc64/sys/amd64/linux32/linux32_sysvec.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/amd64/linux32/linux32_sysvec.c Sat Jan 30 23:59:40 2010 (r203262) @@ -828,11 +828,12 @@ exec_linux_imgact_try(struct image_param * XXX copied from ia32_signal.c. */ static void -exec_linux_setregs(td, entry, stack, ps_strings) +exec_linux_setregs(td, entry, stack, ps_strings, imgp) struct thread *td; u_long entry; u_long stack; u_long ps_strings; + struct image_params *imgp; { struct trapframe *regs = td->td_frame; struct pcb *pcb = td->td_pcb; Modified: projects/ppc64/sys/arm/arm/machdep.c ============================================================================== --- projects/ppc64/sys/arm/arm/machdep.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/arm/arm/machdep.c Sat Jan 30 23:59:40 2010 (r203262) @@ -516,7 +516,8 @@ spinlock_exit(void) * Clear registers on exec */ void -exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings) +exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings, + struct image_params *imgp) { struct trapframe *tf = td->td_frame; Modified: projects/ppc64/sys/compat/ia32/ia32_signal.h ============================================================================== --- projects/ppc64/sys/compat/ia32/ia32_signal.h Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/compat/ia32/ia32_signal.h Sat Jan 30 23:59:40 2010 (r203262) @@ -186,4 +186,4 @@ extern int sz_ia32_sigcode; extern int sz_freebsd4_ia32_sigcode; extern void ia32_sendsig(sig_t, struct ksiginfo *, sigset_t *); extern void ia32_setregs(struct thread *td, u_long entry, u_long stack, - u_long ps_strings); + u_long ps_strings, struct image_params *imgp); Modified: projects/ppc64/sys/i386/i386/machdep.c ============================================================================== --- projects/ppc64/sys/i386/i386/machdep.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/i386/i386/machdep.c Sat Jan 30 23:59:40 2010 (r203262) @@ -1461,11 +1461,12 @@ SYSCTL_PROC(_machdep, OID_AUTO, idle, CT * Reset registers to default values on exec. */ void -exec_setregs(td, entry, stack, ps_strings) +exec_setregs(td, entry, stack, ps_strings, imgp) struct thread *td; u_long entry; u_long stack; u_long ps_strings; + struct image_params *imgp; { struct trapframe *regs = td->td_frame; struct pcb *pcb = td->td_pcb; Modified: projects/ppc64/sys/i386/linux/linux_sysvec.c ============================================================================== --- projects/ppc64/sys/i386/linux/linux_sysvec.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/i386/linux/linux_sysvec.c Sat Jan 30 23:59:40 2010 (r203262) @@ -106,7 +106,7 @@ static void linux_prepsyscall(struct tra caddr_t *params); static void linux_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask); static void exec_linux_setregs(struct thread *td, u_long entry, - u_long stack, u_long ps_strings); + u_long stack, u_long ps_strings, struct image_params *imgp); static register_t *linux_copyout_strings(struct image_params *imgp); static boolean_t linux_trans_osrel(const Elf_Note *note, int32_t *osrel); @@ -928,7 +928,7 @@ exec_linux_imgact_try(struct image_param */ static void exec_linux_setregs(struct thread *td, u_long entry, - u_long stack, u_long ps_strings) + u_long stack, u_long ps_strings, struct image_params *imgp) { struct pcb *pcb = td->td_pcb; Modified: projects/ppc64/sys/ia64/ia32/ia32_signal.c ============================================================================== --- projects/ppc64/sys/ia64/ia32/ia32_signal.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/ia64/ia32/ia32_signal.c Sat Jan 30 23:59:40 2010 (r203262) @@ -120,7 +120,8 @@ freebsd32_sigreturn(struct thread *td, s void -ia32_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings) +ia32_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings, + struct image_params *imgp) { struct trapframe *tf = td->td_frame; vm_offset_t gdt, ldt; @@ -129,7 +130,7 @@ ia32_setregs(struct thread *td, u_long e struct segment_descriptor desc; struct vmspace *vmspace = td->td_proc->p_vmspace; - exec_setregs(td, entry, stack, ps_strings); + exec_setregs(td, entry, stack, ps_strings, imgp); /* Non-syscall frames are cleared by exec_setregs() */ if (tf->tf_flags & FRAME_SYSCALL) { Modified: projects/ppc64/sys/ia64/ia64/machdep.c ============================================================================== --- projects/ppc64/sys/ia64/ia64/machdep.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/ia64/ia64/machdep.c Sat Jan 30 23:59:40 2010 (r203262) @@ -1320,7 +1320,8 @@ set_mcontext(struct thread *td, const mc * Clear registers on exec. */ void -exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings) +exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings, + struct image_params *imgp) { struct trapframe *tf; uint64_t *ksttop, *kst; Modified: projects/ppc64/sys/kern/imgact_elf.c ============================================================================== --- projects/ppc64/sys/kern/imgact_elf.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/kern/imgact_elf.c Sat Jan 30 23:59:40 2010 (r203262) @@ -942,6 +942,7 @@ __CONCAT(exec_, __elfN(imgact))(struct i imgp->auxargs = elf_auxargs; imgp->interpreted = 0; + imgp->reloc_base = addr; imgp->proc->p_osrel = osrel; return (error); Modified: projects/ppc64/sys/kern/kern_exec.c ============================================================================== --- projects/ppc64/sys/kern/kern_exec.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/kern/kern_exec.c Sat Jan 30 23:59:40 2010 (r203262) @@ -372,6 +372,7 @@ do_execve(td, args, mac_p) imgp->execlabel = NULL; imgp->attr = &attr; imgp->entry_addr = 0; + imgp->reloc_base = 0; imgp->vmspace_destroyed = 0; imgp->interpreted = 0; imgp->opened = 0; @@ -800,10 +801,10 @@ interpret: /* Set values passed into the program in registers. */ if (p->p_sysent->sv_setregs) (*p->p_sysent->sv_setregs)(td, imgp->entry_addr, - (u_long)(uintptr_t)stack_base, imgp->ps_strings); + (u_long)(uintptr_t)stack_base, imgp->ps_strings, imgp); else exec_setregs(td, imgp->entry_addr, - (u_long)(uintptr_t)stack_base, imgp->ps_strings); + (u_long)(uintptr_t)stack_base, imgp->ps_strings, imgp); vfs_mark_atime(imgp->vp, td->td_ucred); Modified: projects/ppc64/sys/mips/mips/pm_machdep.c ============================================================================== --- projects/ppc64/sys/mips/mips/pm_machdep.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/mips/mips/pm_machdep.c Sat Jan 30 23:59:40 2010 (r203262) @@ -472,7 +472,8 @@ set_fpregs(struct thread *td, struct fpr * code by the MIPS elf abi). */ void -exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings) +exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings, + struct image_params *imgp) { bzero((caddr_t)td->td_frame, sizeof(struct trapframe)); Modified: projects/ppc64/sys/pc98/pc98/machdep.c ============================================================================== --- projects/ppc64/sys/pc98/pc98/machdep.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/pc98/pc98/machdep.c Sat Jan 30 23:59:40 2010 (r203262) @@ -1172,11 +1172,12 @@ void (*cpu_idle_hook)(void) = cpu_idle_d * Reset registers to default values on exec. */ void -exec_setregs(td, entry, stack, ps_strings) +exec_setregs(td, entry, stack, ps_strings, imgp) struct thread *td; u_long entry; u_long stack; u_long ps_strings; + struct image_params *imgp; { struct trapframe *regs = td->td_frame; struct pcb *pcb = td->td_pcb; Modified: projects/ppc64/sys/powerpc/include/reg.h ============================================================================== --- projects/ppc64/sys/powerpc/include/reg.h Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/powerpc/include/reg.h Sat Jan 30 23:59:40 2010 (r203262) @@ -60,9 +60,12 @@ int fill_dbregs(struct thread *, struct int set_dbregs(struct thread *, struct dbreg *); #ifdef COMPAT_PPC32 +struct image_params; + int fill_regs32(struct thread *, struct reg32 *); int set_regs32(struct thread *, struct reg32 *); -void ppc32_setregs(struct thread *, u_long, u_long, u_long); +void ppc32_setregs(struct thread *, u_long, u_long, u_long, + struct image_params *); #define fill_fpregs32(td, reg) fill_fpregs(td,(struct fpreg *)reg) #define set_fpregs32(td, reg) set_fpregs(td,(struct fpreg *)reg) Modified: projects/ppc64/sys/powerpc/powerpc/exec_machdep.c ============================================================================== --- projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/powerpc/powerpc/exec_machdep.c Sat Jan 30 23:59:40 2010 (r203262) @@ -486,7 +486,8 @@ set_mcontext(struct thread *td, const mc * Set set up registers on exec. */ void -exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings) +exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings, + struct image_params *imgp) { struct trapframe *tf; struct ps_strings arginfo; @@ -543,9 +544,9 @@ exec_setregs(struct thread *td, u_long e */ (void)copyin((void *)entry, entry_desc, sizeof(entry_desc)); - tf->srr0 = entry_desc[0]; - tf->fixreg[2] = entry_desc[1]; - tf->fixreg[11] = entry_desc[2]; + tf->srr0 = entry_desc[0] + imgp->reloc_base; + tf->fixreg[2] = entry_desc[1] + imgp->reloc_base; + tf->fixreg[11] = entry_desc[2] + imgp->reloc_base; tf->srr1 = PSL_SF | PSL_MBO | PSL_USERSET | PSL_FE_DFLT; #else tf->srr0 = entry; @@ -556,7 +557,8 @@ exec_setregs(struct thread *td, u_long e #ifdef COMPAT_PPC32 void -ppc32_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings) +ppc32_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings, + struct image_params *imgp) { struct trapframe *tf; struct freebsd32_ps_strings arginfo; Modified: projects/ppc64/sys/sparc64/sparc64/machdep.c ============================================================================== --- projects/ppc64/sys/sparc64/sparc64/machdep.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/sparc64/sparc64/machdep.c Sat Jan 30 23:59:40 2010 (r203262) @@ -899,7 +899,8 @@ ptrace_clear_single_step(struct thread * } void -exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings) +exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings, + struct image_params *imgp) { struct trapframe *tf; struct pcb *pcb; Modified: projects/ppc64/sys/sun4v/sun4v/machdep.c ============================================================================== --- projects/ppc64/sys/sun4v/sun4v/machdep.c Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/sun4v/sun4v/machdep.c Sat Jan 30 23:59:40 2010 (r203262) @@ -869,7 +869,8 @@ ptrace_clear_single_step(struct thread * } void -exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings) +exec_setregs(struct thread *td, u_long entry, u_long stack, u_long ps_strings, + struct image_params *imgp) { struct trapframe *tf; struct pcb *pcb; Modified: projects/ppc64/sys/sys/imgact.h ============================================================================== --- projects/ppc64/sys/sys/imgact.h Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/sys/imgact.h Sat Jan 30 23:59:40 2010 (r203262) @@ -56,6 +56,7 @@ struct image_params { struct vattr *attr; /* attributes of file */ const char *image_header; /* head of file to exec */ unsigned long entry_addr; /* entry address of target executable */ + unsigned long reloc_base; /* load address of image */ char vmspace_destroyed; /* flag - we've blown away original vm space */ char interpreted; /* flag - this executable is interpreted */ char opened; /* flag - we have opened executable vnode */ @@ -78,7 +79,8 @@ struct thread; int exec_check_permissions(struct image_params *); register_t *exec_copyout_strings(struct image_params *); int exec_new_vmspace(struct image_params *, struct sysentvec *); -void exec_setregs(struct thread *, u_long, u_long, u_long); +void exec_setregs(struct thread *, u_long, u_long, u_long, + struct image_params *); int exec_shell_imgact(struct image_params *); int exec_copyin_args(struct image_args *, char *, enum uio_seg, char **, char **); Modified: projects/ppc64/sys/sys/sysent.h ============================================================================== --- projects/ppc64/sys/sys/sysent.h Sat Jan 30 23:13:19 2010 (r203261) +++ projects/ppc64/sys/sys/sysent.h Sat Jan 30 23:59:40 2010 (r203262) @@ -98,7 +98,8 @@ struct sysentvec { vm_offset_t sv_psstrings; /* PS_STRINGS */ int sv_stackprot; /* vm protection for stack */ register_t *(*sv_copyout_strings)(struct image_params *); - void (*sv_setregs)(struct thread *, u_long, u_long, u_long); + void (*sv_setregs)(struct thread *, u_long, u_long, u_long, + struct image_params *); void (*sv_fixlimit)(struct rlimit *, int); u_long *sv_maxssiz; u_int sv_flags;