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...
George V. Neville-Neil
gnn at FreeBSD.org
Thu Jun 18 19:41:05 UTC 2009
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],
More information about the svn-src-user
mailing list