From owner-p4-projects@FreeBSD.ORG Tue Jul 8 19:17:24 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9BBD51065678; Tue, 8 Jul 2008 19:17:24 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5D8611065673 for ; Tue, 8 Jul 2008 19:17:24 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4A6E18FC2C for ; Tue, 8 Jul 2008 19:17:24 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m68JHObv004943 for ; Tue, 8 Jul 2008 19:17:24 GMT (envelope-from ed@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.2/8.14.1/Submit) id m68JHObS004941 for perforce@freebsd.org; Tue, 8 Jul 2008 19:17:24 GMT (envelope-from ed@FreeBSD.org) Date: Tue, 8 Jul 2008 19:17:24 GMT Message-Id: <200807081917.m68JHObS004941@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to ed@FreeBSD.org using -f From: Ed Schouten To: Perforce Change Reviews Cc: Subject: PERFORCE change 144906 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Jul 2008 19:17:24 -0000 http://perforce.freebsd.org/chv.cgi?CH=144906 Change 144906 by ed@ed_dull on 2008/07/08 19:16:24 IFC, to see whether integration works after moving mpsafetty to the projects space. Affected files ... .. //depot/projects/mpsafetty/include/unistd.h#2 integrate .. //depot/projects/mpsafetty/lib/libgeom/geom_ctl.c#2 integrate .. //depot/projects/mpsafetty/lib/libgeom/geom_getxml.c#2 integrate .. //depot/projects/mpsafetty/lib/libgeom/geom_xml2tree.c#2 integrate .. //depot/projects/mpsafetty/libexec/pt_chown/Makefile#1 branch .. //depot/projects/mpsafetty/libexec/pt_chown/pt_chown.c#1 branch .. //depot/projects/mpsafetty/share/man/man4/ddb.4#2 integrate .. //depot/projects/mpsafetty/share/man/man4/malo.4#2 integrate .. //depot/projects/mpsafetty/share/man/man4/pty.4#1 branch .. //depot/projects/mpsafetty/share/misc/committers-src.dot#2 integrate .. //depot/projects/mpsafetty/sys/amd64/amd64/minidump_machdep.c#2 integrate .. //depot/projects/mpsafetty/sys/amd64/conf/GENERIC#2 integrate .. //depot/projects/mpsafetty/sys/i386/conf/GENERIC#2 integrate .. //depot/projects/mpsafetty/sys/ia64/conf/GENERIC#2 integrate .. //depot/projects/mpsafetty/sys/kern/tty.c#2 integrate .. //depot/projects/mpsafetty/sys/kern/tty_conf.c#1 branch .. //depot/projects/mpsafetty/sys/kern/tty_pts.c#1 branch .. //depot/projects/mpsafetty/sys/kern/tty_pty.c#1 branch .. //depot/projects/mpsafetty/sys/netgraph/ng_iface.c#2 integrate .. //depot/projects/mpsafetty/sys/netgraph/ng_ip_input.c#2 integrate .. //depot/projects/mpsafetty/sys/netinet/in_pcb.h#2 integrate .. //depot/projects/mpsafetty/sys/netinet6/in6_pcb.c#2 integrate .. //depot/projects/mpsafetty/sys/netinet6/in6_src.c#2 integrate .. //depot/projects/mpsafetty/sys/netinet6/ip6_var.h#2 integrate .. //depot/projects/mpsafetty/sys/netinet6/raw_ip6.c#2 integrate .. //depot/projects/mpsafetty/sys/netinet6/udp6_usrreq.c#2 integrate .. //depot/projects/mpsafetty/sys/pc98/conf/GENERIC#2 integrate .. //depot/projects/mpsafetty/sys/powerpc/conf/GENERIC#2 integrate .. //depot/projects/mpsafetty/sys/sparc64/conf/GENERIC#2 integrate .. //depot/projects/mpsafetty/sys/sun4v/conf/GENERIC#2 integrate .. //depot/projects/mpsafetty/sys/sys/linedisc.h#1 branch .. //depot/projects/mpsafetty/sys/sys/tty.h#2 integrate .. //depot/projects/mpsafetty/usr.bin/calendar/calendars/calendar.freebsd#2 integrate .. //depot/projects/mpsafetty/usr.sbin/pkg_install/create/main.c#2 integrate .. //depot/projects/mpsafetty/usr.sbin/pkg_install/lib/lib.h#2 integrate Differences ... ==== //depot/projects/mpsafetty/include/unistd.h#2 (text+ko) ==== @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)unistd.h 8.12 (Berkeley) 4/27/95 - * $FreeBSD: src/include/unistd.h,v 1.89 2008/06/23 05:22:06 ed Exp $ + * $FreeBSD: src/include/unistd.h,v 1.90 2008/07/08 03:08:32 davidxu Exp $ */ #ifndef _UNISTD_H_ @@ -107,7 +107,7 @@ #define _POSIX_READER_WRITER_LOCKS 200112L #define _POSIX_REGEXP 1 #define _POSIX_SHELL 1 -#define _POSIX_SPAWN -1 +#define _POSIX_SPAWN 200112L #define _POSIX_SPIN_LOCKS 200112L #define _POSIX_THREAD_ATTR_STACKADDR 200112L #define _POSIX_THREAD_ATTR_STACKSIZE 200112L ==== //depot/projects/mpsafetty/lib/libgeom/geom_ctl.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libgeom/geom_ctl.c,v 1.4 2003/06/01 15:05:22 phk Exp $ + * $FreeBSD: src/lib/libgeom/geom_ctl.c,v 1.5 2008/07/08 17:34:50 lulf Exp $ */ #include @@ -45,6 +45,12 @@ #define GCTL_TABLE 1 #include +/* + * Global pointer to a string that is used to avoid an errorneous free in + * gctl_free. + */ +static char nomemmsg[] = "Could not allocate memory"; + void gctl_dump(struct gctl_req *req, FILE *f) { @@ -105,11 +111,12 @@ static void gctl_check_alloc(struct gctl_req *req, void *ptr) { + if (ptr != NULL) return; - gctl_set_error(req, "Could not allocate memory"); + gctl_set_error(req, nomemmsg); if (req->error == NULL) - req->error = "Could not allocate memory"; + req->error = nomemmsg; } /* @@ -134,7 +141,7 @@ struct gctl_req_arg *ap; req->narg++; - req->arg = realloc(req->arg, sizeof *ap * req->narg); + req->arg = reallocf(req->arg, sizeof *ap * req->narg); gctl_check_alloc(req, req->arg); if (req->arg == NULL) { req->narg = 0; @@ -157,6 +164,8 @@ return; ap->name = strdup(name); gctl_check_alloc(req, ap->name); + if (ap->name == NULL) + return; ap->nlen = strlen(ap->name) + 1; ap->value = __DECONST(void *, value); ap->flag = GCTL_PARAM_RD; @@ -180,6 +189,8 @@ return; ap->name = strdup(name); gctl_check_alloc(req, ap->name); + if (ap->name == NULL) + return; ap->nlen = strlen(ap->name) + 1; ap->value = value; ap->flag = GCTL_PARAM_RW; @@ -201,12 +212,11 @@ req->version = GCTL_VERSION; req->lerror = BUFSIZ; /* XXX: arbitrary number */ - req->error = malloc(req->lerror); + req->error = calloc(1, req->lerror); if (req->error == NULL) { gctl_check_alloc(req, req->error); return (req->error); } - memset(req->error, 0, req->lerror); req->lerror--; fd = open(_PATH_DEV PATH_GEOM_CTL, O_RDONLY); if (fd < 0) @@ -232,7 +242,7 @@ free(req->arg[i].name); } free(req->arg); - if (req->error != NULL) + if (req->error != NULL && req->error != nomemmsg) free(req->error); free(req); } ==== //depot/projects/mpsafetty/lib/libgeom/geom_getxml.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libgeom/geom_getxml.c,v 1.2 2007/05/01 10:47:09 wkoszek Exp $ + * $FreeBSD: src/lib/libgeom/geom_getxml.c,v 1.3 2008/07/08 17:34:50 lulf Exp $ */ #include @@ -39,28 +39,22 @@ geom_getxml() { char *p; - size_t l; - int i; + size_t l = 0; + int mib[3]; + size_t sizep; - l = 1024 * 1024; /* Start big, realloc back */ + sizep = sizeof(mib) / sizeof(*mib); + if (sysctlnametomib("kern.geom.confxml", mib, &sizep) != 0) + return (NULL); + if (sysctl(mib, sizep, NULL, &l, NULL, 0) != 0) + return (NULL); + l += 4096; p = malloc(l); - if (p) { - i = sysctlbyname("kern.geom.confxml", p, &l, NULL, 0); - if (i == 0) { - p = realloc(p, strlen(p) + 1); - return (p); - } + if (p == NULL) + return (NULL); + if (sysctl(mib, sizep, p, &l, NULL, 0) != 0) { free(p); - } - l = 0; - i = sysctlbyname("kern.geom.confxml", NULL, &l, NULL, 0); - if (i != 0) return (NULL); - p = malloc(l + 4096); - i = sysctlbyname("kern.geom.confxml", p, &l, NULL, 0); - if (i == 0) { - p = realloc(p, strlen(p) + 1); - return (p); } - return (NULL); + return (reallocf(p, strlen(p) + 1)); } ==== //depot/projects/mpsafetty/lib/libgeom/geom_xml2tree.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/lib/libgeom/geom_xml2tree.c,v 1.5 2005/05/24 10:10:38 phk Exp $ + * $FreeBSD: src/lib/libgeom/geom_xml2tree.c,v 1.6 2008/07/08 17:34:50 lulf Exp $ */ #include @@ -84,6 +84,11 @@ } if (!strcmp(name, "class") && mt->class == NULL) { mt->class = calloc(1, sizeof *mt->class); + if (mt->class == NULL) { + warn("Cannot allocate memory during processing of '%s' " + "element", name); + return; + } mt->class->lg_id = id; LIST_INSERT_HEAD(&mt->mesh->lg_class, mt->class, lg_class); LIST_INIT(&mt->class->lg_geom); @@ -92,6 +97,11 @@ } if (!strcmp(name, "geom") && mt->geom == NULL) { mt->geom = calloc(1, sizeof *mt->geom); + if (mt->geom == NULL) { + warn("Cannot allocate memory during processing of '%s' " + "element", name); + return; + } mt->geom->lg_id = id; LIST_INSERT_HEAD(&mt->class->lg_geom, mt->geom, lg_geom); LIST_INIT(&mt->geom->lg_provider); @@ -105,6 +115,11 @@ } if (!strcmp(name, "consumer") && mt->consumer == NULL) { mt->consumer = calloc(1, sizeof *mt->consumer); + if (mt->consumer == NULL) { + warn("Cannot allocate memory during processing of '%s' " + "element", name); + return; + } mt->consumer->lg_id = id; LIST_INSERT_HEAD(&mt->geom->lg_consumer, mt->consumer, lg_consumer); @@ -121,6 +136,11 @@ } if (!strcmp(name, "provider") && mt->provider == NULL) { mt->provider = calloc(1, sizeof *mt->provider); + if (mt->provider == NULL) { + warn("Cannot allocate memory during processing of '%s' " + "element", name); + return; + } mt->provider->lg_id = id; LIST_INSERT_HEAD(&mt->geom->lg_provider, mt->provider, lg_provider); @@ -162,6 +182,11 @@ mt = userData; sbuf_finish(mt->sbuf[mt->level]); p = strdup(sbuf_data(mt->sbuf[mt->level])); + if (p == NULL) { + warn("Cannot allocate memory during processing of '%s' " + "element", name); + return; + } sbuf_delete(mt->sbuf[mt->level]); mt->sbuf[mt->level] = NULL; mt->level--; @@ -212,8 +237,18 @@ } if (mt->config != NULL) { - gc = calloc(sizeof *gc, 1); + gc = calloc(1, sizeof *gc); + if (gc == NULL) { + warn("Cannot allocate memory during processing of '%s' " + "element", name); + return; + } gc->lg_name = strdup(name); + if (gc->lg_name == NULL) { + warn("Cannot allocate memory during processing of '%s' " + "element", name); + return; + } gc->lg_val = p; LIST_INSERT_HEAD(mt->config, gc, lg_config); return; ==== //depot/projects/mpsafetty/share/man/man4/ddb.4#2 (text+ko) ==== @@ -58,9 +58,9 @@ .\" Created. .\" [90/08/30 dbg] .\" -.\" $FreeBSD: src/share/man/man4/ddb.4,v 1.53 2008/06/08 21:08:20 wkoszek Exp $ +.\" $FreeBSD: src/share/man/man4/ddb.4,v 1.54 2008/07/07 21:32:02 bz Exp $ .\" -.Dd June 8, 2008 +.Dd July 7, 2008 .Dt DDB 4 .Os .Sh NAME @@ -584,6 +584,13 @@ Show brief information about the TTY subsystem. .\" .Pp +.It Ic show Cm cpusets +Print numbered root and assigned CPU affinity sets. +See +.Xr cpuset 2 +for more details. +.\" +.Pp .It Ic show Cm cyrixreg Show registers specific to the Cyrix processor. .\" ==== //depot/projects/mpsafetty/share/man/man4/malo.4#2 (text+ko) ==== @@ -29,7 +29,7 @@ .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF .\" THE POSSIBILITY OF SUCH DAMAGES. .\" -.\" $FreeBSD: src/share/man/man4/malo.4,v 1.5 2008/07/07 02:39:39 weongyo Exp $ +.\" $FreeBSD: src/share/man/man4/malo.4,v 1.6 2008/07/08 04:15:07 weongyo Exp $ .\"/ .Dd April 13, 2008 .Dt MALO 4 @@ -108,12 +108,6 @@ ifconfig wlan create wlandev malo0 ssid my_net \e wepmode on wepkey 0x1234567890 weptxkey 1 up .Ed -.Pp -Join a specific BSS network with 128-bit WEP encryption: -.Bd -literal -offset indent -ifconfig wlan create wlandev malo0 wlanmode adhoc ssid my_net \e - wepmode on wepkey 0x01020304050607080910111213 weptxkey 1 -.Ed .Sh SEE ALSO .Xr cardbus 4 , .Xr pci 4 , ==== //depot/projects/mpsafetty/share/misc/committers-src.dot#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/share/misc/committers-src.dot,v 1.79 2008/07/03 21:45:25 cokane Exp $ +# $FreeBSD: src/share/misc/committers-src.dot,v 1.80 2008/07/08 15:36:44 sson Exp $ # This file is meant to list all FreeBSD src committers and describe the # mentor-mentee relationships between them. @@ -160,6 +160,7 @@ shiba [label="Takeshi Shibagaki\nshiba@FreeBSD.org\n2000/06/19"] simon [label="Simon L. Nielsen\nsimon@FreeBSD.org\n2006/03/07"] sobomax [label="Maxim Sobolev\nsobomax@FreeBSD.org\n2001/07/25"] +sson [label="Stacey Son\nsson@FreeBSD.org\n2008/07/08"] suz [label="SUZUKI Shinsuke\nsuz@FreeBSD.org\n2002/03/26"] syrinx [label="Shteryana Shopova\nsyrinx@FreeBSD.org\n2006/10/07"] takawata [label="Takanori Watanabe\ntakawata@FreeBSD.org\n2000/07/06"] @@ -278,6 +279,8 @@ jake -> robert jake -> yongari +jb -> sson + jdp -> fjoe jhb -> arr ==== //depot/projects/mpsafetty/sys/amd64/amd64/minidump_machdep.c#2 (text) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/minidump_machdep.c,v 1.5 2008/06/20 20:59:31 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/minidump_machdep.c,v 1.6 2008/07/08 04:00:22 alc Exp $"); #include #include @@ -206,7 +206,8 @@ /* Walk page table pages, set bits in vm_page_dump */ ptesize = 0; pdp = (uint64_t *)PHYS_TO_DMAP(KPDPphys); - for (va = VM_MIN_KERNEL_ADDRESS; va < kernel_vm_end; va += NBPDR) { + for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + NKPT * NBPDR, + kernel_vm_end); va += NBPDR) { i = (va >> PDPSHIFT) & ((1ul << NPDPEPGSHIFT) - 1); /* * We always write a page, even if it is zero. Each @@ -312,7 +313,8 @@ /* Dump kernel page table pages */ pdp = (uint64_t *)PHYS_TO_DMAP(KPDPphys); - for (va = VM_MIN_KERNEL_ADDRESS; va < kernel_vm_end; va += NBPDR) { + for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + NKPT * NBPDR, + kernel_vm_end); va += NBPDR) { i = (va >> PDPSHIFT) & ((1ul << NPDPEPGSHIFT) - 1); /* We always write a page, even if it is zero */ if ((pdp[i] & PG_V) == 0) { ==== //depot/projects/mpsafetty/sys/amd64/conf/GENERIC#2 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.502 2008/06/20 19:28:33 delphij Exp $ +# $FreeBSD: src/sys/amd64/conf/GENERIC,v 1.503 2008/07/07 22:55:11 delphij Exp $ cpu HAMMER ident GENERIC @@ -64,6 +64,7 @@ options KBD_INSTALL_CDEV # install a CDEV entry in /dev options STOP_NMI # Stop CPUS using NMI instead of IPI options AUDIT # Security event auditing +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) # Debugging for use in -current options KDB # Enable kernel debugger support. ==== //depot/projects/mpsafetty/sys/i386/conf/GENERIC#2 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.492 2008/06/20 19:28:33 delphij Exp $ +# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.493 2008/07/07 22:55:11 delphij Exp $ cpu I486_CPU cpu I586_CPU @@ -63,6 +63,7 @@ options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options KBD_INSTALL_CDEV # install a CDEV entry in /dev options STOP_NMI # Stop CPUS using NMI instead of IPI +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing # Debugging for use in -current ==== //depot/projects/mpsafetty/sys/ia64/conf/GENERIC#2 (text+ko) ==== @@ -18,7 +18,7 @@ # # For hardware specific information check HARDWARE.TXT # -# $FreeBSD: src/sys/ia64/conf/GENERIC,v 1.97 2008/04/15 05:02:41 marcel Exp $ +# $FreeBSD: src/sys/ia64/conf/GENERIC,v 1.98 2008/07/07 22:55:11 delphij Exp $ cpu ITANIUM ident GENERIC @@ -63,6 +63,7 @@ options WITNESS # Enable checks to detect deadlocks and cycles options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed options _KPOSIX_PRIORITY_SCHEDULING # Posix P1003_1B RT extensions +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) # Various "busses" device firewire # FireWire bus code ==== //depot/projects/mpsafetty/sys/kern/tty.c#2 (text+ko) ==== ==== //depot/projects/mpsafetty/sys/netgraph/ng_iface.c#2 (text+ko) ==== @@ -37,7 +37,7 @@ * * Author: Archie Cobbs * - * $FreeBSD: src/sys/netgraph/ng_iface.c,v 1.48 2008/01/31 08:51:48 mav Exp $ + * $FreeBSD: src/sys/netgraph/ng_iface.c,v 1.49 2008/07/08 18:21:44 gonzo Exp $ * $Whistle: ng_iface.c,v 1.33 1999/11/01 09:24:51 julian Exp $ */ @@ -755,7 +755,7 @@ /* First chunk of an mbuf contains good junk */ if (harvest.point_to_point) random_harvest(m, 16, 3, 0, RANDOM_NET); - netisr_dispatch(isr, m); + netisr_queue(isr, m); return (0); } ==== //depot/projects/mpsafetty/sys/netgraph/ng_ip_input.c#2 (text+ko) ==== @@ -64,7 +64,7 @@ * Author: Brooks Davis * Derived from: ng_hole.c * - * $FreeBSD: src/sys/netgraph/ng_ip_input.c,v 1.4 2005/01/07 01:45:39 imp Exp $ + * $FreeBSD: src/sys/netgraph/ng_ip_input.c,v 1.5 2008/07/08 18:21:44 gonzo Exp $ */ /* @@ -120,7 +120,7 @@ NGI_GET_M(item, m); NG_FREE_ITEM(item); - netisr_dispatch(NETISR_IP, m); + netisr_queue(NETISR_IP, m); return 0; } ==== //depot/projects/mpsafetty/sys/netinet/in_pcb.h#2 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * @(#)in_pcb.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/netinet/in_pcb.h,v 1.106 2008/05/09 23:02:57 julian Exp $ + * $FreeBSD: src/sys/netinet/in_pcb.h,v 1.107 2008/07/08 17:22:59 rwatson Exp $ */ #ifndef _NETINET_IN_PCB_H_ @@ -115,17 +115,49 @@ struct icmp6_filter; +/*- + * struct inpcb captures the network layer state for TCP, UDP, and raw IPv4 + * and IPv6 sockets. In the case of TCP, further per-connection state is + * hung off of inp_ppcb most of the time. Almost all fields of struct inpcb + * are static after creation or protected by a per-inpcb rwlock, inp_lock. A + * few fields also require the global pcbinfo lock for the inpcb to be held, + * when modified, such as the global connection lists and hashes, as well as + * binding information (which affects which hash a connection is on). This + * model means that connections can be looked up without holding the + * per-connection lock, which is important for performance when attempting to + * find the connection for a packet given its IP and port tuple. Writing to + * these fields that write locks be held on both the inpcb and global locks. + * + * Key: + * (c) - Constant after initialization + * (i) - Protected by the inpcb lock + * (p) - Protected by the pcbinfo lock for the inpcb + * (s) - Protected by another subsystem's locks + * (x) - Undefined locking + * + * A few other notes: + * + * When a read lock is held, stability of the field is guaranteed; to write + * to a field, a write lock must generally be held. + * + * netinet/netinet6-layer code should not assume that the inp_socket pointer + * is safe to dereference without inp_lock being held, even for protocols + * other than TCP (where the inpcb persists during TIMEWAIT even after the + * socket has been freed), or there may be close(2)-related races. + * + * The inp_vflag field is overloaded, and would otherwise ideally be (c). + */ struct inpcb { - LIST_ENTRY(inpcb) inp_hash; /* hash list */ - LIST_ENTRY(inpcb) inp_list; /* list for all PCBs of this proto */ - void *inp_ppcb; /* pointer to per-protocol pcb */ - struct inpcbinfo *inp_pcbinfo; /* PCB list info */ - struct socket *inp_socket; /* back pointer to socket */ + LIST_ENTRY(inpcb) inp_hash; /* (i/p) hash list */ + LIST_ENTRY(inpcb) inp_list; /* (i/p) list for all PCBs for proto */ + void *inp_ppcb; /* (i) pointer to per-protocol pcb */ + struct inpcbinfo *inp_pcbinfo; /* (c) PCB list info */ + struct socket *inp_socket; /* (i) back pointer to socket */ - u_int32_t inp_flow; - int inp_flags; /* generic IP/datagram flags */ + u_int32_t inp_flow; /* (i) IPv6 flow information */ + int inp_flags; /* (i) generic IP/datagram flags */ - u_char inp_vflag; /* IP version flag (v4/v6) */ + u_char inp_vflag; /* (i) IP version flag (v4/v6) */ #define INP_IPV4 0x1 #define INP_IPV6 0x2 #define INP_IPV6PROTO 0x4 /* opened under IPv6 protocol */ @@ -133,24 +165,24 @@ #define INP_ONESBCAST 0x10 /* send all-ones broadcast */ #define INP_DROPPED 0x20 /* protocol drop flag */ #define INP_SOCKREF 0x40 /* strong socket reference */ - u_char inp_ip_ttl; /* time to live proto */ - u_char inp_ip_p; /* protocol proto */ - u_char inp_ip_minttl; /* minimum TTL or drop */ - uint32_t inp_ispare1; /* connection id / queue id */ - void *inp_pspare[2]; /* rtentry / general use */ + u_char inp_ip_ttl; /* (i) time to live proto */ + u_char inp_ip_p; /* (c) protocol proto */ + u_char inp_ip_minttl; /* (i) minimum TTL or drop */ + uint32_t inp_ispare1; /* (x) connection id / queue id */ + void *inp_pspare[2]; /* (x) rtentry / general use */ /* Local and foreign ports, local and foreign addr. */ struct in_conninfo inp_inc; - /* list for this PCB's local port */ - struct label *inp_label; /* MAC label */ - struct inpcbpolicy *inp_sp; /* for IPSEC */ + /* (i/p) list for PCB's local port */ + struct label *inp_label; /* (i) MAC label */ + struct inpcbpolicy *inp_sp; /* (s) for IPSEC */ /* Protocol-dependent part; options. */ struct { - u_char inp4_ip_tos; /* type of service proto */ - struct mbuf *inp4_options; /* IP options */ - struct ip_moptions *inp4_moptions; /* IP multicast options */ + u_char inp4_ip_tos; /* (i) type of service proto */ + struct mbuf *inp4_options; /* (i) IP options */ + struct ip_moptions *inp4_moptions; /* (i) IP multicast options */ } inp_depend4; #define inp_fport inp_inc.inc_fport #define inp_lport inp_inc.inc_lport @@ -160,22 +192,22 @@ #define inp_options inp_depend4.inp4_options #define inp_moptions inp_depend4.inp4_moptions struct { - /* IP options */ + /* (i) IP options */ struct mbuf *inp6_options; - /* IP6 options for outgoing packets */ + /* (i) IP6 options for outgoing packets */ struct ip6_pktopts *inp6_outputopts; - /* IP multicast options */ + /* (i) IP multicast options */ struct ip6_moptions *inp6_moptions; - /* ICMPv6 code type filter */ + /* (i) ICMPv6 code type filter */ struct icmp6_filter *inp6_icmp6filt; - /* IPV6_CHECKSUM setsockopt */ + /* (i) IPV6_CHECKSUM setsockopt */ int inp6_cksum; short inp6_hops; } inp_depend6; - LIST_ENTRY(inpcb) inp_portlist; - struct inpcbport *inp_phd; /* head of this list */ + LIST_ENTRY(inpcb) inp_portlist; /* (i/p) */ + struct inpcbport *inp_phd; /* (i/p) head of this list */ #define inp_zero_size offsetof(struct inpcb, inp_gencnt) - inp_gen_t inp_gencnt; /* generation count of this instance */ + inp_gen_t inp_gencnt; /* (c) generation count of this instance */ struct rwlock inp_lock; #define in6p_faddr inp_inc.inc6_faddr ==== //depot/projects/mpsafetty/sys/netinet6/in6_pcb.c#2 (text+ko) ==== @@ -61,7 +61,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet6/in6_pcb.c,v 1.90 2008/04/19 14:36:19 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet6/in6_pcb.c,v 1.91 2008/07/08 18:41:36 bz Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -317,8 +317,9 @@ * Is it the intended behavior? */ *plocal_addr6 = in6_selectsrc(sin6, inp->in6p_outputopts, - inp->in6p_moptions, NULL, - &inp->in6p_laddr, &ifp, &error); + inp, NULL, + inp->inp_socket->so_cred, + &ifp, &error); if (ifp && scope_ambiguous && (error = in6_setscope(&sin6->sin6_addr, ifp, NULL)) != 0) { return(error); ==== //depot/projects/mpsafetty/sys/netinet6/in6_src.c#2 (text+ko) ==== @@ -61,7 +61,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet6/in6_src.c,v 1.51 2008/04/17 21:38:17 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet6/in6_src.c,v 1.52 2008/07/08 18:41:36 bz Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -170,8 +170,8 @@ struct in6_addr * in6_selectsrc(struct sockaddr_in6 *dstsock, struct ip6_pktopts *opts, - struct ip6_moptions *mopts, struct route_in6 *ro, - struct in6_addr *laddr, struct ifnet **ifpp, int *errorp) + struct inpcb *inp, struct route_in6 *ro, struct ucred *cred, + struct ifnet **ifpp, int *errorp) { struct in6_addr dst; struct ifnet *ifp = NULL; @@ -181,12 +181,18 @@ struct in6_addrpolicy *dst_policy = NULL, *best_policy = NULL; u_int32_t odstzone; int prefer_tempaddr; + struct ip6_moptions *mopts; dst = dstsock->sin6_addr; /* make a copy for local operation */ *errorp = 0; if (ifpp) *ifpp = NULL; + if (inp != NULL) + mopts = inp->in6p_moptions; + else + mopts = NULL; + /* * If the source address is explicitly specified by the caller, * check if the requested source address is indeed a unicast address @@ -236,8 +242,9 @@ /* * Otherwise, if the socket has already bound the source, just use it. */ - if (laddr && !IN6_IS_ADDR_UNSPECIFIED(laddr)) - return (laddr); + if (inp != NULL && !IN6_IS_ADDR_UNSPECIFIED(&inp->in6p_laddr)) { + return (&inp->in6p_laddr); + } /* * If the address is not specified, choose the best one based on ==== //depot/projects/mpsafetty/sys/netinet6/ip6_var.h#2 (text+ko) ==== @@ -58,7 +58,7 @@ * SUCH DAMAGE. * * @(#)ip_var.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/netinet6/ip6_var.h,v 1.42 2008/05/24 15:20:48 bz Exp $ + * $FreeBSD: src/sys/netinet6/ip6_var.h,v 1.43 2008/07/08 18:41:36 bz Exp $ */ #ifndef _NETINET6_IP6_VAR_H_ @@ -391,9 +391,9 @@ int dest6_input __P((struct mbuf **, int *, int)); int none_input __P((struct mbuf **, int *, int)); -struct in6_addr *in6_selectsrc __P((struct sockaddr_in6 *, - struct ip6_pktopts *, struct ip6_moptions *, struct route_in6 *, - struct in6_addr *, struct ifnet **, int *)); +struct in6_addr *in6_selectsrc __P((struct sockaddr_in6 *, struct ip6_pktopts *, + struct inpcb *inp, struct route_in6 *, struct ucred *cred, + struct ifnet **, int *)); int in6_selectroute __P((struct sockaddr_in6 *, struct ip6_pktopts *, struct ip6_moptions *, struct route_in6 *, struct ifnet **, struct rtentry **, int)); ==== //depot/projects/mpsafetty/sys/netinet6/raw_ip6.c#2 (text+ko) ==== @@ -60,7 +60,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet6/raw_ip6.c,v 1.79 2008/07/05 18:03:39 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet6/raw_ip6.c,v 1.80 2008/07/08 18:41:36 bz Exp $"); #include "opt_ipsec.h" #include "opt_inet6.h" @@ -387,8 +387,8 @@ /* * Source address selection. */ - if ((in6a = in6_selectsrc(dstsock, optp, in6p->in6p_moptions, NULL, - &in6p->in6p_laddr, &oifp, &error)) == NULL) { + if ((in6a = in6_selectsrc(dstsock, optp, in6p, NULL, so->so_cred, + &oifp, &error)) == NULL) { if (error == 0) error = EADDRNOTAVAIL; goto bad; @@ -712,8 +712,8 @@ INP_WLOCK(inp); /* Source address selection. XXX: need pcblookup? */ in6a = in6_selectsrc(addr, inp->in6p_outputopts, - inp->in6p_moptions, NULL, - &inp->in6p_laddr, &ifp, &error); + inp, NULL, so->so_cred, + &ifp, &error); if (in6a == NULL) { INP_WUNLOCK(inp); INP_INFO_WUNLOCK(&ripcbinfo); ==== //depot/projects/mpsafetty/sys/netinet6/udp6_usrreq.c#2 (text+ko) ==== @@ -63,7 +63,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/netinet6/udp6_usrreq.c,v 1.89 2008/07/07 10:11:17 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/netinet6/udp6_usrreq.c,v 1.91 2008/07/08 18:41:36 bz Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -580,8 +580,8 @@ } if (!IN6_IS_ADDR_V4MAPPED(faddr)) { - laddr = in6_selectsrc(sin6, optp, inp->in6p_moptions, - NULL, &inp->in6p_laddr, &oifp, &error); + laddr = in6_selectsrc(sin6, optp, inp, NULL, + td->td_ucred, &oifp, &error); if (oifp && scope_ambiguous && (error = in6_setscope(&sin6->sin6_addr, oifp, NULL))) { @@ -1015,6 +1015,8 @@ .pru_send = udp6_send, .pru_shutdown = udp_shutdown, .pru_sockaddr = in6_mapped_sockaddr, + .pru_soreceive = soreceive_dgram, + .pru_sosend = sosend_dgram, .pru_sosetlabel = in_pcbsosetlabel, .pru_close = udp6_close }; ==== //depot/projects/mpsafetty/sys/pc98/conf/GENERIC#2 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/pc98/conf/GENERIC,v 1.306 2008/05/17 23:50:00 remko Exp $ +# $FreeBSD: src/sys/pc98/conf/GENERIC,v 1.307 2008/07/07 22:55:11 delphij Exp $ cpu I486_CPU cpu I586_CPU @@ -65,6 +65,7 @@ options SYSVSEM # SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options KBD_INSTALL_CDEV # install a CDEV entry in /dev +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing # Debugging for use in -current ==== //depot/projects/mpsafetty/sys/powerpc/conf/GENERIC#2 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/powerpc/conf/GENERIC,v 1.79 2008/06/07 22:58:32 marcel Exp $ +# $FreeBSD: src/sys/powerpc/conf/GENERIC,v 1.80 2008/07/07 22:55:11 delphij Exp $ cpu AIM ident GENERIC @@ -62,6 +62,7 @@ options SYSVMSG #SYSV-style message queues options SYSVSEM #SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing # Debugging for use in -current ==== //depot/projects/mpsafetty/sys/sparc64/conf/GENERIC#2 (text+ko) ==== @@ -18,7 +18,7 @@ # # For hardware specific information check HARDWARE.TXT # -# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.137 2008/05/17 23:50:00 remko Exp $ +# $FreeBSD: src/sys/sparc64/conf/GENERIC,v 1.138 2008/07/07 22:55:11 delphij Exp $ cpu SUN4U ident GENERIC @@ -63,6 +63,7 @@ options SYSVMSG # SYSV-style message queues options SYSVSEM # SYSV-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing # Debugging for use in -current ==== //depot/projects/mpsafetty/sys/sun4v/conf/GENERIC#2 (text+ko) ==== @@ -18,7 +18,7 @@ # # For hardware specific information check HARDWARE.TXT # -# $FreeBSD: src/sys/sun4v/conf/GENERIC,v 1.18 2008/05/21 03:36:53 obrien Exp $ +# $FreeBSD: src/sys/sun4v/conf/GENERIC,v 1.19 2008/07/07 22:55:11 delphij Exp $ cpu SUN4V ident GENERIC @@ -64,6 +64,7 @@ options AHC_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~128k to driver. options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. +options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing # Debugging for use in -current ==== //depot/projects/mpsafetty/sys/sys/tty.h#2 (text+ko) ==== ==== //depot/projects/mpsafetty/usr.bin/calendar/calendars/calendar.freebsd#2 (text+ko) ==== @@ -1,7 +1,7 @@ /* * FreeBSD * - * $FreeBSD: src/usr.bin/calendar/calendars/calendar.freebsd,v 1.241 2008/06/19 17:10:05 mav Exp $ + * $FreeBSD: src/usr.bin/calendar/calendars/calendar.freebsd,v 1.242 2008/07/08 15:43:54 sson Exp $ */ #ifndef _calendar_freebsd_ @@ -103,6 +103,7 @@ 04/03 Hellmuth Michaelis born in Kiel, Schleswig-Holstein, Germany, 1958 04/03 Tong Liu born in Beijing, People's Republic of China, 1981 04/03 Gabor Pali born in Kunhegyes, Hungary, 1982 +04/05 Stacey Son born in Burley, Idaho, United States. 1967 04/08 Jordan K. Hubbard born in Honolulu, Hawaii, United States, 1963 04/09 Ceri Davies born in Haverfordwest, Pembrokeshire, United Kingdom, 1976 04/11 Bruce A. Mah born in Fresno, California, United States, 1969 ==== //depot/projects/mpsafetty/usr.sbin/pkg_install/create/main.c#2 (text+ko) ==== @@ -10,7 +10,7 @@ */ #include -__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/create/main.c,v 1.45 2008/06/16 23:41:11 flz Exp $"); +__FBSDID("$FreeBSD: src/usr.sbin/pkg_install/create/main.c,v 1.46 2008/07/08 03:21:05 keramida Exp $"); #include #include @@ -208,6 +208,10 @@ Recursive = TRUE; break; + case 'n': + Regenerate = FALSE; + break; + case 0: if (Help) usage(); ==== //depot/projects/mpsafetty/usr.sbin/pkg_install/lib/lib.h#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/usr.sbin/pkg_install/lib/lib.h,v 1.68 2008/06/12 15:21:13 flz Exp $ */ +/* $FreeBSD: src/usr.sbin/pkg_install/lib/lib.h,v 1.69 2008/07/08 03:21:05 keramida Exp $ */ /* * FreeBSD install - a package for the installation and maintainance @@ -105,7 +105,7 @@ * Version of the package tools - increase only when some * functionality used by bsd.port.mk is changed, added or removed */ -#define PKG_INSTALL_VERSION 20080612 +#define PKG_INSTALL_VERSION 20080708 #define PKG_WRAPCONF_FNAME "/var/db/pkg_install.conf" #define main(argc, argv) real_main(argc, argv)