From owner-svn-src-user@FreeBSD.ORG Thu Jun 18 19:41:04 2009 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9D65A1065672; Thu, 18 Jun 2009 19:41:04 +0000 (UTC) (envelope-from gnn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 881AB8FC16; Thu, 18 Jun 2009 19:41:04 +0000 (UTC) (envelope-from gnn@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n5IJf4MU020840; Thu, 18 Jun 2009 19:41:04 GMT (envelope-from gnn@svn.freebsd.org) Received: (from gnn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n5IJf4EM020820; Thu, 18 Jun 2009 19:41:04 GMT (envelope-from gnn@svn.freebsd.org) Message-Id: <200906181941.n5IJf4EM020820@svn.freebsd.org> From: "George V. Neville-Neil" Date: Thu, 18 Jun 2009 19:41:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r194455 - in user/gnn/fasttrap: . bin/sh cddl/contrib/opensolaris include/rpc lib/libc/rpc lib/libusb sys/cddl/contrib/opensolaris sys/dev/if_ndis sys/dev/xen/netfront sys/dev/xen/xenpc... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Jun 2009 19:41:05 -0000 Author: gnn Date: Thu Jun 18 19:41:04 2009 New Revision: 194455 URL: http://svn.freebsd.org/changeset/base/194455 Log: IFC sync with the head of the tree Modified: user/gnn/fasttrap/ (props changed) user/gnn/fasttrap/bin/sh/input.c user/gnn/fasttrap/cddl/contrib/opensolaris/ (props changed) user/gnn/fasttrap/include/rpc/svc_dg.h user/gnn/fasttrap/lib/libc/rpc/svc_dg.c user/gnn/fasttrap/lib/libc/rpc/svc_generic.c user/gnn/fasttrap/lib/libusb/ (props changed) user/gnn/fasttrap/sys/cddl/contrib/opensolaris/ (props changed) user/gnn/fasttrap/sys/dev/if_ndis/if_ndis.c user/gnn/fasttrap/sys/dev/xen/netfront/ (props changed) user/gnn/fasttrap/sys/dev/xen/xenpci/ (props changed) user/gnn/fasttrap/sys/fs/nfsclient/nfs_clbio.c user/gnn/fasttrap/sys/fs/nfsclient/nfs_clkrpc.c user/gnn/fasttrap/sys/fs/nfsserver/nfs_nfsdkrpc.c user/gnn/fasttrap/sys/geom/label/g_label_gpt.c user/gnn/fasttrap/sys/modules/dtrace/dtnfsclient/ (props changed) user/gnn/fasttrap/sys/modules/ip6_mroute_mod/ (props changed) user/gnn/fasttrap/sys/modules/ipmi/ipmi_linux/ (props changed) user/gnn/fasttrap/sys/netinet/ipfw/ip_dummynet.c (props changed) user/gnn/fasttrap/sys/netinet/ipfw/ip_fw2.c (props changed) user/gnn/fasttrap/sys/netinet/ipfw/ip_fw_pfil.c (props changed) user/gnn/fasttrap/sys/nfsclient/nfs_bio.c user/gnn/fasttrap/sys/nfsserver/nfs_srvkrpc.c user/gnn/fasttrap/sys/nlm/nlm_prot_impl.c user/gnn/fasttrap/sys/rpc/svc.c user/gnn/fasttrap/sys/rpc/svc_generic.c user/gnn/fasttrap/sys/rpc/svc_vc.c user/gnn/fasttrap/sys/vm/uma_core.c user/gnn/fasttrap/tools/regression/lib/msun/test-conj.t (props changed) user/gnn/fasttrap/tools/tools/ath/common/dumpregs.h (props changed) user/gnn/fasttrap/tools/tools/ath/common/dumpregs_5210.c (props changed) user/gnn/fasttrap/tools/tools/ath/common/dumpregs_5211.c (props changed) user/gnn/fasttrap/tools/tools/ath/common/dumpregs_5212.c (props changed) user/gnn/fasttrap/tools/tools/ath/common/dumpregs_5416.c (props changed) user/gnn/fasttrap/tools/tools/nanobsd/nanobsd.sh user/gnn/fasttrap/usr.bin/ncal/ncal.c user/gnn/fasttrap/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) user/gnn/fasttrap/usr.sbin/makefs/ffs/ffs_subr.c (props changed) user/gnn/fasttrap/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) user/gnn/fasttrap/usr.sbin/makefs/getid.c (props changed) user/gnn/fasttrap/usr.sbin/mountd/mountd.c Modified: user/gnn/fasttrap/bin/sh/input.c ============================================================================== --- user/gnn/fasttrap/bin/sh/input.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/bin/sh/input.c Thu Jun 18 19:41:04 2009 (r194455) @@ -118,9 +118,9 @@ INIT { } RESET { + popallfiles(); if (exception != EXSHELLPROC) parselleft = parsenleft = 0; /* clear input buffer */ - popallfiles(); } SHELLPROC { Modified: user/gnn/fasttrap/include/rpc/svc_dg.h ============================================================================== --- user/gnn/fasttrap/include/rpc/svc_dg.h Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/include/rpc/svc_dg.h Thu Jun 18 19:41:04 2009 (r194455) @@ -46,6 +46,7 @@ struct svc_dg_data { XDR su_xdrs; /* XDR handle */ char su_verfbody[MAX_AUTH_BYTES]; /* verifier body */ void *su_cache; /* cached data, NULL if none */ + struct netbuf su_srcaddr; /* dst address of last msg */ }; #define __rpcb_get_dg_xidp(x) (&((struct svc_dg_data *)(x)->xp_p2)->su_xid) Modified: user/gnn/fasttrap/lib/libc/rpc/svc_dg.c ============================================================================== --- user/gnn/fasttrap/lib/libc/rpc/svc_dg.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/lib/libc/rpc/svc_dg.c Thu Jun 18 19:41:04 2009 (r194455) @@ -97,8 +97,9 @@ int svc_dg_enablecache(SVCXPRT *, u_int) */ static const char svc_dg_str[] = "svc_dg_create: %s"; static const char svc_dg_err1[] = "could not get transport information"; -static const char svc_dg_err2[] = " transport does not support data transfer"; +static const char svc_dg_err2[] = "transport does not support data transfer"; static const char svc_dg_err3[] = "getsockname failed"; +static const char svc_dg_err4[] = "cannot set IP_RECVDSTADDR"; static const char __no_mem_str[] = "out of memory"; SVCXPRT * @@ -156,6 +157,23 @@ svc_dg_create(fd, sendsize, recvsize) xprt->xp_ltaddr.len = slen; memcpy(xprt->xp_ltaddr.buf, &ss, slen); + if (ss.ss_family == AF_INET) { + struct sockaddr_in *sin; + static const int true_value = 1; + + sin = (struct sockaddr_in *)(void *)&ss; + if (sin->sin_addr.s_addr == INADDR_ANY) { + su->su_srcaddr.buf = mem_alloc(sizeof (ss)); + su->su_srcaddr.maxlen = sizeof (ss); + + if (_setsockopt(fd, IPPROTO_IP, IP_RECVDSTADDR, + &true_value, sizeof(true_value))) { + warnx(svc_dg_str, svc_dg_err4); + goto freedata_nowarn; + } + } + } + xprt_register(xprt); return (xprt); freedata: @@ -197,13 +215,15 @@ svc_dg_recvfrom(int fd, char *buf, int b msg.msg_iovlen = 1; msg.msg_namelen = *raddrlen; msg.msg_name = (char *)raddr; - msg.msg_control = (caddr_t)tmp; - msg.msg_controllen = CMSG_LEN(sizeof(*lin)); + if (laddr != NULL) { + msg.msg_control = (caddr_t)tmp; + msg.msg_controllen = CMSG_LEN(sizeof(*lin)); + } rlen = _recvmsg(fd, &msg, 0); if (rlen >= 0) *raddrlen = msg.msg_namelen; - if (rlen == -1 || !laddr || + if (rlen == -1 || laddr == NULL || msg.msg_controllen < sizeof(struct cmsghdr) || msg.msg_flags & MSG_CTRUNC) return rlen; @@ -214,18 +234,19 @@ svc_dg_recvfrom(int fd, char *buf, int b cmsg->cmsg_type == IP_RECVDSTADDR) { have_lin = TRUE; memcpy(&lin->sin_addr, - (struct in_addr *)CMSG_DATA(cmsg), sizeof(struct in_addr)); + (struct in_addr *)CMSG_DATA(cmsg), + sizeof(struct in_addr)); break; } } - if (!have_lin) - return rlen; - lin->sin_family = AF_INET; lin->sin_port = 0; *laddrlen = sizeof(struct sockaddr_in); + if (!have_lin) + lin->sin_addr.s_addr = INADDR_ANY; + return rlen; } @@ -246,7 +267,7 @@ again: alen = sizeof (struct sockaddr_storage); rlen = svc_dg_recvfrom(xprt->xp_fd, rpc_buffer(xprt), su->su_iosz, (struct sockaddr *)(void *)&ss, &alen, - (struct sockaddr *)xprt->xp_ltaddr.buf, &xprt->xp_ltaddr.len); + (struct sockaddr *)su->su_srcaddr.buf, &su->su_srcaddr.len); if (rlen == -1 && errno == EINTR) goto again; if (rlen == -1 || (rlen < (ssize_t)(4 * sizeof (u_int32_t)))) @@ -300,7 +321,8 @@ svc_dg_sendto(int fd, char *buf, int buf msg.msg_namelen = raddrlen; msg.msg_name = (char *)raddr; - if (laddr->sa_family == AF_INET && lin->s_addr != INADDR_ANY) { + if (laddr != NULL && laddr->sa_family == AF_INET && + lin->s_addr != INADDR_ANY) { msg.msg_control = (caddr_t)tmp; msg.msg_controllen = CMSG_LEN(sizeof(*lin)); cmsg = CMSG_FIRSTHDR(&msg); @@ -346,8 +368,8 @@ svc_dg_reply(xprt, msg) if (svc_dg_sendto(xprt->xp_fd, rpc_buffer(xprt), slen, (struct sockaddr *)xprt->xp_rtaddr.buf, (socklen_t)xprt->xp_rtaddr.len, - (struct sockaddr *)xprt->xp_ltaddr.buf, - xprt->xp_ltaddr.len) == (ssize_t) slen) { + (struct sockaddr *)su->su_srcaddr.buf, + (socklen_t)su->su_srcaddr.len) == (ssize_t) slen) { stat = TRUE; if (su->su_cache) cache_set(xprt, slen); @@ -393,6 +415,8 @@ svc_dg_destroy(xprt) (void)_close(xprt->xp_fd); XDR_DESTROY(&(su->su_xdrs)); (void) mem_free(rpc_buffer(xprt), su->su_iosz); + if (su->su_srcaddr.buf) + (void) mem_free(su->su_srcaddr.buf, su->su_srcaddr.maxlen); (void) mem_free(su, sizeof (*su)); if (xprt->xp_rtaddr.buf) (void) mem_free(xprt->xp_rtaddr.buf, xprt->xp_rtaddr.maxlen); Modified: user/gnn/fasttrap/lib/libc/rpc/svc_generic.c ============================================================================== --- user/gnn/fasttrap/lib/libc/rpc/svc_generic.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/lib/libc/rpc/svc_generic.c Thu Jun 18 19:41:04 2009 (r194455) @@ -199,7 +199,6 @@ svc_tli_create(fd, nconf, bindaddr, send struct __rpc_sockinfo si; struct sockaddr_storage ss; socklen_t slen; - static const int true_value = 1; if (fd == RPC_ANYFD) { if (nconf == NULL) { @@ -226,14 +225,6 @@ svc_tli_create(fd, nconf, bindaddr, send } } - if (si.si_af == AF_INET && si.si_socktype == SOCK_DGRAM) { - if (_setsockopt(fd, IPPROTO_IP, IP_RECVDSTADDR, - &true_value, sizeof(true_value))) { - warnx("svc_tli_create: cannot set IP_RECVDSTADDR"); - return (NULL); - } - } - /* * If the fd is unbound, try to bind it. */ Modified: user/gnn/fasttrap/sys/dev/if_ndis/if_ndis.c ============================================================================== --- user/gnn/fasttrap/sys/dev/if_ndis/if_ndis.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/dev/if_ndis/if_ndis.c Thu Jun 18 19:41:04 2009 (r194455) @@ -2277,6 +2277,7 @@ ndis_setstate_80211(sc) struct ndis_softc *sc; { struct ieee80211com *ic; + struct ieee80211vap *vap; ndis_80211_macaddr bssid; ndis_80211_config config; int rval = 0, len; @@ -2285,6 +2286,7 @@ ndis_setstate_80211(sc) ifp = sc->ifp; ic = ifp->if_l2com; + vap = TAILQ_FIRST(&ic->ic_vaps); if (!NDIS_INITIALIZED(sc)) { DPRINTF(("%s: NDIS not initialized\n", __func__)); @@ -2313,7 +2315,7 @@ ndis_setstate_80211(sc) /* Set power management */ len = sizeof(arg); - if (ic->ic_flags & IEEE80211_F_PMGTON) + if (vap->iv_flags & IEEE80211_F_PMGTON) arg = NDIS_80211_POWERMODE_FAST_PSP; else arg = NDIS_80211_POWERMODE_CAM; @@ -2737,9 +2739,9 @@ ndis_getstate_80211(sc) device_printf(sc->ndis_dev, "get power mode failed: %d\n", rval); if (arg == NDIS_80211_POWERMODE_CAM) - ic->ic_flags &= ~IEEE80211_F_PMGTON; + vap->iv_flags &= ~IEEE80211_F_PMGTON; else - ic->ic_flags |= IEEE80211_F_PMGTON; + vap->iv_flags |= IEEE80211_F_PMGTON; } /* Get TX power */ @@ -2776,7 +2778,7 @@ ndis_getstate_80211(sc) device_printf (sc->ndis_dev, "get authmode status failed: %d\n", rval); else { - ic->ic_flags &= ~IEEE80211_F_WPA; + vap->iv_flags &= ~IEEE80211_F_WPA; switch(arg) { case NDIS_80211_AUTHMODE_OPEN: ni->ni_authmode = IEEE80211_AUTH_OPEN; @@ -2791,12 +2793,12 @@ ndis_getstate_80211(sc) case NDIS_80211_AUTHMODE_WPAPSK: case NDIS_80211_AUTHMODE_WPANONE: ni->ni_authmode = IEEE80211_AUTH_WPA; - ic->ic_flags |= IEEE80211_F_WPA1; + vap->iv_flags |= IEEE80211_F_WPA1; break; case NDIS_80211_AUTHMODE_WPA2: case NDIS_80211_AUTHMODE_WPA2PSK: ni->ni_authmode = IEEE80211_AUTH_WPA; - ic->ic_flags |= IEEE80211_F_WPA2; + vap->iv_flags |= IEEE80211_F_WPA2; break; default: ni->ni_authmode = IEEE80211_AUTH_NONE; @@ -2812,9 +2814,9 @@ ndis_getstate_80211(sc) "get wep status failed: %d\n", rval); if (arg == NDIS_80211_WEPSTAT_ENABLED) - ic->ic_flags |= IEEE80211_F_PRIVACY|IEEE80211_F_DROPUNENC; + vap->iv_flags |= IEEE80211_F_PRIVACY|IEEE80211_F_DROPUNENC; else - ic->ic_flags &= ~(IEEE80211_F_PRIVACY|IEEE80211_F_DROPUNENC); + vap->iv_flags &= ~(IEEE80211_F_PRIVACY|IEEE80211_F_DROPUNENC); return; } Modified: user/gnn/fasttrap/sys/fs/nfsclient/nfs_clbio.c ============================================================================== --- user/gnn/fasttrap/sys/fs/nfsclient/nfs_clbio.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/fs/nfsclient/nfs_clbio.c Thu Jun 18 19:41:04 2009 (r194455) @@ -198,7 +198,7 @@ ncl_getpages(struct vop_getpages_args *a if ((object = vp->v_object) == NULL) { ncl_printf("nfs_getpages: called with non-merged cache vnode??\n"); - return VM_PAGER_ERROR; + return (VM_PAGER_ERROR); } if (newnfs_directio_enable && !newnfs_directio_allow_mmap) { @@ -206,7 +206,7 @@ ncl_getpages(struct vop_getpages_args *a if ((np->n_flag & NNONCACHE) && (vp->v_type == VREG)) { mtx_unlock(&np->n_mtx); ncl_printf("nfs_getpages: called on non-cacheable vnode??\n"); - return VM_PAGER_ERROR; + return (VM_PAGER_ERROR); } else mtx_unlock(&np->n_mtx); } @@ -227,23 +227,18 @@ ncl_getpages(struct vop_getpages_args *a * allow the pager to zero-out the blanks. Partially valid pages * can only occur at the file EOF. */ - - { - vm_page_t m = pages[ap->a_reqpage]; - - VM_OBJECT_LOCK(object); - if (m->valid != 0) { - vm_page_lock_queues(); - for (i = 0; i < npages; ++i) { - if (i != ap->a_reqpage) - vm_page_free(pages[i]); - } - vm_page_unlock_queues(); - VM_OBJECT_UNLOCK(object); - return(0); + VM_OBJECT_LOCK(object); + if (pages[ap->a_reqpage]->valid != 0) { + vm_page_lock_queues(); + for (i = 0; i < npages; ++i) { + if (i != ap->a_reqpage) + vm_page_free(pages[i]); } + vm_page_unlock_queues(); VM_OBJECT_UNLOCK(object); + return (0); } + VM_OBJECT_UNLOCK(object); /* * We use only the kva address for the buffer, but this is extremely @@ -281,7 +276,7 @@ ncl_getpages(struct vop_getpages_args *a } vm_page_unlock_queues(); VM_OBJECT_UNLOCK(object); - return VM_PAGER_ERROR; + return (VM_PAGER_ERROR); } /* @@ -347,7 +342,7 @@ ncl_getpages(struct vop_getpages_args *a } vm_page_unlock_queues(); VM_OBJECT_UNLOCK(object); - return 0; + return (0); } /* Modified: user/gnn/fasttrap/sys/fs/nfsclient/nfs_clkrpc.c ============================================================================== --- user/gnn/fasttrap/sys/fs/nfsclient/nfs_clkrpc.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/fs/nfsclient/nfs_clkrpc.c Thu Jun 18 19:41:04 2009 (r194455) @@ -194,6 +194,7 @@ nfscbd_addsock(struct file *fp) fp->f_data = NULL; svc_reg(xprt, NFS_CALLBCKPROG, NFSV4_CBVERS, nfscb_program, NULL); + SVC_RELEASE(xprt); } return (0); Modified: user/gnn/fasttrap/sys/fs/nfsserver/nfs_nfsdkrpc.c ============================================================================== --- user/gnn/fasttrap/sys/fs/nfsserver/nfs_nfsdkrpc.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/fs/nfsserver/nfs_nfsdkrpc.c Thu Jun 18 19:41:04 2009 (r194455) @@ -372,6 +372,7 @@ nfsrvd_addsock(struct file *fp) if (nfs_maxvers >= NFS_VER4) svc_reg(xprt, NFS_PROG, NFS_VER4, nfssvc_program, NULL); + SVC_RELEASE(xprt); } return (0); Modified: user/gnn/fasttrap/sys/geom/label/g_label_gpt.c ============================================================================== --- user/gnn/fasttrap/sys/geom/label/g_label_gpt.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/geom/label/g_label_gpt.c Thu Jun 18 19:41:04 2009 (r194455) @@ -41,16 +41,16 @@ __FBSDID("$FreeBSD$"); #define PART_CLASS_NAME "PART" #define SCHEME_NAME "GPT" -#define G_LABEL_GPT_VOLUME_DIR "gpt" -#define G_LABEL_GPT_ID_DIR "gptid" +#define G_LABEL_GPT_VOLUME_DIR "gpt" +#define G_LABEL_GPT_ID_DIR "gptid" -/* also defined in geom/part/g_part_gpt.c */ +/* XXX: Also defined in geom/part/g_part_gpt.c */ struct g_part_gpt_entry { struct g_part_entry base; struct gpt_ent ent; }; -/* shamelessly stolen from g_part_gpt.c */ +/* XXX: Shamelessly stolen from g_part_gpt.c */ static void sbuf_nprintf_utf16(struct sbuf *sb, uint16_t *str, size_t len) { @@ -109,7 +109,7 @@ g_label_gpt_taste(struct g_consumer *cp, tp = (struct g_part_table *)pp->geom->softc; label[0] = '\0'; - /* We taste only partitions from GPART */ + /* We taste only partitions handled by GPART */ if (strncmp(pp->geom->class->name, PART_CLASS_NAME, sizeof(PART_CLASS_NAME))) return; /* and only GPT */ @@ -119,11 +119,11 @@ g_label_gpt_taste(struct g_consumer *cp, part_gpt_entry = (struct g_part_gpt_entry *)pp->private; /* - * create sbuf with biggest possible size - * we need max. 4 bytes for every 2-byte utf16 char + * Create sbuf with biggest possible size. + * We need max. 4 bytes for every 2-byte utf16 char. */ lbl = sbuf_new(NULL, NULL, sizeof(part_gpt_entry->ent.ent_name) << 1, SBUF_FIXEDLEN); - /* size ist the number of characters, not bytes */ + /* Size is the number of characters, not bytes */ sbuf_nprintf_utf16(lbl, part_gpt_entry->ent.ent_name, sizeof(part_gpt_entry->ent.ent_name) >> 1); sbuf_finish(lbl); strlcpy(label, sbuf_data(lbl), size); @@ -142,7 +142,7 @@ g_label_gpt_uuid_taste(struct g_consumer tp = (struct g_part_table *)pp->geom->softc; label[0] = '\0'; - /* we taste only partitions from GPART */ + /* We taste only partitions handled by GPART */ if (strncmp(pp->geom->class->name, PART_CLASS_NAME, sizeof(PART_CLASS_NAME))) return; /* and only GPT */ Modified: user/gnn/fasttrap/sys/nfsclient/nfs_bio.c ============================================================================== --- user/gnn/fasttrap/sys/nfsclient/nfs_bio.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/nfsclient/nfs_bio.c Thu Jun 18 19:41:04 2009 (r194455) @@ -101,7 +101,7 @@ nfs_getpages(struct vop_getpages_args *a if ((object = vp->v_object) == NULL) { nfs_printf("nfs_getpages: called with non-merged cache vnode??\n"); - return VM_PAGER_ERROR; + return (VM_PAGER_ERROR); } if (nfs_directio_enable && !nfs_directio_allow_mmap) { @@ -109,7 +109,7 @@ nfs_getpages(struct vop_getpages_args *a if ((np->n_flag & NNONCACHE) && (vp->v_type == VREG)) { mtx_unlock(&np->n_mtx); nfs_printf("nfs_getpages: called on non-cacheable vnode??\n"); - return VM_PAGER_ERROR; + return (VM_PAGER_ERROR); } else mtx_unlock(&np->n_mtx); } @@ -130,23 +130,18 @@ nfs_getpages(struct vop_getpages_args *a * allow the pager to zero-out the blanks. Partially valid pages * can only occur at the file EOF. */ - - { - vm_page_t m = pages[ap->a_reqpage]; - - VM_OBJECT_LOCK(object); - if (m->valid != 0) { - vm_page_lock_queues(); - for (i = 0; i < npages; ++i) { - if (i != ap->a_reqpage) - vm_page_free(pages[i]); - } - vm_page_unlock_queues(); - VM_OBJECT_UNLOCK(object); - return(0); + VM_OBJECT_LOCK(object); + if (pages[ap->a_reqpage]->valid != 0) { + vm_page_lock_queues(); + for (i = 0; i < npages; ++i) { + if (i != ap->a_reqpage) + vm_page_free(pages[i]); } + vm_page_unlock_queues(); VM_OBJECT_UNLOCK(object); + return (0); } + VM_OBJECT_UNLOCK(object); /* * We use only the kva address for the buffer, but this is extremely @@ -184,7 +179,7 @@ nfs_getpages(struct vop_getpages_args *a } vm_page_unlock_queues(); VM_OBJECT_UNLOCK(object); - return VM_PAGER_ERROR; + return (VM_PAGER_ERROR); } /* @@ -250,7 +245,7 @@ nfs_getpages(struct vop_getpages_args *a } vm_page_unlock_queues(); VM_OBJECT_UNLOCK(object); - return 0; + return (0); } /* Modified: user/gnn/fasttrap/sys/nfsserver/nfs_srvkrpc.c ============================================================================== --- user/gnn/fasttrap/sys/nfsserver/nfs_srvkrpc.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/nfsserver/nfs_srvkrpc.c Thu Jun 18 19:41:04 2009 (r194455) @@ -467,6 +467,7 @@ nfssvc_addsock(struct file *fp, struct t fp->f_data = NULL; svc_reg(xprt, NFS_PROG, NFS_VER2, nfssvc_program, NULL); svc_reg(xprt, NFS_PROG, NFS_VER3, nfssvc_program, NULL); + SVC_RELEASE(xprt); } return (0); Modified: user/gnn/fasttrap/sys/nlm/nlm_prot_impl.c ============================================================================== --- user/gnn/fasttrap/sys/nlm/nlm_prot_impl.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/nlm/nlm_prot_impl.c Thu Jun 18 19:41:04 2009 (r194455) @@ -1389,7 +1389,7 @@ nlm_register_services(SVCPOOL *pool, int return (EINVAL); } - xprts = malloc(addr_count * sizeof(SVCXPRT *), M_NLM, M_WAITOK); + xprts = malloc(addr_count * sizeof(SVCXPRT *), M_NLM, M_WAITOK|M_ZERO); for (i = 0; i < version_count; i++) { for (j = 0; j < addr_count; j++) { /* @@ -1447,6 +1447,10 @@ nlm_register_services(SVCPOOL *pool, int } error = 0; out: + for (j = 0; j < addr_count; j++) { + if (xprts[j]) + SVC_RELEASE(xprts[j]); + } free(xprts, M_NLM); return (error); } Modified: user/gnn/fasttrap/sys/rpc/svc.c ============================================================================== --- user/gnn/fasttrap/sys/rpc/svc.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/rpc/svc.c Thu Jun 18 19:41:04 2009 (r194455) @@ -276,6 +276,7 @@ xprt_register(SVCXPRT *xprt) { SVCPOOL *pool = xprt->xp_pool; + SVC_ACQUIRE(xprt); mtx_lock(&pool->sp_lock); xprt->xp_registered = TRUE; xprt->xp_active = FALSE; Modified: user/gnn/fasttrap/sys/rpc/svc_generic.c ============================================================================== --- user/gnn/fasttrap/sys/rpc/svc_generic.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/rpc/svc_generic.c Thu Jun 18 19:41:04 2009 (r194455) @@ -120,8 +120,10 @@ svc_create( /* It was not found. Now create a new one */ xprt = svc_tp_create(pool, dispatch, prognum, versnum, NULL, nconf); - if (xprt) + if (xprt) { num++; + SVC_RELEASE(xprt); + } } } __rpc_endconf(handle); @@ -179,6 +181,7 @@ svc_tp_create( (unsigned)prognum, (unsigned)versnum, nconf->nc_netid); xprt_unregister(xprt); + SVC_RELEASE(xprt); return (NULL); } return (xprt); Modified: user/gnn/fasttrap/sys/rpc/svc_vc.c ============================================================================== --- user/gnn/fasttrap/sys/rpc/svc_vc.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/rpc/svc_vc.c Thu Jun 18 19:41:04 2009 (r194455) @@ -324,6 +324,7 @@ svc_vc_rendezvous_recv(SVCXPRT *xprt, st struct socket *so = NULL; struct sockaddr *sa = NULL; int error; + SVCXPRT *new_xprt; /* * The socket upcall calls xprt_active() which will eventually @@ -383,10 +384,14 @@ svc_vc_rendezvous_recv(SVCXPRT *xprt, st /* * svc_vc_create_conn will call xprt_register - we don't need - * to do anything with the new connection. + * to do anything with the new connection except derefence it. */ - if (!svc_vc_create_conn(xprt->xp_pool, so, sa)) + new_xprt = svc_vc_create_conn(xprt->xp_pool, so, sa); + if (!new_xprt) { soclose(so); + } else { + SVC_RELEASE(new_xprt); + } free(sa, M_SONAME); Modified: user/gnn/fasttrap/sys/vm/uma_core.c ============================================================================== --- user/gnn/fasttrap/sys/vm/uma_core.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/sys/vm/uma_core.c Thu Jun 18 19:41:04 2009 (r194455) @@ -1061,8 +1061,10 @@ page_free(void *mem, int size, u_int8_t if (flags & UMA_SLAB_KMEM) map = kmem_map; + else if (flags & UMA_SLAB_KERNEL) + map = kernel_map; else - panic("UMA: page_free used with invalid flags %d\n", flags); + panic("UMA: page_free used with invalid flags %d", flags); kmem_free(map, (vm_offset_t)mem, size); } @@ -1352,7 +1354,7 @@ keg_ctor(void *mem, int size, void *udat printf("zone %s ipers %d rsize %d size %d\n", zone->uz_name, keg->uk_ipers, keg->uk_rsize, keg->uk_size); - panic("UMA slab won't fit.\n"); + panic("UMA slab won't fit."); } } Modified: user/gnn/fasttrap/tools/tools/nanobsd/nanobsd.sh ============================================================================== --- user/gnn/fasttrap/tools/tools/nanobsd/nanobsd.sh Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/tools/tools/nanobsd/nanobsd.sh Thu Jun 18 19:41:04 2009 (r194455) @@ -51,7 +51,6 @@ NANO_PACKAGE_LIST="*" # Object tree directory # default is subdir of /usr/obj -# XXX: MAKEOBJDIRPREFIX handling... ? #NANO_OBJ="" # The directory to put the final images @@ -147,21 +146,19 @@ NANO_ARCH=i386 clean_build ( ) ( pprint 2 "Clean and create object directory (${MAKEOBJDIRPREFIX})" - if rm -rf ${MAKEOBJDIRPREFIX} > /dev/null 2>&1 ; then - true - else + if ! rm -rf ${MAKEOBJDIRPREFIX} > /dev/null 2>&1 ; then chflags -R noschg ${MAKEOBJDIRPREFIX} - rm -rf ${MAKEOBJDIRPREFIX} + rm -r ${MAKEOBJDIRPREFIX} fi mkdir -p ${MAKEOBJDIRPREFIX} printenv > ${MAKEOBJDIRPREFIX}/_.env ) make_conf_build ( ) ( - pprint 2 "Construct build make.conf ($NANO_MAKE_CONF)" + pprint 2 "Construct build make.conf ($NANO_MAKE_CONF_BUILD)" - echo "${CONF_WORLD}" > ${NANO_MAKE_CONF} - echo "${CONF_BUILD}" >> ${NANO_MAKE_CONF} + echo "${CONF_WORLD}" > ${NANO_MAKE_CONF_BUILD} + echo "${CONF_BUILD}" >> ${NANO_MAKE_CONF_BUILD} ) build_world ( ) ( @@ -170,7 +167,7 @@ build_world ( ) ( cd ${NANO_SRC} env TARGET_ARCH=${NANO_ARCH} ${NANO_PMAKE} \ - __MAKE_CONF=${NANO_MAKE_CONF} buildworld \ + __MAKE_CONF=${NANO_MAKE_CONF_BUILD} buildworld \ > ${MAKEOBJDIRPREFIX}/_.bw 2>&1 ) @@ -188,62 +185,70 @@ build_kernel ( ) ( unset TARGET_CPUTYPE unset TARGET_BIG_ENDIAN env TARGET_ARCH=${NANO_ARCH} ${NANO_PMAKE} buildkernel \ - __MAKE_CONF=${NANO_MAKE_CONF} KERNCONF=`basename ${NANO_KERNEL}` \ + __MAKE_CONF=${NANO_MAKE_CONF_BUILD} KERNCONF=`basename ${NANO_KERNEL}` \ > ${MAKEOBJDIRPREFIX}/_.bk 2>&1 ) ) clean_world ( ) ( - pprint 2 "Clean and create world directory (${NANO_WORLDDIR})" - if rm -rf ${NANO_WORLDDIR}/ > /dev/null 2>&1 ; then - true + if [ "${NANO_OBJ}" != "${MAKEOBJDIRPREFIX}" ]; then + pprint 2 "Clean and create object directory (${NANO_OBJ})" + if ! rm -rf ${NANO_OBJ} > /dev/null 2>&1 ; then + chflags -R noschg ${NANO_OBJ} + rm -r ${NANO_OBJ} + fi + mkdir -p ${NANO_OBJ} ${NANO_WORLDDIR} + printenv > ${NANO_OBJ}/_.env else - chflags -R noschg ${NANO_WORLDDIR}/ - rm -rf ${NANO_WORLDDIR}/ + pprint 2 "Clean and create world directory (${NANO_WORLDDIR})" + if ! rm -rf ${NANO_WORLDDIR}/ > /dev/null 2>&1 ; then + chflags -R noschg ${NANO_WORLDDIR} + rm -rf ${NANO_WORLDDIR} + fi + mkdir -p ${NANO_WORLDDIR} fi - mkdir -p ${NANO_WORLDDIR}/ ) make_conf_install ( ) ( - pprint 2 "Construct install make.conf ($NANO_MAKE_CONF)" + pprint 2 "Construct install make.conf ($NANO_MAKE_CONF_INSTALL)" - echo "${CONF_WORLD}" > ${NANO_MAKE_CONF} - echo "${CONF_INSTALL}" >> ${NANO_MAKE_CONF} + echo "${CONF_WORLD}" > ${NANO_MAKE_CONF_INSTALL} + echo "${CONF_INSTALL}" >> ${NANO_MAKE_CONF_INSTALL} ) install_world ( ) ( pprint 2 "installworld" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.iw" + pprint 3 "log: ${NANO_OBJ}/_.iw" cd ${NANO_SRC} env TARGET_ARCH=${NANO_ARCH} \ - ${NANO_PMAKE} __MAKE_CONF=${NANO_MAKE_CONF} installworld \ + ${NANO_PMAKE} __MAKE_CONF=${NANO_MAKE_CONF_INSTALL} installworld \ DESTDIR=${NANO_WORLDDIR} \ - > ${MAKEOBJDIRPREFIX}/_.iw 2>&1 + > ${NANO_OBJ}/_.iw 2>&1 chflags -R noschg ${NANO_WORLDDIR} ) install_etc ( ) ( pprint 2 "install /etc" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.etc" + pprint 3 "log: ${NANO_OBJ}/_.etc" cd ${NANO_SRC} env TARGET_ARCH=${NANO_ARCH} \ - ${NANO_PMAKE} __MAKE_CONF=${NANO_MAKE_CONF} distribution \ + ${NANO_PMAKE} __MAKE_CONF=${NANO_MAKE_CONF_INSTALL} distribution \ DESTDIR=${NANO_WORLDDIR} \ - > ${MAKEOBJDIRPREFIX}/_.etc 2>&1 + > ${NANO_OBJ}/_.etc 2>&1 ) install_kernel ( ) ( pprint 2 "install kernel" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.ik" + pprint 3 "log: ${NANO_OBJ}/_.ik" cd ${NANO_SRC} env TARGET_ARCH=${NANO_ARCH} ${NANO_PMAKE} installkernel \ DESTDIR=${NANO_WORLDDIR} \ - __MAKE_CONF=${NANO_MAKE_CONF} KERNCONF=`basename ${NANO_KERNEL}` \ - > ${MAKEOBJDIRPREFIX}/_.ik 2>&1 + __MAKE_CONF=${NANO_MAKE_CONF_INSTALL} KERNCONF=`basename ${NANO_KERNEL}` \ + > ${NANO_OBJ}/_.ik 2>&1 ) run_customize() ( @@ -252,9 +257,9 @@ run_customize() ( for c in $NANO_CUSTOMIZE do pprint 2 "customize \"$c\"" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.cust.$c" + pprint 3 "log: ${NANO_OBJ}/_.cust.$c" pprint 4 "`type $c`" - ( $c ) > ${MAKEOBJDIRPREFIX}/_.cust.$c 2>&1 + ( $c ) > ${NANO_OBJ}/_.cust.$c 2>&1 done ) @@ -264,15 +269,15 @@ run_late_customize() ( for c in $NANO_LATE_CUSTOMIZE do pprint 2 "late customize \"$c\"" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.late_cust.$c" + pprint 3 "log: ${NANO_OBJ}/_.late_cust.$c" pprint 4 "`type $c`" - ( $c ) > ${MAKEOBJDIRPREFIX}/_.late_cust.$c 2>&1 + ( $c ) > ${NANO_OBJ}/_.late_cust.$c 2>&1 done ) setup_nanobsd ( ) ( pprint 2 "configure nanobsd setup" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.dl" + pprint 3 "log: ${NANO_OBJ}/_.dl" ( cd ${NANO_WORLDDIR} @@ -312,7 +317,7 @@ setup_nanobsd ( ) ( rm tmp || true ln -s var/tmp tmp - ) > ${MAKEOBJDIRPREFIX}/_.dl 2>&1 + ) > ${NANO_OBJ}/_.dl 2>&1 ) setup_nanobsd_etc ( ) ( @@ -348,7 +353,7 @@ prune_usr() ( create_i386_diskimage ( ) ( pprint 2 "build diskimage" - pprint 3 "log: ${MAKEOBJDIRPREFIX}/_.di" + pprint 3 "log: ${NANO_OBJ}/_.di" ( echo $NANO_MEDIASIZE $NANO_IMAGES \ @@ -417,10 +422,10 @@ create_i386_diskimage ( ) ( # for booting the image from a USB device to work. print "a 1" } - ' > ${MAKEOBJDIRPREFIX}/_.fdisk + ' > ${NANO_OBJ}/_.fdisk IMG=${NANO_DISKIMGDIR}/${NANO_IMGNAME} - MNT=${MAKEOBJDIRPREFIX}/_.mnt + MNT=${NANO_OBJ}/_.mnt mkdir -p ${MNT} if [ "${NANO_MD_BACKING}" = "swap" ] ; then @@ -436,7 +441,7 @@ create_i386_diskimage ( ) ( trap "df -i ${MNT} ; umount ${MNT} || true ; mdconfig -d -u $MD" 1 2 15 EXIT - fdisk -i -f ${MAKEOBJDIRPREFIX}/_.fdisk ${MD} + fdisk -i -f ${NANO_OBJ}/_.fdisk ${MD} fdisk ${MD} # XXX: params # XXX: pick up cached boot* files, they may not be in image anymore. @@ -452,8 +457,8 @@ create_i386_diskimage ( ) ( ( cd ${NANO_WORLDDIR} && find . -print | cpio -dump ${MNT} ) df -i ${MNT} echo "Generating mtree..." - ( cd ${MNT} && mtree -c ) > ${MAKEOBJDIRPREFIX}/_.mtree - ( cd ${MNT} && du -k ) > ${MAKEOBJDIRPREFIX}/_.du + ( cd ${MNT} && mtree -c ) > ${NANO_OBJ}/_.mtree + ( cd ${MNT} && du -k ) > ${NANO_OBJ}/_.du umount ${MNT} if [ $NANO_IMAGES -gt 1 -a $NANO_INIT_IMG2 -gt 0 ] ; then @@ -466,7 +471,6 @@ create_i386_diskimage ( ) ( sed -i "" "s/${NANO_DRIVE}s1/${NANO_DRIVE}s2/g" $f done umount ${MNT} - fi # Create Config slice @@ -480,21 +484,21 @@ create_i386_diskimage ( ) ( fi if [ "${NANO_MD_BACKING}" = "swap" ] ; then - echo "Writing out _.disk.full..." + echo "Writing out ${NANO_IMGNAME}..." dd if=/dev/${MD} of=${IMG} bs=64k fi echo "Writing out _.disk.image..." dd if=/dev/${MD}s1 of=${NANO_DISKIMGDIR}/_.disk.image bs=64k mdconfig -d -u $MD - ) > ${MAKEOBJDIRPREFIX}/_.di 2>&1 + ) > ${NANO_OBJ}/_.di 2>&1 ) last_orders () ( # Redefine this function with any last orders you may have # after the build completed, for instance to copy the finished # image to a more convenient place: - # cp ${MAKEOBJDIRPREFIX}/_.disk.image /home/ftp/pub/nanobsd.disk + # cp ${NANO_DISKIMGDIR}/_.disk.image /home/ftp/pub/nanobsd.disk ) ####################################################################### @@ -751,19 +755,13 @@ fi ####################################################################### # Setup and Export Internal variables # -if [ "x${NANO_OBJ}" = "x" ] ; then - MAKEOBJDIRPREFIX=/usr/obj/nanobsd.${NANO_NAME}/ - NANO_OBJ=${MAKEOBJDIRPREFIX} -else - MAKEOBJDIRPREFIX=${NANO_OBJ} -fi - -if [ "x${NANO_DISKIMGDIR}" = "x" ] ; then - NANO_DISKIMGDIR=${MAKEOBJDIRPREFIX} -fi - -NANO_WORLDDIR=${MAKEOBJDIRPREFIX}/_.w -NANO_MAKE_CONF=${MAKEOBJDIRPREFIX}/make.conf +test -n "${NANO_OBJ}" || NANO_OBJ=/usr/obj/nanobsd.${NANO_NAME}/ +test -n "${MAKEOBJDIRPREFIX}" || MAKEOBJDIRPREFIX=${NANO_OBJ} +test -n "${NANO_DISKIMGDIR}" || NANO_DISKIMGDIR=${NANO_OBJ} + +NANO_WORLDDIR=${NANO_OBJ}/_.w +NANO_MAKE_CONF_BUILD=${MAKEOBJDIRPREFIX}/make.conf.build +NANO_MAKE_CONF_INSTALL=${NANO_OBJ}/make.conf.install if [ -d ${NANO_TOOLS} ] ; then true @@ -791,7 +789,8 @@ export NANO_DRIVE export NANO_HEADS export NANO_IMAGES export NANO_IMGNAME -export NANO_MAKE_CONF +export NANO_MAKE_CONF_BUILD +export NANO_MAKE_CONF_INSTALL export NANO_MEDIASIZE export NANO_NAME export NANO_NEWFS @@ -840,7 +839,6 @@ prune_usr run_late_customize if $do_image ; then create_${NANO_ARCH}_diskimage - echo "# Created NanoBSD disk image: ${MAKEOBJDIRPREFIX}/${NANO_IMGNAME}" else pprint 2 "Skipping image build (as instructed)" fi Modified: user/gnn/fasttrap/usr.bin/ncal/ncal.c ============================================================================== --- user/gnn/fasttrap/usr.bin/ncal/ncal.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/usr.bin/ncal/ncal.c Thu Jun 18 19:41:04 2009 (r194455) @@ -844,7 +844,7 @@ mkweekdays(struct weekdays *wds) for (i = 0; i != 7; i++) { tm.tm_wday = (i+1) % 7; wcsftime(buf, sizeof(buf), L"%a", &tm); - for (len = wcslen(buf); len > 0; --len) { + for (len = 2; len > 0; --len) { if ((width = wcswidth(buf, len)) <= 2) break; } @@ -852,7 +852,7 @@ mkweekdays(struct weekdays *wds) if (width == 1) wds->names[i][0] = L' '; wcsncat(wds->names[i], buf, len); - wcsncat(wds->names[i], L" ", 3 - wcswidth(wds->names[i], 2)); + wcsncat(wds->names[i], L" ", 1); } } Modified: user/gnn/fasttrap/usr.sbin/mountd/mountd.c ============================================================================== --- user/gnn/fasttrap/usr.sbin/mountd/mountd.c Thu Jun 18 17:59:04 2009 (r194454) +++ user/gnn/fasttrap/usr.sbin/mountd/mountd.c Thu Jun 18 19:41:04 2009 (r194455) @@ -568,13 +568,6 @@ create_service(struct netconfig *nconf) continue; } } - if (si.si_socktype == SOCK_DGRAM && - setsockopt(fd, IPPROTO_IP, IP_RECVDSTADDR, &one, - sizeof one) < 0) { - syslog(LOG_ERR, - "can't disable v4-in-v6 on IPv6 socket"); - exit(1); - } break; case AF_INET6: if (inet_pton(AF_INET6, hosts[nhostsbak],