From owner-svn-src-projects@freebsd.org Sun Sep 1 04:58:00 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9CF4FCBB19 for ; Sun, 1 Sep 2019 04:58:00 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46LgvX4QdXz4gNk; Sun, 1 Sep 2019 04:58:00 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5DF9F24356; Sun, 1 Sep 2019 04:58:00 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x814w0TL092529; Sun, 1 Sep 2019 04:58:00 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x814vwjS092517; Sun, 1 Sep 2019 04:57:58 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201909010457.x814vwjS092517@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Sun, 1 Sep 2019 04:57:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351652 - in projects/nfsv42/sys/fs: nfs nfsclient nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: in projects/nfsv42/sys/fs: nfs nfsclient nfsserver X-SVN-Commit-Revision: 351652 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Sep 2019 04:58:00 -0000 Author: rmacklem Date: Sun Sep 1 04:57:58 2019 New Revision: 351652 URL: https://svnweb.freebsd.org/changeset/base/351652 Log: Add the Set Extended attribute operation. RFC-8276 defines optional Extended attribute operations. This patch adds the set extended attribute operation. It also applies one fix to the get attribute operation added yesterday. Modified: projects/nfsv42/sys/fs/nfs/nfs_commonsubs.c projects/nfsv42/sys/fs/nfs/nfs_var.h projects/nfsv42/sys/fs/nfs/nfsport.h projects/nfsv42/sys/fs/nfs/nfsproto.h projects/nfsv42/sys/fs/nfsclient/nfs_clrpcops.c projects/nfsv42/sys/fs/nfsclient/nfs_clvnops.c projects/nfsv42/sys/fs/nfsserver/nfs_nfsdport.c projects/nfsv42/sys/fs/nfsserver/nfs_nfsdserv.c projects/nfsv42/sys/fs/nfsserver/nfs_nfsdsocket.c Modified: projects/nfsv42/sys/fs/nfs/nfs_commonsubs.c ============================================================================== --- projects/nfsv42/sys/fs/nfs/nfs_commonsubs.c Sun Sep 1 02:52:00 2019 (r351651) +++ projects/nfsv42/sys/fs/nfs/nfs_commonsubs.c Sun Sep 1 04:57:58 2019 (r351652) @@ -181,7 +181,7 @@ struct nfsv4_opflag nfsv4_opflag[NFSV42_NOPS] = { { 0, 0, 0, 0, LK_EXCLUSIVE, 1, 1 }, /* Write Same */ { 0, 0, 0, 0, LK_EXCLUSIVE, 1, 1 }, /* Clone */ { 0, 1, 0, 0, LK_SHARED, 1, 1 }, /* Getxattr */ - { 0, 0, 0, 0, LK_EXCLUSIVE, 1, 1 }, /* Setxattr */ + { 0, 1, 1, 1, LK_EXCLUSIVE, 1, 1 }, /* Setxattr */ { 0, 0, 0, 0, LK_EXCLUSIVE, 1, 1 }, /* Listxattrs */ { 0, 0, 0, 0, LK_EXCLUSIVE, 1, 1 }, /* Removexattr */ }; @@ -211,7 +211,7 @@ static struct nfsrv_lughash *nfsgroupnamehash; static int nfs_bigreply[NFSV42_NPROCS] = { 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0 }; + 0, 0 }; /* local functions */ static int nfsrv_skipace(struct nfsrv_descript *nd, int *acesizep); @@ -291,6 +291,7 @@ static struct { { NFSV4OP_SEEK, 2, "Seek", 4, }, { NFSV4OP_SEEK, 1, "SeekDS", 6, }, { NFSV4OP_GETXATTR, 2, "Getxattr", 8, }, + { NFSV4OP_SETXATTR, 2, "Setxattr", 8, }, }; /* @@ -299,7 +300,7 @@ static struct { static int nfs_bigrequest[NFSV42_NPROCS] = { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; /* Modified: projects/nfsv42/sys/fs/nfs/nfs_var.h ============================================================================== --- projects/nfsv42/sys/fs/nfs/nfs_var.h Sun Sep 1 02:52:00 2019 (r351651) +++ projects/nfsv42/sys/fs/nfs/nfs_var.h Sun Sep 1 04:57:58 2019 (r351652) @@ -285,6 +285,8 @@ int nfsrvd_seek(struct nfsrv_descript *, int, vnode_t, struct nfsexstuff *); int nfsrvd_getxattr(struct nfsrv_descript *, int, vnode_t, struct nfsexstuff *); +int nfsrvd_setxattr(struct nfsrv_descript *, int, + vnode_t, struct nfsexstuff *); int nfsrvd_notsupp(struct nfsrv_descript *, int, vnode_t, struct nfsexstuff *); @@ -548,6 +550,8 @@ int nfsrpc_seek(vnode_t, off_t *, bool *, int, struct struct nfsvattr *, int *); int nfsrpc_getextattr(vnode_t, const char *, struct uio *, ssize_t *, struct nfsvattr *, int *, struct ucred *, NFSPROC_T *); +int nfsrpc_setextattr(vnode_t, const char *, struct uio *, struct nfsvattr *, + int *, struct ucred *, NFSPROC_T *); /* nfs_clstate.c */ int nfscl_open(vnode_t, u_int8_t *, int, u_int32_t, int, @@ -733,6 +737,8 @@ int nfsvno_seek(struct nfsrv_descript *, struct vnode bool *, struct ucred *, NFSPROC_T *); int nfsvno_getxattr(struct vnode *, char *, struct ucred *, struct thread *, struct mbuf **, struct mbuf **, int *); +int nfsvno_setxattr(struct vnode *, char *, struct uio *, struct ucred *, + struct thread *); /* nfs_commonkrpc.c */ int newnfs_nmcancelreqs(struct nfsmount *); Modified: projects/nfsv42/sys/fs/nfs/nfsport.h ============================================================================== --- projects/nfsv42/sys/fs/nfs/nfsport.h Sun Sep 1 02:52:00 2019 (r351651) +++ projects/nfsv42/sys/fs/nfs/nfsport.h Sun Sep 1 04:57:58 2019 (r351652) @@ -408,11 +408,12 @@ /* and the ones for the optional Extended attribute support (RFC-8276). */ #define NFSPROC_GETEXTATTR 61 +#define NFSPROC_SETEXTATTR 62 /* * Must be defined as one higher than the last NFSv4.2 Proc# above. */ -#define NFSV42_NPROCS 62 +#define NFSV42_NPROCS 63 #endif /* NFS_V3NPROCS */ @@ -441,7 +442,7 @@ struct nfsstatsv1 { uint64_t readlink_bios; uint64_t biocache_readdirs; uint64_t readdir_bios; - uint64_t rpccnt[NFSV42_NPROCS + 7]; + uint64_t rpccnt[NFSV42_NPROCS + 6]; uint64_t rpcretries; uint64_t srvrpccnt[NFSV42_NOPS + NFSV4OP_FAKENOPS]; uint64_t srvrpc_errs; Modified: projects/nfsv42/sys/fs/nfs/nfsproto.h ============================================================================== --- projects/nfsv42/sys/fs/nfs/nfsproto.h Sun Sep 1 02:52:00 2019 (r351651) +++ projects/nfsv42/sys/fs/nfs/nfsproto.h Sun Sep 1 04:57:58 2019 (r351652) @@ -390,11 +390,12 @@ /* and the ones for the optional Extended attribute support (RFC-8276). */ #define NFSPROC_GETEXTATTR 61 +#define NFSPROC_SETEXTATTR 62 /* * Must be defined as one higher than the last NFSv4.2 Proc# above. */ -#define NFSV42_NPROCS 62 +#define NFSV42_NPROCS 63 #endif /* NFS_V3NPROCS */ @@ -1490,5 +1491,10 @@ typedef struct nfsv4stateid nfsv4stateid_t; /* Seek Contents. */ #define NFSV4CONTENT_DATA 0 #define NFSV4CONTENT_HOLE 1 + +/* Options for Set Extended attribute (RFC-8276). */ +#define NFSV4SXATTR_EITHER 0 +#define NFSV4SXATTR_CREATE 1 +#define NFSV4SXATTR_REPLACE 2 #endif /* _NFS_NFSPROTO_H_ */ Modified: projects/nfsv42/sys/fs/nfsclient/nfs_clrpcops.c ============================================================================== --- projects/nfsv42/sys/fs/nfsclient/nfs_clrpcops.c Sun Sep 1 02:52:00 2019 (r351651) +++ projects/nfsv42/sys/fs/nfsclient/nfs_clrpcops.c Sun Sep 1 04:57:58 2019 (r351652) @@ -8278,9 +8278,10 @@ nfsrpc_getextattr(vnode_t vp, const char *name, struct if (error == 0) { /* * nfsm_mbufuio() advances to a multiple - * of 4, so advance len2 as well. Then + * of 4, so round up len2 as well. Then * we need to advance over the rest of - * the data. + * the data, rounding up the remaining + * length. */ len2 = NFSM_RNDUP(len2); len2 = NFSM_RNDUP(len - len2); @@ -8291,7 +8292,7 @@ nfsrpc_getextattr(vnode_t vp, const char *name, struct } } else if (uiop == NULL && len > 0) { /* Just wants the length and not the data. */ - error = nfsm_advance(nd, len, -1); + error = nfsm_advance(nd, NFSM_RNDUP(len), -1); } else error = ENOATTR; if (error != 0) @@ -8299,6 +8300,49 @@ nfsrpc_getextattr(vnode_t vp, const char *name, struct *lenp = len; /* Just skip over Getattr op status. */ NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); + error = nfsm_loadattr(nd, nap); + if (error == 0) + *attrflagp = 1; + } + if (error == 0) + error = nd->nd_repstat; +nfsmout: + mbuf_freem(nd->nd_mrep); + return (error); +} + +/* + * The setextattr RPC. + */ +APPLESTATIC int +nfsrpc_setextattr(vnode_t vp, const char *name, struct uio *uiop, + struct nfsvattr *nap, int *attrflagp, struct ucred *cred, NFSPROC_T *p) +{ + uint32_t *tl; + int error; + struct nfsrv_descript nfsd; + struct nfsrv_descript *nd = &nfsd; + nfsattrbit_t attrbits; + + *attrflagp = 0; + NFSCL_REQSTART(nd, NFSPROC_SETEXTATTR, vp); + NFSM_BUILD(tl, uint32_t *, NFSX_UNSIGNED); + *tl = txdr_unsigned(NFSV4SXATTR_EITHER); + nfsm_strtom(nd, name, strlen(name)); + NFSM_BUILD(tl, uint32_t *, NFSX_UNSIGNED); + *tl = txdr_unsigned(uiop->uio_resid); + nfsm_uiombuf(nd, uiop, uiop->uio_resid); + NFSM_BUILD(tl, uint32_t *, NFSX_UNSIGNED); + *tl = txdr_unsigned(NFSV4OP_GETATTR); + NFSGETATTR_ATTRBIT(&attrbits); + nfsrv_putattrbit(nd, &attrbits); + error = nfscl_request(nd, vp, p, cred, NULL); + if (error != 0) + return (error); + if (nd->nd_repstat == 0) { + /* Just skip over the reply and Getattr op status. */ + NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_HYPER + 3 * + NFSX_UNSIGNED); error = nfsm_loadattr(nd, nap); if (error == 0) *attrflagp = 1; Modified: projects/nfsv42/sys/fs/nfsclient/nfs_clvnops.c ============================================================================== --- projects/nfsv42/sys/fs/nfsclient/nfs_clvnops.c Sun Sep 1 02:52:00 2019 (r351651) +++ projects/nfsv42/sys/fs/nfsclient/nfs_clvnops.c Sun Sep 1 04:57:58 2019 (r351652) @@ -149,6 +149,7 @@ static vop_allocate_t nfs_allocate; static vop_copy_file_range_t nfs_copy_file_range; static vop_ioctl_t nfs_ioctl; static vop_getextattr_t nfs_getextattr; +static vop_setextattr_t nfs_setextattr; /* * Global vfs data structures for nfs @@ -191,6 +192,7 @@ static struct vop_vector newnfs_vnodeops_nosig = { .vop_copy_file_range = nfs_copy_file_range, .vop_ioctl = nfs_ioctl, .vop_getextattr = nfs_getextattr, + .vop_setextattr = nfs_setextattr, }; static int @@ -3790,7 +3792,63 @@ nfs_getextattr(struct vop_getextattr_args *ap) switch (error) { case NFSERR_NOTSUPP: case NFSERR_OPILLEGAL: - case NFSERR_MINORVERMISMATCH: + mtx_lock(&nmp->nm_mtx); + nmp->nm_privflag |= NFSMNTP_NOXATTR; + mtx_unlock(&nmp->nm_mtx); + error = EOPNOTSUPP; + break; + case NFSERR_NOXATTR: + case NFSERR_XATTR2BIG: + error = ENOATTR; + break; + default: + error = nfscl_maperr(td, error, 0, 0); + break; + } + return (error); +} + +/* + * nfs setextattr call + */ +static int +nfs_setextattr(struct vop_setextattr_args *ap) +{ + struct vnode *vp = ap->a_vp; + struct nfsmount *nmp; + struct ucred *cred; + struct thread *td = ap->a_td; + struct nfsvattr nfsva; + int attrflag, error, ret; + + nmp = VFSTONFS(vp->v_mount); + mtx_lock(&nmp->nm_mtx); + if (!NFSHASNFSV4(nmp) || nmp->nm_minorvers < NFSV42_MINORVERSION || + (nmp->nm_privflag & NFSMNTP_NOXATTR) != 0 || + ap->a_attrnamespace != EXTATTR_NAMESPACE_USER) { + mtx_unlock(&nmp->nm_mtx); + return (EOPNOTSUPP); + } + mtx_unlock(&nmp->nm_mtx); + + if (ap->a_uio->uio_resid <= 0 || ap->a_uio->uio_resid > nmp->nm_wsize) + return (EINVAL); + cred = ap->a_cred; + if (cred == NULL) + cred = td->td_ucred; + /* Do the actual NFSv4.2 Optional Extended Attribute (RFC-8276) RPC. */ + attrflag = 0; + error = nfsrpc_setextattr(vp, ap->a_name, ap->a_uio, &nfsva, + &attrflag, cred, td); + if (attrflag != 0) { + ret = nfscl_loadattrcache(&vp, &nfsva, NULL, NULL, 0, 1); + if (error == 0 && ret != 0) + error = ret; + } + + switch (error) { + case NFSERR_NOTSUPP: + case NFSERR_OPILLEGAL: mtx_lock(&nmp->nm_mtx); nmp->nm_privflag |= NFSMNTP_NOXATTR; mtx_unlock(&nmp->nm_mtx); Modified: projects/nfsv42/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/nfsv42/sys/fs/nfsserver/nfs_nfsdport.c Sun Sep 1 02:52:00 2019 (r351651) +++ projects/nfsv42/sys/fs/nfsserver/nfs_nfsdport.c Sun Sep 1 04:57:58 2019 (r351652) @@ -5947,6 +5947,31 @@ out: return (error); } +/* + * Set Extended attribute vnode op from an mbuf list. + */ +int +nfsvno_setxattr(struct vnode *vp, char *name, struct uio *uiop, + struct ucred *cred, struct thread *p) +{ + int error; + + error = 0; +#ifdef MAC + error = mac_vnode_check_setextattr(cred, vp, EXTATTR_NAMESPACE_USER, + name); +#endif + + if (error == 0) + error = VOP_SETEXTATTR(vp, EXTATTR_NAMESPACE_USER, name, uiop, + cred, p); + if (error == 0 && uiop->uio_resid > 0) + error = NFSERR_XATTR2BIG; + + NFSEXITCODE(error); + return (error); +} + extern int (*nfsd_call_nfsd)(struct thread *, struct nfssvc_args *); /* Modified: projects/nfsv42/sys/fs/nfsserver/nfs_nfsdserv.c ============================================================================== --- projects/nfsv42/sys/fs/nfsserver/nfs_nfsdserv.c Sun Sep 1 02:52:00 2019 (r351651) +++ projects/nfsv42/sys/fs/nfsserver/nfs_nfsdserv.c Sun Sep 1 04:57:58 2019 (r351652) @@ -5530,6 +5530,153 @@ nfsmout: } /* + * nfs set extended attribute service + */ +APPLESTATIC int +nfsrvd_setxattr(struct nfsrv_descript *nd, __unused int isdgram, + vnode_t vp, __unused struct nfsexstuff *exp) +{ + uint32_t *tl; + mbuf_t mp = NULL, mpend = NULL; + struct iovec *ivp, *iv; + struct uio io, *uiop = &io; + struct nfsvattr ova, nva; + nfsattrbit_t attrbits; + int cnt, error, i, len, opt, rem, retlen; + char *name; + struct thread *p = curthread; + + error = 0; + name = NULL; + if (nfs_rootfhset == 0 || nfsd_checkrootexp(nd) != 0) { + nd->nd_repstat = NFSERR_WRONGSEC; + goto nfsmout; + } + NFSM_DISSECT(tl, uint32_t *, 2 * NFSX_UNSIGNED); + opt = fxdr_unsigned(int, *tl++); + len = fxdr_unsigned(int, *tl); + if (len <= 0) { + nd->nd_repstat = NFSERR_BADXDR; + goto nfsmout; + } + if (len > EXTATTR_MAXNAMELEN) { + nd->nd_repstat = NFSERR_NOXATTR; + goto nfsmout; + } + name = malloc(len + 1, M_TEMP, M_WAITOK); + error = nfsrv_mtostr(nd, name, len); + if (error != 0) + goto nfsmout; + NFSM_DISSECT(tl, uint32_t *, NFSX_UNSIGNED); + len = fxdr_unsigned(int, *tl); + if (len <= 0 || len > IOSIZE_MAX) { + nd->nd_repstat = NFSERR_XATTR2BIG; + goto nfsmout; + } + switch (opt) { + case NFSV4SXATTR_CREATE: + error = nfsvno_getxattr(vp, name, nd->nd_cred, p, &mp, &mpend, + &retlen); + if (error == 0) + m_freem(mp); + if (error != ENOATTR) + nd->nd_repstat = NFSERR_EXIST; + error = 0; + break; + case NFSV4SXATTR_REPLACE: + error = nfsvno_getxattr(vp, name, nd->nd_cred, p, &mp, &mpend, + &retlen); + if (error == 0) + m_freem(mp); + else + nd->nd_repstat = NFSERR_NOXATTR; + break; + case NFSV4SXATTR_EITHER: + break; + default: + nd->nd_repstat = NFSERR_BADXDR; + } + if (nd->nd_repstat != 0) + goto nfsmout; + + /* Figure out how many iovecs are needed. */ + cnt = 1; + mp = nd->nd_md; + i = mp->m_len - (nd->nd_dpos - mtod(mp, char *)); + while (i < len) { + mp = mp->m_next; + if (mp == NULL) { + nd->nd_repstat = NFSERR_BADXDR; + goto nfsmout; + } + i += mp->m_len; + cnt++; + } + + /* Now create the uio structure and iovec. */ + ivp = mallocarray(cnt, sizeof(*ivp), M_TEMP, M_WAITOK); + uiop->uio_iov = iv = ivp; + uiop->uio_iovcnt = cnt; + uiop->uio_resid = len; + rem = NFSM_RNDUP(len) - len; + cnt = len; + mp = nd->nd_md; + i = mp->m_len - (nd->nd_dpos - mtod(mp, char *)); + while (cnt > 0) { + if (mp == NULL) + panic("nfsvno_write"); + if (i > 0) { + i = min(i, cnt); + ivp->iov_base = nd->nd_dpos; + ivp->iov_len = i; + ivp++; + cnt -= i; + if (cnt == 0) + nd->nd_dpos += i; + } + if (cnt > 0) { + mp = mp->m_next; + if (mp != NULL) { + i = mp->m_len; + nd->nd_dpos = mtod(mp, caddr_t); + } + } + } + if (rem > 0) + nd->nd_dpos += rem; + nd->nd_md = mp; + + uiop->uio_rw = UIO_WRITE; + uiop->uio_segflg = UIO_SYSSPACE; + uiop->uio_td = p; + uiop->uio_offset = 0; + /* Now, do the Set Extended attribute, with Change before and after. */ + NFSZERO_ATTRBIT(&attrbits); + NFSSETBIT_ATTRBIT(&attrbits, NFSATTRBIT_CHANGE); + nd->nd_repstat = nfsvno_getattr(vp, &ova, nd, p, 1, &attrbits); + if (nd->nd_repstat == 0) + nd->nd_repstat = nfsvno_setxattr(vp, name, uiop, nd->nd_cred, + p); + free(iv, M_TEMP); + if (nd->nd_repstat == 0) + nd->nd_repstat = nfsvno_getattr(vp, &nva, nd, p, 1, &attrbits); + if (nd->nd_repstat == 0) { + NFSM_BUILD(tl, uint32_t *, 2 * NFSX_HYPER + NFSX_UNSIGNED); + *tl++ = newnfs_true; + txdr_hyper(ova.na_filerev, tl); tl += 2; + txdr_hyper(nva.na_filerev, tl); + } + +nfsmout: + free(name, M_TEMP); + if (nd->nd_repstat == 0) + nd->nd_repstat = error; + vput(vp); + NFSEXITCODE2(0, nd); + return (0); +} + +/* * nfsv4 service not supported */ APPLESTATIC int Modified: projects/nfsv42/sys/fs/nfsserver/nfs_nfsdsocket.c ============================================================================== --- projects/nfsv42/sys/fs/nfsserver/nfs_nfsdsocket.c Sun Sep 1 02:52:00 2019 (r351651) +++ projects/nfsv42/sys/fs/nfsserver/nfs_nfsdsocket.c Sun Sep 1 04:57:58 2019 (r351652) @@ -210,7 +210,7 @@ int (*nfsrv4_ops0[NFSV42_NOPS])(struct nfsrv_descript nfsrvd_notsupp, nfsrvd_notsupp, nfsrvd_getxattr, - nfsrvd_notsupp, + nfsrvd_setxattr, nfsrvd_notsupp, nfsrvd_notsupp, }; From owner-svn-src-projects@freebsd.org Sun Sep 1 18:21:10 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 34165E0F4F for ; Sun, 1 Sep 2019 18:21:10 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46M1kG1D4mz4cRn; Sun, 1 Sep 2019 18:21:10 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 07CB55831; Sun, 1 Sep 2019 18:21:10 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x81IL9aE071498; Sun, 1 Sep 2019 18:21:09 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x81IL68h071479; Sun, 1 Sep 2019 18:21:06 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201909011821.x81IL68h071479@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sun, 1 Sep 2019 18:21:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351667 - in projects/clang900-import: lib/libclang_rt lib/libclang_rt/cfi lib/libclang_rt/cfi_diag lib/libclang_rt/dd lib/libclang_rt/fuzzer lib/libclang_rt/fuzzer_no_main lib/libclang... X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang900-import: lib/libclang_rt lib/libclang_rt/cfi lib/libclang_rt/cfi_diag lib/libclang_rt/dd lib/libclang_rt/fuzzer lib/libclang_rt/fuzzer_no_main lib/libclang_rt/include lib/libclang_... X-SVN-Commit-Revision: 351667 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Sep 2019 18:21:10 -0000 Author: dim Date: Sun Sep 1 18:21:06 2019 New Revision: 351667 URL: https://svnweb.freebsd.org/changeset/base/351667 Log: Update libclang_rt: * Add cfi, dd, fuzzer and xray * Update arch support * Update OptionalObsoleteFiles.inc Added: projects/clang900-import/lib/libclang_rt/cfi/ projects/clang900-import/lib/libclang_rt/cfi/Makefile (contents, props changed) projects/clang900-import/lib/libclang_rt/cfi_diag/ projects/clang900-import/lib/libclang_rt/cfi_diag/Makefile (contents, props changed) projects/clang900-import/lib/libclang_rt/dd/ projects/clang900-import/lib/libclang_rt/dd/Makefile (contents, props changed) projects/clang900-import/lib/libclang_rt/xray/ projects/clang900-import/lib/libclang_rt/xray-basic/ projects/clang900-import/lib/libclang_rt/xray-basic/Makefile (contents, props changed) projects/clang900-import/lib/libclang_rt/xray-fdr/ projects/clang900-import/lib/libclang_rt/xray-fdr/Makefile (contents, props changed) projects/clang900-import/lib/libclang_rt/xray-profiling/ projects/clang900-import/lib/libclang_rt/xray-profiling/Makefile (contents, props changed) projects/clang900-import/lib/libclang_rt/xray/Makefile (contents, props changed) Modified: projects/clang900-import/lib/libclang_rt/Makefile projects/clang900-import/lib/libclang_rt/Makefile.inc projects/clang900-import/lib/libclang_rt/fuzzer/Makefile projects/clang900-import/lib/libclang_rt/fuzzer_no_main/Makefile projects/clang900-import/lib/libclang_rt/include/Makefile projects/clang900-import/lib/libclang_rt/msan_cxx/Makefile projects/clang900-import/lib/libclang_rt/profile/Makefile projects/clang900-import/lib/libclang_rt/safestack/Makefile projects/clang900-import/lib/libclang_rt/ubsan_standalone/Makefile projects/clang900-import/tools/build/mk/OptionalObsoleteFiles.inc Modified: projects/clang900-import/lib/libclang_rt/Makefile ============================================================================== --- projects/clang900-import/lib/libclang_rt/Makefile Sun Sep 1 16:57:19 2019 (r351666) +++ projects/clang900-import/lib/libclang_rt/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -1,27 +1,47 @@ # $FreeBSD$ -.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" -SUBDIR+= include -SUBDIR+= asan -SUBDIR+= asan-preinit -SUBDIR+= asan_cxx -SUBDIR+= asan_dynamic -.if ${MACHINE_CPUARCH} == "amd64" -SUBDIR+= msan -SUBDIR+= msan_cxx -.endif -SUBDIR+= safestack -SUBDIR+= stats -SUBDIR+= stats_client -.if ${MACHINE_CPUARCH} == "amd64" -SUBDIR+= tsan -SUBDIR+= tsan_cxx -.endif -SUBDIR+= ubsan_minimal -SUBDIR+= ubsan_standalone -SUBDIR+= ubsan_standalone_cxx -.endif +SUBDIR_ALL+= include +SUBDIR_ALL+= profile +SUBDIR_ALL+= stats +SUBDIR_ALL+= stats_client +SUBDIR_ALL+= ubsan_minimal +SUBDIR_ALL+= ubsan_standalone +SUBDIR_ALL+= ubsan_standalone_cxx -SUBDIR+= profile +.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || + ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "i386" +SUBDIR_ALL+= asan +SUBDIR_ALL+= asan-preinit +SUBDIR_ALL+= asan_cxx +SUBDIR_ALL+= asan_dynamic +SUBDIR_ALL+= cfi +SUBDIR_ALL+= cfi_diag +.endif # aarch64 || amd64 || arm || i386 +.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" +SUBDIR_ALL+= dd +SUBDIR_ALL+= fuzzer +SUBDIR_ALL+= fuzzer_no_main +SUBDIR_ALL+= msan +SUBDIR_ALL+= msan_cxx +SUBDIR_ALL+= tsan +SUBDIR_ALL+= tsan_cxx +.endif # aarch64 || amd64 + +.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || + ${MACHINE_CPUARCH} == "i386" +SUBDIR_ALL+= safestack +.endif # aarch64 || amd64 || i386 + +.if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || + ${MACHINE_CPUARCH} == "arm" +SUBDIR_ALL+= xray +SUBDIR_ALL+= xray-basic +SUBDIR_ALL+= xray-fdr +SUBDIR_ALL+= xray-profiling +.endif # aarch64 || amd64 || arm + +SUBDIR+= ${SUBDIR_ALL:O} + .include +# DO NOT DELETE Modified: projects/clang900-import/lib/libclang_rt/Makefile.inc ============================================================================== --- projects/clang900-import/lib/libclang_rt/Makefile.inc Sun Sep 1 16:57:19 2019 (r351666) +++ projects/clang900-import/lib/libclang_rt/Makefile.inc Sun Sep 1 18:21:06 2019 (r351667) @@ -40,5 +40,6 @@ CFLAGS+= -fno-stack-protector CFLAGS+= -funwind-tables CXXFLAGS+= -fvisibility-inlines-hidden CXXFLAGS+= -fvisibility=hidden +CFLAGS+= -I${CRTSRC}/include CFLAGS+= -I${CRTSRC}/lib CXXSTD= c++11 Added: projects/clang900-import/lib/libclang_rt/cfi/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang900-import/lib/libclang_rt/cfi/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -0,0 +1,39 @@ +# $FreeBSD$ + +.include + +LIB= clang_rt.cfi-${CRTARCH} + +SRCS+= cfi/cfi.cpp +SRCS+= interception/interception_linux.cc +SRCS+= interception/interception_type_test.cc +SRCS+= sanitizer_common/sanitizer_allocator.cc +SRCS+= sanitizer_common/sanitizer_allocator_checks.cc +SRCS+= sanitizer_common/sanitizer_common.cc +SRCS+= sanitizer_common/sanitizer_common_libcdep.cc +SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cc +SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cc +SRCS+= sanitizer_common/sanitizer_errno.cc +SRCS+= sanitizer_common/sanitizer_file.cc +SRCS+= sanitizer_common/sanitizer_flag_parser.cc +SRCS+= sanitizer_common/sanitizer_flags.cc +SRCS+= sanitizer_common/sanitizer_libc.cc +SRCS+= sanitizer_common/sanitizer_libignore.cc +SRCS+= sanitizer_common/sanitizer_linux.cc +SRCS+= sanitizer_common/sanitizer_linux_libcdep.cc +SRCS+= sanitizer_common/sanitizer_persistent_allocator.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_linux.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_posix.cc +SRCS+= sanitizer_common/sanitizer_posix.cc +SRCS+= sanitizer_common/sanitizer_posix_libcdep.cc +SRCS+= sanitizer_common/sanitizer_printf.cc +SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cc +SRCS+= sanitizer_common/sanitizer_procmaps_common.cc +SRCS+= sanitizer_common/sanitizer_suppressions.cc +SRCS+= sanitizer_common/sanitizer_termination.cc +SRCS+= sanitizer_common/sanitizer_thread_registry.cc +SRCS+= sanitizer_common/sanitizer_tls_get_addr.cc +SRCS+= sanitizer_common/sanitizer_type_traits.cc + +.include Added: projects/clang900-import/lib/libclang_rt/cfi_diag/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang900-import/lib/libclang_rt/cfi_diag/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -0,0 +1,58 @@ +# $FreeBSD$ + +.include + +LIB= clang_rt.cfi_diag-${CRTARCH} + +SRCS+= cfi/cfi.cpp +SRCS+= interception/interception_linux.cc +SRCS+= interception/interception_type_test.cc +SRCS+= sanitizer_common/sancov_flags.cc +SRCS+= sanitizer_common/sanitizer_allocator.cc +SRCS+= sanitizer_common/sanitizer_allocator_checks.cc +SRCS+= sanitizer_common/sanitizer_allocator_report.cc +SRCS+= sanitizer_common/sanitizer_common.cc +SRCS+= sanitizer_common/sanitizer_common_libcdep.cc +SRCS+= sanitizer_common/sanitizer_coverage_libcdep_new.cc +SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cc +SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cc +SRCS+= sanitizer_common/sanitizer_errno.cc +SRCS+= sanitizer_common/sanitizer_file.cc +SRCS+= sanitizer_common/sanitizer_flag_parser.cc +SRCS+= sanitizer_common/sanitizer_flags.cc +SRCS+= sanitizer_common/sanitizer_libc.cc +SRCS+= sanitizer_common/sanitizer_libignore.cc +SRCS+= sanitizer_common/sanitizer_linux.cc +SRCS+= sanitizer_common/sanitizer_linux_libcdep.cc +SRCS+= sanitizer_common/sanitizer_persistent_allocator.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_linux.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_posix.cc +SRCS+= sanitizer_common/sanitizer_posix.cc +SRCS+= sanitizer_common/sanitizer_posix_libcdep.cc +SRCS+= sanitizer_common/sanitizer_printf.cc +SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cc +SRCS+= sanitizer_common/sanitizer_procmaps_common.cc +SRCS+= sanitizer_common/sanitizer_stackdepot.cc +SRCS+= sanitizer_common/sanitizer_stacktrace.cc +SRCS+= sanitizer_common/sanitizer_stacktrace_libcdep.cc +SRCS+= sanitizer_common/sanitizer_stacktrace_printer.cc +SRCS+= sanitizer_common/sanitizer_suppressions.cc +SRCS+= sanitizer_common/sanitizer_symbolizer.cc +SRCS+= sanitizer_common/sanitizer_symbolizer_libbacktrace.cc +SRCS+= sanitizer_common/sanitizer_symbolizer_libcdep.cc +SRCS+= sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc +SRCS+= sanitizer_common/sanitizer_symbolizer_report.cc +SRCS+= sanitizer_common/sanitizer_termination.cc +SRCS+= sanitizer_common/sanitizer_thread_registry.cc +SRCS+= sanitizer_common/sanitizer_tls_get_addr.cc +SRCS+= sanitizer_common/sanitizer_type_traits.cc +SRCS+= sanitizer_common/sanitizer_unwind_linux_libcdep.cc +SRCS+= ubsan/ubsan_diag.cc +SRCS+= ubsan/ubsan_flags.cc +SRCS+= ubsan/ubsan_handlers.cc +SRCS+= ubsan/ubsan_init.cc +SRCS+= ubsan/ubsan_monitor.cc +SRCS+= ubsan/ubsan_value.cc + +.include Added: projects/clang900-import/lib/libclang_rt/dd/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang900-import/lib/libclang_rt/dd/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -0,0 +1,40 @@ +# $FreeBSD$ + +.include + +LIB= clang_rt.dd-${CRTARCH} + +SRCS+= interception/interception_linux.cc +SRCS+= interception/interception_type_test.cc +SRCS+= sanitizer_common/sanitizer_allocator.cc +SRCS+= sanitizer_common/sanitizer_allocator_checks.cc +SRCS+= sanitizer_common/sanitizer_common.cc +SRCS+= sanitizer_common/sanitizer_common_libcdep.cc +SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cc +SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cc +SRCS+= sanitizer_common/sanitizer_errno.cc +SRCS+= sanitizer_common/sanitizer_file.cc +SRCS+= sanitizer_common/sanitizer_flag_parser.cc +SRCS+= sanitizer_common/sanitizer_flags.cc +SRCS+= sanitizer_common/sanitizer_libc.cc +SRCS+= sanitizer_common/sanitizer_libignore.cc +SRCS+= sanitizer_common/sanitizer_linux.cc +SRCS+= sanitizer_common/sanitizer_linux_libcdep.cc +SRCS+= sanitizer_common/sanitizer_persistent_allocator.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_linux.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_posix.cc +SRCS+= sanitizer_common/sanitizer_posix.cc +SRCS+= sanitizer_common/sanitizer_posix_libcdep.cc +SRCS+= sanitizer_common/sanitizer_printf.cc +SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cc +SRCS+= sanitizer_common/sanitizer_procmaps_common.cc +SRCS+= sanitizer_common/sanitizer_suppressions.cc +SRCS+= sanitizer_common/sanitizer_termination.cc +SRCS+= sanitizer_common/sanitizer_thread_registry.cc +SRCS+= sanitizer_common/sanitizer_tls_get_addr.cc +SRCS+= sanitizer_common/sanitizer_type_traits.cc +SRCS+= tsan/dd/dd_interceptors.cc +SRCS+= tsan/dd/dd_rtl.cc + +.include Modified: projects/clang900-import/lib/libclang_rt/fuzzer/Makefile ============================================================================== --- projects/clang900-import/lib/libclang_rt/fuzzer/Makefile Sun Sep 1 16:57:19 2019 (r351666) +++ projects/clang900-import/lib/libclang_rt/fuzzer/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -8,9 +8,9 @@ SRCS+= fuzzer/FuzzerCrossOver.cpp SRCS+= fuzzer/FuzzerDataFlowTrace.cpp SRCS+= fuzzer/FuzzerDriver.cpp SRCS+= fuzzer/FuzzerExtFunctionsDlsym.cpp -SRCS+= fuzzer/FuzzerExtFunctionsDlsymWin.cpp SRCS+= fuzzer/FuzzerExtFunctionsWeak.cpp SRCS+= fuzzer/FuzzerExtraCounters.cpp +SRCS+= fuzzer/FuzzerFork.cpp SRCS+= fuzzer/FuzzerIO.cpp SRCS+= fuzzer/FuzzerIOPosix.cpp SRCS+= fuzzer/FuzzerIOWindows.cpp @@ -19,15 +19,9 @@ SRCS+= fuzzer/FuzzerMain.cpp SRCS+= fuzzer/FuzzerMerge.cpp SRCS+= fuzzer/FuzzerMutate.cpp SRCS+= fuzzer/FuzzerSHA1.cpp -SRCS+= fuzzer/FuzzerShmemFuchsia.cpp -SRCS+= fuzzer/FuzzerShmemPosix.cpp -SRCS+= fuzzer/FuzzerShmemWindows.cpp SRCS+= fuzzer/FuzzerTracePC.cpp SRCS+= fuzzer/FuzzerUtil.cpp -SRCS+= fuzzer/FuzzerUtilDarwin.cpp -SRCS+= fuzzer/FuzzerUtilFuchsia.cpp SRCS+= fuzzer/FuzzerUtilLinux.cpp SRCS+= fuzzer/FuzzerUtilPosix.cpp -SRCS+= fuzzer/FuzzerUtilWindows.cpp .include Modified: projects/clang900-import/lib/libclang_rt/fuzzer_no_main/Makefile ============================================================================== --- projects/clang900-import/lib/libclang_rt/fuzzer_no_main/Makefile Sun Sep 1 16:57:19 2019 (r351666) +++ projects/clang900-import/lib/libclang_rt/fuzzer_no_main/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -8,9 +8,9 @@ SRCS+= fuzzer/FuzzerCrossOver.cpp SRCS+= fuzzer/FuzzerDataFlowTrace.cpp SRCS+= fuzzer/FuzzerDriver.cpp SRCS+= fuzzer/FuzzerExtFunctionsDlsym.cpp -SRCS+= fuzzer/FuzzerExtFunctionsDlsymWin.cpp SRCS+= fuzzer/FuzzerExtFunctionsWeak.cpp SRCS+= fuzzer/FuzzerExtraCounters.cpp +SRCS+= fuzzer/FuzzerFork.cpp SRCS+= fuzzer/FuzzerIO.cpp SRCS+= fuzzer/FuzzerIOPosix.cpp SRCS+= fuzzer/FuzzerIOWindows.cpp @@ -18,15 +18,9 @@ SRCS+= fuzzer/FuzzerLoop.cpp SRCS+= fuzzer/FuzzerMerge.cpp SRCS+= fuzzer/FuzzerMutate.cpp SRCS+= fuzzer/FuzzerSHA1.cpp -SRCS+= fuzzer/FuzzerShmemFuchsia.cpp -SRCS+= fuzzer/FuzzerShmemPosix.cpp -SRCS+= fuzzer/FuzzerShmemWindows.cpp SRCS+= fuzzer/FuzzerTracePC.cpp SRCS+= fuzzer/FuzzerUtil.cpp -SRCS+= fuzzer/FuzzerUtilDarwin.cpp -SRCS+= fuzzer/FuzzerUtilFuchsia.cpp SRCS+= fuzzer/FuzzerUtilLinux.cpp SRCS+= fuzzer/FuzzerUtilPosix.cpp -SRCS+= fuzzer/FuzzerUtilWindows.cpp .include Modified: projects/clang900-import/lib/libclang_rt/include/Makefile ============================================================================== --- projects/clang900-import/lib/libclang_rt/include/Makefile Sun Sep 1 16:57:19 2019 (r351666) +++ projects/clang900-import/lib/libclang_rt/include/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -11,7 +11,6 @@ INCS+= asan_interface.h INCS+= common_interface_defs.h INCS+= coverage_interface.h INCS+= dfsan_interface.h -INCS+= esan_interface.h INCS+= hwasan_interface.h INCS+= linux_syscall_hooks.h INCS+= lsan_interface.h Modified: projects/clang900-import/lib/libclang_rt/msan_cxx/Makefile ============================================================================== --- projects/clang900-import/lib/libclang_rt/msan_cxx/Makefile Sun Sep 1 16:57:19 2019 (r351666) +++ projects/clang900-import/lib/libclang_rt/msan_cxx/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -1,3 +1,4 @@ + # $FreeBSD$ .include Modified: projects/clang900-import/lib/libclang_rt/profile/Makefile ============================================================================== --- projects/clang900-import/lib/libclang_rt/profile/Makefile Sun Sep 1 16:57:19 2019 (r351666) +++ projects/clang900-import/lib/libclang_rt/profile/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -18,7 +18,6 @@ SRCS+= profile/InstrProfilingFile.c SRCS+= profile/InstrProfilingMerge.c SRCS+= profile/InstrProfilingMergeFile.c SRCS+= profile/InstrProfilingNameVar.c -SRCS+= profile/InstrProfilingPlatformDarwin.c SRCS+= profile/InstrProfilingPlatformLinux.c SRCS+= profile/InstrProfilingPlatformOther.c SRCS+= profile/InstrProfilingRuntime.cc Modified: projects/clang900-import/lib/libclang_rt/safestack/Makefile ============================================================================== --- projects/clang900-import/lib/libclang_rt/safestack/Makefile Sun Sep 1 16:57:19 2019 (r351666) +++ projects/clang900-import/lib/libclang_rt/safestack/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -7,32 +7,5 @@ LIB= clang_rt.safestack-${CRTARCH} SRCS+= interception/interception_linux.cc SRCS+= interception/interception_type_test.cc SRCS+= safestack/safestack.cc -SRCS+= sanitizer_common/sanitizer_allocator.cc -SRCS+= sanitizer_common/sanitizer_common.cc -SRCS+= sanitizer_common/sanitizer_common_nolibc.cc -SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cc -SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cc -SRCS+= sanitizer_common/sanitizer_errno.cc -SRCS+= sanitizer_common/sanitizer_file.cc -SRCS+= sanitizer_common/sanitizer_flag_parser.cc -SRCS+= sanitizer_common/sanitizer_flags.cc -SRCS+= sanitizer_common/sanitizer_libc.cc -SRCS+= sanitizer_common/sanitizer_libignore.cc -SRCS+= sanitizer_common/sanitizer_linux.cc -SRCS+= sanitizer_common/sanitizer_persistent_allocator.cc -SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cc -SRCS+= sanitizer_common/sanitizer_platform_limits_linux.cc -SRCS+= sanitizer_common/sanitizer_platform_limits_posix.cc -SRCS+= sanitizer_common/sanitizer_posix.cc -SRCS+= sanitizer_common/sanitizer_printf.cc -SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cc -SRCS+= sanitizer_common/sanitizer_procmaps_common.cc -SRCS+= sanitizer_common/sanitizer_stackdepot.cc -SRCS+= sanitizer_common/sanitizer_stacktrace.cc -SRCS+= sanitizer_common/sanitizer_stacktrace_printer.cc -SRCS+= sanitizer_common/sanitizer_suppressions.cc -SRCS+= sanitizer_common/sanitizer_termination.cc -SRCS+= sanitizer_common/sanitizer_thread_registry.cc -SRCS+= sanitizer_common/sanitizer_tls_get_addr.cc .include Modified: projects/clang900-import/lib/libclang_rt/ubsan_standalone/Makefile ============================================================================== --- projects/clang900-import/lib/libclang_rt/ubsan_standalone/Makefile Sun Sep 1 16:57:19 2019 (r351666) +++ projects/clang900-import/lib/libclang_rt/ubsan_standalone/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -46,7 +46,6 @@ SRCS+= sanitizer_common/sanitizer_termination.cc SRCS+= sanitizer_common/sanitizer_thread_registry.cc SRCS+= sanitizer_common/sanitizer_tls_get_addr.cc SRCS+= sanitizer_common/sanitizer_type_traits.cc -SRCS+= sanitizer_common/sanitizer_type_traits.cc SRCS+= sanitizer_common/sanitizer_unwind_linux_libcdep.cc SRCS+= ubsan/ubsan_diag.cc SRCS+= ubsan/ubsan_diag_standalone.cc Added: projects/clang900-import/lib/libclang_rt/xray-basic/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang900-import/lib/libclang_rt/xray-basic/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -0,0 +1,10 @@ +# $FreeBSD$ + +.include + +LIB= clang_rt.xray-basic-${CRTARCH} + +SRCS+= xray/xray_basic_flags.cc +SRCS+= xray/xray_basic_logging.cc + +.include Added: projects/clang900-import/lib/libclang_rt/xray-fdr/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang900-import/lib/libclang_rt/xray-fdr/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -0,0 +1,10 @@ +# $FreeBSD$ + +.include + +LIB= clang_rt.xray-fdr-${CRTARCH} + +SRCS+= xray/xray_fdr_flags.cc +SRCS+= xray/xray_fdr_logging.cc + +.include Added: projects/clang900-import/lib/libclang_rt/xray-profiling/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang900-import/lib/libclang_rt/xray-profiling/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -0,0 +1,11 @@ +# $FreeBSD$ + +.include + +LIB= clang_rt.xray-profiling-${CRTARCH} + +SRCS+= xray/xray_profile_collector.cc +SRCS+= xray/xray_profiling.cc +SRCS+= xray/xray_profiling_flags.cc + +.include Added: projects/clang900-import/lib/libclang_rt/xray/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang900-import/lib/libclang_rt/xray/Makefile Sun Sep 1 18:21:06 2019 (r351667) @@ -0,0 +1,44 @@ +# $FreeBSD$ + +.include + +LIB= clang_rt.xray-${CRTARCH} + +SRCS+= sanitizer_common/sanitizer_allocator.cc +SRCS+= sanitizer_common/sanitizer_allocator_checks.cc +SRCS+= sanitizer_common/sanitizer_common.cc +SRCS+= sanitizer_common/sanitizer_common_libcdep.cc +SRCS+= sanitizer_common/sanitizer_deadlock_detector1.cc +SRCS+= sanitizer_common/sanitizer_deadlock_detector2.cc +SRCS+= sanitizer_common/sanitizer_errno.cc +SRCS+= sanitizer_common/sanitizer_file.cc +SRCS+= sanitizer_common/sanitizer_flag_parser.cc +SRCS+= sanitizer_common/sanitizer_flags.cc +SRCS+= sanitizer_common/sanitizer_libc.cc +SRCS+= sanitizer_common/sanitizer_libignore.cc +SRCS+= sanitizer_common/sanitizer_linux.cc +SRCS+= sanitizer_common/sanitizer_linux_libcdep.cc +SRCS+= sanitizer_common/sanitizer_persistent_allocator.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_freebsd.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_linux.cc +SRCS+= sanitizer_common/sanitizer_platform_limits_posix.cc +SRCS+= sanitizer_common/sanitizer_posix.cc +SRCS+= sanitizer_common/sanitizer_posix_libcdep.cc +SRCS+= sanitizer_common/sanitizer_printf.cc +SRCS+= sanitizer_common/sanitizer_procmaps_bsd.cc +SRCS+= sanitizer_common/sanitizer_procmaps_common.cc +SRCS+= sanitizer_common/sanitizer_suppressions.cc +SRCS+= sanitizer_common/sanitizer_termination.cc +SRCS+= sanitizer_common/sanitizer_thread_registry.cc +SRCS+= sanitizer_common/sanitizer_tls_get_addr.cc +SRCS+= sanitizer_common/sanitizer_type_traits.cc +SRCS+= xray/xray_buffer_queue.cc +SRCS+= xray/xray_flags.cc +SRCS+= xray/xray_init.cc +SRCS+= xray/xray_interface.cc +SRCS+= xray/xray_log_interface.cc +SRCS+= xray/xray_trampoline_x86_64.S +SRCS+= xray/xray_utils.cc +SRCS+= xray/xray_x86_64.cc + +.include Modified: projects/clang900-import/tools/build/mk/OptionalObsoleteFiles.inc ============================================================================== --- projects/clang900-import/tools/build/mk/OptionalObsoleteFiles.inc Sun Sep 1 16:57:19 2019 (r351666) +++ projects/clang900-import/tools/build/mk/OptionalObsoleteFiles.inc Sun Sep 1 18:21:06 2019 (r351667) @@ -1533,36 +1533,100 @@ OLD_FILES+=usr/lib/clang/9.0.0/include/xsaveoptintrin. OLD_FILES+=usr/lib/clang/9.0.0/include/xsavesintrin.h OLD_FILES+=usr/lib/clang/9.0.0/include/xtestintrin.h OLD_DIRS+=usr/lib/clang/9.0.0/include +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-aarch64.so +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-arm.so +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-armhf.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-armhf.so OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-i386.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-i386.so +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-armhf.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-i386.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-preinit-x86_64.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-x86_64.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan-x86_64.so +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-armhf.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-i386.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.asan_cxx-x86_64.a -OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan-i386.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-armhf.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-i386.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-armhf.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-i386.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.cfi_diag-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.dd-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.dd-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer_no_main-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.fuzzer_no_main-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan-aarch64.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan-x86_64.a -OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan_cxx-i386.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan_cxx-aarch64.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.msan_cxx-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-aarch64.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-arm.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-armhf.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-i386.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.profile-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.safestack-aarch64.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.safestack-i386.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.safestack-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-armhf.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-i386.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-armhf.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-i386.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.stats_client-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan-aarch64.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan_cxx-aarch64.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.tsan_cxx-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-armhf.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-i386.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_minimal-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-armhf.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-i386.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-armhf.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-armhf.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-armhf.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-basic-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-armhf.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-fdr-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-aarch64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-arm.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-armhf.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-profiling-x86_64.a +OLD_FILES+=usr/lib/clang/9.0.0/lib/freebsd/libclang_rt.xray-x86_64.a + OLD_DIRS+=usr/lib/clang/9.0.0/lib/freebsd OLD_DIRS+=usr/lib/clang/9.0.0/lib OLD_DIRS+=usr/lib/clang/9.0.0 From owner-svn-src-projects@freebsd.org Sun Sep 1 18:25:46 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F0FE0E1104 for ; Sun, 1 Sep 2019 18:25:46 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46M1qZ6YV2z4cky; Sun, 1 Sep 2019 18:25:46 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BFBEE59BF; Sun, 1 Sep 2019 18:25:46 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x81IPkN0076511; Sun, 1 Sep 2019 18:25:46 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x81IPjp4076504; Sun, 1 Sep 2019 18:25:45 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201909011825.x81IPjp4076504@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sun, 1 Sep 2019 18:25:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351668 - projects/clang900-import/lib/libomp X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: projects/clang900-import/lib/libomp X-SVN-Commit-Revision: 351668 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Sep 2019 18:25:47 -0000 Author: dim Date: Sun Sep 1 18:25:45 2019 New Revision: 351668 URL: https://svnweb.freebsd.org/changeset/base/351668 Log: Update build glue for building libomp. Modified: projects/clang900-import/lib/libomp/Makefile projects/clang900-import/lib/libomp/kmp_config.h projects/clang900-import/lib/libomp/kmp_i18n_default.inc projects/clang900-import/lib/libomp/kmp_i18n_id.inc projects/clang900-import/lib/libomp/omp-tools.h projects/clang900-import/lib/libomp/omp.h Modified: projects/clang900-import/lib/libomp/Makefile ============================================================================== --- projects/clang900-import/lib/libomp/Makefile Sun Sep 1 18:21:06 2019 (r351667) +++ projects/clang900-import/lib/libomp/Makefile Sun Sep 1 18:25:45 2019 (r351668) @@ -32,7 +32,6 @@ SRCS+= kmp_settings.cpp SRCS+= kmp_str.cpp SRCS+= kmp_taskdeps.cpp SRCS+= kmp_tasking.cpp -SRCS+= kmp_taskq.cpp SRCS+= kmp_threadprivate.cpp SRCS+= kmp_utility.cpp SRCS+= kmp_version.cpp Modified: projects/clang900-import/lib/libomp/kmp_config.h ============================================================================== --- projects/clang900-import/lib/libomp/kmp_config.h Sun Sep 1 18:21:06 2019 (r351667) +++ projects/clang900-import/lib/libomp/kmp_config.h Sun Sep 1 18:25:45 2019 (r351668) @@ -4,11 +4,10 @@ */ //===----------------------------------------------------------------------===// // -// The LLVM Compiler Infrastructure +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.txt for details. -// //===----------------------------------------------------------------------===// #ifndef KMP_CONFIG_H #define KMP_CONFIG_H @@ -66,11 +65,6 @@ #define KMP_LIBRARY_FILE "libomp.so" #define KMP_VERSION_MAJOR 5 #define KMP_VERSION_MINOR 0 -#define LIBOMP_OMP_VERSION 50 -#define OMP_50_ENABLED (LIBOMP_OMP_VERSION >= 50) -#define OMP_45_ENABLED (LIBOMP_OMP_VERSION >= 45) -#define OMP_40_ENABLED (LIBOMP_OMP_VERSION >= 40) -#define OMP_30_ENABLED (LIBOMP_OMP_VERSION >= 30) #define LIBOMP_TSAN_SUPPORT 0 #if LIBOMP_TSAN_SUPPORT #define TSAN_SUPPORT Modified: projects/clang900-import/lib/libomp/kmp_i18n_default.inc ============================================================================== --- projects/clang900-import/lib/libomp/kmp_i18n_default.inc Sun Sep 1 18:21:06 2019 (r351667) +++ projects/clang900-import/lib/libomp/kmp_i18n_default.inc Sun Sep 1 18:25:45 2019 (r351668) @@ -1,6 +1,6 @@ // $FreeBSD$ // Do not edit this file! // -// The file was generated from en_US.txt by message-converter.pl on Thu Mar 14 22:26:24 2019. // +// The file was generated from en_US.txt by message-converter.pl on Fri Aug 23 08:40:57 2019. // static char const * __kmp_i18n_default_meta[] = @@ -362,6 +362,7 @@ __kmp_i18n_default_messages[] = "KMP_HW_SUBSET ignored: too many Procs requested.", "Hierarchy ignored: unsupported level: %1$s.", "OMP: pid %1$s tid %2$s thread %3$s bound to OS proc set {%4$s}", + "%1$s routine deprecated, please use %2$s instead.", NULL }; @@ -412,7 +413,7 @@ __kmp_i18n_sections[] = { 5, __kmp_i18n_default_meta }, { 55, __kmp_i18n_default_strings }, { 6, __kmp_i18n_default_formats }, - { 269, __kmp_i18n_default_messages }, + { 270, __kmp_i18n_default_messages }, { 27, __kmp_i18n_default_hints }, { 0, NULL } }; Modified: projects/clang900-import/lib/libomp/kmp_i18n_id.inc ============================================================================== --- projects/clang900-import/lib/libomp/kmp_i18n_id.inc Sun Sep 1 18:21:06 2019 (r351667) +++ projects/clang900-import/lib/libomp/kmp_i18n_id.inc Sun Sep 1 18:25:45 2019 (r351668) @@ -1,6 +1,6 @@ // $FreeBSD$ // Do not edit this file! // -// The file was generated from en_US.txt by message-converter.pl on Thu Mar 14 22:26:24 2019. // +// The file was generated from en_US.txt by message-converter.pl on Fri Aug 23 08:40:57 2019. // enum kmp_i18n_id { @@ -356,6 +356,7 @@ enum kmp_i18n_id { kmp_i18n_msg_AffHWSubsetManyProcs, kmp_i18n_msg_HierSchedInvalid, kmp_i18n_msg_AffFormatDefault, + kmp_i18n_msg_APIDeprecated, kmp_i18n_msg_last, // Set #5, hints. Modified: projects/clang900-import/lib/libomp/omp-tools.h ============================================================================== --- projects/clang900-import/lib/libomp/omp-tools.h Sun Sep 1 18:21:06 2019 (r351667) +++ projects/clang900-import/lib/libomp/omp-tools.h Sun Sep 1 18:25:45 2019 (r351668) @@ -1,15 +1,14 @@ // $FreeBSD$ /* - * include/50/omp-tools.h.var + * include/omp-tools.h.var */ //===----------------------------------------------------------------------===// // -// The LLVM Compiler Infrastructure +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.txt for details. -// //===----------------------------------------------------------------------===// #ifndef __OMPT__ @@ -373,7 +372,7 @@ typedef enum ompt_frame_flag_t { ompt_frame_cfa = 0x10, ompt_frame_framepointer = 0x20, ompt_frame_stackaddress = 0x30 -} ompt_frame_flag_t; +} ompt_frame_flag_t; typedef enum ompt_state_t { ompt_state_work_serial = 0x000, @@ -722,14 +721,14 @@ typedef void (*ompt_callback_dispatch_t) ( ompt_data_t *parallel_data, ompt_data_t *task_data, ompt_dispatch_t kind, - ompt_data_t instance + ompt_data_t instance ); typedef struct ompt_record_dispatch_t { ompt_id_t parallel_id; ompt_id_t task_id; ompt_dispatch_t kind; - ompt_data_t instance; + ompt_data_t instance; } ompt_record_dispatch_t; typedef void (*ompt_callback_task_create_t) ( Modified: projects/clang900-import/lib/libomp/omp.h ============================================================================== --- projects/clang900-import/lib/libomp/omp.h Sun Sep 1 18:21:06 2019 (r351667) +++ projects/clang900-import/lib/libomp/omp.h Sun Sep 1 18:25:45 2019 (r351668) @@ -1,22 +1,24 @@ // $FreeBSD$ /* - * include/50/omp.h.var + * include/omp.h.var */ //===----------------------------------------------------------------------===// // -// The LLVM Compiler Infrastructure +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.txt for details. -// //===----------------------------------------------------------------------===// #ifndef __OMP_H # define __OMP_H +# include +# include + # define KMP_VERSION_MAJOR 5 # define KMP_VERSION_MINOR 0 # define KMP_VERSION_BUILD 20140926 @@ -45,10 +47,11 @@ /* schedule kind constants */ typedef enum omp_sched_t { - omp_sched_static = 1, - omp_sched_dynamic = 2, - omp_sched_guided = 3, - omp_sched_auto = 4 + omp_sched_static = 1, + omp_sched_dynamic = 2, + omp_sched_guided = 3, + omp_sched_auto = 4, + omp_sched_monotonic = 0x80000000 } omp_sched_t; /* set API functions */ @@ -135,7 +138,6 @@ extern int __KAI_KMPC_CONVENTION omp_get_team_num (void); extern int __KAI_KMPC_CONVENTION omp_get_cancellation (void); -# include /* OpenMP 4.5 */ extern int __KAI_KMPC_CONVENTION omp_get_initial_device (void); extern void* __KAI_KMPC_CONVENTION omp_target_alloc(size_t, int); @@ -149,6 +151,7 @@ /* OpenMP 5.0 */ extern int __KAI_KMPC_CONVENTION omp_get_device_num (void); + typedef void * omp_depend_t; /* kmp API functions */ extern int __KAI_KMPC_CONVENTION kmp_get_stacksize (void); @@ -219,36 +222,139 @@ omp_control_tool_flush = 3, omp_control_tool_end = 4 } omp_control_tool_t; - + extern int __KAI_KMPC_CONVENTION omp_control_tool(int, int, void*); /* OpenMP 5.0 Memory Management */ - typedef void *omp_allocator_t; - extern __KMP_IMP const omp_allocator_t *OMP_NULL_ALLOCATOR; - extern __KMP_IMP const omp_allocator_t *omp_default_mem_alloc; - extern __KMP_IMP const omp_allocator_t *omp_large_cap_mem_alloc; - extern __KMP_IMP const omp_allocator_t *omp_const_mem_alloc; - extern __KMP_IMP const omp_allocator_t *omp_high_bw_mem_alloc; - extern __KMP_IMP const omp_allocator_t *omp_low_lat_mem_alloc; - extern __KMP_IMP const omp_allocator_t *omp_cgroup_mem_alloc; - extern __KMP_IMP const omp_allocator_t *omp_pteam_mem_alloc; - extern __KMP_IMP const omp_allocator_t *omp_thread_mem_alloc; + typedef uintptr_t omp_uintptr_t; - extern void __KAI_KMPC_CONVENTION omp_set_default_allocator(const omp_allocator_t *); - extern const omp_allocator_t * __KAI_KMPC_CONVENTION omp_get_default_allocator(void); -#ifdef __cplusplus - extern void *__KAI_KMPC_CONVENTION omp_alloc(size_t size, const omp_allocator_t *allocator = OMP_NULL_ALLOCATOR); - extern void __KAI_KMPC_CONVENTION omp_free(void * ptr, const omp_allocator_t *allocator = OMP_NULL_ALLOCATOR); -#else - extern void *__KAI_KMPC_CONVENTION omp_alloc(size_t size, const omp_allocator_t *allocator); - extern void __KAI_KMPC_CONVENTION omp_free(void *ptr, const omp_allocator_t *allocator); -#endif + typedef enum { + OMP_ATK_THREADMODEL = 1, + OMP_ATK_ALIGNMENT = 2, + OMP_ATK_ACCESS = 3, + OMP_ATK_POOL_SIZE = 4, + OMP_ATK_FALLBACK = 5, + OMP_ATK_FB_DATA = 6, + OMP_ATK_PINNED = 7, + OMP_ATK_PARTITION = 8 + } omp_alloctrait_key_t; + typedef enum { + OMP_ATV_FALSE = 0, + OMP_ATV_TRUE = 1, + OMP_ATV_DEFAULT = 2, + OMP_ATV_CONTENDED = 3, + OMP_ATV_UNCONTENDED = 4, + OMP_ATV_SEQUENTIAL = 5, + OMP_ATV_PRIVATE = 6, + OMP_ATV_ALL = 7, + OMP_ATV_THREAD = 8, + OMP_ATV_PTEAM = 9, + OMP_ATV_CGROUP = 10, + OMP_ATV_DEFAULT_MEM_FB = 11, + OMP_ATV_NULL_FB = 12, + OMP_ATV_ABORT_FB = 13, + OMP_ATV_ALLOCATOR_FB = 14, + OMP_ATV_ENVIRONMENT = 15, + OMP_ATV_NEAREST = 16, + OMP_ATV_BLOCKED = 17, + OMP_ATV_INTERLEAVED = 18 + } omp_alloctrait_value_t; + + typedef struct { + omp_alloctrait_key_t key; + omp_uintptr_t value; + } omp_alloctrait_t; + +# if defined(_WIN32) + // On Windows cl and icl do not support 64-bit enum, let's use integer then. + typedef omp_uintptr_t omp_allocator_handle_t; + extern __KMP_IMP omp_allocator_handle_t const omp_null_allocator; + extern __KMP_IMP omp_allocator_handle_t const omp_default_mem_alloc; + extern __KMP_IMP omp_allocator_handle_t const omp_large_cap_mem_alloc; + extern __KMP_IMP omp_allocator_handle_t const omp_const_mem_alloc; + extern __KMP_IMP omp_allocator_handle_t const omp_high_bw_mem_alloc; + extern __KMP_IMP omp_allocator_handle_t const omp_low_lat_mem_alloc; + extern __KMP_IMP omp_allocator_handle_t const omp_cgroup_mem_alloc; + extern __KMP_IMP omp_allocator_handle_t const omp_pteam_mem_alloc; + extern __KMP_IMP omp_allocator_handle_t const omp_thread_mem_alloc; + typedef omp_uintptr_t omp_memspace_handle_t; + extern __KMP_IMP omp_memspace_handle_t const omp_default_mem_space; + extern __KMP_IMP omp_memspace_handle_t const omp_large_cap_mem_space; + extern __KMP_IMP omp_memspace_handle_t const omp_const_mem_space; + extern __KMP_IMP omp_memspace_handle_t const omp_high_bw_mem_space; + extern __KMP_IMP omp_memspace_handle_t const omp_low_lat_mem_space; +# else +# if __cplusplus >= 201103 + typedef enum omp_allocator_handle_t : omp_uintptr_t +# else + typedef enum omp_allocator_handle_t +# endif + { + omp_null_allocator = 0, + omp_default_mem_alloc = 1, + omp_large_cap_mem_alloc = 2, + omp_const_mem_alloc = 3, + omp_high_bw_mem_alloc = 4, + omp_low_lat_mem_alloc = 5, + omp_cgroup_mem_alloc = 6, + omp_pteam_mem_alloc = 7, + omp_thread_mem_alloc = 8, + KMP_ALLOCATOR_MAX_HANDLE = UINTPTR_MAX + } omp_allocator_handle_t; +# if __cplusplus >= 201103 + typedef enum omp_memspace_handle_t : omp_uintptr_t +# else + typedef enum omp_memspace_handle_t +# endif + { + omp_default_mem_space = 0, + omp_large_cap_mem_space = 1, + omp_const_mem_space = 2, + omp_high_bw_mem_space = 3, + omp_low_lat_mem_space = 4, + KMP_MEMSPACE_MAX_HANDLE = UINTPTR_MAX + } omp_memspace_handle_t; +# endif + extern omp_allocator_handle_t __KAI_KMPC_CONVENTION omp_init_allocator(omp_memspace_handle_t m, + int ntraits, omp_alloctrait_t traits[]); + extern void __KAI_KMPC_CONVENTION omp_destroy_allocator(omp_allocator_handle_t allocator); + + extern void __KAI_KMPC_CONVENTION omp_set_default_allocator(omp_allocator_handle_t a); + extern omp_allocator_handle_t __KAI_KMPC_CONVENTION omp_get_default_allocator(void); +# ifdef __cplusplus + extern void *__KAI_KMPC_CONVENTION omp_alloc(size_t size, omp_allocator_handle_t a = omp_null_allocator); + extern void __KAI_KMPC_CONVENTION omp_free(void * ptr, omp_allocator_handle_t a = omp_null_allocator); +# else + extern void *__KAI_KMPC_CONVENTION omp_alloc(size_t size, omp_allocator_handle_t a); + extern void __KAI_KMPC_CONVENTION omp_free(void *ptr, omp_allocator_handle_t a); +# endif + /* OpenMP 5.0 Affinity Format */ extern void __KAI_KMPC_CONVENTION omp_set_affinity_format(char const *); extern size_t __KAI_KMPC_CONVENTION omp_get_affinity_format(char *, size_t); extern void __KAI_KMPC_CONVENTION omp_display_affinity(char const *); extern size_t __KAI_KMPC_CONVENTION omp_capture_affinity(char *, size_t, char const *); + + /* OpenMP 5.0 events */ +# if defined(_WIN32) + // On Windows cl and icl do not support 64-bit enum, let's use integer then. + typedef omp_uintptr_t omp_event_handle_t; +# else + typedef enum omp_event_handle_t { KMP_EVENT_MAX_HANDLE = UINTPTR_MAX } omp_event_handle_t; +# endif + extern void __KAI_KMPC_CONVENTION omp_fulfill_event ( omp_event_handle_t event ); + + /* OpenMP 5.0 Pause Resources */ + typedef enum omp_pause_resource_t { + omp_pause_resume = 0, + omp_pause_soft = 1, + omp_pause_hard = 2 + } omp_pause_resource_t; + extern int __KAI_KMPC_CONVENTION omp_pause_resource(omp_pause_resource_t, int); + extern int __KAI_KMPC_CONVENTION omp_pause_resource_all(omp_pause_resource_t); + + extern int __KAI_KMPC_CONVENTION omp_get_supported_active_levels(void); # undef __KAI_KMPC_CONVENTION # undef __KMP_IMP From owner-svn-src-projects@freebsd.org Sun Sep 1 19:13:20 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B136BE23FE for ; Sun, 1 Sep 2019 19:13:20 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46M2tS47xQz3CYb; Sun, 1 Sep 2019 19:13:20 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 71AEB62DE; Sun, 1 Sep 2019 19:13:20 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x81JDKDD007811; Sun, 1 Sep 2019 19:13:20 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x81JDKHL007810; Sun, 1 Sep 2019 19:13:20 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201909011913.x81JDKHL007810@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sun, 1 Sep 2019 19:13:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351670 - projects/clang900-import/etc/mtree X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: projects/clang900-import/etc/mtree X-SVN-Commit-Revision: 351670 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Sep 2019 19:13:20 -0000 Author: dim Date: Sun Sep 1 19:13:20 2019 New Revision: 351670 URL: https://svnweb.freebsd.org/changeset/base/351670 Log: Fix mtree syntax. Modified: projects/clang900-import/etc/mtree/BSD.usr.dist Modified: projects/clang900-import/etc/mtree/BSD.usr.dist ============================================================================== --- projects/clang900-import/etc/mtree/BSD.usr.dist Sun Sep 1 18:26:21 2019 (r351669) +++ projects/clang900-import/etc/mtree/BSD.usr.dist Sun Sep 1 19:13:20 2019 (r351670) @@ -40,8 +40,11 @@ 9.0.0 include cuda_wrappers + .. openmp_wrappers + .. ppc_wrappers + .. sanitizer .. .. From owner-svn-src-projects@freebsd.org Mon Sep 2 02:41:28 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2764ACE56C for ; Mon, 2 Sep 2019 02:41:28 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46MDqX0HbGz48CP; Mon, 2 Sep 2019 02:41:28 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E1816B49A; Mon, 2 Sep 2019 02:41:27 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x822fRPt072702; Mon, 2 Sep 2019 02:41:27 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x822fRuW072701; Mon, 2 Sep 2019 02:41:27 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201909020241.x822fRuW072701@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Mon, 2 Sep 2019 02:41:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351682 - projects/nfsv42/sys/fs/nfsserver X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/nfsv42/sys/fs/nfsserver X-SVN-Commit-Revision: 351682 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Sep 2019 02:41:28 -0000 Author: rmacklem Date: Mon Sep 2 02:41:27 2019 New Revision: 351682 URL: https://svnweb.freebsd.org/changeset/base/351682 Log: Factor the code that creates the mbuf chain from nfsvno_read(). This patch factors the code that creates the mbuf chain and associated iovec from nfsvno_read() into a separate function called nfsrv_createiovec(). This new function is used by nfsvno_getxattr() to avoid code duplication for this. The patch also slightly re-organizes nfsvno_getxattr() so that it first finds out the size of the extended attribute before creating the mbuf chain for VOP_GETEXTATTR(). I need to put the maximum response size for the session in "nd" so that the size of the attribute can be properly limited. Modified: projects/nfsv42/sys/fs/nfsserver/nfs_nfsdport.c Modified: projects/nfsv42/sys/fs/nfsserver/nfs_nfsdport.c ============================================================================== --- projects/nfsv42/sys/fs/nfsserver/nfs_nfsdport.c Mon Sep 2 01:55:55 2019 (r351681) +++ projects/nfsv42/sys/fs/nfsserver/nfs_nfsdport.c Mon Sep 2 02:41:27 2019 (r351682) @@ -106,6 +106,8 @@ extern int nfsrv_dolocallocks; extern int nfsd_enable_stringtouid; extern struct nfsdevicehead nfsrv_devidhead; +static int nfsrv_createiovec(int, struct mbuf **, struct mbuf **, + struct iovec **); static void nfsrv_pnfscreate(struct vnode *, struct vattr *, struct ucred *, NFSPROC_T *); static void nfsrv_pnfsremovesetup(struct vnode *, NFSPROC_T *, struct vnode **, @@ -781,31 +783,20 @@ out: } /* - * Read vnode op call into mbuf list. + * Create an mbuf chain and an associated iovec that can be used to Read + * or Getextattr of data. + * Upon success, return pointers to the first and last mbufs in the chain + * plus the malloc'd iovec and its iovlen. */ -int -nfsvno_read(struct vnode *vp, off_t off, int cnt, struct ucred *cred, - struct thread *p, struct mbuf **mpp, struct mbuf **mpendp) +static int +nfsrv_createiovec(int len, struct mbuf **mpp, struct mbuf **mpendp, + struct iovec **ivp) { - struct mbuf *m; - int i; + struct mbuf *m, *m2 = NULL, *m3; struct iovec *iv; - struct iovec *iv2; - int error = 0, len, left, siz, tlen, ioflag = 0; - struct mbuf *m2 = NULL, *m3; - struct uio io, *uiop = &io; - struct nfsheur *nh; + int i, left, siz; - /* - * Attempt to read from a DS file. A return of ENOENT implies - * there is no DS file to read. - */ - error = nfsrv_proxyds(NULL, vp, off, cnt, cred, p, NFSPROC_READDS, mpp, - NULL, mpendp, NULL, NULL, NULL, 0, NULL); - if (error != ENOENT) - return (error); - - len = left = NFSM_RNDUP(cnt); + left = len; m3 = NULL; /* * Generate the mbuf list with the uio_iov ref. to it. @@ -824,9 +815,7 @@ nfsvno_read(struct vnode *vp, off_t off, int cnt, stru m3 = m; m2 = m; } - iv = malloc(i * sizeof (struct iovec), - M_TEMP, M_WAITOK); - uiop->uio_iov = iv2 = iv; + *ivp = iv = malloc(i * sizeof (struct iovec), M_TEMP, M_WAITOK); m = m3; left = len; i = 0; @@ -844,7 +833,37 @@ nfsvno_read(struct vnode *vp, off_t off, int cnt, stru } m = m->m_next; } - uiop->uio_iovcnt = i; + *mpp = m3; + *mpendp = m2; + return (i); +} + +/* + * Read vnode op call into mbuf list. + */ +int +nfsvno_read(struct vnode *vp, off_t off, int cnt, struct ucred *cred, + struct thread *p, struct mbuf **mpp, struct mbuf **mpendp) +{ + struct mbuf *m; + struct iovec *iv; + int error = 0, len, tlen, ioflag = 0; + struct mbuf *m3; + struct uio io, *uiop = &io; + struct nfsheur *nh; + + /* + * Attempt to read from a DS file. A return of ENOENT implies + * there is no DS file to read. + */ + error = nfsrv_proxyds(NULL, vp, off, cnt, cred, p, NFSPROC_READDS, mpp, + NULL, mpendp, NULL, NULL, NULL, 0, NULL); + if (error != ENOENT) + return (error); + + len = NFSM_RNDUP(cnt); + uiop->uio_iovcnt = nfsrv_createiovec(len, &m3, &m, &iv); + uiop->uio_iov = iv; uiop->uio_offset = off; uiop->uio_resid = len; uiop->uio_rw = UIO_READ; @@ -855,7 +874,7 @@ nfsvno_read(struct vnode *vp, off_t off, int cnt, stru /* XXX KDM make this more systematic? */ nfsstatsv1.srvbytes[NFSV4OP_READ] += uiop->uio_resid; error = VOP_READ(vp, uiop, IO_NODELOCKED | ioflag, cred); - free(iv2, M_TEMP); + free(iv, M_TEMP); if (error) { m_freem(m3); *mpp = NULL; @@ -871,7 +890,7 @@ nfsvno_read(struct vnode *vp, off_t off, int cnt, stru } else if (len != tlen || tlen != cnt) nfsrv_adj(m3, len - tlen, tlen - cnt); *mpp = m3; - *mpendp = m2; + *mpendp = m; out: NFSEXITCODE(error); @@ -5874,38 +5893,25 @@ int nfsvno_getxattr(struct vnode *vp, char *name, struct ucred *cred, struct thread *p, struct mbuf **mpp, struct mbuf **mpendp, int *lenp) { - struct iovec *ivp, *ivp2; + struct iovec *iv; struct uio io, *uiop = &io; - struct mbuf *mp, *mp2 = NULL, *mp3 = NULL; - int alen, error, i, len, maxiov, tlen; + struct mbuf *m, *m2; + int alen, error, len, tlen; size_t siz; - maxiov = (NFS_SRVMAXIO + MCLBYTES - 1) / MCLBYTES; - if (maxiov < 1) - maxiov = 1; - ivp2 = ivp = mallocarray(maxiov, sizeof(*ivp), M_TEMP, M_WAITOK); - len = 0; - i = 0; - while (i < maxiov) { - NFSMGET(mp); - MCLGET(mp, M_WAITOK); - mp->m_len = M_SIZE(mp); - if (len == 0) { - mp3 = mp2 = mp; - } else { - mp2->m_next = mp; - mp2 = mp; - } - len += mp->m_len; - ivp->iov_base = mtod(mp, caddr_t); - ivp->iov_len = mp->m_len; - i++; - ivp++; - } - uiop->uio_iov = ivp2; - uiop->uio_iovcnt = i; + /* First, find out the size of the extended attribute. */ + error = VOP_GETEXTATTR(vp, EXTATTR_NAMESPACE_USER, name, NULL, + &siz, cred, p); + if (error != 0) + return (NFSERR_NOXATTR); + if (siz > 1000000) + return (NFSERR_XATTR2BIG); + len = siz; + tlen = NFSM_RNDUP(len); + uiop->uio_iovcnt = nfsrv_createiovec(tlen, &m, &m2, &iv); + uiop->uio_iov = iv; uiop->uio_offset = 0; - uiop->uio_resid = len; + uiop->uio_resid = tlen; uiop->uio_rw = UIO_READ; uiop->uio_segflg = UIO_SYSSPACE; uiop->uio_td = p; @@ -5921,28 +5927,23 @@ nfsvno_getxattr(struct vnode *vp, char *name, struct u if (error != 0) goto out; if (uiop->uio_resid > 0) { - alen = len; - len -= uiop->uio_resid; + alen = tlen; + len = tlen - uiop->uio_resid; tlen = NFSM_RNDUP(len); - nfsrv_adj(mp3, alen - tlen, tlen - len); - } else { - error = VOP_GETEXTATTR(vp, EXTATTR_NAMESPACE_USER, name, NULL, - &siz, cred, p); - if (error == 0 && len < siz) - error = NFSERR_XATTR2BIG; + if (alen != tlen) + printf("nfsvno_getxattr: weird size read\n"); + nfsrv_adj(m, alen - tlen, tlen - len); } - if (error == 0) { - *lenp = len; - *mpp = mp3; - *mpendp = mp; - } + *lenp = len; + *mpp = m; + *mpendp = m2; out: if (error != 0) { - m_freem(mp3); + m_freem(m); *lenp = 0; } - free(ivp2, M_TEMP); + free(iv, M_TEMP); NFSEXITCODE(error); return (error); } From owner-svn-src-projects@freebsd.org Mon Sep 2 02:51:52 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 7C107CE9DE for ; Mon, 2 Sep 2019 02:51:52 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46MF3X2cpSz48m7; Mon, 2 Sep 2019 02:51:52 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3CC14B695; Mon, 2 Sep 2019 02:51:52 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x822pq45078533; Mon, 2 Sep 2019 02:51:52 GMT (envelope-from rmacklem@FreeBSD.org) Received: (from rmacklem@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x822pqEm078532; Mon, 2 Sep 2019 02:51:52 GMT (envelope-from rmacklem@FreeBSD.org) Message-Id: <201909020251.x822pqEm078532@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: rmacklem set sender to rmacklem@FreeBSD.org using -f From: Rick Macklem Date: Mon, 2 Sep 2019 02:51:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351683 - projects/nfsv42/sys/fs/nfs X-SVN-Group: projects X-SVN-Commit-Author: rmacklem X-SVN-Commit-Paths: projects/nfsv42/sys/fs/nfs X-SVN-Commit-Revision: 351683 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Sep 2019 02:51:52 -0000 Author: rmacklem Date: Mon Sep 2 02:51:51 2019 New Revision: 351683 URL: https://svnweb.freebsd.org/changeset/base/351683 Log: Set the Get extended attribute big reply and Set extended attribute big request. This doesn't make much difference, but seems appropriate, since the size of an extended attribute can be fairly large. Modified: projects/nfsv42/sys/fs/nfs/nfs_commonsubs.c Modified: projects/nfsv42/sys/fs/nfs/nfs_commonsubs.c ============================================================================== --- projects/nfsv42/sys/fs/nfs/nfs_commonsubs.c Mon Sep 2 02:41:27 2019 (r351682) +++ projects/nfsv42/sys/fs/nfs/nfs_commonsubs.c Mon Sep 2 02:51:51 2019 (r351683) @@ -211,7 +211,7 @@ static struct nfsrv_lughash *nfsgroupnamehash; static int nfs_bigreply[NFSV42_NPROCS] = { 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0 }; + 1, 0 }; /* local functions */ static int nfsrv_skipace(struct nfsrv_descript *nd, int *acesizep); @@ -300,7 +300,7 @@ static struct { static int nfs_bigrequest[NFSV42_NPROCS] = { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; /* From owner-svn-src-projects@freebsd.org Mon Sep 2 17:30:00 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CB674E3A7C for ; Mon, 2 Sep 2019 17:30:00 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46McXm4w6yz43PJ; Mon, 2 Sep 2019 17:30:00 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8BCB21D7FE; Mon, 2 Sep 2019 17:30:00 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x82HU0sR007127; Mon, 2 Sep 2019 17:30:00 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x82HU08A007126; Mon, 2 Sep 2019 17:30:00 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201909021730.x82HU08A007126@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Mon, 2 Sep 2019 17:30:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351707 - projects/clang900-import X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: projects/clang900-import X-SVN-Commit-Revision: 351707 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Sep 2019 17:30:00 -0000 Author: dim Date: Mon Sep 2 17:30:00 2019 New Revision: 351707 URL: https://svnweb.freebsd.org/changeset/base/351707 Log: Always build lldb-tblgen, for now, and add a note. Modified: projects/clang900-import/Makefile.inc1 Modified: projects/clang900-import/Makefile.inc1 ============================================================================== --- projects/clang900-import/Makefile.inc1 Mon Sep 2 17:11:32 2019 (r351706) +++ projects/clang900-import/Makefile.inc1 Mon Sep 2 17:30:00 2019 (r351707) @@ -2181,14 +2181,13 @@ _localedef= usr.bin/localedef _clang_tblgen= \ lib/clang/libllvmminimal \ usr.bin/clang/llvm-tblgen \ - usr.bin/clang/clang-tblgen -.if ${MK_LLDB} != "no" -_clang_tblgen+= \ + usr.bin/clang/clang-tblgen \ usr.bin/clang/lldb-tblgen -.endif +# XXX: lldb-tblgen is not needed, if top-level MK_LLDB=no ${_bt}-usr.bin/clang/clang-tblgen: ${_bt}-lib/clang/libllvmminimal ${_bt}-usr.bin/clang/llvm-tblgen: ${_bt}-lib/clang/libllvmminimal +${_bt}-usr.bin/clang/lldb-tblgen: ${_bt}-lib/clang/libllvmminimal .endif # Default to building the GPL DTC, but build the BSDL one if users explicitly From owner-svn-src-projects@freebsd.org Mon Sep 2 17:33:03 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8227DE3C0F for ; Mon, 2 Sep 2019 17:33:03 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46MccH3H4Rz43sY; Mon, 2 Sep 2019 17:33:03 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3A49D1D9BF; Mon, 2 Sep 2019 17:33:03 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x82HX3ig012660; Mon, 2 Sep 2019 17:33:03 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x82HWvST012604; Mon, 2 Sep 2019 17:32:57 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201909021732.x82HWvST012604@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Mon, 2 Sep 2019 17:32:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351708 - in projects/clang900-import: contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/builtins contrib/compiler-rt/lib/interception contrib/compiler-rt/lib/msan contrib/compiler-r... X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang900-import: contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/builtins contrib/compiler-rt/lib/interception contrib/compiler-rt/lib/msan contrib/compiler-rt/lib/sanitizer_common co... X-SVN-Commit-Revision: 351708 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Sep 2019 17:33:03 -0000 Author: dim Date: Mon Sep 2 17:32:57 2019 New Revision: 351708 URL: https://svnweb.freebsd.org/changeset/base/351708 Log: Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb, and openmp release_90 branch r369369, and update version numbers. Modified: projects/clang900-import/contrib/compiler-rt/lib/asan/asan_posix.cc projects/clang900-import/contrib/compiler-rt/lib/builtins/cpu_model.c projects/clang900-import/contrib/compiler-rt/lib/interception/interception_linux.cc projects/clang900-import/contrib/compiler-rt/lib/msan/msan_linux.cc projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cc projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h projects/clang900-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc projects/clang900-import/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h projects/clang900-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h projects/clang900-import/contrib/llvm/include/llvm/CodeGen/TargetLowering.h projects/clang900-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LambdaResolver.h projects/clang900-import/contrib/llvm/include/llvm/MC/MCContext.h projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.def projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.h projects/clang900-import/contrib/llvm/include/llvm/Support/ARMTargetParser.h projects/clang900-import/contrib/llvm/include/llvm/Transforms/Utils/BypassSlowDivision.h projects/clang900-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp projects/clang900-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp projects/clang900-import/contrib/llvm/lib/CodeGen/LiveDebugValues.cpp projects/clang900-import/contrib/llvm/lib/CodeGen/MachineCSE.cpp projects/clang900-import/contrib/llvm/lib/CodeGen/MachineModuleInfo.cpp projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp projects/clang900-import/contrib/llvm/lib/MC/MCContext.cpp projects/clang900-import/contrib/llvm/lib/MC/MCParser/AsmParser.cpp projects/clang900-import/contrib/llvm/lib/Object/RelocationResolver.cpp projects/clang900-import/contrib/llvm/lib/Support/AArch64TargetParser.cpp projects/clang900-import/contrib/llvm/lib/Support/Unix/Path.inc projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64.td projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.td projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h projects/clang900-import/contrib/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp projects/clang900-import/contrib/llvm/lib/Target/AArch64/SVEInstrFormats.td projects/clang900-import/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp projects/clang900-import/contrib/llvm/lib/Target/ARM/ARMInstrThumb.td projects/clang900-import/contrib/llvm/lib/Target/AVR/AVRISelLowering.cpp projects/clang900-import/contrib/llvm/lib/Target/BPF/BPFAbstractMemberAccess.cpp projects/clang900-import/contrib/llvm/lib/Target/BPF/BTFDebug.cpp projects/clang900-import/contrib/llvm/lib/Target/BPF/BTFDebug.h projects/clang900-import/contrib/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.cpp projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.h projects/clang900-import/contrib/llvm/lib/Target/Sparc/SparcISelLowering.cpp projects/clang900-import/contrib/llvm/lib/Target/SystemZ/SystemZISelLowering.cpp projects/clang900-import/contrib/llvm/lib/Target/X86/X86.td projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/clang900-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp projects/clang900-import/contrib/llvm/lib/Transforms/Scalar/DivRemPairs.cpp projects/clang900-import/contrib/llvm/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp projects/clang900-import/contrib/llvm/tools/clang/include/clang/AST/ExprCXX.h projects/clang900-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/clang900-import/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h projects/clang900-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/clang900-import/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def projects/clang900-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h projects/clang900-import/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/AST/ExprCXX.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/AST/ItaniumCXXABI.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/AST/MicrosoftCXXABI.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/AArch64.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/OSTargets.h projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.h projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/SPIR.h projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/X86.h projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Version.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/DirectoryWatcher/linux/DirectoryWatcher-linux.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Headers/emmintrin.h projects/clang900-import/contrib/llvm/tools/clang/lib/Headers/opencl-c-base.h projects/clang900-import/contrib/llvm/tools/clang/lib/Headers/opencl-c.h projects/clang900-import/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/Sema.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaOpenMP.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaStmtAsm.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Checkers/IteratorChecker.cpp projects/clang900-import/contrib/llvm/tools/lld/COFF/Driver.cpp projects/clang900-import/contrib/llvm/tools/lld/COFF/Writer.cpp projects/clang900-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp projects/clang900-import/contrib/llvm/tools/lld/docs/ReleaseNotes.rst projects/clang900-import/contrib/llvm/tools/lldb/source/Core/IOHandler.cpp projects/clang900-import/lib/clang/include/clang/Config/config.h projects/clang900-import/lib/clang/include/lld/Common/Version.inc projects/clang900-import/lib/clang/include/llvm/Config/config.h projects/clang900-import/lib/clang/include/llvm/Config/llvm-config.h projects/clang900-import/lib/clang/include/llvm/Support/VCSRevision.h Directory Properties: projects/clang900-import/contrib/compiler-rt/ (props changed) projects/clang900-import/contrib/libc++/ (props changed) projects/clang900-import/contrib/libunwind/ (props changed) projects/clang900-import/contrib/llvm/ (props changed) projects/clang900-import/contrib/llvm/tools/clang/ (props changed) projects/clang900-import/contrib/llvm/tools/lld/ (props changed) projects/clang900-import/contrib/llvm/tools/lldb/ (props changed) projects/clang900-import/contrib/openmp/ (props changed) Modified: projects/clang900-import/contrib/compiler-rt/lib/asan/asan_posix.cc ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/asan/asan_posix.cc Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/compiler-rt/lib/asan/asan_posix.cc Mon Sep 2 17:32:57 2019 (r351708) @@ -39,8 +39,8 @@ void AsanOnDeadlySignal(int signo, void *siginfo, void // ---------------------- TSD ---------------- {{{1 -#if SANITIZER_NETBSD || SANITIZER_FREEBSD -// Thread Static Data cannot be used in early init on NetBSD and FreeBSD. +#if SANITIZER_NETBSD && !ASAN_DYNAMIC +// Thread Static Data cannot be used in early static ASan init on NetBSD. // Reuse the Asan TSD API for compatibility with existing code // with an alternative implementation. Modified: projects/clang900-import/contrib/compiler-rt/lib/builtins/cpu_model.c ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/builtins/cpu_model.c Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/compiler-rt/lib/builtins/cpu_model.c Mon Sep 2 17:32:57 2019 (r351708) @@ -543,7 +543,7 @@ static void getAvailableFeatures(unsigned ECX, unsigne setFeature(FEATURE_BMI); if (HasLeaf7 && ((EBX >> 5) & 1) && HasAVX) setFeature(FEATURE_AVX2); - if (HasLeaf7 && ((EBX >> 9) & 1)) + if (HasLeaf7 && ((EBX >> 8) & 1)) setFeature(FEATURE_BMI2); if (HasLeaf7 && ((EBX >> 16) & 1) && HasAVX512Save) setFeature(FEATURE_AVX512F); Modified: projects/clang900-import/contrib/compiler-rt/lib/interception/interception_linux.cc ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/interception/interception_linux.cc Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/compiler-rt/lib/interception/interception_linux.cc Mon Sep 2 17:32:57 2019 (r351708) @@ -33,7 +33,7 @@ static int StrCmp(const char *s1, const char *s2) { } #endif -static void *GetFuncAddr(const char *name, uptr wrapper_addr) { +static void *GetFuncAddr(const char *name) { #if SANITIZER_NETBSD // FIXME: Find a better way to handle renames if (StrCmp(name, "sigaction")) @@ -47,18 +47,13 @@ static void *GetFuncAddr(const char *name, uptr wrappe // want the address of the real definition, though, so look it up using // RTLD_DEFAULT. addr = dlsym(RTLD_DEFAULT, name); - - // In case `name' is not loaded, dlsym ends up finding the actual wrapper. - // We don't want to intercept the wrapper and have it point to itself. - if ((uptr)addr == wrapper_addr) - addr = nullptr; } return addr; } bool InterceptFunction(const char *name, uptr *ptr_to_real, uptr func, uptr wrapper) { - void *addr = GetFuncAddr(name, wrapper); + void *addr = GetFuncAddr(name); *ptr_to_real = (uptr)addr; return addr && (func == wrapper); } Modified: projects/clang900-import/contrib/compiler-rt/lib/msan/msan_linux.cc ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/msan/msan_linux.cc Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/compiler-rt/lib/msan/msan_linux.cc Mon Sep 2 17:32:57 2019 (r351708) @@ -174,8 +174,8 @@ void InstallAtExitHandler() { // ---------------------- TSD ---------------- {{{1 -#if SANITIZER_NETBSD || SANITIZER_FREEBSD -// Thread Static Data cannot be used in early init on NetBSD and FreeBSD. +#if SANITIZER_NETBSD +// Thread Static Data cannot be used in early init on NetBSD. // Reuse the MSan TSD API for compatibility with existing code // with an alternative implementation. Modified: projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc Mon Sep 2 17:32:57 2019 (r351708) @@ -24,7 +24,7 @@ struct ioctl_desc { const char *name; }; -const unsigned ioctl_table_max = 1200; +const unsigned ioctl_table_max = 1236; static ioctl_desc ioctl_table[ioctl_table_max]; static unsigned ioctl_table_size = 0; @@ -645,7 +645,7 @@ static void ioctl_table_fill() { _(SPKRTUNE, NONE, 0); _(SPKRGETVOL, WRITE, sizeof(unsigned int)); _(SPKRSETVOL, READ, sizeof(unsigned int)); -#if 0 /* WIP */ +#if defined(__x86_64__) /* Entries from file: dev/nvmm/nvmm_ioctl.h */ _(NVMM_IOC_CAPABILITY, WRITE, struct_nvmm_ioc_capability_sz); _(NVMM_IOC_MACHINE_CREATE, READWRITE, struct_nvmm_ioc_machine_create_sz); @@ -661,7 +661,11 @@ static void ioctl_table_fill() { _(NVMM_IOC_GPA_UNMAP, READ, struct_nvmm_ioc_gpa_unmap_sz); _(NVMM_IOC_HVA_MAP, READ, struct_nvmm_ioc_hva_map_sz); _(NVMM_IOC_HVA_UNMAP, READ, struct_nvmm_ioc_hva_unmap_sz); + _(NVMM_IOC_CTL, READ, struct_nvmm_ioc_ctl_sz); #endif + /* Entries from file: dev/spi/spi_io.h */ + _(SPI_IOCTL_CONFIGURE, READ, struct_spi_ioctl_configure_sz); + _(SPI_IOCTL_TRANSFER, READ, struct_spi_ioctl_transfer_sz); /* Entries from file: fs/autofs/autofs_ioctl.h */ _(AUTOFSREQUEST, WRITE, struct_autofs_daemon_request_sz); _(AUTOFSDONE, READ, struct_autofs_daemon_done_sz); @@ -895,6 +899,9 @@ static void ioctl_table_fill() { _(AUDIO_GETBUFINFO, WRITE, struct_audio_info_sz); _(AUDIO_SETCHAN, READ, sizeof(int)); _(AUDIO_GETCHAN, WRITE, sizeof(int)); + _(AUDIO_QUERYFORMAT, READWRITE, struct_audio_format_query_sz); + _(AUDIO_GETFORMAT, WRITE, struct_audio_info_sz); + _(AUDIO_SETFORMAT, READ, struct_audio_info_sz); _(AUDIO_MIXER_READ, READWRITE, struct_mixer_ctrl_sz); _(AUDIO_MIXER_WRITE, READWRITE, struct_mixer_ctrl_sz); _(AUDIO_MIXER_DEVINFO, READWRITE, struct_mixer_devinfo_sz); @@ -985,6 +992,7 @@ static void ioctl_table_fill() { _(DIOCMWEDGES, WRITE, sizeof(int)); _(DIOCGSECTORSIZE, WRITE, sizeof(unsigned int)); _(DIOCGMEDIASIZE, WRITE, sizeof(uptr)); + _(DIOCRMWEDGES, WRITE, sizeof(int)); /* Entries from file: sys/drvctlio.h */ _(DRVDETACHDEV, READ, struct_devdetachargs_sz); _(DRVRESCANBUS, READ, struct_devrescanargs_sz); @@ -1206,6 +1214,8 @@ static void ioctl_table_fill() { _(SIOCGETHERCAP, READWRITE, struct_eccapreq_sz); _(SIOCGIFINDEX, READWRITE, struct_ifreq_sz); _(SIOCSETHERCAP, READ, struct_eccapreq_sz); + _(SIOCSIFDESCR, READ, struct_ifreq_sz); + _(SIOCGIFDESCR, READWRITE, struct_ifreq_sz); _(SIOCGUMBINFO, READWRITE, struct_ifreq_sz); _(SIOCSUMBPARAM, READ, struct_ifreq_sz); _(SIOCGUMBPARAM, READWRITE, struct_ifreq_sz); @@ -1335,6 +1345,21 @@ static void ioctl_table_fill() { _(WDOGIOC_TICKLE, NONE, 0); _(WDOGIOC_GTICKLER, WRITE, sizeof(int)); _(WDOGIOC_GWDOGS, READWRITE, struct_wdog_conf_sz); + /* Entries from file: sys/kcov.h */ + _(KCOV_IOC_SETBUFSIZE, READ, sizeof(u64)); + _(KCOV_IOC_ENABLE, READ, sizeof(int)); + _(KCOV_IOC_DISABLE, NONE, 0); + /* Entries from file: sys/ipmi.h */ + _(IPMICTL_RECEIVE_MSG_TRUNC, READWRITE, struct_ipmi_recv_sz); + _(IPMICTL_RECEIVE_MSG, READWRITE, struct_ipmi_recv_sz); + _(IPMICTL_SEND_COMMAND, READ, struct_ipmi_req_sz); + _(IPMICTL_REGISTER_FOR_CMD, READ, struct_ipmi_cmdspec_sz); + _(IPMICTL_UNREGISTER_FOR_CMD, READ, struct_ipmi_cmdspec_sz); + _(IPMICTL_SET_GETS_EVENTS_CMD, READ, sizeof(int)); + _(IPMICTL_SET_MY_ADDRESS_CMD, READ, sizeof(unsigned int)); + _(IPMICTL_GET_MY_ADDRESS_CMD, WRITE, sizeof(unsigned int)); + _(IPMICTL_SET_MY_LUN_CMD, READ, sizeof(unsigned int)); + _(IPMICTL_GET_MY_LUN_CMD, WRITE, sizeof(unsigned int)); /* Entries from file: soundcard.h */ _(SNDCTL_DSP_RESET, NONE, 0); _(SNDCTL_DSP_SYNC, NONE, 0); Modified: projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc Mon Sep 2 17:32:57 2019 (r351708) @@ -779,7 +779,11 @@ int internal_sysctl(const int *name, unsigned int name #if SANITIZER_FREEBSD int internal_sysctlbyname(const char *sname, void *oldp, uptr *oldlenp, const void *newp, uptr newlen) { - return sysctlbyname(sname, oldp, (size_t *)oldlenp, newp, (size_t)newlen); + static decltype(sysctlbyname) *real = nullptr; + if (!real) + real = (decltype(sysctlbyname) *)dlsym(RTLD_NEXT, "sysctlbyname"); + CHECK(real); + return real(sname, oldp, (size_t *)oldlenp, newp, (size_t)newlen); } #endif #endif Modified: projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cc ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cc Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.cc Mon Sep 2 17:32:57 2019 (r351708) @@ -62,6 +62,8 @@ #include #include #include +#include +#include #include #include #include @@ -123,9 +125,6 @@ #include #include #include -#if 0 -#include -#endif #include #include #include @@ -168,6 +167,7 @@ #include #include #include +#include #include #include #include @@ -221,6 +221,10 @@ #include #include #include + +#if defined(__x86_64__) +#include +#endif // clang-format on // Include these after system headers to avoid name clashes and ambiguities. @@ -686,6 +690,26 @@ unsigned struct_usb_config_desc_sz = sizeof(usb_config unsigned struct_usb_ctl_report_desc_sz = sizeof(usb_ctl_report_desc); unsigned struct_usb_ctl_report_sz = sizeof(usb_ctl_report); unsigned struct_usb_ctl_request_sz = sizeof(usb_ctl_request); +#if defined(__x86_64__) +unsigned struct_nvmm_ioc_capability_sz = sizeof(nvmm_ioc_capability); +unsigned struct_nvmm_ioc_machine_create_sz = sizeof(nvmm_ioc_machine_create); +unsigned struct_nvmm_ioc_machine_destroy_sz = sizeof(nvmm_ioc_machine_destroy); +unsigned struct_nvmm_ioc_machine_configure_sz = + sizeof(nvmm_ioc_machine_configure); +unsigned struct_nvmm_ioc_vcpu_create_sz = sizeof(nvmm_ioc_vcpu_create); +unsigned struct_nvmm_ioc_vcpu_destroy_sz = sizeof(nvmm_ioc_vcpu_destroy); +unsigned struct_nvmm_ioc_vcpu_setstate_sz = sizeof(nvmm_ioc_vcpu_destroy); +unsigned struct_nvmm_ioc_vcpu_getstate_sz = sizeof(nvmm_ioc_vcpu_getstate); +unsigned struct_nvmm_ioc_vcpu_inject_sz = sizeof(nvmm_ioc_vcpu_inject); +unsigned struct_nvmm_ioc_vcpu_run_sz = sizeof(nvmm_ioc_vcpu_run); +unsigned struct_nvmm_ioc_gpa_map_sz = sizeof(nvmm_ioc_gpa_map); +unsigned struct_nvmm_ioc_gpa_unmap_sz = sizeof(nvmm_ioc_gpa_unmap); +unsigned struct_nvmm_ioc_hva_map_sz = sizeof(nvmm_ioc_hva_map); +unsigned struct_nvmm_ioc_hva_unmap_sz = sizeof(nvmm_ioc_hva_unmap); +unsigned struct_nvmm_ioc_ctl_sz = sizeof(nvmm_ioc_ctl); +#endif +unsigned struct_spi_ioctl_configure_sz = sizeof(spi_ioctl_configure); +unsigned struct_spi_ioctl_transfer_sz = sizeof(spi_ioctl_transfer); unsigned struct_autofs_daemon_request_sz = sizeof(autofs_daemon_request); unsigned struct_autofs_daemon_done_sz = sizeof(autofs_daemon_done); unsigned struct_sctp_connectx_addrs_sz = sizeof(sctp_connectx_addrs); @@ -728,6 +752,9 @@ unsigned struct_vnd_user_sz = sizeof(vnd_user); unsigned struct_vt_stat_sz = sizeof(vt_stat); unsigned struct_wdog_conf_sz = sizeof(wdog_conf); unsigned struct_wdog_mode_sz = sizeof(wdog_mode); +unsigned struct_ipmi_recv_sz = sizeof(ipmi_recv); +unsigned struct_ipmi_req_sz = sizeof(ipmi_req); +unsigned struct_ipmi_cmdspec_sz = sizeof(ipmi_cmdspec); unsigned struct_wfq_conf_sz = sizeof(wfq_conf); unsigned struct_wfq_getqid_sz = sizeof(wfq_getqid); unsigned struct_wfq_getstats_sz = sizeof(wfq_getstats); @@ -813,6 +840,7 @@ unsigned struct_iscsi_wait_event_parameters_sz = unsigned struct_isp_stats_sz = sizeof(isp_stats_t); unsigned struct_lsenable_sz = sizeof(struct lsenable); unsigned struct_lsdisable_sz = sizeof(struct lsdisable); +unsigned struct_audio_format_query_sz = sizeof(audio_format_query); unsigned struct_mixer_ctrl_sz = sizeof(struct mixer_ctrl); unsigned struct_mixer_devinfo_sz = sizeof(struct mixer_devinfo); unsigned struct_mpu_command_rec_sz = sizeof(mpu_command_rec); @@ -1423,7 +1451,7 @@ unsigned IOCTL_SPKRTONE = SPKRTONE; unsigned IOCTL_SPKRTUNE = SPKRTUNE; unsigned IOCTL_SPKRGETVOL = SPKRGETVOL; unsigned IOCTL_SPKRSETVOL = SPKRSETVOL; -#if 0 /* interfaces are WIP */ +#if defined(__x86_64__) unsigned IOCTL_NVMM_IOC_CAPABILITY = NVMM_IOC_CAPABILITY; unsigned IOCTL_NVMM_IOC_MACHINE_CREATE = NVMM_IOC_MACHINE_CREATE; unsigned IOCTL_NVMM_IOC_MACHINE_DESTROY = NVMM_IOC_MACHINE_DESTROY; @@ -1438,7 +1466,10 @@ unsigned IOCTL_NVMM_IOC_GPA_MAP = NVMM_IOC_GPA_MAP; unsigned IOCTL_NVMM_IOC_GPA_UNMAP = NVMM_IOC_GPA_UNMAP; unsigned IOCTL_NVMM_IOC_HVA_MAP = NVMM_IOC_HVA_MAP; unsigned IOCTL_NVMM_IOC_HVA_UNMAP = NVMM_IOC_HVA_UNMAP; +unsigned IOCTL_NVMM_IOC_CTL = NVMM_IOC_CTL; #endif +unsigned IOCTL_SPI_IOCTL_CONFIGURE = SPI_IOCTL_CONFIGURE; +unsigned IOCTL_SPI_IOCTL_TRANSFER = SPI_IOCTL_TRANSFER; unsigned IOCTL_AUTOFSREQUEST = AUTOFSREQUEST; unsigned IOCTL_AUTOFSDONE = AUTOFSDONE; unsigned IOCTL_BIOCGBLEN = BIOCGBLEN; @@ -1656,6 +1687,9 @@ unsigned IOCTL_AUDIO_GETPROPS = AUDIO_GETPROPS; unsigned IOCTL_AUDIO_GETBUFINFO = AUDIO_GETBUFINFO; unsigned IOCTL_AUDIO_SETCHAN = AUDIO_SETCHAN; unsigned IOCTL_AUDIO_GETCHAN = AUDIO_GETCHAN; +unsigned IOCTL_AUDIO_QUERYFORMAT = AUDIO_QUERYFORMAT; +unsigned IOCTL_AUDIO_GETFORMAT = AUDIO_GETFORMAT; +unsigned IOCTL_AUDIO_SETFORMAT = AUDIO_SETFORMAT; unsigned IOCTL_AUDIO_MIXER_READ = AUDIO_MIXER_READ; unsigned IOCTL_AUDIO_MIXER_WRITE = AUDIO_MIXER_WRITE; unsigned IOCTL_AUDIO_MIXER_DEVINFO = AUDIO_MIXER_DEVINFO; @@ -1741,6 +1775,7 @@ unsigned IOCTL_DIOCTUR = DIOCTUR; unsigned IOCTL_DIOCMWEDGES = DIOCMWEDGES; unsigned IOCTL_DIOCGSECTORSIZE = DIOCGSECTORSIZE; unsigned IOCTL_DIOCGMEDIASIZE = DIOCGMEDIASIZE; +unsigned IOCTL_DIOCRMWEDGES = DIOCRMWEDGES; unsigned IOCTL_DRVDETACHDEV = DRVDETACHDEV; unsigned IOCTL_DRVRESCANBUS = DRVRESCANBUS; unsigned IOCTL_DRVCTLCOMMAND = DRVCTLCOMMAND; @@ -1945,6 +1980,8 @@ unsigned IOCTL_SIOCSLINKSTR = SIOCSLINKSTR; unsigned IOCTL_SIOCGETHERCAP = SIOCGETHERCAP; unsigned IOCTL_SIOCGIFINDEX = SIOCGIFINDEX; unsigned IOCTL_SIOCSETHERCAP = SIOCSETHERCAP; +unsigned IOCTL_SIOCSIFDESCR = SIOCSIFDESCR; +unsigned IOCTL_SIOCGIFDESCR = SIOCGIFDESCR; unsigned IOCTL_SIOCGUMBINFO = SIOCGUMBINFO; unsigned IOCTL_SIOCSUMBPARAM = SIOCSUMBPARAM; unsigned IOCTL_SIOCGUMBPARAM = SIOCGUMBPARAM; @@ -2069,6 +2106,19 @@ unsigned IOCTL_WDOGIOC_WHICH = WDOGIOC_WHICH; unsigned IOCTL_WDOGIOC_TICKLE = WDOGIOC_TICKLE; unsigned IOCTL_WDOGIOC_GTICKLER = WDOGIOC_GTICKLER; unsigned IOCTL_WDOGIOC_GWDOGS = WDOGIOC_GWDOGS; +unsigned IOCTL_KCOV_IOC_SETBUFSIZE = KCOV_IOC_SETBUFSIZE; +unsigned IOCTL_KCOV_IOC_ENABLE = KCOV_IOC_ENABLE; +unsigned IOCTL_KCOV_IOC_DISABLE = KCOV_IOC_DISABLE; +unsigned IOCTL_IPMICTL_RECEIVE_MSG_TRUNC = IPMICTL_RECEIVE_MSG_TRUNC; +unsigned IOCTL_IPMICTL_RECEIVE_MSG = IPMICTL_RECEIVE_MSG; +unsigned IOCTL_IPMICTL_SEND_COMMAND = IPMICTL_SEND_COMMAND; +unsigned IOCTL_IPMICTL_REGISTER_FOR_CMD = IPMICTL_REGISTER_FOR_CMD; +unsigned IOCTL_IPMICTL_UNREGISTER_FOR_CMD = IPMICTL_UNREGISTER_FOR_CMD; +unsigned IOCTL_IPMICTL_SET_GETS_EVENTS_CMD = IPMICTL_SET_GETS_EVENTS_CMD; +unsigned IOCTL_IPMICTL_SET_MY_ADDRESS_CMD = IPMICTL_SET_MY_ADDRESS_CMD; +unsigned IOCTL_IPMICTL_GET_MY_ADDRESS_CMD = IPMICTL_GET_MY_ADDRESS_CMD; +unsigned IOCTL_IPMICTL_SET_MY_LUN_CMD = IPMICTL_SET_MY_LUN_CMD; +unsigned IOCTL_IPMICTL_GET_MY_LUN_CMD = IPMICTL_GET_MY_LUN_CMD; unsigned IOCTL_SNDCTL_DSP_RESET = SNDCTL_DSP_RESET; unsigned IOCTL_SNDCTL_DSP_SYNC = SNDCTL_DSP_SYNC; unsigned IOCTL_SNDCTL_DSP_SPEED = SNDCTL_DSP_SPEED; Modified: projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_netbsd.h Mon Sep 2 17:32:57 2019 (r351708) @@ -849,6 +849,25 @@ extern unsigned struct_usb_config_desc_sz; extern unsigned struct_usb_ctl_report_desc_sz; extern unsigned struct_usb_ctl_report_sz; extern unsigned struct_usb_ctl_request_sz; +#if defined(__x86_64__) +extern unsigned struct_nvmm_ioc_capability_sz; +extern unsigned struct_nvmm_ioc_machine_create_sz; +extern unsigned struct_nvmm_ioc_machine_destroy_sz; +extern unsigned struct_nvmm_ioc_machine_configure_sz; +extern unsigned struct_nvmm_ioc_vcpu_create_sz; +extern unsigned struct_nvmm_ioc_vcpu_destroy_sz; +extern unsigned struct_nvmm_ioc_vcpu_setstate_sz; +extern unsigned struct_nvmm_ioc_vcpu_getstate_sz; +extern unsigned struct_nvmm_ioc_vcpu_inject_sz; +extern unsigned struct_nvmm_ioc_vcpu_run_sz; +extern unsigned struct_nvmm_ioc_gpa_map_sz; +extern unsigned struct_nvmm_ioc_gpa_unmap_sz; +extern unsigned struct_nvmm_ioc_hva_map_sz; +extern unsigned struct_nvmm_ioc_hva_unmap_sz; +extern unsigned struct_nvmm_ioc_ctl_sz; +#endif +extern unsigned struct_spi_ioctl_configure_sz; +extern unsigned struct_spi_ioctl_transfer_sz; extern unsigned struct_autofs_daemon_request_sz; extern unsigned struct_autofs_daemon_done_sz; extern unsigned struct_sctp_connectx_addrs_sz; @@ -891,6 +910,9 @@ extern unsigned struct_vnd_user_sz; extern unsigned struct_vt_stat_sz; extern unsigned struct_wdog_conf_sz; extern unsigned struct_wdog_mode_sz; +extern unsigned struct_ipmi_recv_sz; +extern unsigned struct_ipmi_req_sz; +extern unsigned struct_ipmi_cmdspec_sz; extern unsigned struct_wfq_conf_sz; extern unsigned struct_wfq_getqid_sz; extern unsigned struct_wfq_getstats_sz; @@ -969,6 +991,7 @@ extern unsigned struct_iscsi_wait_event_parameters_sz; extern unsigned struct_isp_stats_sz; extern unsigned struct_lsenable_sz; extern unsigned struct_lsdisable_sz; +extern unsigned struct_audio_format_query_sz; extern unsigned struct_mixer_ctrl_sz; extern unsigned struct_mixer_devinfo_sz; extern unsigned struct_mpu_command_rec_sz; @@ -1575,7 +1598,7 @@ extern unsigned IOCTL_SPKRTONE; extern unsigned IOCTL_SPKRTUNE; extern unsigned IOCTL_SPKRGETVOL; extern unsigned IOCTL_SPKRSETVOL; -#if 0 /* interfaces are WIP */ +#if defined(__x86_64__) extern unsigned IOCTL_NVMM_IOC_CAPABILITY; extern unsigned IOCTL_NVMM_IOC_MACHINE_CREATE; extern unsigned IOCTL_NVMM_IOC_MACHINE_DESTROY; @@ -1590,6 +1613,7 @@ extern unsigned IOCTL_NVMM_IOC_GPA_MAP; extern unsigned IOCTL_NVMM_IOC_GPA_UNMAP; extern unsigned IOCTL_NVMM_IOC_HVA_MAP; extern unsigned IOCTL_NVMM_IOC_HVA_UNMAP; +extern unsigned IOCTL_NVMM_IOC_CTL; #endif extern unsigned IOCTL_AUTOFSREQUEST; extern unsigned IOCTL_AUTOFSDONE; @@ -1808,6 +1832,9 @@ extern unsigned IOCTL_AUDIO_GETPROPS; extern unsigned IOCTL_AUDIO_GETBUFINFO; extern unsigned IOCTL_AUDIO_SETCHAN; extern unsigned IOCTL_AUDIO_GETCHAN; +extern unsigned IOCTL_AUDIO_QUERYFORMAT; +extern unsigned IOCTL_AUDIO_GETFORMAT; +extern unsigned IOCTL_AUDIO_SETFORMAT; extern unsigned IOCTL_AUDIO_MIXER_READ; extern unsigned IOCTL_AUDIO_MIXER_WRITE; extern unsigned IOCTL_AUDIO_MIXER_DEVINFO; @@ -1893,6 +1920,7 @@ extern unsigned IOCTL_DIOCTUR; extern unsigned IOCTL_DIOCMWEDGES; extern unsigned IOCTL_DIOCGSECTORSIZE; extern unsigned IOCTL_DIOCGMEDIASIZE; +extern unsigned IOCTL_DIOCRMWEDGES; extern unsigned IOCTL_DRVDETACHDEV; extern unsigned IOCTL_DRVRESCANBUS; extern unsigned IOCTL_DRVCTLCOMMAND; @@ -1994,6 +2022,8 @@ extern unsigned IOCTL_SEQUENCER_TMR_TEMPO; extern unsigned IOCTL_SEQUENCER_TMR_SOURCE; extern unsigned IOCTL_SEQUENCER_TMR_METRONOME; extern unsigned IOCTL_SEQUENCER_TMR_SELECT; +extern unsigned IOCTL_SPI_IOCTL_CONFIGURE; +extern unsigned IOCTL_SPI_IOCTL_TRANSFER; extern unsigned IOCTL_MTIOCTOP; extern unsigned IOCTL_MTIOCGET; extern unsigned IOCTL_MTIOCIEOT; @@ -2097,6 +2127,8 @@ extern unsigned IOCTL_SIOCSLINKSTR; extern unsigned IOCTL_SIOCGETHERCAP; extern unsigned IOCTL_SIOCGIFINDEX; extern unsigned IOCTL_SIOCSETHERCAP; +extern unsigned IOCTL_SIOCSIFDESCR; +extern unsigned IOCTL_SIOCGIFDESCR; extern unsigned IOCTL_SIOCGUMBINFO; extern unsigned IOCTL_SIOCSUMBPARAM; extern unsigned IOCTL_SIOCGUMBPARAM; @@ -2221,6 +2253,19 @@ extern unsigned IOCTL_WDOGIOC_WHICH; extern unsigned IOCTL_WDOGIOC_TICKLE; extern unsigned IOCTL_WDOGIOC_GTICKLER; extern unsigned IOCTL_WDOGIOC_GWDOGS; +extern unsigned IOCTL_KCOV_IOC_SETBUFSIZE; +extern unsigned IOCTL_KCOV_IOC_ENABLE; +extern unsigned IOCTL_KCOV_IOC_DISABLE; +extern unsigned IOCTL_IPMICTL_RECEIVE_MSG_TRUNC; +extern unsigned IOCTL_IPMICTL_RECEIVE_MSG; +extern unsigned IOCTL_IPMICTL_SEND_COMMAND; +extern unsigned IOCTL_IPMICTL_REGISTER_FOR_CMD; +extern unsigned IOCTL_IPMICTL_UNREGISTER_FOR_CMD; +extern unsigned IOCTL_IPMICTL_SET_GETS_EVENTS_CMD; +extern unsigned IOCTL_IPMICTL_SET_MY_ADDRESS_CMD; +extern unsigned IOCTL_IPMICTL_GET_MY_ADDRESS_CMD; +extern unsigned IOCTL_IPMICTL_SET_MY_LUN_CMD; +extern unsigned IOCTL_IPMICTL_GET_MY_LUN_CMD; extern unsigned IOCTL_SNDCTL_DSP_RESET; extern unsigned IOCTL_SNDCTL_DSP_SYNC; extern unsigned IOCTL_SNDCTL_DSP_SPEED; Modified: projects/clang900-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/compiler-rt/lib/tsan/rtl/tsan_rtl.cc Mon Sep 2 17:32:57 2019 (r351708) @@ -149,6 +149,7 @@ static void BackgroundThread(void *arg) { // We don't use ScopedIgnoreInterceptors, because we want ignores to be // enabled even when the thread function exits (e.g. during pthread thread // shutdown code). + cur_thread_init(); cur_thread()->ignore_interceptors++; const u64 kMs2Ns = 1000 * 1000; Modified: projects/clang900-import/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h Mon Sep 2 17:32:57 2019 (r351708) @@ -949,7 +949,7 @@ template class AAResultBase { /// A pointer to the AAResults object that this AAResult is /// aggregated within. May be null if not aggregated. - AAResults *AAR; + AAResults *AAR = nullptr; /// Helper to dispatch calls back through the derived type. DerivedT &derived() { return static_cast(*this); } Modified: projects/clang900-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h Mon Sep 2 17:32:57 2019 (r351708) @@ -269,8 +269,14 @@ class SelectionDAG { using CallSiteInfo = MachineFunction::CallSiteInfo; using CallSiteInfoImpl = MachineFunction::CallSiteInfoImpl; - DenseMap SDCallSiteInfo; + struct CallSiteDbgInfo { + CallSiteInfo CSInfo; + MDNode *HeapAllocSite = nullptr; + }; + + DenseMap SDCallSiteDbgInfo; + uint16_t NextPersistentId = 0; public: @@ -1664,14 +1670,26 @@ class SelectionDAG { } void addCallSiteInfo(const SDNode *CallNode, CallSiteInfoImpl &&CallInfo) { - SDCallSiteInfo[CallNode] = std::move(CallInfo); + SDCallSiteDbgInfo[CallNode].CSInfo = std::move(CallInfo); } CallSiteInfo getSDCallSiteInfo(const SDNode *CallNode) { - auto I = SDCallSiteInfo.find(CallNode); - if (I != SDCallSiteInfo.end()) - return std::move(I->second); + auto I = SDCallSiteDbgInfo.find(CallNode); + if (I != SDCallSiteDbgInfo.end()) + return std::move(I->second).CSInfo; return CallSiteInfo(); + } + + void addHeapAllocSite(const SDNode *Node, MDNode *MD) { + SDCallSiteDbgInfo[Node].HeapAllocSite = MD; + } + + /// Return the HeapAllocSite type associated with the SDNode, if it exists. + MDNode *getHeapAllocSite(const SDNode *Node) { + auto It = SDCallSiteDbgInfo.find(Node); + if (It == SDCallSiteDbgInfo.end()) + return nullptr; + return It->second.HeapAllocSite; } private: Modified: projects/clang900-import/contrib/llvm/include/llvm/CodeGen/TargetLowering.h ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/CodeGen/TargetLowering.h Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/include/llvm/CodeGen/TargetLowering.h Mon Sep 2 17:32:57 2019 (r351708) @@ -3665,6 +3665,7 @@ class TargetLowering : public TargetLoweringBase { (pu C_Register, // Constraint represents specific register(s). C_RegisterClass, // Constraint represents any of register(s) in class. C_Memory, // Memory constraint. + C_Immediate, // Requires an immediate. C_Other, // Something else. C_Unknown // Unsupported constraint. }; Modified: projects/clang900-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LambdaResolver.h ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LambdaResolver.h Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/include/llvm/ExecutionEngine/Orc/LambdaResolver.h Mon Sep 2 17:32:57 2019 (r351708) @@ -16,6 +16,7 @@ #include "llvm/ADT/STLExtras.h" #include "llvm/ExecutionEngine/JITSymbol.h" +#include "llvm/ExecutionEngine/OrcV1Deprecation.h" #include namespace llvm { Modified: projects/clang900-import/contrib/llvm/include/llvm/MC/MCContext.h ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/MC/MCContext.h Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/include/llvm/MC/MCContext.h Mon Sep 2 17:32:57 2019 (r351708) @@ -112,6 +112,9 @@ namespace llvm { /// number of section symbols with the same name). StringMap UsedNames; + /// Keeps track of labels that are used in inline assembly. + SymbolTable InlineAsmUsedLabelNames; + /// The next ID to dole out to an unnamed assembler temporary symbol with /// a given prefix. StringMap NextID; @@ -376,6 +379,16 @@ namespace llvm { /// still want any modifications to the table itself to use the MCContext /// APIs. const SymbolTable &getSymbols() const { return Symbols; } + + /// isInlineAsmLabel - Return true if the name is a label referenced in + /// inline assembly. + MCSymbol *getInlineAsmLabel(StringRef Name) const { + return InlineAsmUsedLabelNames.lookup(Name); + } + + /// registerInlineAsmLabel - Records that the name is a label referenced in + /// inline assembly. + void registerInlineAsmLabel(MCSymbol *Sym); /// @} Modified: projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.def ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.def Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.def Mon Sep 2 17:32:57 2019 (r351708) @@ -50,35 +50,35 @@ AARCH64_ARCH("armv8.5-a", ARMV8_5A, "8.5-A", "v8.5a", #define AARCH64_ARCH_EXT_NAME(NAME, ID, FEATURE, NEGFEATURE) #endif // FIXME: This would be nicer were it tablegen -AARCH64_ARCH_EXT_NAME("invalid", AArch64::AEK_INVALID, nullptr, nullptr) -AARCH64_ARCH_EXT_NAME("none", AArch64::AEK_NONE, nullptr, nullptr) -AARCH64_ARCH_EXT_NAME("crc", AArch64::AEK_CRC, "+crc", "-crc") -AARCH64_ARCH_EXT_NAME("lse", AArch64::AEK_LSE, "+lse", "-lse") -AARCH64_ARCH_EXT_NAME("rdm", AArch64::AEK_RDM, "+rdm", "-rdm") -AARCH64_ARCH_EXT_NAME("crypto", AArch64::AEK_CRYPTO, "+crypto","-crypto") -AARCH64_ARCH_EXT_NAME("sm4", AArch64::AEK_SM4, "+sm4", "-sm4") -AARCH64_ARCH_EXT_NAME("sha3", AArch64::AEK_SHA3, "+sha3", "-sha3") -AARCH64_ARCH_EXT_NAME("sha2", AArch64::AEK_SHA2, "+sha2", "-sha2") -AARCH64_ARCH_EXT_NAME("aes", AArch64::AEK_AES, "+aes", "-aes") -AARCH64_ARCH_EXT_NAME("dotprod", AArch64::AEK_DOTPROD, "+dotprod","-dotprod") -AARCH64_ARCH_EXT_NAME("fp", AArch64::AEK_FP, "+fp-armv8", "-fp-armv8") -AARCH64_ARCH_EXT_NAME("simd", AArch64::AEK_SIMD, "+neon", "-neon") -AARCH64_ARCH_EXT_NAME("fp16", AArch64::AEK_FP16, "+fullfp16", "-fullfp16") -AARCH64_ARCH_EXT_NAME("fp16fml", AArch64::AEK_FP16FML, "+fp16fml", "-fp16fml") -AARCH64_ARCH_EXT_NAME("profile", AArch64::AEK_PROFILE, "+spe", "-spe") -AARCH64_ARCH_EXT_NAME("ras", AArch64::AEK_RAS, "+ras", "-ras") -AARCH64_ARCH_EXT_NAME("sve", AArch64::AEK_SVE, "+sve", "-sve") -AARCH64_ARCH_EXT_NAME("sve2", AArch64::AEK_SVE2, "+sve2", "-sve2") -AARCH64_ARCH_EXT_NAME("sve2-aes", AArch64::AEK_SVE2AES, "+sve2-aes", "-sve2-aes") -AARCH64_ARCH_EXT_NAME("sve2-sm4", AArch64::AEK_SVE2SM4, "+sve2-sm4", "-sve2-sm4") -AARCH64_ARCH_EXT_NAME("sve2-sha3", AArch64::AEK_SVE2SHA3, "+sve2-sha3", "-sve2-sha3") -AARCH64_ARCH_EXT_NAME("bitperm", AArch64::AEK_BITPERM, "+bitperm", "-bitperm") -AARCH64_ARCH_EXT_NAME("rcpc", AArch64::AEK_RCPC, "+rcpc", "-rcpc") -AARCH64_ARCH_EXT_NAME("rng", AArch64::AEK_RAND, "+rand", "-rand") -AARCH64_ARCH_EXT_NAME("memtag", AArch64::AEK_MTE, "+mte", "-mte") -AARCH64_ARCH_EXT_NAME("ssbs", AArch64::AEK_SSBS, "+ssbs", "-ssbs") -AARCH64_ARCH_EXT_NAME("sb", AArch64::AEK_SB, "+sb", "-sb") -AARCH64_ARCH_EXT_NAME("predres", AArch64::AEK_PREDRES, "+predres", "-predres") +AARCH64_ARCH_EXT_NAME("invalid", AArch64::AEK_INVALID, nullptr, nullptr) +AARCH64_ARCH_EXT_NAME("none", AArch64::AEK_NONE, nullptr, nullptr) +AARCH64_ARCH_EXT_NAME("crc", AArch64::AEK_CRC, "+crc", "-crc") +AARCH64_ARCH_EXT_NAME("lse", AArch64::AEK_LSE, "+lse", "-lse") +AARCH64_ARCH_EXT_NAME("rdm", AArch64::AEK_RDM, "+rdm", "-rdm") +AARCH64_ARCH_EXT_NAME("crypto", AArch64::AEK_CRYPTO, "+crypto","-crypto") +AARCH64_ARCH_EXT_NAME("sm4", AArch64::AEK_SM4, "+sm4", "-sm4") +AARCH64_ARCH_EXT_NAME("sha3", AArch64::AEK_SHA3, "+sha3", "-sha3") +AARCH64_ARCH_EXT_NAME("sha2", AArch64::AEK_SHA2, "+sha2", "-sha2") +AARCH64_ARCH_EXT_NAME("aes", AArch64::AEK_AES, "+aes", "-aes") +AARCH64_ARCH_EXT_NAME("dotprod", AArch64::AEK_DOTPROD, "+dotprod","-dotprod") +AARCH64_ARCH_EXT_NAME("fp", AArch64::AEK_FP, "+fp-armv8", "-fp-armv8") +AARCH64_ARCH_EXT_NAME("simd", AArch64::AEK_SIMD, "+neon", "-neon") +AARCH64_ARCH_EXT_NAME("fp16", AArch64::AEK_FP16, "+fullfp16", "-fullfp16") +AARCH64_ARCH_EXT_NAME("fp16fml", AArch64::AEK_FP16FML, "+fp16fml", "-fp16fml") +AARCH64_ARCH_EXT_NAME("profile", AArch64::AEK_PROFILE, "+spe", "-spe") +AARCH64_ARCH_EXT_NAME("ras", AArch64::AEK_RAS, "+ras", "-ras") +AARCH64_ARCH_EXT_NAME("sve", AArch64::AEK_SVE, "+sve", "-sve") +AARCH64_ARCH_EXT_NAME("sve2", AArch64::AEK_SVE2, "+sve2", "-sve2") +AARCH64_ARCH_EXT_NAME("sve2-aes", AArch64::AEK_SVE2AES, "+sve2-aes", "-sve2-aes") +AARCH64_ARCH_EXT_NAME("sve2-sm4", AArch64::AEK_SVE2SM4, "+sve2-sm4", "-sve2-sm4") +AARCH64_ARCH_EXT_NAME("sve2-sha3", AArch64::AEK_SVE2SHA3, "+sve2-sha3", "-sve2-sha3") +AARCH64_ARCH_EXT_NAME("sve2-bitperm", AArch64::AEK_SVE2BITPERM, "+sve2-bitperm", "-sve2-bitperm") +AARCH64_ARCH_EXT_NAME("rcpc", AArch64::AEK_RCPC, "+rcpc", "-rcpc") +AARCH64_ARCH_EXT_NAME("rng", AArch64::AEK_RAND, "+rand", "-rand") +AARCH64_ARCH_EXT_NAME("memtag", AArch64::AEK_MTE, "+mte", "-mte") +AARCH64_ARCH_EXT_NAME("ssbs", AArch64::AEK_SSBS, "+ssbs", "-ssbs") +AARCH64_ARCH_EXT_NAME("sb", AArch64::AEK_SB, "+sb", "-sb") +AARCH64_ARCH_EXT_NAME("predres", AArch64::AEK_PREDRES, "+predres", "-predres") #undef AARCH64_ARCH_EXT_NAME #ifndef AARCH64_CPU_NAME Modified: projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.h ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.h Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/include/llvm/Support/AArch64TargetParser.h Mon Sep 2 17:32:57 2019 (r351708) @@ -53,7 +53,7 @@ enum ArchExtKind : unsigned { AEK_SVE2AES = 1 << 24, AEK_SVE2SM4 = 1 << 25, AEK_SVE2SHA3 = 1 << 26, - AEK_BITPERM = 1 << 27, + AEK_SVE2BITPERM = 1 << 27, }; enum class ArchKind { Modified: projects/clang900-import/contrib/llvm/include/llvm/Support/ARMTargetParser.h ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/Support/ARMTargetParser.h Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/include/llvm/Support/ARMTargetParser.h Mon Sep 2 17:32:57 2019 (r351708) @@ -39,19 +39,13 @@ enum ArchExtKind : unsigned { AEK_DSP = 1 << 10, AEK_FP16 = 1 << 11, AEK_RAS = 1 << 12, - AEK_SVE = 1 << 13, - AEK_DOTPROD = 1 << 14, - AEK_SHA2 = 1 << 15, - AEK_AES = 1 << 16, - AEK_FP16FML = 1 << 17, - AEK_SB = 1 << 18, - AEK_SVE2 = 1 << 19, - AEK_SVE2AES = 1 << 20, - AEK_SVE2SM4 = 1 << 21, - AEK_SVE2SHA3 = 1 << 22, - AEK_BITPERM = 1 << 23, - AEK_FP_DP = 1 << 24, - AEK_LOB = 1 << 25, + AEK_DOTPROD = 1 << 13, + AEK_SHA2 = 1 << 14, + AEK_AES = 1 << 15, + AEK_FP16FML = 1 << 16, + AEK_SB = 1 << 17, + AEK_FP_DP = 1 << 18, + AEK_LOB = 1 << 19, // Unsupported extensions. AEK_OS = 0x8000000, AEK_IWMMXT = 0x10000000, Modified: projects/clang900-import/contrib/llvm/include/llvm/Transforms/Utils/BypassSlowDivision.h ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/Transforms/Utils/BypassSlowDivision.h Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/include/llvm/Transforms/Utils/BypassSlowDivision.h Mon Sep 2 17:32:57 2019 (r351708) @@ -19,6 +19,7 @@ #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseMapInfo.h" +#include "llvm/IR/ValueHandle.h" #include namespace llvm { @@ -28,8 +29,8 @@ class Value; struct DivRemMapKey { bool SignedOp; - Value *Dividend; - Value *Divisor; + AssertingVH Dividend; + AssertingVH Divisor; DivRemMapKey(bool InSignedOp, Value *InDividend, Value *InDivisor) : SignedOp(InSignedOp), Dividend(InDividend), Divisor(InDivisor) {} @@ -50,8 +51,10 @@ template <> struct DenseMapInfo { } static unsigned getHashValue(const DivRemMapKey &Val) { - return (unsigned)(reinterpret_cast(Val.Dividend) ^ - reinterpret_cast(Val.Divisor)) ^ + return (unsigned)(reinterpret_cast( + static_cast(Val.Dividend)) ^ + reinterpret_cast( + static_cast(Val.Divisor))) ^ (unsigned)Val.SignedOp; } }; Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp Mon Sep 2 17:32:57 2019 (r351708) @@ -432,6 +432,7 @@ static void EmitGCCInlineAsmStr(const char *AsmStr, co const BlockAddress *BA = MI->getOperand(OpNo).getBlockAddress(); MCSymbol *Sym = AP->GetBlockAddressSymbol(BA); Sym->print(OS, AP->MAI); + MMI->getContext().registerInlineAsmLabel(Sym); } else if (MI->getOperand(OpNo).isMBB()) { const MCSymbol *Sym = MI->getOperand(OpNo).getMBB()->getSymbol(); Sym->print(OS, AP->MAI); Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp Mon Sep 2 17:32:57 2019 (r351708) @@ -1682,10 +1682,11 @@ static bool OptimizeExtractBits(BinaryOperator *ShiftI TheUse = InsertedShift; } - // If we removed all uses, nuke the shift. + // If we removed all uses, or there are none, nuke the shift. if (ShiftI->use_empty()) { salvageDebugInfo(*ShiftI); ShiftI->eraseFromParent(); + MadeChange = true; } return MadeChange; Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/LiveDebugValues.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/CodeGen/LiveDebugValues.cpp Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/lib/CodeGen/LiveDebugValues.cpp Mon Sep 2 17:32:57 2019 (r351708) @@ -691,9 +691,17 @@ void LiveDebugValues::insertTransferDebugPair( "No register supplied when handling a restore of a debug value"); MachineFunction *MF = MI.getMF(); DIBuilder DIB(*const_cast(MF->getFunction()).getParent()); + + const DIExpression *NewExpr; + if (auto Fragment = DebugInstr->getDebugExpression()->getFragmentInfo()) + NewExpr = *DIExpression::createFragmentExpression(DIB.createExpression(), + Fragment->OffsetInBits, Fragment->SizeInBits); + else + NewExpr = DIB.createExpression(); + NewDebugInstr = BuildMI(*MF, DebugInstr->getDebugLoc(), DebugInstr->getDesc(), false, - NewReg, DebugInstr->getDebugVariable(), DIB.createExpression()); + NewReg, DebugInstr->getDebugVariable(), NewExpr); VarLoc VL(*NewDebugInstr, LS); ProcessVarLoc(VL, NewDebugInstr); LLVM_DEBUG(dbgs() << "Creating DBG_VALUE inst for register restore: "; @@ -848,9 +856,14 @@ void LiveDebugValues::transferSpillOrRestoreInst(Machi << "\n"); } // Check if the register or spill location is the location of a debug value. + // FIXME: Don't create a spill transfer if there is a complex expression, + // because we currently cannot recover the original expression on restore. for (unsigned ID : OpenRanges.getVarLocs()) { + const MachineInstr *DebugInstr = &VarLocIDs[ID].MI; + if (TKind == TransferKind::TransferSpill && - VarLocIDs[ID].isDescribedByReg() == Reg) { + VarLocIDs[ID].isDescribedByReg() == Reg && + !DebugInstr->getDebugExpression()->isComplex()) { LLVM_DEBUG(dbgs() << "Spilling Register " << printReg(Reg, TRI) << '(' << VarLocIDs[ID].Var.getVar()->getName() << ")\n"); } else if (TKind == TransferKind::TransferRestore && Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/MachineCSE.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/CodeGen/MachineCSE.cpp Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/lib/CodeGen/MachineCSE.cpp Mon Sep 2 17:32:57 2019 (r351708) @@ -21,6 +21,7 @@ #include "llvm/Analysis/AliasAnalysis.h" #include "llvm/Analysis/CFG.h" #include "llvm/CodeGen/MachineBasicBlock.h" +#include "llvm/CodeGen/MachineBlockFrequencyInfo.h" #include "llvm/CodeGen/MachineDominators.h" #include "llvm/CodeGen/MachineFunction.h" #include "llvm/CodeGen/MachineFunctionPass.h" @@ -66,6 +67,7 @@ namespace { AliasAnalysis *AA; MachineDominatorTree *DT; MachineRegisterInfo *MRI; + MachineBlockFrequencyInfo *MBFI; public: static char ID; // Pass identification @@ -83,6 +85,8 @@ namespace { AU.addPreservedID(MachineLoopInfoID); AU.addRequired(); AU.addPreserved(); + AU.addRequired(); + AU.addPreserved(); } void releaseMemory() override { @@ -133,6 +137,11 @@ namespace { bool isPRECandidate(MachineInstr *MI); bool ProcessBlockPRE(MachineDominatorTree *MDT, MachineBasicBlock *MBB); bool PerformSimplePRE(MachineDominatorTree *DT); + /// Heuristics to see if it's beneficial to move common computations of MBB + /// and MBB1 to CandidateBB. + bool isBeneficalToHoistInto(MachineBasicBlock *CandidateBB, + MachineBasicBlock *MBB, + MachineBasicBlock *MBB1); }; } // end anonymous namespace @@ -802,6 +811,9 @@ bool MachineCSE::ProcessBlockPRE(MachineDominatorTree if (!CMBB->isLegalToHoistInto()) continue; + if (!isBeneficalToHoistInto(CMBB, MBB, MBB1)) + continue; + // Two instrs are partial redundant if their basic blocks are reachable // from one to another but one doesn't dominate another. if (CMBB != MBB1) { @@ -854,6 +866,18 @@ bool MachineCSE::PerformSimplePRE(MachineDominatorTree return Changed; } +bool MachineCSE::isBeneficalToHoistInto(MachineBasicBlock *CandidateBB, + MachineBasicBlock *MBB, + MachineBasicBlock *MBB1) { + if (CandidateBB->getParent()->getFunction().hasMinSize()) + return true; + assert(DT->dominates(CandidateBB, MBB) && "CandidateBB should dominate MBB"); + assert(DT->dominates(CandidateBB, MBB1) && + "CandidateBB should dominate MBB1"); + return MBFI->getBlockFreq(CandidateBB) <= + MBFI->getBlockFreq(MBB) + MBFI->getBlockFreq(MBB1); +} + bool MachineCSE::runOnMachineFunction(MachineFunction &MF) { if (skipFunction(MF.getFunction())) return false; @@ -863,6 +887,7 @@ bool MachineCSE::runOnMachineFunction(MachineFunction MRI = &MF.getRegInfo(); AA = &getAnalysis().getAAResults(); DT = &getAnalysis(); + MBFI = &getAnalysis(); LookAheadLimit = TII->getMachineCSELookAheadLimit(); bool ChangedPRE, ChangedCSE; ChangedPRE = PerformSimplePRE(DT); Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/MachineModuleInfo.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/CodeGen/MachineModuleInfo.cpp Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/lib/CodeGen/MachineModuleInfo.cpp Mon Sep 2 17:32:57 2019 (r351708) @@ -121,7 +121,7 @@ ArrayRef MMIAddrLabelMap::getAddrLabelSymb BBCallbacks.back().setMap(this); Entry.Index = BBCallbacks.size() - 1; Entry.Fn = BB->getParent(); - Entry.Symbols.push_back(Context.createTempSymbol()); + Entry.Symbols.push_back(Context.createTempSymbol(!BB->hasAddressTaken())); return Entry.Symbols; } Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp Mon Sep 2 17:32:57 2019 (r351708) @@ -909,6 +909,12 @@ EmitSchedule(MachineBasicBlock::iterator &InsertPos) { // Remember the source order of the inserted instruction. if (HasDbg) ProcessSourceNode(N, DAG, Emitter, VRBaseMap, Orders, Seen, NewInsn); + + if (MDNode *MD = DAG->getHeapAllocSite(N)) { + if (NewInsn && NewInsn->isCall()) + MF.addCodeViewHeapAllocSite(NewInsn, MD); + } + GluedNodes.pop_back(); } auto NewInsn = @@ -917,6 +923,10 @@ EmitSchedule(MachineBasicBlock::iterator &InsertPos) { if (HasDbg) ProcessSourceNode(SU->getNode(), DAG, Emitter, VRBaseMap, Orders, Seen, NewInsn); + if (MDNode *MD = DAG->getHeapAllocSite(SU->getNode())) { + if (NewInsn && NewInsn->isCall()) + MF.addCodeViewHeapAllocSite(NewInsn, MD); + } } // Insert all the dbg_values which have not already been inserted in source Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Mon Sep 2 17:32:57 2019 (r351708) @@ -1084,6 +1084,7 @@ void SelectionDAG::clear() { ExternalSymbols.clear(); TargetExternalSymbols.clear(); MCSymbols.clear(); + SDCallSiteDbgInfo.clear(); std::fill(CondCodeNodes.begin(), CondCodeNodes.end(), static_cast(nullptr)); std::fill(ValueTypeNodes.begin(), ValueTypeNodes.end(), Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp Mon Sep 2 17:32:57 2019 (r351708) @@ -8021,6 +8021,14 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall // Compute the constraint code and ConstraintType to use. TLI.ComputeConstraintToUse(T, SDValue()); + if (T.ConstraintType == TargetLowering::C_Immediate && + OpInfo.CallOperand && !isa(OpInfo.CallOperand)) + // We've delayed emitting a diagnostic like the "n" constraint because + // inlining could cause an integer showing up. + return emitInlineAsmError( + CS, "constraint '" + Twine(T.ConstraintCode) + "' expects an " + "integer constant expression"); + ExtraInfo.update(T); } @@ -8105,7 +8113,8 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall switch (OpInfo.Type) { case InlineAsm::isOutput: if (OpInfo.ConstraintType == TargetLowering::C_Memory || - (OpInfo.ConstraintType == TargetLowering::C_Other && + ((OpInfo.ConstraintType == TargetLowering::C_Immediate || + OpInfo.ConstraintType == TargetLowering::C_Other) && OpInfo.isIndirect)) { unsigned ConstraintID = TLI.getInlineAsmMemConstraint(OpInfo.ConstraintCode); @@ -8119,13 +8128,14 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall MVT::i32)); AsmNodeOperands.push_back(OpInfo.CallOperand); break; - } else if ((OpInfo.ConstraintType == TargetLowering::C_Other && + } else if (((OpInfo.ConstraintType == TargetLowering::C_Immediate || + OpInfo.ConstraintType == TargetLowering::C_Other) && !OpInfo.isIndirect) || OpInfo.ConstraintType == TargetLowering::C_Register || OpInfo.ConstraintType == TargetLowering::C_RegisterClass) { // Otherwise, this outputs to a register (directly for C_Register / - // C_RegisterClass, and a target-defined fashion for C_Other). Find a - // register that we can use. + // C_RegisterClass, and a target-defined fashion for + // C_Immediate/C_Other). Find a register that we can use. if (OpInfo.AssignedRegs.Regs.empty()) { emitInlineAsmError( CS, "couldn't allocate output register for constraint '" + @@ -8205,15 +8215,24 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall } // Treat indirect 'X' constraint as memory. - if (OpInfo.ConstraintType == TargetLowering::C_Other && + if ((OpInfo.ConstraintType == TargetLowering::C_Immediate || + OpInfo.ConstraintType == TargetLowering::C_Other) && OpInfo.isIndirect) OpInfo.ConstraintType = TargetLowering::C_Memory; - if (OpInfo.ConstraintType == TargetLowering::C_Other) { + if (OpInfo.ConstraintType == TargetLowering::C_Immediate || + OpInfo.ConstraintType == TargetLowering::C_Other) { std::vector Ops; TLI.LowerAsmOperandForConstraint(InOperandVal, OpInfo.ConstraintCode, Ops, DAG); if (Ops.empty()) { + if (OpInfo.ConstraintType == TargetLowering::C_Immediate) + if (isa(InOperandVal)) { + emitInlineAsmError(CS, "value out of range for constraint '" + + Twine(OpInfo.ConstraintCode) + "'"); + return; + } + emitInlineAsmError(CS, "invalid operand for inline asm constraint '" + Twine(OpInfo.ConstraintCode) + "'"); return; @@ -8250,7 +8269,8 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall } assert((OpInfo.ConstraintType == TargetLowering::C_RegisterClass || - OpInfo.ConstraintType == TargetLowering::C_Register) && + OpInfo.ConstraintType == TargetLowering::C_Register || + OpInfo.ConstraintType == TargetLowering::C_Immediate) && "Unknown constraint type!"); // TODO: Support this. @@ -8356,6 +8376,7 @@ void SelectionDAGBuilder::visitInlineAsm(ImmutableCall Val = OpInfo.AssignedRegs.getCopyFromRegs( DAG, FuncInfo, getCurSDLoc(), Chain, &Flag, CS.getInstruction()); break; + case TargetLowering::C_Immediate: case TargetLowering::C_Other: Val = TLI.LowerAsmOutputForConstraint(Chain, Flag, getCurSDLoc(), OpInfo, DAG); Modified: projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp Mon Sep 2 17:30:00 2019 (r351707) +++ projects/clang900-import/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp Mon Sep 2 17:32:57 2019 (r351708) @@ -3567,15 +3567,17 @@ TargetLowering::getConstraintType(StringRef Constraint if (S == 1) { switch (Constraint[0]) { default: break; - case 'r': return C_RegisterClass; + case 'r': + return C_RegisterClass; case 'm': // memory case 'o': // offsetable case 'V': // not offsetable return C_Memory; - case 'i': // Simple Integer or Relocatable Constant case 'n': // Simple Integer case 'E': // Floating Point Constant case 'F': // Floating Point Constant + return C_Immediate; + case 'i': // Simple Integer or Relocatable Constant case 's': // Relocatable Constant case 'p': // Address. case 'X': // Allow ANY value. @@ -3950,6 +3952,7 @@ TargetLowering::ParseConstraints(const DataLayout &DL, /// Return an integer indicating how general CT is. static unsigned getConstraintGenerality(TargetLowering::ConstraintType CT) { switch (CT) { + case TargetLowering::C_Immediate: case TargetLowering::C_Other: case TargetLowering::C_Unknown: return 0; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Mon Sep 2 17:55:49 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 61A4BE4783 for ; Mon, 2 Sep 2019 17:55:49 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46Md6Y2jXSz46mg; Mon, 2 Sep 2019 17:55:49 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 40CD81DD7E; Mon, 2 Sep 2019 17:55:49 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x82Htnef026090; Mon, 2 Sep 2019 17:55:49 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x82HteWI026045; Mon, 2 Sep 2019 17:55:40 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201909021755.x82HteWI026045@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Mon, 2 Sep 2019 17:55:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351722 - in projects/clang900-import: contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/msan contrib/compiler-rt/lib/sanitizer_common contrib/libc++/include contrib/llvm/include/llv... X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang900-import: contrib/compiler-rt/lib/asan contrib/compiler-rt/lib/msan contrib/compiler-rt/lib/sanitizer_common contrib/libc++/include contrib/llvm/include/llvm/Analysis contrib/llvm/i... X-SVN-Commit-Revision: 351722 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Sep 2019 17:55:49 -0000 Author: dim Date: Mon Sep 2 17:55:39 2019 New Revision: 351722 URL: https://svnweb.freebsd.org/changeset/base/351722 Log: Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb, and openmp release_90 branch r370514, and update version numbers. Modified: projects/clang900-import/contrib/compiler-rt/lib/asan/asan_rtl.cc projects/clang900-import/contrib/compiler-rt/lib/msan/msan.cc projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc projects/clang900-import/contrib/libc++/include/__locale projects/clang900-import/contrib/libc++/include/__threading_support projects/clang900-import/contrib/llvm/include/llvm/Analysis/InstructionSimplify.h projects/clang900-import/contrib/llvm/include/llvm/IR/InlineAsm.h projects/clang900-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp projects/clang900-import/contrib/llvm/lib/IR/Core.cpp projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.h projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp projects/clang900-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.cpp projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.h projects/clang900-import/contrib/llvm/lib/Target/TargetMachine.cpp projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelLowering.h projects/clang900-import/contrib/llvm/lib/Target/X86/X86Subtarget.cpp projects/clang900-import/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp projects/clang900-import/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.h projects/clang900-import/contrib/llvm/tools/clang/lib/Headers/opencl-c.h projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp projects/clang900-import/contrib/llvm/tools/lld/CMakeLists.txt projects/clang900-import/contrib/llvm/tools/lld/COFF/Config.h projects/clang900-import/contrib/llvm/tools/lld/COFF/Driver.cpp projects/clang900-import/contrib/llvm/tools/lld/COFF/Driver.h projects/clang900-import/contrib/llvm/tools/lld/COFF/InputFiles.cpp projects/clang900-import/contrib/llvm/tools/lld/COFF/InputFiles.h projects/clang900-import/contrib/llvm/tools/lld/COFF/SymbolTable.cpp projects/clang900-import/contrib/llvm/tools/lld/COFF/SymbolTable.h projects/clang900-import/contrib/llvm/tools/lld/COFF/Symbols.cpp projects/clang900-import/contrib/llvm/tools/lld/COFF/Symbols.h projects/clang900-import/contrib/llvm/tools/lld/COFF/Writer.cpp projects/clang900-import/contrib/llvm/tools/lld/ELF/Arch/PPC.cpp projects/clang900-import/contrib/llvm/tools/lld/ELF/Arch/PPC64.cpp projects/clang900-import/contrib/llvm/tools/lld/ELF/InputFiles.cpp projects/clang900-import/contrib/llvm/tools/lld/ELF/Symbols.cpp projects/clang900-import/contrib/llvm/tools/lld/ELF/Symbols.h projects/clang900-import/contrib/llvm/tools/lld/docs/ReleaseNotes.rst projects/clang900-import/lib/clang/include/lld/Common/Version.inc projects/clang900-import/lib/clang/include/llvm/Support/VCSRevision.h Directory Properties: projects/clang900-import/contrib/compiler-rt/ (props changed) projects/clang900-import/contrib/libc++/ (props changed) projects/clang900-import/contrib/libunwind/ (props changed) projects/clang900-import/contrib/llvm/ (props changed) projects/clang900-import/contrib/llvm/tools/clang/ (props changed) projects/clang900-import/contrib/llvm/tools/lld/ (props changed) projects/clang900-import/contrib/llvm/tools/lldb/ (props changed) projects/clang900-import/contrib/openmp/ (props changed) Modified: projects/clang900-import/contrib/compiler-rt/lib/asan/asan_rtl.cc ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/asan/asan_rtl.cc Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/compiler-rt/lib/asan/asan_rtl.cc Mon Sep 2 17:55:39 2019 (r351722) @@ -402,7 +402,6 @@ static void AsanInitInternal() { asan_init_is_running = true; CacheBinaryName(); - CheckASLR(); // Initialize flags. This must be done early, because most of the // initialization steps look at flags(). @@ -450,6 +449,7 @@ static void AsanInitInternal() { SetLowLevelAllocateCallback(OnLowLevelAllocate); InitializeAsanInterceptors(); + CheckASLR(); // Enable system log ("adb logcat") on Android. // Doing this before interceptors are initialized crashes in: Modified: projects/clang900-import/contrib/compiler-rt/lib/msan/msan.cc ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/msan/msan.cc Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/compiler-rt/lib/msan/msan.cc Mon Sep 2 17:55:39 2019 (r351722) @@ -403,7 +403,6 @@ void __msan_init() { AvoidCVE_2016_2143(); CacheBinaryName(); - CheckASLR(); InitializeFlags(); // Install tool-specific callbacks in sanitizer_common. @@ -412,6 +411,7 @@ void __msan_init() { __sanitizer_set_report_path(common_flags()->log_path); InitializeInterceptors(); + CheckASLR(); InitTlsSize(); InstallDeadlySignalHandlers(MsanOnDeadlySignal); InstallAtExitHandler(); // Needs __cxa_atexit interceptor. Modified: projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc ============================================================================== --- projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc Mon Sep 2 17:55:39 2019 (r351722) @@ -2011,6 +2011,35 @@ void CheckASLR() { CHECK_NE(personality(old_personality | ADDR_NO_RANDOMIZE), -1); ReExec(); } +#elif SANITIZER_FREEBSD + int aslr_pie; + uptr len = sizeof(aslr_pie); +#if SANITIZER_WORDSIZE == 64 + if (UNLIKELY(internal_sysctlbyname("kern.elf64.aslr.pie_enable", + &aslr_pie, &len, NULL, 0) == -1)) { + // We're making things less 'dramatic' here since + // the OID is not necessarily guaranteed to be here + // just yet regarding FreeBSD release + return; + } + + if (aslr_pie > 0) { + Printf("This sanitizer is not compatible with enabled ASLR " + "and binaries compiled with PIE\n"); + Die(); + } +#endif + // there might be 32 bits compat for 64 bits + if (UNLIKELY(internal_sysctlbyname("kern.elf32.aslr.pie_enable", + &aslr_pie, &len, NULL, 0) == -1)) { + return; + } + + if (aslr_pie > 0) { + Printf("This sanitizer is not compatible with enabled ASLR " + "and binaries compiled with PIE\n"); + Die(); + } #else // Do nothing #endif Modified: projects/clang900-import/contrib/libc++/include/__locale ============================================================================== --- projects/clang900-import/contrib/libc++/include/__locale Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/libc++/include/__locale Mon Sep 2 17:55:39 2019 (r351722) @@ -409,7 +409,7 @@ class _LIBCPP_TYPE_VIS ctype_base (public) static const mask xdigit = _ISxdigit; static const mask blank = _ISblank; #if defined(__mips__) - static const mask __regex_word = static_cast(_ISbit(15)); + static const mask __regex_word = static_cast(_ISbit(15)); #else static const mask __regex_word = 0x80; #endif Modified: projects/clang900-import/contrib/libc++/include/__threading_support ============================================================================== --- projects/clang900-import/contrib/libc++/include/__threading_support Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/libc++/include/__threading_support Mon Sep 2 17:55:39 2019 (r351722) @@ -23,16 +23,11 @@ # include <__external_threading> #elif !defined(_LIBCPP_HAS_NO_THREADS) -typedef ::timespec __libcpp_timespec_t; - #if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) # include # include #endif -_LIBCPP_PUSH_MACROS -#include <__undef_macros> - #if defined(_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) || \ defined(_LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL) || \ defined(_LIBCPP_HAS_THREAD_API_WIN32) @@ -47,8 +42,16 @@ _LIBCPP_PUSH_MACROS #define _LIBCPP_NO_THREAD_SAFETY_ANALYSIS #endif +typedef ::timespec __libcpp_timespec_t; +#endif // !defined(_LIBCPP_HAS_NO_THREADS) + +_LIBCPP_PUSH_MACROS +#include <__undef_macros> + _LIBCPP_BEGIN_NAMESPACE_STD +#if !defined(_LIBCPP_HAS_NO_THREADS) + #if defined(_LIBCPP_HAS_THREAD_API_PTHREAD) // Mutex typedef pthread_mutex_t __libcpp_mutex_t; @@ -76,7 +79,7 @@ typedef pthread_t __libcpp_thread_t; typedef pthread_key_t __libcpp_tls_key; #define _LIBCPP_TLS_DESTRUCTOR_CC -#else +#elif !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) // Mutex typedef void* __libcpp_mutex_t; #define _LIBCPP_MUTEX_INITIALIZER 0 @@ -109,8 +112,9 @@ typedef void* __libcpp_thread_t; typedef long __libcpp_tls_key; #define _LIBCPP_TLS_DESTRUCTOR_CC __stdcall -#endif +#endif // !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) +#if !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) // Mutex _LIBCPP_THREAD_ABI_VISIBILITY int __libcpp_recursive_mutex_init(__libcpp_recursive_mutex_t *__m); @@ -205,6 +209,8 @@ void *__libcpp_tls_get(__libcpp_tls_key __key); _LIBCPP_THREAD_ABI_VISIBILITY int __libcpp_tls_set(__libcpp_tls_key __key, void *__p); +#endif // !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) + #if (!defined(_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL) || \ defined(_LIBCPP_BUILDING_THREAD_LIBRARY_EXTERNAL)) && \ defined(_LIBCPP_HAS_THREAD_API_PTHREAD) @@ -475,10 +481,10 @@ get_id() _NOEXCEPT } // this_thread +#endif // !_LIBCPP_HAS_NO_THREADS + _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS - -#endif // !_LIBCPP_HAS_NO_THREADS #endif // _LIBCPP_THREADING_SUPPORT Modified: projects/clang900-import/contrib/llvm/include/llvm/Analysis/InstructionSimplify.h ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/Analysis/InstructionSimplify.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/include/llvm/Analysis/InstructionSimplify.h Mon Sep 2 17:55:39 2019 (r351722) @@ -31,6 +31,7 @@ #ifndef LLVM_ANALYSIS_INSTRUCTIONSIMPLIFY_H #define LLVM_ANALYSIS_INSTRUCTIONSIMPLIFY_H +#include "llvm/ADT/SetVector.h" #include "llvm/IR/Instruction.h" #include "llvm/IR/Operator.h" #include "llvm/IR/User.h" @@ -263,12 +264,14 @@ Value *SimplifyInstruction(Instruction *I, const Simpl /// This first performs a normal RAUW of I with SimpleV. It then recursively /// attempts to simplify those users updated by the operation. The 'I' /// instruction must not be equal to the simplified value 'SimpleV'. +/// If UnsimplifiedUsers is provided, instructions that could not be simplified +/// are added to it. /// /// The function returns true if any simplifications were performed. -bool replaceAndRecursivelySimplify(Instruction *I, Value *SimpleV, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr); +bool replaceAndRecursivelySimplify( + Instruction *I, Value *SimpleV, const TargetLibraryInfo *TLI = nullptr, + const DominatorTree *DT = nullptr, AssumptionCache *AC = nullptr, + SmallSetVector *UnsimplifiedUsers = nullptr); /// Recursively attempt to simplify an instruction. /// Modified: projects/clang900-import/contrib/llvm/include/llvm/IR/InlineAsm.h ============================================================================== --- projects/clang900-import/contrib/llvm/include/llvm/IR/InlineAsm.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/include/llvm/IR/InlineAsm.h Mon Sep 2 17:55:39 2019 (r351722) @@ -244,6 +244,7 @@ class InlineAsm final : public Value { (public) Constraint_m, Constraint_o, Constraint_v, + Constraint_A, Constraint_Q, Constraint_R, Constraint_S, Modified: projects/clang900-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -5221,14 +5221,16 @@ Value *llvm::SimplifyInstruction(Instruction *I, const /// If we have a pre-simplified value in 'SimpleV', that is forcibly used to /// replace the instruction 'I'. Otherwise, we simply add 'I' to the list of /// instructions to process and attempt to simplify it using -/// InstructionSimplify. +/// InstructionSimplify. Recursively visited users which could not be +/// simplified themselves are to the optional UnsimplifiedUsers set for +/// further processing by the caller. /// /// This routine returns 'true' only when *it* simplifies something. The passed /// in simplified value does not count toward this. -static bool replaceAndRecursivelySimplifyImpl(Instruction *I, Value *SimpleV, - const TargetLibraryInfo *TLI, - const DominatorTree *DT, - AssumptionCache *AC) { +static bool replaceAndRecursivelySimplifyImpl( + Instruction *I, Value *SimpleV, const TargetLibraryInfo *TLI, + const DominatorTree *DT, AssumptionCache *AC, + SmallSetVector *UnsimplifiedUsers = nullptr) { bool Simplified = false; SmallSetVector Worklist; const DataLayout &DL = I->getModule()->getDataLayout(); @@ -5258,8 +5260,11 @@ static bool replaceAndRecursivelySimplifyImpl(Instruct // See if this instruction simplifies. SimpleV = SimplifyInstruction(I, {DL, TLI, DT, AC}); - if (!SimpleV) + if (!SimpleV) { + if (UnsimplifiedUsers) + UnsimplifiedUsers->insert(I); continue; + } Simplified = true; @@ -5285,16 +5290,17 @@ bool llvm::recursivelySimplifyInstruction(Instruction const TargetLibraryInfo *TLI, const DominatorTree *DT, AssumptionCache *AC) { - return replaceAndRecursivelySimplifyImpl(I, nullptr, TLI, DT, AC); + return replaceAndRecursivelySimplifyImpl(I, nullptr, TLI, DT, AC, nullptr); } -bool llvm::replaceAndRecursivelySimplify(Instruction *I, Value *SimpleV, - const TargetLibraryInfo *TLI, - const DominatorTree *DT, - AssumptionCache *AC) { +bool llvm::replaceAndRecursivelySimplify( + Instruction *I, Value *SimpleV, const TargetLibraryInfo *TLI, + const DominatorTree *DT, AssumptionCache *AC, + SmallSetVector *UnsimplifiedUsers) { assert(I != SimpleV && "replaceAndRecursivelySimplify(X,X) is not valid!"); assert(SimpleV && "Must provide a simplified value."); - return replaceAndRecursivelySimplifyImpl(I, SimpleV, TLI, DT, AC); + return replaceAndRecursivelySimplifyImpl(I, SimpleV, TLI, DT, AC, + UnsimplifiedUsers); } namespace llvm { Modified: projects/clang900-import/contrib/llvm/lib/IR/Core.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/IR/Core.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/IR/Core.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -140,7 +140,16 @@ unsigned LLVMGetLastEnumAttributeKind(void) { LLVMAttributeRef LLVMCreateEnumAttribute(LLVMContextRef C, unsigned KindID, uint64_t Val) { - return wrap(Attribute::get(*unwrap(C), (Attribute::AttrKind)KindID, Val)); + auto &Ctx = *unwrap(C); + auto AttrKind = (Attribute::AttrKind)KindID; + + if (AttrKind == Attribute::AttrKind::ByVal) { + // After r362128, byval attributes need to have a type attribute. Provide a + // NULL one until a proper API is added for this. + return wrap(Attribute::getWithByValType(Ctx, NULL)); + } else { + return wrap(Attribute::get(Ctx, AttrKind, Val)); + } } unsigned LLVMGetEnumAttributeKind(LLVMAttributeRef A) { Modified: projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -10579,7 +10579,7 @@ static SDValue performPostLD1Combine(SDNode *N, // are predecessors to each other or the Vector. SmallPtrSet Visited; SmallVector Worklist; - Visited.insert(N); + Visited.insert(Addr.getNode()); Worklist.push_back(User); Worklist.push_back(LD); Worklist.push_back(Vector.getNode()); @@ -11993,6 +11993,14 @@ bool AArch64TargetLowering::isMaskAndCmp0FoldingBenefi if (!Mask) return false; return Mask->getValue().isPowerOf2(); +} + +bool AArch64TargetLowering::shouldExpandShift(SelectionDAG &DAG, + SDNode *N) const { + if (DAG.getMachineFunction().getFunction().hasMinSize() && + !Subtarget->isTargetWindows()) + return false; + return true; } void AArch64TargetLowering::initializeSplitCSR(MachineBasicBlock *Entry) const { Modified: projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.h ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.h Mon Sep 2 17:55:39 2019 (r351722) @@ -480,11 +480,7 @@ class AArch64TargetLowering : public TargetLowering { return VT.getSizeInBits() >= 64; // vector 'bic' } - bool shouldExpandShift(SelectionDAG &DAG, SDNode *N) const override { - if (DAG.getMachineFunction().getFunction().hasMinSize()) - return false; - return true; - } + bool shouldExpandShift(SelectionDAG &DAG, SDNode *N) const override; bool shouldTransformSignedTruncationCheck(EVT XVT, unsigned KeptBits) const override { Modified: projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/AArch64/AArch64InstrInfo.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -32,6 +32,7 @@ #include "llvm/CodeGen/TargetSubtargetInfo.h" #include "llvm/IR/DebugLoc.h" #include "llvm/IR/GlobalValue.h" +#include "llvm/MC/MCAsmInfo.h" #include "llvm/MC/MCInst.h" #include "llvm/MC/MCInstrDesc.h" #include "llvm/Support/Casting.h" @@ -1926,6 +1927,17 @@ bool AArch64InstrInfo::isCandidateToMergeOrPair(const // Check if this load/store has a hint to avoid pair formation. // MachineMemOperands hints are set by the AArch64StorePairSuppress pass. if (isLdStPairSuppressed(MI)) + return false; + + // Do not pair any callee-save store/reload instructions in the + // prologue/epilogue if the CFI information encoded the operations as separate + // instructions, as that will cause the size of the actual prologue to mismatch + // with the prologue size recorded in the Windows CFI. + const MCAsmInfo *MAI = MI.getMF()->getTarget().getMCAsmInfo(); + bool NeedsWinCFI = MAI->usesWindowsCFI() && + MI.getMF()->getFunction().needsUnwindTableEntry(); + if (NeedsWinCFI && (MI.getFlag(MachineInstr::FrameSetup) || + MI.getFlag(MachineInstr::FrameDestroy))) return false; // On some CPUs quad load/store pairs are slower than two single load/stores. Modified: projects/clang900-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -3625,8 +3625,25 @@ void MipsAsmParser::expandMemInst(MCInst &Inst, SMLoc TOut.emitRRR(isGP64bit() ? Mips::DADDu : Mips::ADDu, TmpReg, TmpReg, BaseReg, IDLoc, STI); TOut.emitRRI(Inst.getOpcode(), DstReg, TmpReg, LoOffset, IDLoc, STI); + return; + } + + assert(OffsetOp.isExpr() && "expected expression operand kind"); + if (inPicMode()) { + // FIXME: + // a) Fix lw/sw $reg, symbol($reg) instruction expanding. + // b) If expression includes offset (sym + number), do not + // encode the offset into a relocation. Take it in account + // in the last load/store instruction. + // c) Check that immediates of R_MIPS_GOT16/R_MIPS_LO16 relocations + // do not exceed 16-bit. + // d) Use R_MIPS_GOT_PAGE/R_MIPS_GOT_OFST relocations instead + // of R_MIPS_GOT_DISP in appropriate cases to reduce number + // of GOT entries. + expandLoadAddress(TmpReg, Mips::NoRegister, OffsetOp, !ABI.ArePtrs64bit(), + IDLoc, Out, STI); + TOut.emitRRI(Inst.getOpcode(), DstReg, TmpReg, 0, IDLoc, STI); } else { - assert(OffsetOp.isExpr() && "expected expression operand kind"); const MCExpr *ExprOffset = OffsetOp.getExpr(); MCOperand LoOperand = MCOperand::createExpr( MipsMCExpr::create(MipsMCExpr::MEK_LO, ExprOffset, getContext())); Modified: projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -179,6 +179,9 @@ bool RISCVDAGToDAGISel::SelectInlineAsmMemoryOperand( // operand and need no special handling. OutOps.push_back(Op); return false; + case InlineAsm::Constraint_A: + OutOps.push_back(Op); + return false; default: break; } Modified: projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -2413,6 +2413,8 @@ RISCVTargetLowering::getConstraintType(StringRef Const case 'J': case 'K': return C_Immediate; + case 'A': + return C_Memory; } } return TargetLowering::getConstraintType(Constraint); @@ -2440,6 +2442,21 @@ RISCVTargetLowering::getRegForInlineAsmConstraint(cons } return TargetLowering::getRegForInlineAsmConstraint(TRI, Constraint, VT); +} + +unsigned +RISCVTargetLowering::getInlineAsmMemConstraint(StringRef ConstraintCode) const { + // Currently only support length 1 constraints. + if (ConstraintCode.size() == 1) { + switch (ConstraintCode[0]) { + case 'A': + return InlineAsm::Constraint_A; + default: + break; + } + } + + return TargetLowering::getInlineAsmMemConstraint(ConstraintCode); } void RISCVTargetLowering::LowerAsmOperandForConstraint( Modified: projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.h ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.h Mon Sep 2 17:55:39 2019 (r351722) @@ -93,6 +93,9 @@ class RISCVTargetLowering : public TargetLowering { (p const char *getTargetNodeName(unsigned Opcode) const override; ConstraintType getConstraintType(StringRef Constraint) const override; + + unsigned getInlineAsmMemConstraint(StringRef ConstraintCode) const override; + std::pair getRegForInlineAsmConstraint(const TargetRegisterInfo *TRI, StringRef Constraint, MVT VT) const override; Modified: projects/clang900-import/contrib/llvm/lib/Target/TargetMachine.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/TargetMachine.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/TargetMachine.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -140,8 +140,8 @@ bool TargetMachine::shouldAssumeDSOLocal(const Module // don't assume the variables to be DSO local unless we actually know // that for sure. This only has to be done for variables; for functions // the linker can insert thunks for calling functions from another DLL. - if (TT.isWindowsGNUEnvironment() && GV && GV->isDeclarationForLinker() && - isa(GV)) + if (TT.isWindowsGNUEnvironment() && TT.isOSBinFormatCOFF() && GV && + GV->isDeclarationForLinker() && isa(GV)) return false; // On COFF, don't mark 'extern_weak' symbols as DSO local. If these symbols @@ -154,7 +154,9 @@ bool TargetMachine::shouldAssumeDSOLocal(const Module // Make an exception for windows OS in the triple: Some firmware builds use // *-win32-macho triples. This (accidentally?) produced windows relocations // without GOT tables in older clang versions; Keep this behaviour. - if (TT.isOSBinFormatCOFF() || (TT.isOSWindows() && TT.isOSBinFormatMachO())) + // Some JIT users use *-win32-elf triples; these shouldn't use GOT tables + // either. + if (TT.isOSBinFormatCOFF() || TT.isOSWindows()) return true; // Most PIC code sequences that assume that a symbol is local cannot Modified: projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -5059,6 +5059,14 @@ bool X86TargetLowering::shouldFoldMaskToVariableShiftP return true; } +bool X86TargetLowering::shouldExpandShift(SelectionDAG &DAG, + SDNode *N) const { + if (DAG.getMachineFunction().getFunction().hasMinSize() && + !Subtarget.isOSWindows()) + return false; + return true; +} + bool X86TargetLowering::shouldSplatInsEltVarIndex(EVT VT) const { // Any legal vector type can be splatted more efficiently than // loading/spilling from memory. @@ -44096,7 +44104,8 @@ static SDValue combineScalarToVector(SDNode *N, Select // Simplify PMULDQ and PMULUDQ operations. static SDValue combinePMULDQ(SDNode *N, SelectionDAG &DAG, - TargetLowering::DAGCombinerInfo &DCI) { + TargetLowering::DAGCombinerInfo &DCI, + const X86Subtarget &Subtarget) { SDValue LHS = N->getOperand(0); SDValue RHS = N->getOperand(1); @@ -44106,8 +44115,9 @@ static SDValue combinePMULDQ(SDNode *N, SelectionDAG & return DAG.getNode(N->getOpcode(), SDLoc(N), N->getValueType(0), RHS, LHS); // Multiply by zero. + // Don't return RHS as it may contain UNDEFs. if (ISD::isBuildVectorAllZeros(RHS.getNode())) - return RHS; + return getZeroVector(N->getSimpleValueType(0), Subtarget, DAG, SDLoc(N)); // Aggressively peek through ops to get at the demanded low bits. APInt DemandedMask = APInt::getLowBitsSet(64, 32); @@ -44315,7 +44325,7 @@ SDValue X86TargetLowering::PerformDAGCombine(SDNode *N case X86ISD::PCMPEQ: case X86ISD::PCMPGT: return combineVectorCompare(N, DAG, Subtarget); case X86ISD::PMULDQ: - case X86ISD::PMULUDQ: return combinePMULDQ(N, DAG, DCI); + case X86ISD::PMULUDQ: return combinePMULDQ(N, DAG, DCI, Subtarget); } return SDValue(); Modified: projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelLowering.h ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelLowering.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/X86/X86ISelLowering.h Mon Sep 2 17:55:39 2019 (r351722) @@ -863,11 +863,7 @@ namespace llvm { return VTIsOk(XVT) && VTIsOk(KeptBitsVT); } - bool shouldExpandShift(SelectionDAG &DAG, SDNode *N) const override { - if (DAG.getMachineFunction().getFunction().hasMinSize()) - return false; - return true; - } + bool shouldExpandShift(SelectionDAG &DAG, SDNode *N) const override; bool shouldSplatInsEltVarIndex(EVT VT) const override; Modified: projects/clang900-import/contrib/llvm/lib/Target/X86/X86Subtarget.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Target/X86/X86Subtarget.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Target/X86/X86Subtarget.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -146,6 +146,9 @@ unsigned char X86Subtarget::classifyGlobalReference(co return X86II::MO_DLLIMPORT; return X86II::MO_COFFSTUB; } + // Some JIT users use *-win32-elf triples; these shouldn't use GOT tables. + if (isOSWindows()) + return X86II::MO_NO_FLAG; if (is64Bit()) { // ELF supports a large, truly PIC code model with non-PC relative GOT Modified: projects/clang900-import/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -711,7 +711,7 @@ LoopUnrollResult llvm::UnrollLoop(Loop *L, UnrollLoopO auto setDest = [LoopExit, ContinueOnTrue](BasicBlock *Src, BasicBlock *Dest, ArrayRef NextBlocks, - BasicBlock *CurrentHeader, + BasicBlock *BlockInLoop, bool NeedConditional) { auto *Term = cast(Src->getTerminator()); if (NeedConditional) { @@ -723,7 +723,9 @@ LoopUnrollResult llvm::UnrollLoop(Loop *L, UnrollLoopO if (Dest != LoopExit) { BasicBlock *BB = Src; for (BasicBlock *Succ : successors(BB)) { - if (Succ == CurrentHeader) + // Preserve the incoming value from BB if we are jumping to the block + // in the current loop. + if (Succ == BlockInLoop) continue; for (PHINode &Phi : Succ->phis()) Phi.removeIncomingValue(BB, false); @@ -794,7 +796,7 @@ LoopUnrollResult llvm::UnrollLoop(Loop *L, UnrollLoopO // unconditional branch for some iterations. NeedConditional = false; - setDest(Headers[i], Dest, Headers, Headers[i], NeedConditional); + setDest(Headers[i], Dest, Headers, HeaderSucc[i], NeedConditional); } // Set up latches to branch to the new header in the unrolled iterations or Modified: projects/clang900-import/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def ============================================================================== --- projects/clang900-import/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/clang/include/clang/Frontend/LangStandards.def Mon Sep 2 17:55:39 2019 (r351722) @@ -165,7 +165,7 @@ LANGSTANDARD(opencl12, "cl1.2", LANGSTANDARD(opencl20, "cl2.0", OpenCL, "OpenCL 2.0", LineComment | C99 | Digraphs | HexFloat | OpenCL) -LANGSTANDARD(openclcpp, "c++", +LANGSTANDARD(openclcpp, "clc++", OpenCL, "C++ for OpenCL", LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | CPlusPlus17 | Digraphs | HexFloat | OpenCL) Modified: projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -60,6 +60,10 @@ bool RISCVTargetInfo::validateAsmConstraint( // A floating-point register. Info.setAllowsRegister(); return true; + case 'A': + // An address that is held in a general-purpose register. + Info.setAllowsMemory(); + return true; } } Modified: projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.h ============================================================================== --- projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/clang/lib/Basic/Targets/RISCV.h Mon Sep 2 17:55:39 2019 (r351722) @@ -93,6 +93,13 @@ class LLVM_LIBRARY_VISIBILITY RISCV32TargetInfo : publ } return false; } + + void setMaxAtomicWidth() override { + MaxAtomicPromoteWidth = 128; + + if (HasA) + MaxAtomicInlineWidth = 32; + } }; class LLVM_LIBRARY_VISIBILITY RISCV64TargetInfo : public RISCVTargetInfo { public: @@ -109,6 +116,13 @@ class LLVM_LIBRARY_VISIBILITY RISCV64TargetInfo : publ return true; } return false; + } + + void setMaxAtomicWidth() override { + MaxAtomicPromoteWidth = 128; + + if (HasA) + MaxAtomicInlineWidth = 64; } }; } // namespace targets Modified: projects/clang900-import/contrib/llvm/tools/clang/lib/Headers/opencl-c.h ============================================================================== --- projects/clang900-import/contrib/llvm/tools/clang/lib/Headers/opencl-c.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/clang/lib/Headers/opencl-c.h Mon Sep 2 17:55:39 2019 (r351722) @@ -15350,7 +15350,7 @@ ndrange_t __ovld ndrange_3D(const size_t[3]); ndrange_t __ovld ndrange_3D(const size_t[3], const size_t[3]); ndrange_t __ovld ndrange_3D(const size_t[3], const size_t[3], const size_t[3]); -int __ovld enqueue_marker(queue_t, uint, const __private clk_event_t*, __private clk_event_t*); +int __ovld enqueue_marker(queue_t, uint, const clk_event_t*, clk_event_t*); void __ovld retain_event(clk_event_t); Modified: projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -1225,7 +1225,8 @@ static bool checkTupleLikeDecomposition(Sema &S, if (E.isInvalid()) return true; RefVD->setInit(E.get()); - RefVD->checkInitIsICE(); + if (!E.get()->isValueDependent()) + RefVD->checkInitIsICE(); E = S.BuildDeclarationNameExpr(CXXScopeSpec(), DeclarationNameInfo(B->getDeclName(), Loc), Modified: projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -4692,6 +4692,7 @@ SubstDefaultTemplateArgument(Sema &SemaRef, for (unsigned i = 0, e = Param->getDepth(); i != e; ++i) TemplateArgLists.addOuterTemplateArguments(None); + Sema::ContextRAII SavedContext(SemaRef, Template->getDeclContext()); EnterExpressionEvaluationContext ConstantEvaluated( SemaRef, Sema::ExpressionEvaluationContext::ConstantEvaluated); return SemaRef.SubstExpr(Param->getDefaultArgument(), TemplateArgLists); Modified: projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -7390,8 +7390,22 @@ static void deduceOpenCLImplicitAddrSpace(TypeProcessi bool IsPointee = ChunkIndex > 0 && (D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::Pointer || - D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::BlockPointer || - D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::Reference); + D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::Reference || + D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::BlockPointer); + // For pointers/references to arrays the next chunk is always an array + // followed by any number of parentheses. + if (!IsPointee && ChunkIndex > 1) { + auto AdjustedCI = ChunkIndex - 1; + if (D.getTypeObject(AdjustedCI).Kind == DeclaratorChunk::Array) + AdjustedCI--; + // Skip over all parentheses. + while (AdjustedCI > 0 && + D.getTypeObject(AdjustedCI).Kind == DeclaratorChunk::Paren) + AdjustedCI--; + if (D.getTypeObject(AdjustedCI).Kind == DeclaratorChunk::Pointer || + D.getTypeObject(AdjustedCI).Kind == DeclaratorChunk::Reference) + IsPointee = true; + } bool IsFuncReturnType = ChunkIndex > 0 && D.getTypeObject(ChunkIndex - 1).Kind == DeclaratorChunk::Function; Modified: projects/clang900-import/contrib/llvm/tools/lld/CMakeLists.txt ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lld/CMakeLists.txt Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/lld/CMakeLists.txt Mon Sep 2 17:55:39 2019 (r351722) @@ -56,7 +56,6 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) include(HandleLLVMOptions) if(LLVM_INCLUDE_TESTS) - set(Python_ADDITIONAL_VERSIONS 2.7) include(FindPythonInterp) if(NOT PYTHONINTERP_FOUND) message(FATAL_ERROR Modified: projects/clang900-import/contrib/llvm/tools/lld/COFF/Config.h ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lld/COFF/Config.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/lld/COFF/Config.h Mon Sep 2 17:55:39 2019 (r351722) @@ -189,6 +189,7 @@ struct Configuration { // Used for /thinlto-object-suffix-replace: std::pair thinLTOObjectSuffixReplace; + uint64_t align = 4096; uint64_t imageBase = -1; uint64_t fileAlign = 512; uint64_t stackReserve = 1024 * 1024; Modified: projects/clang900-import/contrib/llvm/tools/lld/COFF/Driver.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lld/COFF/Driver.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/lld/COFF/Driver.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -36,6 +36,7 @@ #include "llvm/Option/Option.h" #include "llvm/Support/Debug.h" #include "llvm/Support/LEB128.h" +#include "llvm/Support/MathExtras.h" #include "llvm/Support/Path.h" #include "llvm/Support/Process.h" #include "llvm/Support/TarWriter.h" @@ -270,13 +271,12 @@ void LinkerDriver::addArchiveBuffer(MemoryBufferRef mb } void LinkerDriver::enqueueArchiveMember(const Archive::Child &c, - StringRef symName, + const Archive::Symbol &sym, StringRef parentName) { - auto reportBufferError = [=](Error &&e, - StringRef childName) { + auto reportBufferError = [=](Error &&e, StringRef childName) { fatal("could not get the buffer for the member defining symbol " + - symName + ": " + parentName + "(" + childName + "): " + + toCOFFString(sym) + ": " + parentName + "(" + childName + "): " + toString(std::move(e))); }; @@ -287,7 +287,8 @@ void LinkerDriver::enqueueArchiveMember(const Archive: reportBufferError(mbOrErr.takeError(), check(c.getFullName())); MemoryBufferRef mb = mbOrErr.get(); enqueueTask([=]() { - driver->addArchiveBuffer(mb, symName, parentName, offsetInArchive); + driver->addArchiveBuffer(mb, toCOFFString(sym), parentName, + offsetInArchive); }); return; } @@ -295,15 +296,16 @@ void LinkerDriver::enqueueArchiveMember(const Archive: std::string childName = CHECK( c.getFullName(), "could not get the filename for the member defining symbol " + - symName); + toCOFFString(sym)); auto future = std::make_shared>( createFutureForFile(childName)); enqueueTask([=]() { auto mbOrErr = future->get(); if (mbOrErr.second) reportBufferError(errorCodeToError(mbOrErr.second), childName); - driver->addArchiveBuffer(takeBuffer(std::move(mbOrErr.first)), symName, - parentName, /* OffsetInArchive */ 0); + driver->addArchiveBuffer(takeBuffer(std::move(mbOrErr.first)), + toCOFFString(sym), parentName, + /*OffsetInArchive=*/0); }); } @@ -1053,6 +1055,12 @@ void LinkerDriver::maybeExportMinGWSymbols(const opt:: }); } +static const char *libcallRoutineNames[] = { +#define HANDLE_LIBCALL(code, name) name, +#include "llvm/IR/RuntimeLibcalls.def" +#undef HANDLE_LIBCALL +}; + void LinkerDriver::link(ArrayRef argsArr) { // Needed for LTO. InitializeAllTargetInfos(); @@ -1421,6 +1429,13 @@ void LinkerDriver::link(ArrayRef argsArr for (auto *arg : args.filtered(OPT_section)) parseSection(arg->getValue()); + // Handle /align + if (auto *arg = args.getLastArg(OPT_align)) { + parseNumbers(arg->getValue(), &config->align); + if (!isPowerOf2_64(config->align)) + error("/align: not a power of two: " + StringRef(arg->getValue())); + } + // Handle /aligncomm for (auto *arg : args.filtered(OPT_aligncomm)) parseAligncomm(arg->getValue()); @@ -1747,6 +1762,15 @@ void LinkerDriver::link(ArrayRef argsArr if (!u->weakAlias) u->weakAlias = symtab->addUndefined(to); } + + // If any inputs are bitcode files, the LTO code generator may create + // references to library functions that are not explicit in the bitcode + // file's symbol table. If any of those library functions are defined in a + // bitcode file in an archive member, we need to arrange to use LTO to + // compile those archive members by adding them to the link beforehand. + if (!BitcodeFile::instances.empty()) + for (const char *s : libcallRoutineNames) + symtab->addLibcall(s); // Windows specific -- if __load_config_used can be resolved, resolve it. if (symtab->findUnderscore("_load_config_used")) Modified: projects/clang900-import/contrib/llvm/tools/lld/COFF/Driver.h ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lld/COFF/Driver.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/lld/COFF/Driver.h Mon Sep 2 17:55:39 2019 (r351722) @@ -72,7 +72,7 @@ class LinkerDriver { (public) void parseDirectives(InputFile *file); // Used by ArchiveFile to enqueue members. - void enqueueArchiveMember(const Archive::Child &c, StringRef symName, + void enqueueArchiveMember(const Archive::Child &c, const Archive::Symbol &sym, StringRef parentName); MemoryBufferRef takeBuffer(std::unique_ptr mb); Modified: projects/clang900-import/contrib/llvm/tools/lld/COFF/InputFiles.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lld/COFF/InputFiles.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/lld/COFF/InputFiles.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -85,16 +85,16 @@ void ArchiveFile::parse() { } // Returns a buffer pointing to a member file containing a given symbol. -void ArchiveFile::addMember(const Archive::Symbol *sym) { +void ArchiveFile::addMember(const Archive::Symbol &sym) { const Archive::Child &c = - CHECK(sym->getMember(), - "could not get the member for symbol " + sym->getName()); + CHECK(sym.getMember(), + "could not get the member for symbol " + toCOFFString(sym)); // Return an empty buffer if we have already returned the same buffer. if (!seen.insert(c.getChildOffset()).second) return; - driver->enqueueArchiveMember(c, sym->getName(), getName()); + driver->enqueueArchiveMember(c, sym, getName()); } std::vector getArchiveMembers(Archive *file) { Modified: projects/clang900-import/contrib/llvm/tools/lld/COFF/InputFiles.h ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lld/COFF/InputFiles.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/lld/COFF/InputFiles.h Mon Sep 2 17:55:39 2019 (r351722) @@ -96,7 +96,7 @@ class ArchiveFile : public InputFile { (public) // Enqueues an archive member load for the given symbol. If we've already // enqueued a load for the same archive member, this function does nothing, // which ensures that we don't load the same member more than once. - void addMember(const Archive::Symbol *sym); + void addMember(const Archive::Symbol &sym); private: std::unique_ptr file; Modified: projects/clang900-import/contrib/llvm/tools/lld/COFF/SymbolTable.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lld/COFF/SymbolTable.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/lld/COFF/SymbolTable.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -179,7 +179,7 @@ void SymbolTable::loadMinGWAutomaticImports() { log("Loading lazy " + l->getName() + " from " + l->file->getName() + " for automatic import"); l->pendingArchiveLoad = true; - l->file->addMember(&l->sym); + l->file->addMember(l->sym); } } @@ -363,13 +363,13 @@ Symbol *SymbolTable::addUndefined(StringRef name, Inpu if (auto *l = dyn_cast(s)) { if (!s->pendingArchiveLoad) { s->pendingArchiveLoad = true; - l->file->addMember(&l->sym); + l->file->addMember(l->sym); } } return s; } -void SymbolTable::addLazy(ArchiveFile *f, const Archive::Symbol sym) { +void SymbolTable::addLazy(ArchiveFile *f, const Archive::Symbol &sym) { StringRef name = sym.getName(); Symbol *s; bool wasInserted; @@ -382,7 +382,7 @@ void SymbolTable::addLazy(ArchiveFile *f, const Archiv if (!u || u->weakAlias || s->pendingArchiveLoad) return; s->pendingArchiveLoad = true; - f->addMember(&sym); + f->addMember(sym); } void SymbolTable::reportDuplicate(Symbol *existing, InputFile *newFile) { @@ -503,6 +503,18 @@ Symbol *SymbolTable::addImportThunk(StringRef name, De reportDuplicate(s, id->file); return nullptr; +} + +void SymbolTable::addLibcall(StringRef name) { + Symbol *sym = findUnderscore(name); + if (!sym) + return; + + if (Lazy *l = dyn_cast(sym)) { + MemoryBufferRef mb = l->getMemberBuffer(); + if (identify_magic(mb.getBuffer()) == llvm::file_magic::bitcode) + addUndefined(sym->getName()); + } } std::vector SymbolTable::getChunks() { Modified: projects/clang900-import/contrib/llvm/tools/lld/COFF/SymbolTable.h ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lld/COFF/SymbolTable.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/lld/COFF/SymbolTable.h Mon Sep 2 17:55:39 2019 (r351722) @@ -83,7 +83,7 @@ class SymbolTable { (public) Symbol *addAbsolute(StringRef n, uint64_t va); Symbol *addUndefined(StringRef name, InputFile *f, bool isWeakAlias); - void addLazy(ArchiveFile *f, const Archive::Symbol sym); + void addLazy(ArchiveFile *f, const Archive::Symbol &sym); Symbol *addAbsolute(StringRef n, COFFSymbolRef s); Symbol *addRegular(InputFile *f, StringRef n, const llvm::object::coff_symbol_generic *s = nullptr, @@ -97,6 +97,7 @@ class SymbolTable { (public) Symbol *addImportData(StringRef n, ImportFile *f); Symbol *addImportThunk(StringRef name, DefinedImportData *s, uint16_t machine); + void addLibcall(StringRef name); void reportDuplicate(Symbol *existing, InputFile *newFile); Modified: projects/clang900-import/contrib/llvm/tools/lld/COFF/Symbols.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lld/COFF/Symbols.cpp Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/lld/COFF/Symbols.cpp Mon Sep 2 17:55:39 2019 (r351722) @@ -20,18 +20,23 @@ using namespace llvm::object; using namespace lld::coff; +namespace lld { + static_assert(sizeof(SymbolUnion) <= 48, "symbols should be optimized for memory usage"); // Returns a symbol name for an error message. -std::string lld::toString(coff::Symbol &b) { +static std::string demangle(StringRef symName) { if (config->demangle) - if (Optional s = lld::demangleMSVC(b.getName())) + if (Optional s = demangleMSVC(symName)) return *s; - return b.getName(); + return symName; } +std::string toString(coff::Symbol &b) { return demangle(b.getName()); } +std::string toCOFFString(const Archive::Symbol &b) { + return demangle(b.getName()); +} -namespace lld { namespace coff { StringRef Symbol::getName() { @@ -112,6 +117,15 @@ Defined *Undefined::getWeakAlias() { if (auto *d = dyn_cast(a)) return d; return nullptr; +} + +MemoryBufferRef Lazy::getMemberBuffer() { + Archive::Child c = + CHECK(sym.getMember(), + "could not get the member for symbol " + toCOFFString(sym)); + return CHECK(c.getMemoryBufferRef(), + "could not get the buffer for the member defining symbol " + + toCOFFString(sym)); } } // namespace coff } // namespace lld Modified: projects/clang900-import/contrib/llvm/tools/lld/COFF/Symbols.h ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lld/COFF/Symbols.h Mon Sep 2 17:49:42 2019 (r351721) +++ projects/clang900-import/contrib/llvm/tools/lld/COFF/Symbols.h Mon Sep 2 17:55:39 2019 (r351722) @@ -21,6 +21,14 @@ #include namespace lld { + +std::string toString(coff::Symbol &b); + +// There are two different ways to convert an Archive::Symbol to a string: +// One for Microsoft name mangling and one for Itanium name mangling. +// Call the functions toCOFFString and toELFString, not just toString. +std::string toCOFFString(const coff::Archive::Symbol &b); + namespace coff { using llvm::object::Archive; @@ -257,6 +265,8 @@ class Lazy : public Symbol { (public) static bool classof(const Symbol *s) { return s->kind() == LazyKind; } + MemoryBufferRef getMemberBuffer(); + ArchiveFile *file; private: @@ -429,7 +439,6 @@ void replaceSymbol(Symbol *s, ArgT &&... arg) { } } // namespace coff -std::string toString(coff::Symbol &b); } // namespace lld #endif *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 05:55:58 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 03F3BCBE47 for ; Tue, 3 Sep 2019 05:55:58 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46Mx5T6MVVz3M6h; Tue, 3 Sep 2019 05:55:57 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A3BB7261D7; Tue, 3 Sep 2019 05:55:57 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x835tvGc062648; Tue, 3 Sep 2019 05:55:57 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x835tu4o062644; Tue, 3 Sep 2019 05:55:56 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201909030555.x835tu4o062644@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 3 Sep 2019 05:55:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351731 - in projects/clang900-import: lib/atf/libatf-c++ libexec/atf/atf-check libexec/atf/atf-sh share/mk X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang900-import: lib/atf/libatf-c++ libexec/atf/atf-check libexec/atf/atf-sh share/mk X-SVN-Commit-Revision: 351731 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Sep 2019 05:55:58 -0000 Author: dim Date: Tue Sep 3 05:55:56 2019 New Revision: 351731 URL: https://svnweb.freebsd.org/changeset/base/351731 Log: Add workarounds for obsolete std::auto_ptr usage in atf. Modified: projects/clang900-import/lib/atf/libatf-c++/Makefile projects/clang900-import/libexec/atf/atf-check/Makefile projects/clang900-import/libexec/atf/atf-sh/Makefile projects/clang900-import/share/mk/atf.test.mk Modified: projects/clang900-import/lib/atf/libatf-c++/Makefile ============================================================================== --- projects/clang900-import/lib/atf/libatf-c++/Makefile Tue Sep 3 04:50:39 2019 (r351730) +++ projects/clang900-import/lib/atf/libatf-c++/Makefile Tue Sep 3 05:55:56 2019 (r351731) @@ -48,6 +48,9 @@ CFLAGS+= -I. CFLAGS+= -DHAVE_CONFIG_H +# Silence warnings about std::auto_ptr usage +CWARNFLAGS+= -Wno-deprecated-declarations + SRCS= application.cpp \ build.cpp \ check.cpp \ Modified: projects/clang900-import/libexec/atf/atf-check/Makefile ============================================================================== --- projects/clang900-import/libexec/atf/atf-check/Makefile Tue Sep 3 04:50:39 2019 (r351730) +++ projects/clang900-import/libexec/atf/atf-check/Makefile Tue Sep 3 05:55:56 2019 (r351731) @@ -38,6 +38,9 @@ MAN= atf-check.1 CFLAGS+= -I${ATF} CFLAGS+= -DATF_SHELL='"/bin/sh"' +# Silence warnings about std::auto_ptr usage +CWARNFLAGS+= -Wno-deprecated-declarations + LIBADD= atf_cxx HAS_TESTS= Modified: projects/clang900-import/libexec/atf/atf-sh/Makefile ============================================================================== --- projects/clang900-import/libexec/atf/atf-sh/Makefile Tue Sep 3 04:50:39 2019 (r351730) +++ projects/clang900-import/libexec/atf/atf-sh/Makefile Tue Sep 3 05:55:56 2019 (r351731) @@ -65,6 +65,9 @@ CFLAGS+= -DATF_PKGDATADIR='"${SHAREDIR}/atf"' CFLAGS+= -DATF_SHELL='"/bin/sh"' CFLAGS+= -I${ATF} +# Silence warnings about std::auto_ptr usage +CWARNFLAGS+= -Wno-deprecated-declarations + LIBADD= atf_cxx FILESGROUPS= SUBR Modified: projects/clang900-import/share/mk/atf.test.mk ============================================================================== --- projects/clang900-import/share/mk/atf.test.mk Tue Sep 3 04:50:39 2019 (r351730) +++ projects/clang900-import/share/mk/atf.test.mk Tue Sep 3 05:55:56 2019 (r351731) @@ -55,6 +55,8 @@ LDADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C} .endif TEST_INTERFACE.${_T}= atf .endfor +# Silence warnings about std::auto_ptr usage +CWARNFLAGS+= -Wno-deprecated-declarations .endif .if !empty(ATF_TESTS_SH) From owner-svn-src-projects@freebsd.org Tue Sep 3 05:58:49 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 01FD5CBFB9 for ; Tue, 3 Sep 2019 05:58:49 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46Mx8m5vPRz3MJm; Tue, 3 Sep 2019 05:58:48 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id ADA94261DC; Tue, 3 Sep 2019 05:58:48 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x835wmbb062967; Tue, 3 Sep 2019 05:58:48 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x835wiQh062946; Tue, 3 Sep 2019 05:58:44 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201909030558.x835wiQh062946@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 3 Sep 2019 05:58:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351732 - in projects/clang900-import: . cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip cddl/contrib/opensolaris/c... X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang900-import: . cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip cddl/contrib/opensolaris/cmd/dtrace/test/tst/common... X-SVN-Commit-Revision: 351732 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 Sep 2019 05:58:49 -0000 Author: dim Date: Tue Sep 3 05:58:43 2019 New Revision: 351732 URL: https://svnweb.freebsd.org/changeset/base/351732 Log: Merge ^/head r351317 through r351731. Added: projects/clang900-import/contrib/wpa/src/ap/airtime_policy.c - copied unchanged from r351731, head/contrib/wpa/src/ap/airtime_policy.c projects/clang900-import/contrib/wpa/src/ap/airtime_policy.h - copied unchanged from r351731, head/contrib/wpa/src/ap/airtime_policy.h projects/clang900-import/contrib/wpa/src/ap/wpa_auth_kay.c - copied unchanged from r351731, head/contrib/wpa/src/ap/wpa_auth_kay.c projects/clang900-import/contrib/wpa/src/ap/wpa_auth_kay.h - copied unchanged from r351731, head/contrib/wpa/src/ap/wpa_auth_kay.h projects/clang900-import/contrib/wpa/src/common/dragonfly.c - copied unchanged from r351731, head/contrib/wpa/src/common/dragonfly.c projects/clang900-import/contrib/wpa/src/common/dragonfly.h - copied unchanged from r351731, head/contrib/wpa/src/common/dragonfly.h projects/clang900-import/contrib/wpa/src/drivers/driver_atheros.c - copied unchanged from r351731, head/contrib/wpa/src/drivers/driver_atheros.c projects/clang900-import/contrib/wpa/src/drivers/driver_hostap.c - copied unchanged from r351731, head/contrib/wpa/src/drivers/driver_hostap.c projects/clang900-import/contrib/wpa/src/drivers/nl80211_copy.h - copied unchanged from r351731, head/contrib/wpa/src/drivers/nl80211_copy.h projects/clang900-import/contrib/wpa/src/eap_common/eap_teap_common.c - copied unchanged from r351731, head/contrib/wpa/src/eap_common/eap_teap_common.c projects/clang900-import/contrib/wpa/src/eap_common/eap_teap_common.h - copied unchanged from r351731, head/contrib/wpa/src/eap_common/eap_teap_common.h projects/clang900-import/contrib/wpa/src/eap_peer/eap_teap.c - copied unchanged from r351731, head/contrib/wpa/src/eap_peer/eap_teap.c projects/clang900-import/contrib/wpa/src/eap_peer/eap_teap_pac.c - copied unchanged from r351731, head/contrib/wpa/src/eap_peer/eap_teap_pac.c projects/clang900-import/contrib/wpa/src/eap_peer/eap_teap_pac.h - copied unchanged from r351731, head/contrib/wpa/src/eap_peer/eap_teap_pac.h projects/clang900-import/contrib/wpa/src/eap_server/eap_server_teap.c - copied unchanged from r351731, head/contrib/wpa/src/eap_server/eap_server_teap.c projects/clang900-import/sbin/ping/tests/ - copied from r351731, head/sbin/ping/tests/ projects/clang900-import/sbin/ping6/tests/ - copied from r351731, head/sbin/ping6/tests/ projects/clang900-import/share/man/man3/Q_FRAWMASK.3 - copied unchanged from r351731, head/share/man/man3/Q_FRAWMASK.3 projects/clang900-import/share/man/man3/Q_IFRAWMASK.3 - copied unchanged from r351731, head/share/man/man3/Q_IFRAWMASK.3 projects/clang900-import/share/man/man3/Q_INI.3 - copied unchanged from r351731, head/share/man/man3/Q_INI.3 projects/clang900-import/share/man/man3/Q_IRAWMASK.3 - copied unchanged from r351731, head/share/man/man3/Q_IRAWMASK.3 projects/clang900-import/share/man/man3/Q_QABS.3 - copied unchanged from r351731, head/share/man/man3/Q_QABS.3 projects/clang900-import/share/man/man3/Q_QADDI.3 - copied unchanged from r351731, head/share/man/man3/Q_QADDI.3 projects/clang900-import/share/man/man3/Q_QADDQ.3 - copied unchanged from r351731, head/share/man/man3/Q_QADDQ.3 projects/clang900-import/share/man/man3/Q_SIGNED.3 - copied unchanged from r351731, head/share/man/man3/Q_SIGNED.3 projects/clang900-import/share/man/man3/Q_SIGNSHFT.3 - copied unchanged from r351731, head/share/man/man3/Q_SIGNSHFT.3 projects/clang900-import/share/man/man3/qmath.3 - copied unchanged from r351731, head/share/man/man3/qmath.3 projects/clang900-import/share/man/man4/ntb_hw_amd.4 - copied unchanged from r351731, head/share/man/man4/ntb_hw_amd.4 projects/clang900-import/share/man/man4/nvdimm.4 - copied unchanged from r351731, head/share/man/man4/nvdimm.4 projects/clang900-import/sys/amd64/include/pcpu_aux.h - copied unchanged from r351731, head/sys/amd64/include/pcpu_aux.h projects/clang900-import/sys/arm/include/pcpu_aux.h - copied unchanged from r351731, head/sys/arm/include/pcpu_aux.h projects/clang900-import/sys/arm64/include/pcpu_aux.h - copied unchanged from r351731, head/sys/arm64/include/pcpu_aux.h projects/clang900-import/sys/dev/nvme/nvme_ahci.c - copied unchanged from r351731, head/sys/dev/nvme/nvme_ahci.c projects/clang900-import/sys/dev/nvme/nvme_pci.c - copied unchanged from r351731, head/sys/dev/nvme/nvme_pci.c projects/clang900-import/sys/dts/arm/overlays/sun8i-h3-ths.dtso - copied unchanged from r351731, head/sys/dts/arm/overlays/sun8i-h3-ths.dtso projects/clang900-import/sys/i386/include/pcpu_aux.h - copied unchanged from r351731, head/sys/i386/include/pcpu_aux.h projects/clang900-import/sys/kern/uipc_ktls.c - copied unchanged from r351731, head/sys/kern/uipc_ktls.c projects/clang900-import/sys/mips/include/pcpu_aux.h - copied unchanged from r351731, head/sys/mips/include/pcpu_aux.h projects/clang900-import/sys/modules/ktls_ocf/ - copied from r351731, head/sys/modules/ktls_ocf/ projects/clang900-import/sys/opencrypto/ktls_ocf.c - copied unchanged from r351731, head/sys/opencrypto/ktls_ocf.c projects/clang900-import/sys/powerpc/include/pcpu_aux.h - copied unchanged from r351731, head/sys/powerpc/include/pcpu_aux.h projects/clang900-import/sys/riscv/include/pcpu_aux.h - copied unchanged from r351731, head/sys/riscv/include/pcpu_aux.h projects/clang900-import/sys/sparc64/include/pcpu_aux.h - copied unchanged from r351731, head/sys/sparc64/include/pcpu_aux.h projects/clang900-import/sys/sys/ktls.h - copied unchanged from r351731, head/sys/sys/ktls.h projects/clang900-import/sys/sys/qmath.h - copied unchanged from r351731, head/sys/sys/qmath.h projects/clang900-import/tests/sys/netpfil/common/forward.sh - copied unchanged from r351731, head/tests/sys/netpfil/common/forward.sh projects/clang900-import/tests/sys/sys/qmath_test.c - copied unchanged from r351731, head/tests/sys/sys/qmath_test.c projects/clang900-import/tools/tools/switch_tls/ - copied from r351731, head/tools/tools/switch_tls/ projects/clang900-import/usr.sbin/mixer/tests/ - copied from r351731, head/usr.sbin/mixer/tests/ Deleted: projects/clang900-import/lib/libc/mips/gen/longjmp.c projects/clang900-import/sys/dev/netmap/netmap_pt.c projects/clang900-import/sys/libkern/zlib.c projects/clang900-import/sys/sys/zlib.h projects/clang900-import/sys/sys/zutil.h projects/clang900-import/usr.sbin/makefs/msdos/denode.h projects/clang900-import/usr.sbin/makefs/msdos/fat.h projects/clang900-import/usr.sbin/makefs/msdos/msdosfsmount.h Modified: projects/clang900-import/ObsoleteFiles.inc projects/clang900-import/RELNOTES projects/clang900-import/UPDATING projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil/tst.DestructWithFunction.d.ksh projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil/tst.ZeroFunctionProbes.d.ksh projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.NoSpecBuffer.exe projects/clang900-import/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c projects/clang900-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_diff.c projects/clang900-import/contrib/libc++/include/cstdio projects/clang900-import/contrib/libstdc++/include/c_std/std_cstdio.h projects/clang900-import/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp projects/clang900-import/contrib/netbsd-tests/lib/libc/ssp/h_gets.c projects/clang900-import/contrib/sendmail/src/conf.c projects/clang900-import/contrib/sendmail/src/readcf.c projects/clang900-import/contrib/wpa/hostapd/ChangeLog projects/clang900-import/contrib/wpa/hostapd/config_file.c projects/clang900-import/contrib/wpa/hostapd/ctrl_iface.c projects/clang900-import/contrib/wpa/hostapd/defconfig projects/clang900-import/contrib/wpa/hostapd/eap_register.c projects/clang900-import/contrib/wpa/hostapd/hostapd.conf projects/clang900-import/contrib/wpa/hostapd/hostapd_cli.c projects/clang900-import/contrib/wpa/hostapd/main.c projects/clang900-import/contrib/wpa/hs20/client/osu_client.c projects/clang900-import/contrib/wpa/src/ap/accounting.c projects/clang900-import/contrib/wpa/src/ap/acs.c projects/clang900-import/contrib/wpa/src/ap/ap_config.c projects/clang900-import/contrib/wpa/src/ap/ap_config.h projects/clang900-import/contrib/wpa/src/ap/ap_drv_ops.c projects/clang900-import/contrib/wpa/src/ap/ap_drv_ops.h projects/clang900-import/contrib/wpa/src/ap/authsrv.c projects/clang900-import/contrib/wpa/src/ap/beacon.c projects/clang900-import/contrib/wpa/src/ap/ctrl_iface_ap.c projects/clang900-import/contrib/wpa/src/ap/dfs.c projects/clang900-import/contrib/wpa/src/ap/dpp_hostapd.c projects/clang900-import/contrib/wpa/src/ap/dpp_hostapd.h projects/clang900-import/contrib/wpa/src/ap/drv_callbacks.c projects/clang900-import/contrib/wpa/src/ap/gas_serv.c projects/clang900-import/contrib/wpa/src/ap/gas_serv.h projects/clang900-import/contrib/wpa/src/ap/hostapd.c projects/clang900-import/contrib/wpa/src/ap/hostapd.h projects/clang900-import/contrib/wpa/src/ap/hw_features.c projects/clang900-import/contrib/wpa/src/ap/ieee802_11.c projects/clang900-import/contrib/wpa/src/ap/ieee802_11.h projects/clang900-import/contrib/wpa/src/ap/ieee802_11_he.c projects/clang900-import/contrib/wpa/src/ap/ieee802_11_vht.c projects/clang900-import/contrib/wpa/src/ap/ieee802_1x.c projects/clang900-import/contrib/wpa/src/ap/ieee802_1x.h projects/clang900-import/contrib/wpa/src/ap/neighbor_db.c projects/clang900-import/contrib/wpa/src/ap/sta_info.c projects/clang900-import/contrib/wpa/src/ap/sta_info.h projects/clang900-import/contrib/wpa/src/ap/wmm.c projects/clang900-import/contrib/wpa/src/ap/wpa_auth.c projects/clang900-import/contrib/wpa/src/ap/wpa_auth.h projects/clang900-import/contrib/wpa/src/ap/wpa_auth_ft.c projects/clang900-import/contrib/wpa/src/ap/wpa_auth_glue.c projects/clang900-import/contrib/wpa/src/ap/wpa_auth_ie.c projects/clang900-import/contrib/wpa/src/common/dpp.c projects/clang900-import/contrib/wpa/src/common/dpp.h projects/clang900-import/contrib/wpa/src/common/hw_features_common.c projects/clang900-import/contrib/wpa/src/common/hw_features_common.h projects/clang900-import/contrib/wpa/src/common/ieee802_11_common.c projects/clang900-import/contrib/wpa/src/common/ieee802_11_common.h projects/clang900-import/contrib/wpa/src/common/ieee802_11_defs.h projects/clang900-import/contrib/wpa/src/common/qca-vendor.h projects/clang900-import/contrib/wpa/src/common/sae.c projects/clang900-import/contrib/wpa/src/common/sae.h projects/clang900-import/contrib/wpa/src/common/version.h projects/clang900-import/contrib/wpa/src/common/wpa_common.c projects/clang900-import/contrib/wpa/src/common/wpa_ctrl.h projects/clang900-import/contrib/wpa/src/crypto/aes_i.h projects/clang900-import/contrib/wpa/src/crypto/crypto.h projects/clang900-import/contrib/wpa/src/crypto/crypto_openssl.c projects/clang900-import/contrib/wpa/src/crypto/crypto_wolfssl.c projects/clang900-import/contrib/wpa/src/crypto/sha1-internal.c projects/clang900-import/contrib/wpa/src/crypto/sha1-prf.c projects/clang900-import/contrib/wpa/src/crypto/sha1-tlsprf.c projects/clang900-import/contrib/wpa/src/crypto/sha1-tprf.c projects/clang900-import/contrib/wpa/src/crypto/sha1.c projects/clang900-import/contrib/wpa/src/crypto/sha256-kdf.c projects/clang900-import/contrib/wpa/src/crypto/sha256-prf.c projects/clang900-import/contrib/wpa/src/crypto/sha256-tlsprf.c projects/clang900-import/contrib/wpa/src/crypto/sha256.h projects/clang900-import/contrib/wpa/src/crypto/sha384-kdf.c projects/clang900-import/contrib/wpa/src/crypto/sha384-prf.c projects/clang900-import/contrib/wpa/src/crypto/sha512-kdf.c projects/clang900-import/contrib/wpa/src/crypto/sha512-prf.c projects/clang900-import/contrib/wpa/src/crypto/tls.h projects/clang900-import/contrib/wpa/src/crypto/tls_openssl.c projects/clang900-import/contrib/wpa/src/crypto/tls_wolfssl.c projects/clang900-import/contrib/wpa/src/drivers/driver.h projects/clang900-import/contrib/wpa/src/drivers/driver_bsd.c projects/clang900-import/contrib/wpa/src/drivers/driver_common.c projects/clang900-import/contrib/wpa/src/drivers/driver_macsec_linux.c projects/clang900-import/contrib/wpa/src/drivers/driver_macsec_qca.c projects/clang900-import/contrib/wpa/src/drivers/driver_ndis.c projects/clang900-import/contrib/wpa/src/drivers/driver_nl80211.h projects/clang900-import/contrib/wpa/src/drivers/driver_nl80211_capa.c projects/clang900-import/contrib/wpa/src/drivers/driver_nl80211_event.c projects/clang900-import/contrib/wpa/src/drivers/driver_privsep.c projects/clang900-import/contrib/wpa/src/eap_common/eap_defs.h projects/clang900-import/contrib/wpa/src/eap_common/eap_pwd_common.c projects/clang900-import/contrib/wpa/src/eap_common/eap_sim_common.c projects/clang900-import/contrib/wpa/src/eap_common/eap_sim_common.h projects/clang900-import/contrib/wpa/src/eap_peer/eap.c projects/clang900-import/contrib/wpa/src/eap_peer/eap.h projects/clang900-import/contrib/wpa/src/eap_peer/eap_aka.c projects/clang900-import/contrib/wpa/src/eap_peer/eap_config.h projects/clang900-import/contrib/wpa/src/eap_peer/eap_eke.c projects/clang900-import/contrib/wpa/src/eap_peer/eap_leap.c projects/clang900-import/contrib/wpa/src/eap_peer/eap_methods.h projects/clang900-import/contrib/wpa/src/eap_peer/eap_peap.c projects/clang900-import/contrib/wpa/src/eap_peer/eap_pwd.c projects/clang900-import/contrib/wpa/src/eap_peer/eap_sim.c projects/clang900-import/contrib/wpa/src/eap_peer/eap_tls.c projects/clang900-import/contrib/wpa/src/eap_peer/eap_tls_common.c projects/clang900-import/contrib/wpa/src/eap_peer/eap_tls_common.h projects/clang900-import/contrib/wpa/src/eap_server/eap.h projects/clang900-import/contrib/wpa/src/eap_server/eap_i.h projects/clang900-import/contrib/wpa/src/eap_server/eap_methods.h projects/clang900-import/contrib/wpa/src/eap_server/eap_server.c projects/clang900-import/contrib/wpa/src/eap_server/eap_server_aka.c projects/clang900-import/contrib/wpa/src/eap_server/eap_server_pax.c projects/clang900-import/contrib/wpa/src/eap_server/eap_server_peap.c projects/clang900-import/contrib/wpa/src/eap_server/eap_server_pwd.c projects/clang900-import/contrib/wpa/src/eap_server/eap_server_sim.c projects/clang900-import/contrib/wpa/src/eap_server/eap_server_tls.c projects/clang900-import/contrib/wpa/src/eap_server/eap_server_tls_common.c projects/clang900-import/contrib/wpa/src/eap_server/eap_tls_common.h projects/clang900-import/contrib/wpa/src/eapol_auth/eapol_auth_sm.c projects/clang900-import/contrib/wpa/src/eapol_auth/eapol_auth_sm.h projects/clang900-import/contrib/wpa/src/eapol_supp/eapol_supp_sm.c projects/clang900-import/contrib/wpa/src/eapol_supp/eapol_supp_sm.h projects/clang900-import/contrib/wpa/src/p2p/p2p.c projects/clang900-import/contrib/wpa/src/p2p/p2p_go_neg.c projects/clang900-import/contrib/wpa/src/p2p/p2p_i.h projects/clang900-import/contrib/wpa/src/pae/ieee802_1x_kay.c projects/clang900-import/contrib/wpa/src/radius/radius_server.c projects/clang900-import/contrib/wpa/src/radius/radius_server.h projects/clang900-import/contrib/wpa/src/rsn_supp/wpa.c projects/clang900-import/contrib/wpa/src/rsn_supp/wpa.h projects/clang900-import/contrib/wpa/src/rsn_supp/wpa_ft.c projects/clang900-import/contrib/wpa/src/rsn_supp/wpa_i.h projects/clang900-import/contrib/wpa/src/tls/asn1.c projects/clang900-import/contrib/wpa/src/tls/libtommath.c projects/clang900-import/contrib/wpa/src/tls/x509v3.c projects/clang900-import/contrib/wpa/src/utils/common.c projects/clang900-import/contrib/wpa/src/utils/common.h projects/clang900-import/contrib/wpa/src/utils/trace.c projects/clang900-import/contrib/wpa/src/utils/wpa_debug.c projects/clang900-import/contrib/wpa/src/wps/wps.h projects/clang900-import/contrib/wpa/wpa_supplicant/Android.mk projects/clang900-import/contrib/wpa/wpa_supplicant/ChangeLog projects/clang900-import/contrib/wpa/wpa_supplicant/README-DPP projects/clang900-import/contrib/wpa/wpa_supplicant/ap.c projects/clang900-import/contrib/wpa/wpa_supplicant/ap.h projects/clang900-import/contrib/wpa/wpa_supplicant/bss.c projects/clang900-import/contrib/wpa/wpa_supplicant/config.c projects/clang900-import/contrib/wpa/wpa_supplicant/config.h projects/clang900-import/contrib/wpa/wpa_supplicant/config_file.c projects/clang900-import/contrib/wpa/wpa_supplicant/config_ssid.h projects/clang900-import/contrib/wpa/wpa_supplicant/ctrl_iface.c projects/clang900-import/contrib/wpa/wpa_supplicant/dbus/dbus_new_helpers.c projects/clang900-import/contrib/wpa/wpa_supplicant/defconfig projects/clang900-import/contrib/wpa/wpa_supplicant/dpp_supplicant.c projects/clang900-import/contrib/wpa/wpa_supplicant/dpp_supplicant.h projects/clang900-import/contrib/wpa/wpa_supplicant/driver_i.h projects/clang900-import/contrib/wpa/wpa_supplicant/eap_register.c projects/clang900-import/contrib/wpa/wpa_supplicant/eapol_test.c projects/clang900-import/contrib/wpa/wpa_supplicant/events.c projects/clang900-import/contrib/wpa/wpa_supplicant/ibss_rsn.c projects/clang900-import/contrib/wpa/wpa_supplicant/interworking.c projects/clang900-import/contrib/wpa/wpa_supplicant/mesh.c projects/clang900-import/contrib/wpa/wpa_supplicant/mesh_mpm.c projects/clang900-import/contrib/wpa/wpa_supplicant/notify.c projects/clang900-import/contrib/wpa/wpa_supplicant/notify.h projects/clang900-import/contrib/wpa/wpa_supplicant/op_classes.c projects/clang900-import/contrib/wpa/wpa_supplicant/p2p_supplicant.c projects/clang900-import/contrib/wpa/wpa_supplicant/preauth_test.c projects/clang900-import/contrib/wpa/wpa_supplicant/rrm.c projects/clang900-import/contrib/wpa/wpa_supplicant/sme.c projects/clang900-import/contrib/wpa/wpa_supplicant/wnm_sta.c projects/clang900-import/contrib/wpa/wpa_supplicant/wpa_cli.c projects/clang900-import/contrib/wpa/wpa_supplicant/wpa_supplicant.c projects/clang900-import/contrib/wpa/wpa_supplicant/wpa_supplicant.conf projects/clang900-import/contrib/wpa/wpa_supplicant/wpa_supplicant_i.h projects/clang900-import/contrib/wpa/wpa_supplicant/wpas_glue.c projects/clang900-import/etc/mtree/BSD.tests.dist projects/clang900-import/gnu/lib/libssp/Makefile projects/clang900-import/include/stdio.h projects/clang900-import/lib/libc/gen/sysctlbyname.c projects/clang900-import/lib/libc/mips/Symbol.map projects/clang900-import/lib/libc/mips/gen/_setjmp.S projects/clang900-import/lib/libc/mips/gen/makecontext.c projects/clang900-import/lib/libc/mips/gen/setjmp.S projects/clang900-import/lib/libc/mips/gen/sigsetjmp.S projects/clang900-import/lib/libc/stdio/fgets.3 projects/clang900-import/lib/libc/stdio/gets.c projects/clang900-import/lib/libc/stdio/stdio.3 projects/clang900-import/lib/libc/string/memchr.c projects/clang900-import/lib/libc/sys/Symbol.map projects/clang900-import/lib/libc/tests/gen/getmntinfo_test.c projects/clang900-import/lib/libc/tests/stdlib/Makefile projects/clang900-import/lib/libfetch/Makefile projects/clang900-import/lib/libfetch/fetch.3 projects/clang900-import/lib/libfetch/http.c projects/clang900-import/lib/libmemstat/memstat_uma.c projects/clang900-import/lib/libproc/proc_regs.c projects/clang900-import/lib/libthr/thread/thr_cancel.c projects/clang900-import/lib/libthr/thread/thr_init.c projects/clang900-import/lib/libthr/thread/thr_private.h projects/clang900-import/lib/libthread_db/arch/mips/libpthread_md.c projects/clang900-import/lib/libutil/login_class.c projects/clang900-import/lib/msun/man/math.3 projects/clang900-import/lib/msun/tests/Makefile projects/clang900-import/libexec/rtld-elf/rtld_malloc.c projects/clang900-import/sbin/fsck_msdosfs/boot.c projects/clang900-import/sbin/fsck_msdosfs/fat.c projects/clang900-import/sbin/ifconfig/ifconfig.8 projects/clang900-import/sbin/ifconfig/ifconfig.c projects/clang900-import/sbin/newfs_msdos/mkfs_msdos.c projects/clang900-import/sbin/ping/Makefile projects/clang900-import/sbin/ping/ping.8 projects/clang900-import/sbin/ping/ping.c projects/clang900-import/sbin/ping/utils.h projects/clang900-import/sbin/ping6/Makefile projects/clang900-import/sbin/ping6/ping6.8 projects/clang900-import/sbin/ping6/ping6.c projects/clang900-import/share/man/man3/Makefile projects/clang900-import/share/man/man4/Makefile projects/clang900-import/share/man/man4/ads111x.4 projects/clang900-import/share/man/man4/ahci.4 projects/clang900-import/share/man/man4/dtrace_lockstat.4 projects/clang900-import/share/man/man4/ntb.4 projects/clang900-import/share/man/man4/ntb_transport.4 projects/clang900-import/share/man/man4/null.4 projects/clang900-import/share/man/man4/nvme.4 projects/clang900-import/share/man/man4/rtwn_usb.4 projects/clang900-import/share/man/man4/tcp.4 projects/clang900-import/share/man/man7/development.7 projects/clang900-import/share/man/man7/ffs.7 projects/clang900-import/share/man/man7/ports.7 projects/clang900-import/share/man/man9/Makefile projects/clang900-import/share/man/man9/zone.9 projects/clang900-import/share/misc/committers-ports.dot projects/clang900-import/share/mk/bsd.sys.mk projects/clang900-import/stand/efi/libefi/efi_console.c projects/clang900-import/stand/efi/libefi/efipart.c projects/clang900-import/stand/i386/boot2/Makefile projects/clang900-import/stand/libsa/mips/_setjmp.S projects/clang900-import/stand/powerpc/ofw/cas.c projects/clang900-import/sys/amd64/amd64/cpu_switch.S projects/clang900-import/sys/amd64/amd64/machdep.c projects/clang900-import/sys/amd64/amd64/mp_machdep.c projects/clang900-import/sys/amd64/amd64/pmap.c projects/clang900-import/sys/amd64/amd64/vm_machdep.c projects/clang900-import/sys/amd64/include/counter.h projects/clang900-import/sys/amd64/include/gdb_machdep.h projects/clang900-import/sys/amd64/include/md_var.h projects/clang900-import/sys/amd64/include/pcpu.h projects/clang900-import/sys/amd64/vmm/amd/svm.c projects/clang900-import/sys/amd64/vmm/io/vlapic.c projects/clang900-import/sys/amd64/vmm/io/vlapic.h projects/clang900-import/sys/amd64/vmm/io/vlapic_priv.h projects/clang900-import/sys/amd64/vmm/vmm_host.h projects/clang900-import/sys/arm/arm/mp_machdep.c projects/clang900-import/sys/arm/arm/physmem.c projects/clang900-import/sys/arm/conf/ALPINE projects/clang900-import/sys/arm/conf/ARMADA38X projects/clang900-import/sys/arm/conf/ARMADAXP projects/clang900-import/sys/arm/conf/DB-78XXX projects/clang900-import/sys/arm/conf/DB-88F5XXX projects/clang900-import/sys/arm/conf/DB-88F6XXX projects/clang900-import/sys/arm/conf/RT1310 projects/clang900-import/sys/arm/conf/SHEEVAPLUG projects/clang900-import/sys/arm/conf/SOCFPGA projects/clang900-import/sys/arm/conf/TS7800 projects/clang900-import/sys/arm/conf/VYBRID projects/clang900-import/sys/arm/include/counter.h projects/clang900-import/sys/arm/samsung/exynos/exynos5_combiner.c projects/clang900-import/sys/arm/samsung/exynos/exynos5_pad.c projects/clang900-import/sys/arm64/arm64/identcpu.c projects/clang900-import/sys/arm64/arm64/mp_machdep.c projects/clang900-import/sys/arm64/include/counter.h projects/clang900-import/sys/arm64/include/cpu.h projects/clang900-import/sys/arm64/rockchip/if_dwc_rk.c projects/clang900-import/sys/arm64/rockchip/rk_gpio.c projects/clang900-import/sys/arm64/rockchip/rk_grf.c projects/clang900-import/sys/arm64/rockchip/rk_pinctrl.c projects/clang900-import/sys/cam/ata/ata_xpt.c projects/clang900-import/sys/cam/mmc/mmc_xpt.c projects/clang900-import/sys/cam/nvme/nvme_xpt.c projects/clang900-import/sys/cam/scsi/scsi_cd.c projects/clang900-import/sys/cam/scsi/scsi_cd.h projects/clang900-import/sys/cam/scsi/scsi_enc_ses.c projects/clang900-import/sys/cam/scsi/scsi_xpt.c projects/clang900-import/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c projects/clang900-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c projects/clang900-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/clang900-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/clang900-import/sys/compat/freebsd32/freebsd32_misc.c projects/clang900-import/sys/compat/freebsd32/freebsd32_proto.h projects/clang900-import/sys/compat/freebsd32/freebsd32_syscall.h projects/clang900-import/sys/compat/freebsd32/freebsd32_syscalls.c projects/clang900-import/sys/compat/freebsd32/freebsd32_sysent.c projects/clang900-import/sys/compat/freebsd32/freebsd32_systrace_args.c projects/clang900-import/sys/compat/freebsd32/syscalls.master projects/clang900-import/sys/compat/linux/linux_mib.c projects/clang900-import/sys/compat/linux/linux_mib.h projects/clang900-import/sys/compat/linuxkpi/common/include/linux/io.h projects/clang900-import/sys/compat/linuxkpi/common/include/linux/sysfs.h projects/clang900-import/sys/conf/NOTES projects/clang900-import/sys/conf/files projects/clang900-import/sys/conf/files.amd64 projects/clang900-import/sys/conf/files.i386 projects/clang900-import/sys/conf/kern.mk projects/clang900-import/sys/conf/kern.pre.mk projects/clang900-import/sys/conf/kmod.mk projects/clang900-import/sys/conf/makeLINT.mk projects/clang900-import/sys/conf/options projects/clang900-import/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_xmit_ds.c projects/clang900-import/sys/contrib/ipfilter/netinet/fil.c projects/clang900-import/sys/contrib/ipfilter/netinet/ip_nat.c projects/clang900-import/sys/contrib/ncsw/Peripherals/FM/HC/hc.c projects/clang900-import/sys/contrib/ncsw/Peripherals/FM/Pcd/fm_cc.c projects/clang900-import/sys/contrib/ncsw/Peripherals/QM/qm_portal_fqr.c projects/clang900-import/sys/contrib/ncsw/inc/Peripherals/dpaa_ext.h projects/clang900-import/sys/contrib/ncsw/user/env/xx.c projects/clang900-import/sys/contrib/zlib/deflate.c projects/clang900-import/sys/crypto/blowfish/bf_skey.c projects/clang900-import/sys/crypto/blowfish/blowfish.h projects/clang900-import/sys/crypto/chacha20/chacha-sw.c projects/clang900-import/sys/crypto/des/des.h projects/clang900-import/sys/crypto/des/des_ecb.c projects/clang900-import/sys/crypto/des/des_setkey.c projects/clang900-import/sys/ddb/db_ps.c projects/clang900-import/sys/ddb/db_thread.c projects/clang900-import/sys/dev/acpica/acpi_pcib_acpi.c projects/clang900-import/sys/dev/ahci/ahci.c projects/clang900-import/sys/dev/ahci/ahci.h projects/clang900-import/sys/dev/ahci/ahci_pci.c projects/clang900-import/sys/dev/cxgbe/cxgbei/icl_cxgbei.c projects/clang900-import/sys/dev/cxgbe/iw_cxgbe/qp.c projects/clang900-import/sys/dev/cxgbe/t4_main.c projects/clang900-import/sys/dev/cxgbe/t4_sge.c projects/clang900-import/sys/dev/cxgbe/tom/t4_connect.c projects/clang900-import/sys/dev/cxgbe/tom/t4_cpl_io.c projects/clang900-import/sys/dev/cxgbe/tom/t4_ddp.c projects/clang900-import/sys/dev/cxgbe/tom/t4_listen.c projects/clang900-import/sys/dev/cxgbe/tom/t4_tls.c projects/clang900-import/sys/dev/cxgbe/tom/t4_tom.c projects/clang900-import/sys/dev/cxgbe/tom/t4_tom.h projects/clang900-import/sys/dev/dpaa/if_dtsec_rm.c projects/clang900-import/sys/dev/ichsmb/ichsmb.c projects/clang900-import/sys/dev/netmap/netmap.c projects/clang900-import/sys/dev/netmap/netmap_kern.h projects/clang900-import/sys/dev/netmap/netmap_kloop.c projects/clang900-import/sys/dev/netmap/netmap_mem2.c projects/clang900-import/sys/dev/nvme/nvme.c projects/clang900-import/sys/dev/nvme/nvme_ctrlr.c projects/clang900-import/sys/dev/nvme/nvme_ns.c projects/clang900-import/sys/dev/nvme/nvme_ns_cmd.c projects/clang900-import/sys/dev/nvme/nvme_private.h projects/clang900-import/sys/dev/nvme/nvme_qpair.c projects/clang900-import/sys/dev/pci/pci_pci.c projects/clang900-import/sys/dev/qlxgbe/ql_isr.c projects/clang900-import/sys/dev/rtwn/usb/rtwn_usb_attach.h projects/clang900-import/sys/dev/sound/midi/sequencer.c projects/clang900-import/sys/dev/sound/pci/hda/hdaa_patches.c projects/clang900-import/sys/dev/usb/net/if_axe.c projects/clang900-import/sys/dev/usb/net/if_axge.c projects/clang900-import/sys/dev/usb/net/usb_ethernet.c projects/clang900-import/sys/dev/usb/net/usb_ethernet.h projects/clang900-import/sys/dev/usb/usbdevs projects/clang900-import/sys/dev/vmware/vmci/vmci.c projects/clang900-import/sys/dev/vnic/nicvf_main.c projects/clang900-import/sys/dev/vnic/thunder_bgx.c projects/clang900-import/sys/dev/xdma/xdma_sg.c projects/clang900-import/sys/dts/arm/overlays/sun8i-h3-sid.dtso projects/clang900-import/sys/fs/cd9660/cd9660_node.c projects/clang900-import/sys/fs/devfs/devfs_vnops.c projects/clang900-import/sys/fs/ext2fs/ext2_inode.c projects/clang900-import/sys/fs/fuse/fuse_vnops.c projects/clang900-import/sys/fs/msdosfs/denode.h projects/clang900-import/sys/fs/msdosfs/fat.h projects/clang900-import/sys/fs/msdosfs/msdosfs_denode.c projects/clang900-import/sys/fs/msdosfs/msdosfs_fat.c projects/clang900-import/sys/fs/msdosfs/msdosfsmount.h projects/clang900-import/sys/fs/nfsclient/nfs_clnode.c projects/clang900-import/sys/fs/nullfs/null_subr.c projects/clang900-import/sys/fs/nullfs/null_vnops.c projects/clang900-import/sys/fs/smbfs/smbfs_node.c projects/clang900-import/sys/fs/tmpfs/tmpfs_vnops.c projects/clang900-import/sys/fs/udf/udf_vnops.c projects/clang900-import/sys/fs/unionfs/union_vnops.c projects/clang900-import/sys/gdb/gdb_int.h projects/clang900-import/sys/gdb/gdb_main.c projects/clang900-import/sys/gdb/gdb_packet.c projects/clang900-import/sys/i386/i386/mp_machdep.c projects/clang900-import/sys/i386/i386/vm_machdep.c projects/clang900-import/sys/i386/include/counter.h projects/clang900-import/sys/i386/include/pcpu.h projects/clang900-import/sys/kern/capabilities.conf projects/clang900-import/sys/kern/init_sysent.c projects/clang900-import/sys/kern/kern_cpuset.c projects/clang900-import/sys/kern/kern_exec.c projects/clang900-import/sys/kern/kern_exit.c projects/clang900-import/sys/kern/kern_lock.c projects/clang900-import/sys/kern/kern_lockstat.c projects/clang900-import/sys/kern/kern_mbuf.c projects/clang900-import/sys/kern/kern_mutex.c projects/clang900-import/sys/kern/kern_proc.c projects/clang900-import/sys/kern/kern_racct.c projects/clang900-import/sys/kern/kern_sendfile.c projects/clang900-import/sys/kern/kern_sysctl.c projects/clang900-import/sys/kern/makesyscalls.sh projects/clang900-import/sys/kern/subr_compressor.c projects/clang900-import/sys/kern/subr_pcpu.c projects/clang900-import/sys/kern/subr_vmem.c projects/clang900-import/sys/kern/sys_pipe.c projects/clang900-import/sys/kern/syscalls.c projects/clang900-import/sys/kern/syscalls.master projects/clang900-import/sys/kern/systrace_args.c projects/clang900-import/sys/kern/uipc_mbuf.c projects/clang900-import/sys/kern/uipc_shm.c projects/clang900-import/sys/kern/uipc_sockbuf.c projects/clang900-import/sys/kern/uipc_socket.c projects/clang900-import/sys/kern/vfs_bio.c projects/clang900-import/sys/kern/vfs_default.c projects/clang900-import/sys/kern/vfs_mount.c projects/clang900-import/sys/kern/vfs_subr.c projects/clang900-import/sys/kern/vfs_vnops.c projects/clang900-import/sys/kern/vnode_if.src projects/clang900-import/sys/kgssapi/krb5/kcrypto_des.c projects/clang900-import/sys/kgssapi/krb5/kcrypto_des3.c projects/clang900-import/sys/mips/include/profile.h projects/clang900-import/sys/mips/include/regnum.h projects/clang900-import/sys/modules/Makefile projects/clang900-import/sys/modules/dtb/allwinner/Makefile projects/clang900-import/sys/modules/linux/Makefile projects/clang900-import/sys/modules/linux64/Makefile projects/clang900-import/sys/modules/nvme/Makefile projects/clang900-import/sys/modules/zlib/Makefile projects/clang900-import/sys/net/ieee8023ad_lacp.c projects/clang900-import/sys/net/ieee8023ad_lacp.h projects/clang900-import/sys/net/if.h projects/clang900-import/sys/net/if_lagg.c projects/clang900-import/sys/net/if_var.h projects/clang900-import/sys/net/if_vlan.c projects/clang900-import/sys/net/netmap.h projects/clang900-import/sys/net/netmap_user.h projects/clang900-import/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c projects/clang900-import/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c projects/clang900-import/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c projects/clang900-import/sys/netgraph/ng_deflate.c projects/clang900-import/sys/netinet/ip_output.c projects/clang900-import/sys/netinet/sctp_indata.c projects/clang900-import/sys/netinet/sctp_indata.h projects/clang900-import/sys/netinet/sctp_input.c projects/clang900-import/sys/netinet/sctp_output.c projects/clang900-import/sys/netinet/sctp_output.h projects/clang900-import/sys/netinet/sctp_pcb.c projects/clang900-import/sys/netinet/tcp.h projects/clang900-import/sys/netinet/tcp_input.c projects/clang900-import/sys/netinet/tcp_output.c projects/clang900-import/sys/netinet/tcp_ratelimit.c projects/clang900-import/sys/netinet/tcp_sack.c projects/clang900-import/sys/netinet/tcp_stacks/rack.c projects/clang900-import/sys/netinet/tcp_stacks/rack_bbr_common.c projects/clang900-import/sys/netinet/tcp_subr.c projects/clang900-import/sys/netinet/tcp_usrreq.c projects/clang900-import/sys/netinet/tcp_var.h projects/clang900-import/sys/netinet6/ip6_output.c projects/clang900-import/sys/netsmb/smb_crypt.c projects/clang900-import/sys/opencrypto/cast.c projects/clang900-import/sys/opencrypto/cast.h projects/clang900-import/sys/opencrypto/cryptodev.c projects/clang900-import/sys/opencrypto/skipjack.c projects/clang900-import/sys/opencrypto/skipjack.h projects/clang900-import/sys/opencrypto/xform_aes_icm.c projects/clang900-import/sys/opencrypto/xform_aes_xts.c projects/clang900-import/sys/opencrypto/xform_blf.c projects/clang900-import/sys/opencrypto/xform_cast5.c projects/clang900-import/sys/opencrypto/xform_cml.c projects/clang900-import/sys/opencrypto/xform_des1.c projects/clang900-import/sys/opencrypto/xform_des3.c projects/clang900-import/sys/opencrypto/xform_enc.h projects/clang900-import/sys/opencrypto/xform_null.c projects/clang900-import/sys/opencrypto/xform_rijndael.c projects/clang900-import/sys/opencrypto/xform_skipjack.c projects/clang900-import/sys/powerpc/booke/pmap.c projects/clang900-import/sys/powerpc/conf/MPC85XX projects/clang900-import/sys/powerpc/conf/MPC85XXSPE projects/clang900-import/sys/powerpc/conf/QORIQ64 projects/clang900-import/sys/powerpc/conf/dpaa/DPAA projects/clang900-import/sys/powerpc/include/counter.h projects/clang900-import/sys/powerpc/powerpc/mp_machdep.c projects/clang900-import/sys/riscv/include/counter.h projects/clang900-import/sys/riscv/riscv/mp_machdep.c projects/clang900-import/sys/security/mac/mac_process.c projects/clang900-import/sys/sys/lockstat.h projects/clang900-import/sys/sys/mbuf.h projects/clang900-import/sys/sys/mount.h projects/clang900-import/sys/sys/param.h projects/clang900-import/sys/sys/pcpu.h projects/clang900-import/sys/sys/proc.h projects/clang900-import/sys/sys/seqc.h projects/clang900-import/sys/sys/sockbuf.h projects/clang900-import/sys/sys/syscall.h projects/clang900-import/sys/sys/syscall.mk projects/clang900-import/sys/sys/sysctl.h projects/clang900-import/sys/sys/sysproto.h projects/clang900-import/sys/sys/vnode.h projects/clang900-import/sys/ufs/ffs/ffs_alloc.c projects/clang900-import/sys/ufs/ffs/ffs_extern.h projects/clang900-import/sys/ufs/ffs/ffs_softdep.c projects/clang900-import/sys/ufs/ffs/ffs_vfsops.c projects/clang900-import/sys/ufs/ufs/ufs_extern.h projects/clang900-import/sys/ufs/ufs/ufs_inode.c projects/clang900-import/sys/vm/uma.h projects/clang900-import/sys/vm/uma_core.c projects/clang900-import/sys/vm/uma_int.h projects/clang900-import/sys/vm/vm_glue.c projects/clang900-import/sys/vm/vm_kern.c projects/clang900-import/sys/vm/vm_map.c projects/clang900-import/sys/vm/vm_map.h projects/clang900-import/sys/vm/vm_object.c projects/clang900-import/sys/vm/vm_object.h projects/clang900-import/sys/vm/vm_page.c projects/clang900-import/sys/vm/vm_page.h projects/clang900-import/sys/vm/vm_pageout.c projects/clang900-import/sys/vm/vm_pagequeue.h projects/clang900-import/sys/vm/vm_swapout.c projects/clang900-import/sys/vm/vnode_pager.c projects/clang900-import/tests/sys/fs/Makefile projects/clang900-import/tests/sys/fs/fusefs/mockfs.cc projects/clang900-import/tests/sys/fs/fusefs/xattr.cc projects/clang900-import/tests/sys/kern/ptrace_test.c projects/clang900-import/tests/sys/netpfil/common/Makefile projects/clang900-import/tests/sys/netpfil/common/pass_block.sh projects/clang900-import/tests/sys/netpfil/pf/forward.sh projects/clang900-import/tests/sys/netpfil/pf/icmp.sh projects/clang900-import/tests/sys/netpfil/pf/pass_block.sh projects/clang900-import/tests/sys/posixshm/posixshm_test.c projects/clang900-import/tests/sys/sys/Makefile projects/clang900-import/usr.bin/ar/write.c projects/clang900-import/usr.bin/bzip2/Makefile projects/clang900-import/usr.bin/bzip2recover/Makefile projects/clang900-import/usr.bin/cpuset/cpuset.c projects/clang900-import/usr.bin/gprof/Makefile projects/clang900-import/usr.bin/gprof/gprof.c projects/clang900-import/usr.bin/gprof/gprof.h projects/clang900-import/usr.bin/indent/indent.1 projects/clang900-import/usr.bin/ktrace/ktrace.1 projects/clang900-import/usr.bin/last/last.c projects/clang900-import/usr.bin/vtfontcvt/vtfontcvt.c projects/clang900-import/usr.bin/w/w.c projects/clang900-import/usr.sbin/makefs/ffs/buf.h projects/clang900-import/usr.sbin/makefs/msdos.c projects/clang900-import/usr.sbin/makefs/msdos.h projects/clang900-import/usr.sbin/makefs/msdos/Makefile.inc projects/clang900-import/usr.sbin/makefs/msdos/direntry.h projects/clang900-import/usr.sbin/makefs/msdos/msdosfs_conv.c projects/clang900-import/usr.sbin/makefs/msdos/msdosfs_denode.c projects/clang900-import/usr.sbin/makefs/msdos/msdosfs_fat.c projects/clang900-import/usr.sbin/makefs/msdos/msdosfs_lookup.c projects/clang900-import/usr.sbin/makefs/msdos/msdosfs_vfsops.c projects/clang900-import/usr.sbin/makefs/msdos/msdosfs_vnops.c projects/clang900-import/usr.sbin/mixer/Makefile projects/clang900-import/usr.sbin/mixer/mixer.c projects/clang900-import/usr.sbin/pciconf/cap.c projects/clang900-import/usr.sbin/pmcstudy/Makefile Directory Properties: projects/clang900-import/ (props changed) projects/clang900-import/cddl/ (props changed) projects/clang900-import/cddl/contrib/opensolaris/ (props changed) projects/clang900-import/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/clang900-import/contrib/libc++/ (props changed) projects/clang900-import/contrib/libstdc++/ (props changed) projects/clang900-import/contrib/llvm/ (props changed) projects/clang900-import/contrib/llvm/tools/lldb/ (props changed) projects/clang900-import/contrib/netbsd-tests/ (props changed) projects/clang900-import/contrib/sendmail/ (props changed) projects/clang900-import/contrib/wpa/ (props changed) projects/clang900-import/gnu/lib/ (props changed) projects/clang900-import/sys/cddl/contrib/opensolaris/ (props changed) projects/clang900-import/sys/contrib/ipfilter/ (props changed) projects/clang900-import/sys/contrib/zlib/ (props changed) Modified: projects/clang900-import/ObsoleteFiles.inc ============================================================================== --- projects/clang900-import/ObsoleteFiles.inc Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/ObsoleteFiles.inc Tue Sep 3 05:58:43 2019 (r351732) @@ -49,6 +49,9 @@ OLD_FILES+=usr/include/c++/v1/experimental/system_erro OLD_FILES+=usr/include/c++/v1/experimental/tuple OLD_FILES+=usr/lib/libc++fs.a +# 20190825: zlib 1.0.4 removed from kernel +OLD_FILES+=usr/include/sys/zlib.h +OLD_FILES+=usr/include/sys/zutil.h # 20190817: pft_ping.py and sniffer.py moved to /usr/tests/sys/netpfil/common OLD_FILES+=usr/tests/sys/netpfil/pf/sniffer.py OLD_FILES+=usr/tests/sys/netpfil/pf/pft_ping.py @@ -65,8 +68,8 @@ OLD_FILES+=usr/share/man/man3/cap_random_buf.3.gz OLD_FILES+=usr/share/man/man9/vm_page_hold.9.gz # 20190618: sys/capability.h removed (sys/capsicum.h is the one to use) OLD_FILES+=usr/include/sys/capability.h -# 20190615: sys/pwm.h renamed to dev/pwmc.h and pwm(9) removed -OLD_FILES+=usr/include/sys/pwm.h usr/share/man/man9/pwm.9.gz +# 20190615: sys/pwm.h renamed to dev/pwmc.h +OLD_FILES+=usr/include/sys/pwm.h # 20190612: new clang import which bumps version from 8.0.0 to 8.0.1. OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/allocator_interface.h OLD_FILES+=usr/lib/clang/8.0.0/include/sanitizer/asan_interface.h Modified: projects/clang900-import/RELNOTES ============================================================================== --- projects/clang900-import/RELNOTES Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/RELNOTES Tue Sep 3 05:58:43 2019 (r351732) @@ -10,7 +10,25 @@ newline. Entries should be separated by a newline. Changes to this file should not be MFCed. -r351201: +r351522: + Add kernel-side support for in-kernel Transport Layer Security + (KTLS). KTLS permits using sendfile(2) over sockets using + TLS. + +r351361: + Add probes for lockmgr(9) to the lockstat DTrace provider, add + corresponding lockstat(1) events, and document the new probes in + dtrace_lockstat.4. + +r351356: + Intel RST is a new 'feature' that remaps NVMe devices from + their normal location to part of the AHCI bar space. This + will eliminate the need to set the BIOS SATA setting from RST + to AHCI causing the nvme drive to be erased before FreeBSD + will see the nvme drive. FreeBSD will now be able to see the + nvme drive now in the default config. + +r351201, r351372: Add a vop_stdioctl() call, so that file systems that do not support holes will have a trivial implementation of lseek(SEEK_DATA/SEEK_HOLE). The algorithm appears to be compatible with the POSIX draft and @@ -18,6 +36,8 @@ r351201: does not support holes. Prior to this patch, lseek(2) would reply -1 with errno set to ENOTTY for SEEK_DATA/SEEK_HOLE on files in file systems that do not support holes. + r351372 maps ENOTTY to EINVAL for lseek(SEEK_DATA/SEEK_HOLE) for + any other cases, such as a ENOTTY return from vn_bmap_seekhole(). r350665: The fuse driver has been renamed to fusefs(5) and been substantially @@ -49,6 +69,9 @@ r350315, r350316: r350307: libcap_random(3) has been removed. Applications can use native APIs to get random data in capability mode. + +r349529,r349530: + Add support for using unmapped mbufs with sendfile(2). r349352: nand(4) and related components have been removed. Modified: projects/clang900-import/UPDATING ============================================================================== --- projects/clang900-import/UPDATING Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/UPDATING Tue Sep 3 05:58:43 2019 (r351732) @@ -26,6 +26,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20190823: + Several of ping6's options have been renamed for better consistency + with ping. If you use any of -ARWXaghmrtwx, you must update your + scripts. See ping6(8) for details. + 20190727: The vfs.fusefs.sync_unmount and vfs.fusefs.init_backgrounded sysctls and the "-o sync_unmount" and "-o init_backgrounded" mount options have Modified: projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil/tst.DestructWithFunction.d.ksh ============================================================================== --- projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil/tst.DestructWithFunction.d.ksh Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil/tst.DestructWithFunction.d.ksh Tue Sep 3 05:58:43 2019 (r351732) @@ -43,7 +43,7 @@ reader() while true do sleep 0.1 - cat /etc/motd > /dev/null + cat /COPYRIGHT > /dev/null done } Modified: projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil/tst.ZeroFunctionProbes.d.ksh ============================================================================== --- projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil/tst.ZeroFunctionProbes.d.ksh Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil/tst.ZeroFunctionProbes.d.ksh Tue Sep 3 05:58:43 2019 (r351732) @@ -44,7 +44,7 @@ reader() while true do sleep 0.1 - cat /etc/motd > /dev/null + cat /COPYRIGHT > /dev/null done } Modified: projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh ============================================================================== --- projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/tst.ipv6localicmp.ksh Tue Sep 3 05:58:43 2019 (r351732) @@ -55,7 +55,7 @@ else removeinet6=0 fi -$dtrace -c "/sbin/ping6 -q -c 1 -X 3 $local" -qs /dev/stdin <ip_saddr == "$local" && args[2]->ip_daddr == "$local" && Modified: projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.NoSpecBuffer.exe ============================================================================== --- projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.NoSpecBuffer.exe Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/speculation/tst.NoSpecBuffer.exe Tue Sep 3 05:58:43 2019 (r351732) @@ -26,5 +26,5 @@ while true do sleep 0.1 - cat /etc/motd > /dev/null + cat /COPYRIGHT > /dev/null done Modified: projects/clang900-import/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c ============================================================================== --- projects/clang900-import/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c Tue Sep 3 05:58:43 2019 (r351732) @@ -158,29 +158,33 @@ static ls_event_info_t g_event_info[LS_MAX_EVENTS] = { { 'C', "Lock", "R/W writer blocked by readers", "nsec", "lockstat:::rw-block", "arg2 == 0 && arg3 == 0 && arg4" }, { 'C', "Lock", "R/W reader blocked by writer", "nsec", - "lockstat:::rw-block", "arg2 != 0 && arg3 == 1" }, + "lockstat:::rw-block", "arg2 == 1 && arg3 == 1" }, { 'C', "Lock", "R/W reader blocked by write wanted", "nsec", - "lockstat:::rw-block", "arg2 != 0 && arg3 == 0 && arg4" }, + "lockstat:::rw-block", "arg2 == 1 && arg3 == 0 && arg4" }, { 'C', "Lock", "R/W writer spin on writer", "nsec", "lockstat:::rw-spin", "arg2 == 0 && arg3 == 1" }, { 'C', "Lock", "R/W writer spin on readers", "nsec", "lockstat:::rw-spin", "arg2 == 0 && arg3 == 0 && arg4" }, { 'C', "Lock", "R/W reader spin on writer", "nsec", - "lockstat:::rw-spin", "arg2 != 0 && arg3 == 1" }, + "lockstat:::rw-spin", "arg2 == 1 && arg3 == 1" }, { 'C', "Lock", "R/W reader spin on write wanted", "nsec", - "lockstat:::rw-spin", "arg2 != 0 && arg3 == 0 && arg4" }, + "lockstat:::rw-spin", "arg2 == 1 && arg3 == 0 && arg4" }, { 'C', "Lock", "SX exclusive block", "nsec", "lockstat:::sx-block", "arg2 == 0" }, { 'C', "Lock", "SX shared block", "nsec", - "lockstat:::sx-block", "arg2 != 0" }, + "lockstat:::sx-block", "arg2 == 1" }, { 'C', "Lock", "SX exclusive spin", "nsec", "lockstat:::sx-spin", "arg2 == 0" }, { 'C', "Lock", "SX shared spin", "nsec", - "lockstat:::sx-spin", "arg2 != 0" }, - { 'C', "Lock", "Unknown event (type 16)", "units" }, - { 'C', "Lock", "Unknown event (type 17)", "units" }, - { 'C', "Lock", "Unknown event (type 18)", "units" }, - { 'C', "Lock", "Unknown event (type 19)", "units" }, + "lockstat:::sx-spin", "arg2 == 1" }, + { 'C', "Lock", "lockmgr writer blocked by writer", "nsec", + "lockstat:::lockmgr-block", "arg2 == 0 && arg3 == 1" }, + { 'C', "Lock", "lockmgr writer blocked by readers", "nsec", + "lockstat:::lockmgr-block", "arg2 == 0 && arg3 == 0 && arg4" }, + { 'C', "Lock", "lockmgr reader blocked by writer", "nsec", + "lockstat:::lockmgr-block", "arg2 == 1 && arg3 == 1" }, + { 'C', "Lock", "lockmgr reader blocked by write wanted", "nsec", + "lockstat:::lockmgr-block", "arg2 == 1 && arg3 == 0 && arg4" }, { 'C', "Lock", "Unknown event (type 20)", "units" }, { 'C', "Lock", "Unknown event (type 21)", "units" }, { 'C', "Lock", "Unknown event (type 22)", "units" }, @@ -206,13 +210,17 @@ static ls_event_info_t g_event_info[LS_MAX_EVENTS] = { "lockstat:::rw-release", "arg1 == 1", "lockstat:::rw-acquire" }, { 'H', "Lock", "SX shared hold", "nsec", - "lockstat:::sx-release", "arg1 == 0", + "lockstat:::sx-release", "arg1 == 1", "lockstat:::sx-acquire" }, { 'H', "Lock", "SX exclusive hold", "nsec", - "lockstat:::sx-release", "arg1 == 1", + "lockstat:::sx-release", "arg1 == 0", "lockstat:::sx-acquire" }, - { 'H', "Lock", "Unknown event (type 38)", "units" }, - { 'H', "Lock", "Unknown event (type 39)", "units" }, + { 'H', "Lock", "lockmgr shared hold", "nsec", + "lockstat:::lockmgr-release", "arg1 == 1", + "lockstat:::lockmgr-acquire" }, + { 'H', "Lock", "lockmgr exclusive hold", "nsec", + "lockstat:::lockmgr-release,lockstat:::lockmgr-disown", "arg1 == 0", + "lockstat:::lockmgr-acquire" }, { 'H', "Lock", "Unknown event (type 40)", "units" }, { 'H', "Lock", "Unknown event (type 41)", "units" }, { 'H', "Lock", "Unknown event (type 42)", "units" }, Modified: projects/clang900-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_diff.c ============================================================================== --- projects/clang900-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_diff.c Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_diff.c Tue Sep 3 05:58:43 2019 (r351732) @@ -472,7 +472,7 @@ differ(void *arg) if (err) return ((void *)-1); if (di->zerr) { - ASSERT(di->zerr == EINVAL); + ASSERT(di->zerr == EPIPE); (void) snprintf(di->errbuf, sizeof (di->errbuf), dgettext(TEXT_DOMAIN, "Internal error: bad data from diff IOCTL")); Modified: projects/clang900-import/contrib/libc++/include/cstdio ============================================================================== --- projects/clang900-import/contrib/libc++/include/cstdio Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/libc++/include/cstdio Tue Sep 3 05:58:43 2019 (r351732) @@ -73,7 +73,6 @@ int fputc(int c, FILE* stream); int fputs(const char* restrict s, FILE* restrict stream); int getc(FILE* stream); int getchar(void); -char* gets(char* s); // removed in C++14 int putc(int c, FILE* stream); int putchar(int c); int puts(const char* s); @@ -152,9 +151,6 @@ using ::tmpnam; #ifndef _LIBCPP_HAS_NO_STDIN using ::getchar; -#if _LIBCPP_STD_VER <= 11 && !defined(_LIBCPP_MSVCRT) -using ::gets; -#endif using ::scanf; using ::vscanf; #endif Modified: projects/clang900-import/contrib/libstdc++/include/c_std/std_cstdio.h ============================================================================== --- projects/clang900-import/contrib/libstdc++/include/c_std/std_cstdio.h Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/libstdc++/include/c_std/std_cstdio.h Tue Sep 3 05:58:43 2019 (r351732) @@ -74,7 +74,6 @@ #undef fwrite #undef getc #undef getchar -#undef gets #undef perror #undef printf #undef putc @@ -121,7 +120,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std) using ::fwrite; using ::getc; using ::getchar; - using ::gets; using ::perror; using ::printf; using ::putc; Modified: projects/clang900-import/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp ============================================================================== --- projects/clang900-import/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/llvm/tools/lldb/source/Plugins/Process/FreeBSD/ProcessMonitor.cpp Tue Sep 3 05:58:43 2019 (r351732) @@ -787,7 +787,7 @@ ProcessMonitor::~ProcessMonitor() { StopMonitor(); } // Thread setup and tear down. void ProcessMonitor::StartLaunchOpThread(LaunchArgs *args, Status &error) { - static const char *g_thread_name = "lldb.process.freebsd.operation"; + static const char *g_thread_name = "freebsd.op"; if (m_operation_thread->IsJoinable()) return; @@ -955,7 +955,7 @@ FINISH: void ProcessMonitor::StartAttachOpThread(AttachArgs *args, lldb_private::Status &error) { - static const char *g_thread_name = "lldb.process.freebsd.operation"; + static const char *g_thread_name = "freebsd.op"; if (m_operation_thread->IsJoinable()) return; Modified: projects/clang900-import/contrib/netbsd-tests/lib/libc/ssp/h_gets.c ============================================================================== --- projects/clang900-import/contrib/netbsd-tests/lib/libc/ssp/h_gets.c Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/netbsd-tests/lib/libc/ssp/h_gets.c Tue Sep 3 05:58:43 2019 (r351732) @@ -33,6 +33,24 @@ __RCSID("$NetBSD: h_gets.c,v 1.1 2010/12/27 02:04:19 p #include +#ifdef __FreeBSD__ +/* + * We want to test the gets() implementation, but cannot simply link against + * the gets symbol because it is not in the default version. (We've made it + * unavailable by default on FreeBSD because it should not be used.) + * + * The next two lines create an unsafe_gets() function that resolves to + * gets@FBSD_1.0, which we call from our local gets() implementation. + */ +__sym_compat(gets, unsafe_gets, FBSD_1.0); +char *unsafe_gets(char *); + +char *gets(char *buf) +{ + return unsafe_gets(buf); +} +#endif + int main(int argc, char *argv[]) { Modified: projects/clang900-import/contrib/sendmail/src/conf.c ============================================================================== --- projects/clang900-import/contrib/sendmail/src/conf.c Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/sendmail/src/conf.c Tue Sep 3 05:58:43 2019 (r351732) @@ -365,6 +365,20 @@ setdefaults(e) TLS_Srv_Opts = TLS_I_SRV; if (NULL == EVP_digest) EVP_digest = EVP_md5(); + Srv_SSL_Options = SSL_OP_ALL; + Clt_SSL_Options = SSL_OP_ALL +# ifdef SSL_OP_NO_SSLv2 + | SSL_OP_NO_SSLv2 +# endif +# ifdef SSL_OP_NO_TICKET + | SSL_OP_NO_TICKET +# endif + ; +# ifdef SSL_OP_TLSEXT_PADDING + /* SSL_OP_TLSEXT_PADDING breaks compatibility with some sites */ + Srv_SSL_Options &= ~SSL_OP_TLSEXT_PADDING; + Clt_SSL_Options &= ~SSL_OP_TLSEXT_PADDING; +# endif /* SSL_OP_TLSEXT_PADDING */ #endif /* STARTTLS */ #ifdef HESIOD_INIT HesiodContext = NULL; Modified: projects/clang900-import/contrib/sendmail/src/readcf.c ============================================================================== --- projects/clang900-import/contrib/sendmail/src/readcf.c Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/sendmail/src/readcf.c Tue Sep 3 05:58:43 2019 (r351732) @@ -159,22 +159,6 @@ readcf(cfname, safe, e) FileName = cfname; LineNumber = 0; -#if STARTTLS - Srv_SSL_Options = SSL_OP_ALL; - Clt_SSL_Options = SSL_OP_ALL -# ifdef SSL_OP_NO_SSLv2 - | SSL_OP_NO_SSLv2 -# endif -# ifdef SSL_OP_NO_TICKET - | SSL_OP_NO_TICKET -# endif - ; -# ifdef SSL_OP_TLSEXT_PADDING - /* SSL_OP_TLSEXT_PADDING breaks compatibility with some sites */ - Srv_SSL_Options &= ~SSL_OP_TLSEXT_PADDING; - Clt_SSL_Options &= ~SSL_OP_TLSEXT_PADDING; -# endif /* SSL_OP_TLSEXT_PADDING */ -#endif /* STARTTLS */ if (DontLockReadFiles) sff |= SFF_NOLOCK; cf = safefopen(cfname, O_RDONLY, 0444, sff); Modified: projects/clang900-import/contrib/wpa/hostapd/ChangeLog ============================================================================== --- projects/clang900-import/contrib/wpa/hostapd/ChangeLog Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/wpa/hostapd/ChangeLog Tue Sep 3 05:58:43 2019 (r351732) @@ -1,5 +1,29 @@ ChangeLog for hostapd +2019-08-07 - v2.9 + * SAE changes + - disable use of groups using Brainpool curves + - improved protection against side channel attacks + [https://w1.fi/security/2019-6/] + * EAP-pwd changes + - disable use of groups using Brainpool curves + - improved protection against side channel attacks + [https://w1.fi/security/2019-6/] + * fixed FT-EAP initial mobility domain association using PMKSA caching + * added configuration of airtime policy + * fixed FILS to and RSNE into (Re)Association Response frames + * fixed DPP bootstrapping URI parser of channel list + * added support for regulatory WMM limitation (for ETSI) + * added support for MACsec Key Agreement using IEEE 802.1X/PSK + * added experimental support for EAP-TEAP server (RFC 7170) + * added experimental support for EAP-TLS server with TLS v1.3 + * added support for two server certificates/keys (RSA/ECC) + * added AKMSuiteSelector into "STA " control interface data to + determine with AKM was used for an association + * added eap_sim_id parameter to allow EAP-SIM/AKA server pseudonym and + fast reauthentication use to be disabled + * fixed an ECDH operation corner case with OpenSSL + 2019-04-21 - v2.8 * SAE changes - added support for SAE Password Identifier Modified: projects/clang900-import/contrib/wpa/hostapd/config_file.c ============================================================================== --- projects/clang900-import/contrib/wpa/hostapd/config_file.c Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/wpa/hostapd/config_file.c Tue Sep 3 05:58:43 2019 (r351732) @@ -24,14 +24,6 @@ #include "config_file.h" -#ifndef CONFIG_NO_RADIUS -#ifdef EAP_SERVER -static struct hostapd_radius_attr * -hostapd_parse_radius_attr(const char *value); -#endif /* EAP_SERVER */ -#endif /* CONFIG_NO_RADIUS */ - - #ifndef CONFIG_NO_VLAN static int hostapd_config_read_vlan_file(struct hostapd_bss_config *bss, const char *fname) @@ -660,76 +652,7 @@ hostapd_config_read_radius_addr(struct hostapd_radius_ } -static struct hostapd_radius_attr * -hostapd_parse_radius_attr(const char *value) -{ - const char *pos; - char syntax; - struct hostapd_radius_attr *attr; - size_t len; - attr = os_zalloc(sizeof(*attr)); - if (attr == NULL) - return NULL; - - attr->type = atoi(value); - - pos = os_strchr(value, ':'); - if (pos == NULL) { - attr->val = wpabuf_alloc(1); - if (attr->val == NULL) { - os_free(attr); - return NULL; - } - wpabuf_put_u8(attr->val, 0); - return attr; - } - - pos++; - if (pos[0] == '\0' || pos[1] != ':') { - os_free(attr); - return NULL; - } - syntax = *pos++; - pos++; - - switch (syntax) { - case 's': - attr->val = wpabuf_alloc_copy(pos, os_strlen(pos)); - break; - case 'x': - len = os_strlen(pos); - if (len & 1) - break; - len /= 2; - attr->val = wpabuf_alloc(len); - if (attr->val == NULL) - break; - if (hexstr2bin(pos, wpabuf_put(attr->val, len), len) < 0) { - wpabuf_free(attr->val); - os_free(attr); - return NULL; - } - break; - case 'd': - attr->val = wpabuf_alloc(4); - if (attr->val) - wpabuf_put_be32(attr->val, atoi(pos)); - break; - default: - os_free(attr); - return NULL; - } - - if (attr->val == NULL) { - os_free(attr); - return NULL; - } - - return attr; -} - - static int hostapd_parse_das_client(struct hostapd_bss_config *bss, char *val) { char *secret; @@ -2313,6 +2236,42 @@ static unsigned int parse_tls_flags(const char *val) #endif /* EAP_SERVER */ +#ifdef CONFIG_AIRTIME_POLICY +static int add_airtime_weight(struct hostapd_bss_config *bss, char *value) +{ + struct airtime_sta_weight *wt; + char *pos, *next; + + wt = os_zalloc(sizeof(*wt)); + if (!wt) + return -1; + + /* 02:01:02:03:04:05 10 */ + pos = value; + next = os_strchr(pos, ' '); + if (next) + *next++ = '\0'; + if (!next || hwaddr_aton(pos, wt->addr)) { + wpa_printf(MSG_ERROR, "Invalid station address: '%s'", pos); + os_free(wt); + return -1; + } + + pos = next; + wt->weight = atoi(pos); + if (!wt->weight) { + wpa_printf(MSG_ERROR, "Invalid weight: '%s'", pos); + os_free(wt); + return -1; + } + + wt->next = bss->airtime_weight_list; + bss->airtime_weight_list = wt; + return 0; +} +#endif /* CONFIG_AIRTIME_POLICY */ + + #ifdef CONFIG_SAE static int parse_sae_password(struct hostapd_bss_config *bss, const char *val) { @@ -2376,6 +2335,36 @@ fail: #endif /* CONFIG_SAE */ +#ifdef CONFIG_DPP2 +static int hostapd_dpp_controller_parse(struct hostapd_bss_config *bss, + const char *pos) +{ + struct dpp_controller_conf *conf; + char *val; + + conf = os_zalloc(sizeof(*conf)); + if (!conf) + return -1; + val = get_param(pos, "ipaddr="); + if (!val || hostapd_parse_ip_addr(val, &conf->ipaddr)) + goto fail; + os_free(val); + val = get_param(pos, "pkhash="); + if (!val || os_strlen(val) != 2 * SHA256_MAC_LEN || + hexstr2bin(val, conf->pkhash, SHA256_MAC_LEN) < 0) + goto fail; + os_free(val); + conf->next = bss->dpp_controller; + bss->dpp_controller = conf; + return 0; +fail: + os_free(val); + os_free(conf); + return -1; +} +#endif /* CONFIG_DPP2 */ + + static int hostapd_config_fill(struct hostapd_config *conf, struct hostapd_bss_config *bss, const char *buf, char *pos, int line) @@ -2496,7 +2485,11 @@ static int hostapd_config_fill(struct hostapd_config * } else if (os_strcmp(buf, "eapol_version") == 0) { int eapol_version = atoi(pos); +#ifdef CONFIG_MACSEC + if (eapol_version < 1 || eapol_version > 3) { +#else /* CONFIG_MACSEC */ if (eapol_version < 1 || eapol_version > 2) { +#endif /* CONFIG_MACSEC */ wpa_printf(MSG_ERROR, "Line %d: invalid EAPOL version (%d): '%s'.", line, eapol_version, pos); @@ -2519,12 +2512,21 @@ static int hostapd_config_fill(struct hostapd_config * } else if (os_strcmp(buf, "server_cert") == 0) { os_free(bss->server_cert); bss->server_cert = os_strdup(pos); + } else if (os_strcmp(buf, "server_cert2") == 0) { + os_free(bss->server_cert2); + bss->server_cert2 = os_strdup(pos); } else if (os_strcmp(buf, "private_key") == 0) { os_free(bss->private_key); bss->private_key = os_strdup(pos); + } else if (os_strcmp(buf, "private_key2") == 0) { + os_free(bss->private_key2); + bss->private_key2 = os_strdup(pos); } else if (os_strcmp(buf, "private_key_passwd") == 0) { os_free(bss->private_key_passwd); bss->private_key_passwd = os_strdup(pos); + } else if (os_strcmp(buf, "private_key_passwd2") == 0) { + os_free(bss->private_key_passwd2); + bss->private_key_passwd2 = os_strdup(pos); } else if (os_strcmp(buf, "check_cert_subject") == 0) { if (!pos[0]) { wpa_printf(MSG_ERROR, "Line %d: unknown check_cert_subject '%s'", @@ -2605,6 +2607,20 @@ static int hostapd_config_fill(struct hostapd_config * } else if (os_strcmp(buf, "pac_key_refresh_time") == 0) { bss->pac_key_refresh_time = atoi(pos); #endif /* EAP_SERVER_FAST */ +#ifdef EAP_SERVER_TEAP + } else if (os_strcmp(buf, "eap_teap_auth") == 0) { + int val = atoi(pos); + + if (val < 0 || val > 1) { + wpa_printf(MSG_ERROR, + "Line %d: Invalid eap_teap_auth value", + line); + return 1; + } + bss->eap_teap_auth = val; + } else if (os_strcmp(buf, "eap_teap_pac_no_inner") == 0) { + bss->eap_teap_pac_no_inner = atoi(pos); +#endif /* EAP_SERVER_TEAP */ #ifdef EAP_SERVER_SIM } else if (os_strcmp(buf, "eap_sim_db") == 0) { os_free(bss->eap_sim_db); @@ -2613,6 +2629,8 @@ static int hostapd_config_fill(struct hostapd_config * bss->eap_sim_db_timeout = atoi(pos); } else if (os_strcmp(buf, "eap_sim_aka_result_ind") == 0) { bss->eap_sim_aka_result_ind = atoi(pos); + } else if (os_strcmp(buf, "eap_sim_id") == 0) { + bss->eap_sim_id = atoi(pos); #endif /* EAP_SERVER_SIM */ #ifdef EAP_SERVER_TNC } else if (os_strcmp(buf, "tnc") == 0) { @@ -2816,6 +2834,9 @@ static int hostapd_config_fill(struct hostapd_config * a = a->next; a->next = attr; } + } else if (os_strcmp(buf, "radius_req_attr_sqlite") == 0) { + os_free(bss->radius_req_attr_sqlite); + bss->radius_req_attr_sqlite = os_strdup(pos); } else if (os_strcmp(buf, "radius_das_port") == 0) { bss->radius_das_port = atoi(pos); } else if (os_strcmp(buf, "radius_das_client") == 0) { @@ -3442,6 +3463,8 @@ static int hostapd_config_fill(struct hostapd_config * conf->he_op.he_twt_required = atoi(pos); } else if (os_strcmp(buf, "he_rts_threshold") == 0) { conf->he_op.he_rts_threshold = atoi(pos); + } else if (os_strcmp(buf, "he_basic_mcs_nss_set") == 0) { + conf->he_op.he_basic_mcs_nss_set = atoi(pos); } else if (os_strcmp(buf, "he_mu_edca_qos_info_param_count") == 0) { conf->he_mu_edca.he_qos_info |= set_he_cap(atoi(pos), HE_QOS_INFO_EDCA_PARAM_SET_COUNT); @@ -3526,6 +3549,20 @@ static int hostapd_config_fill(struct hostapd_config * } else if (os_strcmp(buf, "he_mu_edca_ac_vo_timer") == 0) { conf->he_mu_edca.he_mu_ac_vo_param[HE_MU_AC_PARAM_TIMER_IDX] = atoi(pos) & 0xff; + } else if (os_strcmp(buf, "he_spr_sr_control") == 0) { + conf->spr.sr_control = atoi(pos) & 0xff; + } else if (os_strcmp(buf, "he_spr_non_srg_obss_pd_max_offset") == 0) { + conf->spr.non_srg_obss_pd_max_offset = atoi(pos); + } else if (os_strcmp(buf, "he_spr_srg_obss_pd_min_offset") == 0) { + conf->spr.srg_obss_pd_min_offset = atoi(pos); + } else if (os_strcmp(buf, "he_spr_srg_obss_pd_max_offset") == 0) { + conf->spr.srg_obss_pd_max_offset = atoi(pos); + } else if (os_strcmp(buf, "he_oper_chwidth") == 0) { + conf->he_oper_chwidth = atoi(pos); + } else if (os_strcmp(buf, "he_oper_centr_freq_seg0_idx") == 0) { + conf->he_oper_centr_freq_seg0_idx = atoi(pos); + } else if (os_strcmp(buf, "he_oper_centr_freq_seg1_idx") == 0) { + conf->he_oper_centr_freq_seg1_idx = atoi(pos); #endif /* CONFIG_IEEE80211AX */ } else if (os_strcmp(buf, "max_listen_interval") == 0) { bss->max_listen_interval = atoi(pos); @@ -4298,6 +4335,11 @@ static int hostapd_config_fill(struct hostapd_config * } else if (os_strcmp(buf, "dpp_csign") == 0) { if (parse_wpabuf_hex(line, buf, &bss->dpp_csign, pos)) return 1; +#ifdef CONFIG_DPP2 + } else if (os_strcmp(buf, "dpp_controller") == 0) { + if (hostapd_dpp_controller_parse(bss, pos)) + return 1; +#endif /* CONFIG_DPP2 */ #endif /* CONFIG_DPP */ #ifdef CONFIG_OWE } else if (os_strcmp(buf, "owe_transition_bssid") == 0) { @@ -4349,6 +4391,121 @@ static int hostapd_config_fill(struct hostapd_config * conf->rssi_reject_assoc_timeout = atoi(pos); } else if (os_strcmp(buf, "pbss") == 0) { bss->pbss = atoi(pos); +#ifdef CONFIG_AIRTIME_POLICY + } else if (os_strcmp(buf, "airtime_mode") == 0) { + int val = atoi(pos); + + if (val < 0 || val > AIRTIME_MODE_MAX) { + wpa_printf(MSG_ERROR, "Line %d: Unknown airtime_mode", + line); + return 1; + } + conf->airtime_mode = val; + } else if (os_strcmp(buf, "airtime_update_interval") == 0) { + conf->airtime_update_interval = atoi(pos); + } else if (os_strcmp(buf, "airtime_bss_weight") == 0) { + bss->airtime_weight = atoi(pos); + } else if (os_strcmp(buf, "airtime_bss_limit") == 0) { + int val = atoi(pos); + + if (val < 0 || val > 1) { + wpa_printf(MSG_ERROR, + "Line %d: Invalid airtime_bss_limit (must be 0 or 1)", + line); + return 1; + } + bss->airtime_limit = val; + } else if (os_strcmp(buf, "airtime_sta_weight") == 0) { + if (add_airtime_weight(bss, pos) < 0) { + wpa_printf(MSG_ERROR, + "Line %d: Invalid airtime weight '%s'", + line, pos); + return 1; + } +#endif /* CONFIG_AIRTIME_POLICY */ +#ifdef CONFIG_MACSEC + } else if (os_strcmp(buf, "macsec_policy") == 0) { + int macsec_policy = atoi(pos); + + if (macsec_policy < 0 || macsec_policy > 1) { + wpa_printf(MSG_ERROR, + "Line %d: invalid macsec_policy (%d): '%s'.", + line, macsec_policy, pos); + return 1; + } + bss->macsec_policy = macsec_policy; + } else if (os_strcmp(buf, "macsec_integ_only") == 0) { + int macsec_integ_only = atoi(pos); + + if (macsec_integ_only < 0 || macsec_integ_only > 1) { + wpa_printf(MSG_ERROR, + "Line %d: invalid macsec_integ_only (%d): '%s'.", + line, macsec_integ_only, pos); + return 1; + } + bss->macsec_integ_only = macsec_integ_only; + } else if (os_strcmp(buf, "macsec_replay_protect") == 0) { + int macsec_replay_protect = atoi(pos); + + if (macsec_replay_protect < 0 || macsec_replay_protect > 1) { + wpa_printf(MSG_ERROR, + "Line %d: invalid macsec_replay_protect (%d): '%s'.", + line, macsec_replay_protect, pos); + return 1; + } + bss->macsec_replay_protect = macsec_replay_protect; + } else if (os_strcmp(buf, "macsec_replay_window") == 0) { + bss->macsec_replay_window = atoi(pos); + } else if (os_strcmp(buf, "macsec_port") == 0) { + int macsec_port = atoi(pos); + + if (macsec_port < 1 || macsec_port > 65534) { + wpa_printf(MSG_ERROR, + "Line %d: invalid macsec_port (%d): '%s'.", + line, macsec_port, pos); + return 1; + } + bss->macsec_port = macsec_port; + } else if (os_strcmp(buf, "mka_priority") == 0) { + int mka_priority = atoi(pos); + + if (mka_priority < 0 || mka_priority > 255) { + wpa_printf(MSG_ERROR, + "Line %d: invalid mka_priority (%d): '%s'.", + line, mka_priority, pos); + return 1; + } + bss->mka_priority = mka_priority; + } else if (os_strcmp(buf, "mka_cak") == 0) { + size_t len = os_strlen(pos); + + if (len > 2 * MACSEC_CAK_MAX_LEN || + (len != 2 * 16 && len != 2 * 32) || + hexstr2bin(pos, bss->mka_cak, len / 2)) { + wpa_printf(MSG_ERROR, "Line %d: Invalid MKA-CAK '%s'.", + line, pos); + return 1; + } + bss->mka_cak_len = len / 2; + bss->mka_psk_set |= MKA_PSK_SET_CAK; + } else if (os_strcmp(buf, "mka_ckn") == 0) { + size_t len = os_strlen(pos); + + if (len > 2 * MACSEC_CKN_MAX_LEN || /* too long */ + len < 2 || /* too short */ + len % 2 != 0 /* not an integral number of bytes */) { + wpa_printf(MSG_ERROR, "Line %d: Invalid MKA-CKN '%s'.", + line, pos); + return 1; + } + bss->mka_ckn_len = len / 2; + if (hexstr2bin(pos, bss->mka_ckn, bss->mka_ckn_len)) { + wpa_printf(MSG_ERROR, "Line %d: Invalid MKA-CKN '%s'.", + line, pos); + return -1; + } + bss->mka_psk_set |= MKA_PSK_SET_CKN; +#endif /* CONFIG_MACSEC */ } else { wpa_printf(MSG_ERROR, "Line %d: unknown configuration item '%s'", Modified: projects/clang900-import/contrib/wpa/hostapd/ctrl_iface.c ============================================================================== --- projects/clang900-import/contrib/wpa/hostapd/ctrl_iface.c Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/wpa/hostapd/ctrl_iface.c Tue Sep 3 05:58:43 2019 (r351732) @@ -1830,26 +1830,40 @@ static void hostapd_data_test_rx(void *ctx, const u8 * struct iphdr ip; const u8 *pos; unsigned int i; + char extra[30]; - if (len != HWSIM_PACKETLEN) + if (len < sizeof(*eth) + sizeof(ip) || len > HWSIM_PACKETLEN) { + wpa_printf(MSG_DEBUG, + "test data: RX - ignore unexpected length %d", + (int) len); return; + } eth = (const struct ether_header *) buf; os_memcpy(&ip, eth + 1, sizeof(ip)); pos = &buf[sizeof(*eth) + sizeof(ip)]; if (ip.ihl != 5 || ip.version != 4 || - ntohs(ip.tot_len) != HWSIM_IP_LEN) + ntohs(ip.tot_len) > HWSIM_IP_LEN) { + wpa_printf(MSG_DEBUG, + "test data: RX - ignore unexpect IP header"); return; + } - for (i = 0; i < HWSIM_IP_LEN - sizeof(ip); i++) { - if (*pos != (u8) i) + for (i = 0; i < ntohs(ip.tot_len) - sizeof(ip); i++) { + if (*pos != (u8) i) { + wpa_printf(MSG_DEBUG, + "test data: RX - ignore mismatching payload"); return; + } pos++; } - wpa_msg(hapd->msg_ctx, MSG_INFO, "DATA-TEST-RX " MACSTR " " MACSTR, - MAC2STR(eth->ether_dhost), MAC2STR(eth->ether_shost)); + extra[0] = '\0'; + if (ntohs(ip.tot_len) != HWSIM_IP_LEN) + os_snprintf(extra, sizeof(extra), " len=%d", ntohs(ip.tot_len)); + wpa_msg(hapd->msg_ctx, MSG_INFO, "DATA-TEST-RX " MACSTR " " MACSTR "%s", + MAC2STR(eth->ether_dhost), MAC2STR(eth->ether_shost), extra); } @@ -1894,7 +1908,7 @@ static int hostapd_ctrl_iface_data_test_config(struct static int hostapd_ctrl_iface_data_test_tx(struct hostapd_data *hapd, char *cmd) { u8 dst[ETH_ALEN], src[ETH_ALEN]; - char *pos; + char *pos, *pos2; int used; long int val; u8 tos; @@ -1903,11 +1917,12 @@ static int hostapd_ctrl_iface_data_test_tx(struct host struct iphdr *ip; u8 *dpos; unsigned int i; + size_t send_len = HWSIM_IP_LEN; if (hapd->l2_test == NULL) return -1; - /* format: */ + /* format: [len=] */ pos = cmd; used = hwaddr_aton2(pos, dst); @@ -1921,11 +1936,19 @@ static int hostapd_ctrl_iface_data_test_tx(struct host return -1; pos += used; - val = strtol(pos, NULL, 0); + val = strtol(pos, &pos2, 0); if (val < 0 || val > 0xff) return -1; tos = val; + pos = os_strstr(pos2, " len="); + if (pos) { + i = atoi(pos + 5); + if (i < sizeof(*ip) || i > HWSIM_IP_LEN) + return -1; + send_len = i; + } + eth = (struct ether_header *) &buf[2]; os_memcpy(eth->ether_dhost, dst, ETH_ALEN); os_memcpy(eth->ether_shost, src, ETH_ALEN); @@ -1936,17 +1959,17 @@ static int hostapd_ctrl_iface_data_test_tx(struct host ip->version = 4; ip->ttl = 64; ip->tos = tos; - ip->tot_len = htons(HWSIM_IP_LEN); + ip->tot_len = htons(send_len); ip->protocol = 1; ip->saddr = htonl(192U << 24 | 168 << 16 | 1 << 8 | 1); ip->daddr = htonl(192U << 24 | 168 << 16 | 1 << 8 | 2); ip->check = ipv4_hdr_checksum(ip, sizeof(*ip)); dpos = (u8 *) (ip + 1); - for (i = 0; i < HWSIM_IP_LEN - sizeof(*ip); i++) + for (i = 0; i < send_len - sizeof(*ip); i++) *dpos++ = i; if (l2_packet_send(hapd->l2_test, dst, ETHERTYPE_IP, &buf[2], - HWSIM_PACKETLEN) < 0) + sizeof(struct ether_header) + send_len) < 0) return -1; wpa_dbg(hapd->msg_ctx, MSG_DEBUG, "test data: TX dst=" MACSTR Modified: projects/clang900-import/contrib/wpa/hostapd/defconfig ============================================================================== --- projects/clang900-import/contrib/wpa/hostapd/defconfig Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/wpa/hostapd/defconfig Tue Sep 3 05:58:43 2019 (r351732) @@ -108,11 +108,18 @@ CONFIG_EAP_TTLS=y #CONFIG_EAP_GPSK_SHA256=y # EAP-FAST for the integrated EAP server -# Note: If OpenSSL is used as the TLS library, OpenSSL 1.0 or newer is needed -# for EAP-FAST support. Older OpenSSL releases would need to be patched, e.g., -# with openssl-0.9.8x-tls-extensions.patch, to add the needed functions. #CONFIG_EAP_FAST=y +# EAP-TEAP for the integrated EAP server +# Note: The current EAP-TEAP implementation is experimental and should not be +# enabled for production use. The IETF RFC 7170 that defines EAP-TEAP has number +# of conflicting statements and missing details and the implementation has +# vendor specific workarounds for those and as such, may not interoperate with +# any other implementation. This should not be used for anything else than +# experimentation and interoperability testing until those issues has been +# resolved. +#CONFIG_EAP_TEAP=y + # Wi-Fi Protected Setup (WPS) #CONFIG_WPS=y # Enable UPnP support for external WPS Registrars @@ -375,6 +382,9 @@ CONFIG_IPV6=y # Opportunistic Wireless Encryption (OWE) # Experimental implementation of draft-harkins-owe-07.txt #CONFIG_OWE=y + +# Airtime policy support +#CONFIG_AIRTIME_POLICY=y # Override default value for the wpa_disable_eapol_key_retries configuration # parameter. See that parameter in hostapd.conf for more details. Modified: projects/clang900-import/contrib/wpa/hostapd/eap_register.c ============================================================================== --- projects/clang900-import/contrib/wpa/hostapd/eap_register.c Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/wpa/hostapd/eap_register.c Tue Sep 3 05:58:43 2019 (r351732) @@ -121,6 +121,11 @@ int eap_server_register_methods(void) ret = eap_server_fast_register(); #endif /* EAP_SERVER_FAST */ +#ifdef EAP_SERVER_TEAP + if (ret == 0) + ret = eap_server_teap_register(); +#endif /* EAP_SERVER_TEAP */ + #ifdef EAP_SERVER_WSC if (ret == 0) ret = eap_server_wsc_register(); Modified: projects/clang900-import/contrib/wpa/hostapd/hostapd.conf ============================================================================== --- projects/clang900-import/contrib/wpa/hostapd/hostapd.conf Tue Sep 3 05:55:56 2019 (r351731) +++ projects/clang900-import/contrib/wpa/hostapd/hostapd.conf Tue Sep 3 05:58:43 2019 (r351732) @@ -782,10 +782,8 @@ wmm_ac_vo_acm=0 # 1 = supported #he_mu_beamformer=1 -# he_bss_color: BSS color -# 0 = no BSS color (default) -# unsigned integer = BSS color -#he_bss_color=0 +# he_bss_color: BSS color (1-63) +#he_bss_color=1 #he_default_pe_duration: The duration of PE field in an HE PPDU in us # Possible values are 0 us (default), 4 us, 8 us, 12 us, and 16 us @@ -801,6 +799,17 @@ wmm_ac_vo_acm=0 # unsigned integer = duration in units of 16 us #he_rts_threshold=0 +# HE operating channel information; see matching vht_* parameters for details. +#he_oper_chwidth +#he_oper_centr_freq_seg0_idx +#he_oper_centr_freq_seg1_idx + +#he_basic_mcs_nss_set: Basic NSS/MCS set +# 16-bit combination of 2-bit values of Max HE-MCS For 1..8 SS; each 2-bit +# value having following meaning: +# 0 = HE-MCS 0-7, 1 = HE-MCS 0-9, 2 = HE-MCS 0-11, 3 = not supported +#he_basic_mcs_nss_set + #he_mu_edca_qos_info_param_count #he_mu_edca_qos_info_q_ack #he_mu_edca_qos_info_queue_request=1 @@ -825,6 +834,12 @@ wmm_ac_vo_acm=0 #he_mu_edca_ac_vo_ecwmax=15 #he_mu_edca_ac_vo_timer=255 +# Spatial Reuse Parameter Set +#he_spr_sr_control +#he_spr_non_srg_obss_pd_max_offset +#he_spr_srg_obss_pd_min_offset +#he_spr_srg_obss_pd_max_offset + ##### IEEE 802.1X-2004 related configuration ################################## # Require IEEE 802.1X authorization @@ -836,6 +851,8 @@ wmm_ac_vo_acm=0 # the new version number correctly (they seem to drop the frames completely). # In order to make hostapd interoperate with these clients, the version number # can be set to the older version (1) with this configuration value. +# Note: When using MACsec, eapol_version shall be set to 3, which is +# defined in IEEE Std 802.1X-2010. #eapol_version=2 # Optional displayable message sent with EAP Request-Identity. The first \0 *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:46 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3CA16DBE0E for ; Tue, 3 Sep 2019 14:05:46 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yf0K1Lz4NpH; Tue, 3 Sep 2019 14:05:46 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id EAFE319AD1; Tue, 3 Sep 2019 14:05:45 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 24BE019B92; Wed, 27 Mar 2019 16:45:36 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3849883853; Wed, 27 Mar 2019 16:45:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1062A19B6A; Wed, 27 Mar 2019 16:45:35 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 9EDAD19B66 for ; Wed, 27 Mar 2019 16:45:31 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4650B8384D; Wed, 27 Mar 2019 16:45:31 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 20DFF9F22; Wed, 27 Mar 2019 16:45:31 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2RGjV9j086376; Wed, 27 Mar 2019 16:45:31 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2RGjUjU086373; Wed, 27 Mar 2019 16:45:30 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903271645.x2RGjUjU086373@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345582 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 345582 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3849883853 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.992,0]; NEURAL_HAM_SHORT(-0.96)[-0.963,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:46 -0000 X-Original-Date: Wed, 27 Mar 2019 16:45:30 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:46 -0000 Author: asomers Date: Wed Mar 27 16:45:30 2019 New Revision: 345582 URL: https://svnweb.freebsd.org/changeset/base/345582 Log: fusefs: don't ignore errors in fuse_vnode_refreshsize Reported by: Coverity Coverity CID: 1368622 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_node.c projects/fuse2/sys/fs/fuse/fuse_node.h projects/fuse2/sys/fs/fuse/fuse_vnops.c Modified: projects/fuse2/sys/fs/fuse/fuse_node.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.c Wed Mar 27 16:26:03 2019 (r345581) +++ projects/fuse2/sys/fs/fuse/fuse_node.c Wed Mar 27 16:45:30 2019 (r345582) @@ -392,20 +392,22 @@ fuse_vnode_savesize(struct vnode *vp, struct ucred *cr return err; } -void +int fuse_vnode_refreshsize(struct vnode *vp, struct ucred *cred) { struct fuse_vnode_data *fvdat = VTOFUD(vp); struct vattr va; + int err; if ((fvdat->flag & FN_SIZECHANGE) != 0 || fuse_data_cache_mode == FUSE_CACHE_UC || (fuse_refresh_size == 0 && fvdat->filesize != 0)) - return; + return 0; - VOP_GETATTR(vp, &va, cred); + err = VOP_GETATTR(vp, &va, cred); SDT_PROBE2(fuse, , node, trace, 1, "refreshed file size"); + return err; } int Modified: projects/fuse2/sys/fs/fuse/fuse_node.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.h Wed Mar 27 16:26:03 2019 (r345581) +++ projects/fuse2/sys/fs/fuse/fuse_node.h Wed Mar 27 16:45:30 2019 (r345582) @@ -123,7 +123,7 @@ int fuse_vnode_get(struct mount *mp, struct fuse_entry void fuse_vnode_open(struct vnode *vp, int32_t fuse_open_flags, struct thread *td); -void fuse_vnode_refreshsize(struct vnode *vp, struct ucred *cred); +int fuse_vnode_refreshsize(struct vnode *vp, struct ucred *cred); int fuse_vnode_savesize(struct vnode *vp, struct ucred *cred); Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Wed Mar 27 16:26:03 2019 (r345581) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Wed Mar 27 16:45:30 2019 (r345582) @@ -1712,20 +1712,23 @@ fuse_vnop_strategy(struct vop_strategy_args *ap) bufdone(bp); return ENXIO; } - if (bp->b_iocmd == BIO_WRITE) - fuse_vnode_refreshsize(vp, NOCRED); + if (bp->b_iocmd == BIO_WRITE) { + int err; - (void)fuse_io_strategy(vp, bp); + err = fuse_vnode_refreshsize(vp, NOCRED); + if (err) { + bp->b_ioflags |= BIO_ERROR; + bp->b_error = err; + return 0; + } + } /* - * This is a dangerous function. If returns error, that might mean a - * panic. We prefer pretty much anything over being forced to panic - * by a malicious daemon (a demon?). So we just return 0 anyway. You - * should never mind this: this function has its own error - * propagation mechanism via the argument buffer, so - * not-that-melodramatic residents of the call chain still will be - * able to know what to do. + * VOP_STRATEGY always returns zero and signals error via bp->b_ioflags. + * fuse_io_strategy sets bp's error fields */ + (void)fuse_io_strategy(vp, bp); + return 0; } @@ -1791,11 +1794,14 @@ fuse_vnop_write(struct vop_write_args *ap) struct uio *uio = ap->a_uio; int ioflag = ap->a_ioflag; struct ucred *cred = ap->a_cred; + int err; if (fuse_isdeadfs(vp)) { return ENXIO; } - fuse_vnode_refreshsize(vp, cred); + err = fuse_vnode_refreshsize(vp, cred); + if (err) + return err; if (VTOFUD(vp)->flag & FN_DIRECTIO) { ioflag |= IO_DIRECT; From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:46 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 00995DBDFB for ; Tue, 3 Sep 2019 14:05:46 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yd6Gwkz4Np7; Tue, 3 Sep 2019 14:05:45 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id B828519ABF; Tue, 3 Sep 2019 14:05:45 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 294CB17C3E; Wed, 27 Mar 2019 14:15:40 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3A48D76662; Wed, 27 Mar 2019 14:15:39 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1837F17BF1; Wed, 27 Mar 2019 14:15:39 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 96A7017BEF for ; Wed, 27 Mar 2019 14:15:36 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5A72E7665E; Wed, 27 Mar 2019 14:15:36 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4822385B1; Wed, 27 Mar 2019 14:15:36 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2REFaw3008404; Wed, 27 Mar 2019 14:15:36 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2REFapp008403; Wed, 27 Mar 2019 14:15:36 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903271415.x2REFapp008403@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345575 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 345575 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3A48D76662 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.992,0]; NEURAL_HAM_SHORT(-0.96)[-0.958,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:46 -0000 X-Original-Date: Wed, 27 Mar 2019 14:15:36 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:46 -0000 Author: asomers Date: Wed Mar 27 14:15:35 2019 New Revision: 345575 URL: https://svnweb.freebsd.org/changeset/base/345575 Log: fusefs: fix a derefence-after-null-check Reported by: Coverity Coverity CID: 1017940 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_node.c Modified: projects/fuse2/sys/fs/fuse/fuse_node.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.c Wed Mar 27 14:07:09 2019 (r345574) +++ projects/fuse2/sys/fs/fuse/fuse_node.c Wed Mar 27 14:15:35 2019 (r345575) @@ -284,8 +284,9 @@ fuse_vnode_get(struct mount *mp, return err; } if (dvp != NULL) { - MPASS((cnp->cn_flags & ISDOTDOT) == 0); - MPASS(!(cnp->cn_namelen == 1 && cnp->cn_nameptr[0] == '.')); + MPASS(cnp && (cnp->cn_flags & ISDOTDOT) == 0); + MPASS(cnp && + !(cnp->cn_namelen == 1 && cnp->cn_nameptr[0] == '.')); fuse_vnode_setparent(*vpp, dvp); } if (dvp != NULL && cnp != NULL && (cnp->cn_flags & MAKEENTRY) != 0 && From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:46 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6CBB9DBE1D for ; Tue, 3 Sep 2019 14:05:46 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yf221Yz4NpY; Tue, 3 Sep 2019 14:05:46 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 3A18E19AF2; Tue, 3 Sep 2019 14:05:46 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 183D21C498; Wed, 27 Mar 2019 18:50:33 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3C9ED886E5; Wed, 27 Mar 2019 18:50:32 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1B4BB1C449; Wed, 27 Mar 2019 18:50:32 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6BD931C447 for ; Wed, 27 Mar 2019 18:50:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 19C94886E1; Wed, 27 Mar 2019 18:50:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E6404B3D4; Wed, 27 Mar 2019 18:50:28 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2RIoS9m049736; Wed, 27 Mar 2019 18:50:28 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2RIoSeY049735; Wed, 27 Mar 2019 18:50:28 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903271850.x2RIoSeY049735@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345588 - projects/capsicum-test/tests/sys/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/tests/sys/capsicum-test X-SVN-Commit-Revision: 345588 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3C9ED886E5 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.992,0]; NEURAL_HAM_SHORT(-0.96)[-0.960,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:46 -0000 X-Original-Date: Wed, 27 Mar 2019 18:50:28 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:46 -0000 Author: ngie Date: Wed Mar 27 18:50:28 2019 New Revision: 345588 URL: https://svnweb.freebsd.org/changeset/base/345588 Log: Install mini-me* to ${TESTSDIR} so capsicum-test can use it Modified: projects/capsicum-test/tests/sys/capsicum-test/Makefile Modified: projects/capsicum-test/tests/sys/capsicum-test/Makefile ============================================================================== --- projects/capsicum-test/tests/sys/capsicum-test/Makefile Wed Mar 27 18:46:47 2019 (r345587) +++ projects/capsicum-test/tests/sys/capsicum-test/Makefile Wed Mar 27 18:50:28 2019 (r345588) @@ -37,6 +37,8 @@ NO_SHARED.$p= SRCS.$p= mini-me.c .endfor +BINDIR= ${TESTSDIR} + BINMODE.mini-me.noexec= ${NOBINMODE} BINMODE.mini-me.setuid= 01444 From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:46 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3C9EADBE0D for ; Tue, 3 Sep 2019 14:05:46 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yf0L9Zz4NpJ; Tue, 3 Sep 2019 14:05:46 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id DE15C19ACD; Tue, 3 Sep 2019 14:05:45 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 861EF196B7; Wed, 27 Mar 2019 16:19:07 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3991882B29; Wed, 27 Mar 2019 16:19:07 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 2668E196B5; Wed, 27 Mar 2019 16:19:07 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 3EDAA196B3 for ; Wed, 27 Mar 2019 16:19:04 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E817D82B26; Wed, 27 Mar 2019 16:19:03 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A2D899A07; Wed, 27 Mar 2019 16:19:03 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2RGJ3wT070793; Wed, 27 Mar 2019 16:19:03 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2RGJ3cU070791; Wed, 27 Mar 2019 16:19:03 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903271619.x2RGJ3cU070791@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345580 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 345580 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3991882B29 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.992,0]; NEURAL_HAM_SHORT(-0.96)[-0.963,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:46 -0000 X-Original-Date: Wed, 27 Mar 2019 16:19:03 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:46 -0000 Author: asomers Date: Wed Mar 27 16:19:02 2019 New Revision: 345580 URL: https://svnweb.freebsd.org/changeset/base/345580 Log: fusefs: delete dead code in fuse_vnop_setattr The dead code in question was a broken and incomplete attempt to support the default_permissions mount option during VOP_SETATTR. There wasn't anything there worth saving; I'll have to rewrite it later. Reported by: Coverity Coverity CID: 1008668 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_internal.h projects/fuse2/sys/fs/fuse/fuse_vnops.c Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Wed Mar 27 15:17:29 2019 (r345579) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Wed Mar 27 16:19:02 2019 (r345580) @@ -106,8 +106,7 @@ static int isbzero(void *buf, size_t len); #endif -/* access */ - +/* Synchronously send a FUSE_ACCESS operation */ int fuse_internal_access(struct vnode *vp, mode_t mode, Modified: projects/fuse2/sys/fs/fuse/fuse_internal.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.h Wed Mar 27 15:17:29 2019 (r345579) +++ projects/fuse2/sys/fs/fuse/fuse_internal.h Wed Mar 27 16:19:02 2019 (r345580) @@ -156,7 +156,12 @@ fuse_iosize(struct vnode *vp) #define FACCESS_VA_VALID 0x01 #define FACCESS_DO_ACCESS 0x02 +/* + * Caller must be the directory's owner, or the superuser, or the sticky bit + * must not be set + */ #define FACCESS_STICKY 0x04 +/* Caller requires access to change file's owner */ #define FACCESS_CHOWN 0x08 #define FACCESS_NOCHECKSPY 0x10 #define FACCESS_SETGID 0x12 Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Wed Mar 27 15:17:29 2019 (r345579) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Wed Mar 27 16:19:02 2019 (r345580) @@ -1582,7 +1582,6 @@ fuse_vnop_setattr(struct vop_setattr_args *ap) struct vattr *vap = ap->a_vap; struct ucred *cred = ap->a_cred; struct thread *td = curthread; - struct fuse_dispatcher fdi; struct fuse_setattr_in *fsai; struct fuse_access_param facp; @@ -1658,19 +1657,7 @@ fuse_vnop_setattr(struct vop_setattr_args *ap) err = EROFS; goto out; } - if (fsai->valid & ~FATTR_SIZE) { - /*err = fuse_internal_access(vp, VADMIN, context, &facp); */ - /*XXX */ - err = 0; - } - facp.facc_flags &= ~FACCESS_XQUERIES; - if (err && !(fsai->valid & ~(FATTR_ATIME | FATTR_MTIME)) && - vap->va_vaflags & VA_UTIMES_NULL) { - err = fuse_internal_access(vp, VWRITE, &facp, td, cred); - } - if (err) - goto out; if ((err = fdisp_wait_answ(&fdi))) goto out; vtyp = IFTOVT(((struct fuse_attr_out *)fdi.answ)->attr.mode); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:48 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 86C1DDBEC9 for ; Tue, 3 Sep 2019 14:05:48 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yh0zPCz4NrR; Tue, 3 Sep 2019 14:05:48 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 6AC0819BAC; Tue, 3 Sep 2019 14:05:47 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 674A67736; Thu, 28 Mar 2019 03:30:09 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2773780567; Thu, 28 Mar 2019 03:30:09 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0E3447735; Thu, 28 Mar 2019 03:30:09 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 8DFE0772E for ; Thu, 28 Mar 2019 03:30:06 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 590DE80562; Thu, 28 Mar 2019 03:30:06 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4E479193FE; Thu, 28 Mar 2019 03:30:06 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2S3U6we037946; Thu, 28 Mar 2019 03:30:06 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2S3U4Fa037940; Thu, 28 Mar 2019 03:30:04 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903280330.x2S3U4Fa037940@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345626 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345626 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2773780567 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.992,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.956,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:48 -0000 X-Original-Date: Thu, 28 Mar 2019 03:30:04 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:48 -0000 Author: asomers Date: Thu Mar 28 03:30:04 2019 New Revision: 345626 URL: https://svnweb.freebsd.org/changeset/base/345626 Log: fusefs: add a regression test for bug 236844 fusefs should send a FUSE_OPEN for every open(2) so the daemon can validate accesses. PR: 236844 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc projects/fuse2/tests/sys/fs/fusefs/fsync.cc projects/fuse2/tests/sys/fs/fusefs/mockfs.cc projects/fuse2/tests/sys/fs/fusefs/open.cc projects/fuse2/tests/sys/fs/fusefs/utils.cc projects/fuse2/tests/sys/fs/fusefs/utils.hh Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Thu Mar 28 02:12:32 2019 (r345625) +++ projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Thu Mar 28 03:30:04 2019 (r345626) @@ -78,7 +78,7 @@ TEST_F(AllowOther, allowed) expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 1); expect_open(ino, 0, 1); - expect_release(ino); + expect_release(ino, FH); expect_getattr(ino, 0); }, []() { int fd; Modified: projects/fuse2/tests/sys/fs/fusefs/fsync.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/fsync.cc Thu Mar 28 02:12:32 2019 (r345625) +++ projects/fuse2/tests/sys/fs/fusefs/fsync.cc Thu Mar 28 03:30:04 2019 (r345626) @@ -139,7 +139,7 @@ TEST_F(Fsync, close) }, Eq(true)), _) ).Times(0); - expect_release(ino); + expect_release(ino, FH); fd = open(FULLPATH, O_RDWR); ASSERT_LE(0, fd) << strerror(errno); Modified: projects/fuse2/tests/sys/fs/fusefs/mockfs.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Thu Mar 28 02:12:32 2019 (r345625) +++ projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Thu Mar 28 03:30:04 2019 (r345626) @@ -204,7 +204,8 @@ void debug_fuseop(const mockfs_buf_in *in) in->body.readdir.size); break; case FUSE_RELEASE: - printf(" flags=%#x lock_owner=%lu", + printf(" fh=%#lx flags=%#x lock_owner=%lu", + in->body.release.fh, in->body.release.flags, in->body.release.lock_owner); break; Modified: projects/fuse2/tests/sys/fs/fusefs/open.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/open.cc Thu Mar 28 02:12:32 2019 (r345625) +++ projects/fuse2/tests/sys/fs/fusefs/open.cc Thu Mar 28 03:30:04 2019 (r345626) @@ -62,17 +62,7 @@ void test_ok(int os_flags, int fuse_flags) { }))); /* Until the attr cache is working, we may send an additional GETATTR */ - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_GETATTR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { - SET_OUT_HEADER_LEN(out, attr); - out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | 0644; - }))); + expect_getattr(ino, 0); fd = open(FULLPATH, os_flags); EXPECT_LE(0, fd) << strerror(errno); @@ -168,6 +158,72 @@ TEST_F(Open, fifo) ASSERT_EQ(-1, open(FULLPATH, O_RDONLY)); EXPECT_EQ(EOPNOTSUPP, errno); +} + +/* + * fusefs must issue multiple FUSE_OPEN operations if clients with different + * credentials open the same file, even if they use the same mode. This is + * necessary so that the daemon can validate each set of credentials. + */ +/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236844 */ +TEST_F(Open, DISABLED_multiple_creds) +{ + const static char FULLPATH[] = "mountpoint/some_file.txt"; + const static char RELPATH[] = "some_file.txt"; + int fd1; + const static uint64_t ino = 42; + const static uint64_t fh0 = 100, fh1 = 200; + + /* Fork a child to open the file with different credentials */ + fork(false, [&] { + + expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 2); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_OPEN && + in->header.pid == (uint32_t)getpid() && + in->header.nodeid == ino); + }, Eq(true)), + _) + ).WillOnce(Invoke( + ReturnImmediate([](auto in __unused, auto out) { + out->body.open.fh = fh0; + out->header.len = sizeof(out->header); + SET_OUT_HEADER_LEN(out, open); + }))); + + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_OPEN && + in->header.pid != (uint32_t)getpid() && + in->header.nodeid == ino); + }, Eq(true)), + _) + ).WillOnce(Invoke( + ReturnImmediate([](auto in __unused, auto out) { + out->body.open.fh = fh1; + out->header.len = sizeof(out->header); + SET_OUT_HEADER_LEN(out, open); + }))); + expect_getattr(ino, 0); + expect_release(ino, fh0); + expect_release(ino, fh1); + + fd1 = open(FULLPATH, O_RDONLY); + EXPECT_LE(0, fd1) << strerror(errno); + }, [] { + int fd0; + + fd0 = open(FULLPATH, O_RDONLY); + if (fd0 < 0) { + perror("open"); + return(1); + } + return 0; + } + ); + + close(fd1); } /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236340 */ Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Thu Mar 28 02:12:32 2019 (r345625) +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Thu Mar 28 03:30:04 2019 (r345626) @@ -206,13 +206,13 @@ void FuseTest::expect_read(uint64_t ino, uint64_t offs }))).RetiresOnSaturation(); } -void FuseTest::expect_release(uint64_t ino) +void FuseTest::expect_release(uint64_t ino, uint64_t fh) { EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_RELEASE && in->header.nodeid == ino && - in->body.release.fh == FH); + in->body.release.fh == fh); }, Eq(true)), _) ).WillOnce(Invoke(ReturnErrno(0))); Modified: projects/fuse2/tests/sys/fs/fusefs/utils.hh ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.hh Thu Mar 28 02:12:32 2019 (r345625) +++ projects/fuse2/tests/sys/fs/fusefs/utils.hh Thu Mar 28 03:30:04 2019 (r345626) @@ -113,9 +113,9 @@ class FuseTest : public ::testing::Test { /* * Create an expectation that FUSE_RELEASE will be called exactly once - * for the given inode, returning success + * for the given inode and filehandle, returning success */ - void expect_release(uint64_t ino); + void expect_release(uint64_t ino, uint64_t fh); /* * Create an expectation that FUSE_WRITE will be called exactly once From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:48 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2EB69DBEC1 for ; Tue, 3 Sep 2019 14:05:48 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yg5sNkz4NrG; Tue, 3 Sep 2019 14:05:47 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 4E7B919B94; Tue, 3 Sep 2019 14:05:47 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id CEF31379F; Thu, 28 Mar 2019 00:26:01 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3150C6FB96; Thu, 28 Mar 2019 00:26:01 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 164423777; Thu, 28 Mar 2019 00:26:01 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 798413772 for ; Thu, 28 Mar 2019 00:25:58 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2D5926FB90; Thu, 28 Mar 2019 00:25:58 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 07F73EFA4; Thu, 28 Mar 2019 00:25:58 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2S0Pvqf042499; Thu, 28 Mar 2019 00:25:57 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2S0Pv8W042498; Thu, 28 Mar 2019 00:25:57 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903280025.x2S0Pv8W042498@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345623 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345623 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3150C6FB96 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.992,0]; NEURAL_HAM_SHORT(-0.96)[-0.963,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:48 -0000 X-Original-Date: Thu, 28 Mar 2019 00:25:57 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:48 -0000 Author: asomers Date: Thu Mar 28 00:25:57 2019 New Revision: 345623 URL: https://svnweb.freebsd.org/changeset/base/345623 Log: fusefs: fix a resource leak in the allow_other tests Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Wed Mar 27 22:51:48 2019 (r345622) +++ projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Thu Mar 28 00:25:57 2019 (r345623) @@ -112,21 +112,25 @@ TEST_F(AllowOther, allowed) if ((child = fork()) == 0) { /* In child */ + int err = 0; + ASSERT_EQ(0, sem_wait(sem)) << strerror(errno); /* Drop privileges before accessing */ if (0 != setreuid(-1, m_uid)) { perror("setreuid"); - _exit(1); + err = 1; + goto out; } fd = open(FULLPATH, O_RDONLY); if (fd < 0) { perror("open"); - _exit(1); + err = 1; } - _exit(0); +out: sem_destroy(sem); + _exit(err); /* Deliberately leak fd */ } else if (child > 0) { int child_status; @@ -168,25 +172,29 @@ TEST_F(NoAllowOther, disallowed) if ((child = fork()) == 0) { /* In child */ + int err = 0; + ASSERT_EQ(0, sem_wait(sem)) << strerror(errno); /* Drop privileges before accessing */ if (0 != setreuid(-1, m_uid)) { perror("setreuid"); - _exit(1); + err = 1; + goto out; } fd = open(FULLPATH, O_RDONLY); if (fd >= 0) { fprintf(stderr, "open should've failed\n"); - _exit(1); + err = 1; } else if (errno != EPERM) { fprintf(stderr, "Unexpected error: %s\n", strerror(errno)); - _exit(1); + err = 1; } - _exit(0); +out: sem_destroy(sem); + _exit(0); /* Deliberately leak fd */ } else if (child > 0) { /* From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:51 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B86D3DBF4C for ; Tue, 3 Sep 2019 14:05:50 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yj4Q9bz4NtG; Tue, 3 Sep 2019 14:05:49 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id B203F19C55; Tue, 3 Sep 2019 14:05:48 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 940CF1904B; Thu, 28 Mar 2019 19:58:33 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 424E288F15; Thu, 28 Mar 2019 19:58:33 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 18E6F19049; Thu, 28 Mar 2019 19:58:33 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 9AD0119047 for ; Thu, 28 Mar 2019 19:58:30 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 639AA88F13; Thu, 28 Mar 2019 19:58:30 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3C5D023F78; Thu, 28 Mar 2019 19:58:30 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2SJwUIj059227; Thu, 28 Mar 2019 19:58:30 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2SJwTLo059225; Thu, 28 Mar 2019 19:58:29 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903281958.x2SJwTLo059225@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345650 - in projects/capsicum-test: share/mk tests/sys/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/capsicum-test: share/mk tests/sys/capsicum-test X-SVN-Commit-Revision: 345650 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 424E288F15 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.994,0]; NEURAL_HAM_SHORT(-0.95)[-0.947,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:51 -0000 X-Original-Date: Thu, 28 Mar 2019 19:58:29 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:51 -0000 Author: ngie Date: Thu Mar 28 19:58:29 2019 New Revision: 345650 URL: https://svnweb.freebsd.org/changeset/base/345650 Log: Push appending `NO_SHARED` to PROG_OVERRIDE_VARS down into bsd.progs.mk (where it should be) Modified: projects/capsicum-test/share/mk/bsd.progs.mk projects/capsicum-test/tests/sys/capsicum-test/Makefile Modified: projects/capsicum-test/share/mk/bsd.progs.mk ============================================================================== --- projects/capsicum-test/share/mk/bsd.progs.mk Thu Mar 28 19:56:35 2019 (r345649) +++ projects/capsicum-test/share/mk/bsd.progs.mk Thu Mar 28 19:58:29 2019 (r345650) @@ -22,8 +22,8 @@ PROGS += ${PROGS_CXX} .if defined(PROG) # just one of many -PROG_OVERRIDE_VARS += BINDIR BINGRP BINOWN BINMODE DPSRCS MAN NO_WERROR \ - PROGNAME SRCS STRIP WARNS +PROG_OVERRIDE_VARS += BINDIR BINGRP BINOWN BINMODE DPSRCS MAN NO_SHARED \ + NO_WERROR PROGNAME SRCS STRIP WARNS PROG_VARS += CFLAGS CXXFLAGS DEBUG_FLAGS DPADD INTERNALPROG LDADD LIBADD \ LINKS LDFLAGS MLINKS ${PROG_OVERRIDE_VARS} .for v in ${PROG_VARS:O:u} Modified: projects/capsicum-test/tests/sys/capsicum-test/Makefile ============================================================================== --- projects/capsicum-test/tests/sys/capsicum-test/Makefile Thu Mar 28 19:56:35 2019 (r345649) +++ projects/capsicum-test/tests/sys/capsicum-test/Makefile Thu Mar 28 19:58:29 2019 (r345650) @@ -30,7 +30,6 @@ SRCS.smoketest+= \ LIBADD.capsicum-test+= gtest pthread -PROG_OVERRIDE_VARS+= NO_SHARED .for p in mini-me mini-me.noexec mini-me.setuid PROGS+= $p NO_SHARED.$p= From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:48 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2E3C8DBEC0 for ; Tue, 3 Sep 2019 14:05:48 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yg688zz4NrH; Tue, 3 Sep 2019 14:05:47 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 5C3EC19B9B; Tue, 3 Sep 2019 14:05:47 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id D3F1C4B1F; Thu, 28 Mar 2019 01:12:48 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4F30A72052; Thu, 28 Mar 2019 01:12:48 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 214DA4ADB; Thu, 28 Mar 2019 01:12:48 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 9F26A4AD9 for ; Thu, 28 Mar 2019 01:12:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 477DE7204B; Thu, 28 Mar 2019 01:12:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1A8FDF948; Thu, 28 Mar 2019 01:12:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2S1Ci4Z069610; Thu, 28 Mar 2019 01:12:44 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2S1Ci3S069607; Thu, 28 Mar 2019 01:12:44 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903280112.x2S1Ci3S069607@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345624 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345624 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4F30A72052 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.993,0]; NEURAL_HAM_SHORT(-0.98)[-0.975,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:49 -0000 X-Original-Date: Thu, 28 Mar 2019 01:12:44 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:49 -0000 Author: asomers Date: Thu Mar 28 01:12:44 2019 New Revision: 345624 URL: https://svnweb.freebsd.org/changeset/base/345624 Log: fusefs: deduplicate code in the allow_other test Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc projects/fuse2/tests/sys/fs/fusefs/utils.cc projects/fuse2/tests/sys/fs/fusefs/utils.hh Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Thu Mar 28 00:25:57 2019 (r345623) +++ projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Thu Mar 28 01:12:44 2019 (r345624) @@ -35,11 +35,8 @@ extern "C" { #include -#include -#include #include -#include -#include +#include } #include "mockfs.hh" @@ -47,27 +44,9 @@ extern "C" { using namespace testing; -void sighandler(int __unused sig) {} +const static char FULLPATH[] = "mountpoint/some_file.txt"; +const static char RELPATH[] = "some_file.txt"; -static void -get_unprivileged_uid(int *uid) -{ - struct passwd *pw; - - /* - * First try "tests", Kyua's default unprivileged user. XXX after - * GoogleTest gains a proper Kyua wrapper, get this with the Kyua API - */ - pw = getpwnam("tests"); - if (pw == NULL) { - /* Fall back to "nobody" */ - pw = getpwnam("nobody"); - } - if (pw == NULL) - GTEST_SKIP() << "Test requires an unprivileged user"; - *uid = pw->pw_uid; -} - class NoAllowOther: public FuseTest { public: @@ -78,9 +57,6 @@ virtual void SetUp() { if (geteuid() != 0) { GTEST_SKIP() << "This test must be run as root"; } - get_unprivileged_uid(&m_uid); - if (IsSkipped()) - return; FuseTest::SetUp(); } @@ -97,119 +73,42 @@ virtual void SetUp() { TEST_F(AllowOther, allowed) { - const char FULLPATH[] = "mountpoint/some_file.txt"; - const char RELPATH[] = "some_file.txt"; - uint64_t ino = 42; - int fd; - pid_t child; - sem_t *sem; - int mprot = PROT_READ | PROT_WRITE; - int mflags = MAP_ANON | MAP_SHARED; - - sem = (sem_t*)mmap(NULL, sizeof(*sem), mprot, mflags, -1, 0); - ASSERT_NE(MAP_FAILED, sem) << strerror(errno); - ASSERT_EQ(0, sem_init(sem, 1, 0)) << strerror(errno); + fork(true, [&] { + uint64_t ino = 42; - if ((child = fork()) == 0) { - /* In child */ - int err = 0; + expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 1); + expect_open(ino, 0, 1); + expect_release(ino); + expect_getattr(ino, 0); + }, []() { + int fd; - ASSERT_EQ(0, sem_wait(sem)) << strerror(errno); - - /* Drop privileges before accessing */ - if (0 != setreuid(-1, m_uid)) { - perror("setreuid"); - err = 1; - goto out; + fd = open(FULLPATH, O_RDONLY); + if (fd < 0) { + perror("open"); + return(1); + } + return 0; } - fd = open(FULLPATH, O_RDONLY); - if (fd < 0) { - perror("open"); - err = 1; - } - -out: - sem_destroy(sem); - _exit(err); - /* Deliberately leak fd */ - } else if (child > 0) { - int child_status; - - /* - * In parent. Cleanup must happen here, because it's still - * privileged. - */ - expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 1); - expect_open(ino, 0, 1); - expect_release(ino); - /* Until the attr cache is working, we may send an additional - * GETATTR */ - expect_getattr(ino, 0); - m_mock->m_child_pid = child; - /* Signal the child process to go */ - ASSERT_EQ(0, sem_post(sem)) << strerror(errno); - - wait(&child_status); - ASSERT_EQ(0, WEXITSTATUS(child_status)); - } else { - FAIL() << strerror(errno); - } - munmap(sem, sizeof(*sem)); + ); } TEST_F(NoAllowOther, disallowed) { - const char FULLPATH[] = "mountpoint/some_file.txt"; - int fd; - pid_t child; - sem_t *sem; - int mprot = PROT_READ | PROT_WRITE; - int mflags = MAP_ANON | MAP_SHARED; + fork(true, [] { + }, []() { + int fd; - sem = (sem_t*)mmap(NULL, sizeof(*sem), mprot, mflags, -1, 0); - ASSERT_NE(MAP_FAILED, sem) << strerror(errno); - ASSERT_EQ(0, sem_init(sem, 1, 0)) << strerror(errno); - - if ((child = fork()) == 0) { - /* In child */ - int err = 0; - - ASSERT_EQ(0, sem_wait(sem)) << strerror(errno); - - /* Drop privileges before accessing */ - if (0 != setreuid(-1, m_uid)) { - perror("setreuid"); - err = 1; - goto out; + fd = open(FULLPATH, O_RDONLY); + if (fd >= 0) { + fprintf(stderr, "open should've failed\n"); + return(1); + } else if (errno != EPERM) { + fprintf(stderr, "Unexpected error: %s\n", + strerror(errno)); + return(1); + } + return 0; } - fd = open(FULLPATH, O_RDONLY); - if (fd >= 0) { - fprintf(stderr, "open should've failed\n"); - err = 1; - } else if (errno != EPERM) { - fprintf(stderr, - "Unexpected error: %s\n", strerror(errno)); - err = 1; - } - -out: - sem_destroy(sem); - _exit(0); - /* Deliberately leak fd */ - } else if (child > 0) { - /* - * In parent. Cleanup must happen here, because it's still - * privileged. - */ - m_mock->m_child_pid = child; - /* Signal the child process to go */ - ASSERT_EQ(0, sem_post(sem)) << strerror(errno); - int child_status; - - wait(&child_status); - ASSERT_EQ(0, WEXITSTATUS(child_status)); - } else { - FAIL() << strerror(errno); - } - munmap(sem, sizeof(*sem)); + ); } Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Thu Mar 28 00:25:57 2019 (r345623) +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Thu Mar 28 01:12:44 2019 (r345624) @@ -28,13 +28,20 @@ * SUCH DAMAGE. */ +extern "C" { #include +#include #include #include +#include -#include +#include +#include #include +} +#include + #include "mockfs.hh" #include "utils.hh" @@ -239,6 +246,86 @@ void FuseTest::expect_write(uint64_t ino, uint64_t off SET_OUT_HEADER_LEN(out, write); out->body.write.size = osize; }))); +} + +static void +get_unprivileged_uid(uid_t *uid) +{ + struct passwd *pw; + + /* + * First try "tests", Kyua's default unprivileged user. XXX after + * GoogleTest gains a proper Kyua wrapper, get this with the Kyua API + */ + pw = getpwnam("tests"); + if (pw == NULL) { + /* Fall back to "nobody" */ + pw = getpwnam("nobody"); + } + if (pw == NULL) + GTEST_SKIP() << "Test requires an unprivileged user"; + *uid = pw->pw_uid; +} + +void +FuseTest::fork(bool drop_privs, std::function parent_func, + std::function child_func) +{ + sem_t *sem; + int mprot = PROT_READ | PROT_WRITE; + int mflags = MAP_ANON | MAP_SHARED; + pid_t child; + uid_t uid; + + if (drop_privs) { + get_unprivileged_uid(&uid); + if (IsSkipped()) + return; + } + + sem = (sem_t*)mmap(NULL, sizeof(*sem), mprot, mflags, -1, 0); + ASSERT_NE(MAP_FAILED, sem) << strerror(errno); + ASSERT_EQ(0, sem_init(sem, 1, 0)) << strerror(errno); + + if ((child = ::fork()) == 0) { + /* In child */ + int err = 0; + + if (sem_wait(sem)) { + perror("sem_wait"); + err = 1; + goto out; + } + + if (drop_privs && 0 != setreuid(-1, uid)) { + perror("setreuid"); + err = 1; + goto out; + } + err = child_func(); + +out: + sem_destroy(sem); + _exit(err); + } else if (child > 0) { + int child_status; + + /* + * In parent. Cleanup must happen here, because it's still + * privileged. + */ + m_mock->m_child_pid = child; + ASSERT_NO_FATAL_FAILURE(parent_func()); + + /* Signal the child process to go */ + ASSERT_EQ(0, sem_post(sem)) << strerror(errno); + + wait(&child_status); + ASSERT_EQ(0, WEXITSTATUS(child_status)); + } else { + FAIL() << strerror(errno); + } + munmap(sem, sizeof(*sem)); } static void usage(char* progname) { Modified: projects/fuse2/tests/sys/fs/fusefs/utils.hh ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.hh Thu Mar 28 00:25:57 2019 (r345623) +++ projects/fuse2/tests/sys/fs/fusefs/utils.hh Thu Mar 28 01:12:44 2019 (r345624) @@ -124,4 +124,22 @@ class FuseTest : public ::testing::Test { */ void expect_write(uint64_t ino, uint64_t offset, uint64_t isize, uint64_t osize, uint32_t flags, const void *contents); + + /* + * Helper that runs code in a child process. + * + * First, parent_func runs in the parent process. + * Then, child_func runs in the child process, dropping privileges if + * desired. + * Finally, fusetest_fork returns. + * + * # Returns + * + * fusetest_fork will FAIL the test if child_func returns nonzero. + * It may SKIP the test, which the caller should detect with the + * IsSkipped() method. + */ + void fork(bool drop_privs, + std::function parent_func, + std::function child_func); }; From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:50 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B7B41DBF4A for ; Tue, 3 Sep 2019 14:05:50 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yj4QrSz4NtH; Tue, 3 Sep 2019 14:05:49 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 9D47019C4B; Tue, 3 Sep 2019 14:05:48 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 734E818C75; Thu, 28 Mar 2019 19:47:02 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2547288766; Thu, 28 Mar 2019 19:47:02 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 12A0A18C73; Thu, 28 Mar 2019 19:47:02 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id C9BAA18C6F for ; Thu, 28 Mar 2019 19:46:59 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9C46188761; Thu, 28 Mar 2019 19:46:59 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7960723DCD; Thu, 28 Mar 2019 19:46:59 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2SJkxY8053552; Thu, 28 Mar 2019 19:46:59 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2SJkxYI053551; Thu, 28 Mar 2019 19:46:59 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903281946.x2SJkxYI053551@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345648 - projects/capsicum-test/tests/sys/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/tests/sys/capsicum-test X-SVN-Commit-Revision: 345648 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2547288766 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.994,0]; NEURAL_HAM_SHORT(-0.95)[-0.946,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:51 -0000 X-Original-Date: Thu, 28 Mar 2019 19:46:59 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:51 -0000 Author: ngie Date: Thu Mar 28 19:46:59 2019 New Revision: 345648 URL: https://svnweb.freebsd.org/changeset/base/345648 Log: Fix an obvious typo: mini-me-setuid should be mini-me.setuid Modified: projects/capsicum-test/tests/sys/capsicum-test/Makefile Modified: projects/capsicum-test/tests/sys/capsicum-test/Makefile ============================================================================== --- projects/capsicum-test/tests/sys/capsicum-test/Makefile Thu Mar 28 18:20:47 2019 (r345647) +++ projects/capsicum-test/tests/sys/capsicum-test/Makefile Thu Mar 28 19:46:59 2019 (r345648) @@ -31,7 +31,7 @@ SRCS.smoketest+= \ LIBADD.capsicum-test+= gtest pthread PROG_OVERRIDE_VARS+= NO_SHARED -.for p in mini-me mini-me.noexec mini-me-setuid +.for p in mini-me mini-me.noexec mini-me.setuid PROGS+= $p NO_SHARED.$p= SRCS.$p= mini-me.c From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:50 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6BCC5DBF32 for ; Tue, 3 Sep 2019 14:05:50 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yj4cYCz4NtM; Tue, 3 Sep 2019 14:05:49 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id A8E8019C51; Tue, 3 Sep 2019 14:05:48 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 082D218FA7; Thu, 28 Mar 2019 19:56:40 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 658AE88E0C; Thu, 28 Mar 2019 19:56:39 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 11BFC18F40; Thu, 28 Mar 2019 19:56:39 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 68F6518F3C for ; Thu, 28 Mar 2019 19:56:36 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1E53E88E05; Thu, 28 Mar 2019 19:56:36 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id E639D23F76; Thu, 28 Mar 2019 19:56:35 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2SJuZlX059088; Thu, 28 Mar 2019 19:56:35 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2SJuZwS059085; Thu, 28 Mar 2019 19:56:35 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903281956.x2SJuZwS059085@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345649 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345649 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 658AE88E0C X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.994,0]; NEURAL_HAM_SHORT(-0.95)[-0.949,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:50 -0000 X-Original-Date: Thu, 28 Mar 2019 19:56:35 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:50 -0000 Author: ngie Date: Thu Mar 28 19:56:35 2019 New Revision: 345649 URL: https://svnweb.freebsd.org/changeset/base/345649 Log: Allow `capsicum-test` to be executed from an absolute path by stashing the execution directory This change stashes the executing directory for `capsicum-test` then uses it to determine where `mini-me*` lives, allowing the script to be executed from an absolute path. This change required refactoring how the fexecve tests were executed, as the path for `mini-me*` could no longer be determined at compile-time, but needs to be determined at runtime. As such, switch from FORK_TEST to FORK_TEST_F (with an appropriate class) and FORK_TEST_ON to FORK_F with proper setup/teardown fixtures for cleaning up the temporary script. Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc projects/capsicum-test/contrib/capsicum-test/capsicum.h projects/capsicum-test/contrib/capsicum-test/fexecve.cc Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Thu Mar 28 19:46:59 2019 (r345648) +++ projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Thu Mar 28 19:56:35 2019 (r345649) @@ -5,9 +5,11 @@ #endif #include #include +#include #include #include #include +#include #include #include "gtest/gtest.h" #include "capsicum-test.h" @@ -47,7 +49,27 @@ class SetupEnvironment : public ::testing::Environment bool teardown_tmpdir_; }; +std::string capsicum_test_bindir; + int main(int argc, char* argv[]) { + // Set up the test program path, so capsicum-test can find programs, like + // mini-me* when executed from an absolute path. + { + char *new_path, *old_path, *program_name; + + program_name = strdup(argv[0]); + assert(program_name); + capsicum_test_bindir = std::string(dirname(program_name)); + free(program_name); + + old_path = getenv("PATH"); + assert(old_path); + + assert(asprintf(&new_path, "%s:%s", capsicum_test_bindir.c_str(), + old_path) > 0); + assert(setenv("PATH", new_path, 1) == 0); + } + ::testing::InitGoogleTest(&argc, argv); for (int ii = 1; ii < argc; ii++) { if (strcmp(argv[ii], "-v") == 0) { Modified: projects/capsicum-test/contrib/capsicum-test/capsicum.h ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum.h Thu Mar 28 19:46:59 2019 (r345648) +++ projects/capsicum-test/contrib/capsicum-test/capsicum.h Thu Mar 28 19:56:35 2019 (r345649) @@ -167,4 +167,9 @@ static inline void cap_rights_describe(const cap_right #endif /* new/old style rights manipulation */ +#ifdef __cplusplus +#include +extern std::string capsicum_test_bindir; +#endif + #endif /*__CAPSICUM_H__*/ Modified: projects/capsicum-test/contrib/capsicum-test/fexecve.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/fexecve.cc Thu Mar 28 19:46:59 2019 (r345648) +++ projects/capsicum-test/contrib/capsicum-test/fexecve.cc Thu Mar 28 19:56:35 2019 (r345649) @@ -1,12 +1,12 @@ -#include -#include #include #include #include +#include #include -#include #include #include +#include +#include #include @@ -14,41 +14,76 @@ #include "capsicum.h" #include "capsicum-test.h" -// We need a program to exec(), but for fexecve() to work in capability -// mode that program needs to be statically linked (otherwise ld.so will -// attempt to traverse the filesystem to load (e.g.) /lib/libc.so and -// fail). -#define EXEC_PROG "./mini-me" -#define EXEC_PROG_NOEXEC EXEC_PROG ".noexec" -#define EXEC_PROG_SETUID EXEC_PROG ".setuid" - // Arguments to use in execve() calls. -static char* argv_pass[] = {(char*)EXEC_PROG, (char*)"--pass", NULL}; -static char* argv_fail[] = {(char*)EXEC_PROG, (char*)"--fail", NULL}; -static char* argv_checkroot[] = {(char*)EXEC_PROG, (char*)"--checkroot", NULL}; static char* null_envp[] = {NULL}; class Execve : public ::testing::Test { public: - Execve() : exec_fd_(open(EXEC_PROG, O_RDONLY)) { + Execve() : exec_fd_(-1) { + // We need a program to exec(), but for fexecve() to work in capability + // mode that program needs to be statically linked (otherwise ld.so will + // attempt to traverse the filesystem to load (e.g.) /lib/libc.so and + // fail). + exec_prog_ = capsicum_test_bindir + "/mini-me"; + exec_prog_noexec_ = capsicum_test_bindir + "/mini-me.noexec"; + exec_prog_setuid_ = capsicum_test_bindir + "/mini-me.setuid"; + + exec_fd_ = open(exec_prog_.c_str(), O_RDONLY); if (exec_fd_ < 0) { - fprintf(stderr, "Error! Failed to open %s\n", EXEC_PROG); + fprintf(stderr, "Error! Failed to open %s\n", exec_prog_.c_str()); } + argv_checkroot_[0] = (char*)exec_prog_.c_str(); + argv_fail_[0] = (char*)exec_prog_.c_str(); + argv_pass_[0] = (char*)exec_prog_.c_str(); } - ~Execve() { if (exec_fd_ >= 0) close(exec_fd_); } + ~Execve() { + if (exec_fd_ >= 0) { + close(exec_fd_); + exec_fd_ = -1; + } + } protected: + char* argv_checkroot_[3] = {nullptr, (char*)"--checkroot", nullptr}; + char* argv_fail_[3] = {nullptr, (char*)"--fail", nullptr}; + char* argv_pass_[3] = {nullptr, (char*)"--pass", nullptr}; + std::string exec_prog_, exec_prog_noexec_, exec_prog_setuid_; int exec_fd_; }; +class Fexecve : public Execve { + public: + Fexecve() : Execve() {} +}; + +class FexecveWithScript : public Fexecve { + public: + FexecveWithScript() : + Fexecve(), temp_script_filename_(TmpFile("cap_sh_script")) {} + + void SetUp() override { + // First, build an executable shell script + int fd = open(temp_script_filename_, O_RDWR|O_CREAT, 0755); + EXPECT_OK(fd); + const char* contents = "#!/bin/sh\nexit 99\n"; + EXPECT_OK(write(fd, contents, strlen(contents))); + close(fd); + } + void TearDown() override { + (void)::unlink(temp_script_filename_); + } + + const char *temp_script_filename_; +}; + FORK_TEST_F(Execve, BasicFexecve) { - EXPECT_OK(fexecve_(exec_fd_, argv_pass, null_envp)); + EXPECT_OK(fexecve_(exec_fd_, argv_pass_, null_envp)); // Should not reach here, exec() takes over. EXPECT_TRUE(!"fexecve() should never return"); } FORK_TEST_F(Execve, InCapMode) { EXPECT_OK(cap_enter()); - EXPECT_OK(fexecve_(exec_fd_, argv_pass, null_envp)); + EXPECT_OK(fexecve_(exec_fd_, argv_pass_, null_envp)); // Should not reach here, exec() takes over. EXPECT_TRUE(!"fexecve() should never return"); } @@ -60,7 +95,7 @@ FORK_TEST_F(Execve, FailWithoutCap) { cap_rights_t rights; cap_rights_init(&rights, 0); EXPECT_OK(cap_rights_limit(cap_fd, &rights)); - EXPECT_EQ(-1, fexecve_(cap_fd, argv_fail, null_envp)); + EXPECT_EQ(-1, fexecve_(cap_fd, argv_fail_, null_envp)); EXPECT_EQ(ENOTCAPABLE, errno); } @@ -73,59 +108,54 @@ FORK_TEST_F(Execve, SucceedWithCap) { // rights -- just CAP_FEXECVE|CAP_READ or CAP_FEXECVE would be preferable. cap_rights_init(&rights, CAP_FEXECVE, CAP_LOOKUP, CAP_READ); EXPECT_OK(cap_rights_limit(cap_fd, &rights)); - EXPECT_OK(fexecve_(cap_fd, argv_pass, null_envp)); + EXPECT_OK(fexecve_(cap_fd, argv_pass_, null_envp)); // Should not reach here, exec() takes over. EXPECT_TRUE(!"fexecve() should have succeeded"); } -FORK_TEST(Fexecve, ExecutePermissionCheck) { - int fd = open(EXEC_PROG_NOEXEC, O_RDONLY); +FORK_TEST_F(Fexecve, ExecutePermissionCheck) { + int fd = open(exec_prog_noexec_.c_str(), O_RDONLY); EXPECT_OK(fd); if (fd >= 0) { struct stat data; EXPECT_OK(fstat(fd, &data)); EXPECT_EQ((mode_t)0, data.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH)); - EXPECT_EQ(-1, fexecve_(fd, argv_fail, null_envp)); + EXPECT_EQ(-1, fexecve_(fd, argv_fail_, null_envp)); EXPECT_EQ(EACCES, errno); close(fd); } } -FORK_TEST(Fexecve, SetuidIgnored) { +FORK_TEST_F(Fexecve, SetuidIgnored) { if (geteuid() == 0) { TEST_SKIPPED("requires non-root"); return; } - int fd = open(EXEC_PROG_SETUID, O_RDONLY); + int fd = open(exec_prog_setuid_.c_str(), O_RDONLY); EXPECT_OK(fd); EXPECT_OK(cap_enter()); if (fd >= 0) { struct stat data; EXPECT_OK(fstat(fd, &data)); EXPECT_EQ((mode_t)S_ISUID, data.st_mode & S_ISUID); - EXPECT_OK(fexecve_(fd, argv_checkroot, null_envp)); + EXPECT_OK(fexecve_(fd, argv_checkroot_, null_envp)); // Should not reach here, exec() takes over. EXPECT_TRUE(!"fexecve() should have succeeded"); close(fd); } } -FORK_TEST(Fexecve, ExecveFailure) { +FORK_TEST_F(Fexecve, ExecveFailure) { EXPECT_OK(cap_enter()); - EXPECT_EQ(-1, execve(argv_fail[0], argv_fail, null_envp)); + EXPECT_EQ(-1, execve(argv_fail_[0], argv_fail_, null_envp)); EXPECT_EQ(ECAPMODE, errno); } -FORK_TEST_ON(Fexecve, CapModeScriptFail, TmpFile("cap_sh_script")) { - // First, build an executable shell script - int fd = open(TmpFile("cap_sh_script"), O_RDWR|O_CREAT, 0755); - EXPECT_OK(fd); - const char* contents = "#!/bin/sh\nexit 99\n"; - EXPECT_OK(write(fd, contents, strlen(contents))); - close(fd); +FORK_TEST_F(FexecveWithScript, CapModeScriptFail) { + int fd; // Open the script file, with CAP_FEXECVE rights. - fd = open(TmpFile("cap_sh_script"), O_RDONLY); + fd = open(temp_script_filename_, O_RDONLY); cap_rights_t rights; cap_rights_init(&rights, CAP_FEXECVE, CAP_READ, CAP_SEEK); EXPECT_OK(cap_rights_limit(fd, &rights)); @@ -133,12 +163,12 @@ FORK_TEST_ON(Fexecve, CapModeScriptFail, TmpFile("cap_ EXPECT_OK(cap_enter()); // Enter capability mode // Attempt fexecve; should fail, because "/bin/sh" is inaccessible. - EXPECT_EQ(-1, fexecve_(fd, argv_pass, null_envp)); + EXPECT_EQ(-1, fexecve_(fd, argv_pass_, null_envp)); } #ifdef HAVE_EXECVEAT TEST(Execveat, NoUpwardTraversal) { - char *abspath = realpath(EXEC_PROG, NULL); + char *abspath = realpath(exec_prog_, NULL); char cwd[1024]; getcwd(cwd, sizeof(cwd)); @@ -148,9 +178,9 @@ TEST(Execveat, NoUpwardTraversal) { EXPECT_OK(cap_enter()); // Enter capability mode. // Can't execveat() an absolute path, even relative to a dfd. EXPECT_SYSCALL_FAIL(ECAPMODE, - execveat(AT_FDCWD, abspath, argv_pass, null_envp, 0)); + execveat(AT_FDCWD, abspath, argv_pass_, null_envp, 0)); EXPECT_SYSCALL_FAIL(E_NO_TRAVERSE_CAPABILITY, - execveat(dfd, abspath, argv_pass, null_envp, 0)); + execveat(dfd, abspath, argv_pass_, null_envp, 0)); // Can't execveat() a relative path ("..//./"). char *p = cwd + strlen(cwd); @@ -158,9 +188,9 @@ TEST(Execveat, NoUpwardTraversal) { char buffer[1024] = "../"; strcat(buffer, ++p); strcat(buffer, "/"); - strcat(buffer, EXEC_PROG); + strcat(buffer, exec_prog_); EXPECT_SYSCALL_FAIL(E_NO_TRAVERSE_CAPABILITY, - execveat(dfd, buffer, argv_pass, null_envp, 0)); + execveat(dfd, buffer, argv_pass_, null_envp, 0)); exit(HasFailure() ? 99 : 123); } int status; From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:51 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E4E12DBF93 for ; Tue, 3 Sep 2019 14:05:51 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yl2Vckz4NvT; Tue, 3 Sep 2019 14:05:51 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 77BF819CBE; Tue, 3 Sep 2019 14:05:49 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 579A760B; Fri, 29 Mar 2019 03:25:27 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 23EE473837; Fri, 29 Mar 2019 03:25:27 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 12E5060A; Fri, 29 Mar 2019 03:25:27 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id F09DD606 for ; Fri, 29 Mar 2019 03:25:23 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C913873833; Fri, 29 Mar 2019 03:25:23 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8C43B28E6A; Fri, 29 Mar 2019 03:25:23 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2T3PNv2096399; Fri, 29 Mar 2019 03:25:23 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2T3PKJq096386; Fri, 29 Mar 2019 03:25:20 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903290325.x2T3PKJq096386@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345679 - in projects/fuse2: . bin/date bin/dd cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall contrib/elftoolchain/libdwarf contrib/elftoolchain/readelf contrib/elftoolchai... X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: . bin/date bin/dd cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall contrib/elftoolchain/libdwarf contrib/elftoolchain/readelf contrib/elftoolchain/strings contrib/libarch... X-SVN-Commit-Revision: 345679 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 23EE473837 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.995,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.962,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:52 -0000 X-Original-Date: Fri, 29 Mar 2019 03:25:20 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:52 -0000 Author: asomers Date: Fri Mar 29 03:25:20 2019 New Revision: 345679 URL: https://svnweb.freebsd.org/changeset/base/345679 Log: MFHead@r345677 Added: projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_zip_bz2_hang.zip.uu - copied unchanged from r345677, head/contrib/libarchive/libarchive/test/test_read_format_zip_bz2_hang.zip.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8_crash_1.zipx.uu - copied unchanged from r345677, head/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8_crash_1.zipx.uu projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8_crash_2.zipx.uu - copied unchanged from r345677, head/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8_crash_2.zipx.uu projects/fuse2/libexec/rc/rc.d/ippool - copied unchanged from r345677, head/libexec/rc/rc.d/ippool projects/fuse2/sys/conf/dtb.build.mk - copied unchanged from r345677, head/sys/conf/dtb.build.mk projects/fuse2/sys/geom/geom_flashmap.h - copied unchanged from r345677, head/sys/geom/geom_flashmap.h projects/fuse2/sys/geom/label/g_label_flashmap.c - copied unchanged from r345677, head/sys/geom/label/g_label_flashmap.c projects/fuse2/sys/powerpc/powernv/opal_hmi.c - copied unchanged from r345677, head/sys/powerpc/powernv/opal_hmi.c projects/fuse2/tests/sys/netpfil/pf/CVE-2019-5598.py - copied unchanged from r345677, head/tests/sys/netpfil/pf/CVE-2019-5598.py projects/fuse2/tests/sys/netpfil/pf/icmp.sh - copied unchanged from r345677, head/tests/sys/netpfil/pf/icmp.sh projects/fuse2/tests/sys/netpfil/pf/sniffer.py - copied unchanged from r345677, head/tests/sys/netpfil/pf/sniffer.py projects/fuse2/tools/build/options/WITHOUT_RETPOLINE - copied unchanged from r345677, head/tools/build/options/WITHOUT_RETPOLINE Deleted: projects/fuse2/sys/powerpc/aim/isa3_hashtb.c Modified: projects/fuse2/Makefile.inc1 projects/fuse2/UPDATING projects/fuse2/bin/date/date.1 projects/fuse2/bin/date/date.c projects/fuse2/bin/dd/dd.1 projects/fuse2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c projects/fuse2/contrib/elftoolchain/libdwarf/libdwarf_lineno.c projects/fuse2/contrib/elftoolchain/readelf/readelf.c projects/fuse2/contrib/elftoolchain/strings/strings.c projects/fuse2/contrib/libarchive/libarchive/archive_blake2sp_ref.c projects/fuse2/contrib/libarchive/libarchive/archive_entry.c projects/fuse2/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_rar5.c projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_zip.c projects/fuse2/contrib/libarchive/libarchive/archive_string.c projects/fuse2/contrib/libarchive/libarchive/archive_write_disk_posix.c projects/fuse2/contrib/libarchive/libarchive/archive_write_set_format_7zip.c projects/fuse2/contrib/libarchive/libarchive/test/test_entry.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_rar5.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_xar.c projects/fuse2/contrib/libarchive/libarchive/test/test_read_format_zip.c projects/fuse2/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp projects/fuse2/contrib/netbsd-tests/lib/libc/regex/t_exhaust.c projects/fuse2/contrib/tzdata/Makefile projects/fuse2/contrib/tzdata/NEWS projects/fuse2/contrib/tzdata/README projects/fuse2/contrib/tzdata/africa projects/fuse2/contrib/tzdata/asia projects/fuse2/contrib/tzdata/backward projects/fuse2/contrib/tzdata/backzone projects/fuse2/contrib/tzdata/etcetera projects/fuse2/contrib/tzdata/europe projects/fuse2/contrib/tzdata/leap-seconds.list projects/fuse2/contrib/tzdata/leapseconds projects/fuse2/contrib/tzdata/northamerica projects/fuse2/contrib/tzdata/theory.html projects/fuse2/contrib/tzdata/version projects/fuse2/crypto/openssh/readconf.c projects/fuse2/crypto/openssh/scp.c projects/fuse2/gnu/usr.bin/binutils/as/Makefile projects/fuse2/gnu/usr.bin/binutils/ld/Makefile projects/fuse2/gnu/usr.bin/binutils/objcopy/Makefile projects/fuse2/gnu/usr.bin/binutils/objdump/Makefile projects/fuse2/lib/libarchive/tests/Makefile projects/fuse2/lib/libc/Makefile projects/fuse2/lib/libc/gen/arc4random.3 projects/fuse2/lib/libc/gen/fts-compat.c projects/fuse2/lib/libc/gen/fts-compat11.c projects/fuse2/lib/libc/gen/fts.c projects/fuse2/lib/libc/gen/sysctl.3 projects/fuse2/lib/libthr/Makefile projects/fuse2/lib/libutil/pidfile.c projects/fuse2/lib/libutil/tests/pidfile_test.c projects/fuse2/lib/libvgl/bitmap.c projects/fuse2/lib/libvgl/main.c projects/fuse2/lib/libvgl/mouse.c projects/fuse2/lib/libvgl/simple.c projects/fuse2/lib/libvgl/text.c projects/fuse2/lib/libvgl/vgl.3 projects/fuse2/lib/libvgl/vgl.h projects/fuse2/libexec/rc/rc.conf projects/fuse2/libexec/rc/rc.d/Makefile projects/fuse2/libexec/rc/rc.d/ipfw projects/fuse2/libexec/rtld-elf/Makefile projects/fuse2/libexec/rtld-elf/rtld.c projects/fuse2/release/arm64/PINE64-LTS.conf projects/fuse2/release/arm64/PINE64.conf projects/fuse2/release/arm64/PINEBOOK.conf projects/fuse2/release/arm64/RPI3.conf projects/fuse2/sbin/camcontrol/fwdownload.c projects/fuse2/sbin/fsck_msdosfs/dir.c projects/fuse2/sbin/init/init.c projects/fuse2/secure/usr.bin/ssh/Makefile projects/fuse2/share/examples/etc/make.conf projects/fuse2/share/man/man4/Makefile projects/fuse2/share/man/man4/geom_uzip.4 projects/fuse2/share/man/man4/tcp.4 projects/fuse2/share/man/man5/rc.conf.5 projects/fuse2/share/misc/committers-src.dot projects/fuse2/share/misc/iso3166 projects/fuse2/share/mk/bsd.cpu.mk projects/fuse2/share/mk/googletest.test.inc.mk projects/fuse2/share/mk/src.opts.mk projects/fuse2/stand/common/disk.c projects/fuse2/stand/common/disk.h projects/fuse2/stand/efi/libefi/efipart.c projects/fuse2/stand/efi/loader/main.c projects/fuse2/stand/i386/libi386/biosdisk.c projects/fuse2/stand/i386/zfsboot/Makefile projects/fuse2/stand/libsa/zfs/zfs.c projects/fuse2/stand/lua/config.lua projects/fuse2/stand/lua/menu.lua projects/fuse2/stand/lua/password.lua projects/fuse2/stand/mips/beri/loader/beri_disk_cfi.c projects/fuse2/stand/mips/beri/loader/beri_disk_sdcard.c projects/fuse2/stand/uboot/common/main.c projects/fuse2/stand/uboot/lib/disk.c projects/fuse2/stand/usb/storage/umass_loader.c projects/fuse2/stand/userboot/userboot/main.c projects/fuse2/stand/userboot/userboot/userboot_disk.c projects/fuse2/sys/amd64/amd64/fpu.c projects/fuse2/sys/amd64/amd64/pmap.c projects/fuse2/sys/amd64/linux/linux_dummy.c projects/fuse2/sys/amd64/linux/linux_machdep.c projects/fuse2/sys/amd64/linux/linux_proto.h projects/fuse2/sys/amd64/linux/linux_syscall.h projects/fuse2/sys/amd64/linux/linux_syscalls.c projects/fuse2/sys/amd64/linux/linux_sysent.c projects/fuse2/sys/amd64/linux/linux_systrace_args.c projects/fuse2/sys/amd64/linux/syscalls.master projects/fuse2/sys/amd64/linux32/linux32_dummy.c projects/fuse2/sys/amd64/linux32/linux32_machdep.c projects/fuse2/sys/amd64/linux32/linux32_proto.h projects/fuse2/sys/amd64/linux32/linux32_syscall.h projects/fuse2/sys/amd64/linux32/linux32_syscalls.c projects/fuse2/sys/amd64/linux32/linux32_sysent.c projects/fuse2/sys/amd64/linux32/linux32_systrace_args.c projects/fuse2/sys/amd64/linux32/syscalls.master projects/fuse2/sys/arm64/arm64/identcpu.c projects/fuse2/sys/arm64/arm64/nexus.c projects/fuse2/sys/arm64/conf/GENERIC projects/fuse2/sys/cam/cam_periph.c projects/fuse2/sys/cam/cam_periph.h projects/fuse2/sys/cddl/dev/dtrace/amd64/dtrace_subr.c projects/fuse2/sys/cddl/dev/dtrace/i386/dtrace_subr.c projects/fuse2/sys/compat/linux/linux_fork.c projects/fuse2/sys/compat/linux/linux_ipc.c projects/fuse2/sys/compat/linux/linux_ipc.h projects/fuse2/sys/conf/dtb.mk projects/fuse2/sys/conf/files projects/fuse2/sys/conf/files.powerpc projects/fuse2/sys/conf/kern.post.mk projects/fuse2/sys/conf/kmod.mk projects/fuse2/sys/conf/options projects/fuse2/sys/dev/cfi/cfi_core.c projects/fuse2/sys/dev/cfi/cfi_reg.h projects/fuse2/sys/dev/cfi/cfi_var.h projects/fuse2/sys/dev/cxgbe/adapter.h projects/fuse2/sys/dev/cxgbe/t4_main.c projects/fuse2/sys/dev/cxgbe/t4_sge.c projects/fuse2/sys/dev/ena/ena.c projects/fuse2/sys/dev/ena/ena.h projects/fuse2/sys/dev/etherswitch/e6000sw/e6000sw.c projects/fuse2/sys/dev/intpm/intpm.c projects/fuse2/sys/dev/jedec_dimm/jedec_dimm.c projects/fuse2/sys/dev/mpr/mpr.c projects/fuse2/sys/dev/mpr/mpr_table.c projects/fuse2/sys/dev/mps/mps.c projects/fuse2/sys/dev/mps/mps_table.c projects/fuse2/sys/dev/neta/if_mvneta.c projects/fuse2/sys/dev/random/random_harvestq.c projects/fuse2/sys/dev/sdhci/sdhci.c projects/fuse2/sys/dev/sdhci/sdhci.h projects/fuse2/sys/dev/smartpqi/smartpqi_cam.c projects/fuse2/sys/dev/smartpqi/smartpqi_mem.c projects/fuse2/sys/dev/tpm/tpm20.c projects/fuse2/sys/dev/tpm/tpm20.h projects/fuse2/sys/dev/tpm/tpm_crb.c projects/fuse2/sys/dev/tpm/tpm_tis.c projects/fuse2/sys/dev/uart/uart_bus_pci.c projects/fuse2/sys/dev/uart/uart_cpu_arm64.c projects/fuse2/sys/dev/usb/controller/xhci_pci.c projects/fuse2/sys/dev/usb/wlan/if_run.c projects/fuse2/sys/fs/nullfs/null_vfsops.c projects/fuse2/sys/fs/tmpfs/tmpfs.h projects/fuse2/sys/fs/tmpfs/tmpfs_vfsops.c projects/fuse2/sys/geom/geom_flashmap.c projects/fuse2/sys/geom/label/g_label.c projects/fuse2/sys/geom/label/g_label.h projects/fuse2/sys/i386/i386/npx.c projects/fuse2/sys/i386/i386/pmap.c projects/fuse2/sys/i386/linux/linux.h projects/fuse2/sys/i386/linux/linux_dummy.c projects/fuse2/sys/i386/linux/linux_machdep.c projects/fuse2/sys/i386/linux/linux_proto.h projects/fuse2/sys/i386/linux/linux_syscall.h projects/fuse2/sys/i386/linux/linux_syscalls.c projects/fuse2/sys/i386/linux/linux_sysent.c projects/fuse2/sys/i386/linux/linux_systrace_args.c projects/fuse2/sys/i386/linux/syscalls.master projects/fuse2/sys/kern/imgact_elf.c projects/fuse2/sys/kern/kern_descrip.c projects/fuse2/sys/kern/kern_intr.c projects/fuse2/sys/kern/kern_mib.c projects/fuse2/sys/mips/atheros/ar71xx_gpio.c projects/fuse2/sys/mips/atheros/ar71xx_gpiovar.h projects/fuse2/sys/mips/conf/DIR-825C1 projects/fuse2/sys/modules/Makefile projects/fuse2/sys/modules/efirt/Makefile projects/fuse2/sys/modules/hwpmc_mips24k/Makefile projects/fuse2/sys/modules/hwpmc_mips74k/Makefile projects/fuse2/sys/modules/iflib/Makefile projects/fuse2/sys/modules/nvdimm/Makefile projects/fuse2/sys/modules/tmpfs/Makefile projects/fuse2/sys/modules/tpm/Makefile projects/fuse2/sys/net/if_bridge.c projects/fuse2/sys/net/if_lagg.c projects/fuse2/sys/net/iflib.c projects/fuse2/sys/netinet/ip_icmp.c projects/fuse2/sys/netinet/sctp.h projects/fuse2/sys/netinet/sctp_indata.c projects/fuse2/sys/netinet/sctp_output.c projects/fuse2/sys/netinet/sctp_pcb.c projects/fuse2/sys/netinet/sctp_ss_functions.c projects/fuse2/sys/netinet/sctp_structs.h projects/fuse2/sys/netinet/sctp_usrreq.c projects/fuse2/sys/netinet/sctputil.c projects/fuse2/sys/netinet/sctputil.h projects/fuse2/sys/netinet/tcp_output.c projects/fuse2/sys/netinet/tcp_subr.c projects/fuse2/sys/netinet/tcp_syncache.c projects/fuse2/sys/netinet/tcp_timer.c projects/fuse2/sys/netinet/tcp_timer.h projects/fuse2/sys/netpfil/ipfw/ip_fw2.c projects/fuse2/sys/netpfil/ipfw/ip_fw_pfil.c projects/fuse2/sys/netpfil/ipfw/ip_fw_private.h projects/fuse2/sys/netpfil/pf/pf.c projects/fuse2/sys/netpfil/pf/pf_ioctl.c projects/fuse2/sys/powerpc/aim/aim_machdep.c projects/fuse2/sys/powerpc/aim/moea64_native.c projects/fuse2/sys/powerpc/aim/trap_subr64.S projects/fuse2/sys/powerpc/booke/locore.S projects/fuse2/sys/powerpc/include/mmuvar.h projects/fuse2/sys/powerpc/include/spr.h projects/fuse2/sys/powerpc/include/trap.h projects/fuse2/sys/powerpc/ofw/ofwcall64.S projects/fuse2/sys/powerpc/powernv/opal.h projects/fuse2/sys/powerpc/powernv/opalcall.S projects/fuse2/sys/powerpc/powerpc/interrupt.c projects/fuse2/sys/powerpc/powerpc/swtch64.S projects/fuse2/sys/riscv/riscv/timer.c projects/fuse2/sys/sys/ctype.h projects/fuse2/sys/sys/random.h projects/fuse2/sys/vm/swap_pager.c projects/fuse2/sys/vm/vm_fault.c projects/fuse2/sys/vm/vm_map.c projects/fuse2/sys/x86/iommu/busdma_dmar.c projects/fuse2/tests/sys/netmap/Makefile projects/fuse2/tests/sys/netmap/ctrl-api-test.c projects/fuse2/tests/sys/netpfil/pf/Makefile projects/fuse2/tests/sys/netpfil/pf/pft_ping.py projects/fuse2/tools/build/mk/OptionalObsoleteFiles.inc projects/fuse2/tools/tools/makeroot/makeroot.sh projects/fuse2/usr.bin/calendar/calendars/calendar.freebsd projects/fuse2/usr.bin/dtc/dtb.cc projects/fuse2/usr.bin/dtc/dtb.hh projects/fuse2/usr.bin/dtc/dtc.1 projects/fuse2/usr.bin/dtc/dtc.cc projects/fuse2/usr.bin/dtc/fdt.cc projects/fuse2/usr.bin/dtc/fdt.hh projects/fuse2/usr.bin/dtc/input_buffer.cc projects/fuse2/usr.bin/dtc/util.hh projects/fuse2/usr.sbin/daemon/daemon.8 projects/fuse2/usr.sbin/iostat/iostat.c Directory Properties: projects/fuse2/ (props changed) projects/fuse2/cddl/ (props changed) projects/fuse2/cddl/contrib/opensolaris/ (props changed) projects/fuse2/contrib/elftoolchain/ (props changed) projects/fuse2/contrib/libarchive/ (props changed) projects/fuse2/contrib/llvm/ (props changed) projects/fuse2/contrib/netbsd-tests/ (props changed) projects/fuse2/contrib/tzdata/ (props changed) projects/fuse2/crypto/openssh/ (props changed) projects/fuse2/gnu/usr.bin/binutils/ (props changed) Modified: projects/fuse2/Makefile.inc1 ============================================================================== --- projects/fuse2/Makefile.inc1 Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/Makefile.inc1 Fri Mar 29 03:25:20 2019 (r345679) @@ -1906,11 +1906,11 @@ create-kernel-packages-flavor${flavor:C,^""$,${_defaul /name/ { printf("===> Creating %s-", $$2); next } \ /version/ {print $$2; next } ' \ ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \ - ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ + ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname -o ALLOW_BASE_SHLIBS=yes \ create -M ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl \ -p ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.plist \ -r ${KSTAGEDIR}/${DISTDIR} \ - -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} + -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} . endfor .endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" @@ -1938,24 +1938,24 @@ create-kernel-packages-extra-flavor${flavor:C,^""$,${_ /name/ { printf("===> Creating %s-", $$2); next } \ /version/ {print $$2; next } ' \ ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \ - ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ + ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname -o ALLOW_BASE_SHLIBS=yes \ create -M ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl \ -p ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.plist \ -r ${KSTAGEDIR}/kernel.${_kernel} \ - -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} + -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} . endfor . endif . endfor .endif sign-packages: _pkgbootstrap .PHONY - @[ -L "${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest" ] && \ - unlink ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest ; \ - ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh repo \ - -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ - ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ + @[ -L "${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/latest" ] && \ + unlink ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/latest ; \ + ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname repo \ + -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} \ + ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} \ ${PKGSIGNKEY} ; \ - cd ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI); \ + cd ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI); \ ln -s ${PKG_VERSION} latest # Modified: projects/fuse2/UPDATING ============================================================================== --- projects/fuse2/UPDATING Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/UPDATING Fri Mar 29 03:25:20 2019 (r345679) @@ -43,6 +43,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: prerequisites and upgrading, if you are not already using clang 3.5.0 or higher. +20190226: + geom_uzip(4) depends on the new module xz. If geom_uzip is statically + compiled into your custom kernel, add 'device xz' statement to the + kernel config. + 20190219: drm and drm2 have been removed from the tree. Please see https://wiki.freebsd.org/Graphics for the latest information on Modified: projects/fuse2/bin/date/date.1 ============================================================================== --- projects/fuse2/bin/date/date.1 Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/bin/date/date.1 Fri Mar 29 03:25:20 2019 (r345679) @@ -32,7 +32,7 @@ .\" @(#)date.1 8.3 (Berkeley) 4/28/95 .\" $FreeBSD$ .\" -.Dd March 12, 2019 +.Dd March 20, 2019 .Dt DATE 1 .Os .Sh NAME @@ -52,13 +52,13 @@ .Ar ... .Op Cm + Ns Ar output_fmt .Nm -.Op Fl jnu +.Op Fl ju .Sm off .Op Oo Oo Oo Oo Ar cc Oc Ar yy Oc Ar mm Oc Ar dd Oc Ar HH .Ar MM Op Ar .ss .Sm on .Nm -.Op Fl jnRu +.Op Fl jRu .Fl f Ar input_fmt new_date .Op Cm + Ns Ar output_fmt .Nm @@ -142,16 +142,6 @@ This allows you to use the flag in addition to the .Cm + option to convert one date format to another. -.It Fl n -By default, if the -.Xr timed 8 -daemon is running, -.Nm -sets the time on all of the machines in the local group. -The -.Fl n -option suppresses this behavior and causes the time to be set only on the -current machine. .It Fl R Use RFC 2822 date and time output format. This is equivalent to using @@ -431,23 +421,6 @@ can be used to parse the output from .Nm and express it in Epoch time. .Sh DIAGNOSTICS -Occasionally, when -.Xr timed 8 -synchronizes the time on many hosts, the setting of a new time value may -require more than a few seconds. -On these occasions, -.Nm -prints: -.Ql Network time being set . -The message -.Ql Communication error with timed -occurs when the communication -between -.Nm -and -.Xr timed 8 -fails. -.Pp It is invalid to combine the .Fl I flag with either @@ -465,8 +438,7 @@ and exits with an error status. .Xr gettimeofday 2 , .Xr getutxent 3 , .Xr strftime 3 , -.Xr strptime 3 , -.Xr timed 8 +.Xr strptime 3 .Rs .%T "TSP: The Time Synchronization Protocol for UNIX 4.3BSD" .%A R. Gusella @@ -478,7 +450,7 @@ The utility is expected to be compatible with .St -p1003.2 . The -.Fl d , f , I , j , n , r , t , +.Fl d , f , I , j , r , t , and .Fl v options are all extensions to the standard. Modified: projects/fuse2/bin/date/date.c ============================================================================== --- projects/fuse2/bin/date/date.c Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/bin/date/date.c Fri Mar 29 03:25:20 2019 (r345679) @@ -72,7 +72,7 @@ static void iso8601_usage(const char *); static void multipleformats(void); static void printdate(const char *); static void printisodate(struct tm *); -static void setthetime(const char *, const char *, int, int); +static void setthetime(const char *, const char *, int); static void usage(void); static const struct iso8601_fmt { @@ -92,7 +92,7 @@ int main(int argc, char *argv[]) { int ch, rflag; - bool Iflag, jflag, nflag, Rflag; + bool Iflag, jflag, Rflag; const char *format; char buf[1024]; char *fmt; @@ -107,8 +107,8 @@ main(int argc, char *argv[]) fmt = NULL; (void) setlocale(LC_TIME, ""); rflag = 0; - Iflag = jflag = nflag = Rflag = 0; - while ((ch = getopt(argc, argv, "f:I::jnRr:uv:")) != -1) + Iflag = jflag = Rflag = 0; + while ((ch = getopt(argc, argv, "f:I::jRr:uv:")) != -1) switch((char)ch) { case 'f': fmt = optarg; @@ -132,9 +132,6 @@ main(int argc, char *argv[]) case 'j': jflag = 1; /* don't set time */ break; - case 'n': /* don't set network */ - nflag = 1; - break; case 'R': /* RFC 2822 datetime format */ if (Iflag) multipleformats(); @@ -179,7 +176,7 @@ main(int argc, char *argv[]) } if (*argv) { - setthetime(fmt, *argv, jflag, nflag); + setthetime(fmt, *argv, jflag); ++argv; } else if (fmt != NULL) usage(); @@ -250,7 +247,7 @@ printisodate(struct tm *lt) #define ATOI2(s) ((s) += 2, ((s)[-2] - '0') * 10 + ((s)[-1] - '0')) static void -setthetime(const char *fmt, const char *p, int jflag, int nflag) +setthetime(const char *fmt, const char *p, int jflag) { struct utmpx utx; struct tm *lt; @@ -343,20 +340,17 @@ setthetime(const char *fmt, const char *p, int jflag, errx(1, "nonexistent time"); if (!jflag) { - /* set the time */ - if (nflag) { - utx.ut_type = OLD_TIME; - memset(utx.ut_id, 0, sizeof(utx.ut_id)); - (void)gettimeofday(&utx.ut_tv, NULL); - pututxline(&utx); - tv.tv_sec = tval; - tv.tv_usec = 0; - if (settimeofday(&tv, NULL) != 0) - err(1, "settimeofday (timeval)"); - utx.ut_type = NEW_TIME; - (void)gettimeofday(&utx.ut_tv, NULL); - pututxline(&utx); - } + utx.ut_type = OLD_TIME; + memset(utx.ut_id, 0, sizeof(utx.ut_id)); + (void)gettimeofday(&utx.ut_tv, NULL); + pututxline(&utx); + tv.tv_sec = tval; + tv.tv_usec = 0; + if (settimeofday(&tv, NULL) != 0) + err(1, "settimeofday (timeval)"); + utx.ut_type = NEW_TIME; + (void)gettimeofday(&utx.ut_tv, NULL); + pututxline(&utx); if ((p = getlogin()) == NULL) p = "???"; Modified: projects/fuse2/bin/dd/dd.1 ============================================================================== --- projects/fuse2/bin/dd/dd.1 Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/bin/dd/dd.1 Fri Mar 29 03:25:20 2019 (r345679) @@ -32,7 +32,7 @@ .\" @(#)dd.1 8.2 (Berkeley) 1/13/94 .\" $FreeBSD$ .\" -.Dd August 8, 2018 +.Dd March 26, 2019 .Dt DD 1 .Os .Sh NAME @@ -427,7 +427,8 @@ if necessary, to a 1MiB boundary: .Xr mt 1 , .Xr recoverdisk 1 , .Xr tr 1 , -.Xr geom 4 +.Xr geom 4 , +.Xr trim 8 .Sh STANDARDS The .Nm Modified: projects/fuse2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c ============================================================================== --- projects/fuse2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/syscall/tst.args.c Fri Mar 29 03:25:20 2019 (r345679) @@ -35,7 +35,8 @@ int main(int argc, char **argv) { for (;;) { - (void) __syscall(SYS_mmap, NULL, 1, 2, 3, -1, 0x12345678); + (void) __syscall(SYS_mmap, NULL, (size_t)1, 2, 3, -1, + (off_t)0x12345678); } return (0); Modified: projects/fuse2/contrib/elftoolchain/libdwarf/libdwarf_lineno.c ============================================================================== --- projects/fuse2/contrib/elftoolchain/libdwarf/libdwarf_lineno.c Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/contrib/elftoolchain/libdwarf/libdwarf_lineno.c Fri Mar 29 03:25:20 2019 (r345679) @@ -33,9 +33,10 @@ _dwarf_lineno_add_file(Dwarf_LineInfo li, uint8_t **p, Dwarf_Error *error, Dwarf_Debug dbg) { Dwarf_LineFile lf; - const char *dirname; + FILE *filepath; + const char *incdir; uint8_t *src; - int slen; + size_t slen; src = *p; @@ -54,20 +55,33 @@ _dwarf_lineno_add_file(Dwarf_LineInfo li, uint8_t **p, return (DW_DLE_DIR_INDEX_BAD); } - /* Make full pathname if need. */ + /* Make a full pathname if needed. */ if (*lf->lf_fname != '/') { - dirname = compdir; + filepath = open_memstream(&lf->lf_fullpath, &slen); + if (filepath == NULL) { + free(lf); + DWARF_SET_ERROR(dbg, error, DW_DLE_MEMORY); + return (DW_DLE_MEMORY); + } + if (lf->lf_dirndx > 0) - dirname = li->li_incdirs[lf->lf_dirndx - 1]; - if (dirname != NULL) { - slen = strlen(dirname) + strlen(lf->lf_fname) + 2; - if ((lf->lf_fullpath = malloc(slen)) == NULL) { - free(lf); - DWARF_SET_ERROR(dbg, error, DW_DLE_MEMORY); - return (DW_DLE_MEMORY); - } - snprintf(lf->lf_fullpath, slen, "%s/%s", dirname, - lf->lf_fname); + incdir = li->li_incdirs[lf->lf_dirndx - 1]; + else + incdir = NULL; + + /* + * Prepend the compilation directory if the directory table + * entry is relative. + */ + if (incdir == NULL || *incdir != '/') + fprintf(filepath, "%s/", compdir); + if (incdir != NULL) + fprintf(filepath, "%s/", incdir); + fprintf(filepath, "%s", lf->lf_fname); + if (fclose(filepath) != 0) { + free(lf); + DWARF_SET_ERROR(dbg, error, DW_DLE_MEMORY); + return (DW_DLE_MEMORY); } } Modified: projects/fuse2/contrib/elftoolchain/readelf/readelf.c ============================================================================== --- projects/fuse2/contrib/elftoolchain/readelf/readelf.c Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/contrib/elftoolchain/readelf/readelf.c Fri Mar 29 03:25:20 2019 (r345679) @@ -2741,6 +2741,7 @@ dump_flags(struct flag_desc *desc, uint64_t val) } if (val != 0) printf(" unknown (0x%jx)", (uintmax_t)val); + printf("\n"); } static struct flag_desc dt_flags[] = { @@ -3524,7 +3525,6 @@ dump_notes_data(const char *name, uint32_t type, const goto unknown; printf(" Features:"); dump_flags(note_feature_ctl_flags, ubuf[0]); - printf("\n"); return; } } Modified: projects/fuse2/contrib/elftoolchain/strings/strings.c ============================================================================== --- projects/fuse2/contrib/elftoolchain/strings/strings.c Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/contrib/elftoolchain/strings/strings.c Fri Mar 29 03:25:20 2019 (r345679) @@ -84,11 +84,11 @@ static struct option strings_longopts[] = { { NULL, 0, NULL, 0 } }; -long getcharacter(void); +int getcharacter(FILE *, long *); int handle_file(const char *); -int handle_elf(const char *, int); -int handle_binary(const char *, int); -int find_strings(const char *, off_t, off_t); +int handle_elf(const char *, FILE *); +int handle_binary(const char *, FILE *, size_t); +int find_strings(const char *, FILE *, off_t, off_t); void show_version(void); void usage(void); @@ -190,7 +190,7 @@ main(int argc, char **argv) if (min_len == 0) min_len = 4; if (*argv == NULL) - rc = find_strings("{standard input}", 0, 0); + rc = find_strings("{standard input}", stdin, 0, 0); else while (*argv != NULL) { if (handle_file(*argv) != 0) rc = 1; @@ -202,19 +202,19 @@ main(int argc, char **argv) int handle_file(const char *name) { - int fd, rt; + FILE *pfile; + int rt; if (name == NULL) return (1); - if (freopen(name, "rb", stdin) == NULL) { + pfile = fopen(name, "rb"); + if (pfile == NULL) { warnx("'%s': %s", name, strerror(errno)); return (1); } - fd = fileno(stdin); - if (fd < 0) - return (1); - rt = handle_elf(name, fd); + rt = handle_elf(name, pfile); + fclose(pfile); return (rt); } @@ -223,15 +223,11 @@ handle_file(const char *name) * treated as a binary file. This would include text file, core dumps ... */ int -handle_binary(const char *name, int fd) +handle_binary(const char *name, FILE *pfile, size_t size) { - struct stat buf; - memset(&buf, 0, sizeof(buf)); - (void)lseek(fd, 0, SEEK_SET); - if (!fstat(fd, &buf)) - return (find_strings(name, 0, buf.st_size)); - return (1); + (void)fseeko(pfile, 0, SEEK_SET); + return (find_strings(name, pfile, 0, size)); } /* @@ -241,24 +237,29 @@ handle_binary(const char *name, int fd) * different archs as flat binary files(has to overridden using -a). */ int -handle_elf(const char *name, int fd) +handle_elf(const char *name, FILE *pfile) { + struct stat buf; GElf_Ehdr elfhdr; GElf_Shdr shdr; Elf *elf; Elf_Scn *scn; - int rc; + int rc, fd; rc = 0; + fd = fileno(pfile); + if (fstat(fd, &buf) < 0) + return (1); + /* If entire file is chosen, treat it as a binary file */ if (entire_file) - return (handle_binary(name, fd)); + return (handle_binary(name, pfile, buf.st_size)); (void)lseek(fd, 0, SEEK_SET); elf = elf_begin(fd, ELF_C_READ, NULL); if (elf_kind(elf) != ELF_K_ELF) { (void)elf_end(elf); - return (handle_binary(name, fd)); + return (handle_binary(name, pfile, buf.st_size)); } if (gelf_getehdr(elf, &elfhdr) == NULL) { @@ -269,7 +270,7 @@ handle_elf(const char *name, int fd) if (elfhdr.e_shnum == 0 && elfhdr.e_type == ET_CORE) { (void)elf_end(elf); - return (handle_binary(name, fd)); + return (handle_binary(name, pfile, buf.st_size)); } else { scn = NULL; while ((scn = elf_nextscn(elf, scn)) != NULL) { @@ -277,7 +278,7 @@ handle_elf(const char *name, int fd) continue; if (shdr.sh_type != SHT_NOBITS && (shdr.sh_flags & SHF_ALLOC) != 0) { - rc = find_strings(name, shdr.sh_offset, + rc = find_strings(name, pfile, shdr.sh_offset, shdr.sh_size); } } @@ -290,51 +291,52 @@ handle_elf(const char *name, int fd) * Retrieves a character from input stream based on the encoding * type requested. */ -long -getcharacter(void) +int +getcharacter(FILE *pfile, long *rt) { - long rt; - int i; - char buf[4], c; + int i, c; + char buf[4]; - rt = EOF; for(i = 0; i < encoding_size; i++) { - c = getc(stdin); - if (feof(stdin)) - return (EOF); + c = getc(pfile); + if (c == EOF) + return (-1); buf[i] = c; } switch (encoding) { case ENCODING_7BIT: case ENCODING_8BIT: - rt = buf[0]; + *rt = buf[0]; break; case ENCODING_16BIT_BIG: - rt = (buf[0] << 8) | buf[1]; + *rt = (buf[0] << 8) | buf[1]; break; case ENCODING_16BIT_LITTLE: - rt = buf[0] | (buf[1] << 8); - break; + *rt = buf[0] | (buf[1] << 8); + break; case ENCODING_32BIT_BIG: - rt = ((long) buf[0] << 24) | ((long) buf[1] << 16) | + *rt = ((long) buf[0] << 24) | ((long) buf[1] << 16) | ((long) buf[2] << 8) | buf[3]; break; case ENCODING_32BIT_LITTLE: - rt = buf[0] | ((long) buf[1] << 8) | ((long) buf[2] << 16) | + *rt = buf[0] | ((long) buf[1] << 8) | ((long) buf[2] << 16) | ((long) buf[3] << 24); break; + default: + return (-1); } - return (rt); + + return (0); } /* - * Input stream stdin is read until the end of file is reached or until + * Input stream is read until the end of file is reached or until * the section size is reached in case of ELF files. Contiguous * characters of >= min_size(default 4) will be displayed. */ int -find_strings(const char *name, off_t offset, off_t size) +find_strings(const char *name, FILE *pfile, off_t offset, off_t size) { off_t cur_off, start_off; char *obuf; @@ -347,7 +349,7 @@ find_strings(const char *name, off_t offset, off_t siz return (1); } - (void)fseeko(stdin, offset, SEEK_SET); + (void)fseeko(pfile, offset, SEEK_SET); cur_off = offset; start_off = 0; for (;;) { @@ -356,8 +358,7 @@ find_strings(const char *name, off_t offset, off_t siz start_off = cur_off; memset(obuf, 0, min_len + 1); for(i = 0; i < min_len; i++) { - c = getcharacter(); - if (c == EOF && feof(stdin)) + if (getcharacter(pfile, &c) < 0) goto _exit1; if (PRINTABLE(c)) { obuf[i] = c; @@ -399,14 +400,15 @@ find_strings(const char *name, off_t offset, off_t siz if ((offset + size) && (cur_off >= offset + size)) break; - c = getcharacter(); + if (getcharacter(pfile, &c) < 0) + break; cur_off += encoding_size; if (encoding == ENCODING_8BIT && (uint8_t)c > 127) { putchar(c); continue; } - if (!PRINTABLE(c) || c == EOF) + if (!PRINTABLE(c)) break; putchar(c); } Modified: projects/fuse2/contrib/libarchive/libarchive/archive_blake2sp_ref.c ============================================================================== --- projects/fuse2/contrib/libarchive/libarchive/archive_blake2sp_ref.c Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/contrib/libarchive/libarchive/archive_blake2sp_ref.c Fri Mar 29 03:25:20 2019 (r345679) @@ -89,7 +89,7 @@ int blake2sp_init( blake2sp_state *S, size_t outlen ) return -1; for( i = 0; i < PARALLELISM_DEGREE; ++i ) - if( blake2sp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1; + if( blake2sp_init_leaf( S->S[i], outlen, 0, (uint32_t)i ) < 0 ) return -1; S->R->last_node = 1; S->S[PARALLELISM_DEGREE - 1]->last_node = 1; @@ -112,7 +112,7 @@ int blake2sp_init_key( blake2sp_state *S, size_t outle return -1; for( i = 0; i < PARALLELISM_DEGREE; ++i ) - if( blake2sp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1; + if( blake2sp_init_leaf( S->S[i], outlen, keylen, (uint32_t)i ) < 0 ) return -1; S->R->last_node = 1; S->S[PARALLELISM_DEGREE - 1]->last_node = 1; @@ -230,7 +230,7 @@ int blake2sp( void *out, size_t outlen, const void *in if( keylen > BLAKE2S_KEYBYTES ) return -1; for( i = 0; i < PARALLELISM_DEGREE; ++i ) - if( blake2sp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1; + if( blake2sp_init_leaf( S[i], outlen, keylen, (uint32_t)i ) < 0 ) return -1; S[PARALLELISM_DEGREE - 1]->last_node = 1; /* mark last node */ Modified: projects/fuse2/contrib/libarchive/libarchive/archive_entry.c ============================================================================== --- projects/fuse2/contrib/libarchive/libarchive/archive_entry.c Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/contrib/libarchive/libarchive/archive_entry.c Fri Mar 29 03:25:20 2019 (r345679) @@ -1632,6 +1632,51 @@ _archive_entry_acl_text_l(struct archive_entry *entry, * SUCH DAMAGE. */ +/* + * Supported file flags on FreeBSD and Mac OS: + * sappnd,sappend SF_APPEND + * arch,archived SF_ARCHIVED + * schg,schange,simmutable SF_IMMUTABLE + * sunlnk,sunlink SF_NOUNLINK (FreeBSD only) + * uappnd,uappend UF_APPEND + * compressed UF_COMPRESSED (Mac OS only) + * hidden,uhidden UF_HIDDEN + * uchg,uchange,uimmutable UF_IMMUTABLE + * nodump UF_NODUMP + * uunlnk,uunlink UF_NOUNLINK (FreeBSD only) + * offline,uoffline UF_OFFLINE (FreeBSD only) + * opaque UF_OPAQUE + * rdonly,urdonly,readonly UF_READONLY (FreeBSD only) + * reparse,ureparse UF_REPARSE (FreeBSD only) + * sparse,usparse UF_SPARSE (FreeBSD only) + * system,usystem UF_SYSTEM (FreeBSD only) + * + * See chflags(2) for more information + * + * Supported file attributes on Linux: + * a append only FS_APPEND_FL sappnd + * A no atime updates FS_NOATIME_FL atime + * c compress FS_COMPR_FL compress + * C no copy on write FS_NOCOW_FL cow + * d no dump FS_NODUMP_FL dump + * D synchronous directory updates FS_DIRSYNC_FL dirsync + * i immutable FS_IMMUTABLE_FL schg + * j data journalling FS_JOURNAL_DATA_FL journal + * P project hierarchy FS_PROJINHERIT_FL projinherit + * s secure deletion FS_SECRM_FL securedeletion + * S synchronous updates FS_SYNC_FL sync + * t no tail-merging FS_NOTAIL_FL tail + * T top of directory hierarchy FS_TOPDIR_FL topdir + * u undeletable FS_UNRM_FL undel + * + * See ioctl_iflags(2) for more information + * + * Equivalent file flags supported on FreeBSD / Mac OS and Linux: + * SF_APPEND FS_APPEND_FL sappnd + * SF_IMMUTABLE FS_IMMUTABLE_FL schg + * UF_NODUMP FS_NODUMP_FL nodump + */ + static const struct flag { const char *name; const wchar_t *wname; @@ -1640,190 +1685,149 @@ static const struct flag { } flags[] = { /* Preferred (shorter) names per flag first, all prefixed by "no" */ #ifdef SF_APPEND - { "nosappnd", L"nosappnd", SF_APPEND, 0 }, - { "nosappend", L"nosappend", SF_APPEND, 0 }, + { "nosappnd", L"nosappnd", SF_APPEND, 0}, + { "nosappend", L"nosappend", SF_APPEND, 0}, #endif #if defined(FS_APPEND_FL) /* 'a' */ - { "nosappnd", L"nosappnd", FS_APPEND_FL, 0 }, - { "nosappend", L"nosappend", FS_APPEND_FL, 0 }, + { "nosappnd", L"nosappnd", FS_APPEND_FL, 0}, + { "nosappend", L"nosappend", FS_APPEND_FL, 0}, #elif defined(EXT2_APPEND_FL) /* 'a' */ - { "nosappnd", L"nosappnd", EXT2_APPEND_FL, 0 }, - { "nosappend", L"nosappend", EXT2_APPEND_FL, 0 }, + { "nosappnd", L"nosappnd", EXT2_APPEND_FL, 0}, + { "nosappend", L"nosappend", EXT2_APPEND_FL, 0}, #endif #ifdef SF_ARCHIVED - { "noarch", L"noarch", SF_ARCHIVED, 0 }, - { "noarchived", L"noarchived", SF_ARCHIVED, 0 }, + { "noarch", L"noarch", SF_ARCHIVED, 0}, + { "noarchived", L"noarchived", SF_ARCHIVED, 0}, #endif #ifdef SF_IMMUTABLE - { "noschg", L"noschg", SF_IMMUTABLE, 0 }, - { "noschange", L"noschange", SF_IMMUTABLE, 0 }, - { "nosimmutable", L"nosimmutable", SF_IMMUTABLE, 0 }, + { "noschg", L"noschg", SF_IMMUTABLE, 0}, + { "noschange", L"noschange", SF_IMMUTABLE, 0}, + { "nosimmutable", L"nosimmutable", SF_IMMUTABLE, 0}, #endif #if defined(FS_IMMUTABLE_FL) /* 'i' */ - { "noschg", L"noschg", FS_IMMUTABLE_FL, 0 }, - { "noschange", L"noschange", FS_IMMUTABLE_FL, 0 }, - { "nosimmutable", L"nosimmutable", FS_IMMUTABLE_FL, 0 }, + { "noschg", L"noschg", FS_IMMUTABLE_FL, 0}, + { "noschange", L"noschange", FS_IMMUTABLE_FL, 0}, + { "nosimmutable", L"nosimmutable", FS_IMMUTABLE_FL, 0}, #elif defined(EXT2_IMMUTABLE_FL) /* 'i' */ - { "noschg", L"noschg", EXT2_IMMUTABLE_FL, 0 }, - { "noschange", L"noschange", EXT2_IMMUTABLE_FL, 0 }, - { "nosimmutable", L"nosimmutable", EXT2_IMMUTABLE_FL, 0 }, + { "noschg", L"noschg", EXT2_IMMUTABLE_FL, 0}, + { "noschange", L"noschange", EXT2_IMMUTABLE_FL, 0}, + { "nosimmutable", L"nosimmutable", EXT2_IMMUTABLE_FL, 0}, #endif #ifdef SF_NOUNLINK - { "nosunlnk", L"nosunlnk", SF_NOUNLINK, 0 }, - { "nosunlink", L"nosunlink", SF_NOUNLINK, 0 }, + { "nosunlnk", L"nosunlnk", SF_NOUNLINK, 0}, + { "nosunlink", L"nosunlink", SF_NOUNLINK, 0}, #endif -#ifdef SF_SNAPSHOT - { "nosnapshot", L"nosnapshot", SF_SNAPSHOT, 0 }, -#endif #ifdef UF_APPEND - { "nouappnd", L"nouappnd", UF_APPEND, 0 }, - { "nouappend", L"nouappend", UF_APPEND, 0 }, + { "nouappnd", L"nouappnd", UF_APPEND, 0}, + { "nouappend", L"nouappend", UF_APPEND, 0}, #endif #ifdef UF_IMMUTABLE - { "nouchg", L"nouchg", UF_IMMUTABLE, 0 }, - { "nouchange", L"nouchange", UF_IMMUTABLE, 0 }, - { "nouimmutable", L"nouimmutable", UF_IMMUTABLE, 0 }, + { "nouchg", L"nouchg", UF_IMMUTABLE, 0}, + { "nouchange", L"nouchange", UF_IMMUTABLE, 0}, + { "nouimmutable", L"nouimmutable", UF_IMMUTABLE, 0}, #endif #ifdef UF_NODUMP { "nodump", L"nodump", 0, UF_NODUMP}, #endif #if defined(FS_NODUMP_FL) /* 'd' */ { "nodump", L"nodump", 0, FS_NODUMP_FL}, -#elif defined(EXT2_NODUMP_FL) /* 'd' */ +#elif defined(EXT2_NODUMP_FL) { "nodump", L"nodump", 0, EXT2_NODUMP_FL}, #endif #ifdef UF_OPAQUE - { "noopaque", L"noopaque", UF_OPAQUE, 0 }, + { "noopaque", L"noopaque", UF_OPAQUE, 0}, #endif #ifdef UF_NOUNLINK - { "nouunlnk", L"nouunlnk", UF_NOUNLINK, 0 }, - { "nouunlink", L"nouunlink", UF_NOUNLINK, 0 }, + { "nouunlnk", L"nouunlnk", UF_NOUNLINK, 0}, + { "nouunlink", L"nouunlink", UF_NOUNLINK, 0}, #endif #ifdef UF_COMPRESSED - { "nocompressed",L"nocompressed", UF_COMPRESSED, 0 }, + /* Mac OS */ + { "nocompressed", L"nocompressed", UF_COMPRESSED, 0}, #endif #ifdef UF_HIDDEN - { "nohidden", L"nohidden", UF_HIDDEN, 0 }, + { "nohidden", L"nohidden", UF_HIDDEN, 0}, + { "nouhidden", L"nouhidden", UF_HIDDEN, 0}, #endif -#if defined(FS_UNRM_FL) - { "nouunlink", L"nouunlink", FS_UNRM_FL, 0}, -#elif defined(EXT2_UNRM_FL) - { "nouunlink", L"nouunlink", EXT2_UNRM_FL, 0}, +#ifdef UF_OFFLINE + { "nooffline", L"nooffline", UF_OFFLINE, 0}, + { "nouoffline", L"nouoffline", UF_OFFLINE, 0}, #endif - -#if defined(FS_BTREE_FL) - { "nobtree", L"nobtree", FS_BTREE_FL, 0 }, -#elif defined(EXT2_BTREE_FL) - { "nobtree", L"nobtree", EXT2_BTREE_FL, 0 }, +#ifdef UF_READONLY + { "nordonly", L"nordonly", UF_READONLY, 0}, + { "nourdonly", L"nourdonly", UF_READONLY, 0}, + { "noreadonly", L"noreadonly", UF_READONLY, 0}, #endif - -#if defined(FS_ECOMPR_FL) - { "nocomperr", L"nocomperr", FS_ECOMPR_FL, 0 }, -#elif defined(EXT2_ECOMPR_FL) - { "nocomperr", L"nocomperr", EXT2_ECOMPR_FL, 0 }, +#ifdef UF_SPARSE + { "nosparse", L"nosparse", UF_SPARSE, 0}, + { "nousparse", L"nousparse", UF_SPARSE, 0}, #endif - -#if defined(FS_COMPR_FL) /* 'c' */ - { "nocompress", L"nocompress", FS_COMPR_FL, 0 }, -#elif defined(EXT2_COMPR_FL) /* 'c' */ - { "nocompress", L"nocompress", EXT2_COMPR_FL, 0 }, +#ifdef UF_REPARSE + { "noreparse", L"noreparse", UF_REPARSE, 0}, + { "noureparse", L"noureparse", UF_REPARSE, 0}, #endif - -#if defined(FS_NOATIME_FL) /* 'A' */ - { "noatime", L"noatime", 0, FS_NOATIME_FL}, -#elif defined(EXT2_NOATIME_FL) /* 'A' */ - { "noatime", L"noatime", 0, EXT2_NOATIME_FL}, +#ifdef UF_SYSTEM + { "nosystem", L"nosystem", UF_SYSTEM, 0}, + { "nousystem", L"nousystem", UF_SYSTEM, 0}, #endif +#if defined(FS_UNRM_FL) /* 'u' */ + { "noundel", L"noundel", FS_UNRM_FL, 0}, +#elif defined(EXT2_UNRM_FL) + { "noundel", L"noundel", EXT2_UNRM_FL, 0}, +#endif -#if defined(FS_DIRTY_FL) - { "nocompdirty",L"nocompdirty", FS_DIRTY_FL, 0}, -#elif defined(EXT2_DIRTY_FL) - { "nocompdirty",L"nocompdirty", EXT2_DIRTY_FL, 0}, +#if defined(FS_COMPR_FL) /* 'c' */ + { "nocompress", L"nocompress", FS_COMPR_FL, 0}, +#elif defined(EXT2_COMPR_FL) + { "nocompress", L"nocompress", EXT2_COMPR_FL, 0}, #endif -#if defined(FS_COMPRBLK_FL) -#if defined(FS_NOCOMPR_FL) - { "nocomprblk", L"nocomprblk", FS_COMPRBLK_FL, FS_NOCOMPR_FL}, -#else - { "nocomprblk", L"nocomprblk", FS_COMPRBLK_FL, 0}, +#if defined(FS_NOATIME_FL) /* 'A' */ + { "noatime", L"noatime", 0, FS_NOATIME_FL}, +#elif defined(EXT2_NOATIME_FL) + { "noatime", L"noatime", 0, EXT2_NOATIME_FL}, #endif -#elif defined(EXT2_COMPRBLK_FL) -#if defined(EXT2_NOCOMPR_FL) - { "nocomprblk", L"nocomprblk", EXT2_COMPRBLK_FL, EXT2_NOCOMPR_FL}, -#else - { "nocomprblk", L"nocomprblk", EXT2_COMPRBLK_FL, 0}, -#endif -#endif -#if defined(FS_DIRSYNC_FL) - { "nodirsync", L"nodirsync", FS_DIRSYNC_FL, 0}, +#if defined(FS_DIRSYNC_FL) /* 'D' */ + { "nodirsync", L"nodirsync", FS_DIRSYNC_FL, 0}, #elif defined(EXT2_DIRSYNC_FL) - { "nodirsync", L"nodirsync", EXT2_DIRSYNC_FL, 0}, + { "nodirsync", L"nodirsync", EXT2_DIRSYNC_FL, 0}, #endif -#if defined(FS_INDEX_FL) - { "nohashidx", L"nohashidx", FS_INDEX_FL, 0}, -#elif defined(EXT2_INDEX_FL) - { "nohashidx", L"nohashidx", EXT2_INDEX_FL, 0}, -#endif -#if defined(FS_IMAGIC_FL) - { "noimagic", L"noimagic", FS_IMAGIC_FL, 0}, -#elif defined(EXT2_IMAGIC_FL) - { "noimagic", L"noimagic", EXT2_IMAGIC_FL, 0}, -#endif -#if defined(FS_JOURNAL_DATA_FL) - { "nojournal", L"nojournal", FS_JOURNAL_DATA_FL, 0}, +#if defined(FS_JOURNAL_DATA_FL) /* 'j' */ + { "nojournal-data",L"nojournal-data", FS_JOURNAL_DATA_FL, 0}, + { "nojournal", L"nojournal", FS_JOURNAL_DATA_FL, 0}, #elif defined(EXT3_JOURNAL_DATA_FL) - { "nojournal", L"nojournal", EXT3_JOURNAL_DATA_FL, 0}, + { "nojournal-data",L"nojournal-data", EXT3_JOURNAL_DATA_FL, 0}, + { "nojournal", L"nojournal", EXT3_JOURNAL_DATA_FL, 0}, #endif -#if defined(FS_SECRM_FL) - { "nosecuredeletion",L"nosecuredeletion",FS_SECRM_FL, 0}, +#if defined(FS_SECRM_FL) /* 's' */ + { "nosecdel", L"nosecdel", FS_SECRM_FL, 0}, + { "nosecuredeletion",L"nosecuredeletion",FS_SECRM_FL, 0}, #elif defined(EXT2_SECRM_FL) - { "nosecuredeletion",L"nosecuredeletion",EXT2_SECRM_FL, 0}, + { "nosecdel", L"nosecdel", EXT2_SECRM_FL, 0}, + { "nosecuredeletion",L"nosecuredeletion",EXT2_SECRM_FL, 0}, #endif -#if defined(FS_SYNC_FL) - { "nosync", L"nosync", FS_SYNC_FL, 0}, +#if defined(FS_SYNC_FL) /* 'S' */ + { "nosync", L"nosync", FS_SYNC_FL, 0}, #elif defined(EXT2_SYNC_FL) - { "nosync", L"nosync", EXT2_SYNC_FL, 0}, + { "nosync", L"nosync", EXT2_SYNC_FL, 0}, #endif -#if defined(FS_NOTAIL_FL) - { "notail", L"notail", 0, FS_NOTAIL_FL}, +#if defined(FS_NOTAIL_FL) /* 't' */ + { "notail", L"notail", 0, FS_NOTAIL_FL}, #elif defined(EXT2_NOTAIL_FL) - { "notail", L"notail", 0, EXT2_NOTAIL_FL}, + { "notail", L"notail", 0, EXT2_NOTAIL_FL}, #endif -#if defined(FS_TOPDIR_FL) - { "notopdir", L"notopdir", FS_TOPDIR_FL, 0}, +#if defined(FS_TOPDIR_FL) /* 'T' */ + { "notopdir", L"notopdir", FS_TOPDIR_FL, 0}, #elif defined(EXT2_TOPDIR_FL) - { "notopdir", L"notopdir", EXT2_TOPDIR_FL, 0}, + { "notopdir", L"notopdir", EXT2_TOPDIR_FL, 0}, #endif -#ifdef FS_ENCRYPT_FL - { "noencrypt", L"noencrypt", FS_ENCRYPT_FL, 0}, +#ifdef FS_NOCOW_FL /* 'C' */ + { "nocow", L"nocow", 0, FS_NOCOW_FL}, #endif -#ifdef FS_HUGE_FILE_FL - { "nohugefile", L"nohugefile", FS_HUGE_FILE_FL, 0}, +#ifdef FS_PROJINHERIT_FL /* 'P' */ + { "noprojinherit",L"noprojinherit", FS_PROJINHERIT_FL, 0}, #endif -#ifdef FS_EXTENT_FL - { "noextent", L"noextent", FS_EXTENT_FL, 0}, -#endif -#ifdef FS_EA_INODE_FL - { "noeainode", L"noeainode", FS_EA_INODE_FL, 0}, -#endif -#ifdef FS_EOFBLOCKS_FL - { "noeofblocks",L"noeofblocks", FS_EOFBLOCKS_FL, 0}, -#endif -#ifdef FS_NOCOW_FL - { "nocow", L"nocow", FS_NOCOW_FL, 0}, -#endif -#ifdef FS_INLINE_DATA_FL - { "noinlinedata",L"noinlinedata", FS_INLINE_DATA_FL, 0}, -#endif -#ifdef FS_PROJINHERIT_FL - { "noprojinherit",L"noprojinherit", FS_PROJINHERIT_FL, 0}, -#endif -#if defined(FS_RESERVED_FL) - { "noreserved", L"noreserved", FS_RESERVED_FL, 0}, -#elif defined(EXT2_RESERVED_FL) - { "noreserved", L"noreserved", EXT2_RESERVED_FL, 0}, -#endif - { NULL, NULL, 0, 0 } + { NULL, NULL, 0, 0} }; /* Modified: projects/fuse2/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c ============================================================================== --- projects/fuse2/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Fri Mar 29 03:25:20 2019 (r345679) @@ -163,6 +163,9 @@ archive_read_disk_entry_from_file(struct archive *_a, int initial_fd = fd; int r, r1; + archive_check_magic(_a, ARCHIVE_READ_DISK_MAGIC, ARCHIVE_STATE_ANY, + "archive_read_disk_entry_from_file"); + archive_clear_error(_a); path = archive_entry_sourcepath(entry); if (path == NULL) Modified: projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_rar5.c ============================================================================== --- projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_rar5.c Fri Mar 29 03:01:21 2019 (r345678) +++ projects/fuse2/contrib/libarchive/libarchive/archive_read_support_format_rar5.c Fri Mar 29 03:25:20 2019 (r345679) @@ -517,15 +517,16 @@ static int run_e8e9_filter(struct rar5* rar, struct fi const uint32_t file_size = 0x1000000; ssize_t i; + const int mask = (int)rar->cstate.window_mask; circular_memcpy(rar->cstate.filtered_buf, rar->cstate.window_buf, - rar->cstate.window_mask, + mask, rar->cstate.solid_offset + flt->block_start, rar->cstate.solid_offset + flt->block_start + flt->block_length); for(i = 0; i < flt->block_length - 4;) { uint8_t b = rar->cstate.window_buf[(rar->cstate.solid_offset + - flt->block_start + i++) & rar->cstate.window_mask]; + flt->block_start + i++) & mask]; /* 0xE8 = x86's call (function call) * 0xE9 = x86's jmp (unconditional jump) */ @@ -534,17 +535,17 @@ static int run_e8e9_filter(struct rar5* rar, struct fi uint32_t addr; uint32_t offset = (i + flt->block_start) % file_size; - addr = read_filter_data(rar, (rar->cstate.solid_offset + + addr = read_filter_data(rar, (uint32_t)(rar->cstate.solid_offset + flt->block_start + i) & rar->cstate.window_mask); if(addr & 0x80000000) { if(((addr + offset) & 0x80000000) == 0) { - write_filter_data(rar, i, addr + file_size); + write_filter_data(rar, (uint32_t)i, addr + file_size); } } else { if((addr - file_size) & 0x80000000) { uint32_t naddr = addr - offset; - write_filter_data(rar, i, naddr); + write_filter_data(rar, (uint32_t)i, naddr); } } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:50 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 104E2DBF25 for ; Tue, 3 Sep 2019 14:05:50 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yj3cBBz4Nt6; Tue, 3 Sep 2019 14:05:49 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id B632019C58; Tue, 3 Sep 2019 14:05:48 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 688CC19351; Thu, 28 Mar 2019 20:04:31 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 340D389508; Thu, 28 Mar 2019 20:04:31 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1FA6D1934F; Thu, 28 Mar 2019 20:04:31 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 0B9CE1934B for ; Thu, 28 Mar 2019 20:04:28 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8419B89502; Thu, 28 Mar 2019 20:04:27 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 594D424123; Thu, 28 Mar 2019 20:04:27 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2SK4RlY064363; Thu, 28 Mar 2019 20:04:27 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2SK4RxL064362; Thu, 28 Mar 2019 20:04:27 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903282004.x2SK4RxL064362@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345651 - projects/capsicum-test/tests/sys/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/tests/sys/capsicum-test X-SVN-Commit-Revision: 345651 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 340D389508 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.994,0]; NEURAL_HAM_SHORT(-0.95)[-0.946,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:50 -0000 X-Original-Date: Thu, 28 Mar 2019 20:04:27 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:50 -0000 Author: ngie Date: Thu Mar 28 20:04:26 2019 New Revision: 345651 URL: https://svnweb.freebsd.org/changeset/base/345651 Log: Fix the mode for `mini-me.setuid` It should be `4444`, not `1444`; the latter stands for a readable, but non-executable, directory. Modified: projects/capsicum-test/tests/sys/capsicum-test/Makefile Modified: projects/capsicum-test/tests/sys/capsicum-test/Makefile ============================================================================== --- projects/capsicum-test/tests/sys/capsicum-test/Makefile Thu Mar 28 19:58:29 2019 (r345650) +++ projects/capsicum-test/tests/sys/capsicum-test/Makefile Thu Mar 28 20:04:26 2019 (r345651) @@ -39,7 +39,7 @@ SRCS.$p= mini-me.c BINDIR= ${TESTSDIR} BINMODE.mini-me.noexec= ${NOBINMODE} -BINMODE.mini-me.setuid= 01444 +BINMODE.mini-me.setuid= 4444 WARNS?= 3 From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:50 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AF524DBF47 for ; Tue, 3 Sep 2019 14:05:50 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yj5PnBz4NtZ; Tue, 3 Sep 2019 14:05:49 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id C9A3819C6C; Tue, 3 Sep 2019 14:05:48 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id D7B33198DA; Thu, 28 Mar 2019 20:17:21 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 32D5C89DD5; Thu, 28 Mar 2019 20:17:21 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1B47C198D9; Thu, 28 Mar 2019 20:17:21 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 8EC0D198D7 for ; Thu, 28 Mar 2019 20:17:18 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 647F689DD1; Thu, 28 Mar 2019 20:17:18 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3F7D6242EA; Thu, 28 Mar 2019 20:17:18 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2SKHIgI069641; Thu, 28 Mar 2019 20:17:18 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2SKHFlc069624; Thu, 28 Mar 2019 20:17:15 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903282017.x2SKHFlc069624@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345654 - in projects/capsicum-test: . bin/dd contrib/elftoolchain/libdwarf contrib/elftoolchain/readelf contrib/elftoolchain/strings contrib/libarchive/libarchive contrib/libarchive/li... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/capsicum-test: . bin/dd contrib/elftoolchain/libdwarf contrib/elftoolchain/readelf contrib/elftoolchain/strings contrib/libarchive/libarchive contrib/libarchive/libarchive/test contrib/llv... X-SVN-Commit-Revision: 345654 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 32D5C89DD5 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.995,0]; NEURAL_HAM_SHORT(-0.95)[-0.952,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:50 -0000 X-Original-Date: Thu, 28 Mar 2019 20:17:15 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:50 -0000 Author: ngie Date: Thu Mar 28 20:17:14 2019 New Revision: 345654 URL: https://svnweb.freebsd.org/changeset/base/345654 Log: MFhead@r345652 Added: projects/capsicum-test/contrib/libarchive/libarchive/test/test_read_format_zip_bz2_hang.zip.uu - copied unchanged from r345652, head/contrib/libarchive/libarchive/test/test_read_format_zip_bz2_hang.zip.uu projects/capsicum-test/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8_crash_1.zipx.uu - copied unchanged from r345652, head/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8_crash_1.zipx.uu projects/capsicum-test/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8_crash_2.zipx.uu - copied unchanged from r345652, head/contrib/libarchive/libarchive/test/test_read_format_zip_ppmd8_crash_2.zipx.uu projects/capsicum-test/sys/conf/dtb.build.mk - copied unchanged from r345652, head/sys/conf/dtb.build.mk projects/capsicum-test/sys/geom/geom_flashmap.h - copied unchanged from r345652, head/sys/geom/geom_flashmap.h projects/capsicum-test/sys/geom/label/g_label_flashmap.c - copied unchanged from r345652, head/sys/geom/label/g_label_flashmap.c projects/capsicum-test/sys/powerpc/powernv/opal_hmi.c - copied unchanged from r345652, head/sys/powerpc/powernv/opal_hmi.c projects/capsicum-test/tools/build/options/WITHOUT_RETPOLINE - copied unchanged from r345652, head/tools/build/options/WITHOUT_RETPOLINE Deleted: projects/capsicum-test/sys/powerpc/aim/isa3_hashtb.c Modified: projects/capsicum-test/Makefile.inc1 projects/capsicum-test/UPDATING projects/capsicum-test/bin/dd/dd.1 projects/capsicum-test/contrib/elftoolchain/libdwarf/libdwarf_lineno.c projects/capsicum-test/contrib/elftoolchain/readelf/readelf.c projects/capsicum-test/contrib/elftoolchain/strings/strings.c projects/capsicum-test/contrib/libarchive/libarchive/archive_blake2sp_ref.c projects/capsicum-test/contrib/libarchive/libarchive/archive_entry.c projects/capsicum-test/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c projects/capsicum-test/contrib/libarchive/libarchive/archive_read_support_format_rar5.c projects/capsicum-test/contrib/libarchive/libarchive/archive_read_support_format_zip.c projects/capsicum-test/contrib/libarchive/libarchive/archive_string.c projects/capsicum-test/contrib/libarchive/libarchive/archive_write_disk_posix.c projects/capsicum-test/contrib/libarchive/libarchive/archive_write_set_format_7zip.c projects/capsicum-test/contrib/libarchive/libarchive/test/test_entry.c projects/capsicum-test/contrib/libarchive/libarchive/test/test_read_format_rar5.c projects/capsicum-test/contrib/libarchive/libarchive/test/test_read_format_xar.c projects/capsicum-test/contrib/libarchive/libarchive/test/test_read_format_zip.c projects/capsicum-test/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp projects/capsicum-test/contrib/netbsd-tests/lib/libc/regex/t_exhaust.c projects/capsicum-test/contrib/tzdata/Makefile projects/capsicum-test/contrib/tzdata/NEWS projects/capsicum-test/contrib/tzdata/README projects/capsicum-test/contrib/tzdata/africa projects/capsicum-test/contrib/tzdata/asia projects/capsicum-test/contrib/tzdata/backward projects/capsicum-test/contrib/tzdata/backzone projects/capsicum-test/contrib/tzdata/etcetera projects/capsicum-test/contrib/tzdata/europe projects/capsicum-test/contrib/tzdata/leap-seconds.list projects/capsicum-test/contrib/tzdata/leapseconds projects/capsicum-test/contrib/tzdata/northamerica projects/capsicum-test/contrib/tzdata/theory.html projects/capsicum-test/contrib/tzdata/version projects/capsicum-test/crypto/openssh/readconf.c projects/capsicum-test/crypto/openssh/scp.c projects/capsicum-test/gnu/usr.bin/binutils/as/Makefile projects/capsicum-test/gnu/usr.bin/binutils/ld/Makefile projects/capsicum-test/gnu/usr.bin/binutils/objcopy/Makefile projects/capsicum-test/gnu/usr.bin/binutils/objdump/Makefile projects/capsicum-test/lib/libarchive/tests/Makefile projects/capsicum-test/lib/libc/Makefile projects/capsicum-test/lib/libc/gen/fts-compat.c projects/capsicum-test/lib/libc/gen/fts-compat11.c projects/capsicum-test/lib/libc/gen/fts.c projects/capsicum-test/lib/libc/gen/sysctl.3 projects/capsicum-test/lib/libthr/Makefile projects/capsicum-test/lib/libutil/pidfile.c projects/capsicum-test/lib/libutil/tests/pidfile_test.c projects/capsicum-test/lib/libvgl/bitmap.c projects/capsicum-test/lib/libvgl/main.c projects/capsicum-test/lib/libvgl/mouse.c projects/capsicum-test/lib/libvgl/simple.c projects/capsicum-test/lib/libvgl/text.c projects/capsicum-test/lib/libvgl/vgl.3 projects/capsicum-test/lib/libvgl/vgl.h projects/capsicum-test/libexec/rc/rc.d/ipfw projects/capsicum-test/libexec/rc/rc.d/ippool projects/capsicum-test/libexec/rtld-elf/Makefile projects/capsicum-test/libexec/rtld-elf/rtld.c projects/capsicum-test/sbin/fsck_msdosfs/dir.c projects/capsicum-test/sbin/init/init.c projects/capsicum-test/secure/usr.bin/ssh/Makefile projects/capsicum-test/share/man/man4/geom_uzip.4 projects/capsicum-test/share/man/man4/tcp.4 projects/capsicum-test/share/man/man5/rc.conf.5 projects/capsicum-test/share/misc/committers-src.dot projects/capsicum-test/share/misc/iso3166 projects/capsicum-test/share/mk/googletest.test.inc.mk projects/capsicum-test/share/mk/src.opts.mk projects/capsicum-test/stand/common/disk.c projects/capsicum-test/stand/common/disk.h projects/capsicum-test/stand/efi/libefi/efipart.c projects/capsicum-test/stand/efi/loader/main.c projects/capsicum-test/stand/i386/libi386/biosdisk.c projects/capsicum-test/stand/i386/zfsboot/Makefile projects/capsicum-test/stand/libsa/zfs/zfs.c projects/capsicum-test/stand/lua/config.lua projects/capsicum-test/stand/lua/menu.lua projects/capsicum-test/stand/lua/password.lua projects/capsicum-test/stand/mips/beri/loader/beri_disk_cfi.c projects/capsicum-test/stand/mips/beri/loader/beri_disk_sdcard.c projects/capsicum-test/stand/uboot/common/main.c projects/capsicum-test/stand/uboot/lib/disk.c projects/capsicum-test/stand/usb/storage/umass_loader.c projects/capsicum-test/stand/userboot/userboot/main.c projects/capsicum-test/stand/userboot/userboot/userboot_disk.c projects/capsicum-test/sys/amd64/amd64/fpu.c projects/capsicum-test/sys/amd64/linux/linux_dummy.c projects/capsicum-test/sys/amd64/linux/linux_machdep.c projects/capsicum-test/sys/amd64/linux/linux_proto.h projects/capsicum-test/sys/amd64/linux/linux_syscall.h projects/capsicum-test/sys/amd64/linux/linux_syscalls.c projects/capsicum-test/sys/amd64/linux/linux_sysent.c projects/capsicum-test/sys/amd64/linux/linux_systrace_args.c projects/capsicum-test/sys/amd64/linux/syscalls.master projects/capsicum-test/sys/amd64/linux32/linux32_dummy.c projects/capsicum-test/sys/amd64/linux32/linux32_machdep.c projects/capsicum-test/sys/amd64/linux32/linux32_proto.h projects/capsicum-test/sys/amd64/linux32/linux32_syscall.h projects/capsicum-test/sys/amd64/linux32/linux32_syscalls.c projects/capsicum-test/sys/amd64/linux32/linux32_sysent.c projects/capsicum-test/sys/amd64/linux32/linux32_systrace_args.c projects/capsicum-test/sys/amd64/linux32/syscalls.master projects/capsicum-test/sys/arm64/arm64/identcpu.c projects/capsicum-test/sys/arm64/conf/GENERIC projects/capsicum-test/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c projects/capsicum-test/sys/compat/linux/linux_fork.c projects/capsicum-test/sys/compat/linux/linux_ipc.c projects/capsicum-test/sys/compat/linux/linux_ipc.h projects/capsicum-test/sys/conf/dtb.mk projects/capsicum-test/sys/conf/files projects/capsicum-test/sys/conf/files.powerpc projects/capsicum-test/sys/conf/kern.post.mk projects/capsicum-test/sys/conf/kmod.mk projects/capsicum-test/sys/conf/options projects/capsicum-test/sys/dev/cfi/cfi_core.c projects/capsicum-test/sys/dev/cfi/cfi_reg.h projects/capsicum-test/sys/dev/cfi/cfi_var.h projects/capsicum-test/sys/dev/etherswitch/e6000sw/e6000sw.c projects/capsicum-test/sys/dev/jedec_dimm/jedec_dimm.c projects/capsicum-test/sys/dev/mpr/mpr.c projects/capsicum-test/sys/dev/mpr/mpr_table.c projects/capsicum-test/sys/dev/mps/mps.c projects/capsicum-test/sys/dev/mps/mps_table.c projects/capsicum-test/sys/dev/neta/if_mvneta.c projects/capsicum-test/sys/dev/random/random_harvestq.c projects/capsicum-test/sys/dev/smartpqi/smartpqi_cam.c projects/capsicum-test/sys/dev/tpm/tpm20.c projects/capsicum-test/sys/dev/tpm/tpm20.h projects/capsicum-test/sys/dev/tpm/tpm_crb.c projects/capsicum-test/sys/dev/tpm/tpm_tis.c projects/capsicum-test/sys/dev/usb/controller/xhci_pci.c projects/capsicum-test/sys/dev/usb/wlan/if_run.c projects/capsicum-test/sys/fs/tmpfs/tmpfs.h projects/capsicum-test/sys/fs/tmpfs/tmpfs_vfsops.c projects/capsicum-test/sys/geom/geom_flashmap.c projects/capsicum-test/sys/geom/label/g_label.c projects/capsicum-test/sys/geom/label/g_label.h projects/capsicum-test/sys/i386/i386/npx.c projects/capsicum-test/sys/i386/linux/linux.h projects/capsicum-test/sys/i386/linux/linux_dummy.c projects/capsicum-test/sys/i386/linux/linux_machdep.c projects/capsicum-test/sys/i386/linux/linux_proto.h projects/capsicum-test/sys/i386/linux/linux_syscall.h projects/capsicum-test/sys/i386/linux/linux_syscalls.c projects/capsicum-test/sys/i386/linux/linux_sysent.c projects/capsicum-test/sys/i386/linux/linux_systrace_args.c projects/capsicum-test/sys/i386/linux/syscalls.master projects/capsicum-test/sys/kern/imgact_elf.c projects/capsicum-test/sys/kern/kern_descrip.c projects/capsicum-test/sys/kern/kern_intr.c projects/capsicum-test/sys/kern/kern_mib.c projects/capsicum-test/sys/mips/atheros/ar71xx_gpio.c projects/capsicum-test/sys/mips/atheros/ar71xx_gpiovar.h projects/capsicum-test/sys/mips/conf/DIR-825C1 projects/capsicum-test/sys/modules/efirt/Makefile projects/capsicum-test/sys/modules/hwpmc_mips24k/Makefile projects/capsicum-test/sys/modules/hwpmc_mips74k/Makefile projects/capsicum-test/sys/modules/iflib/Makefile projects/capsicum-test/sys/modules/nvdimm/Makefile projects/capsicum-test/sys/modules/tmpfs/Makefile projects/capsicum-test/sys/modules/tpm/Makefile projects/capsicum-test/sys/net/if_bridge.c projects/capsicum-test/sys/netinet/ip_icmp.c projects/capsicum-test/sys/netinet/sctp.h projects/capsicum-test/sys/netinet/sctp_indata.c projects/capsicum-test/sys/netinet/sctp_output.c projects/capsicum-test/sys/netinet/sctp_pcb.c projects/capsicum-test/sys/netinet/sctp_ss_functions.c projects/capsicum-test/sys/netinet/sctp_structs.h projects/capsicum-test/sys/netinet/sctp_usrreq.c projects/capsicum-test/sys/netinet/sctputil.c projects/capsicum-test/sys/netinet/sctputil.h projects/capsicum-test/sys/netinet/tcp_output.c projects/capsicum-test/sys/netinet/tcp_subr.c projects/capsicum-test/sys/netinet/tcp_syncache.c projects/capsicum-test/sys/netinet/tcp_timer.c projects/capsicum-test/sys/netinet/tcp_timer.h projects/capsicum-test/sys/netpfil/pf/pf_ioctl.c projects/capsicum-test/sys/powerpc/aim/aim_machdep.c projects/capsicum-test/sys/powerpc/aim/moea64_native.c projects/capsicum-test/sys/powerpc/include/spr.h projects/capsicum-test/sys/powerpc/include/trap.h projects/capsicum-test/sys/powerpc/powernv/opal.h projects/capsicum-test/sys/powerpc/powerpc/interrupt.c projects/capsicum-test/sys/riscv/riscv/timer.c projects/capsicum-test/sys/sys/ctype.h projects/capsicum-test/sys/sys/random.h projects/capsicum-test/sys/vm/swap_pager.c projects/capsicum-test/sys/vm/vm_map.c projects/capsicum-test/sys/x86/iommu/busdma_dmar.c projects/capsicum-test/tests/sys/netmap/Makefile projects/capsicum-test/tests/sys/netmap/ctrl-api-test.c projects/capsicum-test/tests/sys/netpfil/pf/icmp.sh projects/capsicum-test/tools/build/mk/OptionalObsoleteFiles.inc projects/capsicum-test/tools/tools/makeroot/makeroot.sh projects/capsicum-test/usr.bin/calendar/calendars/calendar.freebsd projects/capsicum-test/usr.bin/dtc/dtb.cc projects/capsicum-test/usr.bin/dtc/dtb.hh projects/capsicum-test/usr.bin/dtc/dtc.1 projects/capsicum-test/usr.bin/dtc/dtc.cc projects/capsicum-test/usr.bin/dtc/fdt.cc projects/capsicum-test/usr.bin/dtc/fdt.hh projects/capsicum-test/usr.bin/dtc/input_buffer.cc projects/capsicum-test/usr.bin/dtc/util.hh projects/capsicum-test/usr.sbin/daemon/daemon.8 Directory Properties: projects/capsicum-test/ (props changed) projects/capsicum-test/contrib/elftoolchain/ (props changed) projects/capsicum-test/contrib/libarchive/ (props changed) projects/capsicum-test/contrib/llvm/ (props changed) projects/capsicum-test/contrib/netbsd-tests/ (props changed) projects/capsicum-test/contrib/tzdata/ (props changed) projects/capsicum-test/crypto/openssh/ (props changed) projects/capsicum-test/gnu/usr.bin/binutils/ (props changed) projects/capsicum-test/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/capsicum-test/Makefile.inc1 ============================================================================== --- projects/capsicum-test/Makefile.inc1 Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/Makefile.inc1 Thu Mar 28 20:17:14 2019 (r345654) @@ -1906,11 +1906,11 @@ create-kernel-packages-flavor${flavor:C,^""$,${_defaul /name/ { printf("===> Creating %s-", $$2); next } \ /version/ {print $$2; next } ' \ ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl ; \ - ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ + ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname -o ALLOW_BASE_SHLIBS=yes \ create -M ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.ucl \ -p ${KSTAGEDIR}/${DISTDIR}/kernel.${INSTALLKERNEL}${flavor}.plist \ -r ${KSTAGEDIR}/${DISTDIR} \ - -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} + -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} . endfor .endif .if ${BUILDKERNELS:[#]} > 1 && ${NO_INSTALLEXTRAKERNELS} != "yes" @@ -1938,24 +1938,24 @@ create-kernel-packages-extra-flavor${flavor:C,^""$,${_ /name/ { printf("===> Creating %s-", $$2); next } \ /version/ {print $$2; next } ' \ ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl ; \ - ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh -o ALLOW_BASE_SHLIBS=yes \ + ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname -o ALLOW_BASE_SHLIBS=yes \ create -M ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.ucl \ -p ${KSTAGEDIR}/kernel.${_kernel}/kernel.${_kernel}${flavor}.plist \ -r ${KSTAGEDIR}/kernel.${_kernel} \ - -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} + -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} . endfor . endif . endfor .endif sign-packages: _pkgbootstrap .PHONY - @[ -L "${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest" ] && \ - unlink ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/latest ; \ - ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh repo \ - -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ - ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI)/${PKG_VERSION} \ + @[ -L "${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/latest" ] && \ + unlink ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/latest ; \ + ${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname repo \ + -o ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} \ + ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI)/${PKG_VERSION} \ ${PKGSIGNKEY} ; \ - cd ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/bin/sh config ABI); \ + cd ${REPODIR}/$$(${PKG_CMD} -o ABI_FILE=${WSTAGEDIR}/usr/bin/uname config ABI); \ ln -s ${PKG_VERSION} latest # Modified: projects/capsicum-test/UPDATING ============================================================================== --- projects/capsicum-test/UPDATING Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/UPDATING Thu Mar 28 20:17:14 2019 (r345654) @@ -43,6 +43,11 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: prerequisites and upgrading, if you are not already using clang 3.5.0 or higher. +20190226: + geom_uzip(4) depends on the new module xz. If geom_uzip is statically + compiled into your custom kernel, add 'device xz' statement to the + kernel config. + 20190219: drm and drm2 have been removed from the tree. Please see https://wiki.freebsd.org/Graphics for the latest information on Modified: projects/capsicum-test/bin/dd/dd.1 ============================================================================== --- projects/capsicum-test/bin/dd/dd.1 Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/bin/dd/dd.1 Thu Mar 28 20:17:14 2019 (r345654) @@ -32,7 +32,7 @@ .\" @(#)dd.1 8.2 (Berkeley) 1/13/94 .\" $FreeBSD$ .\" -.Dd August 8, 2018 +.Dd March 26, 2019 .Dt DD 1 .Os .Sh NAME @@ -427,7 +427,8 @@ if necessary, to a 1MiB boundary: .Xr mt 1 , .Xr recoverdisk 1 , .Xr tr 1 , -.Xr geom 4 +.Xr geom 4 , +.Xr trim 8 .Sh STANDARDS The .Nm Modified: projects/capsicum-test/contrib/elftoolchain/libdwarf/libdwarf_lineno.c ============================================================================== --- projects/capsicum-test/contrib/elftoolchain/libdwarf/libdwarf_lineno.c Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/contrib/elftoolchain/libdwarf/libdwarf_lineno.c Thu Mar 28 20:17:14 2019 (r345654) @@ -33,9 +33,10 @@ _dwarf_lineno_add_file(Dwarf_LineInfo li, uint8_t **p, Dwarf_Error *error, Dwarf_Debug dbg) { Dwarf_LineFile lf; - const char *dirname; + FILE *filepath; + const char *incdir; uint8_t *src; - int slen; + size_t slen; src = *p; @@ -54,20 +55,33 @@ _dwarf_lineno_add_file(Dwarf_LineInfo li, uint8_t **p, return (DW_DLE_DIR_INDEX_BAD); } - /* Make full pathname if need. */ + /* Make a full pathname if needed. */ if (*lf->lf_fname != '/') { - dirname = compdir; + filepath = open_memstream(&lf->lf_fullpath, &slen); + if (filepath == NULL) { + free(lf); + DWARF_SET_ERROR(dbg, error, DW_DLE_MEMORY); + return (DW_DLE_MEMORY); + } + if (lf->lf_dirndx > 0) - dirname = li->li_incdirs[lf->lf_dirndx - 1]; - if (dirname != NULL) { - slen = strlen(dirname) + strlen(lf->lf_fname) + 2; - if ((lf->lf_fullpath = malloc(slen)) == NULL) { - free(lf); - DWARF_SET_ERROR(dbg, error, DW_DLE_MEMORY); - return (DW_DLE_MEMORY); - } - snprintf(lf->lf_fullpath, slen, "%s/%s", dirname, - lf->lf_fname); + incdir = li->li_incdirs[lf->lf_dirndx - 1]; + else + incdir = NULL; + + /* + * Prepend the compilation directory if the directory table + * entry is relative. + */ + if (incdir == NULL || *incdir != '/') + fprintf(filepath, "%s/", compdir); + if (incdir != NULL) + fprintf(filepath, "%s/", incdir); + fprintf(filepath, "%s", lf->lf_fname); + if (fclose(filepath) != 0) { + free(lf); + DWARF_SET_ERROR(dbg, error, DW_DLE_MEMORY); + return (DW_DLE_MEMORY); } } Modified: projects/capsicum-test/contrib/elftoolchain/readelf/readelf.c ============================================================================== --- projects/capsicum-test/contrib/elftoolchain/readelf/readelf.c Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/contrib/elftoolchain/readelf/readelf.c Thu Mar 28 20:17:14 2019 (r345654) @@ -2741,6 +2741,7 @@ dump_flags(struct flag_desc *desc, uint64_t val) } if (val != 0) printf(" unknown (0x%jx)", (uintmax_t)val); + printf("\n"); } static struct flag_desc dt_flags[] = { @@ -3524,7 +3525,6 @@ dump_notes_data(const char *name, uint32_t type, const goto unknown; printf(" Features:"); dump_flags(note_feature_ctl_flags, ubuf[0]); - printf("\n"); return; } } Modified: projects/capsicum-test/contrib/elftoolchain/strings/strings.c ============================================================================== --- projects/capsicum-test/contrib/elftoolchain/strings/strings.c Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/contrib/elftoolchain/strings/strings.c Thu Mar 28 20:17:14 2019 (r345654) @@ -84,7 +84,7 @@ static struct option strings_longopts[] = { { NULL, 0, NULL, 0 } }; -long getcharacter(FILE *); +int getcharacter(FILE *, long *); int handle_file(const char *); int handle_elf(const char *, FILE *); int handle_binary(const char *, FILE *, size_t); @@ -291,42 +291,43 @@ handle_elf(const char *name, FILE *pfile) * Retrieves a character from input stream based on the encoding * type requested. */ -long -getcharacter(FILE *pfile) +int +getcharacter(FILE *pfile, long *rt) { - long rt; int i, c; char buf[4]; for(i = 0; i < encoding_size; i++) { c = getc(pfile); if (c == EOF) - return (EOF); + return (-1); buf[i] = c; } - rt = EOF; switch (encoding) { case ENCODING_7BIT: case ENCODING_8BIT: - rt = buf[0]; + *rt = buf[0]; break; case ENCODING_16BIT_BIG: - rt = (buf[0] << 8) | buf[1]; + *rt = (buf[0] << 8) | buf[1]; break; case ENCODING_16BIT_LITTLE: - rt = buf[0] | (buf[1] << 8); - break; + *rt = buf[0] | (buf[1] << 8); + break; case ENCODING_32BIT_BIG: - rt = ((long) buf[0] << 24) | ((long) buf[1] << 16) | + *rt = ((long) buf[0] << 24) | ((long) buf[1] << 16) | ((long) buf[2] << 8) | buf[3]; break; case ENCODING_32BIT_LITTLE: - rt = buf[0] | ((long) buf[1] << 8) | ((long) buf[2] << 16) | + *rt = buf[0] | ((long) buf[1] << 8) | ((long) buf[2] << 16) | ((long) buf[3] << 24); break; + default: + return (-1); } - return (rt); + + return (0); } /* @@ -357,8 +358,7 @@ find_strings(const char *name, FILE *pfile, off_t offs start_off = cur_off; memset(obuf, 0, min_len + 1); for(i = 0; i < min_len; i++) { - c = getcharacter(pfile); - if (c == EOF) + if (getcharacter(pfile, &c) < 0) goto _exit1; if (PRINTABLE(c)) { obuf[i] = c; @@ -400,15 +400,16 @@ find_strings(const char *name, FILE *pfile, off_t offs if ((offset + size) && (cur_off >= offset + size)) break; - c = getcharacter(pfile); - cur_off += encoding_size; - if (!PRINTABLE(c) || c == EOF) + if (getcharacter(pfile, &c) < 0) break; + cur_off += encoding_size; if (encoding == ENCODING_8BIT && (uint8_t)c > 127) { putchar(c); continue; } + if (!PRINTABLE(c)) + break; putchar(c); } putchar('\n'); Modified: projects/capsicum-test/contrib/libarchive/libarchive/archive_blake2sp_ref.c ============================================================================== --- projects/capsicum-test/contrib/libarchive/libarchive/archive_blake2sp_ref.c Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/contrib/libarchive/libarchive/archive_blake2sp_ref.c Thu Mar 28 20:17:14 2019 (r345654) @@ -89,7 +89,7 @@ int blake2sp_init( blake2sp_state *S, size_t outlen ) return -1; for( i = 0; i < PARALLELISM_DEGREE; ++i ) - if( blake2sp_init_leaf( S->S[i], outlen, 0, i ) < 0 ) return -1; + if( blake2sp_init_leaf( S->S[i], outlen, 0, (uint32_t)i ) < 0 ) return -1; S->R->last_node = 1; S->S[PARALLELISM_DEGREE - 1]->last_node = 1; @@ -112,7 +112,7 @@ int blake2sp_init_key( blake2sp_state *S, size_t outle return -1; for( i = 0; i < PARALLELISM_DEGREE; ++i ) - if( blake2sp_init_leaf( S->S[i], outlen, keylen, i ) < 0 ) return -1; + if( blake2sp_init_leaf( S->S[i], outlen, keylen, (uint32_t)i ) < 0 ) return -1; S->R->last_node = 1; S->S[PARALLELISM_DEGREE - 1]->last_node = 1; @@ -230,7 +230,7 @@ int blake2sp( void *out, size_t outlen, const void *in if( keylen > BLAKE2S_KEYBYTES ) return -1; for( i = 0; i < PARALLELISM_DEGREE; ++i ) - if( blake2sp_init_leaf( S[i], outlen, keylen, i ) < 0 ) return -1; + if( blake2sp_init_leaf( S[i], outlen, keylen, (uint32_t)i ) < 0 ) return -1; S[PARALLELISM_DEGREE - 1]->last_node = 1; /* mark last node */ Modified: projects/capsicum-test/contrib/libarchive/libarchive/archive_entry.c ============================================================================== --- projects/capsicum-test/contrib/libarchive/libarchive/archive_entry.c Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/contrib/libarchive/libarchive/archive_entry.c Thu Mar 28 20:17:14 2019 (r345654) @@ -1632,6 +1632,51 @@ _archive_entry_acl_text_l(struct archive_entry *entry, * SUCH DAMAGE. */ +/* + * Supported file flags on FreeBSD and Mac OS: + * sappnd,sappend SF_APPEND + * arch,archived SF_ARCHIVED + * schg,schange,simmutable SF_IMMUTABLE + * sunlnk,sunlink SF_NOUNLINK (FreeBSD only) + * uappnd,uappend UF_APPEND + * compressed UF_COMPRESSED (Mac OS only) + * hidden,uhidden UF_HIDDEN + * uchg,uchange,uimmutable UF_IMMUTABLE + * nodump UF_NODUMP + * uunlnk,uunlink UF_NOUNLINK (FreeBSD only) + * offline,uoffline UF_OFFLINE (FreeBSD only) + * opaque UF_OPAQUE + * rdonly,urdonly,readonly UF_READONLY (FreeBSD only) + * reparse,ureparse UF_REPARSE (FreeBSD only) + * sparse,usparse UF_SPARSE (FreeBSD only) + * system,usystem UF_SYSTEM (FreeBSD only) + * + * See chflags(2) for more information + * + * Supported file attributes on Linux: + * a append only FS_APPEND_FL sappnd + * A no atime updates FS_NOATIME_FL atime + * c compress FS_COMPR_FL compress + * C no copy on write FS_NOCOW_FL cow + * d no dump FS_NODUMP_FL dump + * D synchronous directory updates FS_DIRSYNC_FL dirsync + * i immutable FS_IMMUTABLE_FL schg + * j data journalling FS_JOURNAL_DATA_FL journal + * P project hierarchy FS_PROJINHERIT_FL projinherit + * s secure deletion FS_SECRM_FL securedeletion + * S synchronous updates FS_SYNC_FL sync + * t no tail-merging FS_NOTAIL_FL tail + * T top of directory hierarchy FS_TOPDIR_FL topdir + * u undeletable FS_UNRM_FL undel + * + * See ioctl_iflags(2) for more information + * + * Equivalent file flags supported on FreeBSD / Mac OS and Linux: + * SF_APPEND FS_APPEND_FL sappnd + * SF_IMMUTABLE FS_IMMUTABLE_FL schg + * UF_NODUMP FS_NODUMP_FL nodump + */ + static const struct flag { const char *name; const wchar_t *wname; @@ -1640,190 +1685,149 @@ static const struct flag { } flags[] = { /* Preferred (shorter) names per flag first, all prefixed by "no" */ #ifdef SF_APPEND - { "nosappnd", L"nosappnd", SF_APPEND, 0 }, - { "nosappend", L"nosappend", SF_APPEND, 0 }, + { "nosappnd", L"nosappnd", SF_APPEND, 0}, + { "nosappend", L"nosappend", SF_APPEND, 0}, #endif #if defined(FS_APPEND_FL) /* 'a' */ - { "nosappnd", L"nosappnd", FS_APPEND_FL, 0 }, - { "nosappend", L"nosappend", FS_APPEND_FL, 0 }, + { "nosappnd", L"nosappnd", FS_APPEND_FL, 0}, + { "nosappend", L"nosappend", FS_APPEND_FL, 0}, #elif defined(EXT2_APPEND_FL) /* 'a' */ - { "nosappnd", L"nosappnd", EXT2_APPEND_FL, 0 }, - { "nosappend", L"nosappend", EXT2_APPEND_FL, 0 }, + { "nosappnd", L"nosappnd", EXT2_APPEND_FL, 0}, + { "nosappend", L"nosappend", EXT2_APPEND_FL, 0}, #endif #ifdef SF_ARCHIVED - { "noarch", L"noarch", SF_ARCHIVED, 0 }, - { "noarchived", L"noarchived", SF_ARCHIVED, 0 }, + { "noarch", L"noarch", SF_ARCHIVED, 0}, + { "noarchived", L"noarchived", SF_ARCHIVED, 0}, #endif #ifdef SF_IMMUTABLE - { "noschg", L"noschg", SF_IMMUTABLE, 0 }, - { "noschange", L"noschange", SF_IMMUTABLE, 0 }, - { "nosimmutable", L"nosimmutable", SF_IMMUTABLE, 0 }, + { "noschg", L"noschg", SF_IMMUTABLE, 0}, + { "noschange", L"noschange", SF_IMMUTABLE, 0}, + { "nosimmutable", L"nosimmutable", SF_IMMUTABLE, 0}, #endif #if defined(FS_IMMUTABLE_FL) /* 'i' */ - { "noschg", L"noschg", FS_IMMUTABLE_FL, 0 }, - { "noschange", L"noschange", FS_IMMUTABLE_FL, 0 }, - { "nosimmutable", L"nosimmutable", FS_IMMUTABLE_FL, 0 }, + { "noschg", L"noschg", FS_IMMUTABLE_FL, 0}, + { "noschange", L"noschange", FS_IMMUTABLE_FL, 0}, + { "nosimmutable", L"nosimmutable", FS_IMMUTABLE_FL, 0}, #elif defined(EXT2_IMMUTABLE_FL) /* 'i' */ - { "noschg", L"noschg", EXT2_IMMUTABLE_FL, 0 }, - { "noschange", L"noschange", EXT2_IMMUTABLE_FL, 0 }, - { "nosimmutable", L"nosimmutable", EXT2_IMMUTABLE_FL, 0 }, + { "noschg", L"noschg", EXT2_IMMUTABLE_FL, 0}, + { "noschange", L"noschange", EXT2_IMMUTABLE_FL, 0}, + { "nosimmutable", L"nosimmutable", EXT2_IMMUTABLE_FL, 0}, #endif #ifdef SF_NOUNLINK - { "nosunlnk", L"nosunlnk", SF_NOUNLINK, 0 }, - { "nosunlink", L"nosunlink", SF_NOUNLINK, 0 }, + { "nosunlnk", L"nosunlnk", SF_NOUNLINK, 0}, + { "nosunlink", L"nosunlink", SF_NOUNLINK, 0}, #endif -#ifdef SF_SNAPSHOT - { "nosnapshot", L"nosnapshot", SF_SNAPSHOT, 0 }, -#endif #ifdef UF_APPEND - { "nouappnd", L"nouappnd", UF_APPEND, 0 }, - { "nouappend", L"nouappend", UF_APPEND, 0 }, + { "nouappnd", L"nouappnd", UF_APPEND, 0}, + { "nouappend", L"nouappend", UF_APPEND, 0}, #endif #ifdef UF_IMMUTABLE - { "nouchg", L"nouchg", UF_IMMUTABLE, 0 }, - { "nouchange", L"nouchange", UF_IMMUTABLE, 0 }, - { "nouimmutable", L"nouimmutable", UF_IMMUTABLE, 0 }, + { "nouchg", L"nouchg", UF_IMMUTABLE, 0}, + { "nouchange", L"nouchange", UF_IMMUTABLE, 0}, + { "nouimmutable", L"nouimmutable", UF_IMMUTABLE, 0}, #endif #ifdef UF_NODUMP { "nodump", L"nodump", 0, UF_NODUMP}, #endif #if defined(FS_NODUMP_FL) /* 'd' */ { "nodump", L"nodump", 0, FS_NODUMP_FL}, -#elif defined(EXT2_NODUMP_FL) /* 'd' */ +#elif defined(EXT2_NODUMP_FL) { "nodump", L"nodump", 0, EXT2_NODUMP_FL}, #endif #ifdef UF_OPAQUE - { "noopaque", L"noopaque", UF_OPAQUE, 0 }, + { "noopaque", L"noopaque", UF_OPAQUE, 0}, #endif #ifdef UF_NOUNLINK - { "nouunlnk", L"nouunlnk", UF_NOUNLINK, 0 }, - { "nouunlink", L"nouunlink", UF_NOUNLINK, 0 }, + { "nouunlnk", L"nouunlnk", UF_NOUNLINK, 0}, + { "nouunlink", L"nouunlink", UF_NOUNLINK, 0}, #endif #ifdef UF_COMPRESSED - { "nocompressed",L"nocompressed", UF_COMPRESSED, 0 }, + /* Mac OS */ + { "nocompressed", L"nocompressed", UF_COMPRESSED, 0}, #endif #ifdef UF_HIDDEN - { "nohidden", L"nohidden", UF_HIDDEN, 0 }, + { "nohidden", L"nohidden", UF_HIDDEN, 0}, + { "nouhidden", L"nouhidden", UF_HIDDEN, 0}, #endif -#if defined(FS_UNRM_FL) - { "nouunlink", L"nouunlink", FS_UNRM_FL, 0}, -#elif defined(EXT2_UNRM_FL) - { "nouunlink", L"nouunlink", EXT2_UNRM_FL, 0}, +#ifdef UF_OFFLINE + { "nooffline", L"nooffline", UF_OFFLINE, 0}, + { "nouoffline", L"nouoffline", UF_OFFLINE, 0}, #endif - -#if defined(FS_BTREE_FL) - { "nobtree", L"nobtree", FS_BTREE_FL, 0 }, -#elif defined(EXT2_BTREE_FL) - { "nobtree", L"nobtree", EXT2_BTREE_FL, 0 }, +#ifdef UF_READONLY + { "nordonly", L"nordonly", UF_READONLY, 0}, + { "nourdonly", L"nourdonly", UF_READONLY, 0}, + { "noreadonly", L"noreadonly", UF_READONLY, 0}, #endif - -#if defined(FS_ECOMPR_FL) - { "nocomperr", L"nocomperr", FS_ECOMPR_FL, 0 }, -#elif defined(EXT2_ECOMPR_FL) - { "nocomperr", L"nocomperr", EXT2_ECOMPR_FL, 0 }, +#ifdef UF_SPARSE + { "nosparse", L"nosparse", UF_SPARSE, 0}, + { "nousparse", L"nousparse", UF_SPARSE, 0}, #endif - -#if defined(FS_COMPR_FL) /* 'c' */ - { "nocompress", L"nocompress", FS_COMPR_FL, 0 }, -#elif defined(EXT2_COMPR_FL) /* 'c' */ - { "nocompress", L"nocompress", EXT2_COMPR_FL, 0 }, +#ifdef UF_REPARSE + { "noreparse", L"noreparse", UF_REPARSE, 0}, + { "noureparse", L"noureparse", UF_REPARSE, 0}, #endif - -#if defined(FS_NOATIME_FL) /* 'A' */ - { "noatime", L"noatime", 0, FS_NOATIME_FL}, -#elif defined(EXT2_NOATIME_FL) /* 'A' */ - { "noatime", L"noatime", 0, EXT2_NOATIME_FL}, +#ifdef UF_SYSTEM + { "nosystem", L"nosystem", UF_SYSTEM, 0}, + { "nousystem", L"nousystem", UF_SYSTEM, 0}, #endif +#if defined(FS_UNRM_FL) /* 'u' */ + { "noundel", L"noundel", FS_UNRM_FL, 0}, +#elif defined(EXT2_UNRM_FL) + { "noundel", L"noundel", EXT2_UNRM_FL, 0}, +#endif -#if defined(FS_DIRTY_FL) - { "nocompdirty",L"nocompdirty", FS_DIRTY_FL, 0}, -#elif defined(EXT2_DIRTY_FL) - { "nocompdirty",L"nocompdirty", EXT2_DIRTY_FL, 0}, +#if defined(FS_COMPR_FL) /* 'c' */ + { "nocompress", L"nocompress", FS_COMPR_FL, 0}, +#elif defined(EXT2_COMPR_FL) + { "nocompress", L"nocompress", EXT2_COMPR_FL, 0}, #endif -#if defined(FS_COMPRBLK_FL) -#if defined(FS_NOCOMPR_FL) - { "nocomprblk", L"nocomprblk", FS_COMPRBLK_FL, FS_NOCOMPR_FL}, -#else - { "nocomprblk", L"nocomprblk", FS_COMPRBLK_FL, 0}, +#if defined(FS_NOATIME_FL) /* 'A' */ + { "noatime", L"noatime", 0, FS_NOATIME_FL}, +#elif defined(EXT2_NOATIME_FL) + { "noatime", L"noatime", 0, EXT2_NOATIME_FL}, #endif -#elif defined(EXT2_COMPRBLK_FL) -#if defined(EXT2_NOCOMPR_FL) - { "nocomprblk", L"nocomprblk", EXT2_COMPRBLK_FL, EXT2_NOCOMPR_FL}, -#else - { "nocomprblk", L"nocomprblk", EXT2_COMPRBLK_FL, 0}, -#endif -#endif -#if defined(FS_DIRSYNC_FL) - { "nodirsync", L"nodirsync", FS_DIRSYNC_FL, 0}, +#if defined(FS_DIRSYNC_FL) /* 'D' */ + { "nodirsync", L"nodirsync", FS_DIRSYNC_FL, 0}, #elif defined(EXT2_DIRSYNC_FL) - { "nodirsync", L"nodirsync", EXT2_DIRSYNC_FL, 0}, + { "nodirsync", L"nodirsync", EXT2_DIRSYNC_FL, 0}, #endif -#if defined(FS_INDEX_FL) - { "nohashidx", L"nohashidx", FS_INDEX_FL, 0}, -#elif defined(EXT2_INDEX_FL) - { "nohashidx", L"nohashidx", EXT2_INDEX_FL, 0}, -#endif -#if defined(FS_IMAGIC_FL) - { "noimagic", L"noimagic", FS_IMAGIC_FL, 0}, -#elif defined(EXT2_IMAGIC_FL) - { "noimagic", L"noimagic", EXT2_IMAGIC_FL, 0}, -#endif -#if defined(FS_JOURNAL_DATA_FL) - { "nojournal", L"nojournal", FS_JOURNAL_DATA_FL, 0}, +#if defined(FS_JOURNAL_DATA_FL) /* 'j' */ + { "nojournal-data",L"nojournal-data", FS_JOURNAL_DATA_FL, 0}, + { "nojournal", L"nojournal", FS_JOURNAL_DATA_FL, 0}, #elif defined(EXT3_JOURNAL_DATA_FL) - { "nojournal", L"nojournal", EXT3_JOURNAL_DATA_FL, 0}, + { "nojournal-data",L"nojournal-data", EXT3_JOURNAL_DATA_FL, 0}, + { "nojournal", L"nojournal", EXT3_JOURNAL_DATA_FL, 0}, #endif -#if defined(FS_SECRM_FL) - { "nosecuredeletion",L"nosecuredeletion",FS_SECRM_FL, 0}, +#if defined(FS_SECRM_FL) /* 's' */ + { "nosecdel", L"nosecdel", FS_SECRM_FL, 0}, + { "nosecuredeletion",L"nosecuredeletion",FS_SECRM_FL, 0}, #elif defined(EXT2_SECRM_FL) - { "nosecuredeletion",L"nosecuredeletion",EXT2_SECRM_FL, 0}, + { "nosecdel", L"nosecdel", EXT2_SECRM_FL, 0}, + { "nosecuredeletion",L"nosecuredeletion",EXT2_SECRM_FL, 0}, #endif -#if defined(FS_SYNC_FL) - { "nosync", L"nosync", FS_SYNC_FL, 0}, +#if defined(FS_SYNC_FL) /* 'S' */ + { "nosync", L"nosync", FS_SYNC_FL, 0}, #elif defined(EXT2_SYNC_FL) - { "nosync", L"nosync", EXT2_SYNC_FL, 0}, + { "nosync", L"nosync", EXT2_SYNC_FL, 0}, #endif -#if defined(FS_NOTAIL_FL) - { "notail", L"notail", 0, FS_NOTAIL_FL}, +#if defined(FS_NOTAIL_FL) /* 't' */ + { "notail", L"notail", 0, FS_NOTAIL_FL}, #elif defined(EXT2_NOTAIL_FL) - { "notail", L"notail", 0, EXT2_NOTAIL_FL}, + { "notail", L"notail", 0, EXT2_NOTAIL_FL}, #endif -#if defined(FS_TOPDIR_FL) - { "notopdir", L"notopdir", FS_TOPDIR_FL, 0}, +#if defined(FS_TOPDIR_FL) /* 'T' */ + { "notopdir", L"notopdir", FS_TOPDIR_FL, 0}, #elif defined(EXT2_TOPDIR_FL) - { "notopdir", L"notopdir", EXT2_TOPDIR_FL, 0}, + { "notopdir", L"notopdir", EXT2_TOPDIR_FL, 0}, #endif -#ifdef FS_ENCRYPT_FL - { "noencrypt", L"noencrypt", FS_ENCRYPT_FL, 0}, +#ifdef FS_NOCOW_FL /* 'C' */ + { "nocow", L"nocow", 0, FS_NOCOW_FL}, #endif -#ifdef FS_HUGE_FILE_FL - { "nohugefile", L"nohugefile", FS_HUGE_FILE_FL, 0}, +#ifdef FS_PROJINHERIT_FL /* 'P' */ + { "noprojinherit",L"noprojinherit", FS_PROJINHERIT_FL, 0}, #endif -#ifdef FS_EXTENT_FL - { "noextent", L"noextent", FS_EXTENT_FL, 0}, -#endif -#ifdef FS_EA_INODE_FL - { "noeainode", L"noeainode", FS_EA_INODE_FL, 0}, -#endif -#ifdef FS_EOFBLOCKS_FL - { "noeofblocks",L"noeofblocks", FS_EOFBLOCKS_FL, 0}, -#endif -#ifdef FS_NOCOW_FL - { "nocow", L"nocow", FS_NOCOW_FL, 0}, -#endif -#ifdef FS_INLINE_DATA_FL - { "noinlinedata",L"noinlinedata", FS_INLINE_DATA_FL, 0}, -#endif -#ifdef FS_PROJINHERIT_FL - { "noprojinherit",L"noprojinherit", FS_PROJINHERIT_FL, 0}, -#endif -#if defined(FS_RESERVED_FL) - { "noreserved", L"noreserved", FS_RESERVED_FL, 0}, -#elif defined(EXT2_RESERVED_FL) - { "noreserved", L"noreserved", EXT2_RESERVED_FL, 0}, -#endif - { NULL, NULL, 0, 0 } + { NULL, NULL, 0, 0} }; /* Modified: projects/capsicum-test/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c ============================================================================== --- projects/capsicum-test/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/contrib/libarchive/libarchive/archive_read_disk_entry_from_file.c Thu Mar 28 20:17:14 2019 (r345654) @@ -163,6 +163,9 @@ archive_read_disk_entry_from_file(struct archive *_a, int initial_fd = fd; int r, r1; + archive_check_magic(_a, ARCHIVE_READ_DISK_MAGIC, ARCHIVE_STATE_ANY, + "archive_read_disk_entry_from_file"); + archive_clear_error(_a); path = archive_entry_sourcepath(entry); if (path == NULL) Modified: projects/capsicum-test/contrib/libarchive/libarchive/archive_read_support_format_rar5.c ============================================================================== --- projects/capsicum-test/contrib/libarchive/libarchive/archive_read_support_format_rar5.c Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/contrib/libarchive/libarchive/archive_read_support_format_rar5.c Thu Mar 28 20:17:14 2019 (r345654) @@ -517,15 +517,16 @@ static int run_e8e9_filter(struct rar5* rar, struct fi const uint32_t file_size = 0x1000000; ssize_t i; + const int mask = (int)rar->cstate.window_mask; circular_memcpy(rar->cstate.filtered_buf, rar->cstate.window_buf, - rar->cstate.window_mask, + mask, rar->cstate.solid_offset + flt->block_start, rar->cstate.solid_offset + flt->block_start + flt->block_length); for(i = 0; i < flt->block_length - 4;) { uint8_t b = rar->cstate.window_buf[(rar->cstate.solid_offset + - flt->block_start + i++) & rar->cstate.window_mask]; + flt->block_start + i++) & mask]; /* 0xE8 = x86's call (function call) * 0xE9 = x86's jmp (unconditional jump) */ @@ -534,17 +535,17 @@ static int run_e8e9_filter(struct rar5* rar, struct fi uint32_t addr; uint32_t offset = (i + flt->block_start) % file_size; - addr = read_filter_data(rar, (rar->cstate.solid_offset + + addr = read_filter_data(rar, (uint32_t)(rar->cstate.solid_offset + flt->block_start + i) & rar->cstate.window_mask); if(addr & 0x80000000) { if(((addr + offset) & 0x80000000) == 0) { - write_filter_data(rar, i, addr + file_size); + write_filter_data(rar, (uint32_t)i, addr + file_size); } } else { if((addr - file_size) & 0x80000000) { uint32_t naddr = addr - offset; - write_filter_data(rar, i, naddr); + write_filter_data(rar, (uint32_t)i, naddr); } } @@ -558,11 +559,11 @@ static int run_e8e9_filter(struct rar5* rar, struct fi static int run_arm_filter(struct rar5* rar, struct filter_info* flt) { ssize_t i = 0; uint32_t offset; - const int mask = rar->cstate.window_mask; + const int mask = (int)rar->cstate.window_mask; circular_memcpy(rar->cstate.filtered_buf, rar->cstate.window_buf, - rar->cstate.window_mask, + mask, rar->cstate.solid_offset + flt->block_start, rar->cstate.solid_offset + flt->block_start + flt->block_length); @@ -577,7 +578,7 @@ static int run_arm_filter(struct rar5* rar, struct fil offset -= (uint32_t) ((i + flt->block_start) / 4); offset = (offset & 0x00ffffff) | 0xeb000000; - write_filter_data(rar, i, offset); + write_filter_data(rar, (uint32_t)i, offset); } } @@ -643,7 +644,7 @@ static int run_filter(struct archive_read* a, struct f static void push_data(struct archive_read* a, struct rar5* rar, const uint8_t* buf, int64_t idx_begin, int64_t idx_end) { - const int wmask = rar->cstate.window_mask; + const int wmask = (int)rar->cstate.window_mask; const ssize_t solid_write_ptr = (rar->cstate.solid_offset + rar->cstate.last_write_ptr) & wmask; @@ -1716,8 +1717,8 @@ static int process_base_block(struct archive_read* a, rar->generic.split_after = (header_flags & HFL_SPLIT_AFTER) > 0; rar->generic.split_before = (header_flags & HFL_SPLIT_BEFORE) > 0; - rar->generic.size = hdr_size; - rar->generic.last_header_id = header_id; + rar->generic.size = (int)hdr_size; + rar->generic.last_header_id = (int)header_id; rar->main.endarc = 0; /* Those are possible header ids in RARv5. */ @@ -1933,7 +1934,7 @@ static int create_decode_tables(uint8_t* bit_length, } } - quick_data_size = 1 << table->quick_bits; + quick_data_size = (int64_t)1 << table->quick_bits; cur_len = 1; for(code = 0; code < quick_data_size; code++) { int bit_field = code << (16 - table->quick_bits); @@ -2364,7 +2365,7 @@ static int decode_code_length(struct rar5* rar, const static int copy_string(struct archive_read* a, int len, int dist) { struct rar5* rar = get_context(a); - const int cmask = rar->cstate.window_mask; + const int cmask = (int)rar->cstate.window_mask; const int64_t write_ptr = rar->cstate.write_ptr + rar->cstate.solid_offset; int i; @@ -2390,7 +2391,7 @@ static int do_uncompress_block(struct archive_read* a, uint16_t num; int ret; - const int cmask = rar->cstate.window_mask; + const int cmask = (int)rar->cstate.window_mask; const struct compressed_block_header* hdr = &rar->last_block_hdr; const uint8_t bit_size = 1 + bf_bit_size(hdr); Modified: projects/capsicum-test/contrib/libarchive/libarchive/archive_read_support_format_zip.c ============================================================================== --- projects/capsicum-test/contrib/libarchive/libarchive/archive_read_support_format_zip.c Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/contrib/libarchive/libarchive/archive_read_support_format_zip.c Thu Mar 28 20:17:14 2019 (r345654) @@ -194,6 +194,7 @@ struct zip { ssize_t zipx_ppmd_read_compressed; CPpmd8 ppmd8; char ppmd8_valid; + char ppmd8_stream_failed; struct archive_string_conv *sconv; struct archive_string_conv *sconv_default; @@ -254,9 +255,15 @@ ppmd_read(void* p) { /* Get the handle to current decompression context. */ struct archive_read *a = ((IByteIn*)p)->a; struct zip *zip = (struct zip*) a->format->data; + ssize_t bytes_avail = 0; /* Fetch next byte. */ - const uint8_t* data = __archive_read_ahead(a, 1, NULL); + const uint8_t* data = __archive_read_ahead(a, 1, &bytes_avail); + if(bytes_avail < 1) { + zip->ppmd8_stream_failed = 1; + return 0; + } + __archive_read_consume(a, 1); /* Increment the counter. */ @@ -1750,6 +1757,7 @@ zipx_ppmd8_init(struct archive_read *a, struct zip *zi /* Create a new decompression context. */ __archive_ppmd8_functions.Ppmd8_Construct(&zip->ppmd8); + zip->ppmd8_stream_failed = 0; /* Setup function pointers required by Ppmd8 decompressor. The * 'ppmd_read' function will feed new bytes to the decompressor, @@ -1869,6 +1877,14 @@ zip_read_data_zipx_ppmd(struct archive_read *a, const break; } + /* This field is set by ppmd_read() when there was no more data + * to be read. */ + if(zip->ppmd8_stream_failed) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Truncated PPMd8 file body"); + return (ARCHIVE_FATAL); + } + zip->uncompressed_buffer[consumed_bytes] = (uint8_t) sym; ++consumed_bytes; } while(consumed_bytes < zip->uncompressed_buffer_size); @@ -1902,7 +1918,7 @@ zipx_bzip2_init(struct archive_read *a, struct zip *zi { int r; - /* Deallocate already existing BZ2 decompression context if it + /* Deallocate already existing BZ2 decompression context if it * exists. */ if(zip->bzstream_valid) { BZ2_bzDecompressEnd(&zip->bzstream); @@ -1968,6 +1984,15 @@ zip_read_data_zipx_bzip2(struct archive_read *a, const } in_bytes = zipmin(zip->entry_bytes_remaining, bytes_avail); + if(in_bytes < 1) { + /* libbz2 doesn't complain when caller feeds avail_in == 0. It will + * actually return success in this case, which is undesirable. This is + * why we need to make this check manually. */ + + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Truncated bzip2 file body"); + return (ARCHIVE_FATAL); + } /* Setup buffer boundaries. */ zip->bzstream.next_in = (char*)(uintptr_t) compressed_buff; Modified: projects/capsicum-test/contrib/libarchive/libarchive/archive_string.c ============================================================================== --- projects/capsicum-test/contrib/libarchive/libarchive/archive_string.c Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/contrib/libarchive/libarchive/archive_string.c Thu Mar 28 20:17:14 2019 (r345654) @@ -1512,8 +1512,10 @@ get_current_codepage(void) p = strrchr(locale, '.'); if (p == NULL) return (GetACP()); + if (strcmp(p+1, "utf8") == 0) + return CP_UTF8; cp = my_atoi(p+1); - if (cp <= 0) + if ((int)cp <= 0) return (GetACP()); return (cp); } @@ -4050,6 +4052,7 @@ archive_mstring_copy_utf8(struct archive_mstring *aes, { if (utf8 == NULL) { aes->aes_set = 0; + return (0); } aes->aes_set = AES_SET_UTF8; archive_string_empty(&(aes->aes_mbs)); @@ -4064,6 +4067,7 @@ archive_mstring_copy_wcs_len(struct archive_mstring *a { if (wcs == NULL) { aes->aes_set = 0; + return (0); } aes->aes_set = AES_SET_WCS; /* Only WCS form set. */ archive_string_empty(&(aes->aes_mbs)); Modified: projects/capsicum-test/contrib/libarchive/libarchive/archive_write_disk_posix.c ============================================================================== --- projects/capsicum-test/contrib/libarchive/libarchive/archive_write_disk_posix.c Thu Mar 28 20:16:19 2019 (r345653) +++ projects/capsicum-test/contrib/libarchive/libarchive/archive_write_disk_posix.c Thu Mar 28 20:17:14 2019 (r345654) @@ -2588,8 +2588,11 @@ check_symlinks_fsobj(char *path, int *a_eno, struct ar */ restore_pwd = open(".", O_RDONLY | O_BINARY | O_CLOEXEC); __archive_ensure_cloexec_flag(restore_pwd); - if (restore_pwd < 0) + if (restore_pwd < 0) { + fsobj_error(a_eno, a_estr, errno, + "Could not open ", path); return (ARCHIVE_FATAL); + } head = path; tail = path; last = 0; @@ -3128,12 +3131,14 @@ create_dir(struct archive_write_disk *a, char *path) static int set_ownership(struct archive_write_disk *a) { -#ifndef __CYGWIN__ -/* unfortunately, on win32 there is no 'root' user with uid 0, - so we just have to try the chown and see if it works */ - - /* If we know we can't change it, don't bother trying. */ - if (a->user_uid != 0 && a->user_uid != a->uid) { +#if !defined(__CYGWIN__) && !defined(__linux__) +/* + * On Linux, a process may have the CAP_CHOWN capability. + * On Windows there is no 'root' user with uid 0. + * Elsewhere we can skip calling chown if we are not root and the desired + * user id does not match the current user. + */ + if (a->user_uid != 0 && a->user_uid != a->uid) { archive_set_error(&a->archive, errno, "Can't set UID=%jd", (intmax_t)a->uid); return (ARCHIVE_WARN); @@ -3500,9 +3505,7 @@ set_fflags(struct archive_write_disk *a) struct fixup_entry *le; unsigned long set, clear; int r; - int critical_flags; mode_t mode = archive_entry_mode(a->entry); - /* * Make 'critical_flags' hold all file flags that can't be * immediately restored. For example, on BSD systems, @@ -3518,33 +3521,33 @@ set_fflags(struct archive_write_disk *a) * other programs that might try to muck with files as they're * being restored. */ - /* Hopefully, the compiler will optimize this mess into a constant. */ - critical_flags = 0; + const int critical_flags = 0 #ifdef SF_IMMUTABLE - critical_flags |= SF_IMMUTABLE; + | SF_IMMUTABLE #endif #ifdef UF_IMMUTABLE - critical_flags |= UF_IMMUTABLE; + | UF_IMMUTABLE #endif #ifdef SF_APPEND - critical_flags |= SF_APPEND; + | SF_APPEND #endif #ifdef UF_APPEND - critical_flags |= UF_APPEND; + | UF_APPEND #endif #if defined(FS_APPEND_FL) - critical_flags |= FS_APPEND_FL; + | FS_APPEND_FL #elif defined(EXT2_APPEND_FL) - critical_flags |= EXT2_APPEND_FL; + | EXT2_APPEND_FL #endif #if defined(FS_IMMUTABLE_FL) - critical_flags |= FS_IMMUTABLE_FL; + | FS_IMMUTABLE_FL #elif defined(EXT2_IMMUTABLE_FL) - critical_flags |= EXT2_IMMUTABLE_FL; + | EXT2_IMMUTABLE_FL #endif #ifdef FS_JOURNAL_DATA_FL - critical_flags |= FS_JOURNAL_DATA_FL; + | FS_JOURNAL_DATA_FL #endif + ; if (a->todo & TODO_FFLAGS) { archive_entry_fflags(a->entry, &set, &clear); @@ -3575,29 +3578,27 @@ set_fflags(struct archive_write_disk *a) static int clear_nochange_fflags(struct archive_write_disk *a) { - int nochange_flags; mode_t mode = archive_entry_mode(a->entry); - - /* Hopefully, the compiler will optimize this mess into a constant. */ - nochange_flags = 0; + const int nochange_flags = 0 #ifdef SF_IMMUTABLE - nochange_flags |= SF_IMMUTABLE; + | SF_IMMUTABLE #endif #ifdef UF_IMMUTABLE - nochange_flags |= UF_IMMUTABLE; + | UF_IMMUTABLE #endif #ifdef SF_APPEND - nochange_flags |= SF_APPEND; + | SF_APPEND #endif #ifdef UF_APPEND - nochange_flags |= UF_APPEND; + | UF_APPEND #endif #ifdef EXT2_APPEND_FL - nochange_flags |= EXT2_APPEND_FL; + | EXT2_APPEND_FL #endif #ifdef EXT2_IMMUTABLE_FL - nochange_flags |= EXT2_IMMUTABLE_FL; + | EXT2_IMMUTABLE_FL #endif + ; return (set_fflags_platform(a, a->fd, a->name, mode, 0, nochange_flags)); @@ -3613,8 +3614,22 @@ set_fflags_platform(struct archive_write_disk *a, int mode_t mode, unsigned long set, unsigned long clear) { int r; - + const int sf_mask = 0 +#ifdef SF_APPEND + | SF_APPEND +#endif +#ifdef SF_ARCHIVED + | SF_ARCHIVED +#endif +#ifdef SF_IMMUTABLE + | SF_IMMUTABLE +#endif +#ifdef SF_NOUNLINK + | SF_NOUNLINK +#endif + ; (void)mode; /* UNUSED */ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:51 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BA109DBF4D for ; Tue, 3 Sep 2019 14:05:50 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yj4cKDz4NtL; Tue, 3 Sep 2019 14:05:49 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id BEE6D19C5E; Tue, 3 Sep 2019 14:05:48 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 691DD19664; Thu, 28 Mar 2019 20:13:38 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1DBE689B2F; Thu, 28 Mar 2019 20:13:38 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0E88019662; Thu, 28 Mar 2019 20:13:38 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 38F7619660 for ; Thu, 28 Mar 2019 20:13:35 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D5C8A89B2E; Thu, 28 Mar 2019 20:13:34 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B1A6D242E3; Thu, 28 Mar 2019 20:13:34 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2SKDYmG069333; Thu, 28 Mar 2019 20:13:34 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2SKDYqs069332; Thu, 28 Mar 2019 20:13:34 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903282013.x2SKDYqs069332@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345652 - projects/capsicum-test/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/share/mk X-SVN-Commit-Revision: 345652 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 1DBE689B2F X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.994,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.95)[-0.946,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:51 -0000 X-Original-Date: Thu, 28 Mar 2019 20:13:34 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:51 -0000 Author: ngie Date: Thu Mar 28 20:13:34 2019 New Revision: 345652 URL: https://svnweb.freebsd.org/changeset/base/345652 Log: Ensure values specified for BINMODE.*, etc can actually be set by the caller It would, previously, set the value of BINMODE.mini-me.setuid to the default, which is not the intention of PROG_OVERRIDE_VARS. PROG_OVERRIDE_VARS _needs_ to override the value, if set, not just set the value to an empty one. Modified: projects/capsicum-test/share/mk/bsd.progs.mk Modified: projects/capsicum-test/share/mk/bsd.progs.mk ============================================================================== --- projects/capsicum-test/share/mk/bsd.progs.mk Thu Mar 28 20:04:26 2019 (r345651) +++ projects/capsicum-test/share/mk/bsd.progs.mk Thu Mar 28 20:13:34 2019 (r345652) @@ -34,6 +34,11 @@ $v += ${${v}.${PROG}} $v += ${${v}_${PROG}} .endif .else +.if defined(${v}.${PROG}) +$v = ${${v}.${PROG}} +.elif defined(${v}_${PROG}) +$v = ${${v}_${PROG}} +.endif $v ?= .endif .endfor From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:51 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2A50FDBF68 for ; Tue, 3 Sep 2019 14:05:51 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yk5rrkz4Nv2; Tue, 3 Sep 2019 14:05:50 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 0E2F419C94; Tue, 3 Sep 2019 14:05:49 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id C9D0A1BA77; Thu, 28 Mar 2019 21:57:46 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3839D8E26C; Thu, 28 Mar 2019 21:57:46 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0F3601BA2E; Thu, 28 Mar 2019 21:57:46 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 602151BA2A for ; Thu, 28 Mar 2019 21:57:43 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2A37A8E266; Thu, 28 Mar 2019 21:57:43 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 040C92554E; Thu, 28 Mar 2019 21:57:43 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2SLvgAU022098; Thu, 28 Mar 2019 21:57:42 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2SLvg6e022096; Thu, 28 Mar 2019 21:57:42 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903282157.x2SLvg6e022096@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345662 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 345662 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3839D8E26C X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.995,0]; NEURAL_HAM_SHORT(-0.96)[-0.958,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:51 -0000 X-Original-Date: Thu, 28 Mar 2019 21:57:42 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:51 -0000 Author: asomers Date: Thu Mar 28 21:57:42 2019 New Revision: 345662 URL: https://svnweb.freebsd.org/changeset/base/345662 Log: fusefs: fix error handling in fuse_vnop_strategy Reported by: cem Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_io.c projects/fuse2/sys/fs/fuse/fuse_vnops.c Modified: projects/fuse2/sys/fs/fuse/fuse_io.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_io.c Thu Mar 28 21:43:01 2019 (r345661) +++ projects/fuse2/sys/fs/fuse/fuse_io.c Thu Mar 28 21:57:42 2019 (r345662) @@ -652,6 +652,7 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) printf("FUSE: strategy: filehandles are closed\n"); bp->b_ioflags |= BIO_ERROR; bp->b_error = error; + bufdone(bp); return (error); } cred = bp->b_iocmd == BIO_READ ? bp->b_rcred : bp->b_wcred; Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Thu Mar 28 21:43:01 2019 (r345661) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Thu Mar 28 21:57:42 2019 (r345662) @@ -1710,7 +1710,7 @@ fuse_vnop_strategy(struct vop_strategy_args *ap) bp->b_ioflags |= BIO_ERROR; bp->b_error = ENXIO; bufdone(bp); - return ENXIO; + return 0; } if (bp->b_iocmd == BIO_WRITE) { int err; @@ -1719,6 +1719,7 @@ fuse_vnop_strategy(struct vop_strategy_args *ap) if (err) { bp->b_ioflags |= BIO_ERROR; bp->b_error = err; + bufdone(bp); return 0; } } From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:59 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3A680DC11D for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yt4K8bz4P35; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 6DFBC19EAE; Tue, 3 Sep 2019 14:05:52 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 68EBC1890F; Sat, 30 Mar 2019 00:36:03 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 367B189DD4; Sat, 30 Mar 2019 00:36:03 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1C34A1890E; Sat, 30 Mar 2019 00:36:03 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 682C31890C for ; Sat, 30 Mar 2019 00:36:00 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1BD6B89DD2; Sat, 30 Mar 2019 00:36:00 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EA6FA6BF9; Sat, 30 Mar 2019 00:35:59 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2U0ZxNf077635; Sat, 30 Mar 2019 00:35:59 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2U0ZxOk077634; Sat, 30 Mar 2019 00:35:59 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903300035.x2U0ZxOk077634@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345720 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345720 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 367B189DD4 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.93 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.94)[-0.938,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:59 -0000 X-Original-Date: Sat, 30 Mar 2019 00:35:59 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:59 -0000 Author: asomers Date: Sat Mar 30 00:35:59 2019 New Revision: 345720 URL: https://svnweb.freebsd.org/changeset/base/345720 Log: fusefs: fix tests when data caching is disabled VOP_GETPAGES is disabled when vfs.fusefs.data_cache_mode=0, causing mmap to return success but accessing the mapped memory will subsequently segfault. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/read.cc Modified: projects/fuse2/tests/sys/fs/fusefs/read.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/read.cc Sat Mar 30 00:35:32 2019 (r345719) +++ projects/fuse2/tests/sys/fs/fusefs/read.cc Sat Mar 30 00:35:59 2019 (r345720) @@ -78,6 +78,23 @@ class AsyncRead: public AioRead { } }; +class ReadMmap: public Read { +public: +virtual void SetUp() { + const char *node = "vfs.fusefs.data_cache_mode"; + int val = 0; + size_t size = sizeof(val); + + FuseTest::SetUp(); + + ASSERT_EQ(0, sysctlbyname(node, &val, &size, NULL, 0)) + << strerror(errno); + if (val == 0) + GTEST_SKIP() << + "fusefs data caching must be enabled for this test"; +} +}; + class ReadAhead: public Read, public WithParamInterface { virtual void SetUp() { m_maxreadahead = GetParam(); @@ -450,7 +467,7 @@ TEST_F(Read, keep_cache_disabled) /* Deliberately leak fd0 and fd1. */ } -TEST_F(Read, mmap) +TEST_F(ReadMmap, mmap) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -621,7 +638,7 @@ TEST_F(Read, default_readahead) } /* Reading with sendfile should work (though it obviously won't be 0-copy) */ -TEST_F(Read, sendfile) +TEST_F(ReadMmap, sendfile) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -668,7 +685,7 @@ TEST_F(Read, sendfile) /* sendfile should fail gracefully if fuse declines the read */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236466 */ -TEST_F(Read, DISABLED_sendfile_eio) +TEST_F(ReadMmap, DISABLED_sendfile_eio) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:58 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1C842DC0E4 for ; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7ys5Gg4z4P2J; Tue, 3 Sep 2019 14:05:57 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 2A44F19E6A; Tue, 3 Sep 2019 14:05:52 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 84364125BE; Fri, 29 Mar 2019 18:51:25 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3E63E74489; Fri, 29 Mar 2019 18:51:25 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 166BE125BC; Fri, 29 Mar 2019 18:51:25 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 613D5125BA for ; Fri, 29 Mar 2019 18:51:22 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3667A7447E; Fri, 29 Mar 2019 18:51:22 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0FE912D91; Fri, 29 Mar 2019 18:51:22 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2TIpLo3092986; Fri, 29 Mar 2019 18:51:21 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2TIpF5X092952; Fri, 29 Mar 2019 18:51:15 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903291851.x2TIpF5X092952@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345710 - in projects/capsicum-test: lib/clang lib/libc++ lib/libc++experimental lib/libc++fs lib/libc/aarch64 lib/libc/amd64 lib/libc/arm lib/libc/gen lib/libc/i386 lib/libc/include li... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/capsicum-test: lib/clang lib/libc++ lib/libc++experimental lib/libc++fs lib/libc/aarch64 lib/libc/amd64 lib/libc/arm lib/libc/gen lib/libc/i386 lib/libc/include lib/libc/mips lib/libc/powe... X-SVN-Commit-Revision: 345710 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3E63E74489 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.995,0]; NEURAL_HAM_SHORT(-0.98)[-0.978,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:58 -0000 X-Original-Date: Fri, 29 Mar 2019 18:51:15 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:58 -0000 Author: ngie Date: Fri Mar 29 18:51:14 2019 New Revision: 345710 URL: https://svnweb.freebsd.org/changeset/base/345710 Log: MFhead@r345709 Added: projects/capsicum-test/lib/libc/aarch64/static_tls.h - copied unchanged from r345709, head/lib/libc/aarch64/static_tls.h projects/capsicum-test/lib/libc/amd64/static_tls.h - copied unchanged from r345709, head/lib/libc/amd64/static_tls.h projects/capsicum-test/lib/libc/arm/static_tls.h - copied unchanged from r345709, head/lib/libc/arm/static_tls.h projects/capsicum-test/lib/libc/i386/static_tls.h - copied unchanged from r345709, head/lib/libc/i386/static_tls.h projects/capsicum-test/lib/libc/mips/static_tls.h - copied unchanged from r345709, head/lib/libc/mips/static_tls.h projects/capsicum-test/lib/libc/powerpc/static_tls.h - copied unchanged from r345709, head/lib/libc/powerpc/static_tls.h projects/capsicum-test/lib/libc/powerpc64/static_tls.h - copied unchanged from r345709, head/lib/libc/powerpc64/static_tls.h projects/capsicum-test/lib/libc/riscv/static_tls.h - copied unchanged from r345709, head/lib/libc/riscv/static_tls.h projects/capsicum-test/lib/libc/sparc64/static_tls.h - copied unchanged from r345709, head/lib/libc/sparc64/static_tls.h projects/capsicum-test/lib/libthr/arch/aarch64/include/pthread_tls.h - copied unchanged from r345709, head/lib/libthr/arch/aarch64/include/pthread_tls.h projects/capsicum-test/lib/libthr/arch/amd64/include/pthread_tls.h - copied unchanged from r345709, head/lib/libthr/arch/amd64/include/pthread_tls.h projects/capsicum-test/lib/libthr/arch/arm/include/pthread_tls.h - copied unchanged from r345709, head/lib/libthr/arch/arm/include/pthread_tls.h projects/capsicum-test/lib/libthr/arch/i386/include/pthread_tls.h - copied unchanged from r345709, head/lib/libthr/arch/i386/include/pthread_tls.h projects/capsicum-test/lib/libthr/arch/mips/include/pthread_tls.h - copied unchanged from r345709, head/lib/libthr/arch/mips/include/pthread_tls.h projects/capsicum-test/lib/libthr/arch/powerpc/include/pthread_tls.h - copied unchanged from r345709, head/lib/libthr/arch/powerpc/include/pthread_tls.h projects/capsicum-test/lib/libthr/arch/riscv/include/pthread_tls.h - copied unchanged from r345709, head/lib/libthr/arch/riscv/include/pthread_tls.h projects/capsicum-test/lib/libthr/arch/sparc64/include/pthread_tls.h - copied unchanged from r345709, head/lib/libthr/arch/sparc64/include/pthread_tls.h Deleted: projects/capsicum-test/sys/fs/fuse/fuse_debug.h Modified: projects/capsicum-test/lib/clang/llvm.build.mk projects/capsicum-test/lib/libc++/Makefile projects/capsicum-test/lib/libc++experimental/Makefile projects/capsicum-test/lib/libc++fs/Makefile projects/capsicum-test/lib/libc/gen/Symbol.map projects/capsicum-test/lib/libc/gen/elf_utils.c projects/capsicum-test/lib/libc/include/libc_private.h projects/capsicum-test/lib/libc/sys/interposing_table.c projects/capsicum-test/lib/libc/tests/stdlib/Makefile projects/capsicum-test/lib/libclang_rt/Makefile.inc projects/capsicum-test/lib/libcxxrt/Makefile projects/capsicum-test/lib/libgcc_eh/Makefile.inc projects/capsicum-test/lib/libomp/Makefile projects/capsicum-test/lib/libthr/Makefile projects/capsicum-test/lib/libthr/pthread.map projects/capsicum-test/lib/libthr/thread/thr_list.c projects/capsicum-test/lib/libthr/thread/thr_private.h projects/capsicum-test/lib/libvgl/main.c projects/capsicum-test/lib/libvgl/mouse.c projects/capsicum-test/lib/ofed/libibnetdisc/Makefile projects/capsicum-test/libexec/rtld-elf/arm/reloc.c projects/capsicum-test/libexec/rtld-elf/mips/reloc.c projects/capsicum-test/libexec/rtld-elf/rtld.c projects/capsicum-test/libexec/rtld-elf/rtld.h projects/capsicum-test/share/man/man9/Makefile projects/capsicum-test/share/man/man9/VOP_FSYNC.9 projects/capsicum-test/share/mk/bsd.progs.mk projects/capsicum-test/share/mk/bsd.sys.mk projects/capsicum-test/share/mk/googletest.test.inc.mk projects/capsicum-test/sys/cam/cam_periph.c projects/capsicum-test/sys/cam/cam_periph.h projects/capsicum-test/sys/conf/NOTES projects/capsicum-test/sys/conf/ldscript.powerpc64 projects/capsicum-test/sys/dev/cxgbe/adapter.h projects/capsicum-test/sys/dev/cxgbe/offload.h projects/capsicum-test/sys/dev/cxgbe/t4_main.c projects/capsicum-test/sys/dev/cxgbe/t4_sge.c projects/capsicum-test/sys/dev/cxgbe/tom/t4_cpl_io.c projects/capsicum-test/sys/dev/cxgbe/tom/t4_ddp.c projects/capsicum-test/sys/dev/cxgbe/tom/t4_tls.c projects/capsicum-test/sys/fs/fuse/fuse.h projects/capsicum-test/sys/fs/fuse/fuse_device.c projects/capsicum-test/sys/fs/fuse/fuse_file.c projects/capsicum-test/sys/fs/fuse/fuse_internal.c projects/capsicum-test/sys/fs/fuse/fuse_internal.h projects/capsicum-test/sys/fs/fuse/fuse_io.c projects/capsicum-test/sys/fs/fuse/fuse_ipc.c projects/capsicum-test/sys/fs/fuse/fuse_ipc.h projects/capsicum-test/sys/fs/fuse/fuse_main.c projects/capsicum-test/sys/fs/fuse/fuse_node.c projects/capsicum-test/sys/fs/fuse/fuse_vfsops.c projects/capsicum-test/sys/fs/fuse/fuse_vnops.c projects/capsicum-test/sys/kern/imgact_elf.c projects/capsicum-test/sys/net/if_lagg.c projects/capsicum-test/sys/net/iflib.c projects/capsicum-test/sys/powerpc/aim/trap_subr64.S projects/capsicum-test/sys/powerpc/booke/locore.S projects/capsicum-test/sys/powerpc/include/mmuvar.h projects/capsicum-test/sys/powerpc/ofw/ofwcall64.S projects/capsicum-test/sys/powerpc/powernv/opalcall.S projects/capsicum-test/sys/powerpc/powerpc/swtch64.S projects/capsicum-test/sys/vm/vm_kern.c projects/capsicum-test/sys/vm/vm_map.c projects/capsicum-test/sys/vm/vm_map.h projects/capsicum-test/tests/sys/capsicum/Makefile projects/capsicum-test/tests/sys/capsicum/ioctls_test.c projects/capsicum-test/usr.bin/dtc/Makefile projects/capsicum-test/usr.sbin/iostat/iostat.c projects/capsicum-test/usr.sbin/pmc/Makefile Directory Properties: projects/capsicum-test/ (props changed) Modified: projects/capsicum-test/lib/clang/llvm.build.mk ============================================================================== --- projects/capsicum-test/lib/clang/llvm.build.mk Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/clang/llvm.build.mk Fri Mar 29 18:51:14 2019 (r345710) @@ -95,7 +95,7 @@ CFLAGS+= -ffunction-sections CFLAGS+= -fdata-sections LDFLAGS+= -Wl,--gc-sections -CXXFLAGS+= -std=c++11 +CXXSTD?= c++11 CXXFLAGS+= -fno-exceptions CXXFLAGS+= -fno-rtti CXXFLAGS.clang+= -stdlib=libc++ Modified: projects/capsicum-test/lib/libc++/Makefile ============================================================================== --- projects/capsicum-test/lib/libc++/Makefile Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libc++/Makefile Fri Mar 29 18:51:14 2019 (r345710) @@ -76,9 +76,7 @@ CFLAGS+= -nostdinc++ CFLAGS+= -nostdlib CFLAGS+= -D_LIBCPP_BUILDING_LIBRARY CFLAGS+= -DLIBCXXRT -.if empty(CXXFLAGS:M-std=*) -CXXFLAGS+= -std=c++11 -.endif +CXXSTD= c++11 LIBADD+= cxxrt INCSGROUPS= STD EXP EXT Modified: projects/capsicum-test/lib/libc++experimental/Makefile ============================================================================== --- projects/capsicum-test/lib/libc++experimental/Makefile Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libc++experimental/Makefile Fri Mar 29 18:51:14 2019 (r345710) @@ -20,8 +20,6 @@ CXXFLAGS+= -nostdinc++ CXXFLAGS+= -nostdlib CXXFLAGS+= -D_LIBCPP_BUILDING_LIBRARY CXXFLAGS+= -DLIBCXXRT -.if empty(CXXFLAGS:M-std=*) -CXXFLAGS+= -std=c++14 -.endif +CXXSTD= c++14 .include Modified: projects/capsicum-test/lib/libc++fs/Makefile ============================================================================== --- projects/capsicum-test/lib/libc++fs/Makefile Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libc++fs/Makefile Fri Mar 29 18:51:14 2019 (r345710) @@ -22,8 +22,6 @@ CXXFLAGS+= -nostdinc++ CXXFLAGS+= -nostdlib CXXFLAGS+= -D_LIBCPP_BUILDING_LIBRARY CXXFLAGS+= -DLIBCXXRT -.if empty(CXXFLAGS:M-std=*) -CXXFLAGS+= -std=c++14 -.endif +CXXSTD= c++14 .include Copied: projects/capsicum-test/lib/libc/aarch64/static_tls.h (from r345709, head/lib/libc/aarch64/static_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libc/aarch64/static_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libc/aarch64/static_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LIBC_AARCH64_STATIC_TLS_H +#define _LIBC_AARCH64_STATIC_TLS_H + +static __inline uintptr_t +_libc_get_static_tls_base(size_t offset) +{ + uintptr_t tlsbase; + + __asm __volatile("mrs %x0, tpidr_el0" : "=r" (tlsbase)); + tlsbase += offset; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libc/amd64/static_tls.h (from r345709, head/lib/libc/amd64/static_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libc/amd64/static_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libc/amd64/static_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LIBC_AMD64_STATIC_TLS_H +#define _LIBC_AMD64_STATIC_TLS_H + +static __inline uintptr_t +_libc_get_static_tls_base(size_t offset) +{ + uintptr_t tlsbase; + + __asm __volatile("movq %%fs:0, %0" : "=r" (tlsbase)); + tlsbase -= offset; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libc/arm/static_tls.h (from r345709, head/lib/libc/arm/static_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libc/arm/static_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libc/arm/static_tls.h) @@ -0,0 +1,51 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LIBC_ARM_STATIC_TLS_H +#define _LIBC_ARM_STATIC_TLS_H + +static __inline uintptr_t +_libc_get_static_tls_base(size_t offset) +{ + uintptr_t tlsbase; + +#ifdef ARM_TP_ADDRESS + tlsbase = *(uintptr_t *)ARM_TP_ADDRESS; +#else + __asm __volatile("mrc p15, 0, %0, c13, c0, 3" : "=r" (tlsbase)); +#endif + + tlsbase += offset; + return (tlsbase); +} + +#endif Modified: projects/capsicum-test/lib/libc/gen/Symbol.map ============================================================================== --- projects/capsicum-test/lib/libc/gen/Symbol.map Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libc/gen/Symbol.map Fri Mar 29 18:51:14 2019 (r345710) @@ -542,6 +542,7 @@ FBSDprivate_1.0 { __libc_tcdrain; __elf_aux_vector; + __pthread_distribute_static_tls; __pthread_map_stacks_exec; __fillcontextx; __fillcontextx2; Modified: projects/capsicum-test/lib/libc/gen/elf_utils.c ============================================================================== --- projects/capsicum-test/lib/libc/gen/elf_utils.c Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libc/gen/elf_utils.c Fri Mar 29 18:51:14 2019 (r345710) @@ -34,10 +34,13 @@ #include #include #include +#include #include "libc_private.h" +#include "static_tls.h" int __elf_phdr_match_addr(struct dl_phdr_info *, void *); void __pthread_map_stacks_exec(void); +void __pthread_distribute_static_tls(size_t, void *, size_t, size_t); int __elf_phdr_match_addr(struct dl_phdr_info *phdr_info, void *addr) @@ -96,4 +99,25 @@ __pthread_map_stacks_exec(void) { ((void (*)(void))__libc_interposing[INTERPOS_map_stacks_exec])(); +} + +void +__libc_distribute_static_tls(size_t offset, void *src, size_t len, + size_t total_len) +{ + uintptr_t tlsbase; + + tlsbase = _libc_get_static_tls_base(offset); + memcpy((void *)tlsbase, src, len); + memset((char *)tlsbase + len, 0, total_len - len); +} + +#pragma weak __pthread_distribute_static_tls +void +__pthread_distribute_static_tls(size_t offset, void *src, size_t len, + size_t total_len) +{ + + ((void (*)(size_t, void *, size_t, size_t))__libc_interposing[ + INTERPOS_distribute_static_tls])(offset, src, len, total_len); } Copied: projects/capsicum-test/lib/libc/i386/static_tls.h (from r345709, head/lib/libc/i386/static_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libc/i386/static_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libc/i386/static_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LIBC_I386_STATIC_TLS_H +#define _LIBC_I386_STATIC_TLS_H + +static __inline uintptr_t +_libc_get_static_tls_base(size_t offset) +{ + uintptr_t tlsbase; + + __asm __volatile("movl %%gs:0, %0" : "=r" (tlsbase)); + tlsbase -= offset; + return (tlsbase); +} + +#endif Modified: projects/capsicum-test/lib/libc/include/libc_private.h ============================================================================== --- projects/capsicum-test/lib/libc/include/libc_private.h Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libc/include/libc_private.h Fri Mar 29 18:51:14 2019 (r345710) @@ -235,6 +235,7 @@ enum { INTERPOS_map_stacks_exec, INTERPOS_fdatasync, INTERPOS_clock_nanosleep, + INTERPOS_distribute_static_tls, INTERPOS_MAX }; @@ -413,6 +414,8 @@ struct dl_phdr_info; int __elf_phdr_match_addr(struct dl_phdr_info *, void *); void __init_elf_aux_vector(void); void __libc_map_stacks_exec(void); +void __libc_distribute_static_tls(__size_t, void *, __size_t, __size_t); +__uintptr_t __libc_static_tls_base(__size_t); void _pthread_cancel_enter(int); void _pthread_cancel_leave(int); Copied: projects/capsicum-test/lib/libc/mips/static_tls.h (from r345709, head/lib/libc/mips/static_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libc/mips/static_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libc/mips/static_tls.h) @@ -0,0 +1,64 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LIBC_MIPS_STATIC_TLS_H +#define _LIBC_MIPS_STATIC_TLS_H + +#include + +static __inline uintptr_t +_libc_get_static_tls_base(size_t offset) +{ + uintptr_t tlsbase; + +#if defined(__mips_n64) + __asm__ __volatile__ ( + ".set\tpush\n\t" + ".set\tmips64r2\n\t" + "rdhwr\t%0, $29\n\t" + ".set\tpop" + : "=r" (tlsbase)); + tlsbase -= TLS_TP_OFFSET + TLS_TCB_SIZE; +#else /* mips 32 */ + __asm__ __volatile__ ( + ".set\tpush\n\t" + ".set\tmips32r2\n\t" + "rdhwr\t%0, $29\n\t" + ".set\tpop" + : "=r" (tlsbase)); + tlsbase -= TLS_TP_OFFSET + TLS_TCB_SIZE; +#endif /* ! __mips_n64 */ + tlsbase += offset; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libc/powerpc/static_tls.h (from r345709, head/lib/libc/powerpc/static_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libc/powerpc/static_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libc/powerpc/static_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LIBC_POWERPC_STATIC_TLS_H +#define _LIBC_POWERPC_STATIC_TLS_H + +static __inline uintptr_t +_libc_get_static_tls_base(size_t offset) +{ + uintptr_t tlsbase; + + __asm __volatile("mr %0,2" : "=r"(tlsbase)); + tlsbase += offset - 0x7008; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libc/powerpc64/static_tls.h (from r345709, head/lib/libc/powerpc64/static_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libc/powerpc64/static_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libc/powerpc64/static_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LIBC_POWERPC64_STATIC_TLS_H +#define _LIBC_POWERPC64_STATIC_TLS_H + +static __inline uintptr_t +_libc_get_static_tls_base(size_t offset) +{ + uintptr_t tlsbase; + + __asm __volatile("mr %0,13" : "=r"(tlsbase)); + tlsbase += offset - 0x7010; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libc/riscv/static_tls.h (from r345709, head/lib/libc/riscv/static_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libc/riscv/static_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libc/riscv/static_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LIBC_RISCV_STATIC_TLS_H +#define _LIBC_RISCV_STATIC_TLS_H + +static __inline uintptr_t +_libc_get_static_tls_base(size_t offset) +{ + uintptr_t tlsbase; + + __asm __volatile("mv %0, tp" : "=r"(tlsbase)); + tlsbase += offset; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libc/sparc64/static_tls.h (from r345709, head/lib/libc/sparc64/static_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libc/sparc64/static_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libc/sparc64/static_tls.h) @@ -0,0 +1,44 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _LIBC_SPARC64_STATIC_TLS_H +#define _LIBC_SPARC64_STATIC_TLS_H + +static __inline uintptr_t +_libc_get_static_tls_base(size_t offset) +{ + register uintptr_t tlsbase __asm("%g7"); + + return (tlsbase + offset); +} + +#endif Modified: projects/capsicum-test/lib/libc/sys/interposing_table.c ============================================================================== --- projects/capsicum-test/lib/libc/sys/interposing_table.c Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libc/sys/interposing_table.c Fri Mar 29 18:51:14 2019 (r345710) @@ -81,6 +81,7 @@ interpos_func_t __libc_interposing[INTERPOS_MAX] = { SLOT(map_stacks_exec, __libc_map_stacks_exec), SLOT(fdatasync, __sys_fdatasync), SLOT(clock_nanosleep, __sys_clock_nanosleep), + SLOT(distribute_static_tls, __libc_distribute_static_tls), }; #undef SLOT Modified: projects/capsicum-test/lib/libc/tests/stdlib/Makefile ============================================================================== --- projects/capsicum-test/lib/libc/tests/stdlib/Makefile Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libc/tests/stdlib/Makefile Fri Mar 29 18:51:14 2019 (r345710) @@ -50,8 +50,8 @@ PROGS+= h_getopt h_getopt_long CFLAGS+= -I${.CURDIR} -CXXFLAGS.cxa_thread_atexit_test+= -std=c++11 -CXXFLAGS.cxa_thread_atexit_nothr_test+= -std=c++11 +CXXSTD.cxa_thread_atexit_test= c++11 +CXXSTD.cxa_thread_atexit_nothr_test= c++11 LIBADD.cxa_thread_atexit_test+= pthread .for t in h_getopt h_getopt_long Modified: projects/capsicum-test/lib/libclang_rt/Makefile.inc ============================================================================== --- projects/capsicum-test/lib/libclang_rt/Makefile.inc Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libclang_rt/Makefile.inc Fri Mar 29 18:51:14 2019 (r345710) @@ -41,4 +41,4 @@ CFLAGS+= -funwind-tables CXXFLAGS+= -fvisibility-inlines-hidden CXXFLAGS+= -fvisibility=hidden CFLAGS+= -I${CRTSRC}/lib -CXXFLAGS+= -std=c++11 +CXXSTD= c++11 Modified: projects/capsicum-test/lib/libcxxrt/Makefile ============================================================================== --- projects/capsicum-test/lib/libcxxrt/Makefile Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libcxxrt/Makefile Fri Mar 29 18:51:14 2019 (r345710) @@ -22,9 +22,7 @@ SRCS+= libelftc_dem_gnu3.c\ WARNS= 0 CFLAGS+= -isystem ${SRCDIR} -nostdinc++ -.if empty(CXXFLAGS:M-std=*) -CXXFLAGS+= -std=c++11 -.endif +CXXSTD= c++11 VERSION_MAP= ${.CURDIR}/Version.map .include Modified: projects/capsicum-test/lib/libgcc_eh/Makefile.inc ============================================================================== --- projects/capsicum-test/lib/libgcc_eh/Makefile.inc Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libgcc_eh/Makefile.inc Fri Mar 29 18:51:14 2019 (r345710) @@ -27,10 +27,8 @@ CXXFLAGS.${file}+= -fno-exceptions -funwind-tables .endfor CFLAGS+= -I${UNWINDINCDIR} -I${.CURDIR} -D_LIBUNWIND_IS_NATIVE_ONLY -.if empty(CXXFLAGS:M-std=*) -CXXFLAGS+= -std=c++11 -.endif CXXFLAGS+= -fno-rtti +CXXSTD= c++11 STATIC_CXXFLAGS+= -fvisibility=hidden -fPIC # Probably need to just move this earlier or use CXXFLAGS .if ${MK_DIRDEPS_BUILD} == "yes" Modified: projects/capsicum-test/lib/libomp/Makefile ============================================================================== --- projects/capsicum-test/lib/libomp/Makefile Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libomp/Makefile Fri Mar 29 18:51:14 2019 (r345710) @@ -53,9 +53,9 @@ CFLAGS+= -I${ITTSRC} CFLAGS+= -ffunction-sections CFLAGS+= -fdata-sections CXXFLAGS+= -fvisibility-inlines-hidden -CXXFLAGS+= -std=c++11 CXXFLAGS+= -fno-exceptions CXXFLAGS+= -fno-rtti +CXXSTD= c++11 LDFLAGS+= -Wl,--warn-shared-textrel LDFLAGS+= -Wl,--gc-sections Modified: projects/capsicum-test/lib/libthr/Makefile ============================================================================== --- projects/capsicum-test/lib/libthr/Makefile Fri Mar 29 18:49:08 2019 (r345709) +++ projects/capsicum-test/lib/libthr/Makefile Fri Mar 29 18:51:14 2019 (r345710) @@ -16,8 +16,10 @@ SHLIB_MAJOR= 3 NO_WTHREAD_SAFETY=1 NO_WCAST_ALIGN.gcc=1 # for gcc 4.2 CFLAGS+=-DPTHREAD_KERNEL -CFLAGS+=-I${SRCTOP}/lib/libc/include -I${.CURDIR}/thread \ - -I${SRCTOP}/include +CFLAGS+=-I${SRCTOP}/lib/libc/include +CFLAGS+=-I${SRCTOP}/lib/libc/${MACHINE_CPUARCH} +CFLAGS+=-I${.CURDIR}/thread +CFLAGS+=-I${SRCTOP}/include CFLAGS+=-I${.CURDIR}/arch/${MACHINE_CPUARCH}/include CFLAGS+=-I${.CURDIR}/sys CFLAGS+=-I${SRCTOP}/libexec/rtld-elf Copied: projects/capsicum-test/lib/libthr/arch/aarch64/include/pthread_tls.h (from r345709, head/lib/libthr/arch/aarch64/include/pthread_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libthr/arch/aarch64/include/pthread_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libthr/arch/aarch64/include/pthread_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _ARCH_AARCH64_PTHREAD_TLS_H +#define _ARCH_AARCH64_PTHREAD_TLS_H + +static __inline uintptr_t +_get_static_tls_base(struct pthread *thr, size_t offset) +{ + uintptr_t tlsbase; + + tlsbase = (uintptr_t)thr->tcb; + tlsbase += offset; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libthr/arch/amd64/include/pthread_tls.h (from r345709, head/lib/libthr/arch/amd64/include/pthread_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libthr/arch/amd64/include/pthread_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libthr/arch/amd64/include/pthread_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _ARCH_AMD64_PTHREAD_TLS_H +#define _ARCH_AMD64_PTHREAD_TLS_H + +static __inline uintptr_t +_get_static_tls_base(struct pthread *thr, size_t offset) +{ + uintptr_t tlsbase; + + tlsbase = (uintptr_t)thr->tcb; + tlsbase -= offset; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libthr/arch/arm/include/pthread_tls.h (from r345709, head/lib/libthr/arch/arm/include/pthread_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libthr/arch/arm/include/pthread_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libthr/arch/arm/include/pthread_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _ARCH_ARM_PTHREAD_TLS_H +#define _ARCH_ARM_PTHREAD_TLS_H + +static __inline uintptr_t +_get_static_tls_base(struct pthread *thr, size_t offset) +{ + uintptr_t tlsbase; + + tlsbase = (uintptr_t)thr->tcb; + tlsbase += offset; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libthr/arch/i386/include/pthread_tls.h (from r345709, head/lib/libthr/arch/i386/include/pthread_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libthr/arch/i386/include/pthread_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libthr/arch/i386/include/pthread_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _ARCH_I386_PTHREAD_TLS_H +#define _ARCH_I386_PTHREAD_TLS_H + +static __inline uintptr_t +_get_static_tls_base(struct pthread *thr, size_t offset) +{ + uintptr_t tlsbase; + + tlsbase = (uintptr_t)thr->tcb; + tlsbase -= offset; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libthr/arch/mips/include/pthread_tls.h (from r345709, head/lib/libthr/arch/mips/include/pthread_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libthr/arch/mips/include/pthread_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libthr/arch/mips/include/pthread_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _ARCH_MIPS_PTHREAD_TLS_H +#define _ARCH_MIPS_PTHREAD_TLS_H + +static __inline uintptr_t +_get_static_tls_base(struct pthread *thr, size_t offset) +{ + uintptr_t tlsbase; + + tlsbase = (uintptr_t)thr->tcb; + tlsbase += offset; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libthr/arch/powerpc/include/pthread_tls.h (from r345709, head/lib/libthr/arch/powerpc/include/pthread_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libthr/arch/powerpc/include/pthread_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libthr/arch/powerpc/include/pthread_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _ARCH_POWERPC_PTHREAD_TLS_H +#define _ARCH_POWERPC_PTHREAD_TLS_H + +static __inline uintptr_t +_get_static_tls_base(struct pthread *thr, size_t offset) +{ + uintptr_t tlsbase; + + tlsbase = (uintptr_t)thr->tcb; + tlsbase += offset; + return (tlsbase); +} + +#endif Copied: projects/capsicum-test/lib/libthr/arch/riscv/include/pthread_tls.h (from r345709, head/lib/libthr/arch/riscv/include/pthread_tls.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/lib/libthr/arch/riscv/include/pthread_tls.h Fri Mar 29 18:51:14 2019 (r345710, copy of r345709, head/lib/libthr/arch/riscv/include/pthread_tls.h) @@ -0,0 +1,46 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * Copyright (c) 2019 The FreeBSD Foundation + * + * This software was developed by Konstantin Belousov + * under sponsorship from the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _ARCH_RISCV_PTHREAD_TLS_H +#define _ARCH_RISCV_PTHREAD_TLS_H + +static __inline uintptr_t *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:01 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0A01CDC15B for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv1WB8z4P4R; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 6494F19F1E; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5F59915469; Sun, 31 Mar 2019 05:33:15 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5DEC56A61B; Sun, 31 Mar 2019 05:33:14 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 11ECC153E8; Sun, 31 Mar 2019 05:33:14 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 43280153E6 for ; Sun, 31 Mar 2019 05:33:11 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0D9E06A616; Sun, 31 Mar 2019 05:33:11 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id DB472224D2; Sun, 31 Mar 2019 05:33:10 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2V5XAjc012201; Sun, 31 Mar 2019 05:33:10 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2V5XAwW012200; Sun, 31 Mar 2019 05:33:10 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903310533.x2V5XAwW012200@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345747 - projects/kyua-use-googletest-test-interface X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/kyua-use-googletest-test-interface X-SVN-Commit-Revision: 345747 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 5DEC56A61B X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.92 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.92)[-0.920,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:01 -0000 X-Original-Date: Sun, 31 Mar 2019 05:33:10 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:01 -0000 Author: ngie Date: Sun Mar 31 05:33:10 2019 New Revision: 345747 URL: https://svnweb.freebsd.org/changeset/base/345747 Log: Improve googletest TEST_INTERFACE support Switch googletest.test.mk from the plain test interface to the googletest interface. This requires experimental features, currently only available in my GitHub kyua fork: https://github.com/ngie-eign/kyua/tree/add-googletest-support . I am close enough to completing the project that it's time to move my work from git to svn for developer visibility. Added: - copied from r345746, head/ Directory Properties: projects/kyua-use-googletest-test-interface/ (props changed) From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:59 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 32A81DC118 for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yt3NSMz4P2y; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 8694319EB6; Tue, 3 Sep 2019 14:05:52 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 2783319849; Sat, 30 Mar 2019 01:14:20 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 542F68BBF0; Sat, 30 Mar 2019 01:14:19 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1A15F1981A; Sat, 30 Mar 2019 01:14:19 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 3858F19816 for ; Sat, 30 Mar 2019 01:14:16 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 079228BBE4; Sat, 30 Mar 2019 01:14:16 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D674C7440; Sat, 30 Mar 2019 01:14:15 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2U1EFfg098567; Sat, 30 Mar 2019 01:14:15 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2U1EFmJ098566; Sat, 30 Mar 2019 01:14:15 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903300114.x2U1EFmJ098566@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345724 - projects/capsicum-test/tests/sys/capsicum X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/tests/sys/capsicum X-SVN-Commit-Revision: 345724 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 542F68BBF0 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.96)[-0.964,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:59 -0000 X-Original-Date: Sat, 30 Mar 2019 01:14:15 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:59 -0000 Author: ngie Date: Sat Mar 30 01:14:15 2019 New Revision: 345724 URL: https://svnweb.freebsd.org/changeset/base/345724 Log: Fix an item and run more tests First off, the BINMODE for mini-me.setuid should be 04555, not 04444. The latter mode is not executable, so mini-me.setuid would do the wrong thing by failing to run. There's probably a capsicum-test bug buried in here. Second off, some of the *[Fe|E]xecve tests are skipped if run as root. In order to ensure these tests aren't skipped, run them as an unprivileged user. Modified: projects/capsicum-test/tests/sys/capsicum/Makefile Modified: projects/capsicum-test/tests/sys/capsicum/Makefile ============================================================================== --- projects/capsicum-test/tests/sys/capsicum/Makefile Sat Mar 30 00:57:33 2019 (r345723) +++ projects/capsicum-test/tests/sys/capsicum/Makefile Sat Mar 30 01:14:15 2019 (r345724) @@ -35,6 +35,7 @@ SRCS.capsicum-test+= \ rename.cc LIBADD.capsicum-test+= gtest pthread +TEST_METADATA.capsicum-test= required_user="unprivileged" .for p in mini-me mini-me.noexec mini-me.setuid PROGS+= $p @@ -45,7 +46,7 @@ SRCS.$p= mini-me.c BINDIR= ${TESTSDIR} BINMODE.mini-me.noexec= ${NOBINMODE} -BINMODE.mini-me.setuid= 4444 +BINMODE.mini-me.setuid= 4555 WARNS.capsicum-test= 3 From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:01 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 19BABDC161 for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv1W2Tz4P4M; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 35D2A19F0C; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 7B525EED6; Sat, 30 Mar 2019 21:04:15 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6F5CF7793C; Sat, 30 Mar 2019 21:04:14 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 16AE2EE84; Sat, 30 Mar 2019 21:04:13 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5D746EE79 for ; Sat, 30 Mar 2019 21:04:10 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 299E77791B; Sat, 30 Mar 2019 21:04:10 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F337C1C76D; Sat, 30 Mar 2019 21:04:09 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2UL49X6043665; Sat, 30 Mar 2019 21:04:09 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2UL48MS043660; Sat, 30 Mar 2019 21:04:08 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903302104.x2UL48MS043660@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345740 - in projects/capsicum-test: contrib/googletest/googletest contrib/googletest/googletest/docs contrib/googletest/googletest/test lib/googletest/gtest_main/tests X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/capsicum-test: contrib/googletest/googletest contrib/googletest/googletest/docs contrib/googletest/googletest/test lib/googletest/gtest_main/tests X-SVN-Commit-Revision: 345740 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 6F5CF7793C X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.970,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:02 -0000 X-Original-Date: Sat, 30 Mar 2019 21:04:08 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:02 -0000 Author: ngie Date: Sat Mar 30 21:04:08 2019 New Revision: 345740 URL: https://svnweb.freebsd.org/changeset/base/345740 Log: Import the proof-of-concept fix in D19765 I'm using this to complete the TODO items in D19758. Added: projects/capsicum-test/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc (contents, props changed) Modified: projects/capsicum-test/contrib/googletest/googletest/CMakeLists.txt projects/capsicum-test/contrib/googletest/googletest/Makefile.am projects/capsicum-test/contrib/googletest/googletest/docs/advanced.md projects/capsicum-test/contrib/googletest/googletest/test/BUILD.bazel projects/capsicum-test/lib/googletest/gtest_main/tests/Makefile Modified: projects/capsicum-test/contrib/googletest/googletest/CMakeLists.txt ============================================================================== --- projects/capsicum-test/contrib/googletest/googletest/CMakeLists.txt Sat Mar 30 18:00:44 2019 (r345739) +++ projects/capsicum-test/contrib/googletest/googletest/CMakeLists.txt Sat Mar 30 21:04:08 2019 (r345740) @@ -217,6 +217,7 @@ if (gtest_build_tests) test/gtest-typed-test2_test.cc) cxx_test(gtest_unittest gtest_main) cxx_test(gtest-unittest-api_test gtest) + cxx_test(gtest_skip_in_environment_setup_test gtest_main) cxx_test(gtest_skip_test gtest_main) ############################################################ Modified: projects/capsicum-test/contrib/googletest/googletest/Makefile.am ============================================================================== --- projects/capsicum-test/contrib/googletest/googletest/Makefile.am Sat Mar 30 18:00:44 2019 (r345739) +++ projects/capsicum-test/contrib/googletest/googletest/Makefile.am Sat Mar 30 21:04:08 2019 (r345740) @@ -290,6 +290,12 @@ test_gtest_all_test_SOURCES = test/gtest_all_test.cc test_gtest_all_test_LDADD = lib/libgtest_main.la \ lib/libgtest.la +TESTS += test/gtest_skip_in_environment_setup_test +check_PROGRAMS += test/gtest_skip_in_environment_setup_test +test_gtest_skip_in_environment_setup_test_SOURCES = test/gtest_skip_in_environment_setup_test.cc +test_gtest_skip_in_environment_setup_test_LDADD= lib/libgtest_main.la \ + lib/libgtest.la + # Tests that fused gtest files compile and work. FUSED_GTEST_SRC = \ fused-src/gtest/gtest-all.cc \ Modified: projects/capsicum-test/contrib/googletest/googletest/docs/advanced.md ============================================================================== --- projects/capsicum-test/contrib/googletest/googletest/docs/advanced.md Sat Mar 30 18:00:44 2019 (r345739) +++ projects/capsicum-test/contrib/googletest/googletest/docs/advanced.md Sat Mar 30 21:04:08 2019 (r345740) @@ -1289,8 +1289,10 @@ Environment* AddGlobalTestEnvironment(Environment* env ``` Now, when `RUN_ALL_TESTS()` is called, it first calls the `SetUp()` method of -the environment object, then runs the tests if there was no fatal failures, and -finally calls `TearDown()` of the environment object. +each environment object, then runs the tests if none of the environments +reported fatal failures and `GTEST_SKIP()` was not called. `RUN_ALL_TESTS()` +always calls `TearDown()` with each environment object, regardless of whether +or not the tests were run. It's OK to register multiple environment objects. In this case, their `SetUp()` will be called in the order they are registered, and their `TearDown()` will be Modified: projects/capsicum-test/contrib/googletest/googletest/test/BUILD.bazel ============================================================================== --- projects/capsicum-test/contrib/googletest/googletest/test/BUILD.bazel Sat Mar 30 18:00:44 2019 (r345739) +++ projects/capsicum-test/contrib/googletest/googletest/test/BUILD.bazel Sat Mar 30 21:04:08 2019 (r345740) @@ -311,6 +311,13 @@ cc_binary( deps = ["//:gtest"], ) +cc_test( + name = "gtest_skip_in_environment_setup_test", + size = "small", + srcs = ["gtest_skip_in_environment_setup_test.cc"], + deps = ["//:gtest_main"], +) + py_test( name = "googletest-list-tests-unittest", size = "small", Added: projects/capsicum-test/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc Sat Mar 30 21:04:08 2019 (r345740) @@ -0,0 +1,60 @@ +// Copyright 2019, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This test verifies that skipping in the environment results in the +// testcases being skipped. +// +// This is a reproduction case for +// https://github.com/google/googletest/issues/2189 . + +#include +#include + +class SetupEnvironment : public testing::Environment { +public: + void SetUp() override { + GTEST_SKIP() << "Skipping the entire environment"; + } +}; + +TEST(Test, AlwaysPasses) { + EXPECT_EQ(true, true); +} + +TEST(Test, AlwaysFails) { + EXPECT_EQ(true, false); +} + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + + testing::AddGlobalTestEnvironment(new SetupEnvironment()); + + return (RUN_ALL_TESTS()); +} Modified: projects/capsicum-test/lib/googletest/gtest_main/tests/Makefile ============================================================================== --- projects/capsicum-test/lib/googletest/gtest_main/tests/Makefile Sat Mar 30 18:00:44 2019 (r345739) +++ projects/capsicum-test/lib/googletest/gtest_main/tests/Makefile Sat Mar 30 21:04:08 2019 (r345740) @@ -19,6 +19,7 @@ GTESTS+= gtest_sole_header_test GTESTS+= googletest-test-part-test GTESTS+= gtest-typed-test_test GTESTS+= gtest_skip_test +GTESTS+= gtest_skip_in_environment_setup_test GTESTS+= gtest_unittest CXXFLAGS+= -I${GOOGLETEST_SRCROOT}/include From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:00 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EC666DC151 for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv1dv5z4P4Y; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 7CCD919F32; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id B5C0C15C5D; Sun, 31 Mar 2019 06:21:36 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3F89C6BC0E; Sun, 31 Mar 2019 06:21:36 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1C55715C34; Sun, 31 Mar 2019 06:21:36 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5756215C32 for ; Sun, 31 Mar 2019 06:21:33 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2A8776BC04; Sun, 31 Mar 2019 06:21:33 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0469E22BD6; Sun, 31 Mar 2019 06:21:33 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2V6LWlp035877; Sun, 31 Mar 2019 06:21:32 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2V6LWC0035875; Sun, 31 Mar 2019 06:21:32 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903310621.x2V6LWC0035875@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345750 - in projects/kyua-use-googletest-test-interface/lib/googletest: gmock/tests gtest/tests gtest_main/tests X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/kyua-use-googletest-test-interface/lib/googletest: gmock/tests gtest/tests gtest_main/tests X-SVN-Commit-Revision: 345750 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3F89C6BC0E X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.96)[-0.957,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:01 -0000 X-Original-Date: Sun, 31 Mar 2019 06:21:32 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:01 -0000 Author: ngie Date: Sun Mar 31 06:21:32 2019 New Revision: 345750 URL: https://svnweb.freebsd.org/changeset/base/345750 Log: Use the test engine interface plain for some googlemock/googletest provided tests The issues are as follows: i. Some tests don't execute `RUN_ALL_TESTS()`. ii. Some tests incorrectly analyze the results when `--gtest_list_tests` is specified on the command line. iii. Some tests assume all tests are run (in order to analyze the results at the end of the test program as part of Environment::TearDown()). The above items cause Kyua googletest engine to bail, since there is spurious output on the command line (in the case of i. and ii.), or failures/asserts are needlessly triggered (in the case of iii.). Add comments noting why the testcases cannot use the googletest interface, along with their respective googletest issues. Case ii: https://github.com/google/googletest/issues/2204 Case iii: https://github.com/google/googletest/issues/2205 Modified: projects/kyua-use-googletest-test-interface/lib/googletest/gmock/tests/Makefile projects/kyua-use-googletest-test-interface/lib/googletest/gtest/tests/Makefile projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile Modified: projects/kyua-use-googletest-test-interface/lib/googletest/gmock/tests/Makefile ============================================================================== --- projects/kyua-use-googletest-test-interface/lib/googletest/gmock/tests/Makefile Sun Mar 31 06:20:00 2019 (r345749) +++ projects/kyua-use-googletest-test-interface/lib/googletest/gmock/tests/Makefile Sun Mar 31 06:21:32 2019 (r345750) @@ -8,6 +8,11 @@ GTESTS+= gmock_stress_test LIBADD+= pthread gtest gmock +# This test cannot selectively run a single test, as it verifies results when +# `--gtest_list_tests` is run: +# https://github.com/google/googletest/issues/2204 +TEST_INTERFACE.gmock_stress_test= plain + # The next release will resolve a number of build warnings issues. NO_WERROR= Modified: projects/kyua-use-googletest-test-interface/lib/googletest/gtest/tests/Makefile ============================================================================== --- projects/kyua-use-googletest-test-interface/lib/googletest/gtest/tests/Makefile Sun Mar 31 06:20:00 2019 (r345749) +++ projects/kyua-use-googletest-test-interface/lib/googletest/gtest/tests/Makefile Sun Mar 31 06:21:32 2019 (r345750) @@ -36,6 +36,17 @@ SRCS.googletest-param-test-test= \ LIBADD+= gtest +# These tests confuse the kyua googletest engine, as they don't conform to the +# googletest spec; they're functional unit tests for the library. +TEST_INTERFACE.gtest_environment_test= plain +TEST_INTERFACE.gtest_no_test_unittest= plain +TEST_INTERFACE.gtest_repeat_test= plain +TEST_INTERFACE.gtest_stress_test= plain +TEST_INTERFACE.gtest_throw_on_failure_ex_test= plain +# This test program cannot selectively run test suites/testcases: +# https://github.com/google/googletest/issues/2205 +TEST_INTERFACE.gtest-unittest-api_test= plain + # XXX: explicitly listing -lpthread is incorrect. src.libnames.mk should be # handling this. LIBADD.gtest_stress_test+= pthread Modified: projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile ============================================================================== --- projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile Sun Mar 31 06:20:00 2019 (r345749) +++ projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile Sun Mar 31 06:21:32 2019 (r345750) @@ -21,6 +21,11 @@ GTESTS+= gtest-typed-test_test GTESTS+= gtest_skip_test GTESTS+= gtest_unittest +# This test cannot selectively run a single test, as it verifies results when +# `--gtest_list_tests` is run: +# https://github.com/google/googletest/issues/2204 +TEST_INTERFACE.googletest-listener-test= plain + CXXFLAGS+= -I${GOOGLETEST_SRCROOT}/include CXXFLAGS+= -I${GOOGLETEST_SRCROOT} From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:01 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0E6DCDC15D for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv0pctz4P3g; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 5ECB719F1A; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id D7A711509B; Sun, 31 Mar 2019 05:16:32 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3F39C69B76; Sun, 31 Mar 2019 05:16:32 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 12A7815051; Sun, 31 Mar 2019 05:16:32 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 9A4221504F for ; Sun, 31 Mar 2019 05:16:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6110169B72; Sun, 31 Mar 2019 05:16:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 36A912212A; Sun, 31 Mar 2019 05:16:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2V5GTNC001858; Sun, 31 Mar 2019 05:16:29 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2V5GRIW001851; Sun, 31 Mar 2019 05:16:27 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903310516.x2V5GRIW001851@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345746 - in projects/capsicum-test: libexec/rc/rc.d libexec/save-entropy sys/compat/freebsd32 sys/net sys/netinet6 X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/capsicum-test: libexec/rc/rc.d libexec/save-entropy sys/compat/freebsd32 sys/net sys/netinet6 X-SVN-Commit-Revision: 345746 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3F39C69B76 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.92 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.92)[-0.921,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:01 -0000 X-Original-Date: Sun, 31 Mar 2019 05:16:27 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:01 -0000 Author: ngie Date: Sun Mar 31 05:16:27 2019 New Revision: 345746 URL: https://svnweb.freebsd.org/changeset/base/345746 Log: MFhead@r345745 Modified: projects/capsicum-test/libexec/rc/rc.d/random projects/capsicum-test/libexec/save-entropy/save-entropy.sh projects/capsicum-test/sys/compat/freebsd32/freebsd32_misc.c projects/capsicum-test/sys/net/if_stf.c projects/capsicum-test/sys/netinet6/in6.c projects/capsicum-test/sys/netinet6/in6_ifattach.c projects/capsicum-test/sys/netinet6/nd6.c Directory Properties: projects/capsicum-test/ (props changed) Modified: projects/capsicum-test/libexec/rc/rc.d/random ============================================================================== --- projects/capsicum-test/libexec/rc/rc.d/random Sun Mar 31 05:15:32 2019 (r345745) +++ projects/capsicum-test/libexec/rc/rc.d/random Sun Mar 31 05:16:27 2019 (r345746) @@ -25,7 +25,8 @@ save_dev_random() for f ; do debug "saving entropy to $f" dd if=/dev/random of="$f" bs=4096 count=1 status=none && - chmod 600 "$f" + chmod 600 "$f" && + fsync "$f" "$(dirname "$f")" done umask ${oumask} } @@ -120,6 +121,9 @@ random_stop() dd if=/dev/random of=${entropy_file_confirmed} \ bs=4096 count=1 2> /dev/null || warn 'write failed (unwriteable file or full fs?)' + fsync "${entropy_file_confirmed}" \ + "$(dirname "${entropy_file_confirmed}")" \ + 2> /dev/null echo '.' ;; esac @@ -145,6 +149,9 @@ random_stop() dd if=/dev/random of=${entropy_boot_file_confirmed} \ bs=4096 count=1 2> /dev/null || warn 'write failed (unwriteable file or full fs?)' + fsync "${entropy_boot_file_confirmed}" \ + "$(dirname "${entropy_boot_file_confirmed}")" \ + 2> /dev/null echo '.' ;; esac Modified: projects/capsicum-test/libexec/save-entropy/save-entropy.sh ============================================================================== --- projects/capsicum-test/libexec/save-entropy/save-entropy.sh Sun Mar 31 05:15:32 2019 (r345745) +++ projects/capsicum-test/libexec/save-entropy/save-entropy.sh Sun Mar 31 05:16:27 2019 (r345746) @@ -90,5 +90,6 @@ while [ ${n} -ge 1 ]; do done dd if=/dev/random of=saved-entropy.1 bs=${entropy_save_sz} count=1 2>/dev/null +fsync saved-entropy.1 "." exit 0 Modified: projects/capsicum-test/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- projects/capsicum-test/sys/compat/freebsd32/freebsd32_misc.c Sun Mar 31 05:15:32 2019 (r345745) +++ projects/capsicum-test/sys/compat/freebsd32/freebsd32_misc.c Sun Mar 31 05:16:27 2019 (r345746) @@ -1160,8 +1160,8 @@ freebsd32_copy_msg_out(struct msghdr *msg, struct mbuf cm = NULL; } - msg->msg_controllen += FREEBSD32_ALIGN(sizeof(*cm)) + - datalen_out; + msg->msg_controllen += + FREEBSD32_CMSG_SPACE(datalen_out); } } if (len == 0 && m != NULL) { Modified: projects/capsicum-test/sys/net/if_stf.c ============================================================================== --- projects/capsicum-test/sys/net/if_stf.c Sun Mar 31 05:15:32 2019 (r345745) +++ projects/capsicum-test/sys/net/if_stf.c Sun Mar 31 05:16:27 2019 (r345746) @@ -724,6 +724,7 @@ stf_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) } ifp->if_flags |= IFF_UP; + ifp->if_drv_flags |= IFF_DRV_RUNNING; break; case SIOCADDMULTI: Modified: projects/capsicum-test/sys/netinet6/in6.c ============================================================================== --- projects/capsicum-test/sys/netinet6/in6.c Sun Mar 31 05:15:32 2019 (r345745) +++ projects/capsicum-test/sys/netinet6/in6.c Sun Mar 31 05:16:27 2019 (r345746) @@ -1951,26 +1951,14 @@ in6_if_up(struct ifnet *ifp) int in6if_do_dad(struct ifnet *ifp) { + if ((ifp->if_flags & IFF_LOOPBACK) != 0) return (0); - - if ((ND_IFINFO(ifp)->flags & ND6_IFF_IFDISABLED) || - (ND_IFINFO(ifp)->flags & ND6_IFF_NO_DAD)) + if ((ifp->if_flags & IFF_MULTICAST) == 0) return (0); - - /* - * Our DAD routine requires the interface up and running. - * However, some interfaces can be up before the RUNNING - * status. Additionally, users may try to assign addresses - * before the interface becomes up (or running). - * This function returns EAGAIN in that case. - * The caller should mark "tentative" on the address instead of - * performing DAD immediately. - */ - if (!((ifp->if_flags & IFF_UP) && - (ifp->if_drv_flags & IFF_DRV_RUNNING))) - return (EAGAIN); - + if ((ND_IFINFO(ifp)->flags & + (ND6_IFF_IFDISABLED | ND6_IFF_NO_DAD)) != 0) + return (0); return (1); } Modified: projects/capsicum-test/sys/netinet6/in6_ifattach.c ============================================================================== --- projects/capsicum-test/sys/netinet6/in6_ifattach.c Sun Mar 31 05:15:32 2019 (r345745) +++ projects/capsicum-test/sys/netinet6/in6_ifattach.c Sun Mar 31 05:16:27 2019 (r345746) @@ -692,6 +692,7 @@ in6_ifattach(struct ifnet *ifp, struct ifnet *altifp) * it is rather harmful to have one. */ ND_IFINFO(ifp)->flags &= ~ND6_IFF_AUTO_LINKLOCAL; + ND_IFINFO(ifp)->flags |= ND6_IFF_NO_DAD; break; default: break; Modified: projects/capsicum-test/sys/netinet6/nd6.c ============================================================================== --- projects/capsicum-test/sys/netinet6/nd6.c Sun Mar 31 05:15:32 2019 (r345745) +++ projects/capsicum-test/sys/netinet6/nd6.c Sun Mar 31 05:16:27 2019 (r345746) @@ -900,6 +900,7 @@ nd6_timer(void *arg) struct nd_prhead prl; struct nd_defrouter *dr, *ndr; struct nd_prefix *pr, *npr; + struct ifnet *ifp; struct in6_ifaddr *ia6, *nia6; uint64_t genid; @@ -996,14 +997,15 @@ nd6_timer(void *arg) * Check status of the interface. If it is down, * mark the address as tentative for future DAD. */ - if ((ia6->ia_ifp->if_flags & IFF_UP) == 0 || - (ia6->ia_ifp->if_drv_flags & IFF_DRV_RUNNING) - == 0 || - (ND_IFINFO(ia6->ia_ifp)->flags & - ND6_IFF_IFDISABLED) != 0) { + ifp = ia6->ia_ifp; + if ((ND_IFINFO(ifp)->flags & ND6_IFF_NO_DAD) == 0 && + ((ifp->if_flags & IFF_UP) == 0 || + (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0 || + (ND_IFINFO(ifp)->flags & ND6_IFF_IFDISABLED) != 0)){ ia6->ia6_flags &= ~IN6_IFF_DUPLICATED; ia6->ia6_flags |= IN6_IFF_TENTATIVE; } + /* * A new RA might have made a deprecated address * preferred. From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:04 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 21D8BDC1D9 for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw2JSWz4P5V; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 4012019F86; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 03754C7AE; Mon, 1 Apr 2019 13:48:14 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 69FDE6FDA2; Mon, 1 Apr 2019 13:48:13 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1C82DC767; Mon, 1 Apr 2019 13:48:13 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 8E6FDC763; Mon, 1 Apr 2019 13:48:10 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 32E8A6FD9B; Mon, 1 Apr 2019 13:48:09 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (localhost [127.0.0.1]) by gndrsh.dnsmgr.net (8.13.3/8.13.3) with ESMTP id x31Dm8t2015298; Mon, 1 Apr 2019 06:48:08 -0700 (PDT) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: (from freebsd@localhost) by gndrsh.dnsmgr.net (8.13.3/8.13.3/Submit) id x31Dm86D015297; Mon, 1 Apr 2019 06:48:08 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201904011348.x31Dm86D015297@gndrsh.dnsmgr.net> Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl In-Reply-To: <78dda390-9357-2d5a-1737-7efd6901658a@yandex.ru> To: "Andrey V. Elsukov" CC: rgrimes@freebsd.org, Mateusz Guzik , Kristof Provost , src-committers@freebsd.org, svn-src-projects@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 69FDE6FDA2 X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.97 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.97)[-0.975,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:04 -0000 X-Original-Date: Mon, 1 Apr 2019 06:48:08 -0700 (PDT) X-List-Received-Date: Tue, 03 Sep 2019 14:06:04 -0000 [ Charset UTF-8 unsupported, converting... ] > On 01.04.2019 16:30, Rodney W. Grimes wrote: > >> I think a reasonable course of action would be to maintain a portable pf > >> port as a join effort with NetBSD. To that end you can start with > >> replacing FreeBSD network stack with theirs to increase compatibility. > >> > >> After that it's all smooth sailing. > > > > If there is desire to create/maintain a *BSD pf port within > > the communtiy I would love to see that team formed. I have > > direct feedback from some community that would like to see > > FreeBSD update its pf code, is there some people who would like > > to take this work on? > > It seems it is too late: > https://marc.info/?l=openbsd-tech&m=155409489427092&w=2 I am wondering on the above as it has a date of: Date: 2019-04-01 5:01:03 which would be in line with Kristof's joke. > http://mail-index.netbsd.org/tech-kern/2019/03/29/msg024883.html This is inline with what is being proposed here, NetBSD has old rotted code that needs updated. Rather than do that work twice, do it 1.5 times (implementing the same technology in 2 OS's should be less work than doing it twice.) I believe there is grant money avaliable from a non Foundation source that could be used to do this work. > -- > WBR, Andrey V. Elsukov -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:59 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 23E81DC113 for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yt5849z4P3K; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 917AC19EBA; Tue, 3 Sep 2019 14:05:52 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 8892A1AF72; Sat, 30 Mar 2019 01:57:05 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 302C18E48F; Sat, 30 Mar 2019 01:57:05 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1A2A01AF71; Sat, 30 Mar 2019 01:57:05 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id D78081AF6F for ; Sat, 30 Mar 2019 01:57:02 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 907598E48E; Sat, 30 Mar 2019 01:57:02 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 68C797C7C; Sat, 30 Mar 2019 01:57:02 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2U1v2ia019640; Sat, 30 Mar 2019 01:57:02 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2U1usnS019593; Sat, 30 Mar 2019 01:56:54 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903300156.x2U1usnS019593@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345725 - in projects/capsicum-test: sys/amd64/acpica sys/arm/allwinner/clkng sys/arm64/acpica sys/contrib/dev/acpica sys/contrib/dev/acpica/common sys/contrib/dev/acpica/compiler sys/c... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/capsicum-test: sys/amd64/acpica sys/arm/allwinner/clkng sys/arm64/acpica sys/contrib/dev/acpica sys/contrib/dev/acpica/common sys/contrib/dev/acpica/compiler sys/contrib/dev/acpica/compone... X-SVN-Commit-Revision: 345725 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 302C18E48F X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.95)[-0.949,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:59 -0000 X-Original-Date: Sat, 30 Mar 2019 01:56:54 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:59 -0000 Author: ngie Date: Sat Mar 30 01:56:53 2019 New Revision: 345725 URL: https://svnweb.freebsd.org/changeset/base/345725 Log: MFhead@r345724 Modified: projects/capsicum-test/sys/amd64/acpica/acpi_machdep.c projects/capsicum-test/sys/arm/allwinner/clkng/aw_clk_nm.c projects/capsicum-test/sys/arm64/acpica/acpi_machdep.c projects/capsicum-test/sys/contrib/dev/acpica/changes.txt projects/capsicum-test/sys/contrib/dev/acpica/common/acfileio.c projects/capsicum-test/sys/contrib/dev/acpica/common/adisasm.c projects/capsicum-test/sys/contrib/dev/acpica/common/adwalk.c projects/capsicum-test/sys/contrib/dev/acpica/common/ahpredef.c projects/capsicum-test/sys/contrib/dev/acpica/common/ahtable.c projects/capsicum-test/sys/contrib/dev/acpica/common/dmrestag.c projects/capsicum-test/sys/contrib/dev/acpica/common/dmtable.c projects/capsicum-test/sys/contrib/dev/acpica/common/dmtables.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslcodegen.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/capsicum-test/sys/contrib/dev/acpica/compiler/asldefine.h projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslerror.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslload.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslmessages.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslmethod.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/asloffset.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/asloperands.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslopt.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslpredef.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/asltransform.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslutils.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslxref.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/dtcompile.c projects/capsicum-test/sys/contrib/dev/acpica/compiler/dttemplate.c projects/capsicum-test/sys/contrib/dev/acpica/components/debugger/dbexec.c projects/capsicum-test/sys/contrib/dev/acpica/components/debugger/dbnames.c projects/capsicum-test/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c projects/capsicum-test/sys/contrib/dev/acpica/components/disassembler/dmnames.c projects/capsicum-test/sys/contrib/dev/acpica/components/dispatcher/dsfield.c projects/capsicum-test/sys/contrib/dev/acpica/components/dispatcher/dsinit.c projects/capsicum-test/sys/contrib/dev/acpica/components/events/evgpeinit.c projects/capsicum-test/sys/contrib/dev/acpica/components/executer/exnames.c projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsaccess.c projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsdump.c projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsinit.c projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsnames.c projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsobject.c projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsparse.c projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsrepair.c projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsrepair2.c projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsutils.c projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsxfname.c projects/capsicum-test/sys/contrib/dev/acpica/components/parser/psargs.c projects/capsicum-test/sys/contrib/dev/acpica/components/resources/rsxface.c projects/capsicum-test/sys/contrib/dev/acpica/components/tables/tbdata.c projects/capsicum-test/sys/contrib/dev/acpica/components/tables/tbfind.c projects/capsicum-test/sys/contrib/dev/acpica/components/tables/tbinstal.c projects/capsicum-test/sys/contrib/dev/acpica/components/tables/tbprint.c projects/capsicum-test/sys/contrib/dev/acpica/components/tables/tbutils.c projects/capsicum-test/sys/contrib/dev/acpica/components/tables/tbxface.c projects/capsicum-test/sys/contrib/dev/acpica/components/tables/tbxfload.c projects/capsicum-test/sys/contrib/dev/acpica/components/utilities/utascii.c projects/capsicum-test/sys/contrib/dev/acpica/components/utilities/utdecode.c projects/capsicum-test/sys/contrib/dev/acpica/components/utilities/utmisc.c projects/capsicum-test/sys/contrib/dev/acpica/components/utilities/utpredef.c projects/capsicum-test/sys/contrib/dev/acpica/components/utilities/utstring.c projects/capsicum-test/sys/contrib/dev/acpica/include/aclocal.h projects/capsicum-test/sys/contrib/dev/acpica/include/acpixf.h projects/capsicum-test/sys/contrib/dev/acpica/include/actbl.h projects/capsicum-test/sys/contrib/dev/acpica/include/actypes.h projects/capsicum-test/sys/dev/acpica/Osd/OsdTable.c projects/capsicum-test/sys/dev/acpica/acpi_quirk.c projects/capsicum-test/sys/i386/acpica/acpi_machdep.c projects/capsicum-test/sys/netinet/in_pcb.c projects/capsicum-test/sys/netinet/tcp_var.h projects/capsicum-test/usr.sbin/acpi/acpidump/acpi.c Directory Properties: projects/capsicum-test/ (props changed) projects/capsicum-test/sys/contrib/dev/acpica/ (props changed) Modified: projects/capsicum-test/sys/amd64/acpica/acpi_machdep.c ============================================================================== --- projects/capsicum-test/sys/amd64/acpica/acpi_machdep.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/amd64/acpica/acpi_machdep.c Sat Mar 30 01:56:53 2019 (r345725) @@ -164,7 +164,7 @@ map_table(vm_paddr_t pa, int offset, const char *sig) void *table; header = table_map(pa, offset, sizeof(ACPI_TABLE_HEADER)); - if (strncmp(header->Signature, sig, ACPI_NAME_SIZE) != 0) { + if (strncmp(header->Signature, sig, ACPI_NAMESEG_SIZE) != 0) { table_unmap(header, sizeof(ACPI_TABLE_HEADER)); return (NULL); } @@ -202,7 +202,7 @@ probe_table(vm_paddr_t address, const char *sig) printf("Table '%.4s' at 0x%jx\n", table->Signature, (uintmax_t)address); - if (strncmp(table->Signature, sig, ACPI_NAME_SIZE) != 0) { + if (strncmp(table->Signature, sig, ACPI_NAMESEG_SIZE) != 0) { table_unmap(table, sizeof(ACPI_TABLE_HEADER)); return (0); } Modified: projects/capsicum-test/sys/arm/allwinner/clkng/aw_clk_nm.c ============================================================================== --- projects/capsicum-test/sys/arm/allwinner/clkng/aw_clk_nm.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/arm/allwinner/clkng/aw_clk_nm.c Sat Mar 30 01:56:53 2019 (r345725) @@ -155,7 +155,7 @@ aw_clk_nm_find_best(struct aw_clk_nm_sc *sc, uint64_t for (m = min_m; m <= max_m; ) { for (n = min_m; n <= max_n; ) { cur = fparent / n / m; - if ((*fout - cur) < (*fout - best)) { + if (abs(*fout - cur) < abs(*fout - best)) { best = cur; *factor_n = n; *factor_m = m; Modified: projects/capsicum-test/sys/arm64/acpica/acpi_machdep.c ============================================================================== --- projects/capsicum-test/sys/arm64/acpica/acpi_machdep.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/arm64/acpica/acpi_machdep.c Sat Mar 30 01:56:53 2019 (r345725) @@ -70,7 +70,7 @@ map_table(vm_paddr_t pa, int offset, const char *sig) void *table; header = pmap_mapbios(pa, sizeof(ACPI_TABLE_HEADER)); - if (strncmp(header->Signature, sig, ACPI_NAME_SIZE) != 0) { + if (strncmp(header->Signature, sig, ACPI_NAMESEG_SIZE) != 0) { pmap_unmapbios((vm_offset_t)header, sizeof(ACPI_TABLE_HEADER)); return (NULL); } @@ -109,7 +109,7 @@ probe_table(vm_paddr_t address, const char *sig) printf("Table '%.4s' at 0x%jx\n", table->Signature, (uintmax_t)address); - if (strncmp(table->Signature, sig, ACPI_NAME_SIZE) != 0) { + if (strncmp(table->Signature, sig, ACPI_NAMESEG_SIZE) != 0) { pmap_unmapbios((vm_offset_t)table, sizeof(ACPI_TABLE_HEADER)); return (0); } Modified: projects/capsicum-test/sys/contrib/dev/acpica/changes.txt ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/changes.txt Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/changes.txt Sat Mar 30 01:56:53 2019 (r345725) @@ -1,7 +1,75 @@ ---------------------------------------- -15 February 2019. Summary of changes for version 20190215: +29 March 2019. Summary of changes for version 20190329: -This release is available at https://acpica.org/downloads + +1) ACPICA kernel-resident subsystem: + +Namespace support: Remove the address nodes from global list after method +termination. The global address list contains pointers to namespace nodes +that represent Operation Regions. This change properly removes Operation +Region namespace nodes that are declared dynamically during method +execution. + +Linux: Use a different debug default than ACPICA. There was a divergence +between Linux and the ACPICA codebases. In order to resolve this +divergence, Linux now declares its own debug default in aclinux.h + +Renamed some internal macros to improve code understanding and +maintenance. The macros below all operate on single 4-character ACPI +NameSegs, not generic strings (old -> new): + ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE + ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG + ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG + +Fix for missing comma in array declaration for the AcpiGbl_GenericNotify +table. + +Test suite: Update makefiles, add PCC operation region support + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implemented additional illegal forward reference detection. Now +detect and emit an error upon detection of a forward reference from a +Field to an Operation Region. This will fail at runtime if allowed to +pass the compiler. + +AcpiExec: Add an address list check for dynamic Operation Regions. This +feature performs a sanity test for each node the global address list. +This is done in order to ensure that all dynamic operation regions are +properly removed from the global address list and no dangling pointers +are left behind. + +Disassembler: Improved generation of resource pathnames. This change +improves the code that generates resource descriptor and resource tag +pathnames. The original code used a bunch of str* C library functions +that caused warnings on some compilers. + +iASL: Removed some uses of strncpy and replaced with memmove. The strncpy +function can overwrite buffers if the calling code is not very careful. +In the case of generating a module/table header, use of memmove is a +better implementation. + + +3) Status of new features that have not been completed at this time: + +iASL: Implementing an enhanced multiple file compilation into a single +namespace feature (Status): This feature will be released soon, and +allows multiple ASL files to be compiled into the same single namespace. +By doing so, any unresolved external declarations as well as duplicate +named object declarations can be detected during compilation (rather than +later during runtime). The following commands are examples that utilize +this feature: + iasl dsdt.asl ssdt.asl + iasl dsdt.asl ssdt1.asl ssdt2.asl + iasl dsdt.asl ssdt*.asl + +ASL tutorial status: Feedback is being gathered internally and the +current plan is to publish this tutorial on the ACPICA website after a +final review by a tech writer. + +---------------------------------------- +15 February 2019. Summary of changes for version 20190215: 0) Support for ACPI specification version 6.3: Modified: projects/capsicum-test/sys/contrib/dev/acpica/common/acfileio.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/common/acfileio.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/common/acfileio.c Sat Mar 30 01:56:53 2019 (r345725) @@ -585,7 +585,7 @@ AcValidateTableHeader ( * These fields must be ASCII: OemId, OemTableId, AslCompilerId. * We allow a NULL terminator in OemId and OemTableId. */ - for (i = 0; i < ACPI_NAME_SIZE; i++) + for (i = 0; i < ACPI_NAMESEG_SIZE; i++) { if (!ACPI_IS_ASCII ((UINT8) TableHeader.AslCompilerId[i])) { Modified: projects/capsicum-test/sys/contrib/dev/acpica/common/adisasm.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/common/adisasm.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/common/adisasm.c Sat Mar 30 01:56:53 2019 (r345725) @@ -459,7 +459,7 @@ AdDisassembleOneTable ( */ if (AcpiGbl_CaptureComments) { - strncpy (Table->Signature, AcpiGbl_TableSig, ACPI_NAME_SIZE); + strncpy (Table->Signature, AcpiGbl_TableSig, ACPI_NAMESEG_SIZE); } #endif Modified: projects/capsicum-test/sys/contrib/dev/acpica/common/adwalk.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/common/adwalk.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/common/adwalk.c Sat Mar 30 01:56:53 2019 (r345725) @@ -814,7 +814,7 @@ AcpiDmLoadDescendingOp ( while (AcpiGbl_PreDefinedNames[PreDefineIndex].Name) { - if (ACPI_COMPARE_NAME (Node->Name.Ascii, + if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, AcpiGbl_PreDefinedNames[PreDefineIndex].Name)) { PreDefined = TRUE; Modified: projects/capsicum-test/sys/contrib/dev/acpica/common/ahpredef.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/common/ahpredef.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/common/ahpredef.c Sat Mar 30 01:56:53 2019 (r345725) @@ -490,7 +490,7 @@ AcpiAhMatchPredefinedName ( for (Info = AslPredefinedInfo; Info->Name; Info++) { - if (ACPI_COMPARE_NAME (Nameseg, Info->Name)) + if (ACPI_COMPARE_NAMESEG (Nameseg, Info->Name)) { return (Info); } Modified: projects/capsicum-test/sys/contrib/dev/acpica/common/ahtable.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/common/ahtable.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/common/ahtable.c Sat Mar 30 01:56:53 2019 (r345725) @@ -183,7 +183,7 @@ AcpiAhGetTableInfo ( for (Info = AcpiGbl_SupportedTables; Info->Signature; Info++) { - if (ACPI_COMPARE_NAME (Signature, Info->Signature)) + if (ACPI_COMPARE_NAMESEG (Signature, Info->Signature)) { return (Info); } Modified: projects/capsicum-test/sys/contrib/dev/acpica/common/dmrestag.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/common/dmrestag.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/common/dmrestag.c Sat Mar 30 01:56:53 2019 (r345725) @@ -747,6 +747,7 @@ AcpiGetTagPathname ( UINT8 ResourceTableIndex; ACPI_SIZE RequiredSize; char *Pathname; + char *PathnameEnd; AML_RESOURCE *Aml; ACPI_PARSE_OBJECT *Op; char *InternalPath; @@ -809,20 +810,27 @@ AcpiGetTagPathname ( RequiredSize, FALSE); /* - * Create the full path to the resource and tag by: remove the buffer name, - * append the resource descriptor name, append a dot, append the tag name. + * Create the full path to the resource and tag by: + * 1) Remove the buffer nameseg from the end of the pathname + * 2) Append the resource descriptor nameseg + * 3) Append a dot + * 4) Append the field tag nameseg * - * TBD: Always using the full path is a bit brute force, the path can be + * Always using the full path is a bit brute force, the path can be * often be optimized with carats (if the original buffer namepath is a * single nameseg). This doesn't really matter, because these paths do not * end up in the final compiled AML, it's just an appearance issue for the * disassembled code. */ - Pathname[strlen (Pathname) - ACPI_NAME_SIZE] = 0; - strncat (Pathname, ResourceNode->Name.Ascii, ACPI_NAME_SIZE); - strcat (Pathname, "."); - strncat (Pathname, Tag, ACPI_NAME_SIZE); + PathnameEnd = Pathname + (RequiredSize - ACPI_NAMESEG_SIZE - 1); + ACPI_COPY_NAMESEG (PathnameEnd, ResourceNode->Name.Ascii); + PathnameEnd += ACPI_NAMESEG_SIZE; + *PathnameEnd = '.'; + + PathnameEnd++; + ACPI_COPY_NAMESEG (PathnameEnd, Tag); + /* Internalize the namepath to AML format */ AcpiNsInternalizeName (Pathname, &InternalPath); @@ -863,7 +871,7 @@ static void AcpiDmUpdateResourceName ( ACPI_NAMESPACE_NODE *ResourceNode) { - char Name[ACPI_NAME_SIZE]; + char Name[ACPI_NAMESEG_SIZE]; /* Ignore if a unique name has already been assigned */ Modified: projects/capsicum-test/sys/contrib/dev/acpica/common/dmtable.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/common/dmtable.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/common/dmtable.c Sat Mar 30 01:56:53 2019 (r345725) @@ -602,7 +602,7 @@ AcpiDmGetTableData ( for (Info = AcpiDmTableData; Info->Signature; Info++) { - if (ACPI_COMPARE_NAME (Signature, Info->Signature)) + if (ACPI_COMPARE_NAMESEG (Signature, Info->Signature)) { return (Info); } @@ -657,7 +657,7 @@ AcpiDmDumpDataTable ( * Handle tables that don't use the common ACPI table header structure. * Currently, these are the FACS, RSDP, and S3PT. */ - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS)) + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS)) { Length = Table->Length; Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs); @@ -670,7 +670,7 @@ AcpiDmDumpDataTable ( { Length = AcpiDmDumpRsdp (Table); } - else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT)) + else if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT)) { Length = AcpiDmDumpS3pt (Table); } Modified: projects/capsicum-test/sys/contrib/dev/acpica/common/dmtables.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/common/dmtables.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/common/dmtables.c Sat Mar 30 01:56:53 2019 (r345725) @@ -281,7 +281,7 @@ AdCreateTableHeader ( /* Revision of DSDT controls the ACPI integer width */ - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT)) { AcpiOsPrintf (" **** 32-bit table (V1), no 64-bit math support"); } Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslanalyze.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslanalyze.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslanalyze.c Sat Mar 30 01:56:53 2019 (r345725) @@ -563,14 +563,14 @@ ApCheckForGpeNameConflict ( { ACPI_PARSE_OBJECT *NextOp; UINT32 GpeNumber; - char Name[ACPI_NAME_SIZE + 1]; - char Target[ACPI_NAME_SIZE]; + char Name[ACPI_NAMESEG_SIZE + 1]; + char Target[ACPI_NAMESEG_SIZE]; /* Need a null-terminated string version of NameSeg */ ACPI_MOVE_32_TO_32 (Name, &Op->Asl.NameSeg); - Name[ACPI_NAME_SIZE] = 0; + Name[ACPI_NAMESEG_SIZE] = 0; /* * For a GPE method: @@ -622,7 +622,7 @@ ApCheckForGpeNameConflict ( if ((NextOp->Asl.ParseOpcode == PARSEOP_METHOD) || (NextOp->Asl.ParseOpcode == PARSEOP_NAME)) { - if (ACPI_COMPARE_NAME (Target, NextOp->Asl.NameSeg)) + if (ACPI_COMPARE_NAMESEG (Target, NextOp->Asl.NameSeg)) { /* Found both _Exy and _Lxy in the same scope, error */ @@ -666,7 +666,7 @@ ApCheckRegMethod ( /* We are only interested in _REG methods */ - if (!ACPI_COMPARE_NAME (METHOD_NAME__REG, &Op->Asl.NameSeg)) + if (!ACPI_COMPARE_NAMESEG (METHOD_NAME__REG, &Op->Asl.NameSeg)) { return; } @@ -772,7 +772,7 @@ ApDeviceSubtreeWalk ( /* These are what we are looking for */ - if (ACPI_COMPARE_NAME (Name, Op->Asl.NameSeg)) + if (ACPI_COMPARE_NAMESEG (Name, Op->Asl.NameSeg)) { return (AE_CTRL_TRUE); } @@ -831,7 +831,7 @@ ApFindNameInScope ( if ((Next->Asl.ParseOpcode == PARSEOP_METHOD) || (Next->Asl.ParseOpcode == PARSEOP_NAME)) { - if (ACPI_COMPARE_NAME (Name, Next->Asl.NameSeg)) + if (ACPI_COMPARE_NAMESEG (Name, Next->Asl.NameSeg)) { return (TRUE); } Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslcodegen.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslcodegen.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslcodegen.c Sat Mar 30 01:56:53 2019 (r345725) @@ -523,6 +523,8 @@ CgWriteAmlOpcode ( * * DESCRIPTION: Write a table header corresponding to the DEFINITIONBLOCK * + * NOTE: Input strings should be validated before this function is invoked. + * ******************************************************************************/ static void @@ -534,6 +536,8 @@ CgWriteTableHeader ( ACPI_COMMENT_NODE *Current; + memset (&AslGbl_TableHeader, 0, sizeof (ACPI_TABLE_HEADER)); + /* AML filename */ Child = Op->Asl.Child; @@ -552,11 +556,11 @@ CgWriteTableHeader ( */ if (AcpiGbl_CaptureComments) { - strncpy(AcpiGbl_TableSig, Child->Asl.Value.String, ACPI_NAME_SIZE); + ACPI_COPY_NAMESEG (AcpiGbl_TableSig, Child->Asl.Value.String); Child->Asl.Value.String = ACPI_SIG_XXXX; } - strncpy (AslGbl_TableHeader.Signature, Child->Asl.Value.String, ACPI_NAME_SIZE); + ACPI_COPY_NAMESEG (AslGbl_TableHeader.Signature, Child->Asl.Value.String); /* Revision */ @@ -573,12 +577,14 @@ CgWriteTableHeader ( /* OEMID */ Child = Child->Asl.Next; - strncpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String, ACPI_OEM_ID_SIZE); + memcpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String, + strlen (Child->Asl.Value.String)); /* OEM TableID */ Child = Child->Asl.Next; - strncpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String, ACPI_OEM_TABLE_ID_SIZE); + memcpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String, + strlen (Child->Asl.Value.String)); /* OEM Revision */ @@ -587,7 +593,7 @@ CgWriteTableHeader ( /* Compiler ID */ - ACPI_MOVE_NAME (AslGbl_TableHeader.AslCompilerId, ASL_CREATOR_ID); + ACPI_COPY_NAMESEG (AslGbl_TableHeader.AslCompilerId, ASL_CREATOR_ID); /* Compiler version */ Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslcompiler.l ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslcompiler.l Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslcompiler.l Sat Mar 30 01:56:53 2019 (r345725) @@ -813,7 +813,7 @@ NamePathTail [.]{NameSeg} {NameSeg} { char *s; count (0); - s=UtLocalCacheCalloc (ACPI_NAME_SIZE + 1); + s=UtLocalCacheCalloc (ACPI_NAMESEG_SIZE + 1); if (strcmp (AslCompilertext, "\\")) { /* Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/asldefine.h ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/asldefine.h Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/asldefine.h Sat Mar 30 01:56:53 2019 (r345725) @@ -162,7 +162,7 @@ #define ASL_CREATOR_ID "INTL" #define ASL_DEFINE "__IASL__" #define ASL_PREFIX "iASL: " -#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.2A" +#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.3" /* Configuration constants */ Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslerror.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslerror.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslerror.c Sat Mar 30 01:56:53 2019 (r345725) @@ -1239,7 +1239,7 @@ AslElevateException ( return (AE_LIMIT); } - AslGbl_ElevatedMessages[AslGbl_ExpectedMessagesIndex] = MessageId; + AslGbl_ElevatedMessages[AslGbl_ElevatedMessagesIndex] = MessageId; AslGbl_ElevatedMessagesIndex++; return (AE_OK); } Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslload.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslload.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslload.c Sat Mar 30 01:56:53 2019 (r345725) @@ -492,7 +492,7 @@ LdNamespace1Begin ( case AML_FIELD_OP: Status = LdLoadFieldElements (Op, WalkState); - return (Status); + break; case AML_INT_CONNECTION_OP: @@ -556,7 +556,8 @@ LdNamespace1Begin ( * We only want references to named objects: * Store (2, WXYZ) -> Attempt to resolve the name */ - if (OpInfo->Class == AML_CLASS_NAMED_OBJECT) + if ((OpInfo->Class == AML_CLASS_NAMED_OBJECT) && + (OpInfo->Type != AML_TYPE_NAMED_FIELD)) { return (AE_OK); } @@ -702,7 +703,7 @@ LdNamespace1Begin ( /* However, this is an error -- operand to Scope must exist */ - if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE) + if (strlen (Op->Asl.ExternalName) == ACPI_NAMESEG_SIZE) { AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, Op->Asl.ExternalName); @@ -731,7 +732,7 @@ LdNamespace1Begin ( * 10/2015. */ if ((Node->Flags & ANOBJ_IS_EXTERNAL) && - (ACPI_COMPARE_NAME (AslGbl_TableSignature, "DSDT"))) + (ACPI_COMPARE_NAMESEG (AslGbl_TableSignature, "DSDT"))) { /* However, allowed if the reference is within a method */ @@ -1095,7 +1096,7 @@ LdNamespace2Begin ( { /* Standalone NameSeg vs. NamePath */ - if (strlen (Arg->Asl.ExternalName) == ACPI_NAME_SIZE) + if (strlen (Arg->Asl.ExternalName) == ACPI_NAMESEG_SIZE) { AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, Arg->Asl.ExternalName); Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslmessages.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslmessages.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslmessages.c Sat Mar 30 01:56:53 2019 (r345725) @@ -342,7 +342,7 @@ const char *AslCompilerMsgs [] = /* ASL_MSG_RANGE */ "Constant out of range", /* ASL_MSG_BUFFER_ALLOCATION */ "Could not allocate line buffer", /* ASL_MSG_MISSING_DEPENDENCY */ "Missing dependency", -/* ASL_MSG_ILLEGAL_FORWARD_REF */ "Illegal forward reference", +/* ASL_MSG_ILLEGAL_FORWARD_REF */ "Forward references are not supported by the ASL language", /* ASL_MSG_ILLEGAL_METHOD_REF */ "Object is declared in a different method", /* ASL_MSG_LOCAL_NOT_USED */ "Method Local is set but never used", /* ASL_MSG_ARG_AS_LOCAL_NOT_USED */ "Method Argument (as a local) is set but never used", Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslmethod.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslmethod.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslmethod.c Sat Mar 30 01:56:53 2019 (r345725) @@ -228,7 +228,7 @@ MtMethodAnalysisWalkBegin ( * 1) _PS0 - One of these must exist: _PS1, _PS2, _PS3 * 2) _PS1/_PS2/_PS3: A _PS0 must exist */ - if (ACPI_COMPARE_NAME (METHOD_NAME__PS0, Op->Asl.NameSeg)) + if (ACPI_COMPARE_NAMESEG (METHOD_NAME__PS0, Op->Asl.NameSeg)) { /* For _PS0, one of _PS1/_PS2/_PS3 must exist */ @@ -241,9 +241,9 @@ MtMethodAnalysisWalkBegin ( } } else if ( - ACPI_COMPARE_NAME (METHOD_NAME__PS1, Op->Asl.NameSeg) || - ACPI_COMPARE_NAME (METHOD_NAME__PS2, Op->Asl.NameSeg) || - ACPI_COMPARE_NAME (METHOD_NAME__PS3, Op->Asl.NameSeg)) + ACPI_COMPARE_NAMESEG (METHOD_NAME__PS1, Op->Asl.NameSeg) || + ACPI_COMPARE_NAMESEG (METHOD_NAME__PS2, Op->Asl.NameSeg) || + ACPI_COMPARE_NAMESEG (METHOD_NAME__PS3, Op->Asl.NameSeg)) { /* For _PS1/_PS2/_PS3, a _PS0 must exist */ Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/asloffset.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/asloffset.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/asloffset.c Sat Mar 30 01:56:53 2019 (r345725) @@ -258,7 +258,7 @@ LsAmlOffsetWalk ( /* Get offset of last nameseg and the actual data */ NamepathOffset = AslGbl_CurrentAmlOffset + Length + - (Op->Asl.FinalAmlLength - ACPI_NAME_SIZE); + (Op->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE); DataOffset = AslGbl_CurrentAmlOffset + Length + Op->Asl.FinalAmlLength; @@ -323,7 +323,7 @@ LsAmlOffsetWalk ( /* Get offset of last nameseg and the actual data */ NamepathOffset = AslGbl_CurrentAmlOffset + Length + - (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); + (NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE); DataOffset = AslGbl_CurrentAmlOffset + Length + (NextOp->Asl.FinalAmlLength + 1); @@ -370,7 +370,7 @@ LsAmlOffsetWalk ( /* Get offset of last nameseg and the actual data (flags byte) */ NamepathOffset = AslGbl_CurrentAmlOffset + Length + - (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); + (NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE); DataOffset = AslGbl_CurrentAmlOffset + Length + NextOp->Asl.FinalAmlLength; @@ -394,7 +394,7 @@ LsAmlOffsetWalk ( /* Get offset of last nameseg and the actual data (PBlock address) */ NamepathOffset = AslGbl_CurrentAmlOffset + Length + - (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); + (NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE); DataOffset = AslGbl_CurrentAmlOffset + Length + (NextOp->Asl.FinalAmlLength + 1); @@ -419,7 +419,7 @@ LsAmlOffsetWalk ( /* Get offset of last nameseg */ NamepathOffset = AslGbl_CurrentAmlOffset + Length + - (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); + (NextOp->Asl.FinalAmlLength - ACPI_NAMESEG_SIZE); LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, 0, Op->Asl.ParseOpName, 0, (UINT8) 0, Op->Asl.AmlOpcode); Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/asloperands.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/asloperands.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/asloperands.c Sat Mar 30 01:56:53 2019 (r345725) @@ -1087,13 +1087,13 @@ OpnDoDefinitionBlock ( if (Child->Asl.Value.String) { AslGbl_TableSignature = Child->Asl.Value.String; - if (strlen (AslGbl_TableSignature) != ACPI_NAME_SIZE) + if (strlen (AslGbl_TableSignature) != ACPI_NAMESEG_SIZE) { AslError (ASL_ERROR, ASL_MSG_TABLE_SIGNATURE, Child, "Length must be exactly 4 characters"); } - for (i = 0; i < ACPI_NAME_SIZE; i++) + for (i = 0; i < ACPI_NAMESEG_SIZE; i++) { if (!isalnum ((int) AslGbl_TableSignature[i])) { Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslopt.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslopt.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslopt.c Sat Mar 30 01:56:53 2019 (r345725) @@ -241,7 +241,7 @@ OptSearchToRoot ( * not match, and we cannot use this optimization. */ Path = &(((char *) TargetPath->Pointer)[ - TargetPath->Length - ACPI_NAME_SIZE]); + TargetPath->Length - ACPI_NAMESEG_SIZE]); ScopeInfo.Scope.Node = CurrentNode; /* Lookup the NameSeg using SEARCH_PARENT (search-to-root) */ @@ -275,7 +275,7 @@ OptSearchToRoot ( /* We must allocate a new string for the name (TargetPath gets deleted) */ - *NewPath = UtLocalCacheCalloc (ACPI_NAME_SIZE + 1); + *NewPath = UtLocalCacheCalloc (ACPI_NAMESEG_SIZE + 1); strcpy (*NewPath, Path); if (strncmp (*NewPath, "_T_", 3)) @@ -343,7 +343,7 @@ OptBuildShortestPath ( * can possibly have in common. (To optimize, we have to have at least 1) * * Note: The external NamePath string lengths are always a multiple of 5 - * (ACPI_NAME_SIZE + separator) + * (ACPI_NAMESEG_SIZE + separator) */ MaxCommonSegments = TargetPath->Length / ACPI_PATH_SEGMENT_LENGTH; if (CurrentPath->Length < TargetPath->Length) @@ -363,7 +363,7 @@ OptBuildShortestPath ( Index = (NumCommonSegments * ACPI_PATH_SEGMENT_LENGTH) + 1; - if (!ACPI_COMPARE_NAME ( + if (!ACPI_COMPARE_NAMESEG ( &(ACPI_CAST_PTR (char, TargetPath->Pointer)) [Index], &(ACPI_CAST_PTR (char, CurrentPath->Pointer)) [Index])) { @@ -713,7 +713,7 @@ OptOptimizeNamePath ( * to be any possibility that it can be optimized to a shorter string */ AmlNameStringLength = strlen (AmlNameString); - if (AmlNameStringLength <= ACPI_NAME_SIZE) + if (AmlNameStringLength <= ACPI_NAMESEG_SIZE) { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "NAMESEG %4.4s\n", AmlNameString)); Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslpredef.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslpredef.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslpredef.c Sat Mar 30 01:56:53 2019 (r345725) @@ -578,7 +578,7 @@ ApCheckForPredefinedName ( ThisName = AcpiGbl_PredefinedMethods; for (i = 0; ThisName->Info.Name[0]; i++) { - if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) + if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name)) { /* Return index into predefined array */ return (i); @@ -592,7 +592,7 @@ ApCheckForPredefinedName ( ThisName = AcpiGbl_ResourceNames; while (ThisName->Info.Name[0]) { - if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) + if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name)) { return (ACPI_PREDEFINED_NAME); } @@ -603,7 +603,7 @@ ApCheckForPredefinedName ( ThisName = AcpiGbl_ScopeNames; while (ThisName->Info.Name[0]) { - if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) + if (ACPI_COMPARE_NAMESEG (Name, ThisName->Info.Name)) { return (ACPI_PREDEFINED_NAME); } Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/asltransform.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/asltransform.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/asltransform.c Sat Mar 30 01:56:53 2019 (r345725) @@ -553,7 +553,7 @@ TrDoDefinitionBlock ( * to be at the root of the namespace; Therefore, namepath * optimization can only be performed on the DSDT. */ - if (!ACPI_COMPARE_NAME (Next->Asl.Value.String, ACPI_SIG_DSDT)) + if (!ACPI_COMPARE_NAMESEG (Next->Asl.Value.String, ACPI_SIG_DSDT)) { AslGbl_ReferenceOptimizationFlag = FALSE; } Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslutils.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslutils.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslutils.c Sat Mar 30 01:56:53 2019 (r345725) @@ -752,7 +752,7 @@ UtPadNameWithUnderscores ( UINT32 i; - for (i = 0; (i < ACPI_NAME_SIZE); i++) + for (i = 0; (i < ACPI_NAMESEG_SIZE); i++) { if (*NameSeg) { @@ -823,7 +823,7 @@ UtAttachNameseg ( UtPadNameWithUnderscores (Name, PaddedNameSeg); } - ACPI_MOVE_NAME (Op->Asl.NameSeg, PaddedNameSeg); + ACPI_COPY_NAMESEG (Op->Asl.NameSeg, PaddedNameSeg); } Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslxref.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslxref.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/aslxref.c Sat Mar 30 01:56:53 2019 (r345725) @@ -613,7 +613,8 @@ XfNamespaceLocateBegin ( (Op->Asl.ParseOpcode != PARSEOP_NAMESTRING) && (Op->Asl.ParseOpcode != PARSEOP_NAMESEG) && (Op->Asl.ParseOpcode != PARSEOP_METHODCALL) && - (Op->Asl.ParseOpcode != PARSEOP_EXTERNAL)) + (Op->Asl.ParseOpcode != PARSEOP_EXTERNAL) && + (OpInfo->Type != AML_TYPE_NAMED_FIELD)) { return_ACPI_STATUS (AE_OK); } @@ -637,7 +638,8 @@ XfNamespaceLocateBegin ( if ((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || (Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || (Op->Asl.ParseOpcode == PARSEOP_METHODCALL) || - (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL)) + (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) || + (OpInfo->Type == AML_TYPE_NAMED_FIELD)) { /* * These are name references, do not push the scope stack @@ -674,6 +676,10 @@ XfNamespaceLocateBegin ( Path = NextOp->Asl.Value.String; } + else if (OpInfo->Type == AML_TYPE_NAMED_FIELD) + { + Path = Op->Asl.Child->Asl.Value.String; + } else { Path = Op->Asl.Value.String; @@ -702,7 +708,7 @@ XfNamespaceLocateBegin ( * We didn't find the name reference by path -- we can qualify this * a little better before we print an error message */ - if (strlen (Path) == ACPI_NAME_SIZE) + if (strlen (Path) == ACPI_NAMESEG_SIZE) { /* A simple, one-segment ACPI name */ @@ -764,7 +770,7 @@ XfNamespaceLocateBegin ( * doesn't exist or just can't be reached. However, we * can differentiate between a NameSeg vs. NamePath. */ - if (strlen (Op->Asl.ExternalName) == ACPI_NAME_SIZE) + if (strlen (Op->Asl.ExternalName) == ACPI_NAMESEG_SIZE) { AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, Op->Asl.ExternalName); Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/dtcompile.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/dtcompile.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/dtcompile.c Sat Mar 30 01:56:53 2019 (r345725) @@ -418,7 +418,7 @@ DtCompileDataTable ( * Currently, these are the FACS and RSDP. Also check for an OEMx table, * these tables have user-defined contents. */ - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS)) { Status = DtCompileFacs (FieldList); if (ACPI_FAILURE (Status)) @@ -434,7 +434,7 @@ DtCompileDataTable ( Status = DtCompileRsdp (FieldList); return (Status); } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_S3PT)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_S3PT)) { Status = DtCompileS3pt (FieldList); if (ACPI_FAILURE (Status)) Modified: projects/capsicum-test/sys/contrib/dev/acpica/compiler/dttemplate.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/compiler/dttemplate.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/compiler/dttemplate.c Sat Mar 30 01:56:53 2019 (r345725) @@ -204,11 +204,11 @@ AcpiUtIsSpecialTable ( char *Signature) { - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_OSDT) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT) || - ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS) || - ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_OSDT) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS) || + ACPI_COMPARE_NAMESEG (Signature, ACPI_RSDP_NAME)) { return (TRUE); } @@ -346,7 +346,7 @@ DtCreateOneTemplateFile ( * 2) Signature must be a recognized ACPI table * 3) There must be a template associated with the signature */ - if (strlen (Signature) != ACPI_NAME_SIZE) + if (strlen (Signature) != ACPI_NAMESEG_SIZE) { fprintf (stderr, "%s: Invalid ACPI table signature " @@ -567,7 +567,7 @@ DtCreateOneTemplate ( AcpiOsPrintf (" (AML byte code table)\n"); AcpiOsPrintf (" */\n"); - if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_DSDT)) { Actual = DtEmitDefinitionBlock ( File, DisasmFilename, ACPI_SIG_DSDT, 1); @@ -590,7 +590,7 @@ DtCreateOneTemplate ( } } } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_SSDT)) { Actual = DtEmitDefinitionBlock ( File, DisasmFilename, ACPI_SIG_SSDT, 1); @@ -600,7 +600,7 @@ DtCreateOneTemplate ( goto Cleanup; } } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_OSDT)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_OSDT)) { Actual = DtEmitDefinitionBlock ( File, DisasmFilename, ACPI_SIG_OSDT, 1); @@ -610,12 +610,12 @@ DtCreateOneTemplate ( goto Cleanup; } } - else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_SIG_FACS)) { AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER, TemplateFacs)); } - else if (ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME)) + else if (ACPI_COMPARE_NAMESEG (Signature, ACPI_RSDP_NAME)) { AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER, TemplateRsdp)); Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/debugger/dbexec.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/debugger/dbexec.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/debugger/dbexec.c Sat Mar 30 01:56:53 2019 (r345725) @@ -658,7 +658,7 @@ AcpiDbExecute ( /* Dump a _PLD buffer if present */ - if (ACPI_COMPARE_NAME ((ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, + if (ACPI_COMPARE_NAMESEG ((ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, AcpiGbl_DbMethodInfo.Method)->Name.Ascii), METHOD_NAME__PLD)) { Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/debugger/dbnames.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/debugger/dbnames.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/debugger/dbnames.c Sat Mar 30 01:56:53 2019 (r345725) @@ -557,7 +557,7 @@ AcpiDbFindNameInNamespace ( char *AcpiNamePtr = AcpiName; - if (strlen (NameArg) > ACPI_NAME_SIZE) + if (strlen (NameArg) > ACPI_NAMESEG_SIZE) { AcpiOsPrintf ("Name must be no longer than 4 characters\n"); return (AE_OK); Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c Sat Mar 30 01:56:53 2019 (r345725) @@ -736,7 +736,7 @@ AcpiDmIsPldBuffer ( { Node = ParentOp->Common.Node; - if (ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__PLD)) + if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, METHOD_NAME__PLD)) { /* Ignore the Size argument in the disassembly of this buffer op */ @@ -770,7 +770,7 @@ AcpiDmIsPldBuffer ( { Node = ParentOp->Common.Node; - if (ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__PLD)) + if (ACPI_COMPARE_NAMESEG (Node->Name.Ascii, METHOD_NAME__PLD)) { /* Ignore the Size argument in the disassembly of this buffer op */ @@ -1100,7 +1100,7 @@ AcpiDmCheckForHardwareId ( /* Check for _HID - has one argument */ - if (ACPI_COMPARE_NAME (&Name, METHOD_NAME__HID)) + if (ACPI_COMPARE_NAMESEG (&Name, METHOD_NAME__HID)) { AcpiDmGetHardwareIdType (NextOp); return; @@ -1108,7 +1108,7 @@ AcpiDmCheckForHardwareId ( /* Exit if not _CID */ - if (!ACPI_COMPARE_NAME (&Name, METHOD_NAME__CID)) + if (!ACPI_COMPARE_NAMESEG (&Name, METHOD_NAME__CID)) { return; } Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/disassembler/dmnames.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/disassembler/dmnames.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/disassembler/dmnames.c Sat Mar 30 01:56:53 2019 (r345725) @@ -199,8 +199,8 @@ AcpiDmDumpName ( /* Remove all trailing underscores from the name */ - Length = ACPI_NAME_SIZE; - for (i = (ACPI_NAME_SIZE - 1); i != 0; i--) + Length = ACPI_NAMESEG_SIZE; + for (i = (ACPI_NAMESEG_SIZE - 1); i != 0; i--) { if (NewName[i] == '_') { @@ -378,7 +378,7 @@ AcpiDmNamestring ( AcpiOsPrintf ("."); } - Name += ACPI_NAME_SIZE; + Name += ACPI_NAMESEG_SIZE; } } Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/dispatcher/dsfield.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/dispatcher/dsfield.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/dispatcher/dsfield.c Sat Mar 30 01:56:53 2019 (r345725) @@ -685,7 +685,7 @@ AcpiDsCreateField ( Info.RegionNode = RegionNode; Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next); - if (Info.RegionNode->Type == ACPI_ADR_SPACE_PLATFORM_COMM && + if (Info.RegionNode->Object->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM && !(RegionNode->Object->Field.InternalPccBuffer = ACPI_ALLOCATE_ZEROED(Info.RegionNode->Object->Region.Length))) { Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/dispatcher/dsinit.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/dispatcher/dsinit.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/dispatcher/dsinit.c Sat Mar 30 01:56:53 2019 (r345725) @@ -359,7 +359,7 @@ AcpiDsInitializeObjects ( /* DSDT is always the first AML table */ - if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_DSDT)) { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "\nInitializing Namespace objects:\n")); Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/events/evgpeinit.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/events/evgpeinit.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/events/evgpeinit.c Sat Mar 30 01:56:53 2019 (r345725) @@ -447,7 +447,7 @@ AcpiEvMatchGpeMethod ( ACPI_STATUS Status; UINT32 GpeNumber; UINT8 TempGpeNumber; - char Name[ACPI_NAME_SIZE + 1]; + char Name[ACPI_NAMESEG_SIZE + 1]; UINT8 Type; @@ -468,7 +468,7 @@ AcpiEvMatchGpeMethod ( * 1) Extract the method name and null terminate it */ ACPI_MOVE_32_TO_32 (Name, &MethodNode->Name.Integer); - Name[ACPI_NAME_SIZE] = 0; + Name[ACPI_NAMESEG_SIZE] = 0; /* 2) Name must begin with an underscore */ Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/executer/exnames.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/executer/exnames.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/executer/exnames.c Sat Mar 30 01:56:53 2019 (r345725) @@ -207,11 +207,11 @@ AcpiExAllocateNameString ( { /* Special case for root */ - SizeNeeded = 1 + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1; + SizeNeeded = 1 + (ACPI_NAMESEG_SIZE * NumNameSegs) + 2 + 1; } else { - SizeNeeded = PrefixCount + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1; + SizeNeeded = PrefixCount + (ACPI_NAMESEG_SIZE * NumNameSegs) + 2 + 1; } /* @@ -310,7 +310,7 @@ AcpiExNameSegment ( } for (Index = 0; - (Index < ACPI_NAME_SIZE) && (AcpiUtValidNameChar (*AmlAddress, 0)); + (Index < ACPI_NAMESEG_SIZE) && (AcpiUtValidNameChar (*AmlAddress, 0)); Index++) { CharBuf[Index] = *AmlAddress++; Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsaccess.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsaccess.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsaccess.c Sat Mar 30 01:56:53 2019 (r345725) @@ -851,7 +851,7 @@ AcpiNsLookup ( /* Point to next name segment and make this node current */ - Path += ACPI_NAME_SIZE; + Path += ACPI_NAMESEG_SIZE; CurrentNode = ThisNode; } Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsdump.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsdump.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsdump.c Sat Mar 30 01:56:53 2019 (r345725) @@ -236,7 +236,7 @@ AcpiNsPrintPathname ( AcpiOsPrintf ("?"); } - Pathname += ACPI_NAME_SIZE; + Pathname += ACPI_NAMESEG_SIZE; NumSegments--; if (NumSegments) { Modified: projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsinit.c ============================================================================== --- projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsinit.c Sat Mar 30 01:14:15 2019 (r345724) +++ projects/capsicum-test/sys/contrib/dev/acpica/components/namespace/nsinit.c Sat Mar 30 01:56:53 2019 (r345725) @@ -662,7 +662,7 @@ AcpiNsFindIniMethods ( *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:59 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3183EDC116 for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yt27HTz4P2p; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 62B1F19EA7; Tue, 3 Sep 2019 14:05:52 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6CC2F17CDD; Sat, 30 Mar 2019 00:06:57 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3394488843; Sat, 30 Mar 2019 00:06:57 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1F95617CDC; Sat, 30 Mar 2019 00:06:57 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id AA6E317CDA for ; Sat, 30 Mar 2019 00:06:54 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 7649888841; Sat, 30 Mar 2019 00:06:54 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2440C6694; Sat, 30 Mar 2019 00:06:54 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2U06sVB061153; Sat, 30 Mar 2019 00:06:54 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2U06srL061152; Sat, 30 Mar 2019 00:06:54 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903300006.x2U06srL061152@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345718 - projects/capsicum-test/tests/sys/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/tests/sys/capsicum-test X-SVN-Commit-Revision: 345718 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3394488843 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.973,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:59 -0000 X-Original-Date: Sat, 30 Mar 2019 00:06:54 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:59 -0000 Author: ngie Date: Sat Mar 30 00:06:53 2019 New Revision: 345718 URL: https://svnweb.freebsd.org/changeset/base/345718 Log: Reap unused `SRCS.smoketest` definition It wasn't being compiled, so there's no point in having it there (even though upstream uses it), given that it's a subset of `capsicum-test`. Modified: projects/capsicum-test/tests/sys/capsicum-test/Makefile Modified: projects/capsicum-test/tests/sys/capsicum-test/Makefile ============================================================================== --- projects/capsicum-test/tests/sys/capsicum-test/Makefile Fri Mar 29 21:52:10 2019 (r345717) +++ projects/capsicum-test/tests/sys/capsicum-test/Makefile Sat Mar 30 00:06:53 2019 (r345718) @@ -25,9 +25,6 @@ SRCS.capsicum-test+= \ overhead.cc \ rename.cc -SRCS.smoketest+= \ - smoketest.c - LIBADD.capsicum-test+= gtest pthread .for p in mini-me mini-me.noexec mini-me.setuid From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:02 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 513E4DC180 for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv0pj1z4P3k; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 41C8B19F10; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 03DC713A10; Sun, 31 Mar 2019 03:19:15 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4B16B8CA3E; Sun, 31 Mar 2019 03:19:15 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 2053B139D7; Sun, 31 Mar 2019 03:19:15 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 28CFF139C6 for ; Sun, 31 Mar 2019 03:19:12 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D636E8CA2D; Sun, 31 Mar 2019 03:19:11 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AF0F520B96; Sun, 31 Mar 2019 03:19:11 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2V3JBaY038632; Sun, 31 Mar 2019 03:19:11 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2V3JAGH038626; Sun, 31 Mar 2019 03:19:10 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903310319.x2V3JAGH038626@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345742 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 345742 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4B16B8CA3E X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.96)[-0.958,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:02 -0000 X-Original-Date: Sun, 31 Mar 2019 03:19:10 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:02 -0000 Author: asomers Date: Sun Mar 31 03:19:10 2019 New Revision: 345742 URL: https://svnweb.freebsd.org/changeset/base/345742 Log: fusefs: replace the fufh table with a linked list The FUSE protocol allows each open file descriptor to have a unique file handle. On FreeBSD, these file handles must all be stored in the vnode. The old method (also used by OSX and OpenBSD) is to store them all in a small array. But that limits the total number that can be stored. This commit replaces the array with a linked list (a technique also used by Illumos). There is not yet any change in functionality, but this is the first step to fixing several bugs. PR: 236329, 236340, 236381, 236560, 236844 Discussed with: cem Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_file.c projects/fuse2/sys/fs/fuse/fuse_file.h projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_node.c projects/fuse2/sys/fs/fuse/fuse_node.h projects/fuse2/sys/fs/fuse/fuse_vnops.c Modified: projects/fuse2/sys/fs/fuse/fuse_file.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.c Sat Mar 30 23:43:58 2019 (r345741) +++ projects/fuse2/sys/fs/fuse/fuse_file.c Sun Mar 31 03:19:10 2019 (r345742) @@ -82,6 +82,8 @@ __FBSDID("$FreeBSD$"); #include "fuse_ipc.h" #include "fuse_node.h" +MALLOC_DEFINE(M_FUSE_FILEHANDLE, "fuse_filefilehandle", "FUSE file handle"); + SDT_PROVIDER_DECLARE(fuse); /* * Fuse trace probe: @@ -157,16 +159,14 @@ fuse_filehandle_close(struct vnode *vp, fufh_type_t fu { struct fuse_dispatcher fdi; struct fuse_release_in *fri; - struct fuse_vnode_data *fvdat = VTOFUD(vp); struct fuse_filehandle *fufh = NULL; int err = 0; int op = FUSE_RELEASE; - fufh = &(fvdat->fufh[fufh_type]); - if (!FUFH_IS_VALID(fufh)) { - panic("FUSE: filehandle_put called on invalid fufh (type=%d)", - fufh_type); + if (fuse_filehandle_get(vp, fufh_type, &fufh)) { + panic("FUSE: fuse_filehandle_close called on invalid fufh " + "(type=%d)", fufh_type); /* NOTREACHED */ } if (fuse_isdeadfs(vp)) { @@ -185,8 +185,8 @@ fuse_filehandle_close(struct vnode *vp, fufh_type_t fu out: atomic_subtract_acq_int(&fuse_fh_count, 1); - fufh->fh_id = (uint64_t)-1; - fufh->fh_type = FUFH_INVALID; + LIST_REMOVE(fufh, next); + free(fufh, M_FUSE_FILEHANDLE); return err; } @@ -194,31 +194,22 @@ out: int fuse_filehandle_valid(struct vnode *vp, fufh_type_t fufh_type) { - struct fuse_vnode_data *fvdat = VTOFUD(vp); - struct fuse_filehandle *fufh; - - fufh = &(fvdat->fufh[fufh_type]); - return FUFH_IS_VALID(fufh); + return (0 == fuse_filehandle_get(vp, fufh_type, NULL)); } /* * Check for a valid file handle, first the type requested, but if that * isn't valid, try for FUFH_RDWR. * Return the FUFH type that is valid or FUFH_INVALID if there are none. - * This is a variant of fuse_filehandle_vaild() analogous to + * This is a variant of fuse_filehandle_valid() analogous to * fuse_filehandle_getrw(). */ fufh_type_t fuse_filehandle_validrw(struct vnode *vp, fufh_type_t fufh_type) { - struct fuse_vnode_data *fvdat = VTOFUD(vp); - struct fuse_filehandle *fufh; - - fufh = &fvdat->fufh[fufh_type]; - if (FUFH_IS_VALID(fufh) != 0) + if (fuse_filehandle_get(vp, fufh_type, NULL) == 0) return (fufh_type); - fufh = &fvdat->fufh[FUFH_RDWR]; - if (FUFH_IS_VALID(fufh) != 0) + if (fuse_filehandle_get(vp, FUFH_RDWR, NULL) == 0) return (FUFH_RDWR); return (FUFH_INVALID); } @@ -230,8 +221,14 @@ fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh struct fuse_vnode_data *fvdat = VTOFUD(vp); struct fuse_filehandle *fufh; - fufh = &(fvdat->fufh[fufh_type]); - if (!FUFH_IS_VALID(fufh)) + /* TODO: Find a list entry with the same mode, pid, gid, and uid */ + /* Fallback: find a list entry with the right mode */ + LIST_FOREACH(fufh, &fvdat->handles, next) { + if (fufh->mode == fufh_type) + break; + } + + if (fufh == NULL) return EBADF; if (fufhp != NULL) *fufhp = fufh; @@ -242,14 +239,12 @@ int fuse_filehandle_getrw(struct vnode *vp, fufh_type_t fufh_type, struct fuse_filehandle **fufhp) { - struct fuse_vnode_data *fvdat = VTOFUD(vp); - struct fuse_filehandle *fufh; + int err; - fufh = &(fvdat->fufh[fufh_type]); - if (!FUFH_IS_VALID(fufh)) { - fufh_type = FUFH_RDWR; - } - return fuse_filehandle_get(vp, fufh_type, fufhp); + err = fuse_filehandle_get(vp, fufh_type, fufhp); + if (err) + err = fuse_filehandle_get(vp, FUFH_RDWR, fufhp); + return err; } void @@ -259,13 +254,16 @@ fuse_filehandle_init(struct vnode *vp, fufh_type_t fuf struct fuse_vnode_data *fvdat = VTOFUD(vp); struct fuse_filehandle *fufh; - fufh = &(fvdat->fufh[fufh_type]); - MPASS(!FUFH_IS_VALID(fufh)); + fufh = malloc(sizeof(struct fuse_filehandle), M_FUSE_FILEHANDLE, + M_WAITOK); + MPASS(fufh != NULL); fufh->fh_id = fh_id; - fufh->fh_type = fufh_type; + fufh->mode = fufh_type; + /* TODO: initialize fufh credentials and open flags */ if (!FUFH_IS_VALID(fufh)) { panic("FUSE: init: invalid filehandle id (type=%d)", fufh_type); } + LIST_INSERT_HEAD(&fvdat->handles, fufh, next); if (fufhp != NULL) *fufhp = fufh; Modified: projects/fuse2/sys/fs/fuse/fuse_file.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.h Sat Mar 30 23:43:58 2019 (r345741) +++ projects/fuse2/sys/fs/fuse/fuse_file.h Sun Mar 31 03:19:10 2019 (r345742) @@ -78,11 +78,24 @@ _Static_assert(FUFH_WRONLY == O_WRONLY, "WRONLY"); _Static_assert(FUFH_RDWR == O_RDWR, "RDWR"); struct fuse_filehandle { + LIST_ENTRY(fuse_filehandle) next; + + /* The filehandle returned by FUSE_OPEN */ uint64_t fh_id; - fufh_type_t fh_type; + + /* flags returned by FUSE_OPEN */ + uint32_t fuse_open_flags; + + /* The mode used to open(2) the file (using O_RDONLY, not FREAD) */ + uint32_t mode; + + /* Credentials used to open the file */ + gid_t gid; + pid_t pid; + uid_t uid; }; -#define FUFH_IS_VALID(f) ((f)->fh_type != FUFH_INVALID) +#define FUFH_IS_VALID(f) ((f)->mode != FUFH_INVALID) static inline fufh_type_t fuse_filehandle_xlate_from_fflags(int fflags) Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Sat Mar 30 23:43:58 2019 (r345741) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Sun Mar 31 03:19:10 2019 (r345742) @@ -285,7 +285,6 @@ fuse_internal_fsync(struct vnode *vp, struct fuse_fsync_in *ffsi; struct fuse_dispatcher fdi; struct fuse_filehandle *fufh; - struct fuse_vnode_data *fvdat = VTOFUD(vp); int op = FUSE_FSYNC; int type = 0; int err = 0; @@ -295,8 +294,7 @@ fuse_internal_fsync(struct vnode *vp, return 0; } for (type = 0; type < FUFH_MAXTYPE; type++) { - fufh = &(fvdat->fufh[type]); - if (FUFH_IS_VALID(fufh)) { + if (fuse_filehandle_get(vp, type, &fufh) == 0) { if (vnode_isdir(vp)) { op = FUSE_FSYNCDIR; } @@ -454,11 +452,7 @@ fuse_internal_remove(struct vnode *dvp, enum fuse_opcode op) { struct fuse_dispatcher fdi; - struct fuse_vnode_data *fvdat; - int err; - - err = 0; - fvdat = VTOFUD(vp); + int err = 0; fdisp_init(&fdi, cnp->cn_namelen + 1); fdisp_make_vp(&fdi, op, dvp, cnp->cn_thread, cnp->cn_cred); Modified: projects/fuse2/sys/fs/fuse/fuse_node.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.c Sat Mar 30 23:43:58 2019 (r345741) +++ projects/fuse2/sys/fs/fuse/fuse_node.c Sun Mar 31 03:19:10 2019 (r345742) @@ -174,9 +174,8 @@ static void fuse_vnode_init(struct vnode *vp, struct fuse_vnode_data *fvdat, uint64_t nodeid, enum vtype vtyp) { - int i; - fvdat->nid = nodeid; + LIST_INIT(&fvdat->handles); vattr_null(&fvdat->cached_attrs); if (nodeid == FUSE_ROOT_ID) { vp->v_vflag |= VV_ROOT; @@ -184,9 +183,6 @@ fuse_vnode_init(struct vnode *vp, struct fuse_vnode_da vp->v_type = vtyp; vp->v_data = fvdat; - for (i = 0; i < FUFH_MAXTYPE; i++) - fvdat->fufh[i].fh_type = FUFH_INVALID; - atomic_add_acq_int(&fuse_node_count, 1); } @@ -196,6 +192,8 @@ fuse_vnode_destroy(struct vnode *vp) struct fuse_vnode_data *fvdat = vp->v_data; vp->v_data = NULL; + KASSERT(LIST_EMPTY(&fvdat->handles), + ("Destroying fuse vnode with open files!")); free(fvdat, M_FUSEVN); atomic_subtract_acq_int(&fuse_node_count, 1); @@ -314,7 +312,7 @@ void fuse_vnode_open(struct vnode *vp, int32_t fuse_open_flags, struct thread *td) { /* - * Funcation is called for every vnode open. + * Function is called for every vnode open. * Merge fuse_open_flags it may be 0 */ /* Modified: projects/fuse2/sys/fs/fuse/fuse_node.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.h Sat Mar 30 23:43:58 2019 (r345741) +++ projects/fuse2/sys/fs/fuse/fuse_node.h Sun Mar 31 03:19:10 2019 (r345742) @@ -80,7 +80,8 @@ struct fuse_vnode_data { uint64_t parent_nid; /** I/O **/ - struct fuse_filehandle fufh[FUFH_MAXTYPE]; + /* List of file data for each of the vnode's open file descriptors */ + LIST_HEAD(, fuse_filehandle) handles; /** flags **/ uint32_t flag; Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Sat Mar 30 23:43:58 2019 (r345741) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Sun Mar 31 03:19:10 2019 (r345742) @@ -606,8 +606,7 @@ fuse_vnop_inactive(struct vop_inactive_args *ap) int type, need_flush = 1; for (type = 0; type < FUFH_MAXTYPE; type++) { - fufh = &(fvdat->fufh[type]); - if (FUFH_IS_VALID(fufh)) { + if (!fuse_filehandle_get(vp, type, &fufh)) { if (need_flush && vp->v_type == VREG) { if ((VTOFUD(vp)->flag & FN_SIZECHANGE) != 0) { fuse_vnode_savesize(vp, NULL); @@ -1396,7 +1395,6 @@ fuse_vnop_reclaim(struct vop_reclaim_args *ap) struct thread *td = ap->a_td; struct fuse_vnode_data *fvdat = VTOFUD(vp); - struct fuse_filehandle *fufh = NULL; int type; @@ -1404,8 +1402,7 @@ fuse_vnop_reclaim(struct vop_reclaim_args *ap) panic("FUSE: no vnode data during recycling"); } for (type = 0; type < FUFH_MAXTYPE; type++) { - fufh = &(fvdat->fufh[type]); - if (FUFH_IS_VALID(fufh)) { + if (fuse_filehandle_get(vp, type, NULL) == 0) { printf("FUSE: vnode being reclaimed but fufh (type=%d) is valid", type); fuse_filehandle_close(vp, type, td, NULL); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:59 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 42A1CDC124 for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yt1x2gz4P2n; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 69AE519EAC; Tue, 3 Sep 2019 14:05:52 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 7E42B1881A; Sat, 30 Mar 2019 00:35:37 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3455B89CE3; Sat, 30 Mar 2019 00:35:37 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 21EB018819; Sat, 30 Mar 2019 00:35:37 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 1E13118817 for ; Sat, 30 Mar 2019 00:35:34 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B0B5389CE1; Sat, 30 Mar 2019 00:35:33 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 850756BF7; Sat, 30 Mar 2019 00:35:33 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2U0ZXNF077573; Sat, 30 Mar 2019 00:35:33 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2U0ZXQe077571; Sat, 30 Mar 2019 00:35:33 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903300035.x2U0ZXQe077571@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345719 - in projects/capsicum-test: etc/mtree tests/sys tests/sys/capsicum tests/sys/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/capsicum-test: etc/mtree tests/sys tests/sys/capsicum tests/sys/capsicum-test X-SVN-Commit-Revision: 345719 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3455B89CE3 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.93 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.94)[-0.938,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:00 -0000 X-Original-Date: Sat, 30 Mar 2019 00:35:33 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:00 -0000 Author: ngie Date: Sat Mar 30 00:35:32 2019 New Revision: 345719 URL: https://svnweb.freebsd.org/changeset/base/345719 Log: Merge tests/sys/capsicum-test into tests/sys/capsicum One of the stopgap issues with compiling capsicum-test in tests/sys/capsicum was that WARNS.capsicum-test wasn't overriding WARNS, resulting in compilation failures when the two were mixed. Now that D19755 is being fixes, WARNS.capsicum-test is able to properly override WARNS, making it possible for the two to coexist. Deleted: projects/capsicum-test/tests/sys/capsicum-test/ Modified: projects/capsicum-test/etc/mtree/BSD.tests.dist projects/capsicum-test/tests/sys/Makefile projects/capsicum-test/tests/sys/capsicum/Makefile Modified: projects/capsicum-test/etc/mtree/BSD.tests.dist ============================================================================== --- projects/capsicum-test/etc/mtree/BSD.tests.dist Sat Mar 30 00:06:53 2019 (r345718) +++ projects/capsicum-test/etc/mtree/BSD.tests.dist Sat Mar 30 00:35:32 2019 (r345719) @@ -462,8 +462,6 @@ .. capsicum .. - capsicum-test - .. cddl zfs bin Modified: projects/capsicum-test/tests/sys/Makefile ============================================================================== --- projects/capsicum-test/tests/sys/Makefile Sat Mar 30 00:06:53 2019 (r345718) +++ projects/capsicum-test/tests/sys/Makefile Sat Mar 30 00:35:32 2019 (r345719) @@ -9,7 +9,6 @@ TESTS_SUBDIRS+= aio TESTS_SUBDIRS+= ${_audit} TESTS_SUBDIRS+= auditpipe TESTS_SUBDIRS+= capsicum -TESTS_SUBDIRS+= ${_capsicum_test} TESTS_SUBDIRS+= ${_cddl} TESTS_SUBDIRS+= fifo TESTS_SUBDIRS+= file @@ -35,10 +34,6 @@ _audit= audit .if ${MK_CDDL} != "no" _cddl= cddl -.endif - -.if ${MK_GOOGLETEST} != "no" -_capsicum_test= capsicum-test .endif # Items not integrated into kyua runs by default Modified: projects/capsicum-test/tests/sys/capsicum/Makefile ============================================================================== --- projects/capsicum-test/tests/sys/capsicum/Makefile Sat Mar 30 00:06:53 2019 (r345718) +++ projects/capsicum-test/tests/sys/capsicum/Makefile Sat Mar 30 00:35:32 2019 (r345719) @@ -1,11 +1,55 @@ # $FreeBSD$ +.include + TESTSDIR= ${TESTSBASE}/sys/capsicum ATF_TESTS_C+= bindat_connectat ATF_TESTS_C+= ioctls_test CFLAGS+= -I${SRCTOP}/tests + +.if ${MK_GOOGLETEST} != no + +.PATH: ${SRCTOP}/contrib/capsicum-test + +GTESTS+= capsicum-test + +SRCS.capsicum-test+= \ + capsicum-test-main.cc \ + capsicum-test.cc \ + capability-fd.cc \ + fexecve.cc \ + procdesc.cc \ + capmode.cc \ + fcntl.cc \ + ioctl.cc \ + openat.cc \ + sysctl.cc \ + select.cc \ + mqueue.cc \ + socket.cc \ + sctp.cc \ + capability-fd-pair.cc \ + overhead.cc \ + rename.cc + +LIBADD.capsicum-test+= gtest pthread + +.for p in mini-me mini-me.noexec mini-me.setuid +PROGS+= $p +NO_SHARED.$p= +SRCS.$p= mini-me.c +.endfor + +BINDIR= ${TESTSDIR} + +BINMODE.mini-me.noexec= ${NOBINMODE} +BINMODE.mini-me.setuid= 4444 + +WARNS.capsicum-test= 3 + +.endif WARNS?= 6 From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:05 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 960D0DC202 for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yx0G0Pz4P5s; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 63C2A19F9D; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id ED23AEE2B; Mon, 1 Apr 2019 16:15:33 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 41F6675EE2; Mon, 1 Apr 2019 16:15:33 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 147ABEDEE; Mon, 1 Apr 2019 16:15:33 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 29F46EDEC for ; Mon, 1 Apr 2019 16:15:30 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EB3E075EDD; Mon, 1 Apr 2019 16:15:29 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C294C18DA1; Mon, 1 Apr 2019 16:15:29 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31GFTIu004480; Mon, 1 Apr 2019 16:15:29 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31GFT6J004479; Mon, 1 Apr 2019 16:15:29 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904011615.x31GFT6J004479@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345767 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 345767 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 41F6675EE2 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.95)[-0.950,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:06 -0000 X-Original-Date: Mon, 1 Apr 2019 16:15:29 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:06 -0000 Author: asomers Date: Mon Apr 1 16:15:29 2019 New Revision: 345767 URL: https://svnweb.freebsd.org/changeset/base/345767 Log: fusefs: fix an inverted error check in my last commit This should be merged alongside 345766 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Mon Apr 1 14:23:43 2019 (r345766) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Mon Apr 1 16:15:29 2019 (r345767) @@ -285,9 +285,8 @@ fuse_vnop_close(struct vop_close_args *ap) if (vnode_isdir(vp)) { struct fuse_filehandle *fufh; - if (fuse_filehandle_get(vp, O_RDONLY, &fufh)) { + if (fuse_filehandle_get(vp, O_RDONLY, &fufh) == 0) fuse_filehandle_close(vp, fufh, NULL, cred); - } return 0; } if (fflag & IO_NDELAY) { From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:55 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B3A32DC058 for ; Tue, 3 Sep 2019 14:05:55 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yq3f0Xz4P00; Tue, 3 Sep 2019 14:05:55 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 5C20519DC9; Tue, 3 Sep 2019 14:05:51 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5B9E5B385; Fri, 29 Mar 2019 14:19:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 29E179529E; Fri, 29 Mar 2019 14:19:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1ADC8B384; Fri, 29 Mar 2019 14:19:35 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E963CB382 for ; Fri, 29 Mar 2019 14:19:31 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B880295292; Fri, 29 Mar 2019 14:19:31 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 94D932FE6E; Fri, 29 Mar 2019 14:19:31 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2TEJV06042311; Fri, 29 Mar 2019 14:19:31 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2TEJVx2042310; Fri, 29 Mar 2019 14:19:31 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903291419.x2TEJVx2042310@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345690 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345690 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 29E179529E X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.996,0]; NEURAL_HAM_SHORT(-0.98)[-0.977,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:56 -0000 X-Original-Date: Fri, 29 Mar 2019 14:19:31 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:56 -0000 Author: asomers Date: Fri Mar 29 14:19:31 2019 New Revision: 345690 URL: https://svnweb.freebsd.org/changeset/base/345690 Log: fusefs: fix test build after r345645 It's no longer necessary to add GTESTS_CXXFLAGS to CXXFLAGS Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/Makefile Modified: projects/fuse2/tests/sys/fs/fusefs/Makefile ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/Makefile Fri Mar 29 14:07:30 2019 (r345689) +++ projects/fuse2/tests/sys/fs/fusefs/Makefile Fri Mar 29 14:19:31 2019 (r345690) @@ -201,10 +201,6 @@ CFLAGS+= -I${MOUNT} .PATH: ${MOUNT} CXXSTD= c++14 -# XXX Setting CXXFLAGS globally seems to be necessary to get mockfs.cc and -# utils.cc to build correctly. -CXXFLAGS+= ${GTESTS_CXXFLAGS} - LIBADD+= pthread LIBADD+= gmock gtest LIBADD+= util From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:03 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 86DDFDC199 for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv6F56z4P53; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id BDAC919F56; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6B3601E558; Sun, 31 Mar 2019 17:27:34 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 529B78A65F; Sun, 31 Mar 2019 17:27:33 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 225E91E52B; Sun, 31 Mar 2019 17:27:33 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id DDB421E529 for ; Sun, 31 Mar 2019 17:27:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A37CD8A65A; Sun, 31 Mar 2019 17:27:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 71F201F26; Sun, 31 Mar 2019 17:27:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2VHRTRh087610; Sun, 31 Mar 2019 17:27:29 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2VHRTum087609; Sun, 31 Mar 2019 17:27:29 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903311727.x2VHRTum087609@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345756 - projects/capsicum-test/contrib/googletest/googletest/src X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/googletest/googletest/src X-SVN-Commit-Revision: 345756 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 529B78A65F X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.95)[-0.947,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:03 -0000 X-Original-Date: Sun, 31 Mar 2019 17:27:29 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:03 -0000 Author: ngie Date: Sun Mar 31 17:27:28 2019 New Revision: 345756 URL: https://svnweb.freebsd.org/changeset/base/345756 Log: Import the missing hunk from r345740 This makes the proof-of-concept actually work. Modified: projects/capsicum-test/contrib/googletest/googletest/src/gtest.cc Modified: projects/capsicum-test/contrib/googletest/googletest/src/gtest.cc ============================================================================== --- projects/capsicum-test/contrib/googletest/googletest/src/gtest.cc Sun Mar 31 16:56:36 2019 (r345755) +++ projects/capsicum-test/contrib/googletest/googletest/src/gtest.cc Sun Mar 31 17:27:28 2019 (r345756) @@ -5243,9 +5243,23 @@ bool UnitTestImpl::RunAllTests() { ForEach(environments_, SetUpEnvironment); repeater->OnEnvironmentsSetUpEnd(*parent_); - // Runs the tests only if there was no fatal failure during global - // set-up. - if (!Test::HasFatalFailure()) { + // Runs the tests only if there was no fatal failure or skip triggered + // during global set-up. + if (Test::IsSkipped()) { + // Emit diagnostics when global set-up calls skip, as it will not be + // emitted by default. + TestResult& test_result = + *internal::GetUnitTestImpl()->current_test_result(); + for (int j = 0; j < test_result.total_part_count(); ++j) { + const TestPartResult& test_part_result = + test_result.GetTestPartResult(j); + if (test_part_result.type() == TestPartResult::kSkip) { + const std::string& result = test_part_result.message(); + printf("%s\n", result.c_str()); + } + } + fflush(stdout); + } else if (!Test::HasFatalFailure()) { for (int test_index = 0; test_index < total_test_case_count(); test_index++) { GetMutableTestCase(test_index)->Run(); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:03 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0A916DC1C6 for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw17Ylz4P59; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id E860E19F65; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6E4E76CED; Mon, 1 Apr 2019 07:28:43 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2A69D89286; Mon, 1 Apr 2019 07:28:43 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1A2DF6CEC; Mon, 1 Apr 2019 07:28:43 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 82CF26CE9; Mon, 1 Apr 2019 07:28:40 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from smtp-out-no.shaw.ca (smtp-out-no.shaw.ca [64.59.134.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "Client", Issuer "CA" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 551EE89284; Mon, 1 Apr 2019 07:28:39 +0000 (UTC) (envelope-from cy.schubert@cschubert.com) Received: from spqr.komquats.com ([70.67.125.17]) by shaw.ca with ESMTPA id ArMwh9ox3ldkPArMxhFZho; Mon, 01 Apr 2019 01:28:36 -0600 X-Authority-Analysis: v=2.3 cv=Ko4zJleN c=1 sm=1 tr=0 a=VFtTW3WuZNDh6VkGe7fA3g==:117 a=VFtTW3WuZNDh6VkGe7fA3g==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=8nJEP1OIZ-IA:10 a=oexKYjalfGEA:10 a=6I5d2MoRAAAA:8 a=YxBL1-UpAAAA:8 a=9kjIXSS1uQBkUWT0IQoA:9 a=wPNLvfGTeEIA:10 a=-FsMTTDYTgkA:10 a=IjZwj45LgO3ly-622nXo:22 a=Ia-lj3WSrqcvXOmTRaiG:22 Received: from slippy.cwsent.com (slippy [10.1.1.91]) by spqr.komquats.com (Postfix) with ESMTPS id AE4A728E; Mon, 1 Apr 2019 00:28:33 -0700 (PDT) Received: from slippy.cwsent.com (localhost [127.0.0.1]) by slippy.cwsent.com (8.15.2/8.15.2) with ESMTP id x317SWvK076166; Mon, 1 Apr 2019 00:28:33 -0700 (PDT) (envelope-from Cy.Schubert@cschubert.com) Received: from slippy (cy@localhost) by slippy.cwsent.com (8.15.2/8.15.2/Submit) with ESMTP id x317SWXD076162; Mon, 1 Apr 2019 00:28:32 -0700 (PDT) (envelope-from Cy.Schubert@cschubert.com) Message-Id: <201904010728.x317SWXD076162@slippy.cwsent.com> X-Authentication-Warning: slippy.cwsent.com: cy owned process doing -bs X-Mailer: exmh version 2.8.0 04/21/2012 with nmh-1.7.1 Reply-to: Cy Schubert From: Cy Schubert X-os: FreeBSD X-Sender: cy@cwsent.com X-URL: http://www.cschubert.com/ To: Kristof Provost cc: Ed Schouten , src-committers , svn-src-projects@freebsd.org Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl In-Reply-To: Message from Kristof Provost of "Mon, 01 Apr 2019 08:47:16 +0200." Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-CMAE-Envelope: MS4wfGSqeA/PmpmBvnSL5CGPtTWw1TIb5dXcMnH94VDPRJyoWiv0MePw8zT50b9XVsmUbDcCxbqgrXlXpO5sq/Bn/PhdBVuwE0SXY47ACFJD7hHts6S83fvX GQ0JCiKmstmef6RYbO6h7N6hhLFY+3FENA8izVfvW5vBVaiYNgqxfDnWZcIYXPtuOAjd28MdIfDrGW3DbrlJ+o2kN8YF/zxgP1XSiJm6hYoQfWF9ABCWNt1D sgK13vFy862eV4NrynV+6NE5DHtdWDLPnS47cBynSfo= Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2A69D89286 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.97)[-0.969,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:03 -0000 X-Original-Date: Mon, 01 Apr 2019 00:28:32 -0700 X-List-Received-Date: Tue, 03 Sep 2019 14:06:03 -0000 In message , Kristof Provost writes: > > > > On 1 Apr 2019, at 08:39, Ed Schouten wrote: > > > > Op ma 1 apr. 2019 om 07:53 schreef Kristof Provost : > >> Users are advised to migrate to ipf. > > > > Has anyone considered importing netfilter/iptables? > > > Nftables, surely? > We wouldn’t want to import their outdated firewall. Does it support RFC 1149 and RFC 2549? None of our firewalls do. Then again, neither does our stack. How difficult would it be to support this? -- Cheers, Cy Schubert FreeBSD UNIX: Web: http://www.FreeBSD.org The need of the many outweighs the greed of the few. From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:06 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2484BDC264 for ; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yy0zTyz4P6q; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 170B11A023; Tue, 3 Sep 2019 14:05:56 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 0E9C8133C2; Mon, 1 Apr 2019 20:03:58 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5196386CF5; Mon, 1 Apr 2019 20:03:57 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 14FA313358; Mon, 1 Apr 2019 20:03:57 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id B5DB913354 for ; Mon, 1 Apr 2019 20:03:54 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 70B1086CEF; Mon, 1 Apr 2019 20:03:54 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4B4E51B5F7; Mon, 1 Apr 2019 20:03:54 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31K3sbf027302; Mon, 1 Apr 2019 20:03:54 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31K3s6K027301; Mon, 1 Apr 2019 20:03:54 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904012003.x31K3s6K027301@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345780 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345780 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 5196386CF5 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.95)[-0.955,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:07 -0000 X-Original-Date: Mon, 1 Apr 2019 20:03:54 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:07 -0000 Author: ngie Date: Mon Apr 1 20:03:53 2019 New Revision: 345780 URL: https://svnweb.freebsd.org/changeset/base/345780 Log: Fix grammar nit in skip message Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Mon Apr 1 20:02:26 2019 (r345779) +++ projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Mon Apr 1 20:03:53 2019 (r345780) @@ -56,7 +56,7 @@ class SetupEnvironment : public ::testing::Environment GTEST_FAIL() << "sysctlbyname failed: " << strerror(errno); } if (trap_enotcap_enabled) { - GTEST_SKIP() << "Debug sysctl " << oid << " enabled. " + GTEST_SKIP() << "Debug sysctl, " << oid << ", enabled. " << "Skipping tests because it's enablement invalidates the " << "test results."; } From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:06 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 138D9DC25B for ; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yy0BKyz4P6b; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id CDBF219FD0; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 4B46211C64; Mon, 1 Apr 2019 18:35:31 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1CA5B83C82; Mon, 1 Apr 2019 18:35:31 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0E13011C63; Mon, 1 Apr 2019 18:35:31 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id EC71F11C61 for ; Mon, 1 Apr 2019 18:35:27 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A686583C7F; Mon, 1 Apr 2019 18:35:27 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 82D8E1A63C; Mon, 1 Apr 2019 18:35:27 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31IZRx8078690; Mon, 1 Apr 2019 18:35:27 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31IZRvg078689; Mon, 1 Apr 2019 18:35:27 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904011835.x31IZRvg078689@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345774 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345774 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 1CA5B83C82 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.95)[-0.953,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:07 -0000 X-Original-Date: Mon, 1 Apr 2019 18:35:27 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:07 -0000 Author: ngie Date: Mon Apr 1 18:35:27 2019 New Revision: 345774 URL: https://svnweb.freebsd.org/changeset/base/345774 Log: Add a missing trailing period with the skip message for the `kern.trap_enotcap` check Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Mon Apr 1 18:25:14 2019 (r345773) +++ projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Mon Apr 1 18:35:27 2019 (r345774) @@ -55,7 +55,7 @@ class SetupEnvironment : public ::testing::Environment } if (trap_enotcap_enabled) { GTEST_SKIP() << "Sysctl " << oid << " enabled. " - << "Skipping tests to avoid non-determinism with results"; + << "Skipping tests to avoid non-determinism with results."; } #endif /* FreeBSD */ } From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:00 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 43AA8DC127 for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yt4NQqz4P38; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 7B6A119EB2; Tue, 3 Sep 2019 14:05:52 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 0CDD018F9F; Sat, 30 Mar 2019 00:57:13 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 44DCC8AA4C; Sat, 30 Mar 2019 00:57:12 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1F74F18F69; Sat, 30 Mar 2019 00:57:12 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id DA69718F64 for ; Sat, 30 Mar 2019 00:57:08 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8C5EF8AA46; Sat, 30 Mar 2019 00:57:08 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5FCB26F73; Sat, 30 Mar 2019 00:57:08 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2U0v89Y088362; Sat, 30 Mar 2019 00:57:08 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2U0v7qp088358; Sat, 30 Mar 2019 00:57:07 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903300057.x2U0v7qp088358@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345722 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345722 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 44DCC8AA4C X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.93 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.94)[-0.938,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:00 -0000 X-Original-Date: Sat, 30 Mar 2019 00:57:07 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:00 -0000 Author: asomers Date: Sat Mar 30 00:57:07 2019 New Revision: 345722 URL: https://svnweb.freebsd.org/changeset/base/345722 Log: fusefs: don't force direct io for files opened O_WRONLY Previously fusefs would treat any file opened O_WRONLY as though the FOPEN_DIRECT_IO flag were set, in an attempt to avoid issuing reads as part of a RMW write operation on a cached part of the file. However, the FUSE protocol explicitly allows reads of write-only files for precisely that reason. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_file.c projects/fuse2/sys/fs/fuse/fuse_io.c projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/tests/sys/fs/fusefs/write.cc Modified: projects/fuse2/sys/fs/fuse/fuse_file.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.c Sat Mar 30 00:54:01 2019 (r345721) +++ projects/fuse2/sys/fs/fuse/fuse_file.c Sat Mar 30 00:57:07 2019 (r345722) @@ -144,16 +144,7 @@ fuse_filehandle_open(struct vnode *vp, fufh_type_t fuf fuse_filehandle_init(vp, fufh_type, fufhp, foo->fh); - /* - * For WRONLY opens, force DIRECT_IO. This is necessary - * since writing a partial block through the buffer cache - * will result in a read of the block and that read won't - * be allowed by the WRONLY open. - */ - if (fufh_type == FUFH_WRONLY) - fuse_vnode_open(vp, foo->open_flags | FOPEN_DIRECT_IO, td); - else - fuse_vnode_open(vp, foo->open_flags, td); + fuse_vnode_open(vp, foo->open_flags, td); out: fdisp_destroy(&fdi); Modified: projects/fuse2/sys/fs/fuse/fuse_io.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_io.c Sat Mar 30 00:54:01 2019 (r345721) +++ projects/fuse2/sys/fs/fuse/fuse_io.c Sat Mar 30 00:57:07 2019 (r345722) @@ -648,6 +648,15 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) error = fuse_filehandle_getrw(vp, (bp->b_iocmd == BIO_READ) ? FUFH_RDONLY : FUFH_WRONLY, &fufh); + if (bp->b_iocmd == BIO_READ && error == EBADF) { + /* + * This may be a read-modify-write operation on a cached file + * opened O_WRONLY. The FUSE protocol allows this. + * + * TODO: eliminate this hacky check once the FUFH table is gone + */ + error = fuse_filehandle_get(vp, FUFH_WRONLY, &fufh); + } if (error) { printf("FUSE: strategy: filehandles are closed\n"); bp->b_ioflags |= BIO_ERROR; Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Sat Mar 30 00:54:01 2019 (r345721) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Sat Mar 30 00:57:07 2019 (r345722) @@ -1208,7 +1208,6 @@ fuse_vnop_open(struct vop_open_args *ap) int mode = ap->a_mode; struct thread *td = ap->a_td; struct ucred *cred = ap->a_cred; - int32_t fuse_open_flags = 0; fufh_type_t fufh_type; struct fuse_vnode_data *fvdat; @@ -1228,16 +1227,8 @@ fuse_vnop_open(struct vop_open_args *ap) fufh_type = fuse_filehandle_xlate_from_fflags(mode); } - /* - * For WRONLY opens, force DIRECT_IO. This is necessary since writing - * a partial block through the buffer cache will result in a read of - * the block and that read won't be allowed by the WRONLY open. - */ - if (fufh_type == FUFH_WRONLY || (fvdat->flag & FN_DIRECTIO) != 0) - fuse_open_flags = FOPEN_DIRECT_IO; - if (fuse_filehandle_validrw(vp, fufh_type) != FUFH_INVALID) { - fuse_vnode_open(vp, fuse_open_flags, td); + fuse_vnode_open(vp, 0, td); return 0; } Modified: projects/fuse2/tests/sys/fs/fusefs/write.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/write.cc Sat Mar 30 00:54:01 2019 (r345721) +++ projects/fuse2/tests/sys/fs/fusefs/write.cc Sat Mar 30 00:57:07 2019 (r345722) @@ -391,7 +391,7 @@ TEST_F(Write, DISABLED_mmap) free(zeros); } -TEST_F(Write, pwrite) +TEST_F(WriteThrough, pwrite) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -519,6 +519,36 @@ TEST_F(WriteBack, close) ASSERT_EQ(bufsize, write(fd, CONTENTS, bufsize)) << strerror(errno); close(fd); +} + +/* + * In writeback mode, writes to an O_WRONLY file could trigger reads from the + * server. The FUSE protocol explicitly allows that. + */ +TEST_F(WriteBack, rmw) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + const char *CONTENTS = "abcdefgh"; + const char *INITIAL = "XXXXXXXXXX"; + uint64_t ino = 42; + uint64_t offset = 1; + off_t fsize = 10; + int fd; + ssize_t bufsize = strlen(CONTENTS); + + expect_lookup(RELPATH, ino, 0); + expect_open(ino, 0, 1); + expect_getattr(ino, fsize); + expect_read(ino, 0, fsize, fsize, INITIAL); + expect_write(ino, offset, bufsize, bufsize, 0, CONTENTS); + + fd = open(FULLPATH, O_WRONLY); + EXPECT_LE(0, fd) << strerror(errno); + + ASSERT_EQ(bufsize, pwrite(fd, CONTENTS, bufsize, offset)) + << strerror(errno); + /* Deliberately leak fd. close(2) will be tested in release.cc */ } /* From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:03 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0B50CDC1C9 for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw1Vzqz4P5G; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 58DE719F91; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id BDD67E183; Mon, 1 Apr 2019 15:25:56 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6327A73C7A; Mon, 1 Apr 2019 15:25:56 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0C729E157; Mon, 1 Apr 2019 15:25:56 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 49275E152; Mon, 1 Apr 2019 15:25:53 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EA3FD73C70; Mon, 1 Apr 2019 15:25:52 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: by mail-pl1-x634.google.com with SMTP id m10so4653907plt.10; Mon, 01 Apr 2019 08:25:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=H7FJuuGi5bwnpHPc3DaIebSbbvDjyCqxj67IjTWYIa4=; b=Vl18AGi3eMy7PLE6C1wjJclJFplZJZtStXqsVN+XRqgF/C0Dlb2rmEHcMh8UsyLF28 2B5VGogGCF09fJw7Gn/KlMcvSUS50elWRoDx3iu1CyFQsEdJQ38WnTsyJMS66j5LCDNo bSAfctIsVM2XeVX7DRVOofkDdaSE0Y7DzahoQjZpK3eq5gOEUrDLoN2pN9nJTE4OGMof taQqClpng/zjjcCz6BTlvA8RcRc+14AvZaRgFA1Pm4FA0rAkBriVy2KHbMJvCvSUmzvk /xI9S1QDqaswr/eZ0lZ16xUEtmfjTmRi66DIK+W0QsV0sVT+GvpmkmW9LXN6ofZEFzxq nleg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=H7FJuuGi5bwnpHPc3DaIebSbbvDjyCqxj67IjTWYIa4=; b=cHdic5Oo/3AsbfBkm9DZ1cFfD26h9oCYu0PWwYyA3cSFY1Dkxpynn5v4sQFwX1RtzT 2yKZORLrF6BLP8ZcpHImKJfxb3nM0iBFj0WKYezbcOSSQ0zta0YZvMdFr3oxpwOew0Lf t//LLOE6SCqanfcrVfkjRiFvZb2VmUN6PFWQzizpL8ZucqTmsKmBH9r+iuWjywl1nmw6 T2igE3GQnekzYpZl0V+dlQWdgOWwp7SPTxsBY6y86Mnb1i5nKG8eU0+WyvixkYwUkhFG 2x84n4/U3b4nt+QxBnvDEu8hJj3yzD+jzNXU3/ldGd+idLMkDjmh09o0AAVwcokae1kt Tntg== X-Gm-Message-State: APjAAAXSYR+jrp/c6tg0pZv2WAUYsOTHB1jevODMw/XJ0cC1sg+14XAr WTHSrvBEhFkwBQeAqJOomPeFmvLcSJA= X-Google-Smtp-Source: APXvYqyzbK7xAJMIvGe0HDFfXAQzAplPq1AtKFC+CBG+8Z4Gjbqr5zwvakGSZ8QD0RyUz9lAd1wnTQ== X-Received: by 2002:a17:902:28a7:: with SMTP id f36mr65506524plb.169.1554132351028; Mon, 01 Apr 2019 08:25:51 -0700 (PDT) Received: from [192.168.20.22] (c-73-19-52-228.hsd1.wa.comcast.net. [73.19.52.228]) by smtp.gmail.com with ESMTPSA id e123sm13802195pgc.14.2019.04.01.08.25.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 01 Apr 2019 08:25:50 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (1.0) Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl From: Enji Cooper X-Mailer: iPhone Mail (16E227) In-Reply-To: <20190401055318.GI7163@vega.codepro.be> Cc: src-committers@freebsd.org, svn-src-projects@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <20190401055318.GI7163@vega.codepro.be> To: Kristof Provost Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 6327A73C7A X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.96 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.955,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:04 -0000 X-Original-Date: Mon, 1 Apr 2019 08:25:49 -0700 X-List-Received-Date: Tue, 03 Sep 2019 14:06:04 -0000 > On Mar 31, 2019, at 22:53, Kristof Provost wrote: >=20 > Author: kp > Date: Mon Apr 1 06:51:32 2019 > New Revision: 345760 > URL: https://svnweb.freebsd.org/changeset/base/345625 > Log: > pf: Remove obsolete pf >=20 > pf in FreeBSD lags years behind OpenBSD's pf. > Remove it. >=20 > Users are advised to migrate to ipf. Well played prank, sir. Well played. Cheers, -Enji PS For those not getting the gag, the svn link oddly doesn=E2=80=99t match t= he revision number ;).. also, note the commit date :).= From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:04 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 10F96DC1D5 for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw0hX6z4P57; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id DC89A19F61; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E51D35ED6; Mon, 1 Apr 2019 06:40:20 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4E7C2855F5; Mon, 1 Apr 2019 06:40:20 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 2EBDD5EB5; Mon, 1 Apr 2019 06:40:20 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5F1985EB1 for ; Mon, 1 Apr 2019 06:40:17 +0000 (UTC) (envelope-from ed@nuxi.nl) Received: from mail-ed1-x531.google.com (mail-ed1-x531.google.com [IPv6:2a00:1450:4864:20::531]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 31BF1855D1 for ; Mon, 1 Apr 2019 06:40:15 +0000 (UTC) (envelope-from ed@nuxi.nl) Received: by mail-ed1-x531.google.com with SMTP id d1so7098103edd.13 for ; Sun, 31 Mar 2019 23:40:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nuxi-nl.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+8o7Yn+YF/Dzb7NS5vvKbRtRIKBqgspedlvxl4j8jWY=; b=ZR7/o3c8BMovrR4CNYB0DiUvwxPYLCVFlBmT5hQxFQjTC5wyfuFx/JiXPzN8Bmhb4E iAefhMwlFrXZoRBNHPor9w2+OczfffPmSOKu7WKCNLJ/AUhtXkm5zCIlDPoxVy/7Vv1R 67N/amZ7LZc72s9Y2Ftwlw+UzHN1cx7RREC+KQittTZ7XZ0cDH6mMElmvE6K8F8pCBvy +UYPSadba/dV/+q6jHf2nGki5tP2aHHrX/1SRcXaz9QVEia2SeINpjhFPUQ5xWA0J/Qj yp3vOp/DWJB6kaOS/NZuVVDspk1GilxGBo2+ZDtnEOQtnUBy1yISzSkVQN0wGGAHpDdW 0QAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+8o7Yn+YF/Dzb7NS5vvKbRtRIKBqgspedlvxl4j8jWY=; b=SGs5T/t0BdTX1pB0QTfF9TqO2pVa8nVecbtke1Y9riaM1UBJWvCTabgLfJTxP5ZVHM amxpq88HXFzbs5plpbfFZNnARiBZcsNMVhS4p57odIBZrHnO9042zs3XS19ezmOA5Vvz 2onIjS818h77hW1yInN8SkYi0gi+7CGf0uCfZLuwsRCPXSdOs4TTFOhm7XMPkUQIoap8 3opBTQMSJUytNQr6PzWyoNHadirhNqbngXUxMJH+eSRROzhTATzFBrmmdLn6ZOsEySp+ joQMZ8zqMHvYBjZjr9r5WkLY3J5kzEk7mwFvHugWAacBsMw/8BgkuHtzFQCau3iqYWB+ /whQ== X-Gm-Message-State: APjAAAX8aZLb37TuW7GWDFyqUaV57vUXKLnVJ/M4TY6HLNVjrWaMSUh4 ImrAaTmtM/hDARVxFhxi1Kcxqdb4U476YxBPZI/0Vg== X-Google-Smtp-Source: APXvYqwGeP+ZanULROwqS5qAMAaP7fZY3n5vm/CJjCsLQpO55E5PfH+DmR5kpJBBviYWKTN66ZMU/CcQ20GzF8MFJlQ= X-Received: by 2002:a50:bd85:: with SMTP id y5mr29058246edh.112.1554100814503; Sun, 31 Mar 2019 23:40:14 -0700 (PDT) MIME-Version: 1.0 References: <20190401055318.GI7163@vega.codepro.be> In-Reply-To: <20190401055318.GI7163@vega.codepro.be> From: Ed Schouten Message-ID: Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl To: Kristof Provost Cc: src-committers , svn-src-projects@freebsd.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4E7C2855F5 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.74 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.74)[-0.744,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:04 -0000 X-Original-Date: Mon, 1 Apr 2019 08:39:48 +0200 X-List-Received-Date: Tue, 03 Sep 2019 14:06:04 -0000 Op ma 1 apr. 2019 om 07:53 schreef Kristof Provost : > Users are advised to migrate to ipf. Has anyone considered importing netfilter/iptables? -- Ed Schouten From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:01 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0A068DC15C for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv1CXmz4P4J; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 4CBB719F14; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 1CA6014CCA; Sun, 31 Mar 2019 04:55:28 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 616268FE4D; Sun, 31 Mar 2019 04:55:27 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 182A214C80; Sun, 31 Mar 2019 04:55:27 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6A67814C7D; Sun, 31 Mar 2019 04:55:24 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: from mail-io1-f53.google.com (mail-io1-f53.google.com [209.85.166.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 860B48FE48; Sun, 31 Mar 2019 04:55:23 +0000 (UTC) (envelope-from cse.cem@gmail.com) Received: by mail-io1-f53.google.com with SMTP id u12so4960984iop.11; Sat, 30 Mar 2019 21:55:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:reply-to :from:date:message-id:subject:to:cc:content-transfer-encoding; bh=bVrcy8H/ypmHJAYNgyxMJTZbiRFEWJbcmXScmo8G4R4=; b=DuKzG6kWloSujVvEztHMudwclymTS9QjCIofXSrRi7QCC9Lxds14rVTz1/ABRFMfeh 9xqkqYUWUeCAUlUoABvLU7IcCJgZAJ/JwndZYCrZyhmBoGOxbspPWsP4xyKmmSZZhkns 1Dd0fhoSF0R8XUEbGYGjK6dsD47N/DbWF3ARtZtA47KpzxFygw4bG7WWOgjfYQlQb6Tj lMqPQJMt9hQFofKBksEZXLC78tXb3BYeOp5/l9EDg7EUzY/KfmciKBJfd2jb0lgOwM// 6CWmhCqLceVJPt5JQllWS7SlzMZVYF5wUooIRytww4BLVTJCYHv9rPSkxUD53Hsntwmh zSOA== X-Gm-Message-State: APjAAAU9i+446ZDrwWVmw1snSwxyBiXrrXT6IRblYBf2/dGpjmLngiQ9 3rl4xcLbeWuOt2oc5J0mBohldHh+ X-Google-Smtp-Source: APXvYqwOyIr9TRquQEv9j5wr5paPy8jNvj1FSUPidbLWpL/BCbdA5oMa2rEBIs6Pl+8gJw3069DDaw== X-Received: by 2002:a6b:e418:: with SMTP id u24mr39276390iog.128.1554008117164; Sat, 30 Mar 2019 21:55:17 -0700 (PDT) Received: from mail-io1-f53.google.com (mail-io1-f53.google.com. [209.85.166.53]) by smtp.gmail.com with ESMTPSA id q22sm2880867ion.15.2019.03.30.21.55.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 30 Mar 2019 21:55:17 -0700 (PDT) Received: by mail-io1-f53.google.com with SMTP id n11so5015863ioh.1; Sat, 30 Mar 2019 21:55:17 -0700 (PDT) X-Received: by 2002:a5e:a710:: with SMTP id b16mr37337357iod.233.1554008116940; Sat, 30 Mar 2019 21:55:16 -0700 (PDT) MIME-Version: 1.0 References: <201903310319.x2V3JAGH038626@repo.freebsd.org> In-Reply-To: <201903310319.x2V3JAGH038626@repo.freebsd.org> Reply-To: cem@freebsd.org From: Conrad Meyer X-Gmail-Original-Message-ID: Message-ID: Subject: Re: svn commit: r345742 - projects/fuse2/sys/fs/fuse To: Alan Somers Cc: src-committers , svn-src-projects@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 616268FE4D X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.89 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.90)[-0.897,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:01 -0000 X-Original-Date: Sat, 30 Mar 2019 21:55:06 -0700 X-List-Received-Date: Tue, 03 Sep 2019 14:06:01 -0000 Hi Alan, On Sat, Mar 30, 2019 at 8:19 PM Alan Somers wrote: > ... > Discussed with: cem I don't object to the change, but I'm not sure the "discussed with" tag is appropriate here =E2=80=94 to me it implies at least some level of consensus reached. Best, Conrad From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:07 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3007EDC26D for ; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yy114vz4P6r; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 1FA181A02B; Tue, 3 Sep 2019 14:05:56 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6B18E148F3; Mon, 1 Apr 2019 20:42:21 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2783089112; Mon, 1 Apr 2019 20:42:21 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 14DB7148F1; Mon, 1 Apr 2019 20:42:21 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 0A3BC148EC for ; Mon, 1 Apr 2019 20:42:18 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D86FE89100; Mon, 1 Apr 2019 20:42:17 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B50C31BD0F; Mon, 1 Apr 2019 20:42:17 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31KgHcr050042; Mon, 1 Apr 2019 20:42:17 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31KgFqO050033; Mon, 1 Apr 2019 20:42:15 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904012042.x31KgFqO050033@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345781 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345781 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2783089112 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.967,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:08 -0000 X-Original-Date: Mon, 1 Apr 2019 20:42:15 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:08 -0000 Author: asomers Date: Mon Apr 1 20:42:15 2019 New Revision: 345781 URL: https://svnweb.freebsd.org/changeset/base/345781 Log: fusefs: send FUSE_OPEN for every open(2) with unique credentials By default, FUSE performs authorization in the server. That means that it's insecure for the client to reuse FUSE file handles between different users, groups, or processes. Linux handles this problem by creating a different FUSE file handle for every file descriptor. FreeBSD can't, due to differences in our VFS design. This commit adds credential information to each fuse_filehandle. During open(2), fusefs will now only reuse a file handle if it matches the exact same access mode, pid, uid, and gid of the calling process. PR: 236844 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_file.c projects/fuse2/sys/fs/fuse/fuse_file.h projects/fuse2/sys/fs/fuse/fuse_io.c projects/fuse2/sys/fs/fuse/fuse_io.h projects/fuse2/sys/fs/fuse/fuse_node.c projects/fuse2/sys/fs/fuse/fuse_node.h projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/tests/sys/fs/fusefs/allow_other.cc projects/fuse2/tests/sys/fs/fusefs/open.cc Modified: projects/fuse2/sys/fs/fuse/fuse_file.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.c Mon Apr 1 20:03:53 2019 (r345780) +++ projects/fuse2/sys/fs/fuse/fuse_file.c Mon Apr 1 20:42:15 2019 (r345781) @@ -109,11 +109,6 @@ fuse_filehandle_open(struct vnode *vp, fufh_type_t fuf int oflags = 0; int op = FUSE_OPEN; - if (fuse_filehandle_valid(vp, fufh_type)) { - panic("FUSE: filehandle_open called despite valid fufh (type=%d)", - fufh_type); - /* NOTREACHED */ - } /* * Note that this means we are effectively FILTERING OUT open() flags. */ @@ -140,7 +135,8 @@ fuse_filehandle_open(struct vnode *vp, fufh_type_t fuf } foo = fdi.answ; - fuse_filehandle_init(vp, fufh_type, fufhp, foo->fh); + fuse_filehandle_init(vp, fufh_type, fufhp, td->td_proc->p_pid, cred, + foo->fh); fuse_vnode_open(vp, foo->open_flags, td); @@ -181,37 +177,66 @@ out: return err; } -int -fuse_filehandle_valid(struct vnode *vp, fufh_type_t fufh_type) -{ - return (0 == fuse_filehandle_get(vp, fufh_type, NULL)); -} - /* * Check for a valid file handle, first the type requested, but if that * isn't valid, try for FUFH_RDWR. - * Return the FUFH type that is valid or FUFH_INVALID if there are none. - * This is a variant of fuse_filehandle_valid() analogous to - * fuse_filehandle_getrw(). + * Return true if there is any file handle with the correct credentials and + * a fufh type that includes the provided one. + * A pid of 0 means "don't care" */ -fufh_type_t -fuse_filehandle_validrw(struct vnode *vp, fufh_type_t fufh_type) +bool +fuse_filehandle_validrw(struct vnode *vp, fufh_type_t fufh_type, + struct ucred *cred, pid_t pid) { - if (fuse_filehandle_get(vp, fufh_type, NULL) == 0) - return (fufh_type); - if (fuse_filehandle_get(vp, FUFH_RDWR, NULL) == 0) - return (FUFH_RDWR); - return (FUFH_INVALID); + struct fuse_vnode_data *fvdat = VTOFUD(vp); + struct fuse_filehandle *fufh; + + /* + * Unlike fuse_filehandle_get, we want to search for a filehandle with + * the exact cred, and no fallback + */ + LIST_FOREACH(fufh, &fvdat->handles, next) { + if (fufh->flags == fufh_type && + fufh->uid == cred->cr_uid && + fufh->gid == cred->cr_rgid && + (pid == 0 || fufh->pid == pid)) + return true; + } + + if (fufh_type == FUFH_EXEC) + return false; + + /* Fallback: find a RDWR list entry with the right cred */ + LIST_FOREACH(fufh, &fvdat->handles, next) { + if (fufh->flags == FUFH_RDWR && + fufh->uid == cred->cr_uid && + fufh->gid == cred->cr_rgid && + (pid == 0 || fufh->pid == pid)) + return true; + } + + return false; } int fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh_type, - struct fuse_filehandle **fufhp) + struct fuse_filehandle **fufhp, struct ucred *cred, pid_t pid) { struct fuse_vnode_data *fvdat = VTOFUD(vp); struct fuse_filehandle *fufh; - /* TODO: Find a list entry with the same flags, pid, gid, and uid */ + if (cred == NULL) + goto fallback; + + LIST_FOREACH(fufh, &fvdat->handles, next) { + if (fufh->flags == fufh_type && + fufh->uid == cred->cr_uid && + fufh->gid == cred->cr_rgid && + (pid == 0 || fufh->pid == pid)) + goto found; + } + +fallback: /* Fallback: find a list entry with the right flags */ LIST_FOREACH(fufh, &fvdat->handles, next) { if (fufh->flags == fufh_type) @@ -220,6 +245,8 @@ fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh if (fufh == NULL) return EBADF; + +found: if (fufhp != NULL) *fufhp = fufh; return 0; @@ -227,19 +254,20 @@ fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh int fuse_filehandle_getrw(struct vnode *vp, fufh_type_t fufh_type, - struct fuse_filehandle **fufhp) + struct fuse_filehandle **fufhp, struct ucred *cred, pid_t pid) { int err; - err = fuse_filehandle_get(vp, fufh_type, fufhp); + err = fuse_filehandle_get(vp, fufh_type, fufhp, cred, pid); if (err) - err = fuse_filehandle_get(vp, FUFH_RDWR, fufhp); + err = fuse_filehandle_get(vp, FUFH_RDWR, fufhp, cred, pid); return err; } void fuse_filehandle_init(struct vnode *vp, fufh_type_t fufh_type, - struct fuse_filehandle **fufhp, uint64_t fh_id) + struct fuse_filehandle **fufhp, pid_t pid, struct ucred *cred, + uint64_t fh_id) { struct fuse_vnode_data *fvdat = VTOFUD(vp); struct fuse_filehandle *fufh; @@ -249,7 +277,10 @@ fuse_filehandle_init(struct vnode *vp, fufh_type_t fuf MPASS(fufh != NULL); fufh->fh_id = fh_id; fufh->flags = fufh_type; - /* TODO: initialize fufh credentials and open flags */ + fufh->gid = cred->cr_rgid; + fufh->uid = cred->cr_uid; + fufh->pid = pid; + /* TODO: initialize open flags */ if (!FUFH_IS_VALID(fufh)) { panic("FUSE: init: invalid filehandle id (type=%d)", fufh_type); } Modified: projects/fuse2/sys/fs/fuse/fuse_file.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.h Mon Apr 1 20:03:53 2019 (r345780) +++ projects/fuse2/sys/fs/fuse/fuse_file.h Mon Apr 1 20:42:15 2019 (r345781) @@ -78,6 +78,56 @@ typedef enum fufh_type { FUFH_EXEC = O_EXEC, } fufh_type_t; +/* + * FUSE File Handles + * + * The FUSE protocol says that a server may assign a unique 64-bit file handle + * every time that a file is opened. Effectively, that's once for each file + * descriptor. + * + * Unfortunately, the VFS doesn't help us here. VOPs don't have a + * struct file* argument. fileops do, but many syscalls bypass the fileops + * layer and go straight to a vnode. Some, like writing from cache, can't + * track a file handle even in theory. The entire concept of the file handle + * is a product of FUSE's Linux origins; Linux lacks vnodes and almost every + * file system operation takes a struct file* argument. + * + * Since FreeBSD's VFS is more file descriptor-agnostic, we must store FUSE + * filehandles in the vnode. One option would be to only store a single file + * handle and never open FUSE files concurrently. That's what NetBSD does. + * But that violates FUSE's security model. FUSE expects the server to do all + * authorization (except when mounted with -o default_permissions). In order + * to do that, the server needs us to send FUSE_OPEN every time somebody opens + * a new file descriptor. + * + * Another option would be to never open FUSE files concurrently, but send a + * FUSE_ACCESS prior to every open after the first. That would give the server + * the opportunity to authorize the access. Unfortunately, the FUSE protocol + * makes ACCESS optional. File systems that don't implement it are assumed to + * authorize everything. A survey of 32 fuse file systems showed that only 14 + * implemented access. Among the laggards were a few that really ought to be + * doing server-side authorization. + * + * So we do something hacky, similar to what OpenBSD, Illumos, and OSXFuse do. + * we store a list of file handles, one for each combination of vnode, uid, + * gid, pid, and access mode. When opening a file, we first check whether + * there's already a matching file handle. If so, we reuse it. If not, we + * send FUSE_OPEN and create a new file handle. That minimizes the number of + * open file handles while still allowing the server to authorize stuff. + * + * VOPs that need a file handle search through the list for a close match. + * They can't be guaranteed of finding an exact match because, for example, a + * process may have changed its UID since opening the file. Also, most VOPs + * don't know exactly what permission they need. Is O_RDWR required or is + * O_RDONLY good enough? So the file handle we end up using may not be exactly + * the one we're supposed to use with that file descriptor. But if the FUSE + * file system isn't too picky, it will work. (FWIW even Linux sometimes + * guesses the file handle, during writes from cache or most SETATTR + * operations). + * + * I suspect this mess is part of the reason why neither NFS nor 9P have an + * equivalent of FUSE file handles. + */ struct fuse_filehandle { LIST_ENTRY(fuse_filehandle) next; @@ -132,15 +182,18 @@ fuse_filehandle_xlate_to_oflags(fufh_type_t type) return oflags; } -int fuse_filehandle_valid(struct vnode *vp, fufh_type_t fufh_type); -fufh_type_t fuse_filehandle_validrw(struct vnode *vp, fufh_type_t fufh_type); +bool fuse_filehandle_validrw(struct vnode *vp, fufh_type_t fufh_type, + struct ucred *cred, pid_t pid); int fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh_type, - struct fuse_filehandle **fufhp); + struct fuse_filehandle **fufhp, struct ucred *cred, + pid_t pid); int fuse_filehandle_getrw(struct vnode *vp, fufh_type_t fufh_type, - struct fuse_filehandle **fufhp); + struct fuse_filehandle **fufhp, struct ucred *cred, + pid_t pid); void fuse_filehandle_init(struct vnode *vp, fufh_type_t fufh_type, - struct fuse_filehandle **fufhp, uint64_t fh_id); + struct fuse_filehandle **fufhp, pid_t pid, + struct ucred *cred, uint64_t fh_id); int fuse_filehandle_open(struct vnode *vp, fufh_type_t fufh_type, struct fuse_filehandle **fufhp, struct thread *td, struct ucred *cred); Modified: projects/fuse2/sys/fs/fuse/fuse_io.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_io.c Mon Apr 1 20:03:53 2019 (r345780) +++ projects/fuse2/sys/fs/fuse/fuse_io.c Mon Apr 1 20:42:15 2019 (r345781) @@ -111,27 +111,28 @@ fuse_read_directbackend(struct vnode *vp, struct uio * struct ucred *cred, struct fuse_filehandle *fufh); static int fuse_read_biobackend(struct vnode *vp, struct uio *uio, - struct ucred *cred, struct fuse_filehandle *fufh); + struct ucred *cred, struct fuse_filehandle *fufh, pid_t pid); static int fuse_write_directbackend(struct vnode *vp, struct uio *uio, struct ucred *cred, struct fuse_filehandle *fufh, int ioflag); static int fuse_write_biobackend(struct vnode *vp, struct uio *uio, - struct ucred *cred, struct fuse_filehandle *fufh, int ioflag); + struct ucred *cred, struct fuse_filehandle *fufh, int ioflag, pid_t pid); SDT_PROBE_DEFINE5(fuse, , io, io_dispatch, "struct vnode*", "struct uio*", "int", "struct ucred*", "struct fuse_filehandle*"); int fuse_io_dispatch(struct vnode *vp, struct uio *uio, int ioflag, - struct ucred *cred) + struct ucred *cred, pid_t pid) { struct fuse_filehandle *fufh; int err, directio; + fufh_type_t fufh_type; MPASS(vp->v_type == VREG || vp->v_type == VDIR); - err = fuse_filehandle_getrw(vp, - (uio->uio_rw == UIO_READ) ? FUFH_RDONLY : FUFH_WRONLY, &fufh); + fufh_type = (uio->uio_rw == UIO_READ) ? FUFH_RDONLY : FUFH_WRONLY; + err = fuse_filehandle_getrw(vp, fufh_type, &fufh, cred, pid); if (err) { printf("FUSE: io dispatch: filehandles are closed\n"); return err; @@ -159,7 +160,7 @@ fuse_io_dispatch(struct vnode *vp, struct uio *uio, in } else { SDT_PROBE2(fuse, , io, trace, 1, "buffered read of vnode"); - err = fuse_read_biobackend(vp, uio, cred, fufh); + err = fuse_read_biobackend(vp, uio, cred, fufh, pid); } break; case UIO_WRITE: @@ -172,11 +173,13 @@ fuse_io_dispatch(struct vnode *vp, struct uio *uio, in if (directio || fuse_data_cache_mode == FUSE_CACHE_WT) { SDT_PROBE2(fuse, , io, trace, 1, "direct write of vnode"); - err = fuse_write_directbackend(vp, uio, cred, fufh, ioflag); + err = fuse_write_directbackend(vp, uio, cred, fufh, + ioflag); } else { SDT_PROBE2(fuse, , io, trace, 1, "buffered write of vnode"); - err = fuse_write_biobackend(vp, uio, cred, fufh, ioflag); + err = fuse_write_biobackend(vp, uio, cred, fufh, ioflag, + pid); } break; default: @@ -191,7 +194,7 @@ SDT_PROBE_DEFINE2(fuse, , io, read_bio_backend_feed, " SDT_PROBE_DEFINE3(fuse, , io, read_bio_backend_end, "int", "ssize_t", "int"); static int fuse_read_biobackend(struct vnode *vp, struct uio *uio, - struct ucred *cred, struct fuse_filehandle *fufh) + struct ucred *cred, struct fuse_filehandle *fufh, pid_t pid) { struct buf *bp; daddr_t lbn; @@ -405,7 +408,7 @@ SDT_PROBE_DEFINE2(fuse, , io, write_biobackend_append_ static int fuse_write_biobackend(struct vnode *vp, struct uio *uio, - struct ucred *cred, struct fuse_filehandle *fufh, int ioflag) + struct ucred *cred, struct fuse_filehandle *fufh, int ioflag, pid_t pid) { struct fuse_vnode_data *fvdat = VTOFUD(vp); struct buf *bp; @@ -625,7 +628,7 @@ again: } while (uio->uio_resid > 0 && n > 0); if (fuse_sync_resize && (fvdat->flag & FN_SIZECHANGE) != 0) - fuse_vnode_savesize(vp, cred); + fuse_vnode_savesize(vp, cred, pid); return (err); } @@ -640,14 +643,18 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) struct uio uio; struct iovec io; int error = 0; + fufh_type_t fufh_type; + /* We don't know the true pid when we're dealing with the cache */ + pid_t pid = 0; const int biosize = fuse_iosize(vp); MPASS(vp->v_type == VREG || vp->v_type == VDIR); MPASS(bp->b_iocmd == BIO_READ || bp->b_iocmd == BIO_WRITE); - error = fuse_filehandle_getrw(vp, - (bp->b_iocmd == BIO_READ) ? FUFH_RDONLY : FUFH_WRONLY, &fufh); + fufh_type = bp->b_iocmd == BIO_READ ? FUFH_RDONLY : FUFH_WRONLY; + cred = bp->b_iocmd == BIO_READ ? bp->b_rcred : bp->b_wcred; + error = fuse_filehandle_getrw(vp, fufh_type, &fufh, cred, pid); if (bp->b_iocmd == BIO_READ && error == EBADF) { /* * This may be a read-modify-write operation on a cached file @@ -655,7 +662,8 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) * * TODO: eliminate this hacky check once the FUFH table is gone */ - error = fuse_filehandle_get(vp, FUFH_WRONLY, &fufh); + fufh_type = FUFH_WRONLY; + error = fuse_filehandle_get(vp, fufh_type, &fufh, cred, pid); } if (error) { printf("FUSE: strategy: filehandles are closed\n"); @@ -664,7 +672,6 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) bufdone(bp); return (error); } - cred = bp->b_iocmd == BIO_READ ? bp->b_rcred : bp->b_wcred; uiop = &uio; uiop->uio_iov = &io; Modified: projects/fuse2/sys/fs/fuse/fuse_io.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_io.h Mon Apr 1 20:03:53 2019 (r345780) +++ projects/fuse2/sys/fs/fuse/fuse_io.h Mon Apr 1 20:42:15 2019 (r345781) @@ -61,7 +61,7 @@ #define _FUSE_IO_H_ int fuse_io_dispatch(struct vnode *vp, struct uio *uio, int ioflag, - struct ucred *cred); + struct ucred *cred, pid_t pid); int fuse_io_strategy(struct vnode *vp, struct buf *bp); int fuse_io_flushbuf(struct vnode *vp, int waitfor, struct thread *td); int fuse_io_invalbuf(struct vnode *vp, struct thread *td); Modified: projects/fuse2/sys/fs/fuse/fuse_node.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.c Mon Apr 1 20:03:53 2019 (r345780) +++ projects/fuse2/sys/fs/fuse/fuse_node.c Mon Apr 1 20:42:15 2019 (r345781) @@ -345,7 +345,7 @@ fuse_vnode_open(struct vnode *vp, int32_t fuse_open_fl } int -fuse_vnode_savesize(struct vnode *vp, struct ucred *cred) +fuse_vnode_savesize(struct vnode *vp, struct ucred *cred, pid_t pid) { struct fuse_vnode_data *fvdat = VTOFUD(vp); struct thread *td = curthread; @@ -377,7 +377,7 @@ fuse_vnode_savesize(struct vnode *vp, struct ucred *cr fsai->size = fvdat->filesize; fsai->valid |= FATTR_SIZE; - fuse_filehandle_getrw(vp, FUFH_WRONLY, &fufh); + fuse_filehandle_getrw(vp, FUFH_WRONLY, &fufh, cred, pid); if (fufh) { fsai->fh = fufh->fh_id; fsai->valid |= FATTR_FH; Modified: projects/fuse2/sys/fs/fuse/fuse_node.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.h Mon Apr 1 20:03:53 2019 (r345780) +++ projects/fuse2/sys/fs/fuse/fuse_node.h Mon Apr 1 20:42:15 2019 (r345781) @@ -126,7 +126,7 @@ void fuse_vnode_open(struct vnode *vp, int32_t fuse_op int fuse_vnode_refreshsize(struct vnode *vp, struct ucred *cred); -int fuse_vnode_savesize(struct vnode *vp, struct ucred *cred); +int fuse_vnode_savesize(struct vnode *vp, struct ucred *cred, pid_t pid); int fuse_vnode_setsize(struct vnode *vp, struct ucred *cred, off_t newsize); Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Mon Apr 1 20:03:53 2019 (r345780) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Mon Apr 1 20:42:15 2019 (r345781) @@ -216,6 +216,16 @@ uma_zone_t fuse_pbuf_zone; #define fuse_vm_page_lock_queues() ((void)0) #define fuse_vm_page_unlock_queues() ((void)0) +/* Get a filehandle for a directory */ +static int +fuse_filehandle_get_dir(struct vnode *vp, struct fuse_filehandle **fufhp, + struct ucred *cred, pid_t pid) +{ + if (fuse_filehandle_get(vp, FUFH_RDONLY, fufhp, cred, pid) == 0) + return 0; + return fuse_filehandle_get(vp, FUFH_EXEC, fufhp, cred, pid); +} + /* struct vnop_access_args { struct vnode *a_vp; @@ -278,6 +288,8 @@ fuse_vnop_close(struct vop_close_args *ap) struct vnode *vp = ap->a_vp; struct ucred *cred = ap->a_cred; int fflag = ap->a_fflag; + struct thread *td = ap->a_td; + pid_t pid = td->td_proc->p_pid; if (fuse_isdeadfs(vp)) { return 0; @@ -285,8 +297,7 @@ fuse_vnop_close(struct vop_close_args *ap) if (vnode_isdir(vp)) { struct fuse_filehandle *fufh; - if ((fuse_filehandle_get(vp, O_RDONLY, &fufh) == 0) || - (fuse_filehandle_get(vp, O_EXEC, &fufh) == 0)) + if (fuse_filehandle_get_dir(vp, &fufh, cred, pid) == 0) fuse_filehandle_close(vp, fufh, NULL, cred); return 0; } @@ -295,7 +306,7 @@ fuse_vnop_close(struct vop_close_args *ap) } /* TODO: close the file handle, if we're sure it's no longer used */ if ((VTOFUD(vp)->flag & FN_SIZECHANGE) != 0) { - fuse_vnode_savesize(vp, cred); + fuse_vnode_savesize(vp, cred, td->td_proc->p_pid); } return 0; } @@ -432,7 +443,8 @@ fuse_vnop_create(struct vop_create_args *ap) } ASSERT_VOP_ELOCKED(*vpp, "fuse_vnop_create"); - fuse_filehandle_init(*vpp, FUFH_RDWR, NULL, foo->fh); + fuse_filehandle_init(*vpp, FUFH_RDWR, NULL, td->td_proc->p_pid, cred, + foo->fh); fuse_vnode_open(*vpp, foo->open_flags, td); cache_purge_negative(dvp); @@ -597,7 +609,7 @@ fuse_vnop_inactive(struct vop_inactive_args *ap) LIST_FOREACH_SAFE(fufh, &fvdat->handles, next, fufh_tmp) { if (need_flush && vp->v_type == VREG) { if ((VTOFUD(vp)->flag & FN_SIZECHANGE) != 0) { - fuse_vnode_savesize(vp, NULL); + fuse_vnode_savesize(vp, NULL, 0); } if (fuse_data_cache_invalidate || (fvdat->flag & FN_REVOKED) != 0) @@ -1194,6 +1206,7 @@ fuse_vnop_open(struct vop_open_args *ap) int mode = ap->a_mode; struct thread *td = ap->a_td; struct ucred *cred = ap->a_cred; + pid_t pid = td->td_proc->p_pid; fufh_type_t fufh_type; struct fuse_vnode_data *fvdat; @@ -1209,7 +1222,7 @@ fuse_vnop_open(struct vop_open_args *ap) fufh_type = fuse_filehandle_xlate_from_fflags(mode); - if (fuse_filehandle_validrw(vp, fufh_type) != FUFH_INVALID) { + if (fuse_filehandle_validrw(vp, fufh_type, cred, pid)) { fuse_vnode_open(vp, 0, td); return 0; } @@ -1257,6 +1270,7 @@ fuse_vnop_read(struct vop_read_args *ap) struct uio *uio = ap->a_uio; int ioflag = ap->a_ioflag; struct ucred *cred = ap->a_cred; + pid_t pid = curthread->td_proc->p_pid; if (fuse_isdeadfs(vp)) { return ENXIO; @@ -1266,7 +1280,7 @@ fuse_vnop_read(struct vop_read_args *ap) ioflag |= IO_DIRECT; } - return fuse_io_dispatch(vp, uio, ioflag, cred); + return fuse_io_dispatch(vp, uio, ioflag, cred, pid); } /* @@ -1285,12 +1299,11 @@ fuse_vnop_readdir(struct vop_readdir_args *ap) struct vnode *vp = ap->a_vp; struct uio *uio = ap->a_uio; struct ucred *cred = ap->a_cred; - struct fuse_filehandle *fufh = NULL; struct fuse_iov cookediov; - int err = 0; int freefufh = 0; + pid_t pid = curthread->td_proc->p_pid; if (fuse_isdeadfs(vp)) { return ENXIO; @@ -1300,7 +1313,7 @@ fuse_vnop_readdir(struct vop_readdir_args *ap) return EINVAL; } - if ((err = fuse_filehandle_get(vp, FUFH_RDONLY, &fufh)) != 0) { + if ((err = fuse_filehandle_get_dir(vp, &fufh, cred, pid)) != 0) { SDT_PROBE2(fuse, , vnops, trace, 1, "calling readdir() before open()"); err = fuse_filehandle_open(vp, O_RDONLY, &fufh, NULL, cred); @@ -1550,6 +1563,7 @@ fuse_vnop_setattr(struct vop_setattr_args *ap) struct fuse_dispatcher fdi; struct fuse_setattr_in *fsai; struct fuse_access_param facp; + pid_t pid = td->td_proc->p_pid; int err = 0; enum vtype vtyp; @@ -1589,7 +1603,7 @@ fuse_vnop_setattr(struct vop_setattr_args *ap) newsize = vap->va_size; fsai->valid |= FATTR_SIZE; - fuse_filehandle_getrw(vp, FUFH_WRONLY, &fufh); + fuse_filehandle_getrw(vp, FUFH_WRONLY, &fufh, cred, pid); if (fufh) { fsai->fh = fufh->fh_id; fsai->valid |= FATTR_FH; @@ -1760,6 +1774,7 @@ fuse_vnop_write(struct vop_write_args *ap) struct uio *uio = ap->a_uio; int ioflag = ap->a_ioflag; struct ucred *cred = ap->a_cred; + pid_t pid = curthread->td_proc->p_pid; int err; if (fuse_isdeadfs(vp)) { @@ -1773,7 +1788,7 @@ fuse_vnop_write(struct vop_write_args *ap) ioflag |= IO_DIRECT; } - return fuse_io_dispatch(vp, uio, ioflag, cred); + return fuse_io_dispatch(vp, uio, ioflag, cred, pid); } SDT_PROBE_DEFINE1(fuse, , vnops, vnop_getpages_error, "int"); @@ -1797,6 +1812,7 @@ fuse_vnop_getpages(struct vop_getpages_args *ap) struct thread *td; struct ucred *cred; vm_page_t *pages; + pid_t pid = curthread->td_proc->p_pid; vp = ap->a_vp; KASSERT(vp->v_object, ("objectless vp passed to getpages")); @@ -1846,7 +1862,7 @@ fuse_vnop_getpages(struct vop_getpages_args *ap) uio.uio_rw = UIO_READ; uio.uio_td = td; - error = fuse_io_dispatch(vp, &uio, IO_DIRECT, cred); + error = fuse_io_dispatch(vp, &uio, IO_DIRECT, cred, pid); pmap_qremove(kva, npages); uma_zfree(fuse_pbuf_zone, bp); @@ -1929,6 +1945,7 @@ fuse_vnop_putpages(struct vop_putpages_args *ap) struct ucred *cred; vm_page_t *pages; vm_ooffset_t fsize; + pid_t pid = curthread->td_proc->p_pid; vp = ap->a_vp; KASSERT(vp->v_object, ("objectless vp passed to putpages")); @@ -1978,7 +1995,7 @@ fuse_vnop_putpages(struct vop_putpages_args *ap) uio.uio_rw = UIO_WRITE; uio.uio_td = td; - error = fuse_io_dispatch(vp, &uio, IO_DIRECT, cred); + error = fuse_io_dispatch(vp, &uio, IO_DIRECT, cred, pid); pmap_qremove(kva, npages); uma_zfree(fuse_pbuf_zone, bp); Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Mon Apr 1 20:03:53 2019 (r345780) +++ projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Mon Apr 1 20:42:15 2019 (r345781) @@ -99,8 +99,7 @@ TEST_F(AllowOther, allowed) * visible to root. The second process is unprivileged and shouldn't be able * to open the file, but does thanks to the bug */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236844 */ -TEST_F(AllowOther, DISABLED_privilege_escalation) +TEST_F(AllowOther, privilege_escalation) { const static char FULLPATH[] = "mountpoint/some_file.txt"; const static char RELPATH[] = "some_file.txt"; Modified: projects/fuse2/tests/sys/fs/fusefs/open.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/open.cc Mon Apr 1 20:03:53 2019 (r345780) +++ projects/fuse2/tests/sys/fs/fusefs/open.cc Mon Apr 1 20:42:15 2019 (r345781) @@ -165,8 +165,7 @@ TEST_F(Open, fifo) * credentials open the same file, even if they use the same mode. This is * necessary so that the daemon can validate each set of credentials. */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236844 */ -TEST_F(Open, DISABLED_multiple_creds) +TEST_F(Open, multiple_creds) { const static char FULLPATH[] = "mountpoint/some_file.txt"; const static char RELPATH[] = "some_file.txt"; From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:59 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 426E9DC123 for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yt135Nz4P2j; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 5ACC519EA5; Tue, 3 Sep 2019 14:05:52 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 88CE7160FC; Fri, 29 Mar 2019 21:52:13 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2ED658405A; Fri, 29 Mar 2019 21:52:13 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1BA90160FB; Fri, 29 Mar 2019 21:52:13 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id D75BB160F3 for ; Fri, 29 Mar 2019 21:52:10 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9107C8403E; Fri, 29 Mar 2019 21:52:10 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6984E5017; Fri, 29 Mar 2019 21:52:10 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2TLqARe090400; Fri, 29 Mar 2019 21:52:10 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2TLqAEj090399; Fri, 29 Mar 2019 21:52:10 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903292152.x2TLqAEj090399@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345717 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345717 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2ED658405A X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.94)[-0.943,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:00 -0000 X-Original-Date: Fri, 29 Mar 2019 21:52:10 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:00 -0000 Author: asomers Date: Fri Mar 29 21:52:10 2019 New Revision: 345717 URL: https://svnweb.freebsd.org/changeset/base/345717 Log: fusefs: test that open(2) can return a writable fd for a readonly file Surprisingly, open(..., O_WRONLY | O_CREAT, 0444) should work. POSIX requires it. But it didn't work in early FUSE implementations. Add a regression test so that our FUSE driver doesn't make the same mistake. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/create.cc Modified: projects/fuse2/tests/sys/fs/fusefs/create.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/create.cc Fri Mar 29 21:45:20 2019 (r345716) +++ projects/fuse2/tests/sys/fs/fusefs/create.cc Fri Mar 29 21:52:10 2019 (r345717) @@ -37,8 +37,24 @@ extern "C" { using namespace testing; -class Create: public FuseTest {}; +class Create: public FuseTest { +public: +void expect_create(const char *relpath, ProcessMockerT r) +{ + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + const char *name = (const char*)in->body.bytes + + sizeof(fuse_open_in); + return (in->header.opcode == FUSE_CREATE && + (0 == strcmp(relpath, name))); + }, Eq(true)), + _) + ).WillOnce(Invoke(r)); +} + +}; + /* * If FUSE_CREATE sets the attr_valid, then subsequent GETATTRs should use the * attribute cache @@ -53,22 +69,13 @@ TEST_F(Create, DISABLED_attr_cache) int fd; EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT))); - - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - const char *name = (const char*)in->body.bytes + - sizeof(fuse_open_in); - return (in->header.opcode == FUSE_CREATE && - (0 == strcmp(RELPATH, name))); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) { + expect_create(RELPATH, ReturnImmediate([=](auto in __unused, auto out) { SET_OUT_HEADER_LEN(out, create); out->body.create.entry.attr.mode = S_IFREG | mode; out->body.create.entry.nodeid = ino; out->body.create.entry.entry_valid = UINT64_MAX; out->body.create.entry.attr_valid = UINT64_MAX; - }))); + })); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { @@ -95,16 +102,7 @@ TEST_F(Create, eexist) mode_t mode = 0755; EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT))); - - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - const char *name = (const char*)in->body.bytes + - sizeof(fuse_open_in); - return (in->header.opcode == FUSE_CREATE && - (0 == strcmp(RELPATH, name))); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnErrno(EEXIST))); + expect_create(RELPATH, ReturnErrno(EEXIST)); EXPECT_NE(0, open(FULLPATH, O_CREAT | O_EXCL, mode)); EXPECT_EQ(EEXIST, errno); } @@ -122,20 +120,11 @@ TEST_F(Create, Enosys) int fd; EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT))); + expect_create(RELPATH, ReturnErrno(ENOSYS)); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { const char *name = (const char*)in->body.bytes + - sizeof(fuse_open_in); - return (in->header.opcode == FUSE_CREATE && - (0 == strcmp(RELPATH, name))); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnErrno(ENOSYS))); - - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - const char *name = (const char*)in->body.bytes + sizeof(fuse_mknod_in); return (in->header.opcode == FUSE_MKNOD && in->body.mknod.mode == (S_IFREG | mode) && @@ -199,22 +188,13 @@ TEST_F(Create, entry_cache_negative) /* create will first do a LOOKUP, adding a negative cache entry */ EXPECT_LOOKUP(1, RELPATH).WillOnce(ReturnNegativeCache(&entry_valid)); - - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - const char *name = (const char*)in->body.bytes + - sizeof(fuse_open_in); - return (in->header.opcode == FUSE_CREATE && - (0 == strcmp(RELPATH, name))); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnImmediate([=](auto i __unused, auto out) { + expect_create(RELPATH, ReturnImmediate([=](auto in __unused, auto out) { SET_OUT_HEADER_LEN(out, create); out->body.create.entry.attr.mode = S_IFREG | mode; out->body.create.entry.nodeid = ino; out->body.create.entry.entry_valid = UINT64_MAX; out->body.create.entry.attr_valid = UINT64_MAX; - }))); + })); /* Until the attr cache is working, we may send an additional GETATTR */ EXPECT_CALL(*m_mock, process( @@ -252,20 +232,12 @@ TEST_F(Create, entry_cache_negative_purge) .RetiresOnSaturation(); /* Then the CREATE should purge the negative cache entry */ - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - const char *name = (const char*)in->body.bytes + - sizeof(fuse_open_in); - return (in->header.opcode == FUSE_CREATE && - (0 == strcmp(RELPATH, name))); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnImmediate([=](auto i __unused, auto out) { + expect_create(RELPATH, ReturnImmediate([=](auto in __unused, auto out) { SET_OUT_HEADER_LEN(out, create); out->body.create.entry.attr.mode = S_IFREG | mode; out->body.create.entry.nodeid = ino; out->body.create.entry.attr_valid = UINT64_MAX; - }))); + })); /* Until the attr cache is working, we may send an additional GETATTR */ EXPECT_CALL(*m_mock, process( @@ -301,16 +273,8 @@ TEST_F(Create, eperm) mode_t mode = 0755; EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT))); + expect_create(RELPATH, ReturnErrno(EPERM)); - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - const char *name = (const char*)in->body.bytes + - sizeof(fuse_open_in); - return (in->header.opcode == FUSE_CREATE && - (0 == strcmp(RELPATH, name))); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnErrno(EPERM))); EXPECT_NE(0, open(FULLPATH, O_CREAT | O_EXCL, mode)); EXPECT_EQ(EPERM, errno); } @@ -324,22 +288,56 @@ TEST_F(Create, ok) int fd; EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT))); + expect_create(RELPATH, ReturnImmediate([=](auto in __unused, auto out) { + SET_OUT_HEADER_LEN(out, create); + out->body.create.entry.attr.mode = S_IFREG | mode; + out->body.create.entry.nodeid = ino; + out->body.create.entry.entry_valid = UINT64_MAX; + out->body.create.entry.attr_valid = UINT64_MAX; + })); + /* Until the attr cache is working, we may send an additional GETATTR */ EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { - const char *name = (const char*)in->body.bytes + - sizeof(fuse_open_in); - return (in->header.opcode == FUSE_CREATE && - (0 == strcmp(RELPATH, name))); + return (in->header.opcode == FUSE_GETATTR && + in->header.nodeid == ino); }, Eq(true)), _) - ).WillOnce(Invoke(ReturnImmediate([=](auto i __unused, auto out) { + ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { + SET_OUT_HEADER_LEN(out, attr); + out->body.attr.attr.ino = ino; // Must match nodeid + out->body.attr.attr.mode = S_IFREG | mode; + }))); + + fd = open(FULLPATH, O_CREAT | O_EXCL, mode); + EXPECT_LE(0, fd) << strerror(errno); + /* Deliberately leak fd. close(2) will be tested in release.cc */ +} + +/* + * A regression test for a bug that affected old FUSE implementations: + * open(..., O_WRONLY | O_CREAT, 0444) should work despite the seeming + * contradiction between O_WRONLY and 0444 + * + * For example: + * https://bugs.launchpad.net/ubuntu/+source/sshfs-fuse/+bug/44886 + */ +TEST_F(Create, wronly_0444) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + mode_t mode = 0444; + uint64_t ino = 42; + int fd; + + EXPECT_LOOKUP(1, RELPATH).WillOnce(Invoke(ReturnErrno(ENOENT))); + expect_create(RELPATH, ReturnImmediate([=](auto in __unused, auto out) { SET_OUT_HEADER_LEN(out, create); out->body.create.entry.attr.mode = S_IFREG | mode; out->body.create.entry.nodeid = ino; out->body.create.entry.entry_valid = UINT64_MAX; out->body.create.entry.attr_valid = UINT64_MAX; - }))); + })); /* Until the attr cache is working, we may send an additional GETATTR */ EXPECT_CALL(*m_mock, process( @@ -351,10 +349,10 @@ TEST_F(Create, ok) ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { SET_OUT_HEADER_LEN(out, attr); out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | 0644; + out->body.attr.attr.mode = S_IFREG | mode; }))); - fd = open(FULLPATH, O_CREAT | O_EXCL, mode); + fd = open(FULLPATH, O_CREAT | O_WRONLY, mode); EXPECT_LE(0, fd) << strerror(errno); /* Deliberately leak fd. close(2) will be tested in release.cc */ } From owner-svn-src-projects@freebsd.org Tue Sep 3 14:05:59 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3F8D4DC120 for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yt3cxnz4P30; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 75EBD19EB0; Tue, 3 Sep 2019 14:05:52 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 149CB18E0D; Sat, 30 Mar 2019 00:54:07 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 372FB8A890; Sat, 30 Mar 2019 00:54:06 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1592718DC3; Sat, 30 Mar 2019 00:54:06 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id EA29918DBB for ; Sat, 30 Mar 2019 00:54:02 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B62508A887; Sat, 30 Mar 2019 00:54:02 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 680D66F71; Sat, 30 Mar 2019 00:54:02 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2U0s2ej088163; Sat, 30 Mar 2019 00:54:02 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2U0s2le088162; Sat, 30 Mar 2019 00:54:02 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903300054.x2U0s2le088162@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345721 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345721 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 372FB8A890 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.93 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.94)[-0.938,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:05:59 -0000 X-Original-Date: Sat, 30 Mar 2019 00:54:02 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:05:59 -0000 Author: asomers Date: Sat Mar 30 00:54:01 2019 New Revision: 345721 URL: https://svnweb.freebsd.org/changeset/base/345721 Log: fusefs: fix more tests when data caching is disabled readahead is also disallowed when data_cache_mode=0. This should've been part of r345720. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/read.cc Modified: projects/fuse2/tests/sys/fs/fusefs/read.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/read.cc Sat Mar 30 00:35:59 2019 (r345720) +++ projects/fuse2/tests/sys/fs/fusefs/read.cc Sat Mar 30 00:54:01 2019 (r345721) @@ -78,7 +78,7 @@ class AsyncRead: public AioRead { } }; -class ReadMmap: public Read { +class ReadCacheable: public Read { public: virtual void SetUp() { const char *node = "vfs.fusefs.data_cache_mode"; @@ -95,7 +95,7 @@ virtual void SetUp() { } }; -class ReadAhead: public Read, public WithParamInterface { +class ReadAhead: public ReadCacheable, public WithParamInterface { virtual void SetUp() { m_maxreadahead = GetParam(); Read::SetUp(); @@ -467,7 +467,7 @@ TEST_F(Read, keep_cache_disabled) /* Deliberately leak fd0 and fd1. */ } -TEST_F(ReadMmap, mmap) +TEST_F(ReadCacheable, mmap) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -600,7 +600,7 @@ TEST_F(Read, read) } /* If the filesystem allows it, the kernel should try to readahead */ -TEST_F(Read, default_readahead) +TEST_F(ReadCacheable, default_readahead) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -638,7 +638,7 @@ TEST_F(Read, default_readahead) } /* Reading with sendfile should work (though it obviously won't be 0-copy) */ -TEST_F(ReadMmap, sendfile) +TEST_F(ReadCacheable, sendfile) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -685,7 +685,7 @@ TEST_F(ReadMmap, sendfile) /* sendfile should fail gracefully if fuse declines the read */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236466 */ -TEST_F(ReadMmap, DISABLED_sendfile_eio) +TEST_F(ReadCacheable, DISABLED_sendfile_eio) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:07 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2C262DC26B for ; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yy1CnMz4P73; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 370A21A03B; Tue, 3 Sep 2019 14:05:56 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id AE38D1568F; Mon, 1 Apr 2019 21:26:09 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 32C6B8ABB4; Mon, 1 Apr 2019 21:26:09 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1A6D015666; Mon, 1 Apr 2019 21:26:09 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E486515664 for ; Mon, 1 Apr 2019 21:26:05 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8F5948ABAF; Mon, 1 Apr 2019 21:26:05 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6A0F91C499; Mon, 1 Apr 2019 21:26:05 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31LQ5e6071368; Mon, 1 Apr 2019 21:26:05 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31LQ5ed071367; Mon, 1 Apr 2019 21:26:05 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904012126.x31LQ5ed071367@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345784 - projects/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test X-SVN-Commit-Revision: 345784 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 32C6B8ABB4 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.968,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:07 -0000 X-Original-Date: Mon, 1 Apr 2019 21:26:05 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:07 -0000 Author: ngie Date: Mon Apr 1 21:26:05 2019 New Revision: 345784 URL: https://svnweb.freebsd.org/changeset/base/345784 Log: Prune project branch, integrated into ^/head as r345783 Deleted: projects/capsicum-test/ From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:00 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E95D7DC14E for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv1bWZz4P4W; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 68D4C19F20; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id DDBAB15A52; Sun, 31 Mar 2019 06:16:11 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4398A6B847; Sun, 31 Mar 2019 06:16:11 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1333215A43; Sun, 31 Mar 2019 06:16:11 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 90CB915A41 for ; Sun, 31 Mar 2019 06:16:08 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 449486B844; Sun, 31 Mar 2019 06:16:08 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id ED06222B85; Sun, 31 Mar 2019 06:16:07 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2V6G7J6033183; Sun, 31 Mar 2019 06:16:07 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2V6G70f033182; Sun, 31 Mar 2019 06:16:07 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903310616.x2V6G70f033182@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345748 - projects/import-googletest-1.8.1 X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/import-googletest-1.8.1 X-SVN-Commit-Revision: 345748 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4398A6B847 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.96)[-0.955,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:01 -0000 X-Original-Date: Sun, 31 Mar 2019 06:16:07 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:01 -0000 Author: ngie Date: Sun Mar 31 06:16:07 2019 New Revision: 345748 URL: https://svnweb.freebsd.org/changeset/base/345748 Log: Prune branch merged into ^/head as r345203 Deleted: projects/import-googletest-1.8.1/ From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:00 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 43915DC126 for ; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yt157Xz4P2k; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 58B6419EA3; Tue, 3 Sep 2019 14:05:52 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 1800D15D27; Fri, 29 Mar 2019 21:45:25 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 53BEE8382B; Fri, 29 Mar 2019 21:45:24 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1962E15CC7; Fri, 29 Mar 2019 21:45:24 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 1795F15CC5 for ; Fri, 29 Mar 2019 21:45:21 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C34FE83823; Fri, 29 Mar 2019 21:45:20 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9606A4E7E; Fri, 29 Mar 2019 21:45:20 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2TLjKmc086709; Fri, 29 Mar 2019 21:45:20 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2TLjKZn086708; Fri, 29 Mar 2019 21:45:20 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903292145.x2TLjKZn086708@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345716 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345716 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 53BEE8382B X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.967,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:00 -0000 X-Original-Date: Fri, 29 Mar 2019 21:45:20 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:00 -0000 Author: ngie Date: Fri Mar 29 21:45:20 2019 New Revision: 345716 URL: https://svnweb.freebsd.org/changeset/base/345716 Log: Merge ^/vendor/google/capsicum-test/dist@r345715 to diff reduce local changes with changes accepted upstream Modified: Directory Properties: projects/capsicum-test/contrib/capsicum-test/ (props changed) From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:02 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 50401DC17E for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv1yL6z4P4d; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 747AA19F2E; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id AA04615B48; Sun, 31 Mar 2019 06:20:04 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 397E96B936; Sun, 31 Mar 2019 06:20:04 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 13CCB15B35; Sun, 31 Mar 2019 06:20:04 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 9F64715B33 for ; Sun, 31 Mar 2019 06:20:01 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 49DAE6B932; Sun, 31 Mar 2019 06:20:01 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1EA9622B89; Sun, 31 Mar 2019 06:20:01 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2V6K07W033416; Sun, 31 Mar 2019 06:20:00 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2V6K0ih033415; Sun, 31 Mar 2019 06:20:00 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903310620.x2V6K0ih033415@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345749 - projects/kyua-use-googletest-test-interface/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/kyua-use-googletest-test-interface/share/mk X-SVN-Commit-Revision: 345749 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 397E96B936 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.96)[-0.957,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:02 -0000 X-Original-Date: Sun, 31 Mar 2019 06:20:00 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:02 -0000 Author: ngie Date: Sun Mar 31 06:20:00 2019 New Revision: 345749 URL: https://svnweb.freebsd.org/changeset/base/345749 Log: Improve googletest integration with kyua This change modifies googletest.test.mk to use experimental googletest support in kyua, available as part of the `add-googletest-support` feature branch in https://github.com/ngie-eign/kyua. The experimental support provides test suite and test case level execution and result reporting, instead of requiring googletests to be run as the plain tests. As such, make the default GTESTS test engine interface googletest, providing a backwards compatibility knob, GTESTS_USE_PLAIN_TEST_INTERFACE, so end-users with older versions of kyua can run the googletest tests. While here, provide a per-PROG test interface hook for GTESTS. In short, not all of the googlemock and googletest provided tests conform to the format described in the googletest docs. Thus, they are better run as plain tests. Modified: projects/kyua-use-googletest-test-interface/share/mk/googletest.test.mk Modified: projects/kyua-use-googletest-test-interface/share/mk/googletest.test.mk ============================================================================== --- projects/kyua-use-googletest-test-interface/share/mk/googletest.test.mk Sun Mar 31 06:16:07 2019 (r345748) +++ projects/kyua-use-googletest-test-interface/share/mk/googletest.test.mk Sun Mar 31 06:20:00 2019 (r345749) @@ -26,6 +26,16 @@ # manpage. GTESTS?= +# Default test interface for googletest +# +# This knob should be used if the version of kyua in use doesn't support the +# `googletest` test interface. +.ifdef GTESTS_USE_PLAIN_TEST_INTERFACE +GTESTS_DEFAULT_TEST_INTERFACE= plain +.else +GTESTS_DEFAULT_TEST_INTERFACE= googletest +.endif + .if !empty(GTESTS) .include @@ -36,6 +46,6 @@ BINDIR.${_T}= ${TESTSDIR} CXXFLAGS.${_T}+= ${GTESTS_CXXFLAGS} MAN.${_T}?= # empty SRCS.${_T}?= ${_T}.cc -TEST_INTERFACE.${_T}= plain +TEST_INTERFACE.${_T}?= ${GTESTS_DEFAULT_TEST_INTERFACE} .endfor .endif From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:05 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2390ADC1DD for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw2B7rz4P5Q; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 3577719F7D; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id CDA39C1F6; Mon, 1 Apr 2019 13:30:18 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3442D6F0D4; Mon, 1 Apr 2019 13:30:18 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0DF26C1D2; Mon, 1 Apr 2019 13:30:18 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id EE8D7C1CF; Mon, 1 Apr 2019 13:30:14 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8749F6F0CC; Mon, 1 Apr 2019 13:30:14 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (localhost [127.0.0.1]) by gndrsh.dnsmgr.net (8.13.3/8.13.3) with ESMTP id x31DUC00015186; Mon, 1 Apr 2019 06:30:12 -0700 (PDT) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: (from freebsd@localhost) by gndrsh.dnsmgr.net (8.13.3/8.13.3/Submit) id x31DUCYY015185; Mon, 1 Apr 2019 06:30:12 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201904011330.x31DUCYY015185@gndrsh.dnsmgr.net> Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl In-Reply-To: To: Mateusz Guzik CC: Kristof Provost , src-committers@freebsd.org, svn-src-projects@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3442D6F0D4 X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.96 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.957,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:05 -0000 X-Original-Date: Mon, 1 Apr 2019 06:30:12 -0700 (PDT) X-List-Received-Date: Tue, 03 Sep 2019 14:06:05 -0000 > On 4/1/19, Kristof Provost wrote: > > Author: kp > > Date: Mon Apr 1 06:51:32 2019 > > New Revision: 345760 > > URL: https://svnweb.freebsd.org/changeset/base/345625 > > > > Log: > > pf: Remove obsolete pf > > > > pf in FreeBSD lags years behind OpenBSD's pf. > > Remove it. > > > > Users are advised to migrate to ipf. > > > > I think you jumped the gun here. I understand maintaing pf in isolation > is a burden and it prompted the removal, but there are other projects > which also have the port. > > I think a reasonable course of action would be to maintain a portable pf > port as a join effort with NetBSD. To that end you can start with > replacing FreeBSD network stack with theirs to increase compatibility. > > After that it's all smooth sailing. If there is desire to create/maintain a *BSD pf port within the communtiy I would love to see that team formed. I have direct feedback from some community that would like to see FreeBSD update its pf code, is there some people who would like to take this work on? I had started a private conversation with Kristof on this just a few days ago, but was waiting to return to continue that conversation, but since a public one is happening lets just all go over to a list and discuss it? > -- > Mateusz Guzik -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:05 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 24746DC1DF for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw29dFz4P5P; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 2632919F77; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 7293BBBD6; Mon, 1 Apr 2019 13:05:00 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3D4A76E447; Mon, 1 Apr 2019 13:05:00 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 14F91BBD4; Mon, 1 Apr 2019 13:05:00 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5AA18BBD1; Mon, 1 Apr 2019 13:04:57 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 8074E6E442; Mon, 1 Apr 2019 13:04:56 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (localhost [127.0.0.1]) by gndrsh.dnsmgr.net (8.13.3/8.13.3) with ESMTP id x31D4s1v015087; Mon, 1 Apr 2019 06:04:54 -0700 (PDT) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: (from freebsd@localhost) by gndrsh.dnsmgr.net (8.13.3/8.13.3/Submit) id x31D4sCH015086; Mon, 1 Apr 2019 06:04:54 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201904011304.x31D4sCH015086@gndrsh.dnsmgr.net> Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl In-Reply-To: <20190401055318.GI7163@vega.codepro.be> To: Kristof Provost CC: src-committers@freebsd.org, svn-src-projects@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3D4A76E447 X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.96 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.962,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:05 -0000 X-Original-Date: Mon, 1 Apr 2019 06:04:53 -0700 (PDT) X-List-Received-Date: Tue, 03 Sep 2019 14:06:05 -0000 > Author: kp > Date: Mon Apr 1 06:51:32 2019 > New Revision: 345760 > URL: https://svnweb.freebsd.org/changeset/base/345625 > > Log: > pf: Remove obsolete pf > > pf in FreeBSD lags years behind OpenBSD's pf. > Remove it. > > Users are advised to migrate to ipf. WOW! Where was any discussion on arch@ or any other place had about this action. I have just come back from ietf/104 with very specific requests about the state of this code.... This is totally outside of the normal deprecation model, you have not even committed a warning that this is gone_in_14, which would be more proper model following. > Deleted: > head/contrib/pf/authpf/authpf.8 > head/contrib/pf/authpf/authpf.c > head/contrib/pf/authpf/pathnames.h > head/contrib/pf/ftp-proxy/filter.c > head/contrib/pf/ftp-proxy/filter.h > head/contrib/pf/ftp-proxy/ftp-proxy.8 > head/contrib/pf/ftp-proxy/ftp-proxy.c > head/contrib/pf/libevent/buffer.c > head/contrib/pf/libevent/evbuffer.c > head/contrib/pf/libevent/event-internal.h > head/contrib/pf/libevent/event.c > head/contrib/pf/libevent/event.h > head/contrib/pf/libevent/evsignal.h > head/contrib/pf/libevent/kqueue.c > head/contrib/pf/libevent/log.c > head/contrib/pf/libevent/log.h > head/contrib/pf/libevent/poll.c > head/contrib/pf/libevent/select.c > head/contrib/pf/libevent/signal.c > head/contrib/pf/pflogd/pflogd.8 > head/contrib/pf/pflogd/pflogd.c > head/contrib/pf/pflogd/pflogd.h > head/contrib/pf/pflogd/pidfile.c > head/contrib/pf/pflogd/pidfile.h > head/contrib/pf/pflogd/privsep.c > head/contrib/pf/pflogd/privsep_fdpass.c > head/contrib/pf/tftp-proxy/filter.c > head/contrib/pf/tftp-proxy/filter.h > head/contrib/pf/tftp-proxy/tftp-proxy.8 > head/contrib/pf/tftp-proxy/tftp-proxy.c > head/contrib/tcpdump/print-pflog.c > head/contrib/tcpdump/print-pfsync.c > head/sbin/pfctl/Makefile > head/sbin/pfctl/parse.y > head/sbin/pfctl/pf.os > head/sbin/pfctl/pf_print_state.c > head/sbin/pfctl/pfctl.8 > head/sbin/pfctl/pfctl.c > head/sbin/pfctl/pfctl.h > head/sbin/pfctl/pfctl_altq.c > head/sbin/pfctl/pfctl_optimize.c > head/sbin/pfctl/pfctl_osfp.c > head/sbin/pfctl/pfctl_parser.c > head/sbin/pfctl/pfctl_parser.h > head/sbin/pfctl/pfctl_qstats.c > head/sbin/pfctl/pfctl_radix.c > head/sbin/pfctl/pfctl_table.c > head/sys/modules/pf/Makefile > head/sys/modules/pflog/Makefile > head/sys/modules/pfsync/Makefile > head/sys/netpfil/pf/if_pflog.c > head/sys/netpfil/pf/if_pfsync.c > head/sys/netpfil/pf/in4_cksum.c > head/sys/netpfil/pf/pf.c > head/sys/netpfil/pf/pf.h > head/sys/netpfil/pf/pf_altq.h > head/sys/netpfil/pf/pf_if.c > head/sys/netpfil/pf/pf_ioctl.c > head/sys/netpfil/pf/pf_lb.c > head/sys/netpfil/pf/pf_mtag.h > head/sys/netpfil/pf/pf_norm.c > head/sys/netpfil/pf/pf_osfp.c > head/sys/netpfil/pf/pf_ruleset.c > head/sys/netpfil/pf/pf_table.c > > Index: contrib/pf/authpf/authpf.8 > =================================================================== > --- contrib/pf/authpf/authpf.8 (revision 345223) > +++ contrib/pf/authpf/authpf.8 (working copy) > @@ -1,584 +0,0 @@ > -.\" $FreeBSD$ > -.\" $OpenBSD: authpf.8,v 1.47 2009/01/06 03:11:50 mcbride Exp $ > -.\" > -.\" Copyright (c) 1998-2007 Bob Beck (beck@openbsd.org>. All rights reserved. > -.\" > -.\" Permission to use, copy, modify, and distribute this software for any > -.\" purpose with or without fee is hereby granted, provided that the above > -.\" copyright notice and this permission notice appear in all copies. > -.\" > -.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES > -.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > -.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR > -.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES > -.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > -.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > -.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > -.\" > -.Dd January 29 2014 > -.Dt AUTHPF 8 > -.Os > -.Sh NAME > -.Nm authpf , > -.Nm authpf-noip > -.Nd authenticating gateway user shell > -.Sh SYNOPSIS > -.Nm authpf > -.Nm authpf-noip > -.Sh DESCRIPTION > -.Nm > -is a user shell for authenticating gateways. > -It is used to change > -.Xr pf 4 > -rules when a user authenticates and starts a session with > -.Xr sshd 8 > -and to undo these changes when the user's session exits. > -Typical use would be for a gateway that authenticates users before > -allowing them Internet use, or a gateway that allows different users into > -different places. > -Combined with properly set up filter rules and secure switches, > -.Nm > -can be used to ensure users are held accountable for their network traffic. > -It is meant to be used with users who can connect via > -.Xr ssh 1 > -only, and requires the > -.Xr pf 4 > -subsystem and an > -.Xr fdescfs 5 > -file system mounted at > -.Pa /dev/fd > -to be enabled. > -.Pp > -.Nm authpf-noip > -is a user shell > -which allows multiple connections to take > -place from the same IP address. > -It is useful primarily in cases where connections are tunneled via > -the gateway system, and can be directly associated with the user name. > -It cannot ensure accountability when > -classifying connections by IP address; > -in this case the client's IP address > -is not provided to the packet filter via the > -.Ar client_ip > -macro or the > -.Ar authpf_users > -table. > -Additionally, states associated with the client IP address > -are not purged when the session is ended. > -.Pp > -To use either > -.Nm > -or > -.Nm authpf-noip , > -the user's shell needs to be set to > -.Pa /usr/sbin/authpf > -or > -.Pa /usr/sbin/authpf-noip . > -.Pp > -.Nm > -uses the > -.Xr pf.conf 5 > -syntax to change filter and translation rules for an individual > -user or client IP address as long as a user maintains an active > -.Xr ssh 1 > -session, and logs the successful start and end of a session to > -.Xr syslogd 8 . > -.Nm > -retrieves the client's connecting IP address via the > -.Ev SSH_CLIENT > -environment variable and, after performing additional access checks, > -reads a template file to determine what filter and translation rules > -(if any) to add, and > -maintains the list of IP addresses of connected users in the > -.Ar authpf_users > -table. > -On session exit the same rules and table entries that were added at startup > -are removed, and all states associated with the client's IP address are purged. > -.Pp > -Each > -.Nm > -process stores its rules in a separate ruleset inside a > -.Xr pf 4 > -.Pa anchor > -shared by all > -.Nm > -processes. > -By default, the > -.Pa anchor > -name "authpf" is used, and the ruleset names equal the username and PID of the > -.Nm > -processes as "username(pid)". > -The following rules need to be added to the main ruleset > -.Pa /etc/pf.conf > -in order to cause evaluation of any > -.Nm > -rules: > -.Bd -literal -offset indent > -nat-anchor "authpf/*" > -rdr-anchor "authpf/*" > -binat-anchor "authpf/*" > -anchor "authpf/*" > -.Ed > -.Pp > -The "/*" at the end of the anchor name is required for > -.Xr pf 4 > -to process the rulesets attached to the anchor by > -.Nm authpf . > -.Sh FILTER AND TRANSLATION RULES > -Filter and translation rules for > -.Nm > -use the same format described in > -.Xr pf.conf 5 . > -The only difference is that these rules may (and probably should) use > -the macro > -.Em user_ip , > -which is assigned the connecting IP address whenever > -.Nm > -is run. > -Additionally, the macro > -.Em user_id > -is assigned the user name. > -.Pp > -Filter and translation rules are stored in a file called > -.Pa authpf.rules . > -This file will first be searched for in > -.Pa /etc/authpf/users/$USER/ > -and then in > -.Pa /etc/authpf/ . > -Only one of these files will be used if both are present. > -.Pp > -Per-user rules from the > -.Pa /etc/authpf/users/$USER/ > -directory are intended to be used when non-default rules > -are needed on an individual user basis. > -It is important to ensure that a user can not write or change > -these configuration files. > -.Pp > -The > -.Pa authpf.rules > -file must exist in one of the above locations for > -.Nm > -to run. > -.Sh CONFIGURATION > -Options are controlled by the > -.Pa /etc/authpf/authpf.conf > -file. > -If the file is empty, defaults are used for all > -configuration options. > -The file consists of pairs of the form > -.Li name=value , > -one per line. > -Currently, the allowed values are as follows: > -.Bl -tag -width Ds > -.It anchor=name > -Use the specified > -.Pa anchor > -name instead of "authpf". > -.It table=name > -Use the specified > -.Pa table > -name instead of "authpf_users". > -.El > -.Sh USER MESSAGES > -On successful invocation, > -.Nm > -displays a message telling the user he or she has been authenticated. > -It will additionally display the contents of the file > -.Pa /etc/authpf/authpf.message > -if the file exists and is readable. > -.Pp > -There exist two methods for providing additional granularity to the control > -offered by > -.Nm > -- it is possible to set the gateway to explicitly allow users who have > -authenticated to > -.Xr ssh 1 > -and deny access to only a few troublesome individuals. > -This is done by creating a file with the banned user's login name as the > -filename in > -.Pa /etc/authpf/banned/ . > -The contents of this file will be displayed to a banned user, thus providing > -a method for informing the user that they have been banned, and where they can > -go and how to get there if they want to have their service restored. > -This is the default behaviour. > -.Pp > -It is also possible to configure > -.Nm > -to only allow specific users access. > -This is done by listing their login names, one per line, in > -.Pa /etc/authpf/authpf.allow . > -A group of users can also be indicated by prepending "%" to the group name, > -and all members of a login class can be indicated by prepending "@" to the > -login class name. > -If "*" is found on a line, then all usernames match. > -If > -.Nm > -is unable to verify the user's permission to use the gateway, it will > -print a brief message and die. > -It should be noted that a ban takes precedence over an allow. > -.Pp > -On failure, messages will be logged to > -.Xr syslogd 8 > -for the system administrator. > -The user does not see these, but will be told the system is unavailable due to > -technical difficulties. > -The contents of the file > -.Pa /etc/authpf/authpf.problem > -will also be displayed if the file exists and is readable. > -.Sh CONFIGURATION ISSUES > -.Nm > -maintains the changed filter rules as long as the user maintains an > -active session. > -It is important to remember however, that the existence > -of this session means the user is authenticated. > -Because of this, it is important to configure > -.Xr sshd 8 > -to ensure the security of the session, and to ensure that the network > -through which users connect is secure. > -.Xr sshd 8 > -should be configured to use the > -.Ar ClientAliveInterval > -and > -.Ar ClientAliveCountMax > -parameters to ensure that a ssh session is terminated quickly if > -it becomes unresponsive, or if arp or address spoofing is used to > -hijack the session. > -Note that TCP keepalives are not sufficient for > -this, since they are not secure. > -Also note that the various SSH tunnelling mechanisms, > -such as > -.Ar AllowTcpForwarding > -and > -.Ar PermitTunnel , > -should be disabled for > -.Nm > -users to prevent them from circumventing restrictions imposed by the > -packet filter ruleset. > -.Pp > -.Nm > -will remove state table entries that were created during a user's > -session. > -This ensures that there will be no unauthenticated traffic > -allowed to pass after the controlling > -.Xr ssh 1 > -session has been closed. > -.Pp > -.Nm > -is designed for gateway machines which typically do not have regular > -(non-administrative) users using the machine. > -An administrator must remember that > -.Nm > -can be used to modify the filter rules through the environment in > -which it is run, and as such could be used to modify the filter rules > -(based on the contents of the configuration files) by regular > -users. > -In the case where a machine has regular users using it, as well > -as users with > -.Nm > -as their shell, the regular users should be prevented from running > -.Nm > -by using the > -.Pa /etc/authpf/authpf.allow > -or > -.Pa /etc/authpf/banned/ > -facilities. > -.Pp > -.Nm > -modifies the packet filter and address translation rules, and because > -of this it needs to be configured carefully. > -.Nm > -will not run and will exit silently if the > -.Pa /etc/authpf/authpf.conf > -file does not exist. > -After considering the effect > -.Nm > -may have on the main packet filter rules, the system administrator may > -enable > -.Nm > -by creating an appropriate > -.Pa /etc/authpf/authpf.conf > -file. > -.Sh EXAMPLES > -.Sy Control Files > -\- To illustrate the user-specific access control > -mechanisms, let us consider a typical user named bob. > -Normally, as long as bob can authenticate himself, the > -.Nm > -program will load the appropriate rules. > -Enter the > -.Pa /etc/authpf/banned/ > -directory. > -If bob has somehow fallen from grace in the eyes of the > -powers-that-be, they can prohibit him from using the gateway by creating > -the file > -.Pa /etc/authpf/banned/bob > -containing a message about why he has been banned from using the network. > -Once bob has done suitable penance, his access may be restored by moving or > -removing the file > -.Pa /etc/authpf/banned/bob . > -.Pp > -Now consider a workgroup containing alice, bob, carol and dave. > -They have a > -wireless network which they would like to protect from unauthorized use. > -To accomplish this, they create the file > -.Pa /etc/authpf/authpf.allow > -which lists their login ids, group prepended with "%", or login class > -prepended with "@", one per line. > -At this point, even if eve could authenticate to > -.Xr sshd 8 , > -she would not be allowed to use the gateway. > -Adding and removing users from > -the work group is a simple matter of maintaining a list of allowed userids. > -If bob once again manages to annoy the powers-that-be, they can ban him from > -using the gateway by creating the familiar > -.Pa /etc/authpf/banned/bob > -file. > -Though bob is listed in the allow file, he is prevented from using > -this gateway due to the existence of a ban file. > -.Pp > -.Sy Distributed Authentication > -\- It is often desirable to interface with a > -distributed password system rather than forcing the sysadmins to keep a large > -number of local password files in sync. > -The > -.Xr login.conf 5 > -mechanism in > -.Ox > -can be used to fork the right shell. > -To make that happen, > -.Xr login.conf 5 > -should have entries that look something like this: > -.Bd -literal -offset indent > -shell-default:shell=/bin/csh > - > -default:\e > - ... > - :shell=/usr/sbin/authpf > - > -daemon:\e > - ... > - :shell=/bin/csh:\e > - :tc=default: > - > -staff:\e > - ... > - :shell=/bin/csh:\e > - :tc=default: > -.Ed > -.Pp > -Using a default password file, all users will get > -.Nm > -as their shell except for root who will get > -.Pa /bin/csh . > -.Pp > -.Sy SSH Configuration > -\- As stated earlier, > -.Xr sshd 8 > -must be properly configured to detect and defeat network attacks. > -To that end, the following options should be added to > -.Xr sshd_config 5 : > -.Bd -literal -offset indent > -Protocol 2 > -ClientAliveInterval 15 > -ClientAliveCountMax 3 > -.Ed > -.Pp > -This ensures that unresponsive or spoofed sessions are terminated within a > -minute, since a hijacker should not be able to spoof ssh keepalive messages. > -.Pp > -.Sy Banners > -\- Once authenticated, the user is shown the contents of > -.Pa /etc/authpf/authpf.message . > -This message may be a screen-full of the appropriate use policy, the contents > -of > -.Pa /etc/motd > -or something as simple as the following: > -.Bd -literal -offset indent > -This means you will be held accountable by the powers that be > -for traffic originating from your machine, so please play nice. > -.Ed > -.Pp > -To tell the user where to go when the system is broken, > -.Pa /etc/authpf/authpf.problem > -could contain something like this: > -.Bd -literal -offset indent > -Sorry, there appears to be some system problem. To report this > -problem so we can fix it, please phone 1-900-314-1597 or send > -an email to remove@bulkmailerz.net. > -.Ed > -.Pp > -.Sy Packet Filter Rules > -\- In areas where this gateway is used to protect a > -wireless network (a hub with several hundred ports), the default rule set as > -well as the per-user rules should probably allow very few things beyond > -encrypted protocols like > -.Xr ssh 1 , > -.Xr ssl 8 , > -or > -.Xr ipsec 4 . > -On a securely switched network, with plug-in jacks for visitors who are > -given authentication accounts, you might want to allow out everything. > -In this context, a secure switch is one that tries to prevent address table > -overflow attacks. > -.Pp > -Example > -.Pa /etc/pf.conf : > -.Bd -literal > -# by default we allow internal clients to talk to us using > -# ssh and use us as a dns server. > -internal_if="fxp1" > -gateway_addr="10.0.1.1" > -nat-anchor "authpf/*" > -rdr-anchor "authpf/*" > -binat-anchor "authpf/*" > -block in on $internal_if from any to any > -pass in quick on $internal_if proto tcp from any to $gateway_addr \e > - port = ssh > -pass in quick on $internal_if proto udp from any to $gateway_addr \e > - port = domain > -anchor "authpf/*" > -.Ed > -.Pp > -.Sy For a switched, wired net > -\- This example > -.Pa /etc/authpf/authpf.rules > -makes no real restrictions; it turns the IP address on and off, logging > -TCP connections. > -.Bd -literal > -external_if = "xl0" > -internal_if = "fxp0" > - > -pass in log quick on $internal_if proto tcp from $user_ip to any > -pass in quick on $internal_if from $user_ip to any > -.Ed > -.Pp > -.Sy For a wireless or shared net > -\- This example > -.Pa /etc/authpf/authpf.rules > -could be used for an insecure network (such as a public wireless network) where > -we might need to be a bit more restrictive. > -.Bd -literal > -internal_if="fxp1" > -ipsec_gw="10.2.3.4" > - > -# rdr ftp for proxying by ftp-proxy(8) > -rdr on $internal_if proto tcp from $user_ip to any port 21 \e > - -> 127.0.0.1 port 8021 > - > -# allow out ftp, ssh, www and https only, and allow user to negotiate > -# ipsec with the ipsec server. > -pass in log quick on $internal_if proto tcp from $user_ip to any \e > - port { 21, 22, 80, 443 } > -pass in quick on $internal_if proto tcp from $user_ip to any \e > - port { 21, 22, 80, 443 } > -pass in quick proto udp from $user_ip to $ipsec_gw port = isakmp > -pass in quick proto esp from $user_ip to $ipsec_gw > -.Ed > -.Pp > -.Sy Dealing with NAT > -\- The following > -.Pa /etc/authpf/authpf.rules > -shows how to deal with NAT, using tags: > -.Bd -literal > -ext_if = "fxp1" > -ext_addr = 129.128.11.10 > -int_if = "fxp0" > -# nat and tag connections... > -nat on $ext_if from $user_ip to any tag $user_ip -> $ext_addr > -pass in quick on $int_if from $user_ip to any > -pass out log quick on $ext_if tagged $user_ip > -.Ed > -.Pp > -With the above rules added by > -.Nm , > -outbound connections corresponding to each users NAT'ed connections > -will be logged as in the example below, where the user may be identified > -from the ruleset name. > -.Bd -literal > -# tcpdump -n -e -ttt -i pflog0 > -Oct 31 19:42:30.296553 rule 0.bbeck(20267).1/0(match): pass out on fxp1: \e > -129.128.11.10.60539 > 198.137.240.92.22: S 2131494121:2131494121(0) win \e > -16384 (DF) > -.Ed > -.Pp > -.Sy Using the authpf_users table > -\- Simple > -.Nm > -settings can be implemented without an anchor by just using the "authpf_users" > -.Pa table . > -For example, the following > -.Xr pf.conf 5 > -lines will give SMTP and IMAP access to logged in users: > -.Bd -literal > -table persist > -pass in on $ext_if proto tcp from \e > - to port { smtp imap } > -.Ed > -.Pp > -It is also possible to use the "authpf_users" > -.Pa table > -in combination with anchors. > -For example, > -.Xr pf 4 > -processing can be sped up by looking up the anchor > -only for packets coming from logged in users: > -.Bd -literal > -table persist > -anchor "authpf/*" from > -rdr-anchor "authpf/*" from > -.Ed > -.Pp > -.Sy Tunneled users > -\- normally > -.Nm > -allows only one session per client IP address. > -However in some cases, such as when connections are tunneled via > -.Xr ssh 1 > -or > -.Xr ipsec 4 , > -the connections can be authorized based on the userid of the user instead of > -the client IP address. > -In this case it is appropriate to use > -.Nm authpf-noip > -to allow multiple users behind a NAT gateway to connect. > -In the > -.Pa /etc/authpf/authpf.rules > -example below, the remote user could tunnel a remote desktop session to their > -workstation: > -.Bd -literal > -internal_if="bge0" > -workstation_ip="10.2.3.4" > - > -pass out on $internal_if from (self) to $workstation_ip port 3389 \e > - user $user_id > -.Ed > -.Sh FILES > -.Bl -tag -width "/etc/authpf/authpf.conf" -compact > -.It Pa /etc/authpf/authpf.conf > -.It Pa /etc/authpf/authpf.allow > -.It Pa /etc/authpf/authpf.rules > -.It Pa /etc/authpf/authpf.message > -.It Pa /etc/authpf/authpf.problem > -.El > -.Sh SEE ALSO > -.Xr pf 4 , > -.Xr fdescfs 5 , > -.Xr pf.conf 5 , > -.Xr securelevel 7 , > -.Xr ftp-proxy 8 > -.Sh HISTORY > -The > -.Nm > -program first appeared in > -.Ox 3.1 . > -.Sh BUGS > -Configuration issues are tricky. > -The authenticating > -.Xr ssh 1 > -connection may be secured, but if the network is not secured the user may > -expose insecure protocols to attackers on the same network, or enable other > -attackers on the network to pretend to be the user by spoofing their IP > -address. > -.Pp > -.Nm > -is not designed to prevent users from denying service to other users. > Index: contrib/pf/authpf/pathnames.h > =================================================================== > --- contrib/pf/authpf/pathnames.h (revision 345223) > +++ contrib/pf/authpf/pathnames.h (working copy) > @@ -1,39 +0,0 @@ > -/* $OpenBSD: pathnames.h,v 1.8 2008/02/14 01:49:17 mcbride Exp $ */ > - > -/* > - * Copyright (C) 2002 Chris Kuethe (ckuethe@ualberta.ca) > - * > - * Redistribution and use in source and binary forms, with or without > - * modification, are permitted provided that the following conditions > - * are met: > - * 1. Redistributions of source code must retain the above copyright > - * notice, this list of conditions and the following disclaimer. > - * 2. Redistributions in binary form must reproduce the above copyright > - * notice, this list of conditions and the following disclaimer in the > - * documentation and/or other materials provided with the distribution. > - * > - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND > - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE > - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL > - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS > - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) > - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT > - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY > - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > - * SUCH DAMAGE. > - */ > - > -#define PATH_CONFFILE "/etc/authpf/authpf.conf" > -#define PATH_ALLOWFILE "/etc/authpf/authpf.allow" > -#define PATH_PFRULES "/etc/authpf/authpf.rules" > -#define PATH_PROBLEM "/etc/authpf/authpf.problem" > -#define PATH_MESSAGE "/etc/authpf/authpf.message" > -#define PATH_USER_DIR "/etc/authpf/users" > -#define PATH_BAN_DIR "/etc/authpf/banned" > -#define PATH_DEVFILE "/dev/pf" > -#define PATH_PIDFILE "/var/authpf" > -#define PATH_AUTHPF_SHELL "/usr/sbin/authpf" > -#define PATH_AUTHPF_SHELL_NOIP "/usr/sbin/authpf-noip" > -#define PATH_PFCTL "/sbin/pfctl" > Index: contrib/pf/ftp-proxy/filter.c > =================================================================== > --- contrib/pf/ftp-proxy/filter.c (revision 345223) > +++ contrib/pf/ftp-proxy/filter.c (working copy) > @@ -1,393 +0,0 @@ > -/* $OpenBSD: filter.c,v 1.8 2008/06/13 07:25:26 claudio Exp $ */ > - > -/* > - * Copyright (c) 2004, 2005 Camiel Dobbelaar, > - * > - * Permission to use, copy, modify, and distribute this software for any > - * purpose with or without fee is hereby granted, provided that the above > - * copyright notice and this permission notice appear in all copies. > - * > - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES > - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF > - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR > - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES > - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN > - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF > - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. > - */ > - > -#include > -#include > -#include > - > -#include > -#include > -#include > -#include > -#include > - > -#include > -#include > -#include > -#include > -#include > -#include > - > -#include "filter.h" > - > -/* From netinet/in.h, but only _KERNEL_ gets them. */ > -#define satosin(sa) ((struct sockaddr_in *)(sa)) > -#define satosin6(sa) ((struct sockaddr_in6 *)(sa)) > - > -enum { TRANS_FILTER = 0, TRANS_NAT, TRANS_RDR, TRANS_SIZE }; > - > -int prepare_rule(u_int32_t, int, struct sockaddr *, struct sockaddr *, > - u_int16_t); > -int server_lookup4(struct sockaddr_in *, struct sockaddr_in *, > - struct sockaddr_in *); > -int server_lookup6(struct sockaddr_in6 *, struct sockaddr_in6 *, > - struct sockaddr_in6 *); > - > -static struct pfioc_pooladdr pfp; > -static struct pfioc_rule pfr; > -static struct pfioc_trans pft; > -static struct pfioc_trans_e pfte[TRANS_SIZE]; > -static int dev, rule_log; > -static const char *qname, *tagname; > - > -int > -add_filter(u_int32_t id, u_int8_t dir, struct sockaddr *src, > - struct sockaddr *dst, u_int16_t d_port) > -{ > - if (!src || !dst || !d_port) { > - errno = EINVAL; > - return (-1); > - } > - > - if (prepare_rule(id, PF_RULESET_FILTER, src, dst, d_port) == -1) > - return (-1); > - > - pfr.rule.direction = dir; > - if (ioctl(dev, DIOCADDRULE, &pfr) == -1) > - return (-1); > - > - return (0); > -} > - > -int > -add_nat(u_int32_t id, struct sockaddr *src, struct sockaddr *dst, > - u_int16_t d_port, struct sockaddr *nat, u_int16_t nat_range_low, > - u_int16_t nat_range_high) > -{ > - if (!src || !dst || !d_port || !nat || !nat_range_low || > - (src->sa_family != nat->sa_family)) { > - errno = EINVAL; > - return (-1); > - } > - > - if (prepare_rule(id, PF_RULESET_NAT, src, dst, d_port) == -1) > - return (-1); > - > - if (nat->sa_family == AF_INET) { > - memcpy(&pfp.addr.addr.v.a.addr.v4, > - &satosin(nat)->sin_addr.s_addr, 4); > - memset(&pfp.addr.addr.v.a.mask.addr8, 255, 4); > - } else { > - memcpy(&pfp.addr.addr.v.a.addr.v6, > - &satosin6(nat)->sin6_addr.s6_addr, 16); > - memset(&pfp.addr.addr.v.a.mask.addr8, 255, 16); > - } > - if (ioctl(dev, DIOCADDADDR, &pfp) == -1) > - return (-1); > - > - pfr.rule.rpool.proxy_port[0] = nat_range_low; > - pfr.rule.rpool.proxy_port[1] = nat_range_high; > - if (ioctl(dev, DIOCADDRULE, &pfr) == -1) > - return (-1); > - > - return (0); > -} > - > -int > -add_rdr(u_int32_t id, struct sockaddr *src, struct sockaddr *dst, > - u_int16_t d_port, struct sockaddr *rdr, u_int16_t rdr_port) > -{ > - if (!src || !dst || !d_port || !rdr || !rdr_port || > - (src->sa_family != rdr->sa_family)) { > - errno = EINVAL; > - return (-1); > - } > - > - if (prepare_rule(id, PF_RULESET_RDR, src, dst, d_port) == -1) > - return (-1); > - > - if (rdr->sa_family == AF_INET) { > - memcpy(&pfp.addr.addr.v.a.addr.v4, > - &satosin(rdr)->sin_addr.s_addr, 4); > - memset(&pfp.addr.addr.v.a.mask.addr8, 255, 4); > - } else { > - memcpy(&pfp.addr.addr.v.a.addr.v6, > - &satosin6(rdr)->sin6_addr.s6_addr, 16); > - memset(&pfp.addr.addr.v.a.mask.addr8, 255, 16); > - } > - if (ioctl(dev, DIOCADDADDR, &pfp) == -1) > - return (-1); > - > - pfr.rule.rpool.proxy_port[0] = rdr_port; > - if (ioctl(dev, DIOCADDRULE, &pfr) == -1) > - return (-1); > - > - return (0); > -} > - > -int > -do_commit(void) > -{ > - if (ioctl(dev, DIOCXCOMMIT, &pft) == -1) > - return (-1); > - > - return (0); > -} > - > -int > -do_rollback(void) > -{ > - if (ioctl(dev, DIOCXROLLBACK, &pft) == -1) > - return (-1); > - > - return (0); > -} > - > -void > -init_filter(const char *opt_qname, const char *opt_tagname, int opt_verbose) > -{ > - struct pf_status status; > - > - qname = opt_qname; > - tagname = opt_tagname; > - > - if (opt_verbose == 1) > - rule_log = PF_LOG; > - else if (opt_verbose == 2) > - rule_log = PF_LOG_ALL; > - > - dev = open("/dev/pf", O_RDWR); > - if (dev == -1) > - err(1, "open /dev/pf"); > - if (ioctl(dev, DIOCGETSTATUS, &status) == -1) > - err(1, "DIOCGETSTATUS"); > - if (!status.running) > - errx(1, "pf is disabled"); > -} > - > -int > -prepare_commit(u_int32_t id) > -{ > - char an[PF_ANCHOR_NAME_SIZE]; > - int i; > - > - memset(&pft, 0, sizeof pft); > - pft.size = TRANS_SIZE; > - pft.esize = sizeof pfte[0]; > - pft.array = pfte; > - > - snprintf(an, PF_ANCHOR_NAME_SIZE, "%s/%d.%d", FTP_PROXY_ANCHOR, > - getpid(), id); > - for (i = 0; i < TRANS_SIZE; i++) { > - memset(&pfte[i], 0, sizeof pfte[0]); > - strlcpy(pfte[i].anchor, an, PF_ANCHOR_NAME_SIZE); > - switch (i) { > - case TRANS_FILTER: > - pfte[i].rs_num = PF_RULESET_FILTER; > - break; > - case TRANS_NAT: > - pfte[i].rs_num = PF_RULESET_NAT; > - break; > - case TRANS_RDR: > - pfte[i].rs_num = PF_RULESET_RDR; > - break; > - default: > - errno = EINVAL; > - return (-1); > - } > - } > - > - if (ioctl(dev, DIOCXBEGIN, &pft) == -1) > - return (-1); > - > - return (0); > -} > - > -int > -prepare_rule(u_int32_t id, int rs_num, struct sockaddr *src, > - struct sockaddr *dst, u_int16_t d_port) > -{ > - char an[PF_ANCHOR_NAME_SIZE]; > - > - if ((src->sa_family != AF_INET && src->sa_family != AF_INET6) || > - (src->sa_family != dst->sa_family)) { > - errno = EPROTONOSUPPORT; > - return (-1); > - } > - > - memset(&pfp, 0, sizeof pfp); > - memset(&pfr, 0, sizeof pfr); > - snprintf(an, PF_ANCHOR_NAME_SIZE, "%s/%d.%d", FTP_PROXY_ANCHOR, > - getpid(), id); > - strlcpy(pfp.anchor, an, PF_ANCHOR_NAME_SIZE); > - strlcpy(pfr.anchor, an, PF_ANCHOR_NAME_SIZE); > - > - switch (rs_num) { > - case PF_RULESET_FILTER: > - pfr.ticket = pfte[TRANS_FILTER].ticket; > - break; > - case PF_RULESET_NAT: > - pfr.ticket = pfte[TRANS_NAT].ticket; > - break; > - case PF_RULESET_RDR: > - pfr.ticket = pfte[TRANS_RDR].ticket; > - break; > - default: > - errno = EINVAL; > - return (-1); > - } > - if (ioctl(dev, DIOCBEGINADDRS, &pfp) == -1) > - return (-1); > - pfr.pool_ticket = pfp.ticket; > - > - /* Generic for all rule types. */ > - pfr.rule.af = src->sa_family; > - pfr.rule.proto = IPPROTO_TCP; > - pfr.rule.src.addr.type = PF_ADDR_ADDRMASK; > - pfr.rule.dst.addr.type = PF_ADDR_ADDRMASK; > - if (src->sa_family == AF_INET) { > - memcpy(&pfr.rule.src.addr.v.a.addr.v4, > - &satosin(src)->sin_addr.s_addr, 4); > - memset(&pfr.rule.src.addr.v.a.mask.addr8, 255, 4); > - memcpy(&pfr.rule.dst.addr.v.a.addr.v4, > - &satosin(dst)->sin_addr.s_addr, 4); > - memset(&pfr.rule.dst.addr.v.a.mask.addr8, 255, 4); > - } else { > - memcpy(&pfr.rule.src.addr.v.a.addr.v6, > - &satosin6(src)->sin6_addr.s6_addr, 16); > - memset(&pfr.rule.src.addr.v.a.mask.addr8, 255, 16); > - memcpy(&pfr.rule.dst.addr.v.a.addr.v6, > - &satosin6(dst)->sin6_addr.s6_addr, 16); > - memset(&pfr.rule.dst.addr.v.a.mask.addr8, 255, 16); > - } > - pfr.rule.dst.port_op = PF_OP_EQ; > - pfr.rule.dst.port[0] = htons(d_port); > - > - switch (rs_num) { > - case PF_RULESET_FILTER: > - /* > - * pass [quick] [log] inet[6] proto tcp \ > - * from $src to $dst port = $d_port flags S/SA keep state > - * (max 1) [queue qname] [tag tagname] > - */ > - pfr.rule.action = PF_PASS; > - pfr.rule.quick = 1; > - pfr.rule.log = rule_log; > - pfr.rule.keep_state = 1; > - pfr.rule.flags = TH_SYN; > - pfr.rule.flagset = (TH_SYN|TH_ACK); > - pfr.rule.max_states = 1; > - if (qname != NULL) > - strlcpy(pfr.rule.qname, qname, sizeof pfr.rule.qname); > - if (tagname != NULL) { > - pfr.rule.quick = 0; > - strlcpy(pfr.rule.tagname, tagname, > - sizeof pfr.rule.tagname); > - } > - break; > - case PF_RULESET_NAT: > - /* > - * nat inet[6] proto tcp from $src to $dst port $d_port -> $nat > - */ > - pfr.rule.action = PF_NAT; > - break; > - case PF_RULESET_RDR: > - /* > - * rdr inet[6] proto tcp from $src to $dst port $d_port -> $rdr > - */ > - pfr.rule.action = PF_RDR; > - break; > - default: > - errno = EINVAL; > - return (-1); > - } > - > - return (0); > -} > - > -int > -server_lookup(struct sockaddr *client, struct sockaddr *proxy, > - struct sockaddr *server) > -{ > - if (client->sa_family == AF_INET) > - return (server_lookup4(satosin(client), satosin(proxy), > - satosin(server))); > - > - if (client->sa_family == AF_INET6) > - return (server_lookup6(satosin6(client), satosin6(proxy), > - satosin6(server))); > - > - errno = EPROTONOSUPPORT; > - return (-1); > -} > - > -int > -server_lookup4(struct sockaddr_in *client, struct sockaddr_in *proxy, > - struct sockaddr_in *server) > -{ > - struct pfioc_natlook pnl; > - > - memset(&pnl, 0, sizeof pnl); > - pnl.direction = PF_OUT; > - pnl.af = AF_INET; > - pnl.proto = IPPROTO_TCP; > - memcpy(&pnl.saddr.v4, &client->sin_addr.s_addr, sizeof pnl.saddr.v4); > - memcpy(&pnl.daddr.v4, &proxy->sin_addr.s_addr, sizeof pnl.daddr.v4); > - pnl.sport = client->sin_port; > - pnl.dport = proxy->sin_port; > - > - if (ioctl(dev, DIOCNATLOOK, &pnl) == -1) > - return (-1); > - > - memset(server, 0, sizeof(struct sockaddr_in)); > - server->sin_len = sizeof(struct sockaddr_in); > - server->sin_family = AF_INET; > - memcpy(&server->sin_addr.s_addr, &pnl.rdaddr.v4, > - sizeof server->sin_addr.s_addr); > - server->sin_port = pnl.rdport; > > *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** > > -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:06 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1FF31DC226 for ; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yx5D0Zz4P6K; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 935D819FC4; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id F131511A42; Mon, 1 Apr 2019 18:25:18 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3BC1C8376C; Mon, 1 Apr 2019 18:25:18 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1996F119D9; Mon, 1 Apr 2019 18:25:18 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id B1904119CF for ; Mon, 1 Apr 2019 18:25:15 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 64DF08375E; Mon, 1 Apr 2019 18:25:15 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3A9F71A467; Mon, 1 Apr 2019 18:25:15 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31IPFWR073385; Mon, 1 Apr 2019 18:25:15 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31IPFYV073384; Mon, 1 Apr 2019 18:25:15 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904011825.x31IPFYV073384@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345773 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345773 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3BC1C8376C X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.96)[-0.956,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:06 -0000 X-Original-Date: Mon, 1 Apr 2019 18:25:15 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:06 -0000 Author: ngie Date: Mon Apr 1 18:25:14 2019 New Revision: 345773 URL: https://svnweb.freebsd.org/changeset/base/345773 Log: Import review changes 1. Collapse the declaration/assignment for `trap_enotcap_enabled_len` to reduce complexity. 2. Move the `GTEST_SKIP()` backwards compatible definition out into the global space. 3. Sort conditional platform #includes with __FreeBSD__ before __linux__. Requested by: David Drysdale [1,2], emaste [3] Pull Request: https://github.com/google/capsicum-test/pull/42 Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Mon Apr 1 18:17:48 2019 (r345772) +++ projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Mon Apr 1 18:25:14 2019 (r345773) @@ -1,9 +1,9 @@ #include -#if defined(__FreeBSD__) -#include -#elif defined(__linux__) +#ifdef __linux__ #include #include +#elif defined(__FreeBSD__) +#include #endif #include #include @@ -16,6 +16,11 @@ #include "gtest/gtest.h" #include "capsicum-test.h" +// For versions of googletest that lack GTEST_SKIP. +#ifndef GTEST_SKIP +#define GTEST_SKIP GTEST_FAIL +#endif + std::string tmpdir; class SetupEnvironment : public ::testing::Environment @@ -33,19 +38,11 @@ class SetupEnvironment : public ::testing::Environment std::cerr << tmpdir << std::endl; } void CheckCapsicumSupport() { - // For versions of googletest that lack GTEST_SKIP. -#ifndef GTEST_SKIP -#define GTEST_SKIP GTEST_FAIL -#define GTEST_SKIP_defined -#endif - #ifdef __FreeBSD__ - size_t trap_enotcap_enabled_len; int rc; bool trap_enotcap_enabled; + size_t trap_enotcap_enabled_len = sizeof(trap_enotcap_enabled); - trap_enotcap_enabled_len = sizeof(trap_enotcap_enabled); - if (feature_present("security_capabilities") == 0) { GTEST_SKIP() << "Skipping tests because capsicum support is not " << "enabled in the kernel."; @@ -61,10 +58,6 @@ class SetupEnvironment : public ::testing::Environment << "Skipping tests to avoid non-determinism with results"; } #endif /* FreeBSD */ - -#ifdef GTEST_SKIP_defined -#undef GTEST_SKIP -#endif } void CreateTemporaryRoot() { char *tmpdir_name = tempnam(nullptr, "cptst"); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:02 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4B5FFDC179 for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv1C3Lz4P4H; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 5908919F18; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 030C214FB1; Sun, 31 Mar 2019 05:15:37 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 676E369A1B; Sun, 31 Mar 2019 05:15:36 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1885B14F47; Sun, 31 Mar 2019 05:15:36 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 04A5414F42 for ; Sun, 31 Mar 2019 05:15:33 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C19B169A13; Sun, 31 Mar 2019 05:15:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9AFAD22129; Sun, 31 Mar 2019 05:15:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2V5FWqa001746; Sun, 31 Mar 2019 05:15:32 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2V5FWDK001745; Sun, 31 Mar 2019 05:15:32 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903310515.x2V5FWDK001745@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345745 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345745 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 676E369A1B X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.92 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.92)[-0.921,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:02 -0000 X-Original-Date: Sun, 31 Mar 2019 05:15:32 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:02 -0000 Author: ngie Date: Sun Mar 31 05:15:32 2019 New Revision: 345745 URL: https://svnweb.freebsd.org/changeset/base/345745 Log: Refine r345743 Add backwards compatibility shim for versions of googletest without `GTEST_SKIP()` and https://github.com/google/googletest/pull/2203, e.g., the version of googletest in ports and the embedded version in the capsicum-test project, mapping to `GTEST_FAIL()`. The goal in this case was to make `capsicum-test` do a hard stop and not execute if the kernel didn't have capsicum support or `kern.trap_enotcap` was enabled. The only way to achieve this prior to https://github.com/google/googletest/pull/2203, was to trigger a fatal failure, e.g., call `GTEST_FAIL()`. Output the skip diagnostic message via std::cerr, instead of using the `GTEST_{FAIL,SKIP}()` macros. For some reason I don't yet understand, the diagnostic messages aren't being output when both macros are triggered, so there's a bug potentially with googletest version 1.8.1 (but not master) where it's not properly outputting the messages. Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Sun Mar 31 04:57:50 2019 (r345744) +++ projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Sun Mar 31 05:15:32 2019 (r345745) @@ -33,6 +33,12 @@ class SetupEnvironment : public ::testing::Environment std::cerr << tmpdir << std::endl; } void CheckCapsicumSupport() { + // For versions of googletest that lack GTEST_SKIP. +#ifndef GTEST_SKIP +#define GTEST_SKIP GTEST_FAIL +#define GTEST_SKIP_defined +#endif + #ifdef __FreeBSD__ size_t trap_enotcap_enabled_len; int rc; @@ -41,9 +47,13 @@ class SetupEnvironment : public ::testing::Environment trap_enotcap_enabled_len = sizeof(trap_enotcap_enabled); if (feature_present("security_capabilities") == 0) { - GTEST_SKIP() << "Tests require a CAPABILITIES enabled kernel"; + // XXX (ngie): using std::cerr because 1.8.1 (with GTEST_SKIP support) + // isn't properly outputting skip diagnostic message here. + std::cerr << "Tests require a CAPABILITIES enabled kernel" << std::endl; + GTEST_SKIP(); } else { - std::cerr << "Running on a CAPABILITIES enabled kernel" << std::endl; + std::cerr << "Running on a CAPABILITIES enabled kernel - OK!" + << std::endl; } const char *oid = "kern.trap_enotcap"; rc = sysctlbyname(oid, &trap_enotcap_enabled, &trap_enotcap_enabled_len, @@ -52,11 +62,19 @@ class SetupEnvironment : public ::testing::Environment GTEST_FAIL() << "sysctlbyname failed: " << strerror(errno); } if (trap_enotcap_enabled) { - GTEST_SKIP() << "Sysctl " << oid << " enabled. " - << "Skipping tests to avoid non-determinism with results"; + // XXX (ngie): using std::cerr because 1.8.1 (with GTEST_SKIP support) + // isn't properly outputting skip diagnostic message here. + std::cerr << "Sysctl " << oid << " enabled. " + << "Skipping tests to avoid non-determinism with results" + << std::endl; + GTEST_SKIP(); } else { - std::cerr << "Sysctl " << oid << " not enabled." << std::endl; + std::cerr << "Sysctl " << oid << " not enabled - OK!" << std::endl; } +#endif /* FreeBSD */ + +#ifdef GTEST_SKIP_defined +#undef GTEST_SKIP #endif } void CreateTemporaryRoot() { From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:08 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3D058DC305 for ; Tue, 3 Sep 2019 14:06:05 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z02YYjz4P9m; Tue, 3 Sep 2019 14:06:04 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 52B1B1A0C3; Tue, 3 Sep 2019 14:05:57 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 930656AFA; Tue, 2 Apr 2019 18:45:32 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3B1B3719FD; Tue, 2 Apr 2019 18:45:31 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 10B626A82; Tue, 2 Apr 2019 18:45:31 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 4A62B6A7F; Tue, 2 Apr 2019 18:45:28 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E0D0B719F6; Tue, 2 Apr 2019 18:45:27 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: by mail-pf1-x42d.google.com with SMTP id i17so6817740pfo.6; Tue, 02 Apr 2019 11:45:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=IsoEgyjcvJCxWS1QJSPZ/CCKCOKuSNNmzC4QVFTfpPY=; b=gxrWcsMJh4wVWzvk9I2BBLl6fRVrt02/0fS/RI9V9B+U2HwBNgLfugFc5ohmUuy2KL fsIcP7MpaH+swGY/mQiIwltJy6/KtYo+LRJSjqWJ/bnGlo+K9Sgg8rieI6TOnMxCoeYP XU7fphcvlBA4n2BRaF0iXfKVUW4frgTdezpMhF8xH1onZUod1OauvAj2PcUEdT+cA3Ik KNSV3nQGHSx+/xQDPbj+tYg359I6AGSsIFdLNXV9a6qmrAT5IbAuYmDvCgdJkOm7QQlD vFWChcADLafj9tTnpZAvY07kZ8zOyqb1/3VYAzM4GyHBbtplnUGZK8B8agcjcdHelQwz GDjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=IsoEgyjcvJCxWS1QJSPZ/CCKCOKuSNNmzC4QVFTfpPY=; b=daHQV6GbQFXvf8BUneaX3kDpFprLZSTKSzvMXGUWnct8A1sTaGyPO9EeEALc+C76Vy xzUQN8HBDuv11v6/8ZdWryrJSIwP6pLsBuzYHcuG3HwjnMSAGjAIlss5vtqUr+ZwnL5Y Zd7ZkP8UR6NaffGfoHyeJzBdOwHPKl2GDUC7rZJ+Yi4396E+Wf8Isiq++n9jQNNPOx+k Auf5k83wQ134+eXRV2musc2emkO8Mh+uxHjSTpZ77ZQLUikHiFUpM1zv/zNgGWiLdErO UWeWsU3SNAAzKmWEabu31wy7pdyg0rFuckLa6aYPhT6mp4jJnGWyQRYzYdWd4F/asVgD McWA== X-Gm-Message-State: APjAAAUzxxNBDO1yWT4bQVUm0/2eQ9tCjgtbxEuMjmLYFZIZD+5yxQ98 gJUkZVnZPt6DJ+3V99Q3p4rf66oa468= X-Google-Smtp-Source: APXvYqzmZZ1bNjuJMOxi0aE3dKMZzaj2T5fvCy7i2t6wIHB1boKPU6NtpYvsniv31xHQKnRKkZ5Vmg== X-Received: by 2002:aa7:8d17:: with SMTP id j23mr834803pfe.62.1554230725842; Tue, 02 Apr 2019 11:45:25 -0700 (PDT) Received: from [192.168.20.7] (c-73-19-52-228.hsd1.wa.comcast.net. [73.19.52.228]) by smtp.gmail.com with ESMTPSA id 10sm20067740pft.83.2019.04.02.11.45.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Apr 2019 11:45:25 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 12.2 \(3445.102.3\)) Subject: Re: svn commit: r345809 - projects/fuse2/tests/sys/fs/fusefs From: Enji Cooper In-Reply-To: <201904021844.x32Ii1wR041319@repo.freebsd.org> Cc: src-committers@freebsd.org, svn-src-projects@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <77D06D49-8CE8-483C-90FF-D8CD0122599E@gmail.com> References: <201904021844.x32Ii1wR041319@repo.freebsd.org> To: Alan Somers X-Mailer: Apple Mail (2.3445.102.3) Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3B1B3719FD X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.98 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.985,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:08 -0000 X-Original-Date: Tue, 2 Apr 2019 11:45:24 -0700 X-List-Received-Date: Tue, 03 Sep 2019 14:06:08 -0000 > On Apr 2, 2019, at 11:44 AM, Alan Somers wrote: >=20 > Author: asomers > Date: Tue Apr 2 18:44:01 2019 > New Revision: 345809 > URL: https://svnweb.freebsd.org/changeset/base/345809 >=20 > Log: > fusefs: check return value of wait(2) in fork tests >=20 > Reported by: ngie > Sponsored by: The FreeBSD Foundation >=20 > Modified: > projects/fuse2/tests/sys/fs/fusefs/utils.cc >=20 > Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc > = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D > --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Tue Apr 2 = 18:09:40 2019 (r345808) > +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Tue Apr 2 = 18:44:01 2019 (r345809) > @@ -321,7 +321,7 @@ out: > /* Signal the child process to go */ > ASSERT_EQ(0, sem_post(sem)) << strerror(errno); >=20 > - wait(&child_status); > + ASSERT_LE(0, wait(&child_status)) << strerror(errno); Don=E2=80=99t you want ASSERT_GE here, since you=E2=80=99re testing that = wait succeeded? -Enji= From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:09 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C48C1DC377 for ; Tue, 3 Sep 2019 14:06:06 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z21qxzz4PC2; Tue, 3 Sep 2019 14:06:06 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id EA7ED1A128; Tue, 3 Sep 2019 14:05:57 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 8706FEAD7; Wed, 3 Apr 2019 02:47:01 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 22F778C09F; Wed, 3 Apr 2019 02:47:01 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 12859EAD6; Wed, 3 Apr 2019 02:47:01 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 404C9EAD4 for ; Wed, 3 Apr 2019 02:46:58 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EA92F8C09E; Wed, 3 Apr 2019 02:46:57 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C310C77DC; Wed, 3 Apr 2019 02:46:57 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x332kvOQ096863; Wed, 3 Apr 2019 02:46:57 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x332kvpk096862; Wed, 3 Apr 2019 02:46:57 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904030246.x332kvpk096862@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345824 - projects/runtime-coverage-v2 X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage-v2 X-SVN-Commit-Revision: 345824 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 22F778C09F X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.95)[-0.946,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:09 -0000 X-Original-Date: Wed, 3 Apr 2019 02:46:57 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:09 -0000 Author: ngie Date: Wed Apr 3 02:46:57 2019 New Revision: 345824 URL: https://svnweb.freebsd.org/changeset/base/345824 Log: Restart work started as ^/projects/runtime-coverage The intent of this project branch is as follows (using r320180's commit message): ``` Start project branch for integrating runtime coverage instrumentation in to the build Runtime coverage instrumentation is typically used/useful with gcov/lcov, and helps developers gather information about how many times lines/branches are hit, etc in order to help them improve tests for libraries/programs. gcov statistics are separate from gprof statistics. ``` Added: - copied from r345823, head/ Directory Properties: projects/runtime-coverage-v2/ (props changed) From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:08 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D4DF8DC298 for ; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yy6hC4z4P7s; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 4DCED1A04F; Tue, 3 Sep 2019 14:05:56 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id F1AD6167F0; Mon, 1 Apr 2019 23:37:26 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3C8DF8E318; Mon, 1 Apr 2019 23:37:26 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1CF83167C4; Mon, 1 Apr 2019 23:37:26 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id D4FD4167C2 for ; Mon, 1 Apr 2019 23:37:22 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9A48B8E314; Mon, 1 Apr 2019 23:37:22 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 73A151DAD6; Mon, 1 Apr 2019 23:37:22 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31NbMQQ039062; Mon, 1 Apr 2019 23:37:22 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31NbM4m039061; Mon, 1 Apr 2019 23:37:22 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904012337.x31NbM4m039061@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345788 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345788 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3C8DF8E318 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.93 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.93)[-0.929,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:08 -0000 X-Original-Date: Mon, 1 Apr 2019 23:37:22 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:08 -0000 Author: asomers Date: Mon Apr 1 23:37:21 2019 New Revision: 345788 URL: https://svnweb.freebsd.org/changeset/base/345788 Log: Respond to ngie's comments in D19752 Better Makefile syntax. Note that this commit is to the project branch, but the review concerns the merge to head. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/Makefile Modified: projects/fuse2/tests/sys/fs/fusefs/Makefile ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/Makefile Mon Apr 1 22:19:15 2019 (r345787) +++ projects/fuse2/tests/sys/fs/fusefs/Makefile Mon Apr 1 23:37:21 2019 (r345788) @@ -38,166 +38,24 @@ GTESTS+= unlink GTESTS+= write GTESTS+= xattr -SRCS.access+= access.cc -SRCS.access+= getmntopts.c -SRCS.access+= mockfs.cc -SRCS.access+= utils.cc +.for p in ${GTESTS} +SRCS.$p+= ${p}.cc +SRCS.$p+= getmntopts.c +SRCS.$p+= mockfs.cc +SRCS.$p+= utils.cc +.endfor -SRCS.allow_other+= allow_other.cc -SRCS.allow_other+= getmntopts.c -SRCS.allow_other+= mockfs.cc -SRCS.allow_other+= utils.cc - -SRCS.create+= create.cc -SRCS.create+= getmntopts.c -SRCS.create+= mockfs.cc -SRCS.create+= utils.cc - -SRCS.default_permissions+= default_permissions.cc -SRCS.default_permissions+= getmntopts.c -SRCS.default_permissions+= mockfs.cc -SRCS.default_permissions+= utils.cc TEST_METADATA.default_permissions+= required_user="unprivileged" - -SRCS.destroy+= destroy.cc -SRCS.destroy+= getmntopts.c -SRCS.destroy+= mockfs.cc -SRCS.destroy+= utils.cc - -SRCS.flush+= flush.cc -SRCS.flush+= getmntopts.c -SRCS.flush+= mockfs.cc -SRCS.flush+= utils.cc - -SRCS.fsync+= fsync.cc -SRCS.fsync+= getmntopts.c -SRCS.fsync+= mockfs.cc -SRCS.fsync+= utils.cc - -SRCS.fsyncdir+= fsyncdir.cc -SRCS.fsyncdir+= getmntopts.c -SRCS.fsyncdir+= mockfs.cc -SRCS.fsyncdir+= utils.cc - -SRCS.getattr+= getattr.cc -SRCS.getattr+= getmntopts.c -SRCS.getattr+= mockfs.cc -SRCS.getattr+= utils.cc - -SRCS.interrupt+= interrupt.cc -SRCS.interrupt+= getmntopts.c -SRCS.interrupt+= mockfs.cc -SRCS.interrupt+= utils.cc - -SRCS.link+= getmntopts.c -SRCS.link+= link.cc -SRCS.link+= mockfs.cc -SRCS.link+= utils.cc - -SRCS.locks+= locks.cc -SRCS.locks+= getmntopts.c -SRCS.locks+= mockfs.cc -SRCS.locks+= utils.cc - -SRCS.lookup+= getmntopts.c -SRCS.lookup+= lookup.cc -SRCS.lookup+= mockfs.cc -SRCS.lookup+= utils.cc - -SRCS.mkdir+= getmntopts.c -SRCS.mkdir+= mockfs.cc -SRCS.mkdir+= mkdir.cc -SRCS.mkdir+= utils.cc - -SRCS.mknod+= getmntopts.c -SRCS.mknod+= mockfs.cc -SRCS.mknod+= mknod.cc -SRCS.mknod+= utils.cc TEST_METADATA.mknod+= required_user="root" -SRCS.open+= getmntopts.c -SRCS.open+= mockfs.cc -SRCS.open+= open.cc -SRCS.open+= utils.cc - -SRCS.opendir+= getmntopts.c -SRCS.opendir+= mockfs.cc -SRCS.opendir+= opendir.cc -SRCS.opendir+= utils.cc - -SRCS.read+= getmntopts.c -SRCS.read+= mockfs.cc -SRCS.read+= read.cc -SRCS.read+= utils.cc - -SRCS.readdir+= getmntopts.c -SRCS.readdir+= mockfs.cc -SRCS.readdir+= readdir.cc -SRCS.readdir+= utils.cc - -SRCS.readlink+= getmntopts.c -SRCS.readlink+= mockfs.cc -SRCS.readlink+= readlink.cc -SRCS.readlink+= utils.cc - -SRCS.release+= getmntopts.c -SRCS.release+= mockfs.cc -SRCS.release+= release.cc -SRCS.release+= utils.cc - -SRCS.releasedir+= getmntopts.c -SRCS.releasedir+= mockfs.cc -SRCS.releasedir+= releasedir.cc -SRCS.releasedir+= utils.cc - -SRCS.rename+= getmntopts.c -SRCS.rename+= mockfs.cc -SRCS.rename+= rename.cc -SRCS.rename+= utils.cc - -SRCS.rmdir+= getmntopts.c -SRCS.rmdir+= mockfs.cc -SRCS.rmdir+= rmdir.cc -SRCS.rmdir+= utils.cc - -SRCS.setattr+= getmntopts.c -SRCS.setattr+= mockfs.cc -SRCS.setattr+= setattr.cc -SRCS.setattr+= utils.cc - -SRCS.statfs+= getmntopts.c -SRCS.statfs+= mockfs.cc -SRCS.statfs+= statfs.cc -SRCS.statfs+= utils.cc - -SRCS.symlink+= getmntopts.c -SRCS.symlink+= mockfs.cc -SRCS.symlink+= symlink.cc -SRCS.symlink+= utils.cc - -SRCS.unlink+= getmntopts.c -SRCS.unlink+= mockfs.cc -SRCS.unlink+= unlink.cc -SRCS.unlink+= utils.cc - -SRCS.write+= getmntopts.c -SRCS.write+= mockfs.cc -SRCS.write+= write.cc -SRCS.write+= utils.cc - -SRCS.xattr+= getmntopts.c -SRCS.xattr+= mockfs.cc -SRCS.xattr+= xattr.cc -SRCS.xattr+= utils.cc - # TODO: drastically increase timeout after test development is mostly complete TEST_METADATA+= timeout=10 -FUSEFS= ${.CURDIR:H:H:H:H}/sys/fs/fuse -MOUNT= ${.CURDIR:H:H:H:H}/sbin/mount -CFLAGS+= -I${.CURDIR:H:H:H} -CFLAGS+= -I${FUSEFS} -CFLAGS+= -I${MOUNT} +FUSEFS= ${SRCTOP}/sys/fs/fuse +MOUNT= ${SRCTOP}/sbin/mount +CXXFLAGS+= -I${SRCTOP}/tests +CXXFLAGS+= -I${FUSEFS} +CXXFLAGS+= -I${MOUNT} .PATH: ${MOUNT} CXXSTD= c++14 From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:08 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6B3EDDC2CC for ; Tue, 3 Sep 2019 14:06:04 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z01lGwz4P9T; Tue, 3 Sep 2019 14:06:04 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 419701A0BD; Tue, 3 Sep 2019 14:05:57 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id C79FB6152; Tue, 2 Apr 2019 18:09:44 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 56824703F1; Tue, 2 Apr 2019 18:09:44 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0FA76611C; Tue, 2 Apr 2019 18:09:44 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 547466117 for ; Tue, 2 Apr 2019 18:09:41 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 25760703EC; Tue, 2 Apr 2019 18:09:41 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 025AA1ABF; Tue, 2 Apr 2019 18:09:41 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x32I9egR020901; Tue, 2 Apr 2019 18:09:40 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x32I9eNR020898; Tue, 2 Apr 2019 18:09:40 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904021809.x32I9eNR020898@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345808 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 345808 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 56824703F1 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.95)[-0.948,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:08 -0000 X-Original-Date: Tue, 2 Apr 2019 18:09:40 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:08 -0000 Author: asomers Date: Tue Apr 2 18:09:40 2019 New Revision: 345808 URL: https://svnweb.freebsd.org/changeset/base/345808 Log: fusefs: cleanup and refactor some recent commits This commit cleans up after recent commits, especially 345766, 345768, and 345781. There is no functional change. The most important change is to add comments documenting why we can't send flags like O_APPEND in FUSE_WRITE_OPEN. PR: 236340 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_file.c projects/fuse2/sys/fs/fuse/fuse_file.h projects/fuse2/sys/fs/fuse/fuse_vnops.c Modified: projects/fuse2/sys/fs/fuse/fuse_file.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.c Tue Apr 2 18:01:54 2019 (r345807) +++ projects/fuse2/sys/fs/fuse/fuse_file.c Tue Apr 2 18:09:40 2019 (r345808) @@ -97,22 +97,75 @@ static int fuse_fh_count = 0; SYSCTL_INT(_vfs_fusefs, OID_AUTO, filehandle_count, CTLFLAG_RD, &fuse_fh_count, 0, "number of open FUSE filehandles"); +/* Get the FUFH type for a particular access mode */ +static inline fufh_type_t +fflags_2_fufh_type(int fflags) +{ + if ((fflags & FREAD) && (fflags & FWRITE)) + return FUFH_RDWR; + else if (fflags & (FWRITE)) + return FUFH_WRONLY; + else if (fflags & (FREAD)) + return FUFH_RDONLY; + else if (fflags & (FEXEC)) + return FUFH_EXEC; + else + panic("FUSE: What kind of a flag is this (%x)?", fflags); +} + +/* + * Get the flags to use for FUSE_CREATE, FUSE_OPEN and FUSE_RELEASE + * + * These are supposed to be the same as the flags argument to open(2). + * However, since we can't reliably associate a fuse_filehandle with a specific + * file descriptor it would would be dangerous to include anything more than + * the access mode flags. For example, suppose we open a file twice, once with + * O_APPEND and once without. Then the user pwrite(2)s to offset using the + * second file descriptor. If fusefs uses the first file handle, then the + * server may append the write to the end of the file rather than at offset 0. + * To prevent problems like this, we only ever send the portion of flags + * related to access mode. + * + * It's essential to send that portion, because FUSE uses it for server-side + * authorization. + * + * TODO: consider sending O_APPEND after upgrading to protocol 7.9, which + * includes flags in fuse_write_in. + */ +static inline int +fufh_type_2_fflags(fufh_type_t type) +{ + int oflags = -1; + + switch (type) { + case FUFH_RDONLY: + case FUFH_WRONLY: + case FUFH_RDWR: + case FUFH_EXEC: + oflags = type; + break; + default: + break; + } + + return oflags; +} + int -fuse_filehandle_open(struct vnode *vp, fufh_type_t fufh_type, +fuse_filehandle_open(struct vnode *vp, int a_mode, struct fuse_filehandle **fufhp, struct thread *td, struct ucred *cred) { struct fuse_dispatcher fdi; struct fuse_open_in *foi; struct fuse_open_out *foo; + fufh_type_t fufh_type; int err = 0; int oflags = 0; int op = FUSE_OPEN; - /* - * Note that this means we are effectively FILTERING OUT open() flags. - */ - oflags = fuse_filehandle_xlate_to_oflags(fufh_type); + fufh_type = fflags_2_fufh_type(a_mode); + oflags = fufh_type_2_fflags(fufh_type); if (vnode_isdir(vp)) { op = FUSE_OPENDIR; @@ -136,7 +189,7 @@ fuse_filehandle_open(struct vnode *vp, fufh_type_t fuf foo = fdi.answ; fuse_filehandle_init(vp, fufh_type, fufhp, td->td_proc->p_pid, cred, - foo->fh); + foo); fuse_vnode_open(vp, foo->open_flags, td); @@ -164,7 +217,7 @@ fuse_filehandle_close(struct vnode *vp, struct fuse_fi fdisp_make_vp(&fdi, op, vp, td, cred); fri = fdi.indata; fri->fh = fufh->fh_id; - fri->flags = fufh->flags; + fri->flags = fufh_type_2_fflags(fufh->fufh_type); err = fdisp_wait_answ(&fdi); fdisp_destroy(&fdi); @@ -185,18 +238,19 @@ out: * A pid of 0 means "don't care" */ bool -fuse_filehandle_validrw(struct vnode *vp, fufh_type_t fufh_type, +fuse_filehandle_validrw(struct vnode *vp, int mode, struct ucred *cred, pid_t pid) { struct fuse_vnode_data *fvdat = VTOFUD(vp); struct fuse_filehandle *fufh; + fufh_type_t fufh_type = fflags_2_fufh_type(mode); /* * Unlike fuse_filehandle_get, we want to search for a filehandle with * the exact cred, and no fallback */ LIST_FOREACH(fufh, &fvdat->handles, next) { - if (fufh->flags == fufh_type && + if (fufh->fufh_type == fufh_type && fufh->uid == cred->cr_uid && fufh->gid == cred->cr_rgid && (pid == 0 || fufh->pid == pid)) @@ -208,7 +262,7 @@ fuse_filehandle_validrw(struct vnode *vp, fufh_type_t /* Fallback: find a RDWR list entry with the right cred */ LIST_FOREACH(fufh, &fvdat->handles, next) { - if (fufh->flags == FUFH_RDWR && + if (fufh->fufh_type == FUFH_RDWR && fufh->uid == cred->cr_uid && fufh->gid == cred->cr_rgid && (pid == 0 || fufh->pid == pid)) @@ -229,7 +283,7 @@ fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh goto fallback; LIST_FOREACH(fufh, &fvdat->handles, next) { - if (fufh->flags == fufh_type && + if (fufh->fufh_type == fufh_type && fufh->uid == cred->cr_uid && fufh->gid == cred->cr_rgid && (pid == 0 || fufh->pid == pid)) @@ -239,7 +293,7 @@ fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh fallback: /* Fallback: find a list entry with the right flags */ LIST_FOREACH(fufh, &fvdat->handles, next) { - if (fufh->flags == fufh_type) + if (fufh->fufh_type == fufh_type) break; } @@ -267,7 +321,7 @@ fuse_filehandle_getrw(struct vnode *vp, fufh_type_t fu void fuse_filehandle_init(struct vnode *vp, fufh_type_t fufh_type, struct fuse_filehandle **fufhp, pid_t pid, struct ucred *cred, - uint64_t fh_id) + struct fuse_open_out *foo) { struct fuse_vnode_data *fvdat = VTOFUD(vp); struct fuse_filehandle *fufh; @@ -275,12 +329,12 @@ fuse_filehandle_init(struct vnode *vp, fufh_type_t fuf fufh = malloc(sizeof(struct fuse_filehandle), M_FUSE_FILEHANDLE, M_WAITOK); MPASS(fufh != NULL); - fufh->fh_id = fh_id; - fufh->flags = fufh_type; + fufh->fh_id = foo->fh; + fufh->fufh_type = fufh_type; fufh->gid = cred->cr_rgid; fufh->uid = cred->cr_uid; fufh->pid = pid; - /* TODO: initialize open flags */ + fufh->fuse_open_flags = foo->open_flags; if (!FUFH_IS_VALID(fufh)) { panic("FUSE: init: invalid filehandle id (type=%d)", fufh_type); } Modified: projects/fuse2/sys/fs/fuse/fuse_file.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.h Tue Apr 2 18:01:54 2019 (r345807) +++ projects/fuse2/sys/fs/fuse/fuse_file.h Tue Apr 2 18:09:40 2019 (r345808) @@ -137,8 +137,8 @@ struct fuse_filehandle { /* flags returned by FUSE_OPEN */ uint32_t fuse_open_flags; - /* The flags used to open(2) the file (using O_RDONLY, not FREAD) */ - uint32_t flags; + /* The access mode of the file handle */ + fufh_type_t fufh_type; /* Credentials used to open the file */ gid_t gid; @@ -146,43 +146,9 @@ struct fuse_filehandle { uid_t uid; }; -#define FUFH_IS_VALID(f) ((f)->flags != FUFH_INVALID) +#define FUFH_IS_VALID(f) ((f)->fufh_type != FUFH_INVALID) -static inline fufh_type_t -fuse_filehandle_xlate_from_fflags(int fflags) -{ - if ((fflags & FREAD) && (fflags & FWRITE)) - return FUFH_RDWR; - else if (fflags & (FWRITE)) - return FUFH_WRONLY; - else if (fflags & (FREAD)) - return FUFH_RDONLY; - else if (fflags & (FEXEC)) - return FUFH_EXEC; - else - panic("FUSE: What kind of a flag is this (%x)?", fflags); -} - -static inline int -fuse_filehandle_xlate_to_oflags(fufh_type_t type) -{ - int oflags = -1; - - switch (type) { - case FUFH_RDONLY: - case FUFH_WRONLY: - case FUFH_RDWR: - case FUFH_EXEC: - oflags = type; - break; - default: - break; - } - - return oflags; -} - -bool fuse_filehandle_validrw(struct vnode *vp, fufh_type_t fufh_type, +bool fuse_filehandle_validrw(struct vnode *vp, int mode, struct ucred *cred, pid_t pid); int fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh_type, struct fuse_filehandle **fufhp, struct ucred *cred, @@ -193,8 +159,8 @@ int fuse_filehandle_getrw(struct vnode *vp, fufh_type_ void fuse_filehandle_init(struct vnode *vp, fufh_type_t fufh_type, struct fuse_filehandle **fufhp, pid_t pid, - struct ucred *cred, uint64_t fh_id); -int fuse_filehandle_open(struct vnode *vp, fufh_type_t fufh_type, + struct ucred *cred, struct fuse_open_out *foo); +int fuse_filehandle_open(struct vnode *vp, int mode, struct fuse_filehandle **fufhp, struct thread *td, struct ucred *cred); int fuse_filehandle_close(struct vnode *vp, struct fuse_filehandle *fufh, Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Tue Apr 2 18:01:54 2019 (r345807) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Tue Apr 2 18:09:40 2019 (r345808) @@ -365,7 +365,15 @@ fuse_vnop_create(struct vop_create_args *ap) uint64_t parentnid = VTOFUD(dvp)->nid; mode_t mode = MAKEIMODE(vap->va_type, vap->va_mode); enum fuse_opcode op; + int flags; + /* + * VOP_CREATE doesn't tell us the open(2) flags, so we guess. Only a + * writable mode makes sense, and we might as well include readability + * too. + */ + flags = O_RDWR; + if (fuse_isdeadfs(dvp)) { return ENXIO; } @@ -385,7 +393,7 @@ fuse_vnop_create(struct vop_create_args *ap) fdisp_make(fdip, op, vnode_mount(dvp), parentnid, td, cred); foi = fdip->indata; foi->mode = mode; - foi->flags = O_CREAT | O_RDWR; + foi->flags = O_CREAT | flags; memcpy((char *)fdip->indata + sizeof(*foi), cnp->cn_nameptr, cnp->cn_namelen); ((char *)fdip->indata)[sizeof(*foi) + cnp->cn_namelen] = '\0'; @@ -420,7 +428,7 @@ fuse_vnop_create(struct vop_create_args *ap) cred); foi = fdip2->indata; foi->mode = mode; - foi->flags = O_RDWR; + foi->flags = flags; err = fdisp_wait_answ(fdip2); if (err) goto out; @@ -436,7 +444,7 @@ fuse_vnop_create(struct vop_create_args *ap) fdisp_make(fdip, FUSE_RELEASE, mp, nodeid, td, cred); fri = fdip->indata; fri->fh = fh_id; - fri->flags = fuse_filehandle_xlate_to_oflags(FUFH_RDWR); + fri->flags = flags; fuse_insert_callback(fdip->tick, fuse_internal_forget_callback); fuse_insert_message(fdip->tick); goto out; @@ -444,7 +452,7 @@ fuse_vnop_create(struct vop_create_args *ap) ASSERT_VOP_ELOCKED(*vpp, "fuse_vnop_create"); fuse_filehandle_init(*vpp, FUFH_RDWR, NULL, td->td_proc->p_pid, cred, - foo->fh); + foo); fuse_vnode_open(*vpp, foo->open_flags, td); cache_purge_negative(dvp); @@ -1203,31 +1211,27 @@ static int fuse_vnop_open(struct vop_open_args *ap) { struct vnode *vp = ap->a_vp; - int mode = ap->a_mode; + int a_mode = ap->a_mode; struct thread *td = ap->a_td; struct ucred *cred = ap->a_cred; pid_t pid = td->td_proc->p_pid; - - fufh_type_t fufh_type; struct fuse_vnode_data *fvdat; if (fuse_isdeadfs(vp)) return ENXIO; if (vp->v_type == VCHR || vp->v_type == VBLK || vp->v_type == VFIFO) return (EOPNOTSUPP); - if ((mode & (FREAD | FWRITE | FEXEC)) == 0) + if ((a_mode & (FREAD | FWRITE | FEXEC)) == 0) return EINVAL; fvdat = VTOFUD(vp); - fufh_type = fuse_filehandle_xlate_from_fflags(mode); - - if (fuse_filehandle_validrw(vp, fufh_type, cred, pid)) { + if (fuse_filehandle_validrw(vp, a_mode, cred, pid)) { fuse_vnode_open(vp, 0, td); return 0; } - return fuse_filehandle_open(vp, fufh_type, NULL, td, cred); + return fuse_filehandle_open(vp, a_mode, NULL, td, cred); } static int @@ -1395,7 +1399,7 @@ fuse_vnop_reclaim(struct vop_reclaim_args *ap) } LIST_FOREACH_SAFE(fufh, &fvdat->handles, next, fufh_tmp) { printf("FUSE: vnode being reclaimed with open fufh " - "(flags=%#x)", fufh->flags); + "(type=%#x)", fufh->fufh_type); fuse_filehandle_close(vp, fufh, td, NULL); } From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:03 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 84BADDC198 for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw0T3Kz4P55; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id D7BCC19F5F; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5C019551C; Mon, 1 Apr 2019 05:53:32 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 29CFC77027; Mon, 1 Apr 2019 05:53:32 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 179E4551B; Mon, 1 Apr 2019 05:53:32 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 80C695519 for ; Mon, 1 Apr 2019 05:53:29 +0000 (UTC) (envelope-from SRS0=8Ful=SD=vega.codepro.be=kp@codepro.be) Received: from venus.codepro.be (venus.codepro.be [IPv6:2a01:4f8:162:1127::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.codepro.be", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8906F7700B; Mon, 1 Apr 2019 05:53:28 +0000 (UTC) (envelope-from SRS0=8Ful=SD=vega.codepro.be=kp@codepro.be) Received: from vega.codepro.be (unknown [172.16.1.3]) by venus.codepro.be (Postfix) with ESMTP id 0005A2E0C2; Mon, 1 Apr 2019 07:53:18 +0200 (CEST) Received: by vega.codepro.be (Postfix, from userid 1001) id F10BD260A0; Mon, 1 Apr 2019 07:53:18 +0200 (CEST) From: Kristof Provost To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl Message-ID: <20190401055318.GI7163@vega.codepro.be> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline X-SVN-Group: head X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: in head: contrib/pf sys/netpfil/pf sbin/pfctl X-SVN-Commit-Revision: 345760 X-SVN-Commit-Repository: base X-Loop: FreeBSD.org User-Agent: Mutt/1.11.2 (2019-01-07) Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 29CFC77027 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.91 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.91)[-0.914,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:03 -0000 X-Original-Date: Mon, 1 Apr 2019 07:53:18 +0200 X-List-Received-Date: Tue, 03 Sep 2019 14:06:03 -0000 Author: kp Date: Mon Apr 1 06:51:32 2019 New Revision: 345760 URL: https://svnweb.freebsd.org/changeset/base/345625 Log: pf: Remove obsolete pf pf in FreeBSD lags years behind OpenBSD's pf. Remove it. Users are advised to migrate to ipf. Deleted: head/contrib/pf/authpf/authpf.8 head/contrib/pf/authpf/authpf.c head/contrib/pf/authpf/pathnames.h head/contrib/pf/ftp-proxy/filter.c head/contrib/pf/ftp-proxy/filter.h head/contrib/pf/ftp-proxy/ftp-proxy.8 head/contrib/pf/ftp-proxy/ftp-proxy.c head/contrib/pf/libevent/buffer.c head/contrib/pf/libevent/evbuffer.c head/contrib/pf/libevent/event-internal.h head/contrib/pf/libevent/event.c head/contrib/pf/libevent/event.h head/contrib/pf/libevent/evsignal.h head/contrib/pf/libevent/kqueue.c head/contrib/pf/libevent/log.c head/contrib/pf/libevent/log.h head/contrib/pf/libevent/poll.c head/contrib/pf/libevent/select.c head/contrib/pf/libevent/signal.c head/contrib/pf/pflogd/pflogd.8 head/contrib/pf/pflogd/pflogd.c head/contrib/pf/pflogd/pflogd.h head/contrib/pf/pflogd/pidfile.c head/contrib/pf/pflogd/pidfile.h head/contrib/pf/pflogd/privsep.c head/contrib/pf/pflogd/privsep_fdpass.c head/contrib/pf/tftp-proxy/filter.c head/contrib/pf/tftp-proxy/filter.h head/contrib/pf/tftp-proxy/tftp-proxy.8 head/contrib/pf/tftp-proxy/tftp-proxy.c head/contrib/tcpdump/print-pflog.c head/contrib/tcpdump/print-pfsync.c head/sbin/pfctl/Makefile head/sbin/pfctl/parse.y head/sbin/pfctl/pf.os head/sbin/pfctl/pf_print_state.c head/sbin/pfctl/pfctl.8 head/sbin/pfctl/pfctl.c head/sbin/pfctl/pfctl.h head/sbin/pfctl/pfctl_altq.c head/sbin/pfctl/pfctl_optimize.c head/sbin/pfctl/pfctl_osfp.c head/sbin/pfctl/pfctl_parser.c head/sbin/pfctl/pfctl_parser.h head/sbin/pfctl/pfctl_qstats.c head/sbin/pfctl/pfctl_radix.c head/sbin/pfctl/pfctl_table.c head/sys/modules/pf/Makefile head/sys/modules/pflog/Makefile head/sys/modules/pfsync/Makefile head/sys/netpfil/pf/if_pflog.c head/sys/netpfil/pf/if_pfsync.c head/sys/netpfil/pf/in4_cksum.c head/sys/netpfil/pf/pf.c head/sys/netpfil/pf/pf.h head/sys/netpfil/pf/pf_altq.h head/sys/netpfil/pf/pf_if.c head/sys/netpfil/pf/pf_ioctl.c head/sys/netpfil/pf/pf_lb.c head/sys/netpfil/pf/pf_mtag.h head/sys/netpfil/pf/pf_norm.c head/sys/netpfil/pf/pf_osfp.c head/sys/netpfil/pf/pf_ruleset.c head/sys/netpfil/pf/pf_table.c Index: contrib/pf/authpf/authpf.8 =================================================================== --- contrib/pf/authpf/authpf.8 (revision 345223) +++ contrib/pf/authpf/authpf.8 (working copy) @@ -1,584 +0,0 @@ -.\" $FreeBSD$ -.\" $OpenBSD: authpf.8,v 1.47 2009/01/06 03:11:50 mcbride Exp $ -.\" -.\" Copyright (c) 1998-2007 Bob Beck (beck@openbsd.org>. All rights reserved. -.\" -.\" Permission to use, copy, modify, and distribute this software for any -.\" purpose with or without fee is hereby granted, provided that the above -.\" copyright notice and this permission notice appear in all copies. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -.\" -.Dd January 29 2014 -.Dt AUTHPF 8 -.Os -.Sh NAME -.Nm authpf , -.Nm authpf-noip -.Nd authenticating gateway user shell -.Sh SYNOPSIS -.Nm authpf -.Nm authpf-noip -.Sh DESCRIPTION -.Nm -is a user shell for authenticating gateways. -It is used to change -.Xr pf 4 -rules when a user authenticates and starts a session with -.Xr sshd 8 -and to undo these changes when the user's session exits. -Typical use would be for a gateway that authenticates users before -allowing them Internet use, or a gateway that allows different users into -different places. -Combined with properly set up filter rules and secure switches, -.Nm -can be used to ensure users are held accountable for their network traffic. -It is meant to be used with users who can connect via -.Xr ssh 1 -only, and requires the -.Xr pf 4 -subsystem and an -.Xr fdescfs 5 -file system mounted at -.Pa /dev/fd -to be enabled. -.Pp -.Nm authpf-noip -is a user shell -which allows multiple connections to take -place from the same IP address. -It is useful primarily in cases where connections are tunneled via -the gateway system, and can be directly associated with the user name. -It cannot ensure accountability when -classifying connections by IP address; -in this case the client's IP address -is not provided to the packet filter via the -.Ar client_ip -macro or the -.Ar authpf_users -table. -Additionally, states associated with the client IP address -are not purged when the session is ended. -.Pp -To use either -.Nm -or -.Nm authpf-noip , -the user's shell needs to be set to -.Pa /usr/sbin/authpf -or -.Pa /usr/sbin/authpf-noip . -.Pp -.Nm -uses the -.Xr pf.conf 5 -syntax to change filter and translation rules for an individual -user or client IP address as long as a user maintains an active -.Xr ssh 1 -session, and logs the successful start and end of a session to -.Xr syslogd 8 . -.Nm -retrieves the client's connecting IP address via the -.Ev SSH_CLIENT -environment variable and, after performing additional access checks, -reads a template file to determine what filter and translation rules -(if any) to add, and -maintains the list of IP addresses of connected users in the -.Ar authpf_users -table. -On session exit the same rules and table entries that were added at startup -are removed, and all states associated with the client's IP address are purged. -.Pp -Each -.Nm -process stores its rules in a separate ruleset inside a -.Xr pf 4 -.Pa anchor -shared by all -.Nm -processes. -By default, the -.Pa anchor -name "authpf" is used, and the ruleset names equal the username and PID of the -.Nm -processes as "username(pid)". -The following rules need to be added to the main ruleset -.Pa /etc/pf.conf -in order to cause evaluation of any -.Nm -rules: -.Bd -literal -offset indent -nat-anchor "authpf/*" -rdr-anchor "authpf/*" -binat-anchor "authpf/*" -anchor "authpf/*" -.Ed -.Pp -The "/*" at the end of the anchor name is required for -.Xr pf 4 -to process the rulesets attached to the anchor by -.Nm authpf . -.Sh FILTER AND TRANSLATION RULES -Filter and translation rules for -.Nm -use the same format described in -.Xr pf.conf 5 . -The only difference is that these rules may (and probably should) use -the macro -.Em user_ip , -which is assigned the connecting IP address whenever -.Nm -is run. -Additionally, the macro -.Em user_id -is assigned the user name. -.Pp -Filter and translation rules are stored in a file called -.Pa authpf.rules . -This file will first be searched for in -.Pa /etc/authpf/users/$USER/ -and then in -.Pa /etc/authpf/ . -Only one of these files will be used if both are present. -.Pp -Per-user rules from the -.Pa /etc/authpf/users/$USER/ -directory are intended to be used when non-default rules -are needed on an individual user basis. -It is important to ensure that a user can not write or change -these configuration files. -.Pp -The -.Pa authpf.rules -file must exist in one of the above locations for -.Nm -to run. -.Sh CONFIGURATION -Options are controlled by the -.Pa /etc/authpf/authpf.conf -file. -If the file is empty, defaults are used for all -configuration options. -The file consists of pairs of the form -.Li name=value , -one per line. -Currently, the allowed values are as follows: -.Bl -tag -width Ds -.It anchor=name -Use the specified -.Pa anchor -name instead of "authpf". -.It table=name -Use the specified -.Pa table -name instead of "authpf_users". -.El -.Sh USER MESSAGES -On successful invocation, -.Nm -displays a message telling the user he or she has been authenticated. -It will additionally display the contents of the file -.Pa /etc/authpf/authpf.message -if the file exists and is readable. -.Pp -There exist two methods for providing additional granularity to the control -offered by -.Nm -- it is possible to set the gateway to explicitly allow users who have -authenticated to -.Xr ssh 1 -and deny access to only a few troublesome individuals. -This is done by creating a file with the banned user's login name as the -filename in -.Pa /etc/authpf/banned/ . -The contents of this file will be displayed to a banned user, thus providing -a method for informing the user that they have been banned, and where they can -go and how to get there if they want to have their service restored. -This is the default behaviour. -.Pp -It is also possible to configure -.Nm -to only allow specific users access. -This is done by listing their login names, one per line, in -.Pa /etc/authpf/authpf.allow . -A group of users can also be indicated by prepending "%" to the group name, -and all members of a login class can be indicated by prepending "@" to the -login class name. -If "*" is found on a line, then all usernames match. -If -.Nm -is unable to verify the user's permission to use the gateway, it will -print a brief message and die. -It should be noted that a ban takes precedence over an allow. -.Pp -On failure, messages will be logged to -.Xr syslogd 8 -for the system administrator. -The user does not see these, but will be told the system is unavailable due to -technical difficulties. -The contents of the file -.Pa /etc/authpf/authpf.problem -will also be displayed if the file exists and is readable. -.Sh CONFIGURATION ISSUES -.Nm -maintains the changed filter rules as long as the user maintains an -active session. -It is important to remember however, that the existence -of this session means the user is authenticated. -Because of this, it is important to configure -.Xr sshd 8 -to ensure the security of the session, and to ensure that the network -through which users connect is secure. -.Xr sshd 8 -should be configured to use the -.Ar ClientAliveInterval -and -.Ar ClientAliveCountMax -parameters to ensure that a ssh session is terminated quickly if -it becomes unresponsive, or if arp or address spoofing is used to -hijack the session. -Note that TCP keepalives are not sufficient for -this, since they are not secure. -Also note that the various SSH tunnelling mechanisms, -such as -.Ar AllowTcpForwarding -and -.Ar PermitTunnel , -should be disabled for -.Nm -users to prevent them from circumventing restrictions imposed by the -packet filter ruleset. -.Pp -.Nm -will remove state table entries that were created during a user's -session. -This ensures that there will be no unauthenticated traffic -allowed to pass after the controlling -.Xr ssh 1 -session has been closed. -.Pp -.Nm -is designed for gateway machines which typically do not have regular -(non-administrative) users using the machine. -An administrator must remember that -.Nm -can be used to modify the filter rules through the environment in -which it is run, and as such could be used to modify the filter rules -(based on the contents of the configuration files) by regular -users. -In the case where a machine has regular users using it, as well -as users with -.Nm -as their shell, the regular users should be prevented from running -.Nm -by using the -.Pa /etc/authpf/authpf.allow -or -.Pa /etc/authpf/banned/ -facilities. -.Pp -.Nm -modifies the packet filter and address translation rules, and because -of this it needs to be configured carefully. -.Nm -will not run and will exit silently if the -.Pa /etc/authpf/authpf.conf -file does not exist. -After considering the effect -.Nm -may have on the main packet filter rules, the system administrator may -enable -.Nm -by creating an appropriate -.Pa /etc/authpf/authpf.conf -file. -.Sh EXAMPLES -.Sy Control Files -\- To illustrate the user-specific access control -mechanisms, let us consider a typical user named bob. -Normally, as long as bob can authenticate himself, the -.Nm -program will load the appropriate rules. -Enter the -.Pa /etc/authpf/banned/ -directory. -If bob has somehow fallen from grace in the eyes of the -powers-that-be, they can prohibit him from using the gateway by creating -the file -.Pa /etc/authpf/banned/bob -containing a message about why he has been banned from using the network. -Once bob has done suitable penance, his access may be restored by moving or -removing the file -.Pa /etc/authpf/banned/bob . -.Pp -Now consider a workgroup containing alice, bob, carol and dave. -They have a -wireless network which they would like to protect from unauthorized use. -To accomplish this, they create the file -.Pa /etc/authpf/authpf.allow -which lists their login ids, group prepended with "%", or login class -prepended with "@", one per line. -At this point, even if eve could authenticate to -.Xr sshd 8 , -she would not be allowed to use the gateway. -Adding and removing users from -the work group is a simple matter of maintaining a list of allowed userids. -If bob once again manages to annoy the powers-that-be, they can ban him from -using the gateway by creating the familiar -.Pa /etc/authpf/banned/bob -file. -Though bob is listed in the allow file, he is prevented from using -this gateway due to the existence of a ban file. -.Pp -.Sy Distributed Authentication -\- It is often desirable to interface with a -distributed password system rather than forcing the sysadmins to keep a large -number of local password files in sync. -The -.Xr login.conf 5 -mechanism in -.Ox -can be used to fork the right shell. -To make that happen, -.Xr login.conf 5 -should have entries that look something like this: -.Bd -literal -offset indent -shell-default:shell=/bin/csh - -default:\e - ... - :shell=/usr/sbin/authpf - -daemon:\e - ... - :shell=/bin/csh:\e - :tc=default: - -staff:\e - ... - :shell=/bin/csh:\e - :tc=default: -.Ed -.Pp -Using a default password file, all users will get -.Nm -as their shell except for root who will get -.Pa /bin/csh . -.Pp -.Sy SSH Configuration -\- As stated earlier, -.Xr sshd 8 -must be properly configured to detect and defeat network attacks. -To that end, the following options should be added to -.Xr sshd_config 5 : -.Bd -literal -offset indent -Protocol 2 -ClientAliveInterval 15 -ClientAliveCountMax 3 -.Ed -.Pp -This ensures that unresponsive or spoofed sessions are terminated within a -minute, since a hijacker should not be able to spoof ssh keepalive messages. -.Pp -.Sy Banners -\- Once authenticated, the user is shown the contents of -.Pa /etc/authpf/authpf.message . -This message may be a screen-full of the appropriate use policy, the contents -of -.Pa /etc/motd -or something as simple as the following: -.Bd -literal -offset indent -This means you will be held accountable by the powers that be -for traffic originating from your machine, so please play nice. -.Ed -.Pp -To tell the user where to go when the system is broken, -.Pa /etc/authpf/authpf.problem -could contain something like this: -.Bd -literal -offset indent -Sorry, there appears to be some system problem. To report this -problem so we can fix it, please phone 1-900-314-1597 or send -an email to remove@bulkmailerz.net. -.Ed -.Pp -.Sy Packet Filter Rules -\- In areas where this gateway is used to protect a -wireless network (a hub with several hundred ports), the default rule set as -well as the per-user rules should probably allow very few things beyond -encrypted protocols like -.Xr ssh 1 , -.Xr ssl 8 , -or -.Xr ipsec 4 . -On a securely switched network, with plug-in jacks for visitors who are -given authentication accounts, you might want to allow out everything. -In this context, a secure switch is one that tries to prevent address table -overflow attacks. -.Pp -Example -.Pa /etc/pf.conf : -.Bd -literal -# by default we allow internal clients to talk to us using -# ssh and use us as a dns server. -internal_if="fxp1" -gateway_addr="10.0.1.1" -nat-anchor "authpf/*" -rdr-anchor "authpf/*" -binat-anchor "authpf/*" -block in on $internal_if from any to any -pass in quick on $internal_if proto tcp from any to $gateway_addr \e - port = ssh -pass in quick on $internal_if proto udp from any to $gateway_addr \e - port = domain -anchor "authpf/*" -.Ed -.Pp -.Sy For a switched, wired net -\- This example -.Pa /etc/authpf/authpf.rules -makes no real restrictions; it turns the IP address on and off, logging -TCP connections. -.Bd -literal -external_if = "xl0" -internal_if = "fxp0" - -pass in log quick on $internal_if proto tcp from $user_ip to any -pass in quick on $internal_if from $user_ip to any -.Ed -.Pp -.Sy For a wireless or shared net -\- This example -.Pa /etc/authpf/authpf.rules -could be used for an insecure network (such as a public wireless network) where -we might need to be a bit more restrictive. -.Bd -literal -internal_if="fxp1" -ipsec_gw="10.2.3.4" - -# rdr ftp for proxying by ftp-proxy(8) -rdr on $internal_if proto tcp from $user_ip to any port 21 \e - -> 127.0.0.1 port 8021 - -# allow out ftp, ssh, www and https only, and allow user to negotiate -# ipsec with the ipsec server. -pass in log quick on $internal_if proto tcp from $user_ip to any \e - port { 21, 22, 80, 443 } -pass in quick on $internal_if proto tcp from $user_ip to any \e - port { 21, 22, 80, 443 } -pass in quick proto udp from $user_ip to $ipsec_gw port = isakmp -pass in quick proto esp from $user_ip to $ipsec_gw -.Ed -.Pp -.Sy Dealing with NAT -\- The following -.Pa /etc/authpf/authpf.rules -shows how to deal with NAT, using tags: -.Bd -literal -ext_if = "fxp1" -ext_addr = 129.128.11.10 -int_if = "fxp0" -# nat and tag connections... -nat on $ext_if from $user_ip to any tag $user_ip -> $ext_addr -pass in quick on $int_if from $user_ip to any -pass out log quick on $ext_if tagged $user_ip -.Ed -.Pp -With the above rules added by -.Nm , -outbound connections corresponding to each users NAT'ed connections -will be logged as in the example below, where the user may be identified -from the ruleset name. -.Bd -literal -# tcpdump -n -e -ttt -i pflog0 -Oct 31 19:42:30.296553 rule 0.bbeck(20267).1/0(match): pass out on fxp1: \e -129.128.11.10.60539 > 198.137.240.92.22: S 2131494121:2131494121(0) win \e -16384 (DF) -.Ed -.Pp -.Sy Using the authpf_users table -\- Simple -.Nm -settings can be implemented without an anchor by just using the "authpf_users" -.Pa table . -For example, the following -.Xr pf.conf 5 -lines will give SMTP and IMAP access to logged in users: -.Bd -literal -table persist -pass in on $ext_if proto tcp from \e - to port { smtp imap } -.Ed -.Pp -It is also possible to use the "authpf_users" -.Pa table -in combination with anchors. -For example, -.Xr pf 4 -processing can be sped up by looking up the anchor -only for packets coming from logged in users: -.Bd -literal -table persist -anchor "authpf/*" from -rdr-anchor "authpf/*" from -.Ed -.Pp -.Sy Tunneled users -\- normally -.Nm -allows only one session per client IP address. -However in some cases, such as when connections are tunneled via -.Xr ssh 1 -or -.Xr ipsec 4 , -the connections can be authorized based on the userid of the user instead of -the client IP address. -In this case it is appropriate to use -.Nm authpf-noip -to allow multiple users behind a NAT gateway to connect. -In the -.Pa /etc/authpf/authpf.rules -example below, the remote user could tunnel a remote desktop session to their -workstation: -.Bd -literal -internal_if="bge0" -workstation_ip="10.2.3.4" - -pass out on $internal_if from (self) to $workstation_ip port 3389 \e - user $user_id -.Ed -.Sh FILES -.Bl -tag -width "/etc/authpf/authpf.conf" -compact -.It Pa /etc/authpf/authpf.conf -.It Pa /etc/authpf/authpf.allow -.It Pa /etc/authpf/authpf.rules -.It Pa /etc/authpf/authpf.message -.It Pa /etc/authpf/authpf.problem -.El -.Sh SEE ALSO -.Xr pf 4 , -.Xr fdescfs 5 , -.Xr pf.conf 5 , -.Xr securelevel 7 , -.Xr ftp-proxy 8 -.Sh HISTORY -The -.Nm -program first appeared in -.Ox 3.1 . -.Sh BUGS -Configuration issues are tricky. -The authenticating -.Xr ssh 1 -connection may be secured, but if the network is not secured the user may -expose insecure protocols to attackers on the same network, or enable other -attackers on the network to pretend to be the user by spoofing their IP -address. -.Pp -.Nm -is not designed to prevent users from denying service to other users. Index: contrib/pf/authpf/pathnames.h =================================================================== --- contrib/pf/authpf/pathnames.h (revision 345223) +++ contrib/pf/authpf/pathnames.h (working copy) @@ -1,39 +0,0 @@ -/* $OpenBSD: pathnames.h,v 1.8 2008/02/14 01:49:17 mcbride Exp $ */ - -/* - * Copyright (C) 2002 Chris Kuethe (ckuethe@ualberta.ca) - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#define PATH_CONFFILE "/etc/authpf/authpf.conf" -#define PATH_ALLOWFILE "/etc/authpf/authpf.allow" -#define PATH_PFRULES "/etc/authpf/authpf.rules" -#define PATH_PROBLEM "/etc/authpf/authpf.problem" -#define PATH_MESSAGE "/etc/authpf/authpf.message" -#define PATH_USER_DIR "/etc/authpf/users" -#define PATH_BAN_DIR "/etc/authpf/banned" -#define PATH_DEVFILE "/dev/pf" -#define PATH_PIDFILE "/var/authpf" -#define PATH_AUTHPF_SHELL "/usr/sbin/authpf" -#define PATH_AUTHPF_SHELL_NOIP "/usr/sbin/authpf-noip" -#define PATH_PFCTL "/sbin/pfctl" Index: contrib/pf/ftp-proxy/filter.c =================================================================== --- contrib/pf/ftp-proxy/filter.c (revision 345223) +++ contrib/pf/ftp-proxy/filter.c (working copy) @@ -1,393 +0,0 @@ -/* $OpenBSD: filter.c,v 1.8 2008/06/13 07:25:26 claudio Exp $ */ - -/* - * Copyright (c) 2004, 2005 Camiel Dobbelaar, - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "filter.h" - -/* From netinet/in.h, but only _KERNEL_ gets them. */ -#define satosin(sa) ((struct sockaddr_in *)(sa)) -#define satosin6(sa) ((struct sockaddr_in6 *)(sa)) - -enum { TRANS_FILTER = 0, TRANS_NAT, TRANS_RDR, TRANS_SIZE }; - -int prepare_rule(u_int32_t, int, struct sockaddr *, struct sockaddr *, - u_int16_t); -int server_lookup4(struct sockaddr_in *, struct sockaddr_in *, - struct sockaddr_in *); -int server_lookup6(struct sockaddr_in6 *, struct sockaddr_in6 *, - struct sockaddr_in6 *); - -static struct pfioc_pooladdr pfp; -static struct pfioc_rule pfr; -static struct pfioc_trans pft; -static struct pfioc_trans_e pfte[TRANS_SIZE]; -static int dev, rule_log; -static const char *qname, *tagname; - -int -add_filter(u_int32_t id, u_int8_t dir, struct sockaddr *src, - struct sockaddr *dst, u_int16_t d_port) -{ - if (!src || !dst || !d_port) { - errno = EINVAL; - return (-1); - } - - if (prepare_rule(id, PF_RULESET_FILTER, src, dst, d_port) == -1) - return (-1); - - pfr.rule.direction = dir; - if (ioctl(dev, DIOCADDRULE, &pfr) == -1) - return (-1); - - return (0); -} - -int -add_nat(u_int32_t id, struct sockaddr *src, struct sockaddr *dst, - u_int16_t d_port, struct sockaddr *nat, u_int16_t nat_range_low, - u_int16_t nat_range_high) -{ - if (!src || !dst || !d_port || !nat || !nat_range_low || - (src->sa_family != nat->sa_family)) { - errno = EINVAL; - return (-1); - } - - if (prepare_rule(id, PF_RULESET_NAT, src, dst, d_port) == -1) - return (-1); - - if (nat->sa_family == AF_INET) { - memcpy(&pfp.addr.addr.v.a.addr.v4, - &satosin(nat)->sin_addr.s_addr, 4); - memset(&pfp.addr.addr.v.a.mask.addr8, 255, 4); - } else { - memcpy(&pfp.addr.addr.v.a.addr.v6, - &satosin6(nat)->sin6_addr.s6_addr, 16); - memset(&pfp.addr.addr.v.a.mask.addr8, 255, 16); - } - if (ioctl(dev, DIOCADDADDR, &pfp) == -1) - return (-1); - - pfr.rule.rpool.proxy_port[0] = nat_range_low; - pfr.rule.rpool.proxy_port[1] = nat_range_high; - if (ioctl(dev, DIOCADDRULE, &pfr) == -1) - return (-1); - - return (0); -} - -int -add_rdr(u_int32_t id, struct sockaddr *src, struct sockaddr *dst, - u_int16_t d_port, struct sockaddr *rdr, u_int16_t rdr_port) -{ - if (!src || !dst || !d_port || !rdr || !rdr_port || - (src->sa_family != rdr->sa_family)) { - errno = EINVAL; - return (-1); - } - - if (prepare_rule(id, PF_RULESET_RDR, src, dst, d_port) == -1) - return (-1); - - if (rdr->sa_family == AF_INET) { - memcpy(&pfp.addr.addr.v.a.addr.v4, - &satosin(rdr)->sin_addr.s_addr, 4); - memset(&pfp.addr.addr.v.a.mask.addr8, 255, 4); - } else { - memcpy(&pfp.addr.addr.v.a.addr.v6, - &satosin6(rdr)->sin6_addr.s6_addr, 16); - memset(&pfp.addr.addr.v.a.mask.addr8, 255, 16); - } - if (ioctl(dev, DIOCADDADDR, &pfp) == -1) - return (-1); - - pfr.rule.rpool.proxy_port[0] = rdr_port; - if (ioctl(dev, DIOCADDRULE, &pfr) == -1) - return (-1); - - return (0); -} - -int -do_commit(void) -{ - if (ioctl(dev, DIOCXCOMMIT, &pft) == -1) - return (-1); - - return (0); -} - -int -do_rollback(void) -{ - if (ioctl(dev, DIOCXROLLBACK, &pft) == -1) - return (-1); - - return (0); -} - -void -init_filter(const char *opt_qname, const char *opt_tagname, int opt_verbose) -{ - struct pf_status status; - - qname = opt_qname; - tagname = opt_tagname; - - if (opt_verbose == 1) - rule_log = PF_LOG; - else if (opt_verbose == 2) - rule_log = PF_LOG_ALL; - - dev = open("/dev/pf", O_RDWR); - if (dev == -1) - err(1, "open /dev/pf"); - if (ioctl(dev, DIOCGETSTATUS, &status) == -1) - err(1, "DIOCGETSTATUS"); - if (!status.running) - errx(1, "pf is disabled"); -} - -int -prepare_commit(u_int32_t id) -{ - char an[PF_ANCHOR_NAME_SIZE]; - int i; - - memset(&pft, 0, sizeof pft); - pft.size = TRANS_SIZE; - pft.esize = sizeof pfte[0]; - pft.array = pfte; - - snprintf(an, PF_ANCHOR_NAME_SIZE, "%s/%d.%d", FTP_PROXY_ANCHOR, - getpid(), id); - for (i = 0; i < TRANS_SIZE; i++) { - memset(&pfte[i], 0, sizeof pfte[0]); - strlcpy(pfte[i].anchor, an, PF_ANCHOR_NAME_SIZE); - switch (i) { - case TRANS_FILTER: - pfte[i].rs_num = PF_RULESET_FILTER; - break; - case TRANS_NAT: - pfte[i].rs_num = PF_RULESET_NAT; - break; - case TRANS_RDR: - pfte[i].rs_num = PF_RULESET_RDR; - break; - default: - errno = EINVAL; - return (-1); - } - } - - if (ioctl(dev, DIOCXBEGIN, &pft) == -1) - return (-1); - - return (0); -} - -int -prepare_rule(u_int32_t id, int rs_num, struct sockaddr *src, - struct sockaddr *dst, u_int16_t d_port) -{ - char an[PF_ANCHOR_NAME_SIZE]; - - if ((src->sa_family != AF_INET && src->sa_family != AF_INET6) || - (src->sa_family != dst->sa_family)) { - errno = EPROTONOSUPPORT; - return (-1); - } - - memset(&pfp, 0, sizeof pfp); - memset(&pfr, 0, sizeof pfr); - snprintf(an, PF_ANCHOR_NAME_SIZE, "%s/%d.%d", FTP_PROXY_ANCHOR, - getpid(), id); - strlcpy(pfp.anchor, an, PF_ANCHOR_NAME_SIZE); - strlcpy(pfr.anchor, an, PF_ANCHOR_NAME_SIZE); - - switch (rs_num) { - case PF_RULESET_FILTER: - pfr.ticket = pfte[TRANS_FILTER].ticket; - break; - case PF_RULESET_NAT: - pfr.ticket = pfte[TRANS_NAT].ticket; - break; - case PF_RULESET_RDR: - pfr.ticket = pfte[TRANS_RDR].ticket; - break; - default: - errno = EINVAL; - return (-1); - } - if (ioctl(dev, DIOCBEGINADDRS, &pfp) == -1) - return (-1); - pfr.pool_ticket = pfp.ticket; - - /* Generic for all rule types. */ - pfr.rule.af = src->sa_family; - pfr.rule.proto = IPPROTO_TCP; - pfr.rule.src.addr.type = PF_ADDR_ADDRMASK; - pfr.rule.dst.addr.type = PF_ADDR_ADDRMASK; - if (src->sa_family == AF_INET) { - memcpy(&pfr.rule.src.addr.v.a.addr.v4, - &satosin(src)->sin_addr.s_addr, 4); - memset(&pfr.rule.src.addr.v.a.mask.addr8, 255, 4); - memcpy(&pfr.rule.dst.addr.v.a.addr.v4, - &satosin(dst)->sin_addr.s_addr, 4); - memset(&pfr.rule.dst.addr.v.a.mask.addr8, 255, 4); - } else { - memcpy(&pfr.rule.src.addr.v.a.addr.v6, - &satosin6(src)->sin6_addr.s6_addr, 16); - memset(&pfr.rule.src.addr.v.a.mask.addr8, 255, 16); - memcpy(&pfr.rule.dst.addr.v.a.addr.v6, - &satosin6(dst)->sin6_addr.s6_addr, 16); - memset(&pfr.rule.dst.addr.v.a.mask.addr8, 255, 16); - } - pfr.rule.dst.port_op = PF_OP_EQ; - pfr.rule.dst.port[0] = htons(d_port); - - switch (rs_num) { - case PF_RULESET_FILTER: - /* - * pass [quick] [log] inet[6] proto tcp \ - * from $src to $dst port = $d_port flags S/SA keep state - * (max 1) [queue qname] [tag tagname] - */ - pfr.rule.action = PF_PASS; - pfr.rule.quick = 1; - pfr.rule.log = rule_log; - pfr.rule.keep_state = 1; - pfr.rule.flags = TH_SYN; - pfr.rule.flagset = (TH_SYN|TH_ACK); - pfr.rule.max_states = 1; - if (qname != NULL) - strlcpy(pfr.rule.qname, qname, sizeof pfr.rule.qname); - if (tagname != NULL) { - pfr.rule.quick = 0; - strlcpy(pfr.rule.tagname, tagname, - sizeof pfr.rule.tagname); - } - break; - case PF_RULESET_NAT: - /* - * nat inet[6] proto tcp from $src to $dst port $d_port -> $nat - */ - pfr.rule.action = PF_NAT; - break; - case PF_RULESET_RDR: - /* - * rdr inet[6] proto tcp from $src to $dst port $d_port -> $rdr - */ - pfr.rule.action = PF_RDR; - break; - default: - errno = EINVAL; - return (-1); - } - - return (0); -} - -int -server_lookup(struct sockaddr *client, struct sockaddr *proxy, - struct sockaddr *server) -{ - if (client->sa_family == AF_INET) - return (server_lookup4(satosin(client), satosin(proxy), - satosin(server))); - - if (client->sa_family == AF_INET6) - return (server_lookup6(satosin6(client), satosin6(proxy), - satosin6(server))); - - errno = EPROTONOSUPPORT; - return (-1); -} - -int -server_lookup4(struct sockaddr_in *client, struct sockaddr_in *proxy, - struct sockaddr_in *server) -{ - struct pfioc_natlook pnl; - - memset(&pnl, 0, sizeof pnl); - pnl.direction = PF_OUT; - pnl.af = AF_INET; - pnl.proto = IPPROTO_TCP; - memcpy(&pnl.saddr.v4, &client->sin_addr.s_addr, sizeof pnl.saddr.v4); - memcpy(&pnl.daddr.v4, &proxy->sin_addr.s_addr, sizeof pnl.daddr.v4); - pnl.sport = client->sin_port; - pnl.dport = proxy->sin_port; - - if (ioctl(dev, DIOCNATLOOK, &pnl) == -1) - return (-1); - - memset(server, 0, sizeof(struct sockaddr_in)); - server->sin_len = sizeof(struct sockaddr_in); - server->sin_family = AF_INET; - memcpy(&server->sin_addr.s_addr, &pnl.rdaddr.v4, - sizeof server->sin_addr.s_addr); - server->sin_port = pnl.rdport; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:08 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A2BA6DC329 for ; Tue, 3 Sep 2019 14:06:05 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z02Sl4z4P9Z; Tue, 3 Sep 2019 14:06:04 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 4C9631A0C1; Tue, 3 Sep 2019 14:05:57 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 160EF69D2; Tue, 2 Apr 2019 18:44:05 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4BD267190D; Tue, 2 Apr 2019 18:44:05 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1B2146994; Tue, 2 Apr 2019 18:44:05 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 379BC6992 for ; Tue, 2 Apr 2019 18:44:02 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 020F071909; Tue, 2 Apr 2019 18:44:02 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CF7A921A9; Tue, 2 Apr 2019 18:44:01 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x32Ii1O9041320; Tue, 2 Apr 2019 18:44:01 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x32Ii1wR041319; Tue, 2 Apr 2019 18:44:01 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904021844.x32Ii1wR041319@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345809 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345809 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4BD267190D X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.97)[-0.974,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:09 -0000 X-Original-Date: Tue, 2 Apr 2019 18:44:01 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:09 -0000 Author: asomers Date: Tue Apr 2 18:44:01 2019 New Revision: 345809 URL: https://svnweb.freebsd.org/changeset/base/345809 Log: fusefs: check return value of wait(2) in fork tests Reported by: ngie Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Tue Apr 2 18:09:40 2019 (r345808) +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Tue Apr 2 18:44:01 2019 (r345809) @@ -321,7 +321,7 @@ out: /* Signal the child process to go */ ASSERT_EQ(0, sem_post(sem)) << strerror(errno); - wait(&child_status); + ASSERT_LE(0, wait(&child_status)) << strerror(errno); ASSERT_EQ(0, WEXITSTATUS(child_status)); } else { FAIL() << strerror(errno); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:08 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id AB032DC32C for ; Tue, 3 Sep 2019 14:06:05 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z108qhz4P9w; Tue, 3 Sep 2019 14:06:05 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 6C4A61A0D3; Tue, 3 Sep 2019 14:05:57 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6BA2F7181; Tue, 2 Apr 2019 18:51:07 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2C4BD7222B; Tue, 2 Apr 2019 18:51:07 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 150877180; Tue, 2 Apr 2019 18:51:07 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 459307176; Tue, 2 Apr 2019 18:51:04 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9B5AE721BF; Tue, 2 Apr 2019 18:51:02 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: by mail-pl1-x62f.google.com with SMTP id w24so318072plp.2; Tue, 02 Apr 2019 11:51:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=0r3dyu4gPQV/0ZI5C2ryoJAfgk5K3GaxT3DbTuAWh5c=; b=bmLlftprRtxnieWqX6lwAEaqvW9/n883LH6m8LCUT+oNTTXUuzclcHznVpjOjhcg88 UDBkV2L1hKNWfzxUdm38kO8oxR5rizYWvu8CLaPvZlI4qc/LVj7RMTQESEXrR/9UteZt TF9yptGxqOpbdlfBLWtQfrremGbdpGRXG3FZOV0UB+HijmPqseQxVODfX6p901U7TXpH XYT+XbHvtbhFcWjTeQb4oOznvVvJbNh6J+9Usr3n68T5TIOljiVuRYoSmBDhuXJ3bIjF lLEXWF7aVRTXh/PV8w6aK9Ur1WpWgilfx46TxvfeKiRleB0lKjA33Qs+6h6dQO4Ewsoa t+hA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=0r3dyu4gPQV/0ZI5C2ryoJAfgk5K3GaxT3DbTuAWh5c=; b=c+ISgUrnkv2lPSO+D6evKa6h50kfRhdF84fYklmwtEhfpRZL5Yb4tAUHolQ/R+RR3U UWk9Q1QNpsQ2duDGHjiZ1Kn/6khoCdG2TR+ppdmbZ2B6PRbftadGQ/yxaxnN5F0tx7PZ nN5iTy0Jo6bWVAcxHTDkStzHSvHVdd+q08+avMXbZDoVj/5blmoh9ywDPWnzxNJr/BY6 +kW6SOK9i1AIZMaZSnvZtBgrxNkcG2Czx5t7sIxKT6EgKg8nbo1SWP4CdqgILxp3sbP0 ZED0XCwNjXhLbaxqSb1zbZAjZsRcSIWMTmIfa/HUYD28RVXMJsqTYk739nBxN4RDtwAl 6tzw== X-Gm-Message-State: APjAAAVbSP/zeYMtORn0w2qnhZUDP064yCPdso6HiQIQZpBpaqD/Demj lGId5QyNuriZ2tiQeILs9CeCuenpwAw= X-Google-Smtp-Source: APXvYqwPVafnRVtPwk9aTb12GQHLqaPYAhgKidrvmlQQoUhm4wUqChYCp+9ixsMZdo9NiYGa+ucTIQ== X-Received: by 2002:a17:902:f089:: with SMTP id go9mr31826442plb.309.1554231058364; Tue, 02 Apr 2019 11:50:58 -0700 (PDT) Received: from [192.168.20.7] (c-73-19-52-228.hsd1.wa.comcast.net. [73.19.52.228]) by smtp.gmail.com with ESMTPSA id t64sm33852261pfa.86.2019.04.02.11.50.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Apr 2019 11:50:57 -0700 (PDT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 12.2 \(3445.102.3\)) Subject: Re: svn commit: r345809 - projects/fuse2/tests/sys/fs/fusefs From: Enji Cooper In-Reply-To: Cc: src-committers , svn-src-projects@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <1590D5B3-58F2-4086-8717-804AB5F89B69@gmail.com> References: <201904021844.x32Ii1wR041319@repo.freebsd.org> <77D06D49-8CE8-483C-90FF-D8CD0122599E@gmail.com> To: Alan Somers X-Mailer: Apple Mail (2.3445.102.3) Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2C4BD7222B X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.98 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.98)[-0.984,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:09 -0000 X-Original-Date: Tue, 2 Apr 2019 11:50:56 -0700 X-List-Received-Date: Tue, 03 Sep 2019 14:06:09 -0000 > On Apr 2, 2019, at 11:49 AM, Alan Somers wrote: >=20 > On Tue, Apr 2, 2019 at 12:45 PM Enji Cooper = wrote: >>=20 >>=20 >>> On Apr 2, 2019, at 11:44 AM, Alan Somers = wrote: >>>=20 >>> Author: asomers >>> Date: Tue Apr 2 18:44:01 2019 >>> New Revision: 345809 >>> URL: https://svnweb.freebsd.org/changeset/base/345809 >>>=20 >>> Log: >>> fusefs: check return value of wait(2) in fork tests >>>=20 >>> Reported by: ngie >>> Sponsored by: The FreeBSD Foundation >>>=20 >>> Modified: >>> projects/fuse2/tests/sys/fs/fusefs/utils.cc >>>=20 >>> Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc >>> = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D >>> --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Tue Apr 2 = 18:09:40 2019 (r345808) >>> +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Tue Apr 2 = 18:44:01 2019 (r345809) >>> @@ -321,7 +321,7 @@ out: >>> /* Signal the child process to go */ >>> ASSERT_EQ(0, sem_post(sem)) << strerror(errno); >>>=20 >>> - wait(&child_status); >>> + ASSERT_LE(0, wait(&child_status)) << strerror(errno); >>=20 >> Don=E2=80=99t you want ASSERT_GE here, since you=E2=80=99re testing = that wait succeeded? >> -Enji >=20 > Opposite operand order. I'm asserting that 0 is less than or equal to > wait's return value. Ah, yes. Derp. Thank you for correcting me on that :D. -Enji From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:02 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 4D7EBDC17B for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv0pjhz4P3l; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 1D6BE19F03; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id C162C8A28; Sat, 30 Mar 2019 17:24:23 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id F16D26B8B4; Sat, 30 Mar 2019 17:24:21 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 15E40893F; Sat, 30 Mar 2019 17:24:16 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id DA496887A for ; Sat, 30 Mar 2019 17:24:12 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id A18C56B7E3; Sat, 30 Mar 2019 17:24:12 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 62DCD1A0B8; Sat, 30 Mar 2019 17:24:12 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2UHOCfm008937; Sat, 30 Mar 2019 17:24:12 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2UHOC0H008936; Sat, 30 Mar 2019 17:24:12 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201903301724.x2UHOC0H008936@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345736 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345736 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: F16D26B8B4 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.967,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:02 -0000 X-Original-Date: Sat, 30 Mar 2019 17:24:12 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:02 -0000 Author: asomers Date: Sat Mar 30 17:24:11 2019 New Revision: 345736 URL: https://svnweb.freebsd.org/changeset/base/345736 Log: fusefs: add another regression test for bug 236844 This test shows how bug 236844 can lead to a privilege escalation when used with the -o allow_other mount option. PR: 236844 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Sat Mar 30 17:23:15 2019 (r345735) +++ projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Sat Mar 30 17:24:11 2019 (r345736) @@ -93,6 +93,73 @@ TEST_F(AllowOther, allowed) ); } +/* + * A variation of the Open.multiple_creds test showing how the bug can lead to a + * privilege elevation. The first process is privileged and opens a file only + * visible to root. The second process is unprivileged and shouldn't be able + * to open the file, but does thanks to the bug + */ +/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236844 */ +TEST_F(AllowOther, DISABLED_privilege_escalation) +{ + const static char FULLPATH[] = "mountpoint/some_file.txt"; + const static char RELPATH[] = "some_file.txt"; + int fd1; + const static uint64_t ino = 42; + const static uint64_t fh = 100; + + /* Fork a child to open the file with different credentials */ + fork(true, [&] { + + expect_lookup(RELPATH, ino, S_IFREG | 0600, 0, 2); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_OPEN && + in->header.pid == (uint32_t)getpid() && + in->header.uid == (uint32_t)geteuid() && + in->header.nodeid == ino); + }, Eq(true)), + _) + ).WillOnce(Invoke( + ReturnImmediate([](auto in __unused, auto out) { + out->body.open.fh = fh; + out->header.len = sizeof(out->header); + SET_OUT_HEADER_LEN(out, open); + }))); + + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_OPEN && + in->header.pid != (uint32_t)getpid() && + in->header.uid != (uint32_t)geteuid() && + in->header.nodeid == ino); + }, Eq(true)), + _) + ).Times(AnyNumber()) + .WillRepeatedly(Invoke(ReturnErrno(EPERM))); + expect_getattr(ino, 0); + + fd1 = open(FULLPATH, O_RDONLY); + EXPECT_LE(0, fd1) << strerror(errno); + }, [] { + int fd0; + + fd0 = open(FULLPATH, O_RDONLY); + if (fd0 >= 0) { + fprintf(stderr, "Privilege escalation!\n"); + return 1; + } + if (errno != EPERM) { + fprintf(stderr, "Unexpected error %s\n", + strerror(errno)); + return 1; + } + return 0; + } + ); + /* Deliberately leak fd1. close(2) will be tested in release.cc */ +} + TEST_F(NoAllowOther, disallowed) { fork(true, [] { From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:04 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1101BDC1D6 for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw1Ld0z4P5B; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 30B4719F7B; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id C19D4C050; Mon, 1 Apr 2019 13:26:31 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2F8766EE9C; Mon, 1 Apr 2019 13:26:31 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 12C15C00F; Mon, 1 Apr 2019 13:26:31 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5D884C00B for ; Mon, 1 Apr 2019 13:26:28 +0000 (UTC) (envelope-from mrvmurray@icloud.com) Received: from st43p00im-zteg10073401.me.com (st43p00im-zteg10073401.me.com [17.58.63.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 1A8F26EE91 for ; Mon, 1 Apr 2019 13:26:28 +0000 (UTC) (envelope-from mrvmurray@icloud.com) Received: from gronkulator.grondar.org (grouter.grondar.org [88.96.155.38]) by st43p00im-zteg10073401.me.com (Postfix) with ESMTPSA id 5875A5E0140; Mon, 1 Apr 2019 13:26:20 +0000 (UTC) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 12.4 \(3445.104.8\)) Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl From: Mark Murray In-Reply-To: <20190401055318.GI7163@vega.codepro.be> Cc: src-committers , svn-src-projects@freebsd.org Content-Transfer-Encoding: 7bit Message-Id: References: <20190401055318.GI7163@vega.codepro.be> To: Kristof Provost X-Mailer: Apple Mail (2.3445.104.8) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-04-01_05:, , signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 mlxscore=0 mlxlogscore=331 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1812120000 definitions=main-1904010092 Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2F8766EE9C X-Spamd-Bar: ------ X-Spamd-Result: default: False [-6.96 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.958,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:04 -0000 X-Original-Date: Mon, 1 Apr 2019 14:26:18 +0100 X-List-Received-Date: Tue, 03 Sep 2019 14:06:04 -0000 > On 1 Apr 2019, at 06:53, Kristof Provost wrote: > > pf in FreeBSD lags years behind OpenBSD's pf. > Remove it. > > Users are advised to migrate to ipf. Wouldn't AFD be a better choice? M -- From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:09 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BD370DC332 for ; Tue, 3 Sep 2019 14:06:05 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z11gWzz4PB5; Tue, 3 Sep 2019 14:06:05 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 7F2C11A0DB; Tue, 3 Sep 2019 14:05:57 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 709AB78AC; Tue, 2 Apr 2019 19:20:59 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2716573542; Tue, 2 Apr 2019 19:20:59 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1530378AB; Tue, 2 Apr 2019 19:20:59 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 35EDE78A9 for ; Tue, 2 Apr 2019 19:20:56 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E0C2573537; Tue, 2 Apr 2019 19:20:55 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BBC562734; Tue, 2 Apr 2019 19:20:55 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x32JKt73058256; Tue, 2 Apr 2019 19:20:55 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x32JKts3058255; Tue, 2 Apr 2019 19:20:55 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904021920.x32JKts3058255@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345814 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 345814 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2716573542 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.93 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.94)[-0.936,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:09 -0000 X-Original-Date: Tue, 2 Apr 2019 19:20:55 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:09 -0000 Author: asomers Date: Tue Apr 2 19:20:55 2019 New Revision: 345814 URL: https://svnweb.freebsd.org/changeset/base/345814 Log: fusefs: fix a just-introduced panic in readdir r345808 changed the interface of fuse_filehandle_open, but failed to update one caller. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Tue Apr 2 19:08:06 2019 (r345813) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Tue Apr 2 19:20:55 2019 (r345814) @@ -1320,7 +1320,11 @@ fuse_vnop_readdir(struct vop_readdir_args *ap) if ((err = fuse_filehandle_get_dir(vp, &fufh, cred, pid)) != 0) { SDT_PROBE2(fuse, , vnops, trace, 1, "calling readdir() before open()"); - err = fuse_filehandle_open(vp, O_RDONLY, &fufh, NULL, cred); + /* + * This was seen to happen in getdirentries as used by + * shells/fish, but I can't reproduce it. + */ + err = fuse_filehandle_open(vp, FREAD, &fufh, NULL, cred); freefufh = 1; } if (err) { From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:01 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 395F5DC16A for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv0t1Vz4P44; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 2310319F05; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 7DA498B5C; Sat, 30 Mar 2019 17:25:07 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2B4B36BAD9; Sat, 30 Mar 2019 17:25:06 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 105148B42; Sat, 30 Mar 2019 17:25:02 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 21FAF8ABF for ; Sat, 30 Mar 2019 17:24:58 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6FD3D6BA22; Sat, 30 Mar 2019 17:24:58 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3C1671A0BE; Sat, 30 Mar 2019 17:24:58 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2UHOwDf009167; Sat, 30 Mar 2019 17:24:58 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2UHOuoQ009160; Sat, 30 Mar 2019 17:24:56 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903301724.x2UHOuoQ009160@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345737 - in projects/capsicum-test: sbin/devd sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/dev/usb/wlan sys/dev/xen/blkfront sys/geom sys/kern X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/capsicum-test: sbin/devd sys/cddl/contrib/opensolaris/uts/common/fs/zfs sys/dev/usb/wlan sys/dev/xen/blkfront sys/geom sys/kern X-SVN-Commit-Revision: 345737 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2B4B36BAD9 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.969,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:02 -0000 X-Original-Date: Sat, 30 Mar 2019 17:24:56 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:02 -0000 Author: ngie Date: Sat Mar 30 17:24:56 2019 New Revision: 345737 URL: https://svnweb.freebsd.org/changeset/base/345737 Log: MFhead@r345735 Modified: projects/capsicum-test/sbin/devd/devd.conf.5 projects/capsicum-test/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c projects/capsicum-test/sys/dev/usb/wlan/if_urtwvar.h projects/capsicum-test/sys/dev/xen/blkfront/blkfront.c projects/capsicum-test/sys/geom/geom_dev.c projects/capsicum-test/sys/kern/imgact_elf.c Directory Properties: projects/capsicum-test/ (props changed) projects/capsicum-test/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/capsicum-test/sbin/devd/devd.conf.5 ============================================================================== --- projects/capsicum-test/sbin/devd/devd.conf.5 Sat Mar 30 17:24:11 2019 (r345736) +++ projects/capsicum-test/sbin/devd/devd.conf.5 Sat Mar 30 17:24:56 2019 (r345737) @@ -41,7 +41,7 @@ .\" ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS .\" SOFTWARE. .\" -.Dd July 20, 2018 +.Dd March 29, 2019 .Dt DEVD.CONF 5 .Os .Sh NAME @@ -432,15 +432,19 @@ only includes disk-like devices. .It Li CREATE A .Xr geom 4 -device node is created. +provider is created. .It Li DESTROY A .Xr geom 4 -device node is destroyed. +provider is destroyed. .It Li GEOM::physpath The physical path of a device has changed. .It Li MEDIACHANGE Physical media has changed. +.It Li SIZECHANGE +A +.Xr geom 4 +provider size has changed. .El .El .Pp Modified: projects/capsicum-test/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c ============================================================================== --- projects/capsicum-test/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Sat Mar 30 17:24:11 2019 (r345736) +++ projects/capsicum-test/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Sat Mar 30 17:24:56 2019 (r345737) @@ -158,6 +158,29 @@ vdev_geom_attrchanged(struct g_consumer *cp, const cha } static void +vdev_geom_resize(struct g_consumer *cp) +{ + struct consumer_priv_t *priv; + struct consumer_vdev_elem *elem; + spa_t *spa; + vdev_t *vd; + + priv = (struct consumer_priv_t *)&cp->private; + if (SLIST_EMPTY(priv)) + return; + + SLIST_FOREACH(elem, priv, elems) { + vd = elem->vd; + if (vd->vdev_state != VDEV_STATE_HEALTHY) + continue; + spa = vd->vdev_spa; + if (!spa->spa_autoexpand) + continue; + vdev_online(spa, vd->vdev_guid, ZFS_ONLINE_EXPAND, NULL); + } +} + +static void vdev_geom_orphan(struct g_consumer *cp) { struct consumer_priv_t *priv; @@ -229,6 +252,7 @@ vdev_geom_attach(struct g_provider *pp, vdev_t *vd, bo gp = g_new_geomf(&zfs_vdev_class, "zfs::vdev"); gp->orphan = vdev_geom_orphan; gp->attrchanged = vdev_geom_attrchanged; + gp->resize = vdev_geom_resize; cp = g_new_consumer(gp); error = g_attach(cp, pp); if (error != 0) { Modified: projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c ============================================================================== --- projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c Sat Mar 30 17:24:11 2019 (r345736) +++ projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c Sat Mar 30 17:24:56 2019 (r345737) @@ -3932,6 +3932,7 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *da struct urtw_softc *sc = data->sc; struct ieee80211com *ic = &sc->sc_ic; uint8_t noise = 0, rate; + uint64_t mactime; usbd_xfer_status(xfer, &actlen, NULL, NULL, NULL); @@ -3951,6 +3952,9 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *da /* XXX correct? */ rssi = rx->rssi & URTW_RX_RSSI_MASK; noise = rx->noise; + + if (ieee80211_radiotap_active(ic)) + mactime = rx->mactime; } else { struct urtw_8187l_rxhdr *rx; @@ -3967,6 +3971,9 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *da /* XXX correct? */ rssi = rx->rssi & URTW_RX_8187L_RSSI_MASK; noise = rx->noise; + + if (ieee80211_radiotap_active(ic)) + mactime = rx->mactime; } if (flen < IEEE80211_ACK_LEN) @@ -3986,6 +3993,7 @@ urtw_rxeof(struct usb_xfer *xfer, struct urtw_data *da if (ieee80211_radiotap_active(ic)) { struct urtw_rx_radiotap_header *tap = &sc->sc_rxtap; + tap->wr_tsf = mactime; tap->wr_flags = 0; tap->wr_dbm_antsignal = (int8_t)rssi; } Modified: projects/capsicum-test/sys/dev/usb/wlan/if_urtwvar.h ============================================================================== --- projects/capsicum-test/sys/dev/usb/wlan/if_urtwvar.h Sat Mar 30 17:24:11 2019 (r345736) +++ projects/capsicum-test/sys/dev/usb/wlan/if_urtwvar.h Sat Mar 30 17:24:56 2019 (r345737) @@ -55,6 +55,7 @@ typedef STAILQ_HEAD(, urtw_data) urtw_datahead; struct urtw_rx_radiotap_header { struct ieee80211_radiotap_header wr_ihdr; + uint64_t wr_tsf; uint8_t wr_flags; uint8_t wr_pad; uint16_t wr_chan_freq; @@ -63,7 +64,8 @@ struct urtw_rx_radiotap_header { } __packed __aligned(8); #define URTW_RX_RADIOTAP_PRESENT \ - ((1 << IEEE80211_RADIOTAP_FLAGS) | \ + ((1 << IEEE80211_RADIOTAP_TSFT) | \ + (1 << IEEE80211_RADIOTAP_FLAGS) | \ (1 << IEEE80211_RADIOTAP_CHANNEL) | \ (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL)) Modified: projects/capsicum-test/sys/dev/xen/blkfront/blkfront.c ============================================================================== --- projects/capsicum-test/sys/dev/xen/blkfront/blkfront.c Sat Mar 30 17:24:11 2019 (r345736) +++ projects/capsicum-test/sys/dev/xen/blkfront/blkfront.c Sat Mar 30 17:24:56 2019 (r345737) @@ -1227,11 +1227,40 @@ xbd_connect(struct xbd_softc *sc) int err, feature_barrier, feature_flush; int i, j; - if (sc->xbd_state == XBD_STATE_CONNECTED || - sc->xbd_state == XBD_STATE_SUSPENDED) + DPRINTK("blkfront.c:connect:%s.\n", xenbus_get_otherend_path(dev)); + + if (sc->xbd_state == XBD_STATE_SUSPENDED) { return; + } - DPRINTK("blkfront.c:connect:%s.\n", xenbus_get_otherend_path(dev)); + if (sc->xbd_state == XBD_STATE_CONNECTED) { + struct disk *disk; + + disk = sc->xbd_disk; + if (disk == NULL) { + return; + } + err = xs_gather(XST_NIL, xenbus_get_otherend_path(dev), + "sectors", "%lu", §ors, NULL); + if (err != 0) { + xenbus_dev_error(dev, err, + "reading sectors at %s", + xenbus_get_otherend_path(dev)); + return; + } + disk->d_mediasize = disk->d_sectorsize * sectors; + err = disk_resize(disk, M_NOWAIT); + if (err) { + xenbus_dev_error(dev, err, + "unable to resize disk %s%u", + disk->d_name, disk->d_unit); + return; + } + device_printf(sc->xbd_dev, + "changed capacity to %jd\n", + (intmax_t)disk->d_mediasize); + return; + } err = xs_gather(XST_NIL, xenbus_get_otherend_path(dev), "sectors", "%lu", §ors, Modified: projects/capsicum-test/sys/geom/geom_dev.c ============================================================================== --- projects/capsicum-test/sys/geom/geom_dev.c Sat Mar 30 17:24:11 2019 (r345736) +++ projects/capsicum-test/sys/geom/geom_dev.c Sat Mar 30 17:24:56 2019 (r345737) @@ -92,6 +92,7 @@ static g_fini_t g_dev_fini; static g_taste_t g_dev_taste; static g_orphan_t g_dev_orphan; static g_attrchanged_t g_dev_attrchanged; +static g_resize_t g_dev_resize; static struct g_class g_dev_class = { .name = "DEV", @@ -100,7 +101,8 @@ static struct g_class g_dev_class = { .fini = g_dev_fini, .taste = g_dev_taste, .orphan = g_dev_orphan, - .attrchanged = g_dev_attrchanged + .attrchanged = g_dev_attrchanged, + .resize = g_dev_resize }; /* @@ -300,6 +302,15 @@ g_dev_attrchanged(struct g_consumer *cp, const char *a g_dev_set_physpath(cp); return; } +} + +static void +g_dev_resize(struct g_consumer *cp) +{ + char buf[SPECNAMELEN + 6]; + + snprintf(buf, sizeof(buf), "cdev=%s", cp->provider->name); + devctl_notify_f("GEOM", "DEV", "SIZECHANGE", buf, M_WAITOK); } struct g_provider * Modified: projects/capsicum-test/sys/kern/imgact_elf.c ============================================================================== --- projects/capsicum-test/sys/kern/imgact_elf.c Sat Mar 30 17:24:11 2019 (r345736) +++ projects/capsicum-test/sys/kern/imgact_elf.c Sat Mar 30 17:24:56 2019 (r345737) @@ -279,7 +279,7 @@ __elfN(get_brandinfo)(struct image_params *imgp, const boolean_t ret; int i, interp_name_len; - interp_name_len = interp != NULL ? strlen(interp) : 0; + interp_name_len = interp != NULL ? strlen(interp) + 1 : 0; /* * We support four types of branding -- (1) the ELF EI_OSABI field From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:02 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 51397DC17F for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv172gz4P4G; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 47B3E19F12; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E2EE11473B; Sun, 31 Mar 2019 04:24:56 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2AFD58EF88; Sun, 31 Mar 2019 04:24:56 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0EA7D14701; Sun, 31 Mar 2019 04:24:56 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id CC3CF146FF for ; Sun, 31 Mar 2019 04:24:52 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9C6898EF86; Sun, 31 Mar 2019 04:24:52 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 737A321862; Sun, 31 Mar 2019 04:24:52 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2V4Oqkc075761; Sun, 31 Mar 2019 04:24:52 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2V4OqMS075760; Sun, 31 Mar 2019 04:24:52 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903310424.x2V4OqMS075760@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345743 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345743 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2AFD58EF88 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.92 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.92)[-0.921,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:03 -0000 X-Original-Date: Sun, 31 Mar 2019 04:24:52 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:03 -0000 Author: ngie Date: Sun Mar 31 04:24:51 2019 New Revision: 345743 URL: https://svnweb.freebsd.org/changeset/base/345743 Log: Add FreeBSD-specific capsicum feature sanity checks to Environment::SetUp * Not all consumers build with CAPABILITIES enabled kernels, thus, we must check for the `security_capabilities` feature via feature_present(3) before running the tests. Otherwise, the test results are invalid. * Check the `kern.trap_enotcap` sysctl to make sure it's disabled. If it's not disabled, skip the tests. Reason being is that it can trigger failures, as noted in https://github.com/google/capsicum-test/issues/23 by markj@. This fixes the first TODO item in D19758. Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Sun Mar 31 03:19:10 2019 (r345742) +++ projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Sun Mar 31 04:24:51 2019 (r345743) @@ -2,6 +2,8 @@ #ifdef __linux__ #include #include +#elif defined(__FreeBSD__) +#include #endif #include #include @@ -21,6 +23,7 @@ class SetupEnvironment : public ::testing::Environment public: SetupEnvironment() : teardown_tmpdir_(false) {} void SetUp() override { + CheckCapsicumSupport(); if (tmpdir.empty()) { std::cerr << "Generating temporary directory root: "; CreateTemporaryRoot(); @@ -28,6 +31,33 @@ class SetupEnvironment : public ::testing::Environment std::cerr << "User provided temporary directory root: "; } std::cerr << tmpdir << std::endl; + } + void CheckCapsicumSupport() { +#ifdef __FreeBSD__ + size_t trap_enotcap_enabled_len; + int rc; + bool trap_enotcap_enabled; + + trap_enotcap_enabled_len = sizeof(trap_enotcap_enabled); + + if (feature_present("security_capabilities") == 0) { + GTEST_SKIP() << "Tests require a CAPABILITIES enabled kernel"; + } else { + std::cerr << "Running on a CAPABILITIES enabled kernel" << std::endl; + } + const char *oid = "kern.trap_enotcap"; + rc = sysctlbyname(oid, &trap_enotcap_enabled, &trap_enotcap_enabled_len, + nullptr, 0); + if (rc != 0) { + GTEST_FAIL() << "sysctlbyname failed: " << strerror(errno); + } + if (trap_enotcap_enabled) { + GTEST_SKIP() << "Sysctl " << oid << " enabled. " + << "Skipping tests to avoid non-determinism with results"; + } else { + std::cerr << "Sysctl " << oid << " not enabled." << std::endl; + } +#endif } void CreateTemporaryRoot() { char *tmpdir_name = tempnam(nullptr, "cptst"); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:03 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D5F0FDC1B8 for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw0WjTz4P56; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id CFFD719F5D; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 74C7822C6; Sun, 31 Mar 2019 23:18:16 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 35A51954AB; Sun, 31 Mar 2019 23:18:16 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 204E222C4; Sun, 31 Mar 2019 23:18:16 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id EA76622C2 for ; Sun, 31 Mar 2019 23:18:12 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9BD8E954A7; Sun, 31 Mar 2019 23:18:12 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7163B5D66; Sun, 31 Mar 2019 23:18:12 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2VNIC1w070402; Sun, 31 Mar 2019 23:18:12 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2VNICvp070401; Sun, 31 Mar 2019 23:18:12 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903312318.x2VNICvp070401@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345759 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345759 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 35A51954AB X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.96)[-0.959,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:03 -0000 X-Original-Date: Sun, 31 Mar 2019 23:18:12 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:03 -0000 Author: ngie Date: Sun Mar 31 23:18:12 2019 New Revision: 345759 URL: https://svnweb.freebsd.org/changeset/base/345759 Log: Apply suggestions * Sort preprocessor define blocks. * Reword messages when skipping due to missing prereqs. Requested by: emaste (https://github.com/google/capsicum-test/pull/42) * Remove diagnostic `std::cerr`'s, since the root-cause for the checks not working before was found and addressed in D19765. Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Sun Mar 31 21:34:58 2019 (r345758) +++ projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Sun Mar 31 23:18:12 2019 (r345759) @@ -1,9 +1,9 @@ #include -#ifdef __linux__ +#if defined(__FreeBSD__) +#include +#elif defined(__linux__) #include #include -#elif defined(__FreeBSD__) -#include #endif #include #include @@ -47,10 +47,8 @@ class SetupEnvironment : public ::testing::Environment trap_enotcap_enabled_len = sizeof(trap_enotcap_enabled); if (feature_present("security_capabilities") == 0) { - GTEST_SKIP() << "Tests require a CAPABILITIES enabled kernel"; - } else { - std::cerr << "Running on a CAPABILITIES enabled kernel - OK!" - << std::endl; + GTEST_SKIP() << "Skipping tests because capsicum support is not " + << "enabled in the kernel."; } const char *oid = "kern.trap_enotcap"; rc = sysctlbyname(oid, &trap_enotcap_enabled, &trap_enotcap_enabled_len, @@ -61,8 +59,6 @@ class SetupEnvironment : public ::testing::Environment if (trap_enotcap_enabled) { GTEST_SKIP() << "Sysctl " << oid << " enabled. " << "Skipping tests to avoid non-determinism with results"; - } else { - std::cerr << "Sysctl " << oid << " not enabled - OK!" << std::endl; } #endif /* FreeBSD */ From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:09 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D53EEDC37D for ; Tue, 3 Sep 2019 14:06:06 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z23cXtz4PC9; Tue, 3 Sep 2019 14:06:06 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id F10291A131; Tue, 3 Sep 2019 14:05:57 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 23366F798; Wed, 3 Apr 2019 03:23:55 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3D3FF8D96A; Wed, 3 Apr 2019 03:23:54 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 11F1BF733; Wed, 3 Apr 2019 03:23:54 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 3FFACF731 for ; Wed, 3 Apr 2019 03:23:51 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id EFBD38D963; Wed, 3 Apr 2019 03:23:50 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CB6F97F16; Wed, 3 Apr 2019 03:23:50 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x333NoZY018885; Wed, 3 Apr 2019 03:23:50 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x333Nkcp018859; Wed, 3 Apr 2019 03:23:46 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904030323.x333Nkcp018859@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345825 - in projects/runtime-coverage-v2: . etc etc/mtree libexec/rtld-elf share/man/man7 share/mk stand tests tests/tools tools/build/options X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage-v2: . etc etc/mtree libexec/rtld-elf share/man/man7 share/mk stand tests tests/tools tools/build/options X-SVN-Commit-Revision: 345825 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3D3FF8D96A X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.97)[-0.974,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:09 -0000 X-Original-Date: Wed, 3 Apr 2019 03:23:46 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:09 -0000 Author: ngie Date: Wed Apr 3 03:23:45 2019 New Revision: 345825 URL: https://svnweb.freebsd.org/changeset/base/345825 Log: Merge all changes over from ^/projects/runtime-coverage This is being done to provide a starting point for this branch, given lessons learned doing the work on that branch. Added: projects/runtime-coverage-v2/etc/mtree/BSD.coverage.dist (contents, props changed) projects/runtime-coverage-v2/share/mk/bsd.cov.mk (contents, props changed) projects/runtime-coverage-v2/tests/tools/ projects/runtime-coverage-v2/tests/tools/Makefile (contents, props changed) projects/runtime-coverage-v2/tests/tools/gather_coverage.sh (contents, props changed) projects/runtime-coverage-v2/tools/build/options/WITH_COVERAGE (contents, props changed) Modified: projects/runtime-coverage-v2/Makefile projects/runtime-coverage-v2/Makefile.inc1 projects/runtime-coverage-v2/Makefile.libcompat projects/runtime-coverage-v2/etc/Makefile projects/runtime-coverage-v2/etc/mtree/BSD.tests.dist projects/runtime-coverage-v2/etc/mtree/Makefile projects/runtime-coverage-v2/libexec/rtld-elf/Makefile projects/runtime-coverage-v2/share/man/man7/hier.7 projects/runtime-coverage-v2/share/mk/Makefile projects/runtime-coverage-v2/share/mk/bsd.lib.mk projects/runtime-coverage-v2/share/mk/bsd.opts.mk projects/runtime-coverage-v2/share/mk/bsd.own.mk projects/runtime-coverage-v2/share/mk/bsd.prog.mk projects/runtime-coverage-v2/share/mk/meta.autodep.mk projects/runtime-coverage-v2/share/mk/src.opts.mk projects/runtime-coverage-v2/share/mk/suite.test.mk projects/runtime-coverage-v2/stand/defs.mk projects/runtime-coverage-v2/tests/Makefile Modified: projects/runtime-coverage-v2/Makefile ============================================================================== --- projects/runtime-coverage-v2/Makefile Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/Makefile Wed Apr 3 03:23:45 2019 (r345825) @@ -497,7 +497,7 @@ TARGET_ARCHES_riscv?= riscv64 TARGET_ARCHES_${target}?= ${target} .endfor -MAKE_PARAMS_riscv?= CROSS_TOOLCHAIN=riscv64-gcc +MAKE_PARAMS_riscv?= CROSS_TOOLCHAIN=riscv64-gcc MK_COVERAGE=no # XXX Remove architectures only supported by external toolchain from universe # if required toolchain packages are missing. Modified: projects/runtime-coverage-v2/Makefile.inc1 ============================================================================== --- projects/runtime-coverage-v2/Makefile.inc1 Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/Makefile.inc1 Wed Apr 3 03:23:45 2019 (r345825) @@ -248,7 +248,7 @@ WANT_COMPILER_VERSION!= \ awk -F. '{print $$1 * 10000 + $$2 * 100 + $$3}' \ ${SRCDIR}/${WANT_COMPILER_VERSION_FILE} || echo unknown .endif -.export WANT_COMPILER_FREEBSD_VERSION WANT_COMPILER_VERSION +.export WANT_COMPILER_FREEBSD_VERSION WANT_COMPILER_TYPE WANT_COMPILER_VERSION .endif # !defined(WANT_COMPILER_FREEBSD_VERSION) # It needs to be the same revision as we would build for the bootstrap. @@ -688,7 +688,7 @@ BSARGS= DESTDIR= \ BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \ BWPHASE=${.TARGET:C,^_,,} \ SSP_CFLAGS= \ - MK_HTML=no NO_LINT=yes MK_MAN=no \ + MK_COVERAGE=no MK_HTML=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ @@ -734,7 +734,7 @@ KTMAKE= \ MAKEOBJDIRPREFIX= \ BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \ SSP_CFLAGS= \ - MK_HTML=no -DNO_LINT MK_MAN=no \ + MK_COVERAGE=no MK_HTML=no -DNO_LINT MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_RETPOLINE=no MK_WARNS=no MK_CTF=no @@ -1361,6 +1361,10 @@ distributeworld installworld stageworld: _installcheck -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null ${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.include.dist \ -p ${DESTDIR}/${DISTDIR}/${dist}/usr/include >/dev/null +.if ${MK_COVERAGE} != "no" + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.cov.dist \ + -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null +.endif .if ${MK_DEBUG_FILES} != "no" ${DESTDIR_MTREE} -f ${.CURDIR}/etc/mtree/BSD.debug.dist \ -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null @@ -2712,6 +2716,14 @@ _prereq_libs= lib/libcompiler_rt _prereq_libs+= gnu/lib/libssp/libssp_nonshared .endif +# +# The coverage libraries must be built for the target prior to ${_startup_libs} +# for world to have runtime coverage instrumentation. +# +.if ${MK_COVERAGE} != "no" +_prereq_libs+= lib/libclang_rt/profile +.endif + # These dependencies are not automatically generated: # # gnu/lib/csu, gnu/lib/libgcc, lib/csu and lib/libc must be built before @@ -2960,7 +2972,7 @@ ${_lib}__PL: .PHONY .MAKE if [ -z "${NO_OBJWALK}" ]; then ${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ obj; fi; \ ${MAKE} MK_TESTS=no MK_PROFILE=no -DNO_PIC \ DIRPRFX=${_lib}/ all; \ - ${MAKE} MK_TESTS=no MK_PROFILE=no -DNO_PIC \ + ${MAKE} MK_COVERAGE=no MK_TESTS=no MK_PROFILE=no -DNO_PIC \ DIRPRFX=${_lib}/ install .endif .endfor @@ -2972,7 +2984,7 @@ ${_lib}__L: .PHONY .MAKE cd ${.CURDIR}/${_lib}; \ if [ -z "${NO_OBJWALK}" ]; then ${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ obj; fi; \ ${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ all; \ - ${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ install + ${MAKE} MK_COVERAGE=no MK_TESTS=no DIRPRFX=${_lib}/ install .endif .endfor @@ -3239,7 +3251,7 @@ XDEV_CPUTYPE?=${CPUTYPE} XDEV_CPUTYPE?=${TARGET_CPUTYPE} .endif -NOFUN=-DNO_FSCHG MK_HTML=no -DNO_LINT \ +NOFUN= MK_COVERAGE=no -DNO_FSCHG MK_HTML=no -DNO_LINT \ MK_MAN=no MK_NLS=no MK_PROFILE=no \ MK_KERBEROS=no MK_RESCUE=no MK_TESTS=no MK_WARNS=no \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ Modified: projects/runtime-coverage-v2/Makefile.libcompat ============================================================================== --- projects/runtime-coverage-v2/Makefile.libcompat Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/Makefile.libcompat Wed Apr 3 03:23:45 2019 (r345825) @@ -122,6 +122,7 @@ LIBCOMPATWMAKEFLAGS+= CC="${XCC} ${LIBCOMPATCFLAGS}" \ CPP="${XCPP} ${LIBCOMPATCFLAGS}" \ DESTDIR=${LIBCOMPATTMP} \ -DNO_CPU_CFLAGS \ + MK_COVERAGE=no \ MK_CTF=no \ -DNO_LINT \ MK_TESTS=no Modified: projects/runtime-coverage-v2/etc/Makefile ============================================================================== --- projects/runtime-coverage-v2/etc/Makefile Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/etc/Makefile Wed Apr 3 03:23:45 2019 (r345825) @@ -126,18 +126,22 @@ MTREES= mtree/BSD.root.dist / \ mtree/BSD.var.dist /var \ mtree/BSD.usr.dist /usr \ mtree/BSD.include.dist /usr/include \ + mtree/BSD.coverage.dist /usr/lib \ mtree/BSD.debug.dist /usr/lib .if ${MK_LIB32} != "no" -MTREES+= mtree/BSD.lib32.dist /usr -MTREES+= mtree/BSD.lib32.dist /usr/lib/debug/usr +.for dir in /usr /usr/lib/cov/usr /usr/lib/debug/usr +MTREES+= mtree/BSD.lib32.dist ${dir} +.endfor .endif .if ${MK_LIBSOFT} != "no" -MTREES+= mtree/BSD.libsoft.dist /usr -MTREES+= mtree/BSD.libsoft.dist /usr/lib/debug/usr +.for dir in /usr /usr/lib/cov/usr /usr/lib/debug/usr +MTREES+= mtree/BSD.libsoft.dist ${dir} +.endfor .endif .if ${MK_TESTS} != "no" -MTREES+= mtree/BSD.tests.dist ${TESTSBASE} -MTREES+= mtree/BSD.tests.dist /usr/lib/debug/${TESTSBASE} +.for dir in ${TESTSBASE} /usr/lib/cov/${TESTSBASE} /usr/lib/debug/${TESTSBASE} +MTREES+= mtree/BSD.tests.dist ${dir} +.endfor .endif .if ${MK_SENDMAIL} != "no" MTREES+= mtree/BSD.sendmail.dist / Added: projects/runtime-coverage-v2/etc/mtree/BSD.coverage.dist ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage-v2/etc/mtree/BSD.coverage.dist Wed Apr 3 03:23:45 2019 (r345825) @@ -0,0 +1,70 @@ +# $FreeBSD$ +# +# Please see the file src/etc/mtree/README before making changes to this file. +# + +/set type=dir uname=root gname=wheel mode=0755 +. + cov + bin + .. + boot + kernel + .. + modules + .. + .. + lib + casper + .. + geom + .. + .. + libexec + .. + sbin + .. + usr + bin + .. + lib + clang + 8.0.0 + include + sanitizer + .. + .. + lib + freebsd + .. + .. + .. + .. + engines + .. + i18n + .. + libxo + encoder + .. + .. + .. + libexec + bsdinstall + .. + lpr + ru + .. + .. + sendmail + .. + sm.bin + .. + .. + sbin + .. + tests + .. + .. + .. +.. Modified: projects/runtime-coverage-v2/etc/mtree/BSD.tests.dist ============================================================================== --- projects/runtime-coverage-v2/etc/mtree/BSD.tests.dist Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/etc/mtree/BSD.tests.dist Wed Apr 3 03:23:45 2019 (r345825) @@ -825,6 +825,8 @@ vm .. .. + tools + .. usr.bin apply .. Modified: projects/runtime-coverage-v2/etc/mtree/Makefile ============================================================================== --- projects/runtime-coverage-v2/etc/mtree/Makefile Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/etc/mtree/Makefile Wed Apr 3 03:23:45 2019 (r345825) @@ -5,6 +5,7 @@ # NOTE: BSD.debug.dist is unconditionally installed for developer ease-of-use. FILES= \ BSD.debug.dist \ + ${_BSD.coverage.dist} \ BSD.include.dist \ BSD.root.dist \ ${_BSD.lib32.dist} \ @@ -14,6 +15,9 @@ FILES= \ BSD.usr.dist \ BSD.var.dist +.if ${MK_COVERAGE} != "no" +_BSD.coverage.dist= BSD.coverage.dist +.endif .if ${MK_LIB32} != "no" _BSD.lib32.dist= BSD.lib32.dist .endif Modified: projects/runtime-coverage-v2/libexec/rtld-elf/Makefile ============================================================================== --- projects/runtime-coverage-v2/libexec/rtld-elf/Makefile Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/libexec/rtld-elf/Makefile Wed Apr 3 03:23:45 2019 (r345825) @@ -6,6 +6,7 @@ .include PACKAGE= clibs +MK_COVERAGE= no MK_PIE= no # Always position independent using local rules MK_SSP= no Modified: projects/runtime-coverage-v2/share/man/man7/hier.7 ============================================================================== --- projects/runtime-coverage-v2/share/man/man7/hier.7 Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/share/man/man7/hier.7 Wed Apr 3 03:23:45 2019 (r345825) @@ -359,6 +359,8 @@ shared libraries for compatibility .It Pa aout/ a.out backward compatibility libraries .El +.It Pa cov/ +standalone coverage data for base system libraries and binaries .It Pa debug/ standalone debug data for the kernel and base system libraries and binaries .It Pa dtrace/ Modified: projects/runtime-coverage-v2/share/mk/Makefile ============================================================================== --- projects/runtime-coverage-v2/share/mk/Makefile Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/share/mk/Makefile Wed Apr 3 03:23:45 2019 (r345825) @@ -71,6 +71,10 @@ FILES= \ FILESDIR= ${BINDIR}/mk +.if ${MK_COVERAGE} != "no" +FILES+= bsd.cov.mk +.endif + .if ${MK_TESTS} != "no" FILES+= atf.test.mk FILES+= googletest.test.inc.mk Added: projects/runtime-coverage-v2/share/mk/bsd.cov.mk ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage-v2/share/mk/bsd.cov.mk Wed Apr 3 03:23:45 2019 (r345825) @@ -0,0 +1,38 @@ +# $FreeBSD$ +# +# Snippet for dealing with runtime coverage logic. +# +# .gcno files are generated from files that are compiled from source, e.g., +# foo.gcno is foo.c or foo.cpp's file. In order for the libraries and programs +# to be properly instrumented, the .gcno files must be installed to a prefix +# common to the object files. +# +# See gcov(1) for more details. + +.include + +FILESGROUPS?= FILES + +.if !empty(GCNOS) + +GCNOSOWN?= ${BINOWN} +GCNOSGRP?= ${BINGRP} +GCNOSMODE?= 0644 +GCNOSDIRMODE?= 0755 + +GCNOS:= ${GCNOS:O:u} +FILESGROUPS+= GCNOS +CLEANFILES+= ${GCNOS} + +.for _gcno in ${GCNOS} +_gcno_dir:= ${COVERAGEDIR}${_gcno:H:tA} +GCNOSDIR_${_gcno:T}:= ${_gcno_dir} +# Create _gcno_dir if it doesn't already exist. +.if !target(${DESTDIR}${_gcno_dir}) +${DESTDIR}${_gcno_dir}: + ${INSTALL} -d -o ${GCNOSOWN} -g ${GCNOSGRP} -m ${GCNOSDIRMODE} \ + ${.TARGET}/ +beforeinstall: ${DESTDIR}${_gcno_dir} +.endif +.endfor +.endif Modified: projects/runtime-coverage-v2/share/mk/bsd.lib.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/bsd.lib.mk Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/share/mk/bsd.lib.mk Wed Apr 3 03:23:45 2019 (r345825) @@ -3,6 +3,7 @@ # .include +.include .if defined(LIB_CXX) || defined(SHLIB_CXX) _LD= ${CXX} @@ -54,6 +55,7 @@ CFLAGS+= ${DEBUG_FLAGS} .if ${MK_CTF} != "no" && ${DEBUG_FLAGS:M-g} != "" CTFFLAGS+= -g .endif +_WANTS_DEBUG= .else STRIP?= -s .endif @@ -111,6 +113,10 @@ PO_FLAG=-pg ${CTFCONVERT_CMD} .c.pico: + ${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS} ${_COV_FLAG} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} + ${CTFCONVERT_CMD} + +.c.ppico: ${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET} ${CTFCONVERT_CMD} @@ -126,6 +132,9 @@ PO_FLAG=-pg ${CXX} ${PO_FLAG} ${STATIC_CXXFLAGS} ${PO_CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} .cc.pico .C.pico .cpp.pico .cxx.pico: + ${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS} ${_COV_FLAG} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} + +.cc.ppico .C.ppico .cpp.ppico .cxx.ppico: ${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET} .cc.nossppico .C.nossppico .cpp.nossppico .cxx.nossppico: @@ -196,6 +205,12 @@ _SHLIBDIR:=${SHLIBDIR} .if defined(SHLIB_NAME) .if ${MK_DEBUG_FILES} != "no" SHLIB_NAME_FULL=${SHLIB_NAME}.full +.if ${MK_COVERAGE} != "no" +COVERAGEFILEDIR=${COVERAGEDIR}${_SHLIBDIR} +.if !exists(${DESTDIR}${COVERAGEFILEDIR}) +COVERAGEMKDIR= +.endif +.endif # Use ${DEBUGDIR} for base system debug files, else .debug subdirectory .if ${_SHLIBDIR} == "/boot" ||\ ${SHLIBDIR:C%/lib(/.*)?$%/lib%} == "/lib" ||\ @@ -275,6 +290,9 @@ CLEANFILES+= ${SOBJS} .if defined(SHLIB_NAME) _LIBS+= ${SHLIB_NAME} +.if defined(_COV_FLAG) +SOLINKOPTS+= ${_COV_FLAG} +.endif SOLINKOPTS+= -shared -Wl,-x .if defined(LD_FATAL_WARNINGS) && ${LD_FATAL_WARNINGS} == "no" SOLINKOPTS+= -Wl,--no-fatal-warnings @@ -332,10 +350,18 @@ ${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL} .if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" _LIBS+= lib${LIB_PRIVATE}${LIB}_pic.a -lib${LIB_PRIVATE}${LIB}_pic.a: ${SOBJS} +.if ${MK_COVERAGE} != "no" +PIC_OBJS:= ${SOBJS:.pico=.ppico} +DEPENDOBJS+= ${PIC_OBJS} +CLEANFILES+= ${PIC_OBJS} +.else +PIC_OBJS:= ${SOBJS} +.endif + +lib${LIB_PRIVATE}${LIB}_pic.a: ${PIC_OBJS} @${ECHO} building special pic ${LIB} library @rm -f ${.TARGET} - ${AR} ${ARFLAGS} ${.TARGET} ${SOBJS} ${ARADD} + ${AR} ${ARFLAGS} ${.TARGET} ${PIC_OBJS} ${ARADD} ${RANLIB} ${RANLIBFLAGS} ${.TARGET} .endif @@ -429,6 +455,14 @@ _libinstall: ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \ ${SHLIB_NAME} ${DESTDIR}${_SHLIBDIR}/ .if ${MK_DEBUG_FILES} != "no" +.if ${MK_COVERAGE} != "no" +.if defined(COVERAGEMKDIR) + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -d ${DESTDIR}${COVERAGEFILEDIR}/ +.endif + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${_INSTALLFLAGS} \ + ${SHLIB_NAME}.full ${DESTDIR}${COVERAGEFILEDIR}/${SHLIB_NAME} +.endif .if defined(DEBUGMKDIR) ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},debug} -d ${DESTDIR}${DEBUGFILEDIR}/ .endif @@ -509,6 +543,7 @@ OBJS_DEPEND_GUESS.${_S:${OBJS_SRCS_FILTER:ts:}}.po+= $ defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) .for _S in ${SRCS:N*.[hly]} OBJS_DEPEND_GUESS.${_S:${OBJS_SRCS_FILTER:ts:}}.pico+= ${_S} +OBJS_DEPEND_GUESS.${_S:R}.ppico+= ${_S} .endfor .endif .if defined(BUILD_NOSSP_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) Modified: projects/runtime-coverage-v2/share/mk/bsd.opts.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/bsd.opts.mk Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/share/mk/bsd.opts.mk Wed Apr 3 03:23:45 2019 (r345825) @@ -71,10 +71,12 @@ __DEFAULT_YES_OPTIONS = \ __DEFAULT_NO_OPTIONS = \ BIND_NOW \ CCACHE_BUILD \ + COVERAGE \ CTF \ INSTALL_AS_USER \ PIE \ RETPOLINE \ + MAKE_CHECK_TEST_WITH_COVERAGE \ STALE_STAGED __DEFAULT_DEPENDENT_OPTIONS = \ @@ -85,6 +87,10 @@ __DEFAULT_DEPENDENT_OPTIONS = \ .include + +.if ${MK_COVERAGE} == "no" || ${MK_MAKE_CHECK_USE_SANDBOX} == "no" +MK_MAKE_CHECK_TEST_WITH_COVERAGE:= no +.endif # # Supported NO_* options (if defined, MK_* will be forced to "no", Modified: projects/runtime-coverage-v2/share/mk/bsd.own.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/bsd.own.mk Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/share/mk/bsd.own.mk Wed Apr 3 03:23:45 2019 (r345825) @@ -40,6 +40,7 @@ # # LIBMODE Library mode. [${NOBINMODE}] # +# COVERAGEDIR Base path for coverage files. [/usr/lib/cov] # # DEBUGDIR Base path for standalone debug files. [/usr/lib/debug] # @@ -184,6 +185,8 @@ SHLIBDIR?= ${LIBDIR} LIBOWN?= ${BINOWN} LIBGRP?= ${BINGRP} LIBMODE?= ${NOBINMODE} + +COVERAGEDIR?= /usr/lib/cov DEBUGDIR?= /usr/lib/debug DEBUGMODE?= ${NOBINMODE} Modified: projects/runtime-coverage-v2/share/mk/bsd.prog.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/bsd.prog.mk Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/share/mk/bsd.prog.mk Wed Apr 3 03:23:45 2019 (r345825) @@ -55,12 +55,15 @@ LDFLAGS+= -Wl,-zretpolineplt .if defined(CRUNCH_CFLAGS) CFLAGS+=${CRUNCH_CFLAGS} .else -.if ${MK_DEBUG_FILES} != "no" && empty(DEBUG_FLAGS:M-g) && \ - empty(DEBUG_FLAGS:M-gdwarf-*) +.if ${MK_DEBUG_FILES} != "no" +.if empty(DEBUG_FLAGS:M-g) && empty(DEBUG_FLAGS:M-gdwarf-*) CFLAGS+= ${DEBUG_FILES_CFLAGS} +CXXFLAGS+= -g CTFFLAGS+= -g .endif +_WANTS_DEBUG= .endif +.endif .if !defined(DEBUG_FLAGS) STRIP?= -s @@ -75,7 +78,13 @@ TAG_ARGS= -T ${TAGS:[*]:S/ /,/g} .if defined(NO_SHARED) && ${NO_SHARED:tl} != "no" LDFLAGS+= -static +.else +.if defined(_WANTS_DEBUG) && ${MK_COVERAGE} != "no" && ${COMPILER_FEATURES:Mc++11} +_COV_FLAG= --coverage -fprofile-dir=${COVERAGEDIR} +CFLAGS+= ${_COV_FLAG} +CXXFLAGS+= ${_COV_FLAG} .endif +.endif .if ${MK_DEBUG_FILES} != "no" PROG_FULL=${PROG}.full @@ -91,6 +100,12 @@ DEBUGFILEDIR= ${DEBUGDIR}${BINDIR} .else DEBUGFILEDIR?= ${BINDIR}/.debug .endif +.if ${MK_COVERAGE} != "no" +_COVERAGEDIR= ${COVERAGEDIR}${BINDIR} +.if !exists(${DESTDIR}${_COVERAGEDIR}) +COVERAGEMKDIR= +.endif +.endif .if !exists(${DESTDIR}${DEBUGFILEDIR}) DEBUGMKDIR= .endif @@ -255,6 +270,13 @@ _proginstall: ${INSTALL} ${TAG_ARGS} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME} .if ${MK_DEBUG_FILES} != "no" +.if ${MK_COVERAGE} != "no" +.if defined(COVERAGEMKDIR) + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -d ${DESTDIR}${_COVERAGEDIR}/ +.endif + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},coverage} -o ${BINOWN} -g ${BINGRP} -m ${DEBUGMODE} \ + ${PROG_FULL} ${DESTDIR}${_COVERAGEDIR}/${PROGNAME} +.endif .if defined(DEBUGMKDIR) ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},debug} -d ${DESTDIR}${DEBUGFILEDIR}/ .endif @@ -301,6 +323,15 @@ NLSNAME?= ${PROG} .include .include +.if defined(_COV_FLAG) && !empty(SRCS) +_GCNO_SRCS= ${SRCS:M*.c} ${SRCS:M*.cc} ${SRCS:M*.cpp} ${SRCS:M*.cxx} ${SRCS:M*.C} +GCNOS:= ${_GCNO_SRCS:R:S/$/.gcno/g} +.undef _GCNO_SRCS +.for _gcno in ${GCNOS} +${_gcno}: ${_gcno:R}.o +.endfor +.include +.endif .include .include Modified: projects/runtime-coverage-v2/share/mk/meta.autodep.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/meta.autodep.mk Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/share/mk/meta.autodep.mk Wed Apr 3 03:23:45 2019 (r345825) @@ -22,11 +22,12 @@ __${_this}__: .NOTMAIN .-include PICO?= .pico +PPICO?= .ppico NOSSPPICO?= .nossppico .if defined(SRCS) # it would be nice to be able to query .SUFFIXES -OBJ_EXTENSIONS+= .o .po .lo ${PICO} ${NOSSPPICO} +OBJ_EXTENSIONS+= .o .po .lo ${PICO} ${PPICO} ${NOSSPPICO} # explicit dependencies help short-circuit .SUFFIX searches SRCS_DEP_FILTER+= N*.[hly] @@ -182,7 +183,7 @@ DEPEND_SUFFIXES += .c .h .cpp .hpp .cxx .hxx .cc .hh @case "${.MAKE.META.FILES:T:M*.po.*}" in \ *.po.*) mv $@.${.MAKE.PID} $@;; \ *) { cat $@.${.MAKE.PID}; \ - sed 's,\${NOSSPPICO}:,.o:,;s,\${PICO}:,.o:,;s,\.o:,.po:,' $@.${.MAKE.PID}; } | sort -u > $@; \ + sed 's,\${NOSSPPICO}:,.o:,;s,\${PICO}:,.o:,;s,\${PPICO}:,.o:,;s,\.o:,.po:,' $@.${.MAKE.PID}; } | sort -u > $@; \ rm -f $@.${.MAKE.PID};; \ esac .else Modified: projects/runtime-coverage-v2/share/mk/src.opts.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/src.opts.mk Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/share/mk/src.opts.mk Wed Apr 3 03:23:45 2019 (r345825) @@ -295,6 +295,12 @@ __DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF # This means that architectures that have GCC 4.2 as default can not # build Clang without using an external compiler. +# Note about MK_COVERAGE: +# +# clang and gcc 4.8+ (c++11 supporting compilers) support -fprofile-dir and +# can compile lib/libclang_rt/profile . libgcov, etc, in base is a dead end +# that I do not wish to support. + .if ${COMPILER_FEATURES:Mc++11} && (${__T} == "aarch64" || \ ${__T} == "amd64" || ${__TT} == "arm" || ${__T} == "i386") # Clang is enabled, and will be installed as the default /usr/bin/cc. @@ -534,6 +540,7 @@ MK_LLD_BOOTSTRAP:= no .if ${MK_TOOLCHAIN} == "no" MK_BINUTILS:= no MK_CLANG:= no +MK_COVERAGE:= no MK_GCC:= no MK_GDB:= no MK_INCLUDES:= no Modified: projects/runtime-coverage-v2/share/mk/suite.test.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/suite.test.mk Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/share/mk/suite.test.mk Wed Apr 3 03:23:45 2019 (r345825) @@ -79,6 +79,39 @@ Kyuafile: Makefile KYUA= ${LOCALBASE}/bin/kyua +MAKE_CHECK_SANDBOX_DIR= checkdir +CLEANDIRS+= ${MAKE_CHECK_SANDBOX_DIR} + +.if ${MK_MAKE_CHECK_USE_SANDBOX} != "no" && make(check) +DESTDIR:= ${.OBJDIR}/${MAKE_CHECK_SANDBOX_DIR} + +.if ${MK_MAKE_CHECK_TEST_WITH_COVERAGE} != "no" +GCOV?= gcov +GCOV_PREFIX?= ${DESTDIR} +TESTS_ENV+= GCOV=${GCOV} GCOV_PREFIX=${GCOV_PREFIX} +.endif + +beforecheck: +.for t in clean depend all +.for dir in ${SRCTOP}/tests/tools ${.CURDIR} + @cd ${dir} && ${MAKE} $t +.endfor +.endfor + @cd ${SRCTOP} && ${MAKE} hierarchy DESTDIR=${DESTDIR} +.for dir in ${SRCTOP}/tests/tools ${.CURDIR} + @cd ${dir} && ${MAKE} install DESTDIR=${DESTDIR} +.endfor + +# NOTE: this is intentional to ensure that "make check" can be run multiple +# times. "aftercheck" won't be run if "make check" fails, is interrupted, +# etc. +aftercheck: +.if ${MK_MAKE_CHECK_TEST_WITH_COVERAGE} != "no" + @env ${TESTS_ENV:Q} ${DESTDIR}${TESTSBASE}/tools/gather_coverage +.endif + @cd ${.CURDIR} && ${MAKE} clean +.endif + # Definition of the "make check" target and supporting variables. # # This target, by necessity, can only work for native builds (i.e. a FreeBSD Modified: projects/runtime-coverage-v2/stand/defs.mk ============================================================================== --- projects/runtime-coverage-v2/stand/defs.mk Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/stand/defs.mk Wed Apr 3 03:23:45 2019 (r345825) @@ -7,6 +7,7 @@ __BOOT_DEFS_MK__=${MFILE} # because it includes bsd.own.mk which needs the right MK_ values, # espeically MK_CTF. +MK_COVERAGE= no MK_CTF= no MK_SSP= no MK_PROFILE= no Modified: projects/runtime-coverage-v2/tests/Makefile ============================================================================== --- projects/runtime-coverage-v2/tests/Makefile Wed Apr 3 02:46:57 2019 (r345824) +++ projects/runtime-coverage-v2/tests/Makefile Wed Apr 3 03:23:45 2019 (r345825) @@ -10,6 +10,7 @@ KYUAFILE= yes SUBDIR+= etc SUBDIR+= sys +SUBDIR+= tools SUBDIR_PARALLEL= Added: projects/runtime-coverage-v2/tests/tools/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage-v2/tests/tools/Makefile Wed Apr 3 03:23:45 2019 (r345825) @@ -0,0 +1,11 @@ +# $FreeBSD$ + +.include + +BINDIR= ${TESTSBASE}/tools + +.if ${MK_COVERAGE} != "no" +SCRIPTS+= gather_coverage +.endif + +.include Added: projects/runtime-coverage-v2/tests/tools/gather_coverage.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage-v2/tests/tools/gather_coverage.sh Wed Apr 3 03:23:45 2019 (r345825) @@ -0,0 +1,75 @@ +#!/bin/sh +# +# Copyright (c) 2017 Ngie Cooper +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +# SUCH DAMAGE. +# +# $FreeBSD$ + +# usage: gather_coverage + +SCRIPT=${0##*/} + +: ${COVERAGE_OUTPUT=coverage-output} +: ${GCOV=gcov} +: ${GCOV_PREFIX=$(pwd)} + +error() +{ + printf >&2 "${SCRIPT}: ERROR: %s\n" "$@" +} + +require_command() +{ + local cmd=$1; shift + + if ! command -v $cmd >/dev/null; then + error "required command not found: $cmd" + if [ $# -gt 0 ]; then + printf >&2 "%s\n" "$@" + fi + exit 1 + fi +} + + + +require_command ${GCOV} \ + 'Install gcov from base, or specify alternate version, e.g., from ports, using $GCOV.' +for cmd in lcov genhtml; do + require_command ${cmd} "Install devel/lcov from ports." +done + +if ! COVERAGE_TMP=$(mktemp -d tmp.XXXXXX); then + error "failed to create COVERAGE_TMP." + exit 1 +fi +trap "rm -Rf '$COVERAGE_TMP'" EXIT INT TERM + +set -e + +lcov --gcov-tool ${GCOV} --capture --directory ${GCOV_PREFIX} --output-file \ + ${COVERAGE_TMP}/coverage.info +genhtml ${COVERAGE_TMP}/coverage.info --output-directory ${COVERAGE_OUTPUT} + +printf "${SCRIPT}: INFO: coverage output successfully placed in ${COVERAGE_OUTPUT}\n" Added: projects/runtime-coverage-v2/tools/build/options/WITH_COVERAGE ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/runtime-coverage-v2/tools/build/options/WITH_COVERAGE Wed Apr 3 03:23:45 2019 (r345825) @@ -0,0 +1,17 @@ +.\" $FreeBSD$ +Set to build profiled libraries for use with +.Xr gcov 1 , +.Xr lcov 1 , +etc. +.Em Warning: +this option is experimental. +Profiled libraries and binaries with runtime instrumentation built in will +consume large amounts of disk space (somewhere on the order of several +gigabytes). +.\" TODO: put this in build(7)? +GCDA files are installed to the +.Pa /usr/lib/cov +prefix. +.\" TODO: verify this claim in an e2e test. +The install directory mirrors the install path for the object directory, e.g., +.Pa /usr/lib/cov/usr/obj/lib/libc/stdio/vfprintf.gcda From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:02 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 56A6CDC18B for ; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yv5ghgz4P4s; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id B8D4A19F54; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 794401DBCB; Sun, 31 Mar 2019 16:56:41 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 329BD8940B; Sun, 31 Mar 2019 16:56:41 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1E5441DBC9; Sun, 31 Mar 2019 16:56:41 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id BF1231DBC7 for ; Sun, 31 Mar 2019 16:56:37 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 734F889409; Sun, 31 Mar 2019 16:56:37 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0C84619BD; Sun, 31 Mar 2019 16:56:37 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x2VGuaaf071355; Sun, 31 Mar 2019 16:56:36 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x2VGuaf0071354; Sun, 31 Mar 2019 16:56:36 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201903311656.x2VGuaf0071354@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345755 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345755 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 329BD8940B X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.95)[-0.947,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:03 -0000 X-Original-Date: Sun, 31 Mar 2019 16:56:36 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:03 -0000 Author: ngie Date: Sun Mar 31 16:56:36 2019 New Revision: 345755 URL: https://svnweb.freebsd.org/changeset/base/345755 Log: Remove comment and fold std::cerr call into GTEST_SKIP() There's a missing set of commits that is preventing D19765 from working on this branch (it works on googletest master). Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Sun Mar 31 14:18:02 2019 (r345754) +++ projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Sun Mar 31 16:56:36 2019 (r345755) @@ -47,10 +47,7 @@ class SetupEnvironment : public ::testing::Environment trap_enotcap_enabled_len = sizeof(trap_enotcap_enabled); if (feature_present("security_capabilities") == 0) { - // XXX (ngie): using std::cerr because 1.8.1 (with GTEST_SKIP support) - // isn't properly outputting skip diagnostic message here. - std::cerr << "Tests require a CAPABILITIES enabled kernel" << std::endl; - GTEST_SKIP(); + GTEST_SKIP() << "Tests require a CAPABILITIES enabled kernel"; } else { std::cerr << "Running on a CAPABILITIES enabled kernel - OK!" << std::endl; @@ -62,12 +59,8 @@ class SetupEnvironment : public ::testing::Environment GTEST_FAIL() << "sysctlbyname failed: " << strerror(errno); } if (trap_enotcap_enabled) { - // XXX (ngie): using std::cerr because 1.8.1 (with GTEST_SKIP support) - // isn't properly outputting skip diagnostic message here. - std::cerr << "Sysctl " << oid << " enabled. " - << "Skipping tests to avoid non-determinism with results" - << std::endl; - GTEST_SKIP(); + GTEST_SKIP() << "Sysctl " << oid << " enabled. " + << "Skipping tests to avoid non-determinism with results"; } else { std::cerr << "Sysctl " << oid << " not enabled - OK!" << std::endl; } From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:09 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 5E14EDC392 for ; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z26x6zz4PCf; Tue, 3 Sep 2019 14:06:06 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 270BF1A149; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 727F510FBC; Wed, 3 Apr 2019 05:08:20 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2E03F90FD0; Wed, 3 Apr 2019 05:08:20 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 12DA210FBA; Wed, 3 Apr 2019 05:08:20 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 539A610FB8 for ; Wed, 3 Apr 2019 05:08:17 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E6C7A90FCD; Wed, 3 Apr 2019 05:08:16 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id BB37990A9; Wed, 3 Apr 2019 05:08:16 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x3358GUa072023; Wed, 3 Apr 2019 05:08:16 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x3358G90072022; Wed, 3 Apr 2019 05:08:16 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904030508.x3358G90072022@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345832 - projects/runtime-coverage-v2/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage-v2/share/mk X-SVN-Commit-Revision: 345832 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2E03F90FD0 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.97)[-0.971,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:10 -0000 X-Original-Date: Wed, 3 Apr 2019 05:08:16 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:10 -0000 Author: ngie Date: Wed Apr 3 05:08:16 2019 New Revision: 345832 URL: https://svnweb.freebsd.org/changeset/base/345832 Log: bsd.prog.mk: fix some MK_COVERAGE logic * Remove a misleading test for clang and newer versions of gcc that support `--coverage` properly. * Handle .y (yacc) sources when defining `GCNOS` to unbreak the build with `bin/expr`. Modified: projects/runtime-coverage-v2/share/mk/bsd.prog.mk Modified: projects/runtime-coverage-v2/share/mk/bsd.prog.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/bsd.prog.mk Wed Apr 3 04:01:08 2019 (r345831) +++ projects/runtime-coverage-v2/share/mk/bsd.prog.mk Wed Apr 3 05:08:16 2019 (r345832) @@ -79,7 +79,7 @@ TAG_ARGS= -T ${TAGS:[*]:S/ /,/g} .if defined(NO_SHARED) && ${NO_SHARED:tl} != "no" LDFLAGS+= -static .else -.if defined(_WANTS_DEBUG) && ${MK_COVERAGE} != "no" && ${COMPILER_FEATURES:Mc++11} +.if defined(_WANTS_DEBUG) && ${MK_COVERAGE} != "no" _COV_FLAG= --coverage -fprofile-dir=${COVERAGEDIR} CFLAGS+= ${_COV_FLAG} CXXFLAGS+= ${_COV_FLAG} @@ -324,7 +324,7 @@ NLSNAME?= ${PROG} .include .if defined(_COV_FLAG) && !empty(SRCS) -_GCNO_SRCS= ${SRCS:M*.c} ${SRCS:M*.cc} ${SRCS:M*.cpp} ${SRCS:M*.cxx} ${SRCS:M*.C} +_GCNO_SRCS= ${SRCS:M*.c} ${SRCS:M*.cc} ${SRCS:M*.cpp} ${SRCS:M*.cxx} ${SRCS:M*.C} ${SRCS:M*.y} GCNOS:= ${_GCNO_SRCS:R:S/$/.gcno/g} .undef _GCNO_SRCS .for _gcno in ${GCNOS} From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:10 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 62537DC395 for ; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z300C9z4PCg; Tue, 3 Sep 2019 14:06:06 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 2C2081A14B; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id D347F119EE; Wed, 3 Apr 2019 05:40:08 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3F3F292317; Wed, 3 Apr 2019 05:40:08 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1816C11983; Wed, 3 Apr 2019 05:40:08 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id B852D11981 for ; Wed, 3 Apr 2019 05:40:05 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6967C9230E; Wed, 3 Apr 2019 05:40:05 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 2A05695C5; Wed, 3 Apr 2019 05:40:05 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x335e5df088543; Wed, 3 Apr 2019 05:40:05 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x335e5K5088542; Wed, 3 Apr 2019 05:40:05 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904030540.x335e5K5088542@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345833 - projects/runtime-coverage X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage X-SVN-Commit-Revision: 345833 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3F3F292317 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.97)[-0.969,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:10 -0000 X-Original-Date: Wed, 3 Apr 2019 05:40:05 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:10 -0000 Author: ngie Date: Wed Apr 3 05:40:04 2019 New Revision: 345833 URL: https://svnweb.freebsd.org/changeset/base/345833 Log: Prune outdated branch ^/projects/runtime-coverage has been superseded by ^/projects/runtime-coverage-v2 . Deleted: projects/runtime-coverage/ From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:04 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 230DFDC1DC for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw2JTQz4P5W; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 3BAE219F83; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 50671C456; Mon, 1 Apr 2019 13:34:36 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 442236F5F6; Mon, 1 Apr 2019 13:34:33 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1C31CC3F0; Mon, 1 Apr 2019 13:34:33 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 0B62CC3EC; Mon, 1 Apr 2019 13:34:30 +0000 (UTC) (envelope-from bu7cher@yandex.ru) Received: from forward102o.mail.yandex.net (forward102o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::602]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 82F836F5EF; Mon, 1 Apr 2019 13:34:29 +0000 (UTC) (envelope-from bu7cher@yandex.ru) Received: from mxback14o.mail.yandex.net (mxback14o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::65]) by forward102o.mail.yandex.net (Yandex) with ESMTP id 9834B66803EC; Mon, 1 Apr 2019 16:34:25 +0300 (MSK) Received: from smtp4j.mail.yandex.net (smtp4j.mail.yandex.net [2a02:6b8:0:1619::15:6]) by mxback14o.mail.yandex.net (nwsmtp/Yandex) with ESMTP id p8XKaZzpFO-YPxiBTLe; Mon, 01 Apr 2019 16:34:25 +0300 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1554125665; bh=sUBFzg/xjFBpxltW6JYr522Zyvi1QROoSsME03oMDpw=; h=In-Reply-To:From:To:Subject:Cc:Date:References:Message-ID; b=WPjbauNnuusLXBWS1U5XDU0lMC1xV+Rw2FS3EpnffTEENxtOKUutrQphq4AwGxlzF gWHyRzCNu3wtSM5JjL5BgbL+xIpWwd5iFL0dcQL0HK3DcV8PgTzkqCK36ZTsoVG3RP fDwFNvlJu/VMvfGBIyVyh1ttxwu+Rr5P7/sCe3YQ= Received: by smtp4j.mail.yandex.net (nwsmtp/Yandex) with ESMTPSA id TQESqOS1NT-YOemQ25Y; Mon, 01 Apr 2019 16:34:24 +0300 (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client certificate not present) Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl To: rgrimes@freebsd.org, Mateusz Guzik Cc: Kristof Provost , src-committers@freebsd.org, svn-src-projects@freebsd.org References: <201904011330.x31DUCYY015185@gndrsh.dnsmgr.net> From: "Andrey V. Elsukov" Openpgp: id=E6591E1B41DA1516F0C9BC0001C5EA0410C8A17A Autocrypt: addr=bu7cher@yandex.ru; prefer-encrypt=mutual; keydata= mQENBEwBF1kBCADB9sXFhBEUy8qQ4X63Y8eBatYMHGEFWN9ypS5lI3RE6qQW2EYbxNk7qUC5 21YIIS1mMFVBEfvR7J9uc7yaYgFCEb6Sce1RSO4ULN2mRKGHP3/Sl0ijZEjWHV91hY1YTHEF ZW/0GYinDf56sYpDDehaBF5wkWIo1+QK5nmj3vl0DIDCMNd7QEiWpyLVwECgLX2eOAXByT8B bCqVhJGcG6iFP7/B9Ll6uX5gb8thM9LM+ibwErDBVDGiOgvfxqidab7fdkh893IBCXa82H9N CNwnEtcgzh+BSKK5BgvPohFMgRwjti37TSxwLu63QejRGbZWSz3OK3jMOoF63tCgn7FvABEB AAG0JUFuZHJleSBWLiBFbHN1a292IDxidTdjaGVyQHlhbmRleC5ydT6JATgEEwECACIFAkwB F1kCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEAHF6gQQyKF6qmYIAI6ekfm1VA4T vqankI1ISE6ku4jV7UlpIQlEbE7/8n3Zd6teJ+pGOQhN5qk8QE7utdPdbktAzi+x7LIJVzUw 4TywZLXGrkP7VKYkfg6oyCGyzITghefQeJtr2TN4hYCkzPWpylkue8MtmqfZv/6royqwTbN+ +E09FQNvTgRUYJYTeQ1qOsxNRycwvw3dr2rOfuxShbzaHBB1pBIjGrMg8fC5pd65ACH5zuFV A0CoTNGMDrEZSfBkTW604UUHFFXeCoC3dwDZRKOWJ3GmMXns65Ai5YkA63BSHEE1Qle3VBhd cG1w0CB5FBV3pB27UVnf0jEbysrDqW4qN7XMRFSWNAy5AQ0ETAEXWQEIAJ2p6l9LBoqdH/0J PEFDY2t2gTvAuzz+8zs3R03dFuHcNbOwjvWCG0aOmVpAzkRa8egn5JB4sZaFUtKPYJEQ1Iu+ LUBwgvtXf4vWpzC67zs2dDuiW4LamH5p6xkTD61aHR7mCB3bg2TUjrDWn2Jt44cvoYxj3dz4 S49U1rc9ZPgD5axCNv45j72tggWlZvpefThP7xT1OlNTUqye2gAwQravXpZkl5JG4eOqJVIU X316iE3qso0iXRUtO7OseBf0PiVmk+wCahdreHOeOxK5jMhYkPKVn7z1sZiB7W2H2TojbmcK HZC22sz7Z/H36Lhg1+/RCnGzdEcjGc8oFHXHCxUAEQEAAYkBHwQYAQIACQUCTAEXWQIbDAAK CRABxeoEEMihegkYCAC3ivGYNe2taNm/4Nx5GPdzuaAJGKWksV+w9mo7dQvU+NmI2az5w8vw 98OmX7G0OV9snxMW+6cyNqBrVFTu33VVNzz9pnqNCHxGvj5dL5ltP160JV2zw2bUwJBYsgYQ WfyJJIM7l3gv5ZS3DGqaGIm9gOK1ANxfrR5PgPzvI9VxDhlr2juEVMZYAqPLEJe+SSxbwLoz BcFCNdDAyXcaAzXsx/E02YWm1hIWNRxanAe7Vlg7OL+gvLpdtrYCMg28PNqKNyrQ87LQ49O9 50IIZDOtNFeR0FGucjcLPdS9PiEqCoH7/waJxWp6ydJ+g4OYRBYNM0EmMgy1N85JJrV1mi5i Message-ID: <78dda390-9357-2d5a-1737-7efd6901658a@yandex.ru> User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:60.0) Gecko/20100101 Thunderbird/60.4.0 MIME-Version: 1.0 In-Reply-To: <201904011330.x31DUCYY015185@gndrsh.dnsmgr.net> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="rZGnFAE40N1XGEMlRMhwTe1hzjD24vREN" Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 442236F5F6 X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.97 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.97)[-0.973,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:05 -0000 X-Original-Date: Mon, 1 Apr 2019 16:32:28 +0300 X-List-Received-Date: Tue, 03 Sep 2019 14:06:05 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --rZGnFAE40N1XGEMlRMhwTe1hzjD24vREN Content-Type: multipart/mixed; boundary="UqQnglXTRPqsD6v6Bty6V8ziwFn27y3Wi"; protected-headers="v1" From: "Andrey V. Elsukov" To: rgrimes@freebsd.org, Mateusz Guzik Cc: Kristof Provost , src-committers@freebsd.org, svn-src-projects@freebsd.org Message-ID: <78dda390-9357-2d5a-1737-7efd6901658a@yandex.ru> Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl References: <201904011330.x31DUCYY015185@gndrsh.dnsmgr.net> In-Reply-To: <201904011330.x31DUCYY015185@gndrsh.dnsmgr.net> --UqQnglXTRPqsD6v6Bty6V8ziwFn27y3Wi Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable On 01.04.2019 16:30, Rodney W. Grimes wrote: >> I think a reasonable course of action would be to maintain a portable = pf >> port as a join effort with NetBSD. To that end you can start with >> replacing FreeBSD network stack with theirs to increase compatibility.= >> >> After that it's all smooth sailing. >=20 > If there is desire to create/maintain a *BSD pf port within > the communtiy I would love to see that team formed. I have > direct feedback from some community that would like to see > FreeBSD update its pf code, is there some people who would like > to take this work on? It seems it is too late: https://marc.info/?l=3Dopenbsd-tech&m=3D155409489427092&w=3D2 http://mail-index.netbsd.org/tech-kern/2019/03/29/msg024883.html --=20 WBR, Andrey V. Elsukov --UqQnglXTRPqsD6v6Bty6V8ziwFn27y3Wi-- --rZGnFAE40N1XGEMlRMhwTe1hzjD24vREN Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/ iQEzBAEBCAAdFiEE5lkeG0HaFRbwybwAAcXqBBDIoXoFAlyiEuwACgkQAcXqBBDI oXof3ggAigcTfz0eFL7jDklbJjlf2iCwP4LZQfR7EKaVqa6d2zIO1Q/HWPqlLCnN pLXkDuTByHy/+cGDULdtdzlYiNtYFDxQZB48AU3omH8NbYHatdTjIel30IeDJ/my B/FB/xAwuo9RVd8GhZl016Hg1Or8lT7UnFxYcEQSH+dOT2B5Sd4uzaNZgShMmW8q iQCnyf6bLv0jijAqkjRv+vg6zeL9ob4OUVh+WaJHGrHCz3JQHSUWre9STAuxuwoM TXYGPYGaqdaDnutuJFrYS9CVQaZxJk8/McE9xVjXxIyaZIlR+B/GzPqtvqBqOEWf Jm9y/Ql9Q+6gsb07171LGR73sm3Thw== =sWGu -----END PGP SIGNATURE----- --rZGnFAE40N1XGEMlRMhwTe1hzjD24vREN-- From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:10 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id E7B13DC3C1 for ; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z35bFFz4PDT; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 07BAD1A19E; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id DD4C13D91; Wed, 3 Apr 2019 19:59:52 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4DA606ACE1; Wed, 3 Apr 2019 19:59:52 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0F6113D4A; Wed, 3 Apr 2019 19:59:52 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 315E63D42 for ; Wed, 3 Apr 2019 19:59:49 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0C4DC6ACD8; Wed, 3 Apr 2019 19:59:49 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EA2591ABE0; Wed, 3 Apr 2019 19:59:48 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x33Jxm8n047918; Wed, 3 Apr 2019 19:59:48 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x33JxkKS047902; Wed, 3 Apr 2019 19:59:46 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904031959.x33JxkKS047902@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345852 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345852 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4DA606ACE1 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.97)[-0.974,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:11 -0000 X-Original-Date: Wed, 3 Apr 2019 19:59:46 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:11 -0000 Author: asomers Date: Wed Apr 3 19:59:45 2019 New Revision: 345852 URL: https://svnweb.freebsd.org/changeset/base/345852 Log: fusefs: send FUSE_FLUSH during VOP_CLOSE The FUSE protocol says that FUSE_FLUSH should be send every time a file descriptor is closed. That's not quite possible in FreeBSD because multiple file descriptors can share a single struct file, and closef doesn't call fo_close until the last close. However, we can still send FUSE_FLUSH on every VOP_CLOSE, which is probably good enough. There are two purposes for FUSE_FLUSH. One is to allow file systems to return EIO if they have an error when writing data that's cached server-side. The other is to release POSIX file locks (which fusefs(5) does not yet support). PR: 236405, 236327 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_file.c projects/fuse2/sys/fs/fuse/fuse_file.h projects/fuse2/sys/fs/fuse/fuse_io.c projects/fuse2/sys/fs/fuse/fuse_node.c projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/tests/sys/fs/fusefs/allow_other.cc projects/fuse2/tests/sys/fs/fusefs/flush.cc projects/fuse2/tests/sys/fs/fusefs/fsync.cc projects/fuse2/tests/sys/fs/fusefs/mockfs.cc projects/fuse2/tests/sys/fs/fusefs/open.cc projects/fuse2/tests/sys/fs/fusefs/release.cc projects/fuse2/tests/sys/fs/fusefs/utils.cc projects/fuse2/tests/sys/fs/fusefs/utils.hh projects/fuse2/tests/sys/fs/fusefs/write.cc Modified: projects/fuse2/sys/fs/fuse/fuse_file.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.c Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/sys/fs/fuse/fuse_file.c Wed Apr 3 19:59:45 2019 (r345852) @@ -273,12 +273,14 @@ fuse_filehandle_validrw(struct vnode *vp, int mode, } int -fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh_type, +fuse_filehandle_get(struct vnode *vp, int fflag, struct fuse_filehandle **fufhp, struct ucred *cred, pid_t pid) { struct fuse_vnode_data *fvdat = VTOFUD(vp); struct fuse_filehandle *fufh; + fufh_type_t fufh_type; + fufh_type = fflags_2_fufh_type(fflag); if (cred == NULL) goto fallback; @@ -307,14 +309,14 @@ found: } int -fuse_filehandle_getrw(struct vnode *vp, fufh_type_t fufh_type, +fuse_filehandle_getrw(struct vnode *vp, int fflag, struct fuse_filehandle **fufhp, struct ucred *cred, pid_t pid) { int err; - err = fuse_filehandle_get(vp, fufh_type, fufhp, cred, pid); + err = fuse_filehandle_get(vp, fflag, fufhp, cred, pid); if (err) - err = fuse_filehandle_get(vp, FUFH_RDWR, fufhp, cred, pid); + err = fuse_filehandle_get(vp, FREAD | FWRITE, fufhp, cred, pid); return err; } Modified: projects/fuse2/sys/fs/fuse/fuse_file.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.h Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/sys/fs/fuse/fuse_file.h Wed Apr 3 19:59:45 2019 (r345852) @@ -150,10 +150,10 @@ struct fuse_filehandle { bool fuse_filehandle_validrw(struct vnode *vp, int mode, struct ucred *cred, pid_t pid); -int fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh_type, +int fuse_filehandle_get(struct vnode *vp, int fflag, struct fuse_filehandle **fufhp, struct ucred *cred, pid_t pid); -int fuse_filehandle_getrw(struct vnode *vp, fufh_type_t fufh_type, +int fuse_filehandle_getrw(struct vnode *vp, int fflag, struct fuse_filehandle **fufhp, struct ucred *cred, pid_t pid); Modified: projects/fuse2/sys/fs/fuse/fuse_io.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_io.c Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/sys/fs/fuse/fuse_io.c Wed Apr 3 19:59:45 2019 (r345852) @@ -127,12 +127,12 @@ fuse_io_dispatch(struct vnode *vp, struct uio *uio, in { struct fuse_filehandle *fufh; int err, directio; - fufh_type_t fufh_type; + int fflag; MPASS(vp->v_type == VREG || vp->v_type == VDIR); - fufh_type = (uio->uio_rw == UIO_READ) ? FUFH_RDONLY : FUFH_WRONLY; - err = fuse_filehandle_getrw(vp, fufh_type, &fufh, cred, pid); + fflag = (uio->uio_rw == UIO_READ) ? FREAD : FWRITE; + err = fuse_filehandle_getrw(vp, fflag, &fufh, cred, pid); if (err) { printf("FUSE: io dispatch: filehandles are closed\n"); return err; @@ -643,7 +643,7 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) struct uio uio; struct iovec io; int error = 0; - fufh_type_t fufh_type; + int fflag; /* We don't know the true pid when we're dealing with the cache */ pid_t pid = 0; @@ -652,9 +652,9 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) MPASS(vp->v_type == VREG || vp->v_type == VDIR); MPASS(bp->b_iocmd == BIO_READ || bp->b_iocmd == BIO_WRITE); - fufh_type = bp->b_iocmd == BIO_READ ? FUFH_RDONLY : FUFH_WRONLY; + fflag = bp->b_iocmd == BIO_READ ? FREAD : FWRITE; cred = bp->b_iocmd == BIO_READ ? bp->b_rcred : bp->b_wcred; - error = fuse_filehandle_getrw(vp, fufh_type, &fufh, cred, pid); + error = fuse_filehandle_getrw(vp, fflag, &fufh, cred, pid); if (bp->b_iocmd == BIO_READ && error == EBADF) { /* * This may be a read-modify-write operation on a cached file @@ -662,8 +662,7 @@ fuse_io_strategy(struct vnode *vp, struct buf *bp) * * TODO: eliminate this hacky check once the FUFH table is gone */ - fufh_type = FUFH_WRONLY; - error = fuse_filehandle_get(vp, fufh_type, &fufh, cred, pid); + error = fuse_filehandle_get(vp, FWRITE, &fufh, cred, pid); } if (error) { printf("FUSE: strategy: filehandles are closed\n"); Modified: projects/fuse2/sys/fs/fuse/fuse_node.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.c Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/sys/fs/fuse/fuse_node.c Wed Apr 3 19:59:45 2019 (r345852) @@ -378,7 +378,7 @@ fuse_vnode_savesize(struct vnode *vp, struct ucred *cr fsai->size = fvdat->filesize; fsai->valid |= FATTR_SIZE; - fuse_filehandle_getrw(vp, FUFH_WRONLY, &fufh, cred, pid); + fuse_filehandle_getrw(vp, FWRITE, &fufh, cred, pid); if (fufh) { fsai->fh = fufh->fh_id; fsai->valid |= FATTR_FH; Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Wed Apr 3 19:59:45 2019 (r345852) @@ -221,11 +221,43 @@ static int fuse_filehandle_get_dir(struct vnode *vp, struct fuse_filehandle **fufhp, struct ucred *cred, pid_t pid) { - if (fuse_filehandle_get(vp, FUFH_RDONLY, fufhp, cred, pid) == 0) + if (fuse_filehandle_get(vp, FREAD, fufhp, cred, pid) == 0) return 0; - return fuse_filehandle_get(vp, FUFH_EXEC, fufhp, cred, pid); + return fuse_filehandle_get(vp, FEXEC, fufhp, cred, pid); } +/* Send FUSE_FLUSH for this vnode */ +static int +fuse_flush(struct vnode *vp, struct ucred *cred, pid_t pid, int fflag) +{ + struct fuse_flush_in *ffi; + struct fuse_filehandle *fufh; + struct fuse_dispatcher fdi; + struct thread *td = curthread; + struct mount *mp = vnode_mount(vp); + int err; + + if (!fsess_isimpl(vnode_mount(vp), FUSE_FLUSH)) + return 0; + + err = fuse_filehandle_get(vp, fflag, &fufh, cred, pid); + if (err) + return err; + + fdisp_init(&fdi, sizeof(*ffi)); + fdisp_make_vp(&fdi, FUSE_FLUSH, vp, td, cred); + ffi = fdi.indata; + ffi->fh = fufh->fh_id; + + err = fdisp_wait_answ(&fdi); + if (err == ENOSYS) { + fsess_set_notimpl(mp, FUSE_FLUSH); + err = 0; + } + fdisp_destroy(&fdi); + return err; +} + /* struct vnop_access_args { struct vnode *a_vp; @@ -275,7 +307,7 @@ fuse_vnop_access(struct vop_access_args *ap) } /* - struct vnop_close_args { + struct vop_close_args { struct vnode *a_vp; int a_fflag; struct ucred *a_cred; @@ -290,6 +322,7 @@ fuse_vnop_close(struct vop_close_args *ap) int fflag = ap->a_fflag; struct thread *td = ap->a_td; pid_t pid = td->td_proc->p_pid; + int err = 0; if (fuse_isdeadfs(vp)) { return 0; @@ -297,6 +330,8 @@ fuse_vnop_close(struct vop_close_args *ap) if (vnode_isdir(vp)) { struct fuse_filehandle *fufh; + // XXX: what if two file descriptors have the same directory + // opened? We shouldn't close the file handle too soon. if (fuse_filehandle_get_dir(vp, &fufh, cred, pid) == 0) fuse_filehandle_close(vp, fufh, NULL, cred); return 0; @@ -304,11 +339,12 @@ fuse_vnop_close(struct vop_close_args *ap) if (fflag & IO_NDELAY) { return 0; } + err = fuse_flush(vp, cred, pid, fflag); /* TODO: close the file handle, if we're sure it's no longer used */ if ((VTOFUD(vp)->flag & FN_SIZECHANGE) != 0) { fuse_vnode_savesize(vp, cred, td->td_proc->p_pid); } - return 0; + return err; } static void @@ -1611,7 +1647,7 @@ fuse_vnop_setattr(struct vop_setattr_args *ap) newsize = vap->va_size; fsai->valid |= FATTR_SIZE; - fuse_filehandle_getrw(vp, FUFH_WRONLY, &fufh, cred, pid); + fuse_filehandle_getrw(vp, FWRITE, &fufh, cred, pid); if (fufh) { fsai->fh = fufh->fh_id; fsai->valid |= FATTR_FH; Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Wed Apr 3 19:59:45 2019 (r345852) @@ -78,6 +78,7 @@ TEST_F(AllowOther, allowed) expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 1); expect_open(ino, 0, 1); + expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, FH); expect_getattr(ino, 0); }, []() { Modified: projects/fuse2/tests/sys/fs/fusefs/flush.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/flush.cc Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/tests/sys/fs/fusefs/flush.cc Wed Apr 3 19:59:45 2019 (r345852) @@ -41,7 +41,8 @@ using namespace testing; class Flush: public FuseTest { public: -void expect_flush(uint64_t ino, int times, pid_t lo, ProcessMockerT r) +void +expect_flush(uint64_t ino, int times, pid_t lo, ProcessMockerT r) { EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { @@ -55,9 +56,9 @@ void expect_flush(uint64_t ino, int times, pid_t lo, P .WillRepeatedly(Invoke(r)); } -void expect_lookup(const char *relpath, uint64_t ino) +void expect_lookup(const char *relpath, uint64_t ino, int times) { - FuseTest::expect_lookup(relpath, ino, S_IFREG | 0644, 0, 1); + FuseTest::expect_lookup(relpath, ino, S_IFREG | 0644, 0, times); } /* @@ -82,16 +83,18 @@ class FlushWithLocks: public Flush { } }; -/* If a file descriptor is duplicated, every close causes FLUSH */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236405 */ -TEST_F(Flush, DISABLED_dup) +/* + * If multiple file descriptors refer to the same file handle, closing each + * should send FUSE_FLUSH + */ +TEST_F(Flush, open_twice) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; uint64_t ino = 42; int fd, fd2; - expect_lookup(RELPATH, ino); + expect_lookup(RELPATH, ino, 2); expect_open(ino, 0, 1); expect_getattr(ino, 0); expect_flush(ino, 2, 0, ReturnErrno(0)); @@ -100,10 +103,11 @@ TEST_F(Flush, DISABLED_dup) fd = open(FULLPATH, O_WRONLY); EXPECT_LE(0, fd) << strerror(errno); - fd2 = dup(fd); + fd2 = open(FULLPATH, O_WRONLY); + EXPECT_LE(0, fd2) << strerror(errno); - ASSERT_EQ(0, close(fd2)) << strerror(errno); - ASSERT_EQ(0, close(fd)) << strerror(errno); + EXPECT_EQ(0, close(fd2)) << strerror(errno); + EXPECT_EQ(0, close(fd)) << strerror(errno); } /* @@ -114,15 +118,14 @@ TEST_F(Flush, DISABLED_dup) * all. */ /* http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236405 */ -TEST_F(Flush, DISABLED_eio) +TEST_F(Flush, eio) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; uint64_t ino = 42; int fd; - expect_lookup(RELPATH, ino); + expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); expect_getattr(ino, 0); expect_flush(ino, 1, 0, ReturnErrno(EIO)); @@ -138,41 +141,48 @@ TEST_F(Flush, DISABLED_eio) * If the filesystem returns ENOSYS, it will be treated as success and * no more FUSE_FLUSH operations will be sent to the daemon */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236405 */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236557 */ -TEST_F(Flush, DISABLED_enosys) +TEST_F(Flush, enosys) { - const char FULLPATH[] = "mountpoint/some_file.txt"; - const char RELPATH[] = "some_file.txt"; - uint64_t ino = 42; - int fd, fd2; + const char FULLPATH0[] = "mountpoint/some_file.txt"; + const char RELPATH0[] = "some_file.txt"; + const char FULLPATH1[] = "mountpoint/other_file.txt"; + const char RELPATH1[] = "other_file.txt"; + uint64_t ino0 = 42; + uint64_t ino1 = 43; + int fd0, fd1; - expect_lookup(RELPATH, ino); - expect_open(ino, 0, 1); - expect_getattr(ino, 0); + expect_lookup(RELPATH0, ino0, 1); + expect_open(ino0, 0, 1); + expect_getattr(ino0, 0); /* On the 2nd close, FUSE_FLUSH won't be sent at all */ - expect_flush(ino, 1, 0, ReturnErrno(ENOSYS)); + expect_flush(ino0, 1, 0, ReturnErrno(ENOSYS)); expect_release(); - fd = open(FULLPATH, O_WRONLY); - EXPECT_LE(0, fd) << strerror(errno); + expect_lookup(RELPATH1, ino1, 1); + expect_open(ino1, 0, 1); + expect_getattr(ino1, 0); + /* On the 2nd close, FUSE_FLUSH won't be sent at all */ + expect_release(); - fd2 = dup(fd); + fd0 = open(FULLPATH0, O_WRONLY); + ASSERT_LE(0, fd0) << strerror(errno); - EXPECT_EQ(0, close(fd2)) << strerror(errno); - EXPECT_EQ(0, close(fd)) << strerror(errno); + fd1 = open(FULLPATH1, O_WRONLY); + ASSERT_LE(0, fd1) << strerror(errno); + + EXPECT_EQ(0, close(fd0)) << strerror(errno); + EXPECT_EQ(0, close(fd1)) << strerror(errno); } /* A FUSE_FLUSH should be sent on close(2) */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236405 */ -TEST_F(Flush, DISABLED_flush) +TEST_F(Flush, flush) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; uint64_t ino = 42; int fd; - expect_lookup(RELPATH, ino); + expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); expect_getattr(ino, 0); expect_flush(ino, 1, 0, ReturnErrno(0)); @@ -188,7 +198,6 @@ TEST_F(Flush, DISABLED_flush) * When closing a file with a POSIX file lock, flush should release the lock, * _even_if_ it's not the process's last file descriptor for this file. */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236405 */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=234581 */ TEST_F(FlushWithLocks, DISABLED_unlock_on_close) { @@ -199,7 +208,7 @@ TEST_F(FlushWithLocks, DISABLED_unlock_on_close) struct flock fl; pid_t pid = getpid(); - expect_lookup(RELPATH, ino); + expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); expect_getattr(ino, 0); EXPECT_CALL(*m_mock, process( Modified: projects/fuse2/tests/sys/fs/fusefs/fsync.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/fsync.cc Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/tests/sys/fs/fusefs/fsync.cc Wed Apr 3 19:59:45 2019 (r345852) @@ -139,6 +139,7 @@ TEST_F(Fsync, close) }, Eq(true)), _) ).Times(0); + expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, FH); fd = open(FULLPATH, O_RDWR); Modified: projects/fuse2/tests/sys/fs/fusefs/mockfs.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Wed Apr 3 19:59:45 2019 (r345852) @@ -169,7 +169,8 @@ void debug_fuseop(const mockfs_buf_in *in) in->body.open.flags, name); break; case FUSE_FLUSH: - printf(" lock_owner=%lu", in->body.flush.lock_owner); + printf(" fh=%#lx lock_owner=%lu", in->body.flush.fh, + in->body.flush.lock_owner); break; case FUSE_FORGET: printf(" nlookup=%lu", in->body.forget.nlookup); Modified: projects/fuse2/tests/sys/fs/fusefs/open.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/open.cc Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/tests/sys/fs/fusefs/open.cc Wed Apr 3 19:59:45 2019 (r345852) @@ -205,6 +205,7 @@ TEST_F(Open, multiple_creds) SET_OUT_HEADER_LEN(out, open); }))); expect_getattr(ino, 0); + expect_flush(ino, 2, ReturnErrno(0)); expect_release(ino, fh0); expect_release(ino, fh1); Modified: projects/fuse2/tests/sys/fs/fusefs/release.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/release.cc Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/tests/sys/fs/fusefs/release.cc Wed Apr 3 19:59:45 2019 (r345852) @@ -82,6 +82,7 @@ TEST_F(Release, dup) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); expect_getattr(ino, 0); + expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, 0, O_RDONLY, 0); fd = open(FULLPATH, O_RDONLY); @@ -111,6 +112,7 @@ TEST_F(Release, eio) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); expect_getattr(ino, 0); + expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, 0, O_WRONLY, EIO); fd = open(FULLPATH, O_WRONLY); @@ -133,6 +135,7 @@ TEST_F(Release, DISABLED_flags) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); expect_getattr(ino, 0); + expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, 0, O_RDWR | O_APPEND, 0); fd = open(FULLPATH, O_RDWR | O_APPEND); @@ -156,6 +159,7 @@ TEST_F(Release, multiple_opens) expect_lookup(RELPATH, ino, 2); expect_open(ino, 0, 2); expect_getattr(ino, 0); + expect_flush(ino, 2, ReturnErrno(0)); expect_release(ino, 0, O_RDONLY, 0); fd = open(FULLPATH, O_RDONLY); @@ -179,6 +183,7 @@ TEST_F(Release, ok) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); expect_getattr(ino, 0); + expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, 0, O_RDONLY, 0); fd = open(FULLPATH, O_RDONLY); @@ -212,6 +217,7 @@ TEST_F(ReleaseWithLocks, DISABLED_unlock_on_close) SET_OUT_HEADER_LEN(out, setlk); out->body.setlk.lk = in->body.setlk.lk; }))); + expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, (uint64_t)pid, O_RDWR, 0); fd = open(FULLPATH, O_RDWR); Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Wed Apr 3 19:59:45 2019 (r345852) @@ -114,6 +114,19 @@ FuseTest::expect_access(uint64_t ino, mode_t access_mo ).WillOnce(Invoke(ReturnErrno(error))); } +void +FuseTest::expect_flush(uint64_t ino, int times, ProcessMockerT r) +{ + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_FLUSH && + in->header.nodeid == ino); + }, Eq(true)), + _) + ).Times(times) + .WillRepeatedly(Invoke(r)); +} + void FuseTest::expect_getattr(uint64_t ino, uint64_t size) { /* Until the attr cache is working, we may send an additional GETATTR */ Modified: projects/fuse2/tests/sys/fs/fusefs/utils.hh ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.hh Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/tests/sys/fs/fusefs/utils.hh Wed Apr 3 19:59:45 2019 (r345852) @@ -70,10 +70,16 @@ class FuseTest : public ::testing::Test { } /* - * Create an expectation that FUSE_ACCESS will be called oncde for the + * Create an expectation that FUSE_ACCESS will be called once for the * given inode with the given access_mode, returning the given errno */ void expect_access(uint64_t ino, mode_t access_mode, int error); + + /* + * Create an expectation that FUSE_FLUSH will be called times times for + * the given inode + */ + void expect_flush(uint64_t ino, int times, ProcessMockerT r); /* * Create an expectation that FUSE_GETATTR will be called for the given Modified: projects/fuse2/tests/sys/fs/fusefs/write.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/write.cc Wed Apr 3 19:35:07 2019 (r345851) +++ projects/fuse2/tests/sys/fs/fusefs/write.cc Wed Apr 3 19:59:45 2019 (r345852) @@ -374,6 +374,7 @@ TEST_F(Write, DISABLED_mmap) * pid, so they must set FUSE_WRITE_CACHE */ expect_write(ino, 0, len, len, FUSE_WRITE_CACHE, expected); + expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, ReturnErrno(0)); fd = open(FULLPATH, O_RDWR); @@ -512,6 +513,7 @@ TEST_F(WriteBack, close) SET_OUT_HEADER_LEN(out, attr); out->body.attr.attr.ino = ino; // Must match nodeid }))); + expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, ReturnErrno(0)); fd = open(FULLPATH, O_RDWR); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:04 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 23023DC1DA for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw2JVqz4P5X; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 2B04F19F79; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 78D24BE3F; Mon, 1 Apr 2019 13:13:40 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 58B496E94C; Mon, 1 Apr 2019 13:13:39 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1571DBDD6; Mon, 1 Apr 2019 13:13:39 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E1C7DBDD3; Mon, 1 Apr 2019 13:13:35 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: from mail-qt1-x842.google.com (mail-qt1-x842.google.com [IPv6:2607:f8b0:4864:20::842]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AA6AF6E944; Mon, 1 Apr 2019 13:13:35 +0000 (UTC) (envelope-from mjguzik@gmail.com) Received: by mail-qt1-x842.google.com with SMTP id z17so10377293qts.13; Mon, 01 Apr 2019 06:13:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Ip0hfQYu6nrV9xQvjwNFL/NU84NOuYarK0Ij+Gt4XYA=; b=APOXTHdsbdkVU6aKbdGpMVhjnS1xlDT0J/syTwu0E0wS4nx+BHBOeq2yQq8aQthbQy 1/wvtk/vZga8Qqd2Reo8+vpft1zh8tSXH9myO7zaBwpQZ6x0TCm4GUeNpgCw6NDQUPmP lY9AyW9NEoybB65SmDaTVfrlJgTdyvUroCiwCfCVWKfOBcfBBk+OV8AJVuayENaIkuPK Z07jzBwE5cY2my5qoJSxVIRaD6JnqeKcDm3baxdHwPRmBmvWNdfGQK8p/h6tLhYD2zPO VSQZ20G4EYT/N3P5kYQ0QVZaOnbDtVD69tEyxoJO2WGyjTzOx4HQ6kRvWnGMYH6Lk0Tc IsXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Ip0hfQYu6nrV9xQvjwNFL/NU84NOuYarK0Ij+Gt4XYA=; b=KM+XUdmpcdCobOInJKIWlU9JUnYMIODYmRfJHZMtk2VX9QG4tvz518zZn57Y8jpGOt Bm/bWswW45/Zyxd4/m0ChiHQsYIDApJf8Y798aYBsOLeYFqIsgKZQIzCEw1hR5hjzM2o CSHoAk6rM9QIkoZFbYb1HaLCScI76lGICYTzRANWCtjmkDY2lVO3EVo7Tcg6EBUHkIg/ Mp4NFC1bThuKp6w3YgXcg74iFZOr4EMwtt96E8fLWPIouc3c7h7Fy3yVIftAdhMREZs1 w0H2G2ZDp2PBLxvENpQk8+YU3h8+oma6T/NEfBr4jpUGDYvxsoKYWktDXEi7E+Q9qElS Hm0w== X-Gm-Message-State: APjAAAWD+lDHr6S2yE6Hf32NBCeoTTTpW3BYRlLDknI5ykxlN96AdApO umyn3/PK0dvnEQ/UzROuiIXQJILPSTt1Cu540jyNfw== X-Google-Smtp-Source: APXvYqwpCuVyM1muGzVwe1nEO2o2RgtPWW9CFtI5sb8v3qWFAn2wcLmaYBxOrYfURK+z2EHfxDTVe/dzrffnwC/4vaA= X-Received: by 2002:a0c:c173:: with SMTP id i48mr33789442qvh.233.1554124414741; Mon, 01 Apr 2019 06:13:34 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:ac8:3353:0:0:0:0:0 with HTTP; Mon, 1 Apr 2019 06:13:32 -0700 (PDT) In-Reply-To: <20190401055318.GI7163@vega.codepro.be> References: <20190401055318.GI7163@vega.codepro.be> From: Mateusz Guzik Message-ID: Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl To: Kristof Provost Cc: src-committers@freebsd.org, svn-src-projects@freebsd.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 58B496E94C X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.96 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.956,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:05 -0000 X-Original-Date: Mon, 1 Apr 2019 15:13:32 +0200 X-List-Received-Date: Tue, 03 Sep 2019 14:06:05 -0000 On 4/1/19, Kristof Provost wrote: > Author: kp > Date: Mon Apr 1 06:51:32 2019 > New Revision: 345760 > URL: https://svnweb.freebsd.org/changeset/base/345625 > > Log: > pf: Remove obsolete pf > > pf in FreeBSD lags years behind OpenBSD's pf. > Remove it. > > Users are advised to migrate to ipf. > I think you jumped the gun here. I understand maintaing pf in isolation is a burden and it prompted the removal, but there are other projects which also have the port. I think a reasonable course of action would be to maintain a portable pf port as a join effort with NetBSD. To that end you can start with replacing FreeBSD network stack with theirs to increase compatibility. After that it's all smooth sailing. -- Mateusz Guzik From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:12 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0F351DC518 for ; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z734D1z4PHg; Tue, 3 Sep 2019 14:06:11 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 313481A2AD; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6886916EFC; Thu, 4 Apr 2019 16:51:39 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2E64682268; Thu, 4 Apr 2019 16:51:39 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1333F16EF9; Thu, 4 Apr 2019 16:51:39 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 2747616EEB for ; Thu, 4 Apr 2019 16:51:36 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 089DA8224D; Thu, 4 Apr 2019 16:51:36 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D689E29A; Thu, 4 Apr 2019 16:51:35 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x34GpZ6s017256; Thu, 4 Apr 2019 16:51:35 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x34GpYcs017250; Thu, 4 Apr 2019 16:51:34 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904041651.x34GpYcs017250@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345876 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345876 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2E64682268 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.957,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:12 -0000 X-Original-Date: Thu, 4 Apr 2019 16:51:34 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:12 -0000 Author: asomers Date: Thu Apr 4 16:51:34 2019 New Revision: 345876 URL: https://svnweb.freebsd.org/changeset/base/345876 Log: fusefs: correctly handle short writes If a FUSE daemon returns FOPEN_DIRECT_IO when a file is opened, then it's allowed to write less data than was requested during a FUSE_WRITE operation on that file handle. fusefs should simply return a short write to userland. The old code attempted to resend the unsent data. Not only was that incorrect behavior, but it did it in an ineffective way, by attempting to "rewind" the uio and uiomove the unsent data again. This commit correctly handles short writes by returning directly to userland if FOPEN_DIRECT_IO was set. If it wasn't set (making the short write technically a protocol violation), then we resend the unsent data. But instead of rewinding the uio, just resend the data that's already in the kernel. That necessitated a few changes to fuse_ipc.c to reduce the amount of bzero activity. fusefs may be marginally faster as a result. PR: 236381 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_io.c projects/fuse2/sys/fs/fuse/fuse_ipc.c projects/fuse2/sys/fs/fuse/fuse_ipc.h projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/tests/sys/fs/fusefs/mockfs.cc projects/fuse2/tests/sys/fs/fusefs/write.cc Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Thu Apr 4 16:32:27 2019 (r345875) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Thu Apr 4 16:51:34 2019 (r345876) @@ -282,7 +282,7 @@ fuse_internal_fsync(struct vnode *vp, int waitfor, bool datasync) { - struct fuse_fsync_in *ffsi; + struct fuse_fsync_in *ffsi = NULL; struct fuse_dispatcher fdi; struct fuse_filehandle *fufh; struct fuse_vnode_data *fvdat = VTOFUD(vp); @@ -295,15 +295,20 @@ fuse_internal_fsync(struct vnode *vp, } if (vnode_isdir(vp)) op = FUSE_FSYNCDIR; + + fdisp_init(&fdi, sizeof(*ffsi)); /* * fsync every open file handle for this file, because we can't be sure * which file handle the caller is really referring to. */ LIST_FOREACH(fufh, &fvdat->handles, next) { - fdisp_init(&fdi, sizeof(*ffsi)); - fdisp_make_vp(&fdi, op, vp, td, NULL); + if (ffsi == NULL) + fdisp_make_vp(&fdi, op, vp, td, NULL); + else + fdisp_refresh_vp(&fdi, op, vp, td, NULL); ffsi = fdi.indata; ffsi->fh = fufh->fh_id; + ffsi->fsync_flags = 0; if (datasync) ffsi->fsync_flags = 1; @@ -315,8 +320,8 @@ fuse_internal_fsync(struct vnode *vp, fuse_internal_fsync_callback); fuse_insert_message(fdi.tick); } - fdisp_destroy(&fdi); } + fdisp_destroy(&fdi); return err; } @@ -331,7 +336,7 @@ fuse_internal_readdir(struct vnode *vp, { int err = 0; struct fuse_dispatcher fdi; - struct fuse_read_in *fri; + struct fuse_read_in *fri = NULL; if (uio_resid(uio) == 0) { return 0; @@ -344,9 +349,11 @@ fuse_internal_readdir(struct vnode *vp, */ while (uio_resid(uio) > 0) { - fdi.iosize = sizeof(*fri); - fdisp_make_vp(&fdi, FUSE_READDIR, vp, NULL, NULL); + if (fri == NULL) + fdisp_make_vp(&fdi, FUSE_READDIR, vp, NULL, NULL); + else + fdisp_refresh_vp(&fdi, FUSE_READDIR, vp, NULL, NULL); fri = fdi.indata; fri->fh = fufh->fh_id; @@ -419,8 +426,8 @@ fuse_internal_readdir_processdata(struct uio *uio, err = -1; break; } - fiov_refresh(cookediov); fiov_adjust(cookediov, bytesavail); + bzero(cookediov->base, bytesavail); de = (struct dirent *)cookediov->base; de->d_fileno = fudge->ino; Modified: projects/fuse2/sys/fs/fuse/fuse_io.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_io.c Thu Apr 4 16:32:27 2019 (r345875) +++ projects/fuse2/sys/fs/fuse/fuse_io.c Thu Apr 4 16:51:34 2019 (r345876) @@ -341,10 +341,14 @@ fuse_write_directbackend(struct vnode *vp, struct uio { struct fuse_vnode_data *fvdat = VTOFUD(vp); struct fuse_write_in *fwi; + struct fuse_write_out *fwo; struct fuse_dispatcher fdi; size_t chunksize; + void *fwi_data; + off_t as_written_offset; int diff; int err = 0; + bool direct_io = fufh->fuse_open_flags & FOPEN_DIRECT_IO; if (uio->uio_resid == 0) return (0); @@ -364,36 +368,61 @@ fuse_write_directbackend(struct vnode *vp, struct uio fwi->fh = fufh->fh_id; fwi->offset = uio->uio_offset; fwi->size = chunksize; + fwi_data = (char *)fdi.indata + sizeof(*fwi); - if ((err = uiomove((char *)fdi.indata + sizeof(*fwi), - chunksize, uio))) + if ((err = uiomove(fwi_data, chunksize, uio))) break; +retry: if ((err = fdisp_wait_answ(&fdi))) break; + fwo = ((struct fuse_write_out *)fdi.answ); + /* Adjust the uio in the case of short writes */ - diff = chunksize - ((struct fuse_write_out *)fdi.answ)->size; - if (diff < 0) { - err = EINVAL; - break; - } else if (diff > 0 && !(ioflag & IO_DIRECT)) { - /* - * XXX We really should be directly checking whether - * the file was opened with FOPEN_DIRECT_IO, not - * IO_DIRECT. IO_DIRECT can be set in multiple ways. - */ - SDT_PROBE2(fuse, , io, trace, 1, - "misbehaving filesystem: short writes are only " - "allowed with direct_io"); - } - uio->uio_resid += diff; - uio->uio_offset -= diff; + diff = fwi->size - fwo->size; + as_written_offset = uio->uio_offset - diff; - if (uio->uio_offset > fvdat->filesize && + if (as_written_offset - diff > fvdat->filesize && fuse_data_cache_mode != FUSE_CACHE_UC) { - fuse_vnode_setsize(vp, cred, uio->uio_offset); + fuse_vnode_setsize(vp, cred, as_written_offset); fvdat->flag &= ~FN_SIZECHANGE; + } + + if (diff < 0) { + printf("WARNING: misbehaving FUSE filesystem " + "wrote more data than we provided it\n"); + err = EINVAL; + break; + } else if (diff > 0) { + /* Short write */ + if (!direct_io) { + printf("WARNING: misbehaving FUSE filesystem: " + "short writes are only allowed with " + "direct_io\n"); + } + if (ioflag & IO_DIRECT) { + /* Return early */ + uio->uio_resid += diff; + uio->uio_offset -= diff; + break; + } else { + /* Resend the unwritten portion of data */ + fdi.iosize = sizeof(*fwi) + diff; + /* Refresh fdi without clearing data buffer */ + fdisp_refresh_vp(&fdi, FUSE_WRITE, vp, + uio->uio_td, cred); + fwi = fdi.indata; + MPASS2(fwi == fdi.indata, "FUSE dispatcher " + "reallocated despite no increase in " + "size?"); + void *src = (char*)fwi_data + fwo->size; + memmove(fwi_data, src, diff); + fwi->fh = fufh->fh_id; + fwi->offset = as_written_offset; + fwi->size = diff; + goto retry; + } } } Modified: projects/fuse2/sys/fs/fuse/fuse_ipc.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_ipc.c Thu Apr 4 16:32:27 2019 (r345875) +++ projects/fuse2/sys/fs/fuse/fuse_ipc.c Thu Apr 4 16:51:34 2019 (r345876) @@ -92,6 +92,7 @@ SDT_PROVIDER_DECLARE(fuse); */ SDT_PROBE_DEFINE2(fuse, , ipc, trace, "int", "char*"); +static void fiov_clear(struct fuse_iov *fiov); static struct fuse_ticket *fticket_alloc(struct fuse_data *data); static void fticket_refresh(struct fuse_ticket *ftick); static void fticket_destroy(struct fuse_ticket *ftick); @@ -185,11 +186,19 @@ fiov_adjust(struct fuse_iov *fiov, size_t size) fiov->len = size; } +/* Clear the fiov's data buffer */ +static void +fiov_clear(struct fuse_iov *fiov) +{ + bzero(fiov->base, fiov->len); +} + +/* Resize the fiov if needed, and clear it's buffer */ void fiov_refresh(struct fuse_iov *fiov) { - bzero(fiov->base, fiov->len); fiov_adjust(fiov, 0); + bzero(fiov->base, fiov->len); } static int @@ -267,7 +276,7 @@ fticket_destroy(struct fuse_ticket *ftick) return uma_zfree(ticket_zone, ftick); } -static inline +static inline void fticket_refresh(struct fuse_ticket *ftick) { @@ -290,6 +299,27 @@ fticket_refresh(struct fuse_ticket *ftick) ftick->tk_flag = 0; } +/* Prepar the ticket to be reused, but don't clear its data buffers */ +static inline void +fticket_reset(struct fuse_ticket *ftick) +{ + FUSE_ASSERT_MS_DONE(ftick); + FUSE_ASSERT_AW_DONE(ftick); + + ftick->tk_ms_bufdata = NULL; + ftick->tk_ms_bufsize = 0; + ftick->tk_ms_type = FT_M_FIOV; + + bzero(&ftick->tk_aw_ohead, sizeof(struct fuse_out_header)); + + ftick->tk_aw_errno = 0; + ftick->tk_aw_bufdata = NULL; + ftick->tk_aw_bufsize = 0; + ftick->tk_aw_type = FT_A_FIOV; + + ftick->tk_flag = 0; +} + static int fticket_wait_answer(struct fuse_ticket *ftick) { @@ -703,7 +733,26 @@ fuse_standard_handler(struct fuse_ticket *ftick, struc return err; } -void +/* + * Reinitialize a dispatcher from a pid and node id, without resizing or + * clearing its data buffers + */ +static void +fdisp_refresh_pid(struct fuse_dispatcher *fdip, enum fuse_opcode op, + struct mount *mp, uint64_t nid, pid_t pid, struct ucred *cred) +{ + MPASS(fdip->tick); + fticket_reset(fdip->tick); + + FUSE_DIMALLOC(&fdip->tick->tk_ms_fiov, fdip->finh, + fdip->indata, fdip->iosize); + + fuse_setup_ihead(fdip->finh, fdip->tick, nid, op, fdip->iosize, pid, + cred); +} + +/* Initialize a dispatcher from a pid and node id */ +static void fdisp_make_pid(struct fuse_dispatcher *fdip, enum fuse_opcode op, struct mount *mp, uint64_t nid, pid_t pid, struct ucred *cred) { @@ -737,6 +786,22 @@ fdisp_make_vp(struct fuse_dispatcher *fdip, enum fuse_ RECTIFY_TDCR(td, cred); return fdisp_make_pid(fdip, op, vnode_mount(vp), VTOI(vp), td->td_proc->p_pid, cred); +} + +/* Refresh a fuse_dispatcher so it can be reused, but don't zero its data */ +void +fdisp_refresh_vp(struct fuse_dispatcher *fdip, enum fuse_opcode op, + struct vnode *vp, struct thread *td, struct ucred *cred) +{ + RECTIFY_TDCR(td, cred); + return fdisp_refresh_pid(fdip, op, vnode_mount(vp), VTOI(vp), + td->td_proc->p_pid, cred); +} + +void +fdisp_refresh(struct fuse_dispatcher *fdip) +{ + fticket_refresh(fdip->tick); } SDT_PROBE_DEFINE2(fuse, , ipc, fdisp_wait_answ_error, "char*", "int"); Modified: projects/fuse2/sys/fs/fuse/fuse_ipc.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_ipc.h Thu Apr 4 16:32:27 2019 (r345875) +++ projects/fuse2/sys/fs/fuse/fuse_ipc.h Thu Apr 4 16:51:34 2019 (r345876) @@ -374,13 +374,15 @@ fdisp_destroy(struct fuse_dispatcher *fdisp) #endif } +void fdisp_refresh(struct fuse_dispatcher *fdip); + void fdisp_make(struct fuse_dispatcher *fdip, enum fuse_opcode op, struct mount *mp, uint64_t nid, struct thread *td, struct ucred *cred); -void fdisp_make_pid(struct fuse_dispatcher *fdip, enum fuse_opcode op, - struct mount *mp, uint64_t nid, pid_t pid, struct ucred *cred); - void fdisp_make_vp(struct fuse_dispatcher *fdip, enum fuse_opcode op, + struct vnode *vp, struct thread *td, struct ucred *cred); + +void fdisp_refresh_vp(struct fuse_dispatcher *fdip, enum fuse_opcode op, struct vnode *vp, struct thread *td, struct ucred *cred); int fdisp_wait_answ(struct fuse_dispatcher *fdip); Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Thu Apr 4 16:32:27 2019 (r345875) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Thu Apr 4 16:51:34 2019 (r345876) @@ -2313,9 +2313,10 @@ fuse_vnop_listextattr(struct vop_listextattr_args *ap) /* * Retrieve Linux / FUSE compatible list values. */ - fdisp_make_vp(&fdi, FUSE_LISTXATTR, vp, td, cred); + fdisp_refresh_vp(&fdi, FUSE_LISTXATTR, vp, td, cred); list_xattr_in = fdi.indata; list_xattr_in->size = linux_list_len + sizeof(*list_xattr_out); + list_xattr_in->flags = 0; attr_str = (char *)fdi.indata + sizeof(*list_xattr_in); snprintf(attr_str, len, "%s%c", prefix, extattr_namespace_separator); Modified: projects/fuse2/tests/sys/fs/fusefs/mockfs.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Thu Apr 4 16:32:27 2019 (r345875) +++ projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Thu Apr 4 16:51:34 2019 (r345876) @@ -246,7 +246,8 @@ void debug_fuseop(const mockfs_buf_in *in) printf(" %s=%s", name, value); break; case FUSE_WRITE: - printf(" offset=%lu size=%u flags=%u", + printf(" fh=%#lx offset=%lu size=%u flags=%u", + in->body.write.fh, in->body.write.offset, in->body.write.size, in->body.write.write_flags); break; Modified: projects/fuse2/tests/sys/fs/fusefs/write.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/write.cc Thu Apr 4 16:32:27 2019 (r345875) +++ projects/fuse2/tests/sys/fs/fusefs/write.cc Thu Apr 4 16:51:34 2019 (r345876) @@ -270,12 +270,43 @@ TEST_F(Write, DISABLED_direct_io_evicts_cache) /* Deliberately leak fd. close(2) will be tested in release.cc */ } +/* + * If the server doesn't return FOPEN_DIRECT_IO during FUSE_OPEN, then it's not + * allowed to return a short write for that file handle. However, if it does + * then we should still do our darndest to handle it by resending the unwritten + * portion. + */ +TEST_F(Write, indirect_io_short_write) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + const char *CONTENTS = "abcdefghijklmnop"; + uint64_t ino = 42; + int fd; + ssize_t bufsize = strlen(CONTENTS); + ssize_t bufsize0 = 11; + ssize_t bufsize1 = strlen(CONTENTS) - bufsize0; + const char *contents1 = CONTENTS + bufsize0; + + expect_lookup(RELPATH, ino, 0); + expect_open(ino, 0, 1); + expect_getattr(ino, 0); + expect_write(ino, 0, bufsize, bufsize0, 0, CONTENTS); + expect_write(ino, bufsize0, bufsize1, bufsize1, 0, + contents1); + + fd = open(FULLPATH, O_WRONLY); + EXPECT_LE(0, fd) << strerror(errno); + + ASSERT_EQ(bufsize, write(fd, CONTENTS, bufsize)) << strerror(errno); + /* Deliberately leak fd. close(2) will be tested in release.cc */ +} + /* * When the direct_io option is used, filesystems are allowed to write less - * data than requested + * data than requested. We should return the short write to userland. */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236381 */ -TEST_F(Write, DISABLED_direct_io_short_write) +TEST_F(Write, direct_io_short_write) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -284,19 +315,16 @@ TEST_F(Write, DISABLED_direct_io_short_write) int fd; ssize_t bufsize = strlen(CONTENTS); ssize_t halfbufsize = bufsize / 2; - const char *halfcontents = CONTENTS + halfbufsize; expect_lookup(RELPATH, ino, 0); expect_open(ino, FOPEN_DIRECT_IO, 1); expect_getattr(ino, 0); expect_write(ino, 0, bufsize, halfbufsize, 0, CONTENTS); - expect_write(ino, halfbufsize, halfbufsize, halfbufsize, 0, - halfcontents); fd = open(FULLPATH, O_WRONLY); EXPECT_LE(0, fd) << strerror(errno); - ASSERT_EQ(bufsize, write(fd, CONTENTS, bufsize)) << strerror(errno); + ASSERT_EQ(halfbufsize, write(fd, CONTENTS, bufsize)) << strerror(errno); /* Deliberately leak fd. close(2) will be tested in release.cc */ } @@ -305,15 +333,13 @@ TEST_F(Write, DISABLED_direct_io_short_write) * difference between what we requested and what it actually wrote crosses an * iov element boundary */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236381 */ -TEST_F(Write, DISABLED_direct_io_short_write_iov) +TEST_F(Write, direct_io_short_write_iov) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; const char *CONTENTS0 = "abcdefgh"; const char *CONTENTS1 = "ijklmnop"; const char *EXPECTED0 = "abcdefghijklmnop"; - const char *EXPECTED1 = "hijklmnop"; uint64_t ino = 42; int fd; ssize_t size0 = strlen(CONTENTS0) - 1; @@ -325,7 +351,6 @@ TEST_F(Write, DISABLED_direct_io_short_write_iov) expect_open(ino, FOPEN_DIRECT_IO, 1); expect_getattr(ino, 0); expect_write(ino, 0, totalsize, size0, 0, EXPECTED0); - expect_write(ino, size0, size1, size1, 0, EXPECTED1); fd = open(FULLPATH, O_WRONLY); EXPECT_LE(0, fd) << strerror(errno); @@ -334,7 +359,7 @@ TEST_F(Write, DISABLED_direct_io_short_write_iov) iov[0].iov_len = strlen(CONTENTS0); iov[1].iov_base = (void*)CONTENTS1; iov[1].iov_len = strlen(CONTENTS1); - ASSERT_EQ(totalsize, writev(fd, iov, 2)) << strerror(errno); + ASSERT_EQ(size0, writev(fd, iov, 2)) << strerror(errno); /* Deliberately leak fd. close(2) will be tested in release.cc */ } From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:05 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 796FCDC1F9 for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw6zNrz4P5q; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 6F09919FA3; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E0989F2E0; Mon, 1 Apr 2019 16:36:08 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 481BD76AA0; Mon, 1 Apr 2019 16:36:08 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 19242F2A3; Mon, 1 Apr 2019 16:36:08 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 737D0F29B for ; Mon, 1 Apr 2019 16:36:05 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2BCF076A93; Mon, 1 Apr 2019 16:36:05 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 09AF8190FC; Mon, 1 Apr 2019 16:36:05 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31Ga4cD014758; Mon, 1 Apr 2019 16:36:04 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31Ga3Rv014748; Mon, 1 Apr 2019 16:36:03 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904011636.x31Ga3Rv014748@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345768 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345768 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 481BD76AA0 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.95)[-0.951,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:06 -0000 X-Original-Date: Mon, 1 Apr 2019 16:36:03 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:06 -0000 Author: asomers Date: Mon Apr 1 16:36:02 2019 New Revision: 345768 URL: https://svnweb.freebsd.org/changeset/base/345768 Log: fusefs: allow opening files O_EXEC O_EXEC is useful for fexecve(2) and fchdir(2). Treat it as another fufh type alongside the existing RDONLY, WRONLY, and RDWR. Prior to r345742 this would've caused a memory and performance penalty. PR: 236329 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_file.c projects/fuse2/sys/fs/fuse/fuse_file.h projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/tests/sys/fs/fusefs/mockfs.cc projects/fuse2/tests/sys/fs/fusefs/open.cc projects/fuse2/tests/sys/fs/fusefs/opendir.cc projects/fuse2/tests/sys/fs/fusefs/readdir.cc projects/fuse2/tests/sys/fs/fusefs/releasedir.cc projects/fuse2/tests/sys/fs/fusefs/utils.cc Modified: projects/fuse2/sys/fs/fuse/fuse_file.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.c Mon Apr 1 16:15:29 2019 (r345767) +++ projects/fuse2/sys/fs/fuse/fuse_file.c Mon Apr 1 16:36:02 2019 (r345768) @@ -121,12 +121,8 @@ fuse_filehandle_open(struct vnode *vp, fufh_type_t fuf if (vnode_isdir(vp)) { op = FUSE_OPENDIR; - if (fufh_type != FUFH_RDONLY) { - SDT_PROBE2(fuse, , file, trace, 1, - "non-rdonly fh requested for a directory?"); - printf("FUSE:non-rdonly fh requested for a directory?\n"); - fufh_type = FUFH_RDONLY; - } + /* vn_open_vnode already rejects FWRITE on directories */ + MPASS(fufh_type == FUFH_RDONLY || fufh_type == FUFH_EXEC); } fdisp_init(&fdi, sizeof(*foi)); fdisp_make_vp(&fdi, op, vp, td, cred); Modified: projects/fuse2/sys/fs/fuse/fuse_file.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.h Mon Apr 1 16:15:29 2019 (r345767) +++ projects/fuse2/sys/fs/fuse/fuse_file.h Mon Apr 1 16:36:02 2019 (r345768) @@ -72,14 +72,11 @@ */ typedef enum fufh_type { FUFH_INVALID = -1, - FUFH_RDONLY = 0, - FUFH_WRONLY = 1, - FUFH_RDWR = 2, - /* TODO: add FUFH_EXEC */ + FUFH_RDONLY = O_RDONLY, + FUFH_WRONLY = O_WRONLY, + FUFH_RDWR = O_RDWR, + FUFH_EXEC = O_EXEC, } fufh_type_t; -_Static_assert(FUFH_RDONLY == O_RDONLY, "RDONLY"); -_Static_assert(FUFH_WRONLY == O_WRONLY, "WRONLY"); -_Static_assert(FUFH_RDWR == O_RDWR, "RDWR"); struct fuse_filehandle { LIST_ENTRY(fuse_filehandle) next; @@ -110,6 +107,8 @@ fuse_filehandle_xlate_from_fflags(int fflags) return FUFH_WRONLY; else if (fflags & (FREAD)) return FUFH_RDONLY; + else if (fflags & (FEXEC)) + return FUFH_EXEC; else panic("FUSE: What kind of a flag is this (%x)?", fflags); } @@ -123,6 +122,7 @@ fuse_filehandle_xlate_to_oflags(fufh_type_t type) case FUFH_RDONLY: case FUFH_WRONLY: case FUFH_RDWR: + case FUFH_EXEC: oflags = type; break; default: Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Mon Apr 1 16:15:29 2019 (r345767) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Mon Apr 1 16:36:02 2019 (r345768) @@ -285,7 +285,8 @@ fuse_vnop_close(struct vop_close_args *ap) if (vnode_isdir(vp)) { struct fuse_filehandle *fufh; - if (fuse_filehandle_get(vp, O_RDONLY, &fufh) == 0) + if ((fuse_filehandle_get(vp, O_RDONLY, &fufh) == 0) || + (fuse_filehandle_get(vp, O_EXEC, &fufh) == 0)) fuse_filehandle_close(vp, fufh, NULL, cred); return 0; } @@ -1201,16 +1202,12 @@ fuse_vnop_open(struct vop_open_args *ap) return ENXIO; if (vp->v_type == VCHR || vp->v_type == VBLK || vp->v_type == VFIFO) return (EOPNOTSUPP); - if ((mode & (FREAD | FWRITE)) == 0) + if ((mode & (FREAD | FWRITE | FEXEC)) == 0) return EINVAL; fvdat = VTOFUD(vp); - if (vnode_isdir(vp)) { - fufh_type = FUFH_RDONLY; - } else { - fufh_type = fuse_filehandle_xlate_from_fflags(mode); - } + fufh_type = fuse_filehandle_xlate_from_fflags(mode); if (fuse_filehandle_validrw(vp, fufh_type) != FUFH_INVALID) { fuse_vnode_open(vp, 0, td); @@ -1303,7 +1300,7 @@ fuse_vnop_readdir(struct vop_readdir_args *ap) return EINVAL; } - if ((err = fuse_filehandle_get(vp, O_RDONLY, &fufh)) != 0) { + if ((err = fuse_filehandle_get(vp, FUFH_RDONLY, &fufh)) != 0) { SDT_PROBE2(fuse, , vnops, trace, 1, "calling readdir() before open()"); err = fuse_filehandle_open(vp, O_RDONLY, &fufh, NULL, cred); Modified: projects/fuse2/tests/sys/fs/fusefs/mockfs.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Mon Apr 1 16:15:29 2019 (r345767) +++ projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Mon Apr 1 16:36:02 2019 (r345768) @@ -200,7 +200,8 @@ void debug_fuseop(const mockfs_buf_in *in) in->body.read.size); break; case FUSE_READDIR: - printf(" offset=%lu size=%u", in->body.readdir.offset, + printf(" fh=%#lx offset=%lu size=%u", + in->body.readdir.fh, in->body.readdir.offset, in->body.readdir.size); break; case FUSE_RELEASE: Modified: projects/fuse2/tests/sys/fs/fusefs/open.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/open.cc Mon Apr 1 16:15:29 2019 (r345767) +++ projects/fuse2/tests/sys/fs/fusefs/open.cc Mon Apr 1 16:36:02 2019 (r345768) @@ -250,8 +250,7 @@ TEST_F(Open, o_excl) test_ok(O_WRONLY | O_EXCL, O_WRONLY); } -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236329 */ -TEST_F(Open, DISABLED_o_exec) +TEST_F(Open, o_exec) { test_ok(O_EXEC, O_EXEC); } Modified: projects/fuse2/tests/sys/fs/fusefs/opendir.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/opendir.cc Mon Apr 1 16:15:29 2019 (r345767) +++ projects/fuse2/tests/sys/fs/fusefs/opendir.cc Mon Apr 1 16:36:02 2019 (r345768) @@ -44,6 +44,29 @@ void expect_lookup(const char *relpath, uint64_t ino) { FuseTest::expect_lookup(relpath, ino, S_IFDIR | 0755, 0, 1); } + +void expect_opendir(uint64_t ino, uint32_t flags, ProcessMockerT r) +{ + /* opendir(3) calls fstatfs */ + EXPECT_CALL(*m_mock, process( + ResultOf([](auto in) { + return (in->header.opcode == FUSE_STATFS); + }, Eq(true)), + _) + ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { + SET_OUT_HEADER_LEN(out, statfs); + }))); + + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_OPENDIR && + in->header.nodeid == ino && + in->body.opendir.flags == flags); + }, Eq(true)), + _) + ).WillOnce(Invoke(r)); +} + }; @@ -59,14 +82,8 @@ TEST_F(Opendir, enoent) uint64_t ino = 42; expect_lookup(RELPATH, ino); + expect_opendir(ino, O_RDONLY, ReturnErrno(ENOENT)); - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_OPENDIR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnErrno(ENOENT))); EXPECT_NE(0, open(FULLPATH, O_DIRECTORY)); EXPECT_EQ(ENOENT, errno); } @@ -82,15 +99,8 @@ TEST_F(Opendir, eperm) uint64_t ino = 42; expect_lookup(RELPATH, ino); + expect_opendir(ino, O_RDONLY, ReturnErrno(EPERM)); - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_OPENDIR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnErrno(EPERM))); - EXPECT_NE(0, open(FULLPATH, O_DIRECTORY)); EXPECT_EQ(EPERM, errno); } @@ -102,45 +112,43 @@ TEST_F(Opendir, open) uint64_t ino = 42; expect_lookup(RELPATH, ino); - - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_OPENDIR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) { + expect_opendir(ino, O_RDONLY, + ReturnImmediate([=](auto in __unused, auto out) { SET_OUT_HEADER_LEN(out, open); - }))); + })); EXPECT_LE(0, open(FULLPATH, O_DIRECTORY)) << strerror(errno); } -TEST_F(Opendir, opendir) +/* Directories can be opened O_EXEC for stuff like fchdir(2) */ +TEST_F(Opendir, open_exec) { const char FULLPATH[] = "mountpoint/some_dir"; const char RELPATH[] = "some_dir"; uint64_t ino = 42; + int fd; expect_lookup(RELPATH, ino); - EXPECT_CALL(*m_mock, process( - ResultOf([](auto in) { - return (in->header.opcode == FUSE_STATFS); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) { - SET_OUT_HEADER_LEN(out, statfs); - }))); + expect_opendir(ino, O_EXEC, + ReturnImmediate([=](auto in __unused, auto out) { + SET_OUT_HEADER_LEN(out, open); + })); - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_OPENDIR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) { + fd = open(FULLPATH, O_EXEC | O_DIRECTORY); + ASSERT_LE(0, fd) << strerror(errno); +} + +TEST_F(Opendir, opendir) +{ + const char FULLPATH[] = "mountpoint/some_dir"; + const char RELPATH[] = "some_dir"; + uint64_t ino = 42; + + expect_lookup(RELPATH, ino); + expect_opendir(ino, O_RDONLY, + ReturnImmediate([=](auto in __unused, auto out) { SET_OUT_HEADER_LEN(out, open); - }))); + })); errno = 0; EXPECT_NE(NULL, opendir(FULLPATH)) << strerror(errno); Modified: projects/fuse2/tests/sys/fs/fusefs/readdir.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/readdir.cc Mon Apr 1 16:15:29 2019 (r345767) +++ projects/fuse2/tests/sys/fs/fusefs/readdir.cc Mon Apr 1 16:36:02 2019 (r345768) @@ -52,6 +52,7 @@ void expect_readdir(uint64_t ino, uint64_t off, vector ResultOf([=](auto in) { return (in->header.opcode == FUSE_READDIR && in->header.nodeid == ino && + in->body.readdir.fh == FH && in->body.readdir.offset == off); }, Eq(true)), _) Modified: projects/fuse2/tests/sys/fs/fusefs/releasedir.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/releasedir.cc Mon Apr 1 16:15:29 2019 (r345767) +++ projects/fuse2/tests/sys/fs/fusefs/releasedir.cc Mon Apr 1 16:36:02 2019 (r345768) @@ -30,6 +30,7 @@ extern "C" { #include +#include } #include "mockfs.hh" @@ -106,4 +107,22 @@ TEST_F(ReleaseDir, ok) ASSERT_NE(NULL, dir) << strerror(errno); ASSERT_EQ(0, closedir(dir)) << strerror(errno); +} + +/* Directories opened O_EXEC should be properly released, too */ +TEST_F(ReleaseDir, o_exec) +{ + const char FULLPATH[] = "mountpoint/some_dir"; + const char RELPATH[] = "some_dir"; + uint64_t ino = 42; + int fd; + + expect_lookup(RELPATH, ino); + expect_opendir(ino); + expect_releasedir(ino, ReturnErrno(0)); + + fd = open(FULLPATH, O_EXEC | O_DIRECTORY); + EXPECT_LE(0, fd) << strerror(errno); + + ASSERT_EQ(0, close(fd)) << strerror(errno); } Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Mon Apr 1 16:15:29 2019 (r345767) +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Mon Apr 1 16:36:02 2019 (r345768) @@ -166,6 +166,7 @@ void FuseTest::expect_open(uint64_t ino, uint32_t flag void FuseTest::expect_opendir(uint64_t ino) { + /* opendir(3) calls fstatfs */ EXPECT_CALL(*m_mock, process( ResultOf([](auto in) { return (in->header.opcode == FUSE_STATFS); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:03 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 0C8C8DC1D3 for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw1YDKz4P5H; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id E243F19F63; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id BBED96190; Mon, 1 Apr 2019 06:47:25 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 444588650E; Mon, 1 Apr 2019 06:47:25 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1BA41614D; Mon, 1 Apr 2019 06:47:25 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E21FC614B for ; Mon, 1 Apr 2019 06:47:22 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 84425864FA; Mon, 1 Apr 2019 06:47:22 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from venus.codepro.be (venus.codepro.be [5.9.86.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "smtp.codepro.be", Issuer "Let's Encrypt Authority X3" (verified OK)) (Authenticated sender: kp) by smtp.freebsd.org (Postfix) with ESMTPSA id 4910919E9A; Mon, 1 Apr 2019 06:47:22 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from [100.115.136.111] (unknown [188.189.172.36]) (Authenticated sender: kp) by venus.codepro.be (Postfix) with ESMTPSA id 81EAD2E161; Mon, 1 Apr 2019 08:47:20 +0200 (CEST) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (1.0) Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl From: Kristof Provost X-Mailer: iPhone Mail (16E227) In-Reply-To: Cc: src-committers , svn-src-projects@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <20190401055318.GI7163@vega.codepro.be> To: Ed Schouten Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 444588650E X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.76 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.76)[-0.765,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:04 -0000 X-Original-Date: Mon, 1 Apr 2019 08:47:16 +0200 X-List-Received-Date: Tue, 03 Sep 2019 14:06:04 -0000 > On 1 Apr 2019, at 08:39, Ed Schouten wrote: >=20 > Op ma 1 apr. 2019 om 07:53 schreef Kristof Provost : >> Users are advised to migrate to ipf. >=20 > Has anyone considered importing netfilter/iptables? >=20 Nftables, surely? We wouldn=E2=80=99t want to import their outdated firewall.=20 Kristof= From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:04 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2181BDC1D8 for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw3jHwz4P5c; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 545CE19F8E; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id EE336D0EC; Mon, 1 Apr 2019 14:23:47 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4D99571292; Mon, 1 Apr 2019 14:23:47 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1A1A4D07F; Mon, 1 Apr 2019 14:23:47 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 990B3D077 for ; Mon, 1 Apr 2019 14:23:44 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6A86671284; Mon, 1 Apr 2019 14:23:44 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 44DADFA83; Mon, 1 Apr 2019 14:23:44 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31ENii4045853; Mon, 1 Apr 2019 14:23:44 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31ENhtx045849; Mon, 1 Apr 2019 14:23:43 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904011423.x31ENhtx045849@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345766 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 345766 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4D99571292 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.95)[-0.951,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:04 -0000 X-Original-Date: Mon, 1 Apr 2019 14:23:43 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:04 -0000 Author: asomers Date: Mon Apr 1 14:23:43 2019 New Revision: 345766 URL: https://svnweb.freebsd.org/changeset/base/345766 Log: fusefs: replace obsolete array idioms r345742 replaced fusefs's fufh array with a fufh list. But it left a few array idioms in place. This commit replaces those idioms with more efficient list idioms. One location is in fuse_filehandle_close, which now takes a pointer argument. Three other locations are places that had to loop over all of a vnode's fuse filehandles. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_file.c projects/fuse2/sys/fs/fuse/fuse_file.h projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_vnops.c Modified: projects/fuse2/sys/fs/fuse/fuse_file.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.c Mon Apr 1 14:21:32 2019 (r345765) +++ projects/fuse2/sys/fs/fuse/fuse_file.c Mon Apr 1 14:23:43 2019 (r345766) @@ -154,21 +154,15 @@ out: } int -fuse_filehandle_close(struct vnode *vp, fufh_type_t fufh_type, +fuse_filehandle_close(struct vnode *vp, struct fuse_filehandle *fufh, struct thread *td, struct ucred *cred) { struct fuse_dispatcher fdi; struct fuse_release_in *fri; - struct fuse_filehandle *fufh = NULL; int err = 0; int op = FUSE_RELEASE; - if (fuse_filehandle_get(vp, fufh_type, &fufh)) { - panic("FUSE: fuse_filehandle_close called on invalid fufh " - "(type=%d)", fufh_type); - /* NOTREACHED */ - } if (fuse_isdeadfs(vp)) { goto out; } @@ -178,7 +172,7 @@ fuse_filehandle_close(struct vnode *vp, fufh_type_t fu fdisp_make_vp(&fdi, op, vp, td, cred); fri = fdi.indata; fri->fh = fufh->fh_id; - fri->flags = fuse_filehandle_xlate_to_oflags(fufh_type); + fri->flags = fufh->flags; err = fdisp_wait_answ(&fdi); fdisp_destroy(&fdi); @@ -221,10 +215,10 @@ fuse_filehandle_get(struct vnode *vp, fufh_type_t fufh struct fuse_vnode_data *fvdat = VTOFUD(vp); struct fuse_filehandle *fufh; - /* TODO: Find a list entry with the same mode, pid, gid, and uid */ - /* Fallback: find a list entry with the right mode */ + /* TODO: Find a list entry with the same flags, pid, gid, and uid */ + /* Fallback: find a list entry with the right flags */ LIST_FOREACH(fufh, &fvdat->handles, next) { - if (fufh->mode == fufh_type) + if (fufh->flags == fufh_type) break; } @@ -258,7 +252,7 @@ fuse_filehandle_init(struct vnode *vp, fufh_type_t fuf M_WAITOK); MPASS(fufh != NULL); fufh->fh_id = fh_id; - fufh->mode = fufh_type; + fufh->flags = fufh_type; /* TODO: initialize fufh credentials and open flags */ if (!FUFH_IS_VALID(fufh)) { panic("FUSE: init: invalid filehandle id (type=%d)", fufh_type); Modified: projects/fuse2/sys/fs/fuse/fuse_file.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.h Mon Apr 1 14:21:32 2019 (r345765) +++ projects/fuse2/sys/fs/fuse/fuse_file.h Mon Apr 1 14:23:43 2019 (r345766) @@ -66,12 +66,16 @@ #include #include +/* + * The fufh type is the access mode of the fuse file handle. It's the portion + * of the open(2) flags related to permission. + */ typedef enum fufh_type { FUFH_INVALID = -1, FUFH_RDONLY = 0, FUFH_WRONLY = 1, FUFH_RDWR = 2, - FUFH_MAXTYPE = 3, + /* TODO: add FUFH_EXEC */ } fufh_type_t; _Static_assert(FUFH_RDONLY == O_RDONLY, "RDONLY"); _Static_assert(FUFH_WRONLY == O_WRONLY, "WRONLY"); @@ -86,8 +90,8 @@ struct fuse_filehandle { /* flags returned by FUSE_OPEN */ uint32_t fuse_open_flags; - /* The mode used to open(2) the file (using O_RDONLY, not FREAD) */ - uint32_t mode; + /* The flags used to open(2) the file (using O_RDONLY, not FREAD) */ + uint32_t flags; /* Credentials used to open the file */ gid_t gid; @@ -95,7 +99,7 @@ struct fuse_filehandle { uid_t uid; }; -#define FUFH_IS_VALID(f) ((f)->mode != FUFH_INVALID) +#define FUFH_IS_VALID(f) ((f)->flags != FUFH_INVALID) static inline fufh_type_t fuse_filehandle_xlate_from_fflags(int fflags) @@ -140,7 +144,7 @@ void fuse_filehandle_init(struct vnode *vp, fufh_type_ int fuse_filehandle_open(struct vnode *vp, fufh_type_t fufh_type, struct fuse_filehandle **fufhp, struct thread *td, struct ucred *cred); -int fuse_filehandle_close(struct vnode *vp, fufh_type_t fufh_type, +int fuse_filehandle_close(struct vnode *vp, struct fuse_filehandle *fufh, struct thread *td, struct ucred *cred); #endif /* _FUSE_FILE_H_ */ Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Mon Apr 1 14:21:32 2019 (r345765) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Mon Apr 1 14:23:43 2019 (r345766) @@ -285,36 +285,37 @@ fuse_internal_fsync(struct vnode *vp, struct fuse_fsync_in *ffsi; struct fuse_dispatcher fdi; struct fuse_filehandle *fufh; + struct fuse_vnode_data *fvdat = VTOFUD(vp); int op = FUSE_FSYNC; - int type = 0; int err = 0; if (!fsess_isimpl(vnode_mount(vp), (vnode_vtype(vp) == VDIR ? FUSE_FSYNCDIR : FUSE_FSYNC))) { return 0; } - for (type = 0; type < FUFH_MAXTYPE; type++) { - if (fuse_filehandle_get(vp, type, &fufh) == 0) { - if (vnode_isdir(vp)) { - op = FUSE_FSYNCDIR; - } - fdisp_init(&fdi, sizeof(*ffsi)); - fdisp_make_vp(&fdi, op, vp, td, NULL); - ffsi = fdi.indata; - ffsi->fh = fufh->fh_id; + if (vnode_isdir(vp)) + op = FUSE_FSYNCDIR; + /* + * fsync every open file handle for this file, because we can't be sure + * which file handle the caller is really referring to. + */ + LIST_FOREACH(fufh, &fvdat->handles, next) { + fdisp_init(&fdi, sizeof(*ffsi)); + fdisp_make_vp(&fdi, op, vp, td, NULL); + ffsi = fdi.indata; + ffsi->fh = fufh->fh_id; - if (datasync) - ffsi->fsync_flags = 1; + if (datasync) + ffsi->fsync_flags = 1; - if (waitfor == MNT_WAIT) { - err = fdisp_wait_answ(&fdi); - } else { - fuse_insert_callback(fdi.tick, - fuse_internal_fsync_callback); - fuse_insert_message(fdi.tick); - } - fdisp_destroy(&fdi); + if (waitfor == MNT_WAIT) { + err = fdisp_wait_answ(&fdi); + } else { + fuse_insert_callback(fdi.tick, + fuse_internal_fsync_callback); + fuse_insert_message(fdi.tick); } + fdisp_destroy(&fdi); } return err; Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Mon Apr 1 14:21:32 2019 (r345765) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Mon Apr 1 14:23:43 2019 (r345766) @@ -278,33 +278,22 @@ fuse_vnop_close(struct vop_close_args *ap) struct vnode *vp = ap->a_vp; struct ucred *cred = ap->a_cred; int fflag = ap->a_fflag; - fufh_type_t fufh_type; if (fuse_isdeadfs(vp)) { return 0; } if (vnode_isdir(vp)) { - if (fuse_filehandle_valid(vp, FUFH_RDONLY)) { - fuse_filehandle_close(vp, FUFH_RDONLY, NULL, cred); + struct fuse_filehandle *fufh; + + if (fuse_filehandle_get(vp, O_RDONLY, &fufh)) { + fuse_filehandle_close(vp, fufh, NULL, cred); } return 0; } if (fflag & IO_NDELAY) { return 0; } - fufh_type = fuse_filehandle_xlate_from_fflags(fflag); - - if (!fuse_filehandle_valid(vp, fufh_type)) { - int i; - - for (i = 0; i < FUFH_MAXTYPE; i++) - if (fuse_filehandle_valid(vp, i)) - break; - if (i == FUFH_MAXTYPE) - panic("FUSE: fufh type %d found to be invalid in close" - " (fflag=0x%x)\n", - fufh_type, fflag); - } + /* TODO: close the file handle, if we're sure it's no longer used */ if ((VTOFUD(vp)->flag & FN_SIZECHANGE) != 0) { fuse_vnode_savesize(vp, cred); } @@ -601,25 +590,23 @@ fuse_vnop_inactive(struct vop_inactive_args *ap) struct thread *td = ap->a_td; struct fuse_vnode_data *fvdat = VTOFUD(vp); - struct fuse_filehandle *fufh = NULL; + struct fuse_filehandle *fufh, *fufh_tmp; - int type, need_flush = 1; + int need_flush = 1; - for (type = 0; type < FUFH_MAXTYPE; type++) { - if (!fuse_filehandle_get(vp, type, &fufh)) { - if (need_flush && vp->v_type == VREG) { - if ((VTOFUD(vp)->flag & FN_SIZECHANGE) != 0) { - fuse_vnode_savesize(vp, NULL); - } - if (fuse_data_cache_invalidate || - (fvdat->flag & FN_REVOKED) != 0) - fuse_io_invalbuf(vp, td); - else - fuse_io_flushbuf(vp, MNT_WAIT, td); - need_flush = 0; + LIST_FOREACH_SAFE(fufh, &fvdat->handles, next, fufh_tmp) { + if (need_flush && vp->v_type == VREG) { + if ((VTOFUD(vp)->flag & FN_SIZECHANGE) != 0) { + fuse_vnode_savesize(vp, NULL); } - fuse_filehandle_close(vp, type, td, NULL); + if (fuse_data_cache_invalidate || + (fvdat->flag & FN_REVOKED) != 0) + fuse_io_invalbuf(vp, td); + else + fuse_io_flushbuf(vp, MNT_WAIT, td); + need_flush = 0; } + fuse_filehandle_close(vp, fufh, td, NULL); } if ((fvdat->flag & FN_REVOKED) != 0 && fuse_reclaim_revoked) { @@ -1317,13 +1304,11 @@ fuse_vnop_readdir(struct vop_readdir_args *ap) return EINVAL; } - if (!fuse_filehandle_valid(vp, FUFH_RDONLY)) { + if ((err = fuse_filehandle_get(vp, O_RDONLY, &fufh)) != 0) { SDT_PROBE2(fuse, , vnops, trace, 1, "calling readdir() before open()"); - err = fuse_filehandle_open(vp, FUFH_RDONLY, &fufh, NULL, cred); + err = fuse_filehandle_open(vp, O_RDONLY, &fufh, NULL, cred); freefufh = 1; - } else { - err = fuse_filehandle_get(vp, FUFH_RDONLY, &fufh); } if (err) { return (err); @@ -1334,9 +1319,9 @@ fuse_vnop_readdir(struct vop_readdir_args *ap) err = fuse_internal_readdir(vp, uio, fufh, &cookediov); fiov_teardown(&cookediov); - if (freefufh) { - fuse_filehandle_close(vp, FUFH_RDONLY, NULL, cred); - } + if (freefufh) + fuse_filehandle_close(vp, fufh, NULL, cred); + return err; } @@ -1393,20 +1378,16 @@ fuse_vnop_reclaim(struct vop_reclaim_args *ap) { struct vnode *vp = ap->a_vp; struct thread *td = ap->a_td; - struct fuse_vnode_data *fvdat = VTOFUD(vp); + struct fuse_filehandle *fufh, *fufh_tmp; - int type; - if (!fvdat) { panic("FUSE: no vnode data during recycling"); } - for (type = 0; type < FUFH_MAXTYPE; type++) { - if (fuse_filehandle_get(vp, type, NULL) == 0) { - printf("FUSE: vnode being reclaimed but fufh (type=%d) is valid", - type); - fuse_filehandle_close(vp, type, td, NULL); - } + LIST_FOREACH_SAFE(fufh, &fvdat->handles, next, fufh_tmp) { + printf("FUSE: vnode being reclaimed with open fufh " + "(flags=%#x)", fufh->flags); + fuse_filehandle_close(vp, fufh, td, NULL); } if ((!fuse_isdeadfs(vp)) && (fvdat->nlookup)) { From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:12 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 925D4DC532 for ; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z82bWNz4PJp; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 776D11A2F5; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 3EFAA18C2F; Thu, 4 Apr 2019 18:12:02 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4144C85DA3; Thu, 4 Apr 2019 18:12:01 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 141B018BE3; Thu, 4 Apr 2019 18:12:01 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5E72818BE1 for ; Thu, 4 Apr 2019 18:11:58 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 244A685D96; Thu, 4 Apr 2019 18:11:58 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F2AF811C7; Thu, 4 Apr 2019 18:11:57 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x34IBvE2059841; Thu, 4 Apr 2019 18:11:57 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x34IBvUT059837; Thu, 4 Apr 2019 18:11:57 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904041811.x34IBvUT059837@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345883 - in projects/fuse2-googletest-engine: lib/googletest/gmock/tests lib/googletest/gtest/tests lib/googletest/gtest_main/tests share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/fuse2-googletest-engine: lib/googletest/gmock/tests lib/googletest/gtest/tests lib/googletest/gtest_main/tests share/mk X-SVN-Commit-Revision: 345883 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4144C85DA3 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.96)[-0.962,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:13 -0000 X-Original-Date: Thu, 4 Apr 2019 18:11:57 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:13 -0000 Author: ngie Date: Thu Apr 4 18:11:56 2019 New Revision: 345883 URL: https://svnweb.freebsd.org/changeset/base/345883 Log: Merge changes from ^/projects/kyua-use-googletest-test-interface svn merge -c 345749,345750 ^/projects/kyua-use-googletest-test-interface Modified: projects/fuse2-googletest-engine/lib/googletest/gmock/tests/Makefile projects/fuse2-googletest-engine/lib/googletest/gtest/tests/Makefile projects/fuse2-googletest-engine/lib/googletest/gtest_main/tests/Makefile projects/fuse2-googletest-engine/share/mk/googletest.test.mk Directory Properties: projects/fuse2-googletest-engine/ (props changed) Modified: projects/fuse2-googletest-engine/lib/googletest/gmock/tests/Makefile ============================================================================== --- projects/fuse2-googletest-engine/lib/googletest/gmock/tests/Makefile Thu Apr 4 17:29:43 2019 (r345882) +++ projects/fuse2-googletest-engine/lib/googletest/gmock/tests/Makefile Thu Apr 4 18:11:56 2019 (r345883) @@ -8,6 +8,11 @@ GTESTS+= gmock_stress_test LIBADD+= pthread gtest gmock +# This test cannot selectively run a single test, as it verifies results when +# `--gtest_list_tests` is run: +# https://github.com/google/googletest/issues/2204 +TEST_INTERFACE.gmock_stress_test= plain + # The next release will resolve a number of build warnings issues. NO_WERROR= Modified: projects/fuse2-googletest-engine/lib/googletest/gtest/tests/Makefile ============================================================================== --- projects/fuse2-googletest-engine/lib/googletest/gtest/tests/Makefile Thu Apr 4 17:29:43 2019 (r345882) +++ projects/fuse2-googletest-engine/lib/googletest/gtest/tests/Makefile Thu Apr 4 18:11:56 2019 (r345883) @@ -36,6 +36,17 @@ SRCS.googletest-param-test-test= \ LIBADD+= gtest +# These tests confuse the kyua googletest engine, as they don't conform to the +# googletest spec; they're functional unit tests for the library. +TEST_INTERFACE.gtest_environment_test= plain +TEST_INTERFACE.gtest_no_test_unittest= plain +TEST_INTERFACE.gtest_repeat_test= plain +TEST_INTERFACE.gtest_stress_test= plain +TEST_INTERFACE.gtest_throw_on_failure_ex_test= plain +# This test program cannot selectively run test suites/testcases: +# https://github.com/google/googletest/issues/2205 +TEST_INTERFACE.gtest-unittest-api_test= plain + # XXX: explicitly listing -lpthread is incorrect. src.libnames.mk should be # handling this. LIBADD.gtest_stress_test+= pthread Modified: projects/fuse2-googletest-engine/lib/googletest/gtest_main/tests/Makefile ============================================================================== --- projects/fuse2-googletest-engine/lib/googletest/gtest_main/tests/Makefile Thu Apr 4 17:29:43 2019 (r345882) +++ projects/fuse2-googletest-engine/lib/googletest/gtest_main/tests/Makefile Thu Apr 4 18:11:56 2019 (r345883) @@ -21,6 +21,11 @@ GTESTS+= gtest-typed-test_test GTESTS+= gtest_skip_test GTESTS+= gtest_unittest +# This test cannot selectively run a single test, as it verifies results when +# `--gtest_list_tests` is run: +# https://github.com/google/googletest/issues/2204 +TEST_INTERFACE.googletest-listener-test= plain + CXXFLAGS+= -I${GOOGLETEST_SRCROOT}/include CXXFLAGS+= -I${GOOGLETEST_SRCROOT} Modified: projects/fuse2-googletest-engine/share/mk/googletest.test.mk ============================================================================== --- projects/fuse2-googletest-engine/share/mk/googletest.test.mk Thu Apr 4 17:29:43 2019 (r345882) +++ projects/fuse2-googletest-engine/share/mk/googletest.test.mk Thu Apr 4 18:11:56 2019 (r345883) @@ -26,6 +26,16 @@ # manpage. GTESTS?= +# Default test interface for googletest +# +# This knob should be used if the version of kyua in use doesn't support the +# `googletest` test interface. +.ifdef GTESTS_USE_PLAIN_TEST_INTERFACE +GTESTS_DEFAULT_TEST_INTERFACE= plain +.else +GTESTS_DEFAULT_TEST_INTERFACE= googletest +.endif + .if !empty(GTESTS) .include @@ -36,6 +46,6 @@ BINDIR.${_T}= ${TESTSDIR} CXXFLAGS.${_T}+= ${GTESTS_CXXFLAGS} MAN.${_T}?= # empty SRCS.${_T}?= ${_T}.cc -TEST_INTERFACE.${_T}= plain +TEST_INTERFACE.${_T}?= ${GTESTS_DEFAULT_TEST_INTERFACE} .endfor .endif From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:12 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9F136DC534 for ; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z83Dmdz4PJs; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 8BC661A2FC; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id DD6DE19350; Thu, 4 Apr 2019 18:37:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3D39586CE6; Thu, 4 Apr 2019 18:37:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1BCF219312; Thu, 4 Apr 2019 18:37:35 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 68D4E19310 for ; Thu, 4 Apr 2019 18:37:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 35C1786CE3; Thu, 4 Apr 2019 18:37:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0E2D4157F; Thu, 4 Apr 2019 18:37:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x34IbWH4071757; Thu, 4 Apr 2019 18:37:32 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x34IbVEI071753; Thu, 4 Apr 2019 18:37:31 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904041837.x34IbVEI071753@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345886 - in projects/fuse2-googletest-engine: contrib/bsnmp/gensnmptree contrib/bsnmp/lib contrib/bsnmp/snmp_mibII contrib/bsnmp/snmpd contrib/capsicum-test contrib/elftoolchain/string... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/fuse2-googletest-engine: contrib/bsnmp/gensnmptree contrib/bsnmp/lib contrib/bsnmp/snmp_mibII contrib/bsnmp/snmpd contrib/capsicum-test contrib/elftoolchain/strings contrib/googletest/goog... X-SVN-Commit-Revision: 345886 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3D39586CE6 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.96)[-0.959,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:13 -0000 X-Original-Date: Thu, 4 Apr 2019 18:37:31 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:13 -0000 Author: ngie Date: Thu Apr 4 18:37:30 2019 New Revision: 345886 URL: https://svnweb.freebsd.org/changeset/base/345886 Log: MFprojects/fuse2@r345885 Added: projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/trans_inet.c - copied unchanged from r345885, projects/fuse2/contrib/bsnmp/snmpd/trans_inet.c projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/trans_inet.h - copied unchanged from r345885, projects/fuse2/contrib/bsnmp/snmpd/trans_inet.h projects/fuse2-googletest-engine/contrib/capsicum-test/ - copied from r345885, projects/fuse2/contrib/capsicum-test/ projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_explicit.h - copied unchanged from r345885, projects/fuse2/contrib/libxo/libxo/xo_explicit.h projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.H.err - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.H.err projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.H.out - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.H.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.HIPx.err - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.HIPx.err projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.HIPx.out - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.HIPx.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.HP.err - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.HP.err projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.HP.out - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.HP.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.J.err - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.J.err projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.J.out - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.JP.err - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.JP.err projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.JP.out - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.JP.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.T.err - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.T.err projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.T.out - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.T.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.X.err - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.X.err projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.X.out - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.X.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.XP.err - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.XP.err projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_02.XP.out - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.XP.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/xo_02.sh - copied unchanged from r345885, projects/fuse2/contrib/libxo/tests/xo/xo_02.sh projects/fuse2-googletest-engine/lib/libc/aarch64/static_tls.h - copied unchanged from r345885, projects/fuse2/lib/libc/aarch64/static_tls.h projects/fuse2-googletest-engine/lib/libc/amd64/static_tls.h - copied unchanged from r345885, projects/fuse2/lib/libc/amd64/static_tls.h projects/fuse2-googletest-engine/lib/libc/arm/static_tls.h - copied unchanged from r345885, projects/fuse2/lib/libc/arm/static_tls.h projects/fuse2-googletest-engine/lib/libc/i386/static_tls.h - copied unchanged from r345885, projects/fuse2/lib/libc/i386/static_tls.h projects/fuse2-googletest-engine/lib/libc/mips/static_tls.h - copied unchanged from r345885, projects/fuse2/lib/libc/mips/static_tls.h projects/fuse2-googletest-engine/lib/libc/powerpc/static_tls.h - copied unchanged from r345885, projects/fuse2/lib/libc/powerpc/static_tls.h projects/fuse2-googletest-engine/lib/libc/powerpc64/static_tls.h - copied unchanged from r345885, projects/fuse2/lib/libc/powerpc64/static_tls.h projects/fuse2-googletest-engine/lib/libc/riscv/static_tls.h - copied unchanged from r345885, projects/fuse2/lib/libc/riscv/static_tls.h projects/fuse2-googletest-engine/lib/libc/sparc64/static_tls.h - copied unchanged from r345885, projects/fuse2/lib/libc/sparc64/static_tls.h projects/fuse2-googletest-engine/lib/libsecureboot/pass_manifest.c - copied unchanged from r345885, projects/fuse2/lib/libsecureboot/pass_manifest.c projects/fuse2-googletest-engine/lib/libthr/arch/aarch64/include/pthread_tls.h - copied unchanged from r345885, projects/fuse2/lib/libthr/arch/aarch64/include/pthread_tls.h projects/fuse2-googletest-engine/lib/libthr/arch/amd64/include/pthread_tls.h - copied unchanged from r345885, projects/fuse2/lib/libthr/arch/amd64/include/pthread_tls.h projects/fuse2-googletest-engine/lib/libthr/arch/arm/include/pthread_tls.h - copied unchanged from r345885, projects/fuse2/lib/libthr/arch/arm/include/pthread_tls.h projects/fuse2-googletest-engine/lib/libthr/arch/i386/include/pthread_tls.h - copied unchanged from r345885, projects/fuse2/lib/libthr/arch/i386/include/pthread_tls.h projects/fuse2-googletest-engine/lib/libthr/arch/mips/include/pthread_tls.h - copied unchanged from r345885, projects/fuse2/lib/libthr/arch/mips/include/pthread_tls.h projects/fuse2-googletest-engine/lib/libthr/arch/powerpc/include/pthread_tls.h - copied unchanged from r345885, projects/fuse2/lib/libthr/arch/powerpc/include/pthread_tls.h projects/fuse2-googletest-engine/lib/libthr/arch/riscv/include/pthread_tls.h - copied unchanged from r345885, projects/fuse2/lib/libthr/arch/riscv/include/pthread_tls.h projects/fuse2-googletest-engine/lib/libthr/arch/sparc64/include/pthread_tls.h - copied unchanged from r345885, projects/fuse2/lib/libthr/arch/sparc64/include/pthread_tls.h projects/fuse2-googletest-engine/sys/security/mac_veriexec_parser/ - copied from r345885, projects/fuse2/sys/security/mac_veriexec_parser/ projects/fuse2-googletest-engine/tests/sys/geom/class/eli/online_resize_test.sh - copied unchanged from r345885, projects/fuse2/tests/sys/geom/class/eli/online_resize_test.sh projects/fuse2-googletest-engine/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANFIEST - copied unchanged from r345885, projects/fuse2/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANFIEST Modified: projects/fuse2-googletest-engine/contrib/bsnmp/gensnmptree/gensnmptree.1 projects/fuse2-googletest-engine/contrib/bsnmp/gensnmptree/gensnmptree.c projects/fuse2-googletest-engine/contrib/bsnmp/lib/snmpclient.c projects/fuse2-googletest-engine/contrib/bsnmp/lib/snmpclient.h projects/fuse2-googletest-engine/contrib/bsnmp/lib/tc.def projects/fuse2-googletest-engine/contrib/bsnmp/snmp_mibII/mibII_interfaces.c projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/BEGEMOT-SNMPD.txt projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/main.c projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/snmpd.config projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/snmpd.h projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/snmpmod.h projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/trans_lsock.c projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/trans_udp.c projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/trap.c projects/fuse2-googletest-engine/contrib/bsnmp/snmpd/tree.def projects/fuse2-googletest-engine/contrib/elftoolchain/strings/strings.c projects/fuse2-googletest-engine/contrib/googletest/googletest/CMakeLists.txt projects/fuse2-googletest-engine/contrib/googletest/googletest/Makefile.am projects/fuse2-googletest-engine/contrib/googletest/googletest/docs/advanced.md projects/fuse2-googletest-engine/contrib/googletest/googletest/src/gtest.cc projects/fuse2-googletest-engine/contrib/googletest/googletest/test/BUILD.bazel projects/fuse2-googletest-engine/contrib/libxo/configure.ac projects/fuse2-googletest-engine/contrib/libxo/doc/api.rst projects/fuse2-googletest-engine/contrib/libxo/doc/libxo-manual.html projects/fuse2-googletest-engine/contrib/libxo/doc/xo.rst projects/fuse2-googletest-engine/contrib/libxo/libxo/Makefile.am projects/fuse2-googletest-engine/contrib/libxo/libxo/libxo.c projects/fuse2-googletest-engine/contrib/libxo/libxo/xo.h projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_attr.3 projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_buf.h projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_emit.3 projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_emit_f.3 projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_finish.3 projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_flush.3 projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_open_container.3 projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_open_list.3 projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_open_marker.3 projects/fuse2-googletest-engine/contrib/libxo/libxo/xo_set_writer.3 projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_01.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_02.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_03.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_04.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_05.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_05.JP.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_06.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_07.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_08.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_09.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_10.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_11.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.E.err projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.E.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.H.err projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.H.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.HIPx.err projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.HIPx.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.HP.err projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.HP.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.J.err projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.JP.err projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.JP.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.T.err projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.T.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.X.err projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.X.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.XP.err projects/fuse2-googletest-engine/contrib/libxo/tests/core/saved/test_12.XP.out projects/fuse2-googletest-engine/contrib/libxo/tests/core/test_12.c projects/fuse2-googletest-engine/contrib/libxo/tests/gettext/po/pig_latin/strerror.po projects/fuse2-googletest-engine/contrib/libxo/tests/gettext/saved/gt_01.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/Makefile.am projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_01.H.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_01.HIPx.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_01.HP.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_01.J.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_01.JP.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/saved/xo_01.T.out projects/fuse2-googletest-engine/contrib/libxo/tests/xo/xo_01.sh projects/fuse2-googletest-engine/contrib/libxo/xo/xo.1 projects/fuse2-googletest-engine/contrib/libxo/xo/xo.c projects/fuse2-googletest-engine/contrib/llvm/tools/clang/lib/CodeGen/CGObjCGNU.cpp projects/fuse2-googletest-engine/gnu/usr.bin/gdb/gdb/Makefile projects/fuse2-googletest-engine/gnu/usr.bin/gdb/kgdb/Makefile projects/fuse2-googletest-engine/lib/clang/llvm.build.mk projects/fuse2-googletest-engine/lib/geom/eli/geli.8 projects/fuse2-googletest-engine/lib/geom/eli/geom_eli.c projects/fuse2-googletest-engine/lib/googletest/gtest_main/tests/Makefile projects/fuse2-googletest-engine/lib/libbe/be.c projects/fuse2-googletest-engine/lib/libbsnmp/libbsnmp/Makefile projects/fuse2-googletest-engine/lib/libc++/Makefile projects/fuse2-googletest-engine/lib/libc++experimental/Makefile projects/fuse2-googletest-engine/lib/libc++fs/Makefile projects/fuse2-googletest-engine/lib/libc/gen/Symbol.map projects/fuse2-googletest-engine/lib/libc/gen/elf_utils.c projects/fuse2-googletest-engine/lib/libc/include/libc_private.h projects/fuse2-googletest-engine/lib/libc/sys/interposing_table.c projects/fuse2-googletest-engine/lib/libc/tests/stdlib/Makefile projects/fuse2-googletest-engine/lib/libcam/Makefile projects/fuse2-googletest-engine/lib/libclang_rt/Makefile.inc projects/fuse2-googletest-engine/lib/libcxxrt/Makefile projects/fuse2-googletest-engine/lib/libgcc_eh/Makefile.inc projects/fuse2-googletest-engine/lib/libomp/Makefile projects/fuse2-googletest-engine/lib/libsecureboot/Makefile.libsa.inc projects/fuse2-googletest-engine/lib/libsecureboot/h/verify_file.h projects/fuse2-googletest-engine/lib/libsecureboot/libsecureboot-priv.h projects/fuse2-googletest-engine/lib/libsecureboot/verify_file.c projects/fuse2-googletest-engine/lib/libthr/Makefile projects/fuse2-googletest-engine/lib/libthr/pthread.map projects/fuse2-googletest-engine/lib/libthr/thread/thr_list.c projects/fuse2-googletest-engine/lib/libthr/thread/thr_private.h projects/fuse2-googletest-engine/lib/libvgl/main.c projects/fuse2-googletest-engine/lib/libvgl/mouse.c projects/fuse2-googletest-engine/lib/libxo/xo_config.h projects/fuse2-googletest-engine/lib/ofed/libibnetdisc/Makefile projects/fuse2-googletest-engine/libexec/rc/rc.d/random projects/fuse2-googletest-engine/libexec/rtld-elf/arm/reloc.c projects/fuse2-googletest-engine/libexec/rtld-elf/mips/reloc.c projects/fuse2-googletest-engine/libexec/rtld-elf/rtld.c projects/fuse2-googletest-engine/libexec/rtld-elf/rtld.h projects/fuse2-googletest-engine/libexec/save-entropy/save-entropy.sh projects/fuse2-googletest-engine/release/Makefile.vm projects/fuse2-googletest-engine/release/tools/ec2.conf projects/fuse2-googletest-engine/release/tools/vmimage.subr projects/fuse2-googletest-engine/sbin/bectl/bectl.8 projects/fuse2-googletest-engine/sbin/bectl/tests/bectl_test.sh projects/fuse2-googletest-engine/sbin/devd/devd.conf.5 projects/fuse2-googletest-engine/sbin/fsck_msdosfs/dir.c projects/fuse2-googletest-engine/share/man/man4/asmc.4 projects/fuse2-googletest-engine/share/mk/bsd.progs.mk projects/fuse2-googletest-engine/share/mk/bsd.sys.mk projects/fuse2-googletest-engine/share/mk/googletest.test.inc.mk projects/fuse2-googletest-engine/share/mk/src.opts.mk projects/fuse2-googletest-engine/stand/common/boot.c projects/fuse2-googletest-engine/stand/common/module.c projects/fuse2-googletest-engine/stand/loader.mk projects/fuse2-googletest-engine/sys/amd64/acpica/acpi_machdep.c projects/fuse2-googletest-engine/sys/arm/allwinner/aw_mmc.c projects/fuse2-googletest-engine/sys/arm/allwinner/clkng/aw_clk_nm.c projects/fuse2-googletest-engine/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c projects/fuse2-googletest-engine/sys/arm/ti/cpsw/if_cpsw.c projects/fuse2-googletest-engine/sys/arm64/acpica/acpi_machdep.c projects/fuse2-googletest-engine/sys/cam/ata/ata_all.c projects/fuse2-googletest-engine/sys/cam/cam.c projects/fuse2-googletest-engine/sys/cam/cam_ccb.h projects/fuse2-googletest-engine/sys/cam/cam_periph.c projects/fuse2-googletest-engine/sys/cam/mmc/mmc_da.c projects/fuse2-googletest-engine/sys/cam/nvme/nvme_all.c projects/fuse2-googletest-engine/sys/cam/nvme/nvme_all.h projects/fuse2-googletest-engine/sys/cam/nvme/nvme_da.c projects/fuse2-googletest-engine/sys/cam/nvme/nvme_xpt.c projects/fuse2-googletest-engine/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/fuse2-googletest-engine/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/fuse2-googletest-engine/sys/compat/freebsd32/freebsd32_misc.c projects/fuse2-googletest-engine/sys/compat/linuxkpi/common/include/linux/etherdevice.h projects/fuse2-googletest-engine/sys/compat/linuxkpi/common/include/linux/random.h projects/fuse2-googletest-engine/sys/conf/NOTES projects/fuse2-googletest-engine/sys/conf/files projects/fuse2-googletest-engine/sys/conf/ldscript.powerpc64 projects/fuse2-googletest-engine/sys/contrib/dev/acpica/changes.txt projects/fuse2-googletest-engine/sys/contrib/dev/acpica/common/acfileio.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/common/adisasm.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/common/adwalk.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/common/ahpredef.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/common/ahtable.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/common/dmrestag.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/common/dmtable.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/common/dmtables.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslcodegen.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/asldefine.h projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslerror.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslload.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslmessages.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslmethod.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/asloffset.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/asloperands.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslopt.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslpredef.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/asltransform.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslutils.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/aslxref.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/dtcompile.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/compiler/dttemplate.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/debugger/dbexec.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/debugger/dbnames.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/disassembler/dmnames.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/dispatcher/dsfield.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/dispatcher/dsinit.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/events/evgpeinit.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/executer/exnames.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/namespace/nsaccess.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/namespace/nsdump.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/namespace/nsinit.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/namespace/nsnames.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/namespace/nsobject.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/namespace/nsparse.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/namespace/nsrepair.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/namespace/nsrepair2.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/namespace/nsutils.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/namespace/nsxfname.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/parser/psargs.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/resources/rsxface.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/tables/tbdata.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/tables/tbfind.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/tables/tbinstal.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/tables/tbprint.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/tables/tbutils.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/tables/tbxface.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/tables/tbxfload.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/utilities/utascii.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/utilities/utdecode.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/utilities/utmisc.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/utilities/utpredef.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/components/utilities/utstring.c projects/fuse2-googletest-engine/sys/contrib/dev/acpica/include/aclocal.h projects/fuse2-googletest-engine/sys/contrib/dev/acpica/include/acpixf.h projects/fuse2-googletest-engine/sys/contrib/dev/acpica/include/actbl.h projects/fuse2-googletest-engine/sys/contrib/dev/acpica/include/actypes.h projects/fuse2-googletest-engine/sys/dev/acpica/Osd/OsdTable.c projects/fuse2-googletest-engine/sys/dev/acpica/acpi_quirk.c projects/fuse2-googletest-engine/sys/dev/cxgbe/common/t4_hw.c projects/fuse2-googletest-engine/sys/dev/cxgbe/offload.h projects/fuse2-googletest-engine/sys/dev/cxgbe/t4_main.c projects/fuse2-googletest-engine/sys/dev/cxgbe/tom/t4_cpl_io.c projects/fuse2-googletest-engine/sys/dev/cxgbe/tom/t4_ddp.c projects/fuse2-googletest-engine/sys/dev/cxgbe/tom/t4_tls.c projects/fuse2-googletest-engine/sys/dev/fdt/fdt_common.c projects/fuse2-googletest-engine/sys/dev/ioat/ioat.c projects/fuse2-googletest-engine/sys/dev/ioat/ioat_internal.h projects/fuse2-googletest-engine/sys/dev/ioat/ioat_test.c projects/fuse2-googletest-engine/sys/dev/ioat/ioat_test.h projects/fuse2-googletest-engine/sys/dev/ipmi/ipmi_opal.c projects/fuse2-googletest-engine/sys/dev/md/md.c projects/fuse2-googletest-engine/sys/dev/pci/pci.c projects/fuse2-googletest-engine/sys/dev/sdhci/sdhci.c projects/fuse2-googletest-engine/sys/dev/tpm/tpm20.c projects/fuse2-googletest-engine/sys/dev/usb/wlan/if_run.c projects/fuse2-googletest-engine/sys/dev/usb/wlan/if_uath.c projects/fuse2-googletest-engine/sys/dev/usb/wlan/if_urtw.c projects/fuse2-googletest-engine/sys/dev/usb/wlan/if_urtwvar.h projects/fuse2-googletest-engine/sys/dev/xen/blkfront/blkfront.c projects/fuse2-googletest-engine/sys/fs/msdosfs/msdosfs_denode.c projects/fuse2-googletest-engine/sys/fs/tmpfs/tmpfs.h projects/fuse2-googletest-engine/sys/fs/tmpfs/tmpfs_fifoops.c projects/fuse2-googletest-engine/sys/fs/tmpfs/tmpfs_subr.c projects/fuse2-googletest-engine/sys/fs/tmpfs/tmpfs_vfsops.c projects/fuse2-googletest-engine/sys/fs/tmpfs/tmpfs_vnops.c projects/fuse2-googletest-engine/sys/geom/eli/g_eli.c projects/fuse2-googletest-engine/sys/geom/eli/g_eli.h projects/fuse2-googletest-engine/sys/geom/eli/g_eli_ctl.c projects/fuse2-googletest-engine/sys/geom/eli/g_eli_key_cache.c projects/fuse2-googletest-engine/sys/geom/geom_dev.c projects/fuse2-googletest-engine/sys/i386/acpica/acpi_machdep.c projects/fuse2-googletest-engine/sys/kern/imgact_elf.c projects/fuse2-googletest-engine/sys/net/if_spppsubr.c projects/fuse2-googletest-engine/sys/net/if_stf.c projects/fuse2-googletest-engine/sys/netinet/in_pcb.c projects/fuse2-googletest-engine/sys/netinet/tcp_output.c projects/fuse2-googletest-engine/sys/netinet/tcp_var.h projects/fuse2-googletest-engine/sys/netinet6/in6.c projects/fuse2-googletest-engine/sys/netinet6/in6_ifattach.c projects/fuse2-googletest-engine/sys/netinet6/nd6.c projects/fuse2-googletest-engine/sys/netipsec/key.c projects/fuse2-googletest-engine/sys/netipsec/key.h projects/fuse2-googletest-engine/sys/netipsec/xform_esp.c projects/fuse2-googletest-engine/sys/netpfil/pf/pf.c projects/fuse2-googletest-engine/sys/powerpc/fpu/fpu_sqrt.c projects/fuse2-googletest-engine/sys/powerpc/include/trap.h projects/fuse2-googletest-engine/sys/powerpc/powernv/opal.h projects/fuse2-googletest-engine/sys/powerpc/powernv/opal_async.c projects/fuse2-googletest-engine/sys/powerpc/powernv/opal_dev.c projects/fuse2-googletest-engine/sys/powerpc/powerpc/exec_machdep.c projects/fuse2-googletest-engine/sys/powerpc/powerpc/trap.c projects/fuse2-googletest-engine/sys/riscv/riscv/plic.c projects/fuse2-googletest-engine/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c projects/fuse2-googletest-engine/sys/sys/ata.h projects/fuse2-googletest-engine/sys/vm/vm_kern.c projects/fuse2-googletest-engine/sys/vm/vm_map.c projects/fuse2-googletest-engine/sys/vm/vm_map.h projects/fuse2-googletest-engine/sys/x86/iommu/busdma_dmar.c projects/fuse2-googletest-engine/tests/sys/audit/Makefile projects/fuse2-googletest-engine/tests/sys/audit/process-control.c projects/fuse2-googletest-engine/tests/sys/capsicum/Makefile projects/fuse2-googletest-engine/tests/sys/capsicum/ioctls_test.c projects/fuse2-googletest-engine/tests/sys/geom/class/eli/Makefile projects/fuse2-googletest-engine/tests/sys/geom/class/eli/configure_test.sh projects/fuse2-googletest-engine/tools/build/Makefile projects/fuse2-googletest-engine/tools/tools/ioat/ioatcontrol.8 projects/fuse2-googletest-engine/tools/tools/ioat/ioatcontrol.c projects/fuse2-googletest-engine/usr.bin/dtc/Makefile projects/fuse2-googletest-engine/usr.bin/rctl/rctl.c projects/fuse2-googletest-engine/usr.bin/strings/Makefile projects/fuse2-googletest-engine/usr.bin/systat/devs.c projects/fuse2-googletest-engine/usr.bin/systat/devs.h projects/fuse2-googletest-engine/usr.bin/systat/iostat.c projects/fuse2-googletest-engine/usr.bin/systat/swap.c projects/fuse2-googletest-engine/usr.bin/systat/systat.h projects/fuse2-googletest-engine/usr.bin/systat/vmstat.c projects/fuse2-googletest-engine/usr.bin/systat/zarc.c projects/fuse2-googletest-engine/usr.bin/top/display.c projects/fuse2-googletest-engine/usr.bin/xohtml/xohtml.sh projects/fuse2-googletest-engine/usr.sbin/acpi/acpidump/acpi.c projects/fuse2-googletest-engine/usr.sbin/bsnmpd/bsnmpd/Makefile projects/fuse2-googletest-engine/usr.sbin/bsnmpd/bsnmpd/snmpd.config projects/fuse2-googletest-engine/usr.sbin/iostat/iostat.c projects/fuse2-googletest-engine/usr.sbin/pmc/Makefile Directory Properties: projects/fuse2-googletest-engine/ (props changed) projects/fuse2-googletest-engine/contrib/elftoolchain/ (props changed) projects/fuse2-googletest-engine/contrib/libxo/ (props changed) projects/fuse2-googletest-engine/contrib/llvm/ (props changed) projects/fuse2-googletest-engine/contrib/llvm/tools/clang/ (props changed) projects/fuse2-googletest-engine/gnu/usr.bin/gdb/ (props changed) projects/fuse2-googletest-engine/sys/cddl/contrib/opensolaris/ (props changed) projects/fuse2-googletest-engine/sys/contrib/dev/acpica/ (props changed) Modified: projects/fuse2-googletest-engine/contrib/bsnmp/gensnmptree/gensnmptree.1 ============================================================================== --- projects/fuse2-googletest-engine/contrib/bsnmp/gensnmptree/gensnmptree.1 Thu Apr 4 18:26:32 2019 (r345885) +++ projects/fuse2-googletest-engine/contrib/bsnmp/gensnmptree/gensnmptree.1 Thu Apr 4 18:37:30 2019 (r345886) @@ -31,7 +31,7 @@ .\" .\" $Begemot: gensnmptree.1 383 2006-05-30 07:40:49Z brandt_h $ .\" -.Dd June 29, 2018 +.Dd April 2, 2019 .Dt GENSNMPTREE 1 .Os .Sh NAME @@ -100,25 +100,11 @@ is the length of the OID. is the last component of the OID. .El .It Fl F -Together with -.Fl E -causes -.Nm -instead of the generation of enum definitions the generation of -functions for checking a value to be one of the enumeration variants and -for conversion between strings and the enum. The file is sent to standard -output and is meant to be included into a C-file for compilation. +emit definitions for C-functions includeable in a C-file that do some basic +stuff on enums like value checking and conversion between value and strings. .It Fl f -This flag can be used together with -.Fl E -or when generating the tree files. It causes -.Nm -to emit static inline functions for checking a value to be one of the -enumeration values and for conversion between strings and the enum. -If used when generating the tree files, the preprocessor symbol -.Ar SNMPTREE_TYPES -must be defined when including the tree header file for these definitions -to become visible. +emit definitions for inline C-functions that do some basic +stuff on enums like value checking and conversion between value and strings. .It Fl h Print a short help page. .It Fl I Ar directory @@ -136,36 +122,6 @@ Instead of normal output print the resulting tree. Prefix the file names and the table name with .Ar prefix . .El -.Pp -The following functions are generated by -.Fl f -or -.Fl F : -.Pp -.Ft static inline int -.Fn isok_EnumName "enum EnumName" ; -.Pp -.Ft static inline const char * -.Fn tostr_EnumName "enum EnumName" ; -.Pp -.Ft static inline int -.Fn fromstr_EnumName "const char *" "enum EnumName *" ; -.Pp -The -.Fa EnumName -is replaced with the enumeration name. -.Fn isok_EnumName -returns 1 if the argument is one of the valid enum values and 0 otherwise. -.Fn tostr_EnumName -returns a string representation of the enumeration value. -If the values is not one of the legal values -.Ar EnumName??? -is returned. -.Fn fromstr_EnumName -returns 1 if the string represents one of the legal enumeration values and -0 otherwise. -If 1 is return the variable pointed to by the second argument is set to -the enumeration value. .Sh MIBS The syntax of the MIB description file can formally be specified as follows: .Bd -unfilled -offset indent Modified: projects/fuse2-googletest-engine/contrib/bsnmp/gensnmptree/gensnmptree.c ============================================================================== --- projects/fuse2-googletest-engine/contrib/bsnmp/gensnmptree/gensnmptree.c Thu Apr 4 18:26:32 2019 (r345885) +++ projects/fuse2-googletest-engine/contrib/bsnmp/gensnmptree/gensnmptree.c Thu Apr 4 18:37:30 2019 (r345886) @@ -110,7 +110,6 @@ static int debug; static const char usgtxt[] = "\ Generate SNMP tables.\n\ -$Id$\n\ usage: gensnmptree [-dEeFfhlt] [-I directory] [-i infile] [-p prefix]\n\ [name]...\n\ options:\n\ @@ -127,6 +126,37 @@ options:\n\ -t generate a .def file\n\ "; +/** + * Program operation. + */ +enum op { + /** generate the tree */ + OP_GEN, + + /** extract OIDs */ + OP_EXTRACT, + + /** print the parsed tree */ + OP_TREE, + + /** extract enums */ + OP_ENUMS, +}; + +/** + * Which functions to create. + */ +enum gen_funcs { + /** none */ + GEN_FUNCS_NONE, + + /** functions for header files */ + GEN_FUNCS_H, + + /** functions for C files */ + GEN_FUNCS_C, +}; + /* * A node in the OID tree */ @@ -162,15 +192,18 @@ struct node { uint32_t index; /* index for table entry */ char *func; /* function for tables */ struct node_list subs; + char *subtypes[SNMP_INDEXES_MAX]; } entry; struct leaf { enum snmp_syntax syntax; /* syntax for this leaf */ char *func; /* function name */ + char *subtype; /* subtype */ } leaf; struct column { enum snmp_syntax syntax; /* syntax for this column */ + char *subtype; /* subtype */ } column; } u; }; @@ -214,7 +247,7 @@ xalloc(size_t size) { void *ptr; - if ((ptr = malloc(size)) == NULL) + if ((ptr = calloc(1, size)) == NULL) err(1, "allocing %zu bytes", size); return (ptr); @@ -710,12 +743,14 @@ make_type(const char *s) * token. */ static u_int -parse_type(enum tok *tok, struct type *t, const char *vname) +parse_type(enum tok *tok, struct type *t, const char *vname, char **subtype) { u_int syntax; struct enums *e; syntax = val; + if (subtype != NULL) + *subtype = NULL; if (*tok == TOK_ENUM || *tok == TOK_BITS) { if (t == NULL && vname != NULL) { @@ -759,6 +794,8 @@ parse_type(enum tok *tok, struct type *t, const char * if ((*tok = gettoken()) == '|') { if (gettoken() != TOK_STR) report("subtype expected after '|'"); + if (subtype != NULL) + *subtype = savetok(); *tok = gettoken(); } } @@ -794,18 +831,21 @@ parse(enum tok tok) if ((tok = gettoken()) == TOK_TYPE || tok == TOK_DEFTYPE || tok == TOK_ENUM || tok == TOK_BITS) { /* LEAF or COLUM */ - u_int syntax = parse_type(&tok, NULL, node->name); + char *subtype; + u_int syntax = parse_type(&tok, NULL, node->name, &subtype); if (tok == TOK_STR) { /* LEAF */ node->type = NODE_LEAF; node->u.leaf.func = savetok(); node->u.leaf.syntax = syntax; + node->u.leaf.subtype = subtype; tok = gettoken(); } else { /* COLUMN */ node->type = NODE_COLUMN; node->u.column.syntax = syntax; + node->u.column.subtype = subtype; } while (tok != ')') { @@ -825,9 +865,12 @@ parse(enum tok tok) tok = gettoken(); while (tok == TOK_TYPE || tok == TOK_DEFTYPE || tok == TOK_ENUM || tok == TOK_BITS) { - u_int syntax = parse_type(&tok, NULL, node->name); - if (index_count++ == SNMP_INDEXES_MAX) + char *subtype; + u_int syntax = parse_type(&tok, NULL, node->name, + &subtype); + if (index_count == SNMP_INDEXES_MAX) report("too many table indexes"); + node->u.entry.subtypes[index_count++] = subtype; node->u.entry.index |= syntax << (SNMP_INDEX_SHIFT * index_count); } @@ -882,7 +925,8 @@ parse_top(enum tok tok) tok = gettoken(); t->is_enum = (tok == TOK_ENUM); t->is_bits = (tok == TOK_BITS); - t->syntax = parse_type(&tok, t, NULL); + + t->syntax = parse_type(&tok, t, NULL, NULL); pushback(tok); return (NULL); @@ -903,7 +947,7 @@ parse_top(enum tok tok) * Generate the C-code table part for one node. */ static void -gen_node(FILE *fp, struct node *np, struct asn_oid *oid, u_int idx, +gen_node(FILE *fp, const struct node *np, struct asn_oid *oid, u_int idx, const char *func) { u_int n; @@ -1008,7 +1052,7 @@ gen_node(FILE *fp, struct node *np, struct asn_oid *oi * Generate the header file with the function declarations. */ static void -gen_header(FILE *fp, struct node *np, u_int oidlen, const char *func) +gen_header(FILE *fp, const struct node *np, u_int oidlen, const char *func) { char f[MAXSTR + 4]; struct node *sub; @@ -1058,7 +1102,7 @@ gen_header(FILE *fp, struct node *np, u_int oidlen, co * Generate the OID table. */ static void -gen_table(FILE *fp, struct node *node) +gen_table(FILE *fp, const struct node *node) { struct asn_oid oid; @@ -1067,7 +1111,6 @@ gen_table(FILE *fp, struct node *node) #ifdef HAVE_STDINT_H fprintf(fp, "#include \n"); #endif - fprintf(fp, "#include \n"); if (localincs) { fprintf(fp, "#include \"asn1.h\"\n"); fprintf(fp, "#include \"snmp.h\"\n"); @@ -1118,6 +1161,8 @@ gen_tree(const struct node *np, int level) case NODE_LEAF: print_syntax(np->u.leaf.syntax); + if (np->u.leaf.subtype != NULL) + printf(" | %s", np->u.leaf.subtype); printf(" %s%s%s)\n", np->u.leaf.func, (np->flags & FL_GET) ? " GET" : "", (np->flags & FL_SET) ? " SET" : ""); @@ -1137,8 +1182,11 @@ gen_tree(const struct node *np, int level) case NODE_ENTRY: printf(" :"); - for (i = 0; i < SNMP_INDEX_COUNT(np->u.entry.index); i++) + for (i = 0; i < SNMP_INDEX_COUNT(np->u.entry.index); i++) { print_syntax(SNMP_INDEX(np->u.entry.index, i)); + if (np->u.entry.subtypes[i] != NULL) + printf(" | %s", np->u.entry.subtypes[i]); + } printf(" %s\n", np->u.entry.func); TAILQ_FOREACH(sp, &np->u.entry.subs, link) gen_tree(sp, level + 1); @@ -1147,6 +1195,8 @@ gen_tree(const struct node *np, int level) case NODE_COLUMN: print_syntax(np->u.column.syntax); + if (np->u.column.subtype != NULL) + printf(" | %s", np->u.column.subtype); printf("%s%s)\n", (np->flags & FL_GET) ? " GET" : "", (np->flags & FL_SET) ? " SET" : ""); break; @@ -1194,15 +1244,6 @@ extract(FILE *fp, const struct node *np, struct asn_oi return (1); } -/** - * Extract the named OID. - * - * \param fp file to extract to - * \param root root of the tree - * \param object name of the object to extract - * - * \return 0 on success, -1 if the object was not found - */ static int gen_extract(FILE *fp, const struct node *root, char *object) { @@ -1391,45 +1432,6 @@ unminus(FILE *fp, const char *s) } /** - * Generate a definition for the enum packed into a guard against multiple - * definitions. - * - * \param fp file to write definition to - * \param t type - */ -static void -gen_enum(FILE *fp, const struct type *t) -{ - const struct enums *e; - long min = LONG_MAX; - - fprintf(fp, "\n"); - fprintf(fp, "#ifndef %s_defined__\n", t->name); - fprintf(fp, "#define %s_defined__\n", t->name); - fprintf(fp, "/*\n"); - fprintf(fp, " * From %s:%u\n", t->from_fname, t->from_lno); - fprintf(fp, " */\n"); - fprintf(fp, "enum %s {\n", t->name); - TAILQ_FOREACH(e, &t->enums, link) { - fprintf(fp, "\t%s_", t->name); - unminus(fp, e->name); - fprintf(fp, " = %ld,\n", e->value); - if (e->value < min) - min = e->value; - } - fprintf(fp, "};\n"); - fprintf(fp, "#define STROFF_%s %ld\n", t->name, min); - fprintf(fp, "#define STRING_%s \\\n", t->name); - TAILQ_FOREACH(e, &t->enums, link) { - fprintf(fp, "\t[%ld] = \"%s_", e->value - min, t->name); - unminus(fp, e->name); - fprintf(fp, "\",\\\n"); - } - fprintf(fp, "\n"); - fprintf(fp, "#endif /* %s_defined__ */\n", t->name); -} - -/** * Generate helper functions for an enum. * * We always generate a switch statement for the isok function. The compiler @@ -1494,6 +1496,54 @@ gen_enum_funcs(FILE *fp, const struct type *t, int cco } /** + * Generate a definition for the enum packed into a guard against multiple + * definitions. + * + * \param fp file to write definition to + * \param t type + * \param dof generate functions too + */ +static void +gen_enum(FILE *fp, const struct type *t, int dof) +{ + const struct enums *e; + long min = LONG_MAX; + + fprintf(fp, "\n"); + fprintf(fp, "#ifndef %s_defined__\n", t->name); + fprintf(fp, "#define %s_defined__\n", t->name); + fprintf(fp, "/*\n"); + fprintf(fp, " * From %s:%u\n", t->from_fname, t->from_lno); + fprintf(fp, " */\n"); + fprintf(fp, "enum %s {\n", t->name); + TAILQ_FOREACH(e, &t->enums, link) { + fprintf(fp, "\t%s_", t->name); + unminus(fp, e->name); + fprintf(fp, " = %ld,\n", e->value); + if (e->value < min) + min = e->value; + } + fprintf(fp, "};\n"); + fprintf(fp, "#define STROFF_%s %ld\n", t->name, min); + fprintf(fp, "#define STRING_%s \\\n", t->name); + TAILQ_FOREACH(e, &t->enums, link) { + fprintf(fp, "\t[%ld] = \"%s_", e->value - min, t->name); + unminus(fp, e->name); + fprintf(fp, "\",\\\n"); + } + fprintf(fp, "\n"); + if (dof) { + fprintf(fp, "#ifdef SNMPENUM_FUNCS\n"); + fprintf(fp, "\n"); + gen_enum_funcs(fp, t, 0); + fprintf(fp, "\n"); + fprintf(fp, "#endif\n"); + fprintf(fp, "\n"); + } + fprintf(fp, "#endif /* %s_defined__ */\n", t->name); +} + +/** * Generate helper functions for an enum. This generates code for a c file. * * \param fp file to write to @@ -1529,6 +1579,16 @@ gen_all_enum_funcs(FILE *fp, int ccode) gen_enum_funcs(fp, t, ccode); } +static void +gen_enums(FILE *fp, int dof) +{ + const struct type *t; + + LIST_FOREACH(t, &types, link) + if (t->is_enum || t->is_bits) + gen_enum(fp, t, dof); +} + /** * Extract a given enum to the specified file and optionally generate static * inline helper functions for them. @@ -1546,9 +1606,7 @@ extract_enum(FILE *fp, const char *name, int gen_funcs LIST_FOREACH(t, &types, link) if ((t->is_enum || t->is_bits) && strcmp(t->name, name) == 0) { - gen_enum(fp, t); - if (gen_funcs) - gen_enum_funcs(fp, t, 0); + gen_enum(fp, t, gen_funcs); return (0); } return (-1); @@ -1567,11 +1625,8 @@ extract_all_enums(FILE *fp, int gen_funcs) const struct type *t; LIST_FOREACH(t, &types, link) - if (t->is_enum || t->is_bits) { - gen_enum(fp, t); - if (gen_funcs) - gen_enum_funcs(fp, t, 0); - } + if (t->is_enum || t->is_bits) + gen_enum(fp, t, gen_funcs); } /** @@ -1579,13 +1634,12 @@ extract_all_enums(FILE *fp, int gen_funcs) * * \param argc number of arguments * \param argv arguments (enum names) - * \param gen_funcs_h generate functions into the header file - * \param gen_funcs_c generate a .c file with functions + * \param gen_funcs which functions to generate */ static void -make_enums(int argc, char *argv[], int gen_funcs_h, int gen_funcs_c) +make_enums(int argc, char *argv[], enum gen_funcs gen_funcs) { - if (gen_funcs_c) { + if (gen_funcs == GEN_FUNCS_C) { if (argc == 0) gen_all_enum_funcs(stdout, 1); else { @@ -1595,30 +1649,58 @@ make_enums(int argc, char *argv[], int gen_funcs_h, in } } else { if (argc == 0) - extract_all_enums(stdout, gen_funcs_h); + extract_all_enums(stdout, gen_funcs == GEN_FUNCS_H); else { for (int i = 0; i < argc; i++) - if (extract_enum(stdout, argv[i], gen_funcs_h)) + if (extract_enum(stdout, argv[i], + gen_funcs == GEN_FUNCS_H)) errx(1, "enum not found: %s", argv[i]); } } } +/** + * Produce the operation tables for the daemon or a module. + * + * \param root tree root + * \param gen_funcs generate enum funcs + */ +static void +make_table(const struct node *root, int gen_funcs) +{ + FILE *fp; + + char fname[MAXPATHLEN + 1]; + sprintf(fname, "%stree.h", file_prefix); + if ((fp = fopen(fname, "w")) == NULL) + err(1, "%s: ", fname); + gen_header(fp, root, PREFIX_LEN, NULL); + + fprintf(fp, "\n#ifdef SNMPTREE_TYPES\n"); + gen_enums(fp, gen_funcs); + fprintf(fp, "\n#endif /* SNMPTREE_TYPES */\n\n"); + + fprintf(fp, "#define %sCTREE_SIZE %u\n", file_prefix, tree_size); + fprintf(fp, "extern const struct snmp_node %sctree[];\n", file_prefix); + + fclose(fp); + + sprintf(fname, "%stree.c", file_prefix); + if ((fp = fopen(fname, "w")) == NULL) + err(1, "%s: ", fname); + gen_table(fp, root); + fclose(fp); +} + int main(int argc, char *argv[]) { - int do_extract = 0; - int do_tree = 0; - int do_enums = 0; - int gen_funcs_h = 0; - int gen_funcs_c = 0; - int opt; - struct node *root; - char fname[MAXPATHLEN + 1]; - int tok; - FILE *fp; + enum op op = OP_GEN; + enum gen_funcs gen_funcs = GEN_FUNCS_NONE; + char *infile = NULL; + int opt; while ((opt = getopt(argc, argv, "dEeFfhI:i:lp:t")) != EOF) switch (opt) { @@ -1627,19 +1709,29 @@ main(int argc, char *argv[]) break; case 'E': - do_enums = 1; + if (op != OP_GEN && op != OP_ENUMS) + errx(1, "-E conflicts with earlier options"); + op = OP_ENUMS; break; case 'e': - do_extract = 1; + if (op != OP_GEN && op != OP_EXTRACT) + errx(1, "-e conflicts with earlier options"); + op = OP_EXTRACT; break; case 'F': - gen_funcs_c = 1; + if (gen_funcs != GEN_FUNCS_NONE && + gen_funcs != GEN_FUNCS_C) + errx(1, "-F conflicts with -f"); + gen_funcs = GEN_FUNCS_C; break; case 'f': - gen_funcs_h = 1; + if (gen_funcs != GEN_FUNCS_NONE && + gen_funcs != GEN_FUNCS_H) + errx(1, "-f conflicts with -F"); + gen_funcs = GEN_FUNCS_H; break; case 'h': @@ -1666,75 +1758,61 @@ main(int argc, char *argv[]) break; case 't': - do_tree = 1; + if (op != OP_GEN && op != OP_TREE) + errx(1, "-t conflicts with earlier options"); + op = OP_TREE; break; } - if (do_extract + do_tree + do_enums > 1) - errx(1, "conflicting options -e/-t/-E"); - if (!do_extract && !do_enums && argc != optind) - errx(1, "no arguments allowed"); - if (do_extract && argc == optind) - errx(1, "no objects specified"); + argc -= optind; + argv += optind; - if ((gen_funcs_h || gen_funcs_c) && (do_extract || do_tree)) - errx(1, "-f and -F not allowed with -e or -t"); - if (gen_funcs_c && !do_enums) - errx(1, "-F requires -E"); - if (gen_funcs_h && gen_funcs_c) - errx(1, "-f and -F are mutually exclusive"); - + /* open input */ if (infile == NULL) { input_new(stdin, NULL, ""); } else { + FILE *fp; if ((fp = fopen(infile, "r")) == NULL) err(1, "%s", infile); input_new(fp, NULL, infile); } - root = parse_top(gettoken()); + /* parse and check input */ + struct node *root = parse_top(gettoken()); + + int tok; while ((tok = gettoken()) != TOK_EOF) merge(&root, parse_top(tok)); if (root) check_tree(root); - if (do_extract) { - while (optind < argc) { - if (gen_extract(stdout, root, argv[optind])) - errx(1, "object not found: %s", argv[optind]); - optind++; - } + /* do what the user has requested */ + switch (op) { + + case OP_EXTRACT: + if (argc == 0) + errx(1, "-e requires arguments"); + + for (int i = 0; i < argc; i++) + if (gen_extract(stdout, root, argv[i])) + errx(1, "object not found: %s", argv[i]); return (0); - } - if (do_enums) { - make_enums(argc - optind, argv + optind, - gen_funcs_h, gen_funcs_c); + + case OP_ENUMS: + make_enums(argc, argv, gen_funcs); return (0); - } - if (do_tree) { + + case OP_TREE: + if (argc != 0) + errx(1, "-t allows no arguments"); gen_tree(root, 0); return (0); - } - sprintf(fname, "%stree.h", file_prefix); - if ((fp = fopen(fname, "w")) == NULL) - err(1, "%s: ", fname); - gen_header(fp, root, PREFIX_LEN, NULL); - fprintf(fp, "\n#ifdef SNMPTREE_TYPES\n"); - extract_all_enums(fp, gen_funcs_h); - fprintf(fp, "\n#endif /* SNMPTREE_TYPES */\n\n"); - - fprintf(fp, "#define %sCTREE_SIZE %u\n", file_prefix, tree_size); - fprintf(fp, "extern const struct snmp_node %sctree[];\n", file_prefix); - - fclose(fp); - - sprintf(fname, "%stree.c", file_prefix); - if ((fp = fopen(fname, "w")) == NULL) - err(1, "%s: ", fname); - gen_table(fp, root); - fclose(fp); - - return (0); + case OP_GEN: + if (argc != 0) + errx(1, "tree generation allows no arguments"); + make_table(root, gen_funcs == GEN_FUNCS_H); + return (0); + } } Modified: projects/fuse2-googletest-engine/contrib/bsnmp/lib/snmpclient.c ============================================================================== --- projects/fuse2-googletest-engine/contrib/bsnmp/lib/snmpclient.c Thu Apr 4 18:26:32 2019 (r345885) +++ projects/fuse2-googletest-engine/contrib/bsnmp/lib/snmpclient.c Thu Apr 4 18:37:30 2019 (r345886) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2005 + * Copyright (c) 2004-2005,2018 * Hartmut Brandt. * All rights reserved. * Copyright (c) 2001-2003 @@ -34,11 +34,13 @@ * * Support functions for SNMP clients. */ -#include +#include #include #include #include #include +#include +#include #include #include #include @@ -58,12 +60,16 @@ #include #endif +#include + #include "support.h" #include "asn1.h" #include "snmp.h" #include "snmpclient.h" #include "snmppriv.h" +#define DEBUG_PARSE 0 + /* global context */ struct snmp_client snmp_client; @@ -924,7 +930,8 @@ open_client_udp(const char *host, const char *port) /* open connection */ memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_CANONNAME; - hints.ai_family = AF_INET; + hints.ai_family = snmp_client.trans == SNMP_TRANS_UDP ? AF_INET: + AF_INET6; hints.ai_socktype = SOCK_DGRAM; hints.ai_protocol = 0; error = getaddrinfo(snmp_client.chost, snmp_client.cport, &hints, &res0); @@ -1068,6 +1075,7 @@ snmp_open(const char *host, const char *port, const ch switch (snmp_client.trans) { case SNMP_TRANS_UDP: + case SNMP_TRANS_UDP6: if (open_client_udp(host, port) != 0) return (-1); break; @@ -1866,99 +1874,412 @@ snmp_client_set_port(struct snmp_client *cl, const cha return (0); } -/* - * parse a server specification +static const char *const trans_list[] = { + [SNMP_TRANS_UDP] = "udp::", + [SNMP_TRANS_LOC_DGRAM] = "dgram::", + [SNMP_TRANS_LOC_STREAM] = "stream::", + [SNMP_TRANS_UDP6] = "udp6::", +}; + +/** + * Try to get a transport identifier which is a leading alphanumeric string + * terminated by a double colon. The string may not be empty. The transport + * identifier is optional. * - * [trans::][community@][server][:port] + * \param sc client struct to set errors + * \param strp possible start of transport; updated to point to + * the next character to parse + * + * \return transport identifier */ -int -snmp_parse_server(struct snmp_client *sc, const char *str) +static inline int +get_transp(struct snmp_client *sc, const char **strp) { - const char *p, *s = str; + const char *p; + size_t i; - /* look for a double colon */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; + for (i = 0; i < nitems(trans_list); i++) { + if (trans_list[i] == NULL || *trans_list[i] == '\0') continue; + p = strstr(*strp, trans_list[i]); + if (p == *strp) { + *strp += strlen(trans_list[i]); + return ((int)i); } - if (*p == ':' && p[1] == ':') - break; } - if (*p != '\0') { - if (p > s) { - if (p - s == 3 && strncmp(s, "udp", 3) == 0) - sc->trans = SNMP_TRANS_UDP; - else if (p - s == 6 && strncmp(s, "stream", 6) == 0) - sc->trans = SNMP_TRANS_LOC_STREAM; - else if (p - s == 5 && strncmp(s, "dgram", 5) == 0) - sc->trans = SNMP_TRANS_LOC_DGRAM; - else { - seterr(sc, "unknown SNMP transport '%.*s'", - (int)(p - s), s); - return (-1); - } - } - s = p + 2; + + p = *strp; + if (p[0] == ':' && p[1] == ':') { + seterr(sc, "empty transport specifier"); + return (-1); } + /* by default assume UDP */ + return (SNMP_TRANS_UDP); +} - /* look for a @ */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; - continue; - } - if (*p == '@') - break; +/** + * Try to get community string. Eat everything up to the last @ (if there is + * any) but only if it is not longer than SNMP_COMMUNITY_MAXLEN. Empty + * community strings are legal. + * + * \param sc client struct to set errors + * \param strp possible start of community; updated to the point to + * the next character to parse + * + * \return end of community; equals *strp if there is none; NULL if there + * was an error + */ +static inline const char * +get_comm(struct snmp_client *sc, const char **strp) +{ + const char *p = strrchr(*strp, '@'); + + if (p == NULL) + /* no community string */ + return (*strp); + + if (p - *strp > SNMP_COMMUNITY_MAXLEN) { + seterr(sc, "community string too long '%.*s'", + p - *strp, *strp); + return (NULL); } - if (*p != '\0') { - if (p - s > SNMP_COMMUNITY_MAXLEN) { - seterr(sc, "community string too long"); - return (-1); + *strp = p + 1; + return (p); +} + +/** + * Try to get an IPv6 address. This starts with an [ and should end with an ] + * and everything between should be not longer than INET6_ADDRSTRLEN and + * parseable by inet_pton(). + * + * \param sc client struct to set errors + * \param strp possible start of IPv6 address (the '['); updated to point to + * the next character to parse (the one after the closing ']') + * + * \return end of address (equals *strp + 1 if there is none) or NULL + * on errors + */ +static inline const char * +get_ipv6(struct snmp_client *sc, const char **strp) +{ + char str[INET6_ADDRSTRLEN + IF_NAMESIZE]; + struct addrinfo hints, *res; + int error; + + if (**strp != '[') + return (*strp + 1); + + const char *p = *strp + 1; + while (*p != ']' ) { + if (*p == '\0') { + seterr(sc, "unterminated IPv6 address '%.*s'", + p - *strp, *strp); + return (NULL); } - strncpy(sc->read_community, s, p - s); - sc->read_community[p - s] = '\0'; - strncpy(sc->write_community, s, p - s); - sc->write_community[p - s] = '\0'; - s = p + 1; + p++; } - /* look for a colon */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; - continue; - } - if (*p == ':') - break; + if (p - *strp > INET6_ADDRSTRLEN + IF_NAMESIZE) { + seterr(sc, "IPv6 address too long '%.*s'", p - *strp, *strp); + return (NULL); } - if (*p == ':') { - if (p > s) { - /* host:port */ - free(sc->chost); - if ((sc->chost = malloc(p - s + 1)) == NULL) { - seterr(sc, "%s", strerror(errno)); - return (-1); - } - strncpy(sc->chost, s, p - s); - sc->chost[p - s] = '\0'; - } - /* port */ - free(sc->cport); - if ((sc->cport = strdup(p + 1)) == NULL) { - seterr(sc, "%s", strerror(errno)); - return (-1); - } + strncpy(str, *strp + 1, p - (*strp + 1)); + str[p - (*strp + 1)] = '\0'; - } else if (p > s) { - /* host */ - free(sc->chost); - if ((sc->chost = strdup(s)) == NULL) { - seterr(sc, "%s", strerror(errno)); + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_CANONNAME | AI_NUMERICHOST; + hints.ai_family = AF_INET6; + hints.ai_socktype = SOCK_DGRAM; + hints.ai_protocol = IPPROTO_UDP; + error = getaddrinfo(str, NULL, &hints, &res); + if (error != 0) { + seterr(sc, "%s: %s", str, gai_strerror(error)); + return (NULL); + } + freeaddrinfo(res); + *strp = p + 1; + return (p); +} + +/** + * Try to get an IPv4 address. This starts with a digit and consists of digits + * and dots, is not longer INET_ADDRSTRLEN and must be parseable by + * inet_aton(). + * + * \param sc client struct to set errors + * \param strp possible start of IPv4 address; updated to point to the + * next character to parse + * + * \return end of address (equals *strp if there is none) or NULL + * on errors + */ +static inline const char * +get_ipv4(struct snmp_client *sc, const char **strp) +{ + const char *p = *strp; + + while (isascii(*p) && (isdigit(*p) || *p == '.')) + p++; + + if (p - *strp > INET_ADDRSTRLEN) { + seterr(sc, "IPv4 address too long '%.*s'", p - *strp, *strp); + return (NULL); + } + if (*strp == p) + return *strp; + + char str[INET_ADDRSTRLEN + 1]; + strncpy(str, *strp, p - *strp); + str[p - *strp] = '\0'; + + struct in_addr addr; + if (inet_aton(str, &addr) != 1) { + seterr(sc, "illegal IPv4 address '%s'", str); + return (NULL); + } + + *strp = p; + return (p); +} + +/** + * Try to get a hostname. This includes everything up to but not including + * the last colon (if any). There is no length restriction. + * + * \param sc client struct to set errors + * \param strp possible start of hostname; updated to point to the next + * character to parse (the trailing NUL character or the last + * colon) + * *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:07 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 24BD1DC265 for ; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yy2qC3z4P7f; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 3CA971A03F; Tue, 3 Sep 2019 14:05:56 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id D8202157FB; Mon, 1 Apr 2019 21:28:13 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2A9988ACE6; Mon, 1 Apr 2019 21:28:13 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 11C7915795; Mon, 1 Apr 2019 21:28:13 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 9BCDE15791 for ; Mon, 1 Apr 2019 21:28:10 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5768E8ACE0; Mon, 1 Apr 2019 21:28:10 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 340B91C49C; Mon, 1 Apr 2019 21:28:10 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31LSA7v071560; Mon, 1 Apr 2019 21:28:10 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31LS4bS071533; Mon, 1 Apr 2019 21:28:04 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904012128.x31LS4bS071533@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345785 - in projects/kyua-use-googletest-test-interface: contrib/bsnmp/snmpd contrib/capsicum-test contrib/googletest/googletest contrib/googletest/googletest/docs contrib/googletest/g... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/kyua-use-googletest-test-interface: contrib/bsnmp/snmpd contrib/capsicum-test contrib/googletest/googletest contrib/googletest/googletest/docs contrib/googletest/googletest/src contrib/goo... X-SVN-Commit-Revision: 345785 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2A9988ACE6 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.966,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:07 -0000 X-Original-Date: Mon, 1 Apr 2019 21:28:04 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:07 -0000 Author: ngie Date: Mon Apr 1 21:28:04 2019 New Revision: 345785 URL: https://svnweb.freebsd.org/changeset/base/345785 Log: MFhead@r345784 Added: projects/kyua-use-googletest-test-interface/contrib/capsicum-test/ - copied from r345784, head/contrib/capsicum-test/ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc - copied unchanged from r345784, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc Modified: projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trap.c projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/CMakeLists.txt projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/Makefile.am projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/docs/advanced.md projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/src/gtest.cc projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/BUILD.bazel projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/gdb/Makefile projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/kgdb/Makefile projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile projects/kyua-use-googletest-test-interface/lib/libbe/be.c projects/kyua-use-googletest-test-interface/sbin/bectl/tests/bectl_test.sh projects/kyua-use-googletest-test-interface/sys/arm/allwinner/aw_mmc.c projects/kyua-use-googletest-test-interface/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c projects/kyua-use-googletest-test-interface/sys/cam/cam_ccb.h projects/kyua-use-googletest-test-interface/sys/cam/mmc/mmc_da.c projects/kyua-use-googletest-test-interface/sys/dev/md/md.c projects/kyua-use-googletest-test-interface/sys/dev/pci/pci.c projects/kyua-use-googletest-test-interface/sys/dev/sdhci/sdhci.c projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_run.c projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_uath.c projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_urtw.c projects/kyua-use-googletest-test-interface/tests/sys/audit/Makefile projects/kyua-use-googletest-test-interface/tests/sys/audit/process-control.c projects/kyua-use-googletest-test-interface/tests/sys/capsicum/Makefile Directory Properties: projects/kyua-use-googletest-test-interface/ (props changed) projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/ (props changed) Modified: projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trap.c ============================================================================== --- projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trap.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trap.c Mon Apr 1 21:28:04 2019 (r345785) @@ -726,8 +726,7 @@ target_activate_address(struct target_address *addrs) sa.sin_addr.s_addr = htonl((addrs->address[0] << 24) | (addrs->address[1] << 16) | (addrs->address[2] << 8) | (addrs->address[3] << 0)); - sa.sin_port = htons(addrs->address[4]) << 8 | - htons(addrs->address[5]) << 0; + sa.sin_port = htons(addrs->address[4] << 8 | addrs->address[5]); if (connect(addrs->socket, (struct sockaddr *)&sa, sa.sin_len) == -1) { syslog(LOG_ERR, "connect(%s,%u): %m", Modified: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/CMakeLists.txt ============================================================================== --- projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/CMakeLists.txt Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/CMakeLists.txt Mon Apr 1 21:28:04 2019 (r345785) @@ -217,6 +217,7 @@ if (gtest_build_tests) test/gtest-typed-test2_test.cc) cxx_test(gtest_unittest gtest_main) cxx_test(gtest-unittest-api_test gtest) + cxx_test(gtest_skip_in_environment_setup_test gtest_main) cxx_test(gtest_skip_test gtest_main) ############################################################ Modified: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/Makefile.am ============================================================================== --- projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/Makefile.am Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/Makefile.am Mon Apr 1 21:28:04 2019 (r345785) @@ -290,6 +290,12 @@ test_gtest_all_test_SOURCES = test/gtest_all_test.cc test_gtest_all_test_LDADD = lib/libgtest_main.la \ lib/libgtest.la +TESTS += test/gtest_skip_in_environment_setup_test +check_PROGRAMS += test/gtest_skip_in_environment_setup_test +test_gtest_skip_in_environment_setup_test_SOURCES = test/gtest_skip_in_environment_setup_test.cc +test_gtest_skip_in_environment_setup_test_LDADD= lib/libgtest_main.la \ + lib/libgtest.la + # Tests that fused gtest files compile and work. FUSED_GTEST_SRC = \ fused-src/gtest/gtest-all.cc \ Modified: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/docs/advanced.md ============================================================================== --- projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/docs/advanced.md Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/docs/advanced.md Mon Apr 1 21:28:04 2019 (r345785) @@ -1289,8 +1289,10 @@ Environment* AddGlobalTestEnvironment(Environment* env ``` Now, when `RUN_ALL_TESTS()` is called, it first calls the `SetUp()` method of -the environment object, then runs the tests if there was no fatal failures, and -finally calls `TearDown()` of the environment object. +each environment object, then runs the tests if none of the environments +reported fatal failures and `GTEST_SKIP()` was not called. `RUN_ALL_TESTS()` +always calls `TearDown()` with each environment object, regardless of whether +or not the tests were run. It's OK to register multiple environment objects. In this case, their `SetUp()` will be called in the order they are registered, and their `TearDown()` will be Modified: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/src/gtest.cc ============================================================================== --- projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/src/gtest.cc Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/src/gtest.cc Mon Apr 1 21:28:04 2019 (r345785) @@ -5243,9 +5243,23 @@ bool UnitTestImpl::RunAllTests() { ForEach(environments_, SetUpEnvironment); repeater->OnEnvironmentsSetUpEnd(*parent_); - // Runs the tests only if there was no fatal failure during global - // set-up. - if (!Test::HasFatalFailure()) { + // Runs the tests only if there was no fatal failure or skip triggered + // during global set-up. + if (Test::IsSkipped()) { + // Emit diagnostics when global set-up calls skip, as it will not be + // emitted by default. + TestResult& test_result = + *internal::GetUnitTestImpl()->current_test_result(); + for (int j = 0; j < test_result.total_part_count(); ++j) { + const TestPartResult& test_part_result = + test_result.GetTestPartResult(j); + if (test_part_result.type() == TestPartResult::kSkip) { + const std::string& result = test_part_result.message(); + printf("%s\n", result.c_str()); + } + } + fflush(stdout); + } else if (!Test::HasFatalFailure()) { for (int test_index = 0; test_index < total_test_case_count(); test_index++) { GetMutableTestCase(test_index)->Run(); Modified: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/BUILD.bazel ============================================================================== --- projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/BUILD.bazel Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/BUILD.bazel Mon Apr 1 21:28:04 2019 (r345785) @@ -311,6 +311,13 @@ cc_binary( deps = ["//:gtest"], ) +cc_test( + name = "gtest_skip_in_environment_setup_test", + size = "small", + srcs = ["gtest_skip_in_environment_setup_test.cc"], + deps = ["//:gtest_main"], +) + py_test( name = "googletest-list-tests-unittest", size = "small", Copied: projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc (from r345784, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/kyua-use-googletest-test-interface/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc Mon Apr 1 21:28:04 2019 (r345785, copy of r345784, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc) @@ -0,0 +1,60 @@ +// Copyright 2019, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This test verifies that skipping in the environment results in the +// testcases being skipped. +// +// This is a reproduction case for +// https://github.com/google/googletest/issues/2189 . + +#include +#include + +class SetupEnvironment : public testing::Environment { +public: + void SetUp() override { + GTEST_SKIP() << "Skipping the entire environment"; + } +}; + +TEST(Test, AlwaysPasses) { + EXPECT_EQ(true, true); +} + +TEST(Test, AlwaysFails) { + EXPECT_EQ(true, false); +} + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + + testing::AddGlobalTestEnvironment(new SetupEnvironment()); + + return (RUN_ALL_TESTS()); +} Modified: projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/gdb/Makefile ============================================================================== --- projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/gdb/Makefile Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/gdb/Makefile Mon Apr 1 21:28:04 2019 (r345785) @@ -3,9 +3,10 @@ PROG= gdb${GDB_SUFFIX} SRCS= gdb.c -BULIBS= ${OBJ_BU}/libbfd/libbfd.a ${OBJ_BU}/libopcodes/libopcodes.a \ - ${OBJ_BU}/libiberty/libiberty.a -GDBLIBS= ${OBJ_GDB}/libgdb/libgdb.a +BULIBS= ${OBJ_BU}/libbfd/libbfd${PIE_SUFFIX}.a \ + ${OBJ_BU}/libopcodes/libopcodes${PIE_SUFFIX}.a \ + ${OBJ_BU}/libiberty/libiberty${PIE_SUFFIX}.a +GDBLIBS= ${OBJ_GDB}/libgdb/libgdb${PIE_SUFFIX}.a # libthread_db.so calls back into gdb for the proc services. Make all the # global symbols visible. Modified: projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/kgdb/Makefile ============================================================================== --- projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/kgdb/Makefile Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/gnu/usr.bin/gdb/kgdb/Makefile Mon Apr 1 21:28:04 2019 (r345785) @@ -4,9 +4,10 @@ PROG= kgdb${GDB_SUFFIX} SRCS= main.c kld.c kthr.c trgt.c trgt_${TARGET_CPUARCH}.c WARNS?= 2 -BULIBS= ${OBJ_BU}/libbfd/libbfd.a ${OBJ_BU}/libopcodes/libopcodes.a \ - ${OBJ_BU}/libiberty/libiberty.a -GDBLIBS= ${OBJ_GDB}/libgdb/libgdb.a +BULIBS= ${OBJ_BU}/libbfd/libbfd${PIE_SUFFIX}.a \ + ${OBJ_BU}/libopcodes/libopcodes${PIE_SUFFIX}.a \ + ${OBJ_BU}/libiberty/libiberty${PIE_SUFFIX}.a +GDBLIBS= ${OBJ_GDB}/libgdb/libgdb${PIE_SUFFIX}.a DPADD= ${GDBLIBS} ${BULIBS} LDADD= ${GDBLIBS} ${BULIBS} Modified: projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile ============================================================================== --- projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/lib/googletest/gtest_main/tests/Makefile Mon Apr 1 21:28:04 2019 (r345785) @@ -19,6 +19,7 @@ GTESTS+= gtest_sole_header_test GTESTS+= googletest-test-part-test GTESTS+= gtest-typed-test_test GTESTS+= gtest_skip_test +GTESTS+= gtest_skip_in_environment_setup_test GTESTS+= gtest_unittest # This test cannot selectively run a single test, as it verifies results when Modified: projects/kyua-use-googletest-test-interface/lib/libbe/be.c ============================================================================== --- projects/kyua-use-googletest-test-interface/lib/libbe/be.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/lib/libbe/be.c Mon Apr 1 21:28:04 2019 (r345785) @@ -265,6 +265,16 @@ be_destroy(libbe_handle_t *lbh, const char *name, int zfs_prop_get(fs, ZFS_PROP_ORIGIN, origin, sizeof(origin), NULL, NULL, 0, 1) != 0) return (set_error(lbh, BE_ERR_NOORIGIN)); + + /* Don't destroy a mounted dataset unless force is specified */ + if ((mounted = zfs_is_mounted(fs, NULL)) != 0) { + if (force) { + zfs_unmount(fs, NULL, 0); + } else { + free(bdd.snapname); + return (set_error(lbh, BE_ERR_DESTROYMNT)); + } + } } else { if (!zfs_dataset_exists(lbh->lzh, path, ZFS_TYPE_SNAPSHOT)) return (set_error(lbh, BE_ERR_NOENT)); @@ -277,16 +287,6 @@ be_destroy(libbe_handle_t *lbh, const char *name, int if (fs == NULL) { free(bdd.snapname); return (set_error(lbh, BE_ERR_ZFSOPEN)); - } - } - - /* Check if mounted, unmount if force is specified */ - if ((mounted = zfs_is_mounted(fs, NULL)) != 0) { - if (force) { - zfs_unmount(fs, NULL, 0); - } else { - free(bdd.snapname); - return (set_error(lbh, BE_ERR_DESTROYMNT)); } } Modified: projects/kyua-use-googletest-test-interface/sbin/bectl/tests/bectl_test.sh ============================================================================== --- projects/kyua-use-googletest-test-interface/sbin/bectl/tests/bectl_test.sh Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sbin/bectl/tests/bectl_test.sh Mon Apr 1 21:28:04 2019 (r345785) @@ -123,12 +123,21 @@ bectl_destroy_body() zpool=$(make_zpool_name) disk=${cwd}/disk.img mount=${cwd}/mnt + root=${mount}/root bectl_create_setup ${zpool} ${disk} ${mount} atf_check bectl -r ${zpool}/ROOT create -e default default2 atf_check -o not-empty zfs get mountpoint ${zpool}/ROOT/default2 atf_check -e ignore bectl -r ${zpool}/ROOT destroy default2 atf_check -e not-empty -s not-exit:0 zfs get mountpoint ${zpool}/ROOT/default2 + + # Test origin snapshot deletion when the snapshot to be destroyed + # belongs to a mounted dataset, see PR 236043. + atf_check mkdir -p ${root} + atf_check -o not-empty bectl -r ${zpool}/ROOT mount default ${root} + atf_check bectl -r ${zpool}/ROOT create -e default default3 + atf_check bectl -r ${zpool}/ROOT destroy -o default3 + atf_check bectl -r ${zpool}/ROOT unmount default } bectl_destroy_cleanup() { Modified: projects/kyua-use-googletest-test-interface/sys/arm/allwinner/aw_mmc.c ============================================================================== --- projects/kyua-use-googletest-test-interface/sys/arm/allwinner/aw_mmc.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sys/arm/allwinner/aw_mmc.c Mon Apr 1 21:28:04 2019 (r345785) @@ -256,6 +256,8 @@ aw_mmc_cam_action(struct cam_sim *sim, union ccb *ccb) cts->proto_specific.mmc.host_f_min = sc->aw_host.f_min; cts->proto_specific.mmc.host_f_max = sc->aw_host.f_max; cts->proto_specific.mmc.host_caps = sc->aw_host.caps; + cts->proto_specific.mmc.host_max_data = (sc->aw_mmc_conf->dma_xferlen * + AW_MMC_DMA_SEGS) / MMC_SECTOR_SIZE; memcpy(&cts->proto_specific.mmc.ios, &sc->aw_host.ios, sizeof(struct mmc_ios)); ccb->ccb_h.status = CAM_REQ_CMP; break; Modified: projects/kyua-use-googletest-test-interface/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c ============================================================================== --- projects/kyua-use-googletest-test-interface/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c Mon Apr 1 21:28:04 2019 (r345785) @@ -66,8 +66,17 @@ __FBSDID("$FreeBSD$"); #define NUM_DMA_SEGS 2 #ifdef DEBUG -#define dprintf(fmt, args...) do { printf("%s(): ", __func__); \ - printf(fmt,##args); } while (0) +static int bcm2835_sdhci_debug = 0; + +TUNABLE_INT("hw.bcm2835.sdhci.debug", &bcm2835_sdhci_debug); +SYSCTL_INT(_hw_sdhci, OID_AUTO, bcm2835_sdhci_debug, CTLFLAG_RWTUN, + &bcm2835_sdhci_debug, 0, "bcm2835 SDHCI debug level"); + +#define dprintf(fmt, args...) \ + do { \ + if (bcm2835_sdhci_debug) \ + printf("%s: " fmt, __func__, ##args); \ + } while (0) #else #define dprintf(fmt, args...) #endif Modified: projects/kyua-use-googletest-test-interface/sys/cam/cam_ccb.h ============================================================================== --- projects/kyua-use-googletest-test-interface/sys/cam/cam_ccb.h Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sys/cam/cam_ccb.h Mon Apr 1 21:28:04 2019 (r345785) @@ -1051,6 +1051,7 @@ struct ccb_trans_settings_mmc { #define MMC_CAP_8_BIT_DATA (1 << 1) /* Can do 8-bit data transfers */ #define MMC_CAP_HSPEED (1 << 2) /* Can do High Speed transfers */ uint32_t host_caps; + uint32_t host_max_data; }; /* Get/Set transfer rate/width/disconnection/tag queueing settings */ Modified: projects/kyua-use-googletest-test-interface/sys/cam/mmc/mmc_da.c ============================================================================== --- projects/kyua-use-googletest-test-interface/sys/cam/mmc/mmc_da.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sys/cam/mmc/mmc_da.c Mon Apr 1 21:28:04 2019 (r345785) @@ -150,6 +150,17 @@ struct sdda_softc { struct timeval log_time; }; +static const char *mmc_errmsg[] = +{ + "None", + "Timeout", + "Bad CRC", + "Fifo", + "Failed", + "Invalid", + "NO MEMORY" +}; + #define ccb_bp ppriv_ptr1 static disk_strategy_t sddastrategy; @@ -165,6 +176,7 @@ static void sddadone(struct cam_periph *periph, static int sddaerror(union ccb *ccb, u_int32_t cam_flags, u_int32_t sense_flags); +static int mmc_handle_reply(union ccb *ccb); static uint16_t get_rca(struct cam_periph *periph); static void sdda_start_init(void *context, union ccb *start_ccb); static void sdda_start_init_task(void *context, int pending); @@ -218,6 +230,37 @@ get_rca(struct cam_periph *periph) { return periph->path->device->mmc_ident_data.card_rca; } +/* + * Figure out if CCB execution resulted in error. + * Look at both CAM-level errors and on MMC protocol errors. +*/ +static int +mmc_handle_reply(union ccb *ccb) +{ + + KASSERT(ccb->ccb_h.func_code == XPT_MMC_IO, + ("ccb %p: cannot handle non-XPT_MMC_IO errors, got func_code=%d", + ccb, ccb->ccb_h.func_code)); + + /* TODO: maybe put MMC-specific handling into cam.c/cam_error_print altogether */ + if (((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)) { + if (ccb->mmcio.cmd.error != 0) { + xpt_print_path(ccb->ccb_h.path); + printf("CMD%d failed, err %d (%s)\n", + ccb->mmcio.cmd.opcode, + ccb->mmcio.cmd.error, + mmc_errmsg[ccb->mmcio.cmd.error]); + return (EIO); + } + } else { + cam_error_print(ccb, CAM_ESF_ALL, CAM_EPF_ALL); + return (EIO); + } + + return (0); /* Normal return */ +} + + static uint32_t mmc_get_bits(uint32_t *bits, int bit_len, int start, int size) { @@ -777,11 +820,12 @@ mmc_exec_app_cmd(struct cam_periph *periph, union ccb /*mmc_data*/ NULL, /*timeout*/ 0); - err = cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL); + cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL); + err = mmc_handle_reply(ccb); if (err != 0) - return err; + return (err); if (!(ccb->mmcio.cmd.resp[0] & R1_APP_CMD)) - return MMC_ERR_FAILED; + return (EIO); /* Now exec actual command */ int flags = 0; @@ -803,12 +847,14 @@ mmc_exec_app_cmd(struct cam_periph *periph, union ccb /*mmc_data*/ cmd->data, /*timeout*/ 0); - err = cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL); + cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL); + err = mmc_handle_reply(ccb); + if (err != 0) + return (err); memcpy(cmd->resp, ccb->mmcio.cmd.resp, sizeof(cmd->resp)); cmd->error = ccb->mmcio.cmd.error; - if (err != 0) - return err; - return 0; + + return (0); } static int @@ -858,10 +904,9 @@ mmc_send_ext_csd(struct cam_periph *periph, union ccb /*mmc_data*/ &d, /*timeout*/ 0); - err = cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL); - if (err != 0) - return (err); - return (MMC_ERR_NONE); + cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL); + err = mmc_handle_reply(ccb); + return (err); } static void @@ -904,7 +949,7 @@ mmc_switch_fill_mmcio(union ccb *ccb, static int mmc_select_card(struct cam_periph *periph, union ccb *ccb, uint32_t rca) { - int flags; + int flags, err; flags = (rca ? MMC_RSP_R1B : MMC_RSP_NONE) | MMC_CMD_AC; cam_fill_mmcio(&ccb->mmcio, @@ -918,42 +963,20 @@ mmc_select_card(struct cam_periph *periph, union ccb * /*timeout*/ 0); cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL); - - if (((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)) { - if (ccb->mmcio.cmd.error != 0) { - CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH, - ("%s: MMC_SELECT command failed", __func__)); - return EIO; - } - return 0; /* Normal return */ - } else { - CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH, - ("%s: CAM request failed\n", __func__)); - return EIO; - } + err = mmc_handle_reply(ccb); + return (err); } static int mmc_switch(struct cam_periph *periph, union ccb *ccb, uint8_t set, uint8_t index, uint8_t value, u_int timeout) { + int err; mmc_switch_fill_mmcio(ccb, set, index, value, timeout); cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL); - - if (((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)) { - if (ccb->mmcio.cmd.error != 0) { - CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH, - ("%s: MMC command failed", __func__)); - return (EIO); - } - return (0); /* Normal return */ - } else { - CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH, - ("%s: CAM request failed\n", __func__)); - return (EIO); - } - + err = mmc_handle_reply(ccb); + return (err); } static uint32_t @@ -987,6 +1010,7 @@ mmc_sd_switch(struct cam_periph *periph, union ccb *cc struct mmc_data mmc_d; uint32_t arg; + int err; memset(res, 0, 64); mmc_d.len = 64; @@ -1009,19 +1033,8 @@ mmc_sd_switch(struct cam_periph *periph, union ccb *cc /*timeout*/ 0); cam_periph_runccb(ccb, sddaerror, CAM_FLAG_NONE, /*sense_flags*/0, NULL); - - if (((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP)) { - if (ccb->mmcio.cmd.error != 0) { - CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH, - ("%s: MMC command failed", __func__)); - return EIO; - } - return 0; /* Normal return */ - } else { - CAM_DEBUG(ccb->ccb_h.path, CAM_DEBUG_PERIPH, - ("%s: CAM request failed\n", __func__)); - return EIO; - } + err = mmc_handle_reply(ccb); + return (err); } static int @@ -1195,6 +1208,27 @@ sdda_get_host_caps(struct cam_periph *periph, union cc return (cts->host_caps); } +static uint32_t +sdda_get_max_data(struct cam_periph *periph, union ccb *ccb) +{ + struct ccb_trans_settings_mmc *cts; + + cts = &ccb->cts.proto_specific.mmc; + memset(cts, 0, sizeof(struct ccb_trans_settings_mmc)); + + ccb->ccb_h.func_code = XPT_GET_TRAN_SETTINGS; + ccb->ccb_h.flags = CAM_DIR_NONE; + ccb->ccb_h.retry_count = 0; + ccb->ccb_h.timeout = 100; + ccb->ccb_h.cbfcnp = NULL; + xpt_action(ccb); + + if (ccb->ccb_h.status != CAM_REQ_CMP) + panic("Cannot get host max data"); + KASSERT(cts->host_max_data != 0, ("host_max_data == 0?!")); + return (cts->host_max_data); +} + static void sdda_start_init(void *context, union ccb *start_ccb) { @@ -1420,7 +1454,6 @@ sdda_add_part(struct cam_periph *periph, u_int type, c struct sdda_softc *sc = (struct sdda_softc *)periph->softc; struct sdda_part *part; struct ccb_pathinq cpi; - u_int maxio; CAM_DEBUG(periph->path, CAM_DEBUG_PERIPH, ("Partition type '%s', size %ju %s\n", @@ -1479,12 +1512,9 @@ sdda_add_part(struct cam_periph *periph, u_int type, c part->disk->d_gone = sddadiskgonecb; part->disk->d_name = part->name; part->disk->d_drv1 = part; - maxio = cpi.maxio; /* Honor max I/O size of SIM */ - if (maxio == 0) - maxio = DFLTPHYS; /* traditional default */ - else if (maxio > MAXPHYS) - maxio = MAXPHYS; /* for safety */ - part->disk->d_maxsize = maxio; + part->disk->d_maxsize = + MIN(MAXPHYS, sdda_get_max_data(periph, + (union ccb *)&cpi) * mmc_get_sector_size(periph)); part->disk->d_unit = cnt; part->disk->d_flags = 0; strlcpy(part->disk->d_descr, sc->card_id_string, Modified: projects/kyua-use-googletest-test-interface/sys/dev/md/md.c ============================================================================== --- projects/kyua-use-googletest-test-interface/sys/dev/md/md.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sys/dev/md/md.c Mon Apr 1 21:28:04 2019 (r345785) @@ -110,6 +110,7 @@ #define MD_SHUTDOWN 0x10000 /* Tell worker thread to terminate. */ #define MD_EXITING 0x20000 /* Worker thread is exiting. */ +#define MD_PROVIDERGONE 0x40000 /* Safe to free the softc */ #ifndef MD_NSECT #define MD_NSECT (10000 * 2) @@ -199,6 +200,7 @@ static g_start_t g_md_start; static g_access_t g_md_access; static void g_md_dumpconf(struct sbuf *sb, const char *indent, struct g_geom *gp, struct g_consumer *cp __unused, struct g_provider *pp); +static g_provgone_t g_md_providergone; static struct cdev *status_dev = NULL; static struct sx md_sx; @@ -220,6 +222,7 @@ struct g_class g_md_class = { .start = g_md_start, .access = g_md_access, .dumpconf = g_md_dumpconf, + .providergone = g_md_providergone, }; DECLARE_GEOM_CLASS(g_md_class, g_md); @@ -481,8 +484,8 @@ g_md_start(struct bio *bp) } mtx_lock(&sc->queue_mtx); bioq_disksort(&sc->bio_queue, bp); - mtx_unlock(&sc->queue_mtx); wakeup(sc); + mtx_unlock(&sc->queue_mtx); } #define MD_MALLOC_MOVE_ZERO 1 @@ -1496,17 +1499,30 @@ bad: return (error); } +static void +g_md_providergone(struct g_provider *pp) +{ + struct md_s *sc = pp->geom->softc; + + mtx_lock(&sc->queue_mtx); + sc->flags |= MD_PROVIDERGONE; + wakeup(&sc->flags); + mtx_unlock(&sc->queue_mtx); +} + static int mddestroy(struct md_s *sc, struct thread *td) { if (sc->gp) { - sc->gp->softc = NULL; g_topology_lock(); g_wither_geom(sc->gp, ENXIO); g_topology_unlock(); - sc->gp = NULL; - sc->pp = NULL; + + mtx_lock(&sc->queue_mtx); + while (!(sc->flags & MD_PROVIDERGONE)) + msleep(&sc->flags, &sc->queue_mtx, PRIBIO, "mddestroy", 0); + mtx_unlock(&sc->queue_mtx); } if (sc->devstat) { devstat_remove_entry(sc->devstat); Modified: projects/kyua-use-googletest-test-interface/sys/dev/pci/pci.c ============================================================================== --- projects/kyua-use-googletest-test-interface/sys/dev/pci/pci.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sys/dev/pci/pci.c Mon Apr 1 21:28:04 2019 (r345785) @@ -31,6 +31,7 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_acpi.h" #include "opt_bus.h" #include @@ -5693,13 +5694,34 @@ pci_get_resource_list (device_t dev, device_t child) return (&dinfo->resources); } +#ifdef ACPI_DMAR +bus_dma_tag_t dmar_get_dma_tag(device_t dev, device_t child); bus_dma_tag_t pci_get_dma_tag(device_t bus, device_t dev) { + bus_dma_tag_t tag; + struct pci_softc *sc; + + if (device_get_parent(dev) == bus) { + /* try dmar and return if it works */ + tag = dmar_get_dma_tag(bus, dev); + } else + tag = NULL; + if (tag == NULL) { + sc = device_get_softc(bus); + tag = sc->sc_dma_tag; + } + return (tag); +} +#else +bus_dma_tag_t +pci_get_dma_tag(device_t bus, device_t dev) +{ struct pci_softc *sc = device_get_softc(bus); return (sc->sc_dma_tag); } +#endif uint32_t pci_read_config_method(device_t dev, device_t child, int reg, int width) Modified: projects/kyua-use-googletest-test-interface/sys/dev/sdhci/sdhci.c ============================================================================== --- projects/kyua-use-googletest-test-interface/sys/dev/sdhci/sdhci.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sys/dev/sdhci/sdhci.c Mon Apr 1 21:28:04 2019 (r345785) @@ -2580,6 +2580,7 @@ sdhci_cam_action(struct cam_sim *sim, union ccb *ccb) case XPT_GET_TRAN_SETTINGS: { struct ccb_trans_settings *cts = &ccb->cts; + uint32_t max_data; if (sdhci_debug > 1) slot_printf(slot, "Got XPT_GET_TRAN_SETTINGS\n"); @@ -2593,6 +2594,19 @@ sdhci_cam_action(struct cam_sim *sim, union ccb *ccb) cts->proto_specific.mmc.host_f_min = slot->host.f_min; cts->proto_specific.mmc.host_f_max = slot->host.f_max; cts->proto_specific.mmc.host_caps = slot->host.caps; + /* + * Re-tuning modes 1 and 2 restrict the maximum data length + * per read/write command to 4 MiB. + */ + if (slot->opt & SDHCI_TUNING_ENABLED && + (slot->retune_mode == SDHCI_RETUNE_MODE_1 || + slot->retune_mode == SDHCI_RETUNE_MODE_2)) { + max_data = 4 * 1024 * 1024 / MMC_SECTOR_SIZE; + } else { + max_data = 65535; + } + cts->proto_specific.mmc.host_max_data = max_data; + memcpy(&cts->proto_specific.mmc.ios, &slot->host.ios, sizeof(struct mmc_ios)); ccb->ccb_h.status = CAM_REQ_CMP; break; Modified: projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_run.c ============================================================================== --- projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_run.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_run.c Mon Apr 1 21:28:04 2019 (r345785) @@ -2851,10 +2851,6 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uin } if (flags & RT2860_RX_L2PAD) { - /* - * XXX OpenBSD removes padding between header - * and payload here... - */ RUN_DPRINTF(sc, RUN_DEBUG_RECV, "received RT2860_RX_L2PAD frame\n"); len += 2; @@ -2865,8 +2861,8 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uin wh = mtod(m, struct ieee80211_frame *); - /* XXX wrong for monitor mode */ - if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { + if ((wh->i_fc[1] & IEEE80211_FC1_PROTECTED) != 0 && + (flags & RT2860_RX_DEC) != 0) { wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; m->m_flags |= M_WEP; } @@ -2896,6 +2892,8 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uin uint16_t phy; tap->wr_flags = 0; + if (flags & RT2860_RX_L2PAD) + tap->wr_flags |= IEEE80211_RADIOTAP_F_DATAPAD; tap->wr_antsignal = rssi; tap->wr_antenna = ant; tap->wr_dbm_antsignal = run_rssi2dbm(sc, rssi, ant); @@ -3162,14 +3160,23 @@ tr_setup: vap = data->ni->ni_vap; if (ieee80211_radiotap_active_vap(vap)) { + const struct ieee80211_frame *wh; struct run_tx_radiotap_header *tap = &sc->sc_txtap; struct rt2860_txwi *txwi = (struct rt2860_txwi *)(&data->desc + sizeof(struct rt2870_txd)); + int has_l2pad; + + wh = mtod(m, struct ieee80211_frame *); + has_l2pad = IEEE80211_HAS_ADDR4(wh) != + IEEE80211_QOS_HAS_SEQ(wh); + tap->wt_flags = 0; tap->wt_rate = rt2860_rates[data->ridx].rate; tap->wt_hwqueue = index; if (le16toh(txwi->phy) & RT2860_PHY_SHPRE) tap->wt_flags |= IEEE80211_RADIOTAP_F_SHORTPRE; + if (has_l2pad) + tap->wt_flags |= IEEE80211_RADIOTAP_F_DATAPAD; ieee80211_radiotap_tx(vap, m); } Modified: projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_uath.c ============================================================================== --- projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_uath.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_uath.c Mon Apr 1 21:28:04 2019 (r345785) @@ -1276,8 +1276,8 @@ uath_watchdog(void *arg) if (sc->sc_tx_timer > 0) { if (--sc->sc_tx_timer == 0) { device_printf(sc->sc_dev, "device timeout\n"); - /*uath_init(sc); XXX needs a process context! */ counter_u64_add(ic->ic_oerrors, 1); + ieee80211_restart_all(ic); return; } callout_reset(&sc->watchdog_ch, hz, uath_watchdog, sc); Modified: projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_urtw.c ============================================================================== --- projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_urtw.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/sys/dev/usb/wlan/if_urtw.c Mon Apr 1 21:28:04 2019 (r345785) @@ -1891,11 +1891,13 @@ static void urtw_watchdog(void *arg) { struct urtw_softc *sc = arg; + struct ieee80211com *ic = &sc->sc_ic; if (sc->sc_txtimer > 0) { if (--sc->sc_txtimer == 0) { device_printf(sc->sc_dev, "device timeout\n"); - counter_u64_add(sc->sc_ic.ic_oerrors, 1); + counter_u64_add(ic->ic_oerrors, 1); + ieee80211_restart_all(ic); return; } callout_reset(&sc->sc_watchdog_ch, hz, urtw_watchdog, sc); Modified: projects/kyua-use-googletest-test-interface/tests/sys/audit/Makefile ============================================================================== --- projects/kyua-use-googletest-test-interface/tests/sys/audit/Makefile Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/tests/sys/audit/Makefile Mon Apr 1 21:28:04 2019 (r345785) @@ -55,4 +55,6 @@ WARNS?= 6 LDFLAGS+= -lbsm -lutil +CFLAGS.process-control.c+= -I${SRCTOP}/tests + .include Modified: projects/kyua-use-googletest-test-interface/tests/sys/audit/process-control.c ============================================================================== --- projects/kyua-use-googletest-test-interface/tests/sys/audit/process-control.c Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/tests/sys/audit/process-control.c Mon Apr 1 21:28:04 2019 (r345785) @@ -48,6 +48,8 @@ #include "utils.h" +#include "freebsd_test_suite/macros.h" + static pid_t pid; static int filedesc, status; static struct pollfd fds[1]; @@ -1512,15 +1514,8 @@ ATF_TC_HEAD(cap_enter_success, tc) ATF_TC_BODY(cap_enter_success, tc) { - int capinfo; - size_t len = sizeof(capinfo); - const char *capname = "kern.features.security_capability_mode"; - ATF_REQUIRE_EQ(0, sysctlbyname(capname, &capinfo, &len, NULL, 0)); + ATF_REQUIRE_FEATURE("security_capability_mode"); - /* Without CAPABILITY_MODE enabled, cap_enter() returns ENOSYS */ - if (!capinfo) - atf_tc_skip("Capsicum is not enabled in the system"); - FILE *pipefd = setup(fds, auclass); ATF_REQUIRE((pid = fork()) != -1); if (pid) { @@ -1550,14 +1545,9 @@ ATF_TC_HEAD(cap_getmode_success, tc) ATF_TC_BODY(cap_getmode_success, tc) { - int capinfo, modep; - size_t len = sizeof(capinfo); - const char *capname = "kern.features.security_capability_mode"; - ATF_REQUIRE_EQ(0, sysctlbyname(capname, &capinfo, &len, NULL, 0)); + int modep; - /* Without CAPABILITY_MODE enabled, cap_getmode() returns ENOSYS */ - if (!capinfo) - atf_tc_skip("Capsicum is not enabled in the system"); + ATF_REQUIRE_FEATURE("security_capability_mode"); pid = getpid(); snprintf(pcregex, sizeof(pcregex), "cap_getmode.*%d.*success", pid); Modified: projects/kyua-use-googletest-test-interface/tests/sys/capsicum/Makefile ============================================================================== --- projects/kyua-use-googletest-test-interface/tests/sys/capsicum/Makefile Mon Apr 1 21:26:05 2019 (r345784) +++ projects/kyua-use-googletest-test-interface/tests/sys/capsicum/Makefile Mon Apr 1 21:28:04 2019 (r345785) @@ -1,11 +1,56 @@ # $FreeBSD$ +.include + TESTSDIR= ${TESTSBASE}/sys/capsicum ATF_TESTS_C+= bindat_connectat ATF_TESTS_C+= ioctls_test CFLAGS+= -I${SRCTOP}/tests + +.if ${MK_GOOGLETEST} != no + +.PATH: ${SRCTOP}/contrib/capsicum-test + +GTESTS+= capsicum-test + +SRCS.capsicum-test+= \ + capsicum-test-main.cc \ + capsicum-test.cc \ + capability-fd.cc \ + fexecve.cc \ + procdesc.cc \ + capmode.cc \ + fcntl.cc \ + ioctl.cc \ + openat.cc \ + sysctl.cc \ + select.cc \ + mqueue.cc \ + socket.cc \ + sctp.cc \ + capability-fd-pair.cc \ + overhead.cc \ + rename.cc + +LIBADD.capsicum-test+= gtest pthread +TEST_METADATA.capsicum-test= required_user="unprivileged" + +.for p in mini-me mini-me.noexec mini-me.setuid +PROGS+= $p +NO_SHARED.$p= +SRCS.$p= mini-me.c +.endfor + +BINDIR= ${TESTSDIR} + +BINMODE.mini-me.noexec= ${NOBINMODE} +BINMODE.mini-me.setuid= 4555 + +WARNS.capsicum-test= 3 + +.endif WARNS?= 6 From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:06 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 95CD7DC200 for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw6s42z4P5n; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 669EB19FA1; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6C77EEF04; Mon, 1 Apr 2019 16:16:58 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 1B61575FFB; Mon, 1 Apr 2019 16:16:58 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0E5DAEF02; Mon, 1 Apr 2019 16:16:58 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 3FA00EEFF; Mon, 1 Apr 2019 16:16:55 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 0E2EA75FF8; Mon, 1 Apr 2019 16:16:55 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from venus.codepro.be (venus.codepro.be [5.9.86.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "smtp.codepro.be", Issuer "Let's Encrypt Authority X3" (verified OK)) (Authenticated sender: kp) by smtp.freebsd.org (Postfix) with ESMTPSA id 9857B1DDA3; Mon, 1 Apr 2019 16:16:54 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from [10.0.2.193] (ptr-8rh08jzj3mphveqp3q8.18120a2.ip6.access.telenet.be [IPv6:2a02:1811:240e:402:6058:a09a:1f67:6120]) (Authenticated sender: kp) by venus.codepro.be (Postfix) with ESMTPSA id 8BDD830492; Mon, 1 Apr 2019 18:16:52 +0200 (CEST) From: "Kristof Provost" To: rgrimes@freebsd.org Cc: "Andrey V. Elsukov" , "Mateusz Guzik" , src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl X-Mailer: MailMate (2.0BETAr6135) Message-ID: In-Reply-To: <201904011348.x31Dm86D015297@gndrsh.dnsmgr.net> References: <201904011348.x31Dm86D015297@gndrsh.dnsmgr.net> MIME-Version: 1.0 Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 1B61575FFB X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.96 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.96)[-0.956,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; REPLY(-4.00)[] Status: O Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:06 -0000 X-Original-Date: Mon, 01 Apr 2019 18:16:51 +0200 X-List-Received-Date: Tue, 03 Sep 2019 14:06:06 -0000 On 1 Apr 2019, at 15:48, Rodney W. Grimes wrote: > [ Charset UTF-8 unsupported, converting... ] >> On 01.04.2019 16:30, Rodney W. Grimes wrote: >> It seems it is too late: >> https://marc.info/?l=openbsd-tech&m=155409489427092&w=2 > > I am wondering on the above as it has a date of: > Date: 2019-04-01 5:01:03 > > which would be in line with Kristof's joke. > Yes, OpenBSD are clearly joking as well. >> http://mail-index.netbsd.org/tech-kern/2019/03/29/msg024883.html > This is inline with what is being proposed here, NetBSD has > old rotted code that needs updated. [Disclaimer: I do not speak for NetBSD, and based this on my reading of that thread] NetBSD however are serious. Their situation is slightly different, in that their primary reason is that they don’t have a maintainer for their pf version and it’s suffering from significant bitrot. Our situation is somewhat better. Our pf is maintained and does get bug fixes and improvements. Not as many as I’d like, but there’s something. > Rather than do that work > twice, do it 1.5 times (implementing the same technology in > 2 OS's should be less work than doing it twice.) > > I believe there is grant money avaliable from a non Foundation > source that could be used to do this work. > I’m not at all opposed to updating our pf, but there are a few obstacles (technical: performance, syntax and vimage. Practical: this is a lot of work). If people are interested in that discussion I’d propose someone start a new thread on freebsd-pf@, and I’ll expand on what I think the problems are and what needs to be done. I’d also be interested in knowing what people are looking for from an updated pf in FreeBSD. What are the improvements in OpenBSD that you’d really like to see in FreeBSD? Regards, Kristof From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:06 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 11403DC220 for ; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yx5NJBz4P6L; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 8AD0319FC0; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 1B10911815; Mon, 1 Apr 2019 18:17:53 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3B59D831DE; Mon, 1 Apr 2019 18:17:52 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 11A77117AC; Mon, 1 Apr 2019 18:17:52 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 14D8D117AA for ; Mon, 1 Apr 2019 18:17:49 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id BC8CC831D4; Mon, 1 Apr 2019 18:17:48 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 999721A299; Mon, 1 Apr 2019 18:17:48 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31IHmeA068459; Mon, 1 Apr 2019 18:17:48 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31IHm8B068458; Mon, 1 Apr 2019 18:17:48 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904011817.x31IHm8B068458@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345772 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345772 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3B59D831DE X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.96)[-0.956,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:06 -0000 X-Original-Date: Mon, 1 Apr 2019 18:17:48 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:06 -0000 Author: ngie Date: Mon Apr 1 18:17:48 2019 New Revision: 345772 URL: https://svnweb.freebsd.org/changeset/base/345772 Log: Fix build for Linux In order for the test to build/run, I needed to add an `Execveat` subclass of `Execve`, then use `TEST_F(..)` for the test in order to leverage `exec_prog_`. This wasn't caught previously, because FreeBSD lacks an execveat(2) call, unlike Linux. Reported by: David Drysdale Pull Request: https://github.com/google/capsicum-test/pull/41 (WIP) Modified: projects/capsicum-test/contrib/capsicum-test/fexecve.cc Modified: projects/capsicum-test/contrib/capsicum-test/fexecve.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/fexecve.cc Mon Apr 1 18:09:26 2019 (r345771) +++ projects/capsicum-test/contrib/capsicum-test/fexecve.cc Mon Apr 1 18:17:48 2019 (r345772) @@ -167,7 +167,12 @@ FORK_TEST_F(FexecveWithScript, CapModeScriptFail) { } #ifdef HAVE_EXECVEAT -TEST(Execveat, NoUpwardTraversal) { +class Execveat : public Execve { + public: + Execveat() : Execve() {} +}; + +TEST_F(Execveat, NoUpwardTraversal) { char *abspath = realpath(exec_prog_, NULL); char cwd[1024]; getcwd(cwd, sizeof(cwd)); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:06 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C3DD9DC20E for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yx3tQNz4P64; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 8891B19FB7; Tue, 3 Sep 2019 14:05:54 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 0D814114C2; Mon, 1 Apr 2019 18:09:33 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 40E2D82A12; Mon, 1 Apr 2019 18:09:32 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1B9241145B; Mon, 1 Apr 2019 18:09:32 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 8114A11456 for ; Mon, 1 Apr 2019 18:09:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5A12B82A0B; Mon, 1 Apr 2019 18:09:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 353D81A0EA; Mon, 1 Apr 2019 18:09:29 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31I9T2v062972; Mon, 1 Apr 2019 18:09:29 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31I9RsI062962; Mon, 1 Apr 2019 18:09:27 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904011809.x31I9RsI062962@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345771 - in projects/capsicum-test: contrib/bsnmp/snmpd contrib/googletest/googletest/test lib/libbe sbin/bectl/tests sys/arm/broadcom/bcm2835 sys/dev/md sys/dev/usb/wlan tests/sys/audit X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/capsicum-test: contrib/bsnmp/snmpd contrib/googletest/googletest/test lib/libbe sbin/bectl/tests sys/arm/broadcom/bcm2835 sys/dev/md sys/dev/usb/wlan tests/sys/audit X-SVN-Commit-Revision: 345771 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 40E2D82A12 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.96)[-0.958,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:06 -0000 X-Original-Date: Mon, 1 Apr 2019 18:09:27 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:06 -0000 Author: ngie Date: Mon Apr 1 18:09:26 2019 New Revision: 345771 URL: https://svnweb.freebsd.org/changeset/base/345771 Log: MFhead@r345770 Replaced: projects/capsicum-test/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc - copied unchanged from r345770, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc Modified: projects/capsicum-test/contrib/bsnmp/snmpd/trap.c projects/capsicum-test/lib/libbe/be.c projects/capsicum-test/sbin/bectl/tests/bectl_test.sh projects/capsicum-test/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c projects/capsicum-test/sys/dev/md/md.c projects/capsicum-test/sys/dev/usb/wlan/if_run.c projects/capsicum-test/sys/dev/usb/wlan/if_uath.c projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c projects/capsicum-test/tests/sys/audit/Makefile projects/capsicum-test/tests/sys/audit/process-control.c Directory Properties: projects/capsicum-test/ (props changed) Modified: projects/capsicum-test/contrib/bsnmp/snmpd/trap.c ============================================================================== --- projects/capsicum-test/contrib/bsnmp/snmpd/trap.c Mon Apr 1 18:07:48 2019 (r345770) +++ projects/capsicum-test/contrib/bsnmp/snmpd/trap.c Mon Apr 1 18:09:26 2019 (r345771) @@ -726,8 +726,7 @@ target_activate_address(struct target_address *addrs) sa.sin_addr.s_addr = htonl((addrs->address[0] << 24) | (addrs->address[1] << 16) | (addrs->address[2] << 8) | (addrs->address[3] << 0)); - sa.sin_port = htons(addrs->address[4]) << 8 | - htons(addrs->address[5]) << 0; + sa.sin_port = htons(addrs->address[4] << 8 | addrs->address[5]); if (connect(addrs->socket, (struct sockaddr *)&sa, sa.sin_len) == -1) { syslog(LOG_ERR, "connect(%s,%u): %m", Copied: projects/capsicum-test/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc (from r345770, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/capsicum-test/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc Mon Apr 1 18:09:26 2019 (r345771, copy of r345770, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc) @@ -0,0 +1,60 @@ +// Copyright 2019, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This test verifies that skipping in the environment results in the +// testcases being skipped. +// +// This is a reproduction case for +// https://github.com/google/googletest/issues/2189 . + +#include +#include + +class SetupEnvironment : public testing::Environment { +public: + void SetUp() override { + GTEST_SKIP() << "Skipping the entire environment"; + } +}; + +TEST(Test, AlwaysPasses) { + EXPECT_EQ(true, true); +} + +TEST(Test, AlwaysFails) { + EXPECT_EQ(true, false); +} + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + + testing::AddGlobalTestEnvironment(new SetupEnvironment()); + + return (RUN_ALL_TESTS()); +} Modified: projects/capsicum-test/lib/libbe/be.c ============================================================================== --- projects/capsicum-test/lib/libbe/be.c Mon Apr 1 18:07:48 2019 (r345770) +++ projects/capsicum-test/lib/libbe/be.c Mon Apr 1 18:09:26 2019 (r345771) @@ -265,6 +265,16 @@ be_destroy(libbe_handle_t *lbh, const char *name, int zfs_prop_get(fs, ZFS_PROP_ORIGIN, origin, sizeof(origin), NULL, NULL, 0, 1) != 0) return (set_error(lbh, BE_ERR_NOORIGIN)); + + /* Don't destroy a mounted dataset unless force is specified */ + if ((mounted = zfs_is_mounted(fs, NULL)) != 0) { + if (force) { + zfs_unmount(fs, NULL, 0); + } else { + free(bdd.snapname); + return (set_error(lbh, BE_ERR_DESTROYMNT)); + } + } } else { if (!zfs_dataset_exists(lbh->lzh, path, ZFS_TYPE_SNAPSHOT)) return (set_error(lbh, BE_ERR_NOENT)); @@ -277,16 +287,6 @@ be_destroy(libbe_handle_t *lbh, const char *name, int if (fs == NULL) { free(bdd.snapname); return (set_error(lbh, BE_ERR_ZFSOPEN)); - } - } - - /* Check if mounted, unmount if force is specified */ - if ((mounted = zfs_is_mounted(fs, NULL)) != 0) { - if (force) { - zfs_unmount(fs, NULL, 0); - } else { - free(bdd.snapname); - return (set_error(lbh, BE_ERR_DESTROYMNT)); } } Modified: projects/capsicum-test/sbin/bectl/tests/bectl_test.sh ============================================================================== --- projects/capsicum-test/sbin/bectl/tests/bectl_test.sh Mon Apr 1 18:07:48 2019 (r345770) +++ projects/capsicum-test/sbin/bectl/tests/bectl_test.sh Mon Apr 1 18:09:26 2019 (r345771) @@ -123,12 +123,21 @@ bectl_destroy_body() zpool=$(make_zpool_name) disk=${cwd}/disk.img mount=${cwd}/mnt + root=${mount}/root bectl_create_setup ${zpool} ${disk} ${mount} atf_check bectl -r ${zpool}/ROOT create -e default default2 atf_check -o not-empty zfs get mountpoint ${zpool}/ROOT/default2 atf_check -e ignore bectl -r ${zpool}/ROOT destroy default2 atf_check -e not-empty -s not-exit:0 zfs get mountpoint ${zpool}/ROOT/default2 + + # Test origin snapshot deletion when the snapshot to be destroyed + # belongs to a mounted dataset, see PR 236043. + atf_check mkdir -p ${root} + atf_check -o not-empty bectl -r ${zpool}/ROOT mount default ${root} + atf_check bectl -r ${zpool}/ROOT create -e default default3 + atf_check bectl -r ${zpool}/ROOT destroy -o default3 + atf_check bectl -r ${zpool}/ROOT unmount default } bectl_destroy_cleanup() { Modified: projects/capsicum-test/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c ============================================================================== --- projects/capsicum-test/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c Mon Apr 1 18:07:48 2019 (r345770) +++ projects/capsicum-test/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c Mon Apr 1 18:09:26 2019 (r345771) @@ -66,8 +66,17 @@ __FBSDID("$FreeBSD$"); #define NUM_DMA_SEGS 2 #ifdef DEBUG -#define dprintf(fmt, args...) do { printf("%s(): ", __func__); \ - printf(fmt,##args); } while (0) +static int bcm2835_sdhci_debug = 0; + +TUNABLE_INT("hw.bcm2835.sdhci.debug", &bcm2835_sdhci_debug); +SYSCTL_INT(_hw_sdhci, OID_AUTO, bcm2835_sdhci_debug, CTLFLAG_RWTUN, + &bcm2835_sdhci_debug, 0, "bcm2835 SDHCI debug level"); + +#define dprintf(fmt, args...) \ + do { \ + if (bcm2835_sdhci_debug) \ + printf("%s: " fmt, __func__, ##args); \ + } while (0) #else #define dprintf(fmt, args...) #endif Modified: projects/capsicum-test/sys/dev/md/md.c ============================================================================== --- projects/capsicum-test/sys/dev/md/md.c Mon Apr 1 18:07:48 2019 (r345770) +++ projects/capsicum-test/sys/dev/md/md.c Mon Apr 1 18:09:26 2019 (r345771) @@ -110,6 +110,7 @@ #define MD_SHUTDOWN 0x10000 /* Tell worker thread to terminate. */ #define MD_EXITING 0x20000 /* Worker thread is exiting. */ +#define MD_PROVIDERGONE 0x40000 /* Safe to free the softc */ #ifndef MD_NSECT #define MD_NSECT (10000 * 2) @@ -199,6 +200,7 @@ static g_start_t g_md_start; static g_access_t g_md_access; static void g_md_dumpconf(struct sbuf *sb, const char *indent, struct g_geom *gp, struct g_consumer *cp __unused, struct g_provider *pp); +static g_provgone_t g_md_providergone; static struct cdev *status_dev = NULL; static struct sx md_sx; @@ -220,6 +222,7 @@ struct g_class g_md_class = { .start = g_md_start, .access = g_md_access, .dumpconf = g_md_dumpconf, + .providergone = g_md_providergone, }; DECLARE_GEOM_CLASS(g_md_class, g_md); @@ -481,8 +484,8 @@ g_md_start(struct bio *bp) } mtx_lock(&sc->queue_mtx); bioq_disksort(&sc->bio_queue, bp); - mtx_unlock(&sc->queue_mtx); wakeup(sc); + mtx_unlock(&sc->queue_mtx); } #define MD_MALLOC_MOVE_ZERO 1 @@ -1496,17 +1499,30 @@ bad: return (error); } +static void +g_md_providergone(struct g_provider *pp) +{ + struct md_s *sc = pp->geom->softc; + + mtx_lock(&sc->queue_mtx); + sc->flags |= MD_PROVIDERGONE; + wakeup(&sc->flags); + mtx_unlock(&sc->queue_mtx); +} + static int mddestroy(struct md_s *sc, struct thread *td) { if (sc->gp) { - sc->gp->softc = NULL; g_topology_lock(); g_wither_geom(sc->gp, ENXIO); g_topology_unlock(); - sc->gp = NULL; - sc->pp = NULL; + + mtx_lock(&sc->queue_mtx); + while (!(sc->flags & MD_PROVIDERGONE)) + msleep(&sc->flags, &sc->queue_mtx, PRIBIO, "mddestroy", 0); + mtx_unlock(&sc->queue_mtx); } if (sc->devstat) { devstat_remove_entry(sc->devstat); Modified: projects/capsicum-test/sys/dev/usb/wlan/if_run.c ============================================================================== --- projects/capsicum-test/sys/dev/usb/wlan/if_run.c Mon Apr 1 18:07:48 2019 (r345770) +++ projects/capsicum-test/sys/dev/usb/wlan/if_run.c Mon Apr 1 18:09:26 2019 (r345771) @@ -2851,10 +2851,6 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uin } if (flags & RT2860_RX_L2PAD) { - /* - * XXX OpenBSD removes padding between header - * and payload here... - */ RUN_DPRINTF(sc, RUN_DEBUG_RECV, "received RT2860_RX_L2PAD frame\n"); len += 2; @@ -2865,8 +2861,8 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uin wh = mtod(m, struct ieee80211_frame *); - /* XXX wrong for monitor mode */ - if (wh->i_fc[1] & IEEE80211_FC1_PROTECTED) { + if ((wh->i_fc[1] & IEEE80211_FC1_PROTECTED) != 0 && + (flags & RT2860_RX_DEC) != 0) { wh->i_fc[1] &= ~IEEE80211_FC1_PROTECTED; m->m_flags |= M_WEP; } @@ -2896,6 +2892,8 @@ run_rx_frame(struct run_softc *sc, struct mbuf *m, uin uint16_t phy; tap->wr_flags = 0; + if (flags & RT2860_RX_L2PAD) + tap->wr_flags |= IEEE80211_RADIOTAP_F_DATAPAD; tap->wr_antsignal = rssi; tap->wr_antenna = ant; tap->wr_dbm_antsignal = run_rssi2dbm(sc, rssi, ant); @@ -3162,14 +3160,23 @@ tr_setup: vap = data->ni->ni_vap; if (ieee80211_radiotap_active_vap(vap)) { + const struct ieee80211_frame *wh; struct run_tx_radiotap_header *tap = &sc->sc_txtap; struct rt2860_txwi *txwi = (struct rt2860_txwi *)(&data->desc + sizeof(struct rt2870_txd)); + int has_l2pad; + + wh = mtod(m, struct ieee80211_frame *); + has_l2pad = IEEE80211_HAS_ADDR4(wh) != + IEEE80211_QOS_HAS_SEQ(wh); + tap->wt_flags = 0; tap->wt_rate = rt2860_rates[data->ridx].rate; tap->wt_hwqueue = index; if (le16toh(txwi->phy) & RT2860_PHY_SHPRE) tap->wt_flags |= IEEE80211_RADIOTAP_F_SHORTPRE; + if (has_l2pad) + tap->wt_flags |= IEEE80211_RADIOTAP_F_DATAPAD; ieee80211_radiotap_tx(vap, m); } Modified: projects/capsicum-test/sys/dev/usb/wlan/if_uath.c ============================================================================== --- projects/capsicum-test/sys/dev/usb/wlan/if_uath.c Mon Apr 1 18:07:48 2019 (r345770) +++ projects/capsicum-test/sys/dev/usb/wlan/if_uath.c Mon Apr 1 18:09:26 2019 (r345771) @@ -1276,8 +1276,8 @@ uath_watchdog(void *arg) if (sc->sc_tx_timer > 0) { if (--sc->sc_tx_timer == 0) { device_printf(sc->sc_dev, "device timeout\n"); - /*uath_init(sc); XXX needs a process context! */ counter_u64_add(ic->ic_oerrors, 1); + ieee80211_restart_all(ic); return; } callout_reset(&sc->watchdog_ch, hz, uath_watchdog, sc); Modified: projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c ============================================================================== --- projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c Mon Apr 1 18:07:48 2019 (r345770) +++ projects/capsicum-test/sys/dev/usb/wlan/if_urtw.c Mon Apr 1 18:09:26 2019 (r345771) @@ -1891,11 +1891,13 @@ static void urtw_watchdog(void *arg) { struct urtw_softc *sc = arg; + struct ieee80211com *ic = &sc->sc_ic; if (sc->sc_txtimer > 0) { if (--sc->sc_txtimer == 0) { device_printf(sc->sc_dev, "device timeout\n"); - counter_u64_add(sc->sc_ic.ic_oerrors, 1); + counter_u64_add(ic->ic_oerrors, 1); + ieee80211_restart_all(ic); return; } callout_reset(&sc->sc_watchdog_ch, hz, urtw_watchdog, sc); Modified: projects/capsicum-test/tests/sys/audit/Makefile ============================================================================== --- projects/capsicum-test/tests/sys/audit/Makefile Mon Apr 1 18:07:48 2019 (r345770) +++ projects/capsicum-test/tests/sys/audit/Makefile Mon Apr 1 18:09:26 2019 (r345771) @@ -55,4 +55,6 @@ WARNS?= 6 LDFLAGS+= -lbsm -lutil +CFLAGS.process-control.c+= -I${SRCTOP}/tests + .include Modified: projects/capsicum-test/tests/sys/audit/process-control.c ============================================================================== --- projects/capsicum-test/tests/sys/audit/process-control.c Mon Apr 1 18:07:48 2019 (r345770) +++ projects/capsicum-test/tests/sys/audit/process-control.c Mon Apr 1 18:09:26 2019 (r345771) @@ -48,6 +48,8 @@ #include "utils.h" +#include "freebsd_test_suite/macros.h" + static pid_t pid; static int filedesc, status; static struct pollfd fds[1]; @@ -1512,15 +1514,8 @@ ATF_TC_HEAD(cap_enter_success, tc) ATF_TC_BODY(cap_enter_success, tc) { - int capinfo; - size_t len = sizeof(capinfo); - const char *capname = "kern.features.security_capability_mode"; - ATF_REQUIRE_EQ(0, sysctlbyname(capname, &capinfo, &len, NULL, 0)); + ATF_REQUIRE_FEATURE("security_capability_mode"); - /* Without CAPABILITY_MODE enabled, cap_enter() returns ENOSYS */ - if (!capinfo) - atf_tc_skip("Capsicum is not enabled in the system"); - FILE *pipefd = setup(fds, auclass); ATF_REQUIRE((pid = fork()) != -1); if (pid) { @@ -1550,14 +1545,9 @@ ATF_TC_HEAD(cap_getmode_success, tc) ATF_TC_BODY(cap_getmode_success, tc) { - int capinfo, modep; - size_t len = sizeof(capinfo); - const char *capname = "kern.features.security_capability_mode"; - ATF_REQUIRE_EQ(0, sysctlbyname(capname, &capinfo, &len, NULL, 0)); + int modep; - /* Without CAPABILITY_MODE enabled, cap_getmode() returns ENOSYS */ - if (!capinfo) - atf_tc_skip("Capsicum is not enabled in the system"); + ATF_REQUIRE_FEATURE("security_capability_mode"); pid = getpid(); snprintf(pcregex, sizeof(pcregex), "cap_getmode.*%d.*success", pid); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:09 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id C5254DC378 for ; Tue, 3 Sep 2019 14:06:06 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z21d21z4PBy; Tue, 3 Sep 2019 14:06:06 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id E200E1A11D; Tue, 3 Sep 2019 14:05:57 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 80B58E78B; Wed, 3 Apr 2019 02:30:00 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 398D58B542; Wed, 3 Apr 2019 02:30:00 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 22832E789; Wed, 3 Apr 2019 02:30:00 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 0EBCAE784 for ; Wed, 3 Apr 2019 02:29:57 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id D40188B53C; Wed, 3 Apr 2019 02:29:56 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AF6F67473; Wed, 3 Apr 2019 02:29:56 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x332TugG086699; Wed, 3 Apr 2019 02:29:56 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x332Tusu086697; Wed, 3 Apr 2019 02:29:56 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904030229.x332Tusu086697@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345823 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345823 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 398D58B542 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.95)[-0.950,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:09 -0000 X-Original-Date: Wed, 3 Apr 2019 02:29:56 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:09 -0000 Author: asomers Date: Wed Apr 3 02:29:56 2019 New Revision: 345823 URL: https://svnweb.freebsd.org/changeset/base/345823 Log: fusefs: during ftruncate, discard cached data past truncation point During truncate, fusefs was discarding entire cached blocks, but it wasn't zeroing out the unused portion of a final partial block. This resulted in reads returning stale data. PR: 233783 Reported by: fsx Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_node.c projects/fuse2/tests/sys/fs/fusefs/setattr.cc Modified: projects/fuse2/sys/fs/fuse/fuse_node.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.c Wed Apr 3 01:30:59 2019 (r345822) +++ projects/fuse2/sys/fs/fuse/fuse_node.c Wed Apr 3 02:29:56 2019 (r345823) @@ -79,6 +79,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -413,17 +414,45 @@ fuse_vnode_setsize(struct vnode *vp, struct ucred *cre { struct fuse_vnode_data *fvdat = VTOFUD(vp); off_t oldsize; + size_t iosize; + struct buf *bp = NULL; int err = 0; ASSERT_VOP_ELOCKED(vp, "fuse_vnode_setsize"); + iosize = fuse_iosize(vp); oldsize = fvdat->filesize; fvdat->filesize = newsize; fvdat->flag |= FN_SIZECHANGE; if (newsize < oldsize) { + daddr_t lbn; + size_t zsize; + err = vtruncbuf(vp, cred, newsize, fuse_iosize(vp)); + if (err) + goto out; + if (newsize % iosize == 0) + goto out; + /* + * Zero the contents of the last partial block. + * Sure seems like vtruncbuf should do this for us. + */ + + lbn = newsize / iosize; + bp = getblk(vp, lbn, iosize, PCATCH, 0, 0); + if (!bp) { + err = EINTR; + goto out; + } + if (!(bp->b_flags & B_CACHE)) + goto out; /* Nothing to do */ + zsize = (lbn + 1) * iosize - newsize; + bzero(bp->b_data + newsize - lbn * iosize, zsize); } +out: + if (bp) + brelse(bp); vnode_pager_setsize(vp, newsize); return err; } Modified: projects/fuse2/tests/sys/fs/fusefs/setattr.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/setattr.cc Wed Apr 3 01:30:59 2019 (r345822) +++ projects/fuse2/tests/sys/fs/fusefs/setattr.cc Wed Apr 3 02:29:56 2019 (r345823) @@ -366,6 +366,116 @@ TEST_F(Setattr, truncate) { EXPECT_EQ(0, truncate(FULLPATH, newsize)) << strerror(errno); } +/* + * Truncating a file should discard cached data past the truncation point. + * This is a regression test for bug 233783. The bug only applies when + * vfs.fusefs.data_cache_mode=1 or 2, but the test should pass regardless. + */ +TEST_F(Setattr, truncate_discards_cached_data) { + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + void *w0buf, *rbuf, *expected; + off_t w0_offset = 0x1b8df; + size_t w0_size = 0x61e8; + off_t r_offset = 0xe1e6; + off_t r_size = 0xe229; + size_t trunc0_size = 0x10016; + size_t trunc1_size = 131072; + size_t cur_size = 0; + const uint64_t ino = 42; + mode_t mode = S_IFREG | 0644; + int fd; + + w0buf = malloc(w0_size); + ASSERT_NE(NULL, w0buf) << strerror(errno); + memset(w0buf, 'X', w0_size); + + rbuf = malloc(r_size); + ASSERT_NE(NULL, rbuf) << strerror(errno); + + expected = malloc(r_size); + ASSERT_NE(NULL, expected) << strerror(errno); + memset(expected, 0, r_size); + + expect_lookup(RELPATH, ino, mode, 0, 1); + expect_open(ino, O_RDWR, 1); + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_GETATTR && + in->header.nodeid == ino); + }, Eq(true)), + _) + ).WillRepeatedly(Invoke(ReturnImmediate([&](auto i __unused, auto out) { + SET_OUT_HEADER_LEN(out, attr); + out->body.attr.attr.ino = ino; + out->body.attr.attr.mode = mode; + out->body.attr.attr.size = cur_size; + }))); + /* + * The exact pattern of FUSE_WRITE operations depends on the setting of + * vfs.fusefs.data_cache_mode. But it's not important for this test. + * Just set the mocks to accept anything + */ + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_WRITE); + }, Eq(true)), + _) + ).WillRepeatedly(Invoke(ReturnImmediate([&](auto in, auto out) { + SET_OUT_HEADER_LEN(out, write); + out->body.attr.attr.ino = ino; + out->body.write.size = in->body.write.size; + cur_size = std::max(cur_size, + in->body.write.size + in->body.write.offset); + }))); + + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_SETATTR && + in->header.nodeid == ino && + (in->body.setattr.valid & FATTR_SIZE)); + }, Eq(true)), + _) + ).WillRepeatedly(Invoke(ReturnImmediate([&](auto in, auto out) { + auto trunc_size = in->body.setattr.size; + SET_OUT_HEADER_LEN(out, attr); + out->body.attr.attr.ino = ino; + out->body.attr.attr.mode = mode; + out->body.attr.attr.size = trunc_size; + cur_size = trunc_size; + }))); + + /* exact pattern of FUSE_READ depends on vfs.fusefs.data_cache_mode */ + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_READ); + }, Eq(true)), + _) + ).WillRepeatedly(Invoke(ReturnImmediate([&](auto in, auto out) { + auto osize = std::min(cur_size - in->body.read.offset, + (size_t)in->body.read.size); + out->header.len = sizeof(struct fuse_out_header) + osize; + bzero(out->body.bytes, osize); + }))); + + fd = open(FULLPATH, O_RDWR, 0644); + ASSERT_LE(0, fd) << strerror(errno); + + ASSERT_EQ((ssize_t)w0_size, pwrite(fd, w0buf, w0_size, w0_offset)); + /* 1st truncate should discard cached data */ + EXPECT_EQ(0, ftruncate(fd, trunc0_size)) << strerror(errno); + /* 2nd truncate extends file into previously cached data */ + EXPECT_EQ(0, ftruncate(fd, trunc1_size)) << strerror(errno); + /* Read should return all zeros */ + ASSERT_EQ((ssize_t)r_size, pread(fd, rbuf, r_size, r_offset)); + + ASSERT_EQ(0, memcmp(expected, rbuf, r_size)); + + free(expected); + free(rbuf); + free(w0buf); +} + /* Change a file's timestamps */ TEST_F(Setattr, utimensat) { const char FULLPATH[] = "mountpoint/some_file.txt"; From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:07 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2C103DC269 for ; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yy1Rjnz4P7C; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 23EB61A02E; Tue, 3 Sep 2019 14:05:56 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id C93FC14CB3; Mon, 1 Apr 2019 21:04:17 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 418D189A4C; Mon, 1 Apr 2019 21:04:17 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1749814C8E; Mon, 1 Apr 2019 21:04:17 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E34C814C8C for ; Mon, 1 Apr 2019 21:04:13 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AF03889A47; Mon, 1 Apr 2019 21:04:13 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 889611C0B9; Mon, 1 Apr 2019 21:04:13 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31L4DrQ060295; Mon, 1 Apr 2019 21:04:13 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31L4DGg060294; Mon, 1 Apr 2019 21:04:13 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904012104.x31L4DGg060294@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345782 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345782 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 418D189A4C X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.968,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:07 -0000 X-Original-Date: Mon, 1 Apr 2019 21:04:13 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:07 -0000 Author: ngie Date: Mon Apr 1 21:04:13 2019 New Revision: 345782 URL: https://svnweb.freebsd.org/changeset/base/345782 Log: Fix grammar-o: it's -> its Thanks @emaste! Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Mon Apr 1 20:42:15 2019 (r345781) +++ projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Mon Apr 1 21:04:13 2019 (r345782) @@ -57,7 +57,7 @@ class SetupEnvironment : public ::testing::Environment } if (trap_enotcap_enabled) { GTEST_SKIP() << "Debug sysctl, " << oid << ", enabled. " - << "Skipping tests because it's enablement invalidates the " + << "Skipping tests because its enablement invalidates the " << "test results."; } #endif /* FreeBSD */ From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:12 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1104CDC519 for ; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z73dcjz4PJ7; Tue, 3 Sep 2019 14:06:11 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 35B461A2B3; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id EA84F1791B; Thu, 4 Apr 2019 17:20:59 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9F7C58354C; Thu, 4 Apr 2019 17:20:59 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 4A2F51791A; Thu, 4 Apr 2019 17:20:59 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 3B9C817918 for ; Thu, 4 Apr 2019 17:20:56 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 071EF8353C; Thu, 4 Apr 2019 17:20:56 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id D80D17A2; Thu, 4 Apr 2019 17:20:55 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x34HKtrI029031; Thu, 4 Apr 2019 17:20:55 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x34HKtYn029030; Thu, 4 Apr 2019 17:20:55 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904041720.x34HKtYn029030@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345877 - projects/fuse2-googletest-engine X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/fuse2-googletest-engine X-SVN-Commit-Revision: 345877 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 9F7C58354C X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.93 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.93)[-0.927,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:12 -0000 X-Original-Date: Thu, 4 Apr 2019 17:20:55 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:12 -0000 Author: ngie Date: Thu Apr 4 17:20:55 2019 New Revision: 345877 URL: https://svnweb.freebsd.org/changeset/base/345877 Log: Copy ^/projects/fuse2 to ^/projects/fuse2-googletest-engine The purpose of this branch is to overlay the changes I'm proposing as part of ^/projects/kyua-use-googletest-test-interface with the work that asomers is doing, with the intent of making sure that the tests continue to function when the Google Test support is added to Kyua (see https://github.com/jmmv/kyua/pull/203 for more details). Added: - copied from r345876, projects/fuse2/ Directory Properties: projects/fuse2-googletest-engine/ (props changed) From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:05 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 246ABDC1DE for ; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yw1wfkz4P5K; Tue, 3 Sep 2019 14:06:00 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id ED5A619F67; Tue, 3 Sep 2019 14:05:53 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 674706E19; Mon, 1 Apr 2019 07:31:12 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2C1F68941F; Mon, 1 Apr 2019 07:31:12 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1075C6E17; Mon, 1 Apr 2019 07:31:12 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id F3FF16E15 for ; Mon, 1 Apr 2019 07:31:08 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [IPv6:2610:1c1:1:606c::24b:4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 930BE89414; Mon, 1 Apr 2019 07:31:08 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from venus.codepro.be (venus.codepro.be [5.9.86.228]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "smtp.codepro.be", Issuer "Let's Encrypt Authority X3" (verified OK)) (Authenticated sender: kp) by smtp.freebsd.org (Postfix) with ESMTPSA id 6ED761A307; Mon, 1 Apr 2019 07:31:08 +0000 (UTC) (envelope-from kp@FreeBSD.org) Received: from [10.69.87.58] (unknown [149.11.171.2]) (Authenticated sender: kp) by venus.codepro.be (Postfix) with ESMTPSA id 1D6AC2E23E; Mon, 1 Apr 2019 09:31:07 +0200 (CEST) From: "Kristof Provost" To: "Cy Schubert" Cc: "Ed Schouten" , src-committers , svn-src-projects@freebsd.org Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl X-Mailer: MailMate (2.0BETAr6135) Message-ID: <9E67836D-5E66-4E82-AB3F-F854AE008759@FreeBSD.org> In-Reply-To: <201904010728.x317SWXD076162@slippy.cwsent.com> References: <201904010728.x317SWXD076162@slippy.cwsent.com> MIME-Version: 1.0 Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2C1F68941F X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.97)[-0.971,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:05 -0000 X-Original-Date: Mon, 01 Apr 2019 09:31:06 +0200 X-List-Received-Date: Tue, 03 Sep 2019 14:06:05 -0000 On 1 Apr 2019, at 9:28, Cy Schubert wrote: > In message , Kristof > Provost > writes: >> >> >>> On 1 Apr 2019, at 08:39, Ed Schouten wrote: >>> >>> Op ma 1 apr. 2019 om 07:53 schreef Kristof Provost : >>>> Users are advised to migrate to ipf. >>> >>> Has anyone considered importing netfilter/iptables? >>> >> Nftables, surely? >> We wouldn’t want to import their outdated firewall. > > Does it support RFC 1149 and RFC 2549? None of our firewalls do. Then > again, neither does our stack. How difficult would it be to support > this? > I’ve done some investigating, and the current research indicates that while it is possible to filter RFC 1149 and RFC 2549 it’s very hard to train the falcons, and it does make a bit of a mess when you drop packets. Regards, Kristof From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:17 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2F367DC68C for ; Tue, 3 Sep 2019 14:06:17 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zD663Cz4PNC; Tue, 3 Sep 2019 14:06:16 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id A95741A3F8; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 684B7D133; Fri, 5 Apr 2019 15:04:29 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3017595633; Fri, 5 Apr 2019 15:04:29 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1C648D132; Fri, 5 Apr 2019 15:04:29 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 62C08D12A for ; Fri, 5 Apr 2019 15:04:26 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2BD779562E; Fri, 5 Apr 2019 15:04:26 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id EDB76EC44; Fri, 5 Apr 2019 15:04:25 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x35F4Pv2048362; Fri, 5 Apr 2019 15:04:25 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x35F4PBc048360; Fri, 5 Apr 2019 15:04:25 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904051504.x35F4PBc048360@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345949 - projects/fuse2/tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/tests/sys/fs/fusefs X-SVN-Commit-Revision: 345949 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3017595633 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.96)[-0.963,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:17 -0000 X-Original-Date: Fri, 5 Apr 2019 15:04:25 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:17 -0000 Author: asomers Date: Fri Apr 5 15:04:25 2019 New Revision: 345949 URL: https://svnweb.freebsd.org/changeset/base/345949 Log: fusefs: reenable some fsyncdir tests These tests were actually fixed by r345398, r345390 and r345392, but I neglected to reenable them. Too bad googletest doesn't have the notion of an Expected Failure like ATF does. PR: 236474, 236473 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/tests/sys/fs/fusefs/fsync.cc projects/fuse2/tests/sys/fs/fusefs/fsyncdir.cc Modified: projects/fuse2/tests/sys/fs/fusefs/fsync.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/fsync.cc Fri Apr 5 14:44:23 2019 (r345948) +++ projects/fuse2/tests/sys/fs/fusefs/fsync.cc Fri Apr 5 15:04:25 2019 (r345949) @@ -56,6 +56,11 @@ void expect_fsync(uint64_t ino, uint32_t flags, int er ResultOf([=](auto in) { return (in->header.opcode == FUSE_FSYNC && in->header.nodeid == ino && + /* + * TODO: reenable pid check after fixing + * bug 236379 + */ + //(pid_t)in->header.pid == getpid() && in->body.fsync.fh == FH && in->body.fsync.fsync_flags == flags); }, Eq(true)), @@ -76,7 +81,7 @@ void expect_write(uint64_t ino, uint64_t size, const v }; /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236379 */ -TEST_F(Fsync, DISABLED_aio_fsync) +TEST_F(Fsync, aio_fsync) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; Modified: projects/fuse2/tests/sys/fs/fusefs/fsyncdir.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/fsyncdir.cc Fri Apr 5 14:44:23 2019 (r345948) +++ projects/fuse2/tests/sys/fs/fusefs/fsyncdir.cc Fri Apr 5 15:04:25 2019 (r345949) @@ -56,6 +56,10 @@ void expect_fsyncdir(uint64_t ino, uint32_t flags, int ResultOf([=](auto in) { return (in->header.opcode == FUSE_FSYNCDIR && in->header.nodeid == ino && + /* + * TODO: reenable pid check after fixing + * bug 236379 + */ //(pid_t)in->header.pid == getpid() && in->body.fsyncdir.fh == FH && in->body.fsyncdir.fsync_flags == flags); @@ -72,9 +76,7 @@ void expect_lookup(const char *relpath, uint64_t ino) }; /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236379 */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236473 */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ -TEST_F(FsyncDir, DISABLED_aio_fsync) +TEST_F(FsyncDir, aio_fsync) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -98,9 +100,7 @@ TEST_F(FsyncDir, DISABLED_aio_fsync) /* Deliberately leak fd. close(2) will be tested in release.cc */ } -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236473 */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ -TEST_F(FsyncDir, DISABLED_eio) +TEST_F(FsyncDir, eio) { const char FULLPATH[] = "mountpoint/some_dir"; const char RELPATH[] = "some_dir"; @@ -124,7 +124,6 @@ TEST_F(FsyncDir, DISABLED_eio) * subsequent calls to VOP_FSYNC will succeed automatically without being sent * to the filesystem daemon */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236557 */ TEST_F(FsyncDir, DISABLED_enosys) { @@ -147,8 +146,7 @@ TEST_F(FsyncDir, DISABLED_enosys) /* Deliberately leak fd. close(2) will be tested in release.cc */ } -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ -TEST_F(FsyncDir, DISABLED_fsyncdata) +TEST_F(FsyncDir, fsyncdata) { const char FULLPATH[] = "mountpoint/some_dir"; const char RELPATH[] = "some_dir"; @@ -170,9 +168,7 @@ TEST_F(FsyncDir, DISABLED_fsyncdata) * Unlike regular files, the kernel doesn't know whether a directory is or * isn't dirty, so fuse(4) should always send FUSE_FSYNCDIR on fsync(2) */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236473 */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236474 */ -TEST_F(FsyncDir, DISABLED_fsync) +TEST_F(FsyncDir, fsync) { const char FULLPATH[] = "mountpoint/some_dir"; const char RELPATH[] = "some_dir"; From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:14 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 12E3EDC58B for ; Tue, 3 Sep 2019 14:06:14 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z93nk3z4PL1; Tue, 3 Sep 2019 14:06:13 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 37E791A34B; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E5AD31AEC; Fri, 5 Apr 2019 03:35:44 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 47C0D73394; Fri, 5 Apr 2019 03:35:44 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0B8671A9B; Fri, 5 Apr 2019 03:35:44 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E94FE1A99 for ; Fri, 5 Apr 2019 03:35:40 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B89BA7338D; Fri, 5 Apr 2019 03:35:40 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 90FC675C6; Fri, 5 Apr 2019 03:35:40 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x353ZeRs057980; Fri, 5 Apr 2019 03:35:40 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x353ZeZx057979; Fri, 5 Apr 2019 03:35:40 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904050335.x353ZeZx057979@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345903 - projects/fuse2/contrib/googletest/googletest/test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/fuse2/contrib/googletest/googletest/test X-SVN-Commit-Revision: 345903 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 47C0D73394 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.94)[-0.944,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:14 -0000 X-Original-Date: Fri, 5 Apr 2019 03:35:40 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:14 -0000 Author: ngie Date: Fri Apr 5 03:35:40 2019 New Revision: 345903 URL: https://svnweb.freebsd.org/changeset/base/345903 Log: Fix the branch build Copy gtest_skip_in_environment_setup_test.cc (added in r345770) from ^/head . Added: projects/fuse2/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc - copied unchanged from r345902, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc Copied: projects/fuse2/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc (from r345902, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/fuse2/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc Fri Apr 5 03:35:40 2019 (r345903, copy of r345902, head/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc) @@ -0,0 +1,60 @@ +// Copyright 2019, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This test verifies that skipping in the environment results in the +// testcases being skipped. +// +// This is a reproduction case for +// https://github.com/google/googletest/issues/2189 . + +#include +#include + +class SetupEnvironment : public testing::Environment { +public: + void SetUp() override { + GTEST_SKIP() << "Skipping the entire environment"; + } +}; + +TEST(Test, AlwaysPasses) { + EXPECT_EQ(true, true); +} + +TEST(Test, AlwaysFails) { + EXPECT_EQ(true, false); +} + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + + testing::AddGlobalTestEnvironment(new SetupEnvironment()); + + return (RUN_ALL_TESTS()); +} From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:10 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 81A0CDC3A9 for ; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z30tw9z4PCw; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 6FD011A165; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E10FB14DB3; Wed, 3 Apr 2019 07:31:50 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2B9D997DA3; Wed, 3 Apr 2019 07:31:50 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0CDC214D47; Wed, 3 Apr 2019 07:31:50 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 1CB1914D42; Wed, 3 Apr 2019 07:31:47 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BB8B097D83; Wed, 3 Apr 2019 07:31:46 +0000 (UTC) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: from gndrsh.dnsmgr.net (localhost [127.0.0.1]) by gndrsh.dnsmgr.net (8.13.3/8.13.3) with ESMTP id x337ViJu025443; Wed, 3 Apr 2019 00:31:44 -0700 (PDT) (envelope-from freebsd@gndrsh.dnsmgr.net) Received: (from freebsd@localhost) by gndrsh.dnsmgr.net (8.13.3/8.13.3/Submit) id x337VibS025442; Wed, 3 Apr 2019 00:31:44 -0700 (PDT) (envelope-from freebsd) From: "Rodney W. Grimes" Message-Id: <201904030731.x337VibS025442@gndrsh.dnsmgr.net> Subject: Re: svn commit: r345833 - projects/runtime-coverage In-Reply-To: <201904030540.x335e5K5088542@repo.freebsd.org> To: Enji Cooper CC: src-committers@freebsd.org, svn-src-projects@freebsd.org Reply-To: rgrimes@freebsd.org X-Mailer: ELM [version 2.4ME+ PL121h (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2B9D997DA3 X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.99 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.99)[-0.991,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:10 -0000 X-Original-Date: Wed, 3 Apr 2019 00:31:44 -0700 (PDT) X-List-Received-Date: Tue, 03 Sep 2019 14:06:10 -0000 > Author: ngie > Date: Wed Apr 3 05:40:04 2019 > New Revision: 345833 > URL: https://svnweb.freebsd.org/changeset/base/345833 > > Log: > Prune outdated branch > > ^/projects/runtime-coverage has been superseded by > ^/projects/runtime-coverage-v2 . > > Deleted: > projects/runtime-coverage/ You do know that it makes finding these prior work things very hard? Why do they need to be deleted since they are just a top level project directory that you need to checkout explicitly. -- Rod Grimes rgrimes@freebsd.org From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:10 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6906CDC39E for ; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z304vxz4PCj; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 314DC1A14D; Tue, 3 Sep 2019 14:05:58 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 0F2B111BDF; Wed, 3 Apr 2019 05:43:37 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4899B927AF; Wed, 3 Apr 2019 05:43:36 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 198FA11B8E; Wed, 3 Apr 2019 05:43:36 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 003B911B8C for ; Wed, 3 Apr 2019 05:43:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9F85E927A9; Wed, 3 Apr 2019 05:43:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7494E976D; Wed, 3 Apr 2019 05:43:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x335hWsf093337; Wed, 3 Apr 2019 05:43:32 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x335hW9b093336; Wed, 3 Apr 2019 05:43:32 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904030543.x335hW9b093336@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345834 - projects/runtime-coverage-v2/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage-v2/share/mk X-SVN-Commit-Revision: 345834 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4899B927AF X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.97)[-0.971,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:10 -0000 X-Original-Date: Wed, 3 Apr 2019 05:43:32 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:10 -0000 Author: ngie Date: Wed Apr 3 05:43:32 2019 New Revision: 345834 URL: https://svnweb.freebsd.org/changeset/base/345834 Log: --coverage should apply to static programs too Statically compiled programs, like `/usr/tests/sys/capsicum-test/mini-me*`, should have coverage compile time/linker flags applied to them as well as the objects are compiled with with `--coverage`, etc. This fixes a linker error with `tests/sys/capsicum:mini-me`. Modified: projects/runtime-coverage-v2/share/mk/bsd.prog.mk Modified: projects/runtime-coverage-v2/share/mk/bsd.prog.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/bsd.prog.mk Wed Apr 3 05:40:04 2019 (r345833) +++ projects/runtime-coverage-v2/share/mk/bsd.prog.mk Wed Apr 3 05:43:32 2019 (r345834) @@ -78,12 +78,11 @@ TAG_ARGS= -T ${TAGS:[*]:S/ /,/g} .if defined(NO_SHARED) && ${NO_SHARED:tl} != "no" LDFLAGS+= -static -.else +.endif .if defined(_WANTS_DEBUG) && ${MK_COVERAGE} != "no" _COV_FLAG= --coverage -fprofile-dir=${COVERAGEDIR} CFLAGS+= ${_COV_FLAG} CXXFLAGS+= ${_COV_FLAG} -.endif .endif .if ${MK_DEBUG_FILES} != "no" From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:07 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 30BA2DC26F for ; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yy3LTzz4P7g; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 1B4A11A028; Tue, 3 Sep 2019 14:05:55 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 475011328A; Mon, 1 Apr 2019 20:02:31 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4C49986B90; Mon, 1 Apr 2019 20:02:30 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 19C2913224; Mon, 1 Apr 2019 20:02:30 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id AB6F513222 for ; Mon, 1 Apr 2019 20:02:27 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5ECFC86B82; Mon, 1 Apr 2019 20:02:27 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 360281B4CE; Mon, 1 Apr 2019 20:02:27 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x31K2RWV027206; Mon, 1 Apr 2019 20:02:27 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x31K2RM4027205; Mon, 1 Apr 2019 20:02:27 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904012002.x31K2RM4027205@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345779 - projects/capsicum-test/contrib/capsicum-test X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/capsicum-test/contrib/capsicum-test X-SVN-Commit-Revision: 345779 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4C49986B90 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.96)[-0.955,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:08 -0000 X-Original-Date: Mon, 1 Apr 2019 20:02:27 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:08 -0000 Author: ngie Date: Mon Apr 1 20:02:26 2019 New Revision: 345779 URL: https://svnweb.freebsd.org/changeset/base/345779 Log: Clarify why `kern.trap_enotcap` being set should cause the tests to be skipped. Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Modified: projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc ============================================================================== --- projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Mon Apr 1 19:19:51 2019 (r345778) +++ projects/capsicum-test/contrib/capsicum-test/capsicum-test-main.cc Mon Apr 1 20:02:26 2019 (r345779) @@ -47,6 +47,8 @@ class SetupEnvironment : public ::testing::Environment GTEST_SKIP() << "Skipping tests because capsicum support is not " << "enabled in the kernel."; } + // If this OID is enabled, it will send SIGTRAP to the process when + // `ENOTCAPABLE` is returned. const char *oid = "kern.trap_enotcap"; rc = sysctlbyname(oid, &trap_enotcap_enabled, &trap_enotcap_enabled_len, nullptr, 0); @@ -54,8 +56,9 @@ class SetupEnvironment : public ::testing::Environment GTEST_FAIL() << "sysctlbyname failed: " << strerror(errno); } if (trap_enotcap_enabled) { - GTEST_SKIP() << "Sysctl " << oid << " enabled. " - << "Skipping tests to avoid non-determinism with results."; + GTEST_SKIP() << "Debug sysctl " << oid << " enabled. " + << "Skipping tests because it's enablement invalidates the " + << "test results."; } #endif /* FreeBSD */ } From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:08 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 32DE8DC272 for ; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7yy1kwtz4P7R; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 2A5161A034; Tue, 3 Sep 2019 14:05:56 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id C572915132; Mon, 1 Apr 2019 21:13:20 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 22CEF8A1E1; Mon, 1 Apr 2019 21:13:20 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0DD77150F4; Mon, 1 Apr 2019 21:13:20 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 33794150F0; Mon, 1 Apr 2019 21:13:17 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: from mail-pf1-x42b.google.com (mail-pf1-x42b.google.com [IPv6:2607:f8b0:4864:20::42b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B87948A1D9; Mon, 1 Apr 2019 21:13:16 +0000 (UTC) (envelope-from yaneurabeya@gmail.com) Received: by mail-pf1-x42b.google.com with SMTP id b3so5195896pfd.1; Mon, 01 Apr 2019 14:13:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=BIYkOLeOLQtqtAfsO2IxJdbh7viYYwEQp3fYY+UO2Z8=; b=unOgn1j3TmIoeAqOVmiJmt8sD6MJDEoX5EWXy89TLh+ZP/A/L9nXEYRbSlyFPArzXg ytEPa2k+Pm6p3rlBYenC7kKZ2fyP/pbG9I7KdJLiMcgNAKSWtxwucjkDzQcWF++3RT3O 9xG62L/BuQv2NEKcXE2keHvUtYKvKbmvqO1s9f7uk1j3royUHEBl8UkHPC3vf+YpxfBY cN6WLtzRlHryjk7xnRjqarPP9kPF3KZuDzs6h6IBY38FuporvQfFE/ElYHKQiLv2mGGf YKVSZXcUg8gALG4P2YPOUPRpbIha7aPuC+MggH6zP7lU1Ez/HIDirRRyXLRFZgRsd5xo oyBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=BIYkOLeOLQtqtAfsO2IxJdbh7viYYwEQp3fYY+UO2Z8=; b=jWxCetD4H1CIBWiwMn1Qfm68IFWKt0A5MUTylTUMhdtzFXmw59JUNIlvzCIxsyQLJ0 lD765VHQPPyOTeM+OcFFaWPAqVBBUJXOzZ2sOvdWu8ZNFoIHY7CxxcQuVhR3NUPgD26l axdKbkCqyqMxfuMz7/9erC2/UJ+yHUYxwvNuAPobULM0nht4oGAinnSsrQIjQTvRpEzx RrxK2CqAhZPUHPQs9Bfpa36AyTZ6LYfQv8aP9gPa/YSqyaSTTil2C5/bRSMZEnNcKBgg y+9UXTELd/k4+x/1p5d6xvnIF91gUrgMpf6bRYz54XEqIKr2Sd8grsrEalTXsGXUWq+E G3/g== X-Gm-Message-State: APjAAAVR1ut1NX246sMhlbe3LS/qVpMElVBJyXWWtNvGoUk+v9Ct3owt q8MJrVYM3aR49rdAXU6Qv1aBkCVqYgU= X-Google-Smtp-Source: APXvYqzTLnJr5oYgLjS+PrqUjTRw7tqm7LKD5pceuorKPqfFNxDwY4m0G6MyaNP6HiUm47jIS36ilQ== X-Received: by 2002:a62:6490:: with SMTP id y138mr51672673pfb.230.1554153194968; Mon, 01 Apr 2019 14:13:14 -0700 (PDT) Received: from [192.168.20.7] (c-73-19-52-228.hsd1.wa.comcast.net. [73.19.52.228]) by smtp.gmail.com with ESMTPSA id k12sm14191725pfk.109.2019.04.01.14.13.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 01 Apr 2019 14:13:14 -0700 (PDT) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 12.2 \(3445.102.3\)) Subject: Re: svn commit: r345782 - projects/capsicum-test/contrib/capsicum-test From: Enji Cooper In-Reply-To: <201904012104.x31L4DGg060294@repo.freebsd.org> Cc: src-committers , svn-src-projects@freebsd.org Content-Transfer-Encoding: 7bit Message-Id: References: <201904012104.x31L4DGg060294@repo.freebsd.org> To: Enji Cooper X-Mailer: Apple Mail (2.3445.102.3) Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 22CEF8A1E1 X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.97 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.97)[-0.968,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:08 -0000 X-Original-Date: Mon, 1 Apr 2019 14:13:13 -0700 X-List-Received-Date: Tue, 03 Sep 2019 14:06:08 -0000 > On Apr 1, 2019, at 2:04 PM, Enji Cooper wrote: > > Author: ngie > Date: Mon Apr 1 21:04:13 2019 > New Revision: 345782 > URL: https://svnweb.freebsd.org/changeset/base/345782 > > Log: > Fix grammar-o: it's -> its > > Thanks @emaste! Ah, I meant @markj, not @emaste :D.. From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:08 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 3CD78DC304 for ; Tue, 3 Sep 2019 14:06:05 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z02t9Zz4P9n; Tue, 3 Sep 2019 14:06:04 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 585DD1A0C5; Tue, 3 Sep 2019 14:05:57 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id DEB236DF8; Tue, 2 Apr 2019 18:49:53 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4201D71DAF; Tue, 2 Apr 2019 18:49:53 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 12E9F6D8E; Tue, 2 Apr 2019 18:49:53 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id A7AE46D8C for ; Tue, 2 Apr 2019 18:49:50 +0000 (UTC) (envelope-from asomers@gmail.com) Received: from mail-lj1-f195.google.com (mail-lj1-f195.google.com [209.85.208.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6222771DAB; Tue, 2 Apr 2019 18:49:50 +0000 (UTC) (envelope-from asomers@gmail.com) Received: by mail-lj1-f195.google.com with SMTP id f23so12566251ljc.0; Tue, 02 Apr 2019 11:49:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=aDWDcvRRrZ3W7zJ/6ytdNtvvA3vcsIEKvj83SWW82VY=; b=nCYof8gXhNclQ3NaKbpBHFiUAYIhZYIdazfsGWGHCK+o8DPZkRtgXw8hExuU8m39Sv DHdQUrgtjuLwmdvt9XdsxEA33opWb/K3gUAOwnnTdQQcT2JuylvYrGZLy4nacJDYVi1o gsCHTzYMRCovlRvFYrLo0SGFZxW1I3+XIxQi9R9E/aSqR0t/Y4A5tGpEz58B0AOtECeA RAghZfy6HWVtGCbnjPoETrNBa+uB478p2XPjeJI5IGuzLsGOoxRwPg1ARzWmivojnSnW RTEedtFKomLFr81L4G3xUAC8840Qkq4UkPx4Bi/mecL66W2+RH3yPWV/tQb3U4sUi9CN ey5w== X-Gm-Message-State: APjAAAU2KxZog/OC6u9bofCMJNd9P9BWgZcRzqc/3XAS2gAZ7FGqlKLD 50dVW3nDFnWtiPdVdqC+6KTjLSBo6Z9gkY0q7KI= X-Google-Smtp-Source: APXvYqz0DCVTkJZDUInnv498/cM3/Ghf99uhUb1kEia85ug3moC2HLlgkVxNF3luGXlpPJHAOGdXYcOyE7uMkkR68Lg= X-Received: by 2002:a2e:9753:: with SMTP id f19mr34377788ljj.54.1554230983091; Tue, 02 Apr 2019 11:49:43 -0700 (PDT) MIME-Version: 1.0 References: <201904021844.x32Ii1wR041319@repo.freebsd.org> <77D06D49-8CE8-483C-90FF-D8CD0122599E@gmail.com> In-Reply-To: <77D06D49-8CE8-483C-90FF-D8CD0122599E@gmail.com> From: Alan Somers Message-ID: Subject: Re: svn commit: r345809 - projects/fuse2/tests/sys/fs/fusefs To: Enji Cooper Cc: src-committers , svn-src-projects@freebsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4201D71DAF X-Spamd-Bar: ------ Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-6.99 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.99)[-0.987,0]; REPLY(-4.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:08 -0000 X-Original-Date: Tue, 2 Apr 2019 12:49:31 -0600 X-List-Received-Date: Tue, 03 Sep 2019 14:06:08 -0000 On Tue, Apr 2, 2019 at 12:45 PM Enji Cooper wrote: > > > > On Apr 2, 2019, at 11:44 AM, Alan Somers wrote: > > > > Author: asomers > > Date: Tue Apr 2 18:44:01 2019 > > New Revision: 345809 > > URL: https://svnweb.freebsd.org/changeset/base/345809 > > > > Log: > > fusefs: check return value of wait(2) in fork tests > > > > Reported by: ngie > > Sponsored by: The FreeBSD Foundation > > > > Modified: > > projects/fuse2/tests/sys/fs/fusefs/utils.cc > > > > Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D > > --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Tue Apr 2 18:09:= 40 2019 (r345808) > > +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Tue Apr 2 18:44:= 01 2019 (r345809) > > @@ -321,7 +321,7 @@ out: > > /* Signal the child process to go */ > > ASSERT_EQ(0, sem_post(sem)) << strerror(errno); > > > > - wait(&child_status); > > + ASSERT_LE(0, wait(&child_status)) << strerror(errno); > > Don=E2=80=99t you want ASSERT_GE here, since you=E2=80=99re testing that = wait succeeded? > -Enji Opposite operand order. I'm asserting that 0 is less than or equal to wait's return value. -Alan From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:11 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 15B2EDC42A for ; Tue, 3 Sep 2019 14:06:09 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z36Hp3z4PDY; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 181E01A1A4; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id C7D1655FA; Wed, 3 Apr 2019 20:57:48 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4A1256D857; Wed, 3 Apr 2019 20:57:48 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1A99455D1; Wed, 3 Apr 2019 20:57:48 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 68FA055CF for ; Wed, 3 Apr 2019 20:57:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 36D7A6D852; Wed, 3 Apr 2019 20:57:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 0DB121B6A4; Wed, 3 Apr 2019 20:57:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x33KviEY081274; Wed, 3 Apr 2019 20:57:44 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x33Kvinu081270; Wed, 3 Apr 2019 20:57:44 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904032057.x33Kvinu081270@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345854 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345854 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4A1256D857 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.99 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.99)[-0.988,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:11 -0000 X-Original-Date: Wed, 3 Apr 2019 20:57:44 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:11 -0000 Author: asomers Date: Wed Apr 3 20:57:43 2019 New Revision: 345854 URL: https://svnweb.freebsd.org/changeset/base/345854 Log: fusefs: fix a panic in VOP_READDIR The original fusefs import, r238402, contained a bug in fuse_vnop_close that could close a directory's file handle while there were still other open file descriptors. The code looks deliberate, but there is no explanation for it. This necessitated a workaround in fuse_vnop_readdir that would open a new file handle if, "for some mysterious reason", that vnode didn't have any open file handles. r345781 had the effect of causing the workaround to panic, making the problem more visible. This commit removes the workaround and the original bug, which also fixes the panic. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/tests/sys/fs/fusefs/readdir.cc projects/fuse2/tests/sys/fs/fusefs/releasedir.cc projects/fuse2/tests/sys/fs/fusefs/utils.cc projects/fuse2/tests/sys/fs/fusefs/utils.hh Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Wed Apr 3 20:37:14 2019 (r345853) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Wed Apr 3 20:57:43 2019 (r345854) @@ -324,21 +324,13 @@ fuse_vnop_close(struct vop_close_args *ap) pid_t pid = td->td_proc->p_pid; int err = 0; - if (fuse_isdeadfs(vp)) { + if (fuse_isdeadfs(vp)) return 0; - } - if (vnode_isdir(vp)) { - struct fuse_filehandle *fufh; - - // XXX: what if two file descriptors have the same directory - // opened? We shouldn't close the file handle too soon. - if (fuse_filehandle_get_dir(vp, &fufh, cred, pid) == 0) - fuse_filehandle_close(vp, fufh, NULL, cred); + if (vnode_isdir(vp)) return 0; - } - if (fflag & IO_NDELAY) { + if (fflag & IO_NDELAY) return 0; - } + err = fuse_flush(vp, cred, pid, fflag); /* TODO: close the file handle, if we're sure it's no longer used */ if ((VTOFUD(vp)->flag & FN_SIZECHANGE) != 0) { @@ -1342,7 +1334,6 @@ fuse_vnop_readdir(struct vop_readdir_args *ap) struct fuse_filehandle *fufh = NULL; struct fuse_iov cookediov; int err = 0; - int freefufh = 0; pid_t pid = curthread->td_proc->p_pid; if (fuse_isdeadfs(vp)) { @@ -1353,27 +1344,15 @@ fuse_vnop_readdir(struct vop_readdir_args *ap) return EINVAL; } - if ((err = fuse_filehandle_get_dir(vp, &fufh, cred, pid)) != 0) { - SDT_PROBE2(fuse, , vnops, trace, 1, - "calling readdir() before open()"); - /* - * This was seen to happen in getdirentries as used by - * shells/fish, but I can't reproduce it. - */ - err = fuse_filehandle_open(vp, FREAD, &fufh, NULL, cred); - freefufh = 1; - } - if (err) { + err = fuse_filehandle_get_dir(vp, &fufh, cred, pid); + if (err) return (err); - } #define DIRCOOKEDSIZE FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + MAXNAMLEN + 1) fiov_init(&cookediov, DIRCOOKEDSIZE); err = fuse_internal_readdir(vp, uio, fufh, &cookediov); fiov_teardown(&cookediov); - if (freefufh) - fuse_filehandle_close(vp, fufh, NULL, cred); return err; } Modified: projects/fuse2/tests/sys/fs/fusefs/readdir.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/readdir.cc Wed Apr 3 20:37:14 2019 (r345853) +++ projects/fuse2/tests/sys/fs/fusefs/readdir.cc Wed Apr 3 20:57:43 2019 (r345854) @@ -213,13 +213,59 @@ TEST_F(Readdir, getdirentries) out->header.len = sizeof(out->header); }))); - errno = 0; fd = open(FULLPATH, O_DIRECTORY); ASSERT_LE(0, fd) << strerror(errno); r = getdirentries(fd, buf, sizeof(buf), 0); - ASSERT_EQ(0, r); + ASSERT_EQ(0, r) << strerror(errno); /* Deliberately leak fd. RELEASEDIR will be tested separately */ +} + +/* + * Nothing bad should happen if getdirentries is called on two file descriptors + * which were concurrently open, but one has already been closed. + * This is a regression test for a specific bug dating from r238402. + */ +TEST_F(Readdir, getdirentries_concurrent) +{ + const char FULLPATH[] = "mountpoint/some_dir"; + const char RELPATH[] = "some_dir"; + uint64_t ino = 42; + int fd0, fd1; + char buf[8192]; + ssize_t r; + + FuseTest::expect_lookup(RELPATH, ino, S_IFDIR | 0755, 0, 2); + expect_opendir(ino); + + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_READDIR && + in->header.nodeid == ino && + in->body.readdir.size == 8192); + }, Eq(true)), + _) + ).Times(2) + .WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto out) { + out->header.error = 0; + out->header.len = sizeof(out->header); + }))); + + fd0 = open(FULLPATH, O_DIRECTORY); + ASSERT_LE(0, fd0) << strerror(errno); + + fd1 = open(FULLPATH, O_DIRECTORY); + ASSERT_LE(0, fd1) << strerror(errno); + + r = getdirentries(fd0, buf, sizeof(buf), 0); + ASSERT_EQ(0, r) << strerror(errno); + + EXPECT_EQ(0, close(fd0)) << strerror(errno); + + r = getdirentries(fd1, buf, sizeof(buf), 0); + ASSERT_EQ(0, r) << strerror(errno); + + /* Deliberately leak fd1. */ } /* Modified: projects/fuse2/tests/sys/fs/fusefs/releasedir.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/releasedir.cc Wed Apr 3 20:37:14 2019 (r345853) +++ projects/fuse2/tests/sys/fs/fusefs/releasedir.cc Wed Apr 3 20:57:43 2019 (r345854) @@ -45,18 +45,6 @@ void expect_lookup(const char *relpath, uint64_t ino) { FuseTest::expect_lookup(relpath, ino, S_IFDIR | 0755, 0, 1); } - -void expect_releasedir(uint64_t ino, ProcessMockerT r) -{ - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_RELEASEDIR && - in->header.nodeid == ino && - in->body.release.fh == FH); - }, Eq(true)), - _) - ).WillOnce(Invoke(r)); -} }; /* If a file descriptor is duplicated, only the last close causes RELEASE */ Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Wed Apr 3 20:37:14 2019 (r345853) +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Wed Apr 3 20:57:43 2019 (r345854) @@ -232,6 +232,18 @@ void FuseTest::expect_release(uint64_t ino, uint64_t f ).WillOnce(Invoke(ReturnErrno(0))); } +void FuseTest::expect_releasedir(uint64_t ino, ProcessMockerT r) +{ + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_RELEASEDIR && + in->header.nodeid == ino && + in->body.release.fh == FH); + }, Eq(true)), + _) + ).WillOnce(Invoke(r)); +} + void FuseTest::expect_write(uint64_t ino, uint64_t offset, uint64_t isize, uint64_t osize, uint32_t flags, const void *contents) { Modified: projects/fuse2/tests/sys/fs/fusefs/utils.hh ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.hh Wed Apr 3 20:37:14 2019 (r345853) +++ projects/fuse2/tests/sys/fs/fusefs/utils.hh Wed Apr 3 20:57:43 2019 (r345854) @@ -124,6 +124,12 @@ class FuseTest : public ::testing::Test { void expect_release(uint64_t ino, uint64_t fh); /* + * Create an expectation that FUSE_RELEASEDIR will be called exactly + * once for the given inode + */ + void expect_releasedir(uint64_t ino, ProcessMockerT r); + + /* * Create an expectation that FUSE_WRITE will be called exactly once * for the given inode, at offset offset, with write_flags flags, * size isize and buffer contents. It will return osize From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:13 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id BB3AADC53A for ; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z83nKfz4PK1; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 85CE51A2FA; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 33796190C4; Thu, 4 Apr 2019 18:26:37 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 481CB8675F; Thu, 4 Apr 2019 18:26:36 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0F83D1905C; Thu, 4 Apr 2019 18:26:36 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 88FCC1905A for ; Thu, 4 Apr 2019 18:26:33 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4CBB48675A; Thu, 4 Apr 2019 18:26:33 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 390C013D3; Thu, 4 Apr 2019 18:26:33 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x34IQXA9066145; Thu, 4 Apr 2019 18:26:33 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x34IQWOs066141; Thu, 4 Apr 2019 18:26:32 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904041826.x34IQWOs066141@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345885 - in projects/fuse2: contrib/bsnmp/gensnmptree contrib/bsnmp/lib contrib/bsnmp/snmp_mibII contrib/bsnmp/snmpd contrib/capsicum-test contrib/elftoolchain/strings contrib/googlete... X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: contrib/bsnmp/gensnmptree contrib/bsnmp/lib contrib/bsnmp/snmp_mibII contrib/bsnmp/snmpd contrib/capsicum-test contrib/elftoolchain/strings contrib/googletest/googletest contrib/goo... X-SVN-Commit-Revision: 345885 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 481CB8675F X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.96)[-0.959,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:13 -0000 X-Original-Date: Thu, 4 Apr 2019 18:26:32 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:13 -0000 Author: asomers Date: Thu Apr 4 18:26:32 2019 New Revision: 345885 URL: https://svnweb.freebsd.org/changeset/base/345885 Log: MFHead@r345880 Added: projects/fuse2/contrib/bsnmp/snmpd/trans_inet.c - copied unchanged from r345880, head/contrib/bsnmp/snmpd/trans_inet.c projects/fuse2/contrib/bsnmp/snmpd/trans_inet.h - copied unchanged from r345880, head/contrib/bsnmp/snmpd/trans_inet.h projects/fuse2/contrib/capsicum-test/ - copied from r345880, head/contrib/capsicum-test/ projects/fuse2/contrib/libxo/libxo/xo_explicit.h - copied unchanged from r345880, head/contrib/libxo/libxo/xo_explicit.h projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.H.err - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.H.err projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.H.out - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.H.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.HIPx.err - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.HIPx.err projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.HIPx.out - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.HIPx.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.HP.err - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.HP.err projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.HP.out - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.HP.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.J.err - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.J.err projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.J.out - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.J.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.JP.err - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.JP.err projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.JP.out - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.JP.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.T.err - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.T.err projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.T.out - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.T.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.X.err - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.X.err projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.X.out - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.X.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.XP.err - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.XP.err projects/fuse2/contrib/libxo/tests/xo/saved/xo_02.XP.out - copied unchanged from r345880, head/contrib/libxo/tests/xo/saved/xo_02.XP.out projects/fuse2/contrib/libxo/tests/xo/xo_02.sh - copied unchanged from r345880, head/contrib/libxo/tests/xo/xo_02.sh projects/fuse2/lib/libc/aarch64/static_tls.h - copied unchanged from r345880, head/lib/libc/aarch64/static_tls.h projects/fuse2/lib/libc/amd64/static_tls.h - copied unchanged from r345880, head/lib/libc/amd64/static_tls.h projects/fuse2/lib/libc/arm/static_tls.h - copied unchanged from r345880, head/lib/libc/arm/static_tls.h projects/fuse2/lib/libc/i386/static_tls.h - copied unchanged from r345880, head/lib/libc/i386/static_tls.h projects/fuse2/lib/libc/mips/static_tls.h - copied unchanged from r345880, head/lib/libc/mips/static_tls.h projects/fuse2/lib/libc/powerpc/static_tls.h - copied unchanged from r345880, head/lib/libc/powerpc/static_tls.h projects/fuse2/lib/libc/powerpc64/static_tls.h - copied unchanged from r345880, head/lib/libc/powerpc64/static_tls.h projects/fuse2/lib/libc/riscv/static_tls.h - copied unchanged from r345880, head/lib/libc/riscv/static_tls.h projects/fuse2/lib/libc/sparc64/static_tls.h - copied unchanged from r345880, head/lib/libc/sparc64/static_tls.h projects/fuse2/lib/libsecureboot/pass_manifest.c - copied unchanged from r345880, head/lib/libsecureboot/pass_manifest.c projects/fuse2/lib/libthr/arch/aarch64/include/pthread_tls.h - copied unchanged from r345880, head/lib/libthr/arch/aarch64/include/pthread_tls.h projects/fuse2/lib/libthr/arch/amd64/include/pthread_tls.h - copied unchanged from r345880, head/lib/libthr/arch/amd64/include/pthread_tls.h projects/fuse2/lib/libthr/arch/arm/include/pthread_tls.h - copied unchanged from r345880, head/lib/libthr/arch/arm/include/pthread_tls.h projects/fuse2/lib/libthr/arch/i386/include/pthread_tls.h - copied unchanged from r345880, head/lib/libthr/arch/i386/include/pthread_tls.h projects/fuse2/lib/libthr/arch/mips/include/pthread_tls.h - copied unchanged from r345880, head/lib/libthr/arch/mips/include/pthread_tls.h projects/fuse2/lib/libthr/arch/powerpc/include/pthread_tls.h - copied unchanged from r345880, head/lib/libthr/arch/powerpc/include/pthread_tls.h projects/fuse2/lib/libthr/arch/riscv/include/pthread_tls.h - copied unchanged from r345880, head/lib/libthr/arch/riscv/include/pthread_tls.h projects/fuse2/lib/libthr/arch/sparc64/include/pthread_tls.h - copied unchanged from r345880, head/lib/libthr/arch/sparc64/include/pthread_tls.h projects/fuse2/sys/security/mac_veriexec_parser/ - copied from r345880, head/sys/security/mac_veriexec_parser/ projects/fuse2/tests/sys/geom/class/eli/online_resize_test.sh - copied unchanged from r345880, head/tests/sys/geom/class/eli/online_resize_test.sh projects/fuse2/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANFIEST - copied unchanged from r345880, head/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANFIEST Modified: projects/fuse2/contrib/bsnmp/gensnmptree/gensnmptree.1 projects/fuse2/contrib/bsnmp/gensnmptree/gensnmptree.c projects/fuse2/contrib/bsnmp/lib/snmpclient.c projects/fuse2/contrib/bsnmp/lib/snmpclient.h projects/fuse2/contrib/bsnmp/lib/tc.def projects/fuse2/contrib/bsnmp/snmp_mibII/mibII_interfaces.c projects/fuse2/contrib/bsnmp/snmpd/BEGEMOT-SNMPD.txt projects/fuse2/contrib/bsnmp/snmpd/main.c projects/fuse2/contrib/bsnmp/snmpd/snmpd.config projects/fuse2/contrib/bsnmp/snmpd/snmpd.h projects/fuse2/contrib/bsnmp/snmpd/snmpmod.h projects/fuse2/contrib/bsnmp/snmpd/trans_lsock.c projects/fuse2/contrib/bsnmp/snmpd/trans_udp.c projects/fuse2/contrib/bsnmp/snmpd/trap.c projects/fuse2/contrib/bsnmp/snmpd/tree.def projects/fuse2/contrib/elftoolchain/strings/strings.c projects/fuse2/contrib/googletest/googletest/CMakeLists.txt projects/fuse2/contrib/googletest/googletest/Makefile.am projects/fuse2/contrib/googletest/googletest/docs/advanced.md projects/fuse2/contrib/googletest/googletest/src/gtest.cc projects/fuse2/contrib/googletest/googletest/test/BUILD.bazel projects/fuse2/contrib/libxo/configure.ac projects/fuse2/contrib/libxo/doc/api.rst projects/fuse2/contrib/libxo/doc/libxo-manual.html projects/fuse2/contrib/libxo/doc/xo.rst projects/fuse2/contrib/libxo/libxo/Makefile.am projects/fuse2/contrib/libxo/libxo/libxo.c projects/fuse2/contrib/libxo/libxo/xo.h projects/fuse2/contrib/libxo/libxo/xo_attr.3 projects/fuse2/contrib/libxo/libxo/xo_buf.h projects/fuse2/contrib/libxo/libxo/xo_emit.3 projects/fuse2/contrib/libxo/libxo/xo_emit_f.3 projects/fuse2/contrib/libxo/libxo/xo_finish.3 projects/fuse2/contrib/libxo/libxo/xo_flush.3 projects/fuse2/contrib/libxo/libxo/xo_open_container.3 projects/fuse2/contrib/libxo/libxo/xo_open_list.3 projects/fuse2/contrib/libxo/libxo/xo_open_marker.3 projects/fuse2/contrib/libxo/libxo/xo_set_writer.3 projects/fuse2/contrib/libxo/tests/core/saved/test_01.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_02.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_03.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_04.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_05.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_05.JP.out projects/fuse2/contrib/libxo/tests/core/saved/test_06.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_07.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_08.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_09.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_10.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_11.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_12.E.err projects/fuse2/contrib/libxo/tests/core/saved/test_12.E.out projects/fuse2/contrib/libxo/tests/core/saved/test_12.H.err projects/fuse2/contrib/libxo/tests/core/saved/test_12.H.out projects/fuse2/contrib/libxo/tests/core/saved/test_12.HIPx.err projects/fuse2/contrib/libxo/tests/core/saved/test_12.HIPx.out projects/fuse2/contrib/libxo/tests/core/saved/test_12.HP.err projects/fuse2/contrib/libxo/tests/core/saved/test_12.HP.out projects/fuse2/contrib/libxo/tests/core/saved/test_12.J.err projects/fuse2/contrib/libxo/tests/core/saved/test_12.J.out projects/fuse2/contrib/libxo/tests/core/saved/test_12.JP.err projects/fuse2/contrib/libxo/tests/core/saved/test_12.JP.out projects/fuse2/contrib/libxo/tests/core/saved/test_12.T.err projects/fuse2/contrib/libxo/tests/core/saved/test_12.T.out projects/fuse2/contrib/libxo/tests/core/saved/test_12.X.err projects/fuse2/contrib/libxo/tests/core/saved/test_12.X.out projects/fuse2/contrib/libxo/tests/core/saved/test_12.XP.err projects/fuse2/contrib/libxo/tests/core/saved/test_12.XP.out projects/fuse2/contrib/libxo/tests/core/test_12.c projects/fuse2/contrib/libxo/tests/gettext/po/pig_latin/strerror.po projects/fuse2/contrib/libxo/tests/gettext/saved/gt_01.J.out projects/fuse2/contrib/libxo/tests/xo/Makefile.am projects/fuse2/contrib/libxo/tests/xo/saved/xo_01.H.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_01.HIPx.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_01.HP.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_01.J.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_01.JP.out projects/fuse2/contrib/libxo/tests/xo/saved/xo_01.T.out projects/fuse2/contrib/libxo/tests/xo/xo_01.sh projects/fuse2/contrib/libxo/xo/xo.1 projects/fuse2/contrib/libxo/xo/xo.c projects/fuse2/contrib/llvm/tools/clang/lib/CodeGen/CGObjCGNU.cpp projects/fuse2/gnu/usr.bin/gdb/gdb/Makefile projects/fuse2/gnu/usr.bin/gdb/kgdb/Makefile projects/fuse2/lib/clang/llvm.build.mk projects/fuse2/lib/geom/eli/geli.8 projects/fuse2/lib/geom/eli/geom_eli.c projects/fuse2/lib/googletest/gtest_main/tests/Makefile projects/fuse2/lib/libbe/be.c projects/fuse2/lib/libbsnmp/libbsnmp/Makefile projects/fuse2/lib/libc++/Makefile projects/fuse2/lib/libc++experimental/Makefile projects/fuse2/lib/libc++fs/Makefile projects/fuse2/lib/libc/gen/Symbol.map projects/fuse2/lib/libc/gen/elf_utils.c projects/fuse2/lib/libc/include/libc_private.h projects/fuse2/lib/libc/sys/interposing_table.c projects/fuse2/lib/libc/tests/stdlib/Makefile projects/fuse2/lib/libcam/Makefile projects/fuse2/lib/libclang_rt/Makefile.inc projects/fuse2/lib/libcxxrt/Makefile projects/fuse2/lib/libgcc_eh/Makefile.inc projects/fuse2/lib/libomp/Makefile projects/fuse2/lib/libsecureboot/Makefile.libsa.inc projects/fuse2/lib/libsecureboot/h/verify_file.h projects/fuse2/lib/libsecureboot/libsecureboot-priv.h projects/fuse2/lib/libsecureboot/verify_file.c projects/fuse2/lib/libthr/Makefile projects/fuse2/lib/libthr/pthread.map projects/fuse2/lib/libthr/thread/thr_list.c projects/fuse2/lib/libthr/thread/thr_private.h projects/fuse2/lib/libvgl/main.c projects/fuse2/lib/libvgl/mouse.c projects/fuse2/lib/libxo/xo_config.h projects/fuse2/lib/ofed/libibnetdisc/Makefile projects/fuse2/libexec/rc/rc.d/random projects/fuse2/libexec/rtld-elf/arm/reloc.c projects/fuse2/libexec/rtld-elf/mips/reloc.c projects/fuse2/libexec/rtld-elf/rtld.c projects/fuse2/libexec/rtld-elf/rtld.h projects/fuse2/libexec/save-entropy/save-entropy.sh projects/fuse2/release/Makefile.vm projects/fuse2/release/tools/ec2.conf projects/fuse2/release/tools/vmimage.subr projects/fuse2/sbin/bectl/bectl.8 projects/fuse2/sbin/bectl/tests/bectl_test.sh projects/fuse2/sbin/devd/devd.conf.5 projects/fuse2/sbin/fsck_msdosfs/dir.c projects/fuse2/share/man/man4/asmc.4 projects/fuse2/share/mk/bsd.progs.mk projects/fuse2/share/mk/bsd.sys.mk projects/fuse2/share/mk/googletest.test.inc.mk projects/fuse2/share/mk/src.opts.mk projects/fuse2/stand/common/boot.c projects/fuse2/stand/common/module.c projects/fuse2/stand/loader.mk projects/fuse2/sys/amd64/acpica/acpi_machdep.c projects/fuse2/sys/arm/allwinner/aw_mmc.c projects/fuse2/sys/arm/allwinner/clkng/aw_clk_nm.c projects/fuse2/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c projects/fuse2/sys/arm/ti/cpsw/if_cpsw.c projects/fuse2/sys/arm64/acpica/acpi_machdep.c projects/fuse2/sys/cam/ata/ata_all.c projects/fuse2/sys/cam/cam.c projects/fuse2/sys/cam/cam_ccb.h projects/fuse2/sys/cam/cam_periph.c projects/fuse2/sys/cam/mmc/mmc_da.c projects/fuse2/sys/cam/nvme/nvme_all.c projects/fuse2/sys/cam/nvme/nvme_all.h projects/fuse2/sys/cam/nvme/nvme_da.c projects/fuse2/sys/cam/nvme/nvme_xpt.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/fuse2/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/fuse2/sys/compat/freebsd32/freebsd32_misc.c projects/fuse2/sys/compat/linuxkpi/common/include/linux/etherdevice.h projects/fuse2/sys/compat/linuxkpi/common/include/linux/random.h projects/fuse2/sys/conf/NOTES projects/fuse2/sys/conf/files projects/fuse2/sys/conf/ldscript.powerpc64 projects/fuse2/sys/contrib/dev/acpica/changes.txt projects/fuse2/sys/contrib/dev/acpica/common/acfileio.c projects/fuse2/sys/contrib/dev/acpica/common/adisasm.c projects/fuse2/sys/contrib/dev/acpica/common/adwalk.c projects/fuse2/sys/contrib/dev/acpica/common/ahpredef.c projects/fuse2/sys/contrib/dev/acpica/common/ahtable.c projects/fuse2/sys/contrib/dev/acpica/common/dmrestag.c projects/fuse2/sys/contrib/dev/acpica/common/dmtable.c projects/fuse2/sys/contrib/dev/acpica/common/dmtables.c projects/fuse2/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/fuse2/sys/contrib/dev/acpica/compiler/aslcodegen.c projects/fuse2/sys/contrib/dev/acpica/compiler/aslcompiler.l projects/fuse2/sys/contrib/dev/acpica/compiler/asldefine.h projects/fuse2/sys/contrib/dev/acpica/compiler/aslerror.c projects/fuse2/sys/contrib/dev/acpica/compiler/aslload.c projects/fuse2/sys/contrib/dev/acpica/compiler/aslmessages.c projects/fuse2/sys/contrib/dev/acpica/compiler/aslmethod.c projects/fuse2/sys/contrib/dev/acpica/compiler/asloffset.c projects/fuse2/sys/contrib/dev/acpica/compiler/asloperands.c projects/fuse2/sys/contrib/dev/acpica/compiler/aslopt.c projects/fuse2/sys/contrib/dev/acpica/compiler/aslpredef.c projects/fuse2/sys/contrib/dev/acpica/compiler/asltransform.c projects/fuse2/sys/contrib/dev/acpica/compiler/aslutils.c projects/fuse2/sys/contrib/dev/acpica/compiler/aslxref.c projects/fuse2/sys/contrib/dev/acpica/compiler/dtcompile.c projects/fuse2/sys/contrib/dev/acpica/compiler/dttemplate.c projects/fuse2/sys/contrib/dev/acpica/components/debugger/dbexec.c projects/fuse2/sys/contrib/dev/acpica/components/debugger/dbnames.c projects/fuse2/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c projects/fuse2/sys/contrib/dev/acpica/components/disassembler/dmnames.c projects/fuse2/sys/contrib/dev/acpica/components/dispatcher/dsfield.c projects/fuse2/sys/contrib/dev/acpica/components/dispatcher/dsinit.c projects/fuse2/sys/contrib/dev/acpica/components/events/evgpeinit.c projects/fuse2/sys/contrib/dev/acpica/components/executer/exnames.c projects/fuse2/sys/contrib/dev/acpica/components/namespace/nsaccess.c projects/fuse2/sys/contrib/dev/acpica/components/namespace/nsdump.c projects/fuse2/sys/contrib/dev/acpica/components/namespace/nsinit.c projects/fuse2/sys/contrib/dev/acpica/components/namespace/nsnames.c projects/fuse2/sys/contrib/dev/acpica/components/namespace/nsobject.c projects/fuse2/sys/contrib/dev/acpica/components/namespace/nsparse.c projects/fuse2/sys/contrib/dev/acpica/components/namespace/nsrepair.c projects/fuse2/sys/contrib/dev/acpica/components/namespace/nsrepair2.c projects/fuse2/sys/contrib/dev/acpica/components/namespace/nsutils.c projects/fuse2/sys/contrib/dev/acpica/components/namespace/nsxfname.c projects/fuse2/sys/contrib/dev/acpica/components/parser/psargs.c projects/fuse2/sys/contrib/dev/acpica/components/resources/rsxface.c projects/fuse2/sys/contrib/dev/acpica/components/tables/tbdata.c projects/fuse2/sys/contrib/dev/acpica/components/tables/tbfind.c projects/fuse2/sys/contrib/dev/acpica/components/tables/tbinstal.c projects/fuse2/sys/contrib/dev/acpica/components/tables/tbprint.c projects/fuse2/sys/contrib/dev/acpica/components/tables/tbutils.c projects/fuse2/sys/contrib/dev/acpica/components/tables/tbxface.c projects/fuse2/sys/contrib/dev/acpica/components/tables/tbxfload.c projects/fuse2/sys/contrib/dev/acpica/components/utilities/utascii.c projects/fuse2/sys/contrib/dev/acpica/components/utilities/utdecode.c projects/fuse2/sys/contrib/dev/acpica/components/utilities/utmisc.c projects/fuse2/sys/contrib/dev/acpica/components/utilities/utpredef.c projects/fuse2/sys/contrib/dev/acpica/components/utilities/utstring.c projects/fuse2/sys/contrib/dev/acpica/include/aclocal.h projects/fuse2/sys/contrib/dev/acpica/include/acpixf.h projects/fuse2/sys/contrib/dev/acpica/include/actbl.h projects/fuse2/sys/contrib/dev/acpica/include/actypes.h projects/fuse2/sys/dev/acpica/Osd/OsdTable.c projects/fuse2/sys/dev/acpica/acpi_quirk.c projects/fuse2/sys/dev/cxgbe/common/t4_hw.c projects/fuse2/sys/dev/cxgbe/offload.h projects/fuse2/sys/dev/cxgbe/t4_main.c projects/fuse2/sys/dev/cxgbe/tom/t4_cpl_io.c projects/fuse2/sys/dev/cxgbe/tom/t4_ddp.c projects/fuse2/sys/dev/cxgbe/tom/t4_tls.c projects/fuse2/sys/dev/fdt/fdt_common.c projects/fuse2/sys/dev/ioat/ioat.c projects/fuse2/sys/dev/ioat/ioat_internal.h projects/fuse2/sys/dev/ioat/ioat_test.c projects/fuse2/sys/dev/ioat/ioat_test.h projects/fuse2/sys/dev/ipmi/ipmi_opal.c projects/fuse2/sys/dev/md/md.c projects/fuse2/sys/dev/pci/pci.c projects/fuse2/sys/dev/sdhci/sdhci.c projects/fuse2/sys/dev/tpm/tpm20.c projects/fuse2/sys/dev/usb/wlan/if_run.c projects/fuse2/sys/dev/usb/wlan/if_uath.c projects/fuse2/sys/dev/usb/wlan/if_urtw.c projects/fuse2/sys/dev/usb/wlan/if_urtwvar.h projects/fuse2/sys/dev/xen/blkfront/blkfront.c projects/fuse2/sys/fs/fuse/fuse_ipc.c projects/fuse2/sys/fs/msdosfs/msdosfs_denode.c projects/fuse2/sys/fs/tmpfs/tmpfs.h projects/fuse2/sys/fs/tmpfs/tmpfs_fifoops.c projects/fuse2/sys/fs/tmpfs/tmpfs_subr.c projects/fuse2/sys/fs/tmpfs/tmpfs_vfsops.c projects/fuse2/sys/fs/tmpfs/tmpfs_vnops.c projects/fuse2/sys/geom/eli/g_eli.c projects/fuse2/sys/geom/eli/g_eli.h projects/fuse2/sys/geom/eli/g_eli_ctl.c projects/fuse2/sys/geom/eli/g_eli_key_cache.c projects/fuse2/sys/geom/geom_dev.c projects/fuse2/sys/i386/acpica/acpi_machdep.c projects/fuse2/sys/kern/imgact_elf.c projects/fuse2/sys/net/if_spppsubr.c projects/fuse2/sys/net/if_stf.c projects/fuse2/sys/netinet/in_pcb.c projects/fuse2/sys/netinet/tcp_output.c projects/fuse2/sys/netinet/tcp_var.h projects/fuse2/sys/netinet6/in6.c projects/fuse2/sys/netinet6/in6_ifattach.c projects/fuse2/sys/netinet6/nd6.c projects/fuse2/sys/netipsec/key.c projects/fuse2/sys/netipsec/key.h projects/fuse2/sys/netipsec/xform_esp.c projects/fuse2/sys/netpfil/pf/pf.c projects/fuse2/sys/powerpc/fpu/fpu_sqrt.c projects/fuse2/sys/powerpc/include/trap.h projects/fuse2/sys/powerpc/powernv/opal.h projects/fuse2/sys/powerpc/powernv/opal_async.c projects/fuse2/sys/powerpc/powernv/opal_dev.c projects/fuse2/sys/powerpc/powerpc/exec_machdep.c projects/fuse2/sys/powerpc/powerpc/trap.c projects/fuse2/sys/riscv/riscv/plic.c projects/fuse2/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c projects/fuse2/sys/sys/ata.h projects/fuse2/sys/vm/vm_kern.c projects/fuse2/sys/vm/vm_map.c projects/fuse2/sys/vm/vm_map.h projects/fuse2/sys/x86/iommu/busdma_dmar.c projects/fuse2/tests/sys/audit/Makefile projects/fuse2/tests/sys/audit/process-control.c projects/fuse2/tests/sys/capsicum/Makefile projects/fuse2/tests/sys/capsicum/ioctls_test.c projects/fuse2/tests/sys/geom/class/eli/Makefile projects/fuse2/tests/sys/geom/class/eli/configure_test.sh projects/fuse2/tools/build/Makefile projects/fuse2/tools/tools/ioat/ioatcontrol.8 projects/fuse2/tools/tools/ioat/ioatcontrol.c projects/fuse2/usr.bin/dtc/Makefile projects/fuse2/usr.bin/rctl/rctl.c projects/fuse2/usr.bin/strings/Makefile projects/fuse2/usr.bin/systat/devs.c projects/fuse2/usr.bin/systat/devs.h projects/fuse2/usr.bin/systat/iostat.c projects/fuse2/usr.bin/systat/swap.c projects/fuse2/usr.bin/systat/systat.h projects/fuse2/usr.bin/systat/vmstat.c projects/fuse2/usr.bin/systat/zarc.c projects/fuse2/usr.bin/top/display.c projects/fuse2/usr.bin/xohtml/xohtml.sh projects/fuse2/usr.sbin/acpi/acpidump/acpi.c projects/fuse2/usr.sbin/bsnmpd/bsnmpd/Makefile projects/fuse2/usr.sbin/bsnmpd/bsnmpd/snmpd.config projects/fuse2/usr.sbin/iostat/iostat.c projects/fuse2/usr.sbin/pmc/Makefile Directory Properties: projects/fuse2/ (props changed) projects/fuse2/contrib/elftoolchain/ (props changed) projects/fuse2/contrib/libxo/ (props changed) projects/fuse2/contrib/llvm/ (props changed) projects/fuse2/contrib/llvm/tools/clang/ (props changed) projects/fuse2/gnu/usr.bin/gdb/ (props changed) projects/fuse2/sys/cddl/contrib/opensolaris/ (props changed) projects/fuse2/sys/contrib/dev/acpica/ (props changed) Modified: projects/fuse2/contrib/bsnmp/gensnmptree/gensnmptree.1 ============================================================================== --- projects/fuse2/contrib/bsnmp/gensnmptree/gensnmptree.1 Thu Apr 4 18:13:01 2019 (r345884) +++ projects/fuse2/contrib/bsnmp/gensnmptree/gensnmptree.1 Thu Apr 4 18:26:32 2019 (r345885) @@ -31,7 +31,7 @@ .\" .\" $Begemot: gensnmptree.1 383 2006-05-30 07:40:49Z brandt_h $ .\" -.Dd June 29, 2018 +.Dd April 2, 2019 .Dt GENSNMPTREE 1 .Os .Sh NAME @@ -100,25 +100,11 @@ is the length of the OID. is the last component of the OID. .El .It Fl F -Together with -.Fl E -causes -.Nm -instead of the generation of enum definitions the generation of -functions for checking a value to be one of the enumeration variants and -for conversion between strings and the enum. The file is sent to standard -output and is meant to be included into a C-file for compilation. +emit definitions for C-functions includeable in a C-file that do some basic +stuff on enums like value checking and conversion between value and strings. .It Fl f -This flag can be used together with -.Fl E -or when generating the tree files. It causes -.Nm -to emit static inline functions for checking a value to be one of the -enumeration values and for conversion between strings and the enum. -If used when generating the tree files, the preprocessor symbol -.Ar SNMPTREE_TYPES -must be defined when including the tree header file for these definitions -to become visible. +emit definitions for inline C-functions that do some basic +stuff on enums like value checking and conversion between value and strings. .It Fl h Print a short help page. .It Fl I Ar directory @@ -136,36 +122,6 @@ Instead of normal output print the resulting tree. Prefix the file names and the table name with .Ar prefix . .El -.Pp -The following functions are generated by -.Fl f -or -.Fl F : -.Pp -.Ft static inline int -.Fn isok_EnumName "enum EnumName" ; -.Pp -.Ft static inline const char * -.Fn tostr_EnumName "enum EnumName" ; -.Pp -.Ft static inline int -.Fn fromstr_EnumName "const char *" "enum EnumName *" ; -.Pp -The -.Fa EnumName -is replaced with the enumeration name. -.Fn isok_EnumName -returns 1 if the argument is one of the valid enum values and 0 otherwise. -.Fn tostr_EnumName -returns a string representation of the enumeration value. -If the values is not one of the legal values -.Ar EnumName??? -is returned. -.Fn fromstr_EnumName -returns 1 if the string represents one of the legal enumeration values and -0 otherwise. -If 1 is return the variable pointed to by the second argument is set to -the enumeration value. .Sh MIBS The syntax of the MIB description file can formally be specified as follows: .Bd -unfilled -offset indent Modified: projects/fuse2/contrib/bsnmp/gensnmptree/gensnmptree.c ============================================================================== --- projects/fuse2/contrib/bsnmp/gensnmptree/gensnmptree.c Thu Apr 4 18:13:01 2019 (r345884) +++ projects/fuse2/contrib/bsnmp/gensnmptree/gensnmptree.c Thu Apr 4 18:26:32 2019 (r345885) @@ -110,7 +110,6 @@ static int debug; static const char usgtxt[] = "\ Generate SNMP tables.\n\ -$Id$\n\ usage: gensnmptree [-dEeFfhlt] [-I directory] [-i infile] [-p prefix]\n\ [name]...\n\ options:\n\ @@ -127,6 +126,37 @@ options:\n\ -t generate a .def file\n\ "; +/** + * Program operation. + */ +enum op { + /** generate the tree */ + OP_GEN, + + /** extract OIDs */ + OP_EXTRACT, + + /** print the parsed tree */ + OP_TREE, + + /** extract enums */ + OP_ENUMS, +}; + +/** + * Which functions to create. + */ +enum gen_funcs { + /** none */ + GEN_FUNCS_NONE, + + /** functions for header files */ + GEN_FUNCS_H, + + /** functions for C files */ + GEN_FUNCS_C, +}; + /* * A node in the OID tree */ @@ -162,15 +192,18 @@ struct node { uint32_t index; /* index for table entry */ char *func; /* function for tables */ struct node_list subs; + char *subtypes[SNMP_INDEXES_MAX]; } entry; struct leaf { enum snmp_syntax syntax; /* syntax for this leaf */ char *func; /* function name */ + char *subtype; /* subtype */ } leaf; struct column { enum snmp_syntax syntax; /* syntax for this column */ + char *subtype; /* subtype */ } column; } u; }; @@ -214,7 +247,7 @@ xalloc(size_t size) { void *ptr; - if ((ptr = malloc(size)) == NULL) + if ((ptr = calloc(1, size)) == NULL) err(1, "allocing %zu bytes", size); return (ptr); @@ -710,12 +743,14 @@ make_type(const char *s) * token. */ static u_int -parse_type(enum tok *tok, struct type *t, const char *vname) +parse_type(enum tok *tok, struct type *t, const char *vname, char **subtype) { u_int syntax; struct enums *e; syntax = val; + if (subtype != NULL) + *subtype = NULL; if (*tok == TOK_ENUM || *tok == TOK_BITS) { if (t == NULL && vname != NULL) { @@ -759,6 +794,8 @@ parse_type(enum tok *tok, struct type *t, const char * if ((*tok = gettoken()) == '|') { if (gettoken() != TOK_STR) report("subtype expected after '|'"); + if (subtype != NULL) + *subtype = savetok(); *tok = gettoken(); } } @@ -794,18 +831,21 @@ parse(enum tok tok) if ((tok = gettoken()) == TOK_TYPE || tok == TOK_DEFTYPE || tok == TOK_ENUM || tok == TOK_BITS) { /* LEAF or COLUM */ - u_int syntax = parse_type(&tok, NULL, node->name); + char *subtype; + u_int syntax = parse_type(&tok, NULL, node->name, &subtype); if (tok == TOK_STR) { /* LEAF */ node->type = NODE_LEAF; node->u.leaf.func = savetok(); node->u.leaf.syntax = syntax; + node->u.leaf.subtype = subtype; tok = gettoken(); } else { /* COLUMN */ node->type = NODE_COLUMN; node->u.column.syntax = syntax; + node->u.column.subtype = subtype; } while (tok != ')') { @@ -825,9 +865,12 @@ parse(enum tok tok) tok = gettoken(); while (tok == TOK_TYPE || tok == TOK_DEFTYPE || tok == TOK_ENUM || tok == TOK_BITS) { - u_int syntax = parse_type(&tok, NULL, node->name); - if (index_count++ == SNMP_INDEXES_MAX) + char *subtype; + u_int syntax = parse_type(&tok, NULL, node->name, + &subtype); + if (index_count == SNMP_INDEXES_MAX) report("too many table indexes"); + node->u.entry.subtypes[index_count++] = subtype; node->u.entry.index |= syntax << (SNMP_INDEX_SHIFT * index_count); } @@ -882,7 +925,8 @@ parse_top(enum tok tok) tok = gettoken(); t->is_enum = (tok == TOK_ENUM); t->is_bits = (tok == TOK_BITS); - t->syntax = parse_type(&tok, t, NULL); + + t->syntax = parse_type(&tok, t, NULL, NULL); pushback(tok); return (NULL); @@ -903,7 +947,7 @@ parse_top(enum tok tok) * Generate the C-code table part for one node. */ static void -gen_node(FILE *fp, struct node *np, struct asn_oid *oid, u_int idx, +gen_node(FILE *fp, const struct node *np, struct asn_oid *oid, u_int idx, const char *func) { u_int n; @@ -1008,7 +1052,7 @@ gen_node(FILE *fp, struct node *np, struct asn_oid *oi * Generate the header file with the function declarations. */ static void -gen_header(FILE *fp, struct node *np, u_int oidlen, const char *func) +gen_header(FILE *fp, const struct node *np, u_int oidlen, const char *func) { char f[MAXSTR + 4]; struct node *sub; @@ -1058,7 +1102,7 @@ gen_header(FILE *fp, struct node *np, u_int oidlen, co * Generate the OID table. */ static void -gen_table(FILE *fp, struct node *node) +gen_table(FILE *fp, const struct node *node) { struct asn_oid oid; @@ -1067,7 +1111,6 @@ gen_table(FILE *fp, struct node *node) #ifdef HAVE_STDINT_H fprintf(fp, "#include \n"); #endif - fprintf(fp, "#include \n"); if (localincs) { fprintf(fp, "#include \"asn1.h\"\n"); fprintf(fp, "#include \"snmp.h\"\n"); @@ -1118,6 +1161,8 @@ gen_tree(const struct node *np, int level) case NODE_LEAF: print_syntax(np->u.leaf.syntax); + if (np->u.leaf.subtype != NULL) + printf(" | %s", np->u.leaf.subtype); printf(" %s%s%s)\n", np->u.leaf.func, (np->flags & FL_GET) ? " GET" : "", (np->flags & FL_SET) ? " SET" : ""); @@ -1137,8 +1182,11 @@ gen_tree(const struct node *np, int level) case NODE_ENTRY: printf(" :"); - for (i = 0; i < SNMP_INDEX_COUNT(np->u.entry.index); i++) + for (i = 0; i < SNMP_INDEX_COUNT(np->u.entry.index); i++) { print_syntax(SNMP_INDEX(np->u.entry.index, i)); + if (np->u.entry.subtypes[i] != NULL) + printf(" | %s", np->u.entry.subtypes[i]); + } printf(" %s\n", np->u.entry.func); TAILQ_FOREACH(sp, &np->u.entry.subs, link) gen_tree(sp, level + 1); @@ -1147,6 +1195,8 @@ gen_tree(const struct node *np, int level) case NODE_COLUMN: print_syntax(np->u.column.syntax); + if (np->u.column.subtype != NULL) + printf(" | %s", np->u.column.subtype); printf("%s%s)\n", (np->flags & FL_GET) ? " GET" : "", (np->flags & FL_SET) ? " SET" : ""); break; @@ -1194,15 +1244,6 @@ extract(FILE *fp, const struct node *np, struct asn_oi return (1); } -/** - * Extract the named OID. - * - * \param fp file to extract to - * \param root root of the tree - * \param object name of the object to extract - * - * \return 0 on success, -1 if the object was not found - */ static int gen_extract(FILE *fp, const struct node *root, char *object) { @@ -1391,45 +1432,6 @@ unminus(FILE *fp, const char *s) } /** - * Generate a definition for the enum packed into a guard against multiple - * definitions. - * - * \param fp file to write definition to - * \param t type - */ -static void -gen_enum(FILE *fp, const struct type *t) -{ - const struct enums *e; - long min = LONG_MAX; - - fprintf(fp, "\n"); - fprintf(fp, "#ifndef %s_defined__\n", t->name); - fprintf(fp, "#define %s_defined__\n", t->name); - fprintf(fp, "/*\n"); - fprintf(fp, " * From %s:%u\n", t->from_fname, t->from_lno); - fprintf(fp, " */\n"); - fprintf(fp, "enum %s {\n", t->name); - TAILQ_FOREACH(e, &t->enums, link) { - fprintf(fp, "\t%s_", t->name); - unminus(fp, e->name); - fprintf(fp, " = %ld,\n", e->value); - if (e->value < min) - min = e->value; - } - fprintf(fp, "};\n"); - fprintf(fp, "#define STROFF_%s %ld\n", t->name, min); - fprintf(fp, "#define STRING_%s \\\n", t->name); - TAILQ_FOREACH(e, &t->enums, link) { - fprintf(fp, "\t[%ld] = \"%s_", e->value - min, t->name); - unminus(fp, e->name); - fprintf(fp, "\",\\\n"); - } - fprintf(fp, "\n"); - fprintf(fp, "#endif /* %s_defined__ */\n", t->name); -} - -/** * Generate helper functions for an enum. * * We always generate a switch statement for the isok function. The compiler @@ -1494,6 +1496,54 @@ gen_enum_funcs(FILE *fp, const struct type *t, int cco } /** + * Generate a definition for the enum packed into a guard against multiple + * definitions. + * + * \param fp file to write definition to + * \param t type + * \param dof generate functions too + */ +static void +gen_enum(FILE *fp, const struct type *t, int dof) +{ + const struct enums *e; + long min = LONG_MAX; + + fprintf(fp, "\n"); + fprintf(fp, "#ifndef %s_defined__\n", t->name); + fprintf(fp, "#define %s_defined__\n", t->name); + fprintf(fp, "/*\n"); + fprintf(fp, " * From %s:%u\n", t->from_fname, t->from_lno); + fprintf(fp, " */\n"); + fprintf(fp, "enum %s {\n", t->name); + TAILQ_FOREACH(e, &t->enums, link) { + fprintf(fp, "\t%s_", t->name); + unminus(fp, e->name); + fprintf(fp, " = %ld,\n", e->value); + if (e->value < min) + min = e->value; + } + fprintf(fp, "};\n"); + fprintf(fp, "#define STROFF_%s %ld\n", t->name, min); + fprintf(fp, "#define STRING_%s \\\n", t->name); + TAILQ_FOREACH(e, &t->enums, link) { + fprintf(fp, "\t[%ld] = \"%s_", e->value - min, t->name); + unminus(fp, e->name); + fprintf(fp, "\",\\\n"); + } + fprintf(fp, "\n"); + if (dof) { + fprintf(fp, "#ifdef SNMPENUM_FUNCS\n"); + fprintf(fp, "\n"); + gen_enum_funcs(fp, t, 0); + fprintf(fp, "\n"); + fprintf(fp, "#endif\n"); + fprintf(fp, "\n"); + } + fprintf(fp, "#endif /* %s_defined__ */\n", t->name); +} + +/** * Generate helper functions for an enum. This generates code for a c file. * * \param fp file to write to @@ -1529,6 +1579,16 @@ gen_all_enum_funcs(FILE *fp, int ccode) gen_enum_funcs(fp, t, ccode); } +static void +gen_enums(FILE *fp, int dof) +{ + const struct type *t; + + LIST_FOREACH(t, &types, link) + if (t->is_enum || t->is_bits) + gen_enum(fp, t, dof); +} + /** * Extract a given enum to the specified file and optionally generate static * inline helper functions for them. @@ -1546,9 +1606,7 @@ extract_enum(FILE *fp, const char *name, int gen_funcs LIST_FOREACH(t, &types, link) if ((t->is_enum || t->is_bits) && strcmp(t->name, name) == 0) { - gen_enum(fp, t); - if (gen_funcs) - gen_enum_funcs(fp, t, 0); + gen_enum(fp, t, gen_funcs); return (0); } return (-1); @@ -1567,11 +1625,8 @@ extract_all_enums(FILE *fp, int gen_funcs) const struct type *t; LIST_FOREACH(t, &types, link) - if (t->is_enum || t->is_bits) { - gen_enum(fp, t); - if (gen_funcs) - gen_enum_funcs(fp, t, 0); - } + if (t->is_enum || t->is_bits) + gen_enum(fp, t, gen_funcs); } /** @@ -1579,13 +1634,12 @@ extract_all_enums(FILE *fp, int gen_funcs) * * \param argc number of arguments * \param argv arguments (enum names) - * \param gen_funcs_h generate functions into the header file - * \param gen_funcs_c generate a .c file with functions + * \param gen_funcs which functions to generate */ static void -make_enums(int argc, char *argv[], int gen_funcs_h, int gen_funcs_c) +make_enums(int argc, char *argv[], enum gen_funcs gen_funcs) { - if (gen_funcs_c) { + if (gen_funcs == GEN_FUNCS_C) { if (argc == 0) gen_all_enum_funcs(stdout, 1); else { @@ -1595,30 +1649,58 @@ make_enums(int argc, char *argv[], int gen_funcs_h, in } } else { if (argc == 0) - extract_all_enums(stdout, gen_funcs_h); + extract_all_enums(stdout, gen_funcs == GEN_FUNCS_H); else { for (int i = 0; i < argc; i++) - if (extract_enum(stdout, argv[i], gen_funcs_h)) + if (extract_enum(stdout, argv[i], + gen_funcs == GEN_FUNCS_H)) errx(1, "enum not found: %s", argv[i]); } } } +/** + * Produce the operation tables for the daemon or a module. + * + * \param root tree root + * \param gen_funcs generate enum funcs + */ +static void +make_table(const struct node *root, int gen_funcs) +{ + FILE *fp; + + char fname[MAXPATHLEN + 1]; + sprintf(fname, "%stree.h", file_prefix); + if ((fp = fopen(fname, "w")) == NULL) + err(1, "%s: ", fname); + gen_header(fp, root, PREFIX_LEN, NULL); + + fprintf(fp, "\n#ifdef SNMPTREE_TYPES\n"); + gen_enums(fp, gen_funcs); + fprintf(fp, "\n#endif /* SNMPTREE_TYPES */\n\n"); + + fprintf(fp, "#define %sCTREE_SIZE %u\n", file_prefix, tree_size); + fprintf(fp, "extern const struct snmp_node %sctree[];\n", file_prefix); + + fclose(fp); + + sprintf(fname, "%stree.c", file_prefix); + if ((fp = fopen(fname, "w")) == NULL) + err(1, "%s: ", fname); + gen_table(fp, root); + fclose(fp); +} + int main(int argc, char *argv[]) { - int do_extract = 0; - int do_tree = 0; - int do_enums = 0; - int gen_funcs_h = 0; - int gen_funcs_c = 0; - int opt; - struct node *root; - char fname[MAXPATHLEN + 1]; - int tok; - FILE *fp; + enum op op = OP_GEN; + enum gen_funcs gen_funcs = GEN_FUNCS_NONE; + char *infile = NULL; + int opt; while ((opt = getopt(argc, argv, "dEeFfhI:i:lp:t")) != EOF) switch (opt) { @@ -1627,19 +1709,29 @@ main(int argc, char *argv[]) break; case 'E': - do_enums = 1; + if (op != OP_GEN && op != OP_ENUMS) + errx(1, "-E conflicts with earlier options"); + op = OP_ENUMS; break; case 'e': - do_extract = 1; + if (op != OP_GEN && op != OP_EXTRACT) + errx(1, "-e conflicts with earlier options"); + op = OP_EXTRACT; break; case 'F': - gen_funcs_c = 1; + if (gen_funcs != GEN_FUNCS_NONE && + gen_funcs != GEN_FUNCS_C) + errx(1, "-F conflicts with -f"); + gen_funcs = GEN_FUNCS_C; break; case 'f': - gen_funcs_h = 1; + if (gen_funcs != GEN_FUNCS_NONE && + gen_funcs != GEN_FUNCS_H) + errx(1, "-f conflicts with -F"); + gen_funcs = GEN_FUNCS_H; break; case 'h': @@ -1666,75 +1758,61 @@ main(int argc, char *argv[]) break; case 't': - do_tree = 1; + if (op != OP_GEN && op != OP_TREE) + errx(1, "-t conflicts with earlier options"); + op = OP_TREE; break; } - if (do_extract + do_tree + do_enums > 1) - errx(1, "conflicting options -e/-t/-E"); - if (!do_extract && !do_enums && argc != optind) - errx(1, "no arguments allowed"); - if (do_extract && argc == optind) - errx(1, "no objects specified"); + argc -= optind; + argv += optind; - if ((gen_funcs_h || gen_funcs_c) && (do_extract || do_tree)) - errx(1, "-f and -F not allowed with -e or -t"); - if (gen_funcs_c && !do_enums) - errx(1, "-F requires -E"); - if (gen_funcs_h && gen_funcs_c) - errx(1, "-f and -F are mutually exclusive"); - + /* open input */ if (infile == NULL) { input_new(stdin, NULL, ""); } else { + FILE *fp; if ((fp = fopen(infile, "r")) == NULL) err(1, "%s", infile); input_new(fp, NULL, infile); } - root = parse_top(gettoken()); + /* parse and check input */ + struct node *root = parse_top(gettoken()); + + int tok; while ((tok = gettoken()) != TOK_EOF) merge(&root, parse_top(tok)); if (root) check_tree(root); - if (do_extract) { - while (optind < argc) { - if (gen_extract(stdout, root, argv[optind])) - errx(1, "object not found: %s", argv[optind]); - optind++; - } + /* do what the user has requested */ + switch (op) { + + case OP_EXTRACT: + if (argc == 0) + errx(1, "-e requires arguments"); + + for (int i = 0; i < argc; i++) + if (gen_extract(stdout, root, argv[i])) + errx(1, "object not found: %s", argv[i]); return (0); - } - if (do_enums) { - make_enums(argc - optind, argv + optind, - gen_funcs_h, gen_funcs_c); + + case OP_ENUMS: + make_enums(argc, argv, gen_funcs); return (0); - } - if (do_tree) { + + case OP_TREE: + if (argc != 0) + errx(1, "-t allows no arguments"); gen_tree(root, 0); return (0); - } - sprintf(fname, "%stree.h", file_prefix); - if ((fp = fopen(fname, "w")) == NULL) - err(1, "%s: ", fname); - gen_header(fp, root, PREFIX_LEN, NULL); - fprintf(fp, "\n#ifdef SNMPTREE_TYPES\n"); - extract_all_enums(fp, gen_funcs_h); - fprintf(fp, "\n#endif /* SNMPTREE_TYPES */\n\n"); - - fprintf(fp, "#define %sCTREE_SIZE %u\n", file_prefix, tree_size); - fprintf(fp, "extern const struct snmp_node %sctree[];\n", file_prefix); - - fclose(fp); - - sprintf(fname, "%stree.c", file_prefix); - if ((fp = fopen(fname, "w")) == NULL) - err(1, "%s: ", fname); - gen_table(fp, root); - fclose(fp); - - return (0); + case OP_GEN: + if (argc != 0) + errx(1, "tree generation allows no arguments"); + make_table(root, gen_funcs == GEN_FUNCS_H); + return (0); + } } Modified: projects/fuse2/contrib/bsnmp/lib/snmpclient.c ============================================================================== --- projects/fuse2/contrib/bsnmp/lib/snmpclient.c Thu Apr 4 18:13:01 2019 (r345884) +++ projects/fuse2/contrib/bsnmp/lib/snmpclient.c Thu Apr 4 18:26:32 2019 (r345885) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2005 + * Copyright (c) 2004-2005,2018 * Hartmut Brandt. * All rights reserved. * Copyright (c) 2001-2003 @@ -34,11 +34,13 @@ * * Support functions for SNMP clients. */ -#include +#include #include #include #include #include +#include +#include #include #include #include @@ -58,12 +60,16 @@ #include #endif +#include + #include "support.h" #include "asn1.h" #include "snmp.h" #include "snmpclient.h" #include "snmppriv.h" +#define DEBUG_PARSE 0 + /* global context */ struct snmp_client snmp_client; @@ -924,7 +930,8 @@ open_client_udp(const char *host, const char *port) /* open connection */ memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_CANONNAME; - hints.ai_family = AF_INET; + hints.ai_family = snmp_client.trans == SNMP_TRANS_UDP ? AF_INET: + AF_INET6; hints.ai_socktype = SOCK_DGRAM; hints.ai_protocol = 0; error = getaddrinfo(snmp_client.chost, snmp_client.cport, &hints, &res0); @@ -1068,6 +1075,7 @@ snmp_open(const char *host, const char *port, const ch switch (snmp_client.trans) { case SNMP_TRANS_UDP: + case SNMP_TRANS_UDP6: if (open_client_udp(host, port) != 0) return (-1); break; @@ -1866,99 +1874,412 @@ snmp_client_set_port(struct snmp_client *cl, const cha return (0); } -/* - * parse a server specification +static const char *const trans_list[] = { + [SNMP_TRANS_UDP] = "udp::", + [SNMP_TRANS_LOC_DGRAM] = "dgram::", + [SNMP_TRANS_LOC_STREAM] = "stream::", + [SNMP_TRANS_UDP6] = "udp6::", +}; + +/** + * Try to get a transport identifier which is a leading alphanumeric string + * terminated by a double colon. The string may not be empty. The transport + * identifier is optional. * - * [trans::][community@][server][:port] + * \param sc client struct to set errors + * \param strp possible start of transport; updated to point to + * the next character to parse + * + * \return transport identifier */ -int -snmp_parse_server(struct snmp_client *sc, const char *str) +static inline int +get_transp(struct snmp_client *sc, const char **strp) { - const char *p, *s = str; + const char *p; + size_t i; - /* look for a double colon */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; + for (i = 0; i < nitems(trans_list); i++) { + if (trans_list[i] == NULL || *trans_list[i] == '\0') continue; + p = strstr(*strp, trans_list[i]); + if (p == *strp) { + *strp += strlen(trans_list[i]); + return ((int)i); } - if (*p == ':' && p[1] == ':') - break; } - if (*p != '\0') { - if (p > s) { - if (p - s == 3 && strncmp(s, "udp", 3) == 0) - sc->trans = SNMP_TRANS_UDP; - else if (p - s == 6 && strncmp(s, "stream", 6) == 0) - sc->trans = SNMP_TRANS_LOC_STREAM; - else if (p - s == 5 && strncmp(s, "dgram", 5) == 0) - sc->trans = SNMP_TRANS_LOC_DGRAM; - else { - seterr(sc, "unknown SNMP transport '%.*s'", - (int)(p - s), s); - return (-1); - } - } - s = p + 2; + + p = *strp; + if (p[0] == ':' && p[1] == ':') { + seterr(sc, "empty transport specifier"); + return (-1); } + /* by default assume UDP */ + return (SNMP_TRANS_UDP); +} - /* look for a @ */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; - continue; - } - if (*p == '@') - break; +/** + * Try to get community string. Eat everything up to the last @ (if there is + * any) but only if it is not longer than SNMP_COMMUNITY_MAXLEN. Empty + * community strings are legal. + * + * \param sc client struct to set errors + * \param strp possible start of community; updated to the point to + * the next character to parse + * + * \return end of community; equals *strp if there is none; NULL if there + * was an error + */ +static inline const char * +get_comm(struct snmp_client *sc, const char **strp) +{ + const char *p = strrchr(*strp, '@'); + + if (p == NULL) + /* no community string */ + return (*strp); + + if (p - *strp > SNMP_COMMUNITY_MAXLEN) { + seterr(sc, "community string too long '%.*s'", + p - *strp, *strp); + return (NULL); } - if (*p != '\0') { - if (p - s > SNMP_COMMUNITY_MAXLEN) { - seterr(sc, "community string too long"); - return (-1); + *strp = p + 1; + return (p); +} + +/** + * Try to get an IPv6 address. This starts with an [ and should end with an ] + * and everything between should be not longer than INET6_ADDRSTRLEN and + * parseable by inet_pton(). + * + * \param sc client struct to set errors + * \param strp possible start of IPv6 address (the '['); updated to point to + * the next character to parse (the one after the closing ']') + * + * \return end of address (equals *strp + 1 if there is none) or NULL + * on errors + */ +static inline const char * +get_ipv6(struct snmp_client *sc, const char **strp) +{ + char str[INET6_ADDRSTRLEN + IF_NAMESIZE]; + struct addrinfo hints, *res; + int error; + + if (**strp != '[') + return (*strp + 1); + + const char *p = *strp + 1; + while (*p != ']' ) { + if (*p == '\0') { + seterr(sc, "unterminated IPv6 address '%.*s'", + p - *strp, *strp); + return (NULL); } - strncpy(sc->read_community, s, p - s); - sc->read_community[p - s] = '\0'; - strncpy(sc->write_community, s, p - s); - sc->write_community[p - s] = '\0'; - s = p + 1; + p++; } - /* look for a colon */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; - continue; - } - if (*p == ':') - break; + if (p - *strp > INET6_ADDRSTRLEN + IF_NAMESIZE) { + seterr(sc, "IPv6 address too long '%.*s'", p - *strp, *strp); + return (NULL); } - if (*p == ':') { - if (p > s) { - /* host:port */ - free(sc->chost); - if ((sc->chost = malloc(p - s + 1)) == NULL) { - seterr(sc, "%s", strerror(errno)); - return (-1); - } - strncpy(sc->chost, s, p - s); - sc->chost[p - s] = '\0'; - } - /* port */ - free(sc->cport); - if ((sc->cport = strdup(p + 1)) == NULL) { - seterr(sc, "%s", strerror(errno)); - return (-1); - } + strncpy(str, *strp + 1, p - (*strp + 1)); + str[p - (*strp + 1)] = '\0'; - } else if (p > s) { - /* host */ - free(sc->chost); - if ((sc->chost = strdup(s)) == NULL) { - seterr(sc, "%s", strerror(errno)); + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_CANONNAME | AI_NUMERICHOST; + hints.ai_family = AF_INET6; + hints.ai_socktype = SOCK_DGRAM; + hints.ai_protocol = IPPROTO_UDP; + error = getaddrinfo(str, NULL, &hints, &res); + if (error != 0) { + seterr(sc, "%s: %s", str, gai_strerror(error)); + return (NULL); + } + freeaddrinfo(res); + *strp = p + 1; + return (p); +} + +/** + * Try to get an IPv4 address. This starts with a digit and consists of digits + * and dots, is not longer INET_ADDRSTRLEN and must be parseable by + * inet_aton(). + * + * \param sc client struct to set errors + * \param strp possible start of IPv4 address; updated to point to the + * next character to parse + * + * \return end of address (equals *strp if there is none) or NULL + * on errors + */ +static inline const char * +get_ipv4(struct snmp_client *sc, const char **strp) +{ + const char *p = *strp; + + while (isascii(*p) && (isdigit(*p) || *p == '.')) + p++; + + if (p - *strp > INET_ADDRSTRLEN) { + seterr(sc, "IPv4 address too long '%.*s'", p - *strp, *strp); + return (NULL); + } + if (*strp == p) + return *strp; + + char str[INET_ADDRSTRLEN + 1]; + strncpy(str, *strp, p - *strp); + str[p - *strp] = '\0'; + + struct in_addr addr; + if (inet_aton(str, &addr) != 1) { + seterr(sc, "illegal IPv4 address '%s'", str); + return (NULL); + } + + *strp = p; + return (p); +} + +/** + * Try to get a hostname. This includes everything up to but not including + * the last colon (if any). There is no length restriction. + * + * \param sc client struct to set errors + * \param strp possible start of hostname; updated to point to the next + * character to parse (the trailing NUL character or the last + * colon) + * *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:10 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 1377DDC426 for ; Tue, 3 Sep 2019 14:06:09 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z371Zkz4PDk; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 238341A1A9; Tue, 3 Sep 2019 14:05:59 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5C8F65C4D; Wed, 3 Apr 2019 21:30:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2C3856E7D9; Wed, 3 Apr 2019 21:30:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 108345C4C; Wed, 3 Apr 2019 21:30:35 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E35395C44; Wed, 3 Apr 2019 21:30:31 +0000 (UTC) (envelope-from gnn@neville-neil.com) Received: from relay10.mail.gandi.net (relay10.mail.gandi.net [217.70.178.230]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id DE4486E7CA; Wed, 3 Apr 2019 21:30:29 +0000 (UTC) (envelope-from gnn@neville-neil.com) Received: from [10.37.129.2] (unknown [65.88.88.178]) (Authenticated sender: gnn@neville-neil.com) by relay10.mail.gandi.net (Postfix) with ESMTPSA id 10B14240005; Wed, 3 Apr 2019 21:30:20 +0000 (UTC) From: "George Neville-Neil" To: "Kristof Provost" Cc: rgrimes@freebsd.org, "Andrey V. Elsukov" , "Mateusz Guzik" , src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: Re: svn commit: r345760 - in head: contrib/pf sys/netpfil/pf sbin/pfctl X-Mailer: MailMate (1.12.4r5594) Message-ID: <7A8504D1-7A27-4B8D-8263-9AC54EABBF88@neville-neil.com> In-Reply-To: References: <201904011348.x31Dm86D015297@gndrsh.dnsmgr.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2C3856E7D9 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.99 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.999,0]; NEURAL_HAM_SHORT(-0.99)[-0.992,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:11 -0000 X-Original-Date: Wed, 03 Apr 2019 17:27:26 -0400 X-List-Received-Date: Tue, 03 Sep 2019 14:06:11 -0000 On 1 Apr 2019, at 12:16, Kristof Provost wrote: > On 1 Apr 2019, at 15:48, Rodney W. Grimes wrote: >> [ Charset UTF-8 unsupported, converting... ] >>> On 01.04.2019 16:30, Rodney W. Grimes wrote: >>> It seems it is too late: >>> https://marc.info/?l=openbsd-tech&m=155409489427092&w=2 >> >> I am wondering on the above as it has a date of: >> Date: 2019-04-01 5:01:03 >> >> which would be in line with Kristof's joke. >> > Yes, OpenBSD are clearly joking as well. > >>> http://mail-index.netbsd.org/tech-kern/2019/03/29/msg024883.html >> This is inline with what is being proposed here, NetBSD has >> old rotted code that needs updated. > > [Disclaimer: I do not speak for NetBSD, and based this on my reading > of that thread] > > NetBSD however are serious. > Their situation is slightly different, in that their primary reason is > that they don’t have a maintainer for their pf version and it’s > suffering from significant bitrot. > > Our situation is somewhat better. Our pf is maintained and does get > bug fixes and improvements. Not as many as I’d like, but there’s > something. > >> Rather than do that work >> twice, do it 1.5 times (implementing the same technology in >> 2 OS's should be less work than doing it twice.) >> >> I believe there is grant money avaliable from a non Foundation >> source that could be used to do this work. >> > I’m not at all opposed to updating our pf, but there are a few > obstacles (technical: performance, syntax and vimage. Practical: this > is a lot of work). If people are interested in that discussion I’d > propose someone start a new thread on freebsd-pf@, and I’ll expand > on what I think the problems are and what needs to be done. > > I’d also be interested in knowing what people are looking for from > an updated pf in FreeBSD. What are the improvements in OpenBSD that > you’d really like to see in FreeBSD? > In the age of NAT do we really need a firewall? Yes, it's April 3rd but, you did start it :-) Best George From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:13 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 62835DC563 for ; Tue, 3 Sep 2019 14:06:13 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z86cJyz4PKX; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id CB1A91A31E; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 728841B6CC; Thu, 4 Apr 2019 20:30:19 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 40FBB8B69F; Thu, 4 Apr 2019 20:30:19 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1AD551B6CA; Thu, 4 Apr 2019 20:30:19 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id C29701B6C6 for ; Thu, 4 Apr 2019 20:30:16 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 780708B69C; Thu, 4 Apr 2019 20:30:16 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 460F028D3; Thu, 4 Apr 2019 20:30:16 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x34KUGMb030143; Thu, 4 Apr 2019 20:30:16 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x34KUFSw030138; Thu, 4 Apr 2019 20:30:15 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904042030.x34KUFSw030138@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345892 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345892 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 40FBB8B69F X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.95)[-0.947,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:13 -0000 X-Original-Date: Thu, 4 Apr 2019 20:30:15 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:13 -0000 Author: asomers Date: Thu Apr 4 20:30:14 2019 New Revision: 345892 URL: https://svnweb.freebsd.org/changeset/base/345892 Log: fusefs: properly handle FOPEN_KEEP_CACHE If a fuse file system returne FOPEN_KEEP_CACHE in the open or create response, then the client is supposed to _not_ clear its caches for that file. I don't know why clearing the caches would be the default given that there's a separate flag to bypass the cache altogether, but that's the way it is. fusefs(5) will now honor this flag. Our behavior is slightly different than Linux's because we reuse file handles. That means that open(2) wont't clear the cache if there's a reusable file handle, even if the file server wouldn't have sent FOPEN_KEEP_CACHE had we opened a new file handle like Linux does. PR: 236560 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_file.c projects/fuse2/sys/fs/fuse/fuse_file.h projects/fuse2/sys/fs/fuse/fuse_node.c projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/tests/sys/fs/fusefs/read.cc Modified: projects/fuse2/sys/fs/fuse/fuse_file.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.c Thu Apr 4 20:27:13 2019 (r345891) +++ projects/fuse2/sys/fs/fuse/fuse_file.c Thu Apr 4 20:30:14 2019 (r345892) @@ -79,6 +79,7 @@ __FBSDID("$FreeBSD$"); #include "fuse.h" #include "fuse_file.h" #include "fuse_internal.h" +#include "fuse_io.h" #include "fuse_ipc.h" #include "fuse_node.h" @@ -188,9 +189,7 @@ fuse_filehandle_open(struct vnode *vp, int a_mode, } foo = fdi.answ; - fuse_filehandle_init(vp, fufh_type, fufhp, td->td_proc->p_pid, cred, - foo); - + fuse_filehandle_init(vp, fufh_type, fufhp, td, cred, foo); fuse_vnode_open(vp, foo->open_flags, td); out: @@ -322,7 +321,7 @@ fuse_filehandle_getrw(struct vnode *vp, int fflag, void fuse_filehandle_init(struct vnode *vp, fufh_type_t fufh_type, - struct fuse_filehandle **fufhp, pid_t pid, struct ucred *cred, + struct fuse_filehandle **fufhp, struct thread *td, struct ucred *cred, struct fuse_open_out *foo) { struct fuse_vnode_data *fvdat = VTOFUD(vp); @@ -335,7 +334,7 @@ fuse_filehandle_init(struct vnode *vp, fufh_type_t fuf fufh->fufh_type = fufh_type; fufh->gid = cred->cr_rgid; fufh->uid = cred->cr_uid; - fufh->pid = pid; + fufh->pid = td->td_proc->p_pid; fufh->fuse_open_flags = foo->open_flags; if (!FUFH_IS_VALID(fufh)) { panic("FUSE: init: invalid filehandle id (type=%d)", fufh_type); @@ -345,4 +344,15 @@ fuse_filehandle_init(struct vnode *vp, fufh_type_t fuf *fufhp = fufh; atomic_add_acq_int(&fuse_fh_count, 1); + + if (foo->open_flags & FOPEN_DIRECT_IO) { + ASSERT_VOP_ELOCKED(vp, __func__); + VTOFUD(vp)->flag |= FN_DIRECTIO; + fuse_io_invalbuf(vp, td); + } else { + if ((foo->open_flags & FOPEN_KEEP_CACHE) == 0) + fuse_io_invalbuf(vp, td); + VTOFUD(vp)->flag &= ~FN_DIRECTIO; + } + } Modified: projects/fuse2/sys/fs/fuse/fuse_file.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_file.h Thu Apr 4 20:27:13 2019 (r345891) +++ projects/fuse2/sys/fs/fuse/fuse_file.h Thu Apr 4 20:30:14 2019 (r345892) @@ -158,7 +158,7 @@ int fuse_filehandle_getrw(struct vnode *vp, int fflag, pid_t pid); void fuse_filehandle_init(struct vnode *vp, fufh_type_t fufh_type, - struct fuse_filehandle **fufhp, pid_t pid, + struct fuse_filehandle **fufhp, struct thread *td, struct ucred *cred, struct fuse_open_out *foo); int fuse_filehandle_open(struct vnode *vp, int mode, struct fuse_filehandle **fufhp, struct thread *td, Modified: projects/fuse2/sys/fs/fuse/fuse_node.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.c Thu Apr 4 20:27:13 2019 (r345891) +++ projects/fuse2/sys/fs/fuse/fuse_node.c Thu Apr 4 20:30:14 2019 (r345892) @@ -329,16 +329,6 @@ fuse_vnode_open(struct vnode *vp, int32_t fuse_open_fl * * XXXIP: Handle fd based DIRECT_IO */ - if (fuse_open_flags & FOPEN_DIRECT_IO) { - ASSERT_VOP_ELOCKED(vp, __func__); - VTOFUD(vp)->flag |= FN_DIRECTIO; - fuse_io_invalbuf(vp, td); - } else { - if ((fuse_open_flags & FOPEN_KEEP_CACHE) == 0) - fuse_io_invalbuf(vp, td); - VTOFUD(vp)->flag &= ~FN_DIRECTIO; - } - if (vnode_vtype(vp) == VREG) { /* XXXIP prevent getattr, by using cached node size */ vnode_create_vobject(vp, 0, td); Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Thu Apr 4 20:27:13 2019 (r345891) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Thu Apr 4 20:30:14 2019 (r345892) @@ -479,8 +479,7 @@ fuse_vnop_create(struct vop_create_args *ap) } ASSERT_VOP_ELOCKED(*vpp, "fuse_vnop_create"); - fuse_filehandle_init(*vpp, FUFH_RDWR, NULL, td->td_proc->p_pid, cred, - foo); + fuse_filehandle_init(*vpp, FUFH_RDWR, NULL, td, cred, foo); fuse_vnode_open(*vpp, foo->open_flags, td); cache_purge_negative(dvp); Modified: projects/fuse2/tests/sys/fs/fusefs/read.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/read.cc Thu Apr 4 20:27:13 2019 (r345891) +++ projects/fuse2/tests/sys/fs/fusefs/read.cc Thu Apr 4 20:30:14 2019 (r345892) @@ -398,8 +398,7 @@ TEST_F(Read, eio) * With the keep_cache option, the kernel may keep its read cache across * multiple open(2)s. */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236560 */ -TEST_F(Read, DISABLED_keep_cache) +TEST_F(Read, keep_cache) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -410,7 +409,7 @@ TEST_F(Read, DISABLED_keep_cache) char buf[bufsize]; FuseTest::expect_lookup(RELPATH, ino, S_IFREG | 0644, bufsize, 2); - expect_open(ino, FOPEN_KEEP_CACHE, 1); + expect_open(ino, FOPEN_KEEP_CACHE, 2); expect_getattr(ino, bufsize); expect_read(ino, 0, bufsize, bufsize, CONTENTS); @@ -418,7 +417,7 @@ TEST_F(Read, DISABLED_keep_cache) ASSERT_LE(0, fd0) << strerror(errno); ASSERT_EQ(bufsize, read(fd0, buf, bufsize)) << strerror(errno); - fd1 = open(FULLPATH, O_RDONLY); + fd1 = open(FULLPATH, O_RDWR); ASSERT_LE(0, fd1) << strerror(errno); /* @@ -445,7 +444,7 @@ TEST_F(Read, keep_cache_disabled) char buf[bufsize]; FuseTest::expect_lookup(RELPATH, ino, S_IFREG | 0644, bufsize, 2); - expect_open(ino, FOPEN_KEEP_CACHE, 1); + expect_open(ino, 0, 2); expect_getattr(ino, bufsize); expect_read(ino, 0, bufsize, bufsize, CONTENTS); @@ -453,7 +452,7 @@ TEST_F(Read, keep_cache_disabled) ASSERT_LE(0, fd0) << strerror(errno); ASSERT_EQ(bufsize, read(fd0, buf, bufsize)) << strerror(errno); - fd1 = open(FULLPATH, O_RDONLY); + fd1 = open(FULLPATH, O_RDWR); ASSERT_LE(0, fd1) << strerror(errno); /* From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:19 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A7FA9DC73F for ; Tue, 3 Sep 2019 14:06:19 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zH0cByz4PQ3; Tue, 3 Sep 2019 14:06:18 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id D9AF21A4C3; Tue, 3 Sep 2019 14:06:05 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 13B4819B11; Sat, 6 Apr 2019 01:49:41 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4BC4388736; Sat, 6 Apr 2019 01:49:40 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 11B0319ABC; Sat, 6 Apr 2019 01:49:40 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id CD6F119ABA for ; Sat, 6 Apr 2019 01:49:37 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 9F6AA88731; Sat, 6 Apr 2019 01:49:37 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 931451DA18; Sat, 6 Apr 2019 01:49:37 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x361nbko094083; Sat, 6 Apr 2019 01:49:37 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x361nb4b094082; Sat, 6 Apr 2019 01:49:37 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904060149.x361nb4b094082@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345973 - projects/runtime-coverage-v2/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage-v2/share/mk X-SVN-Commit-Revision: 345973 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 4BC4388736 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.972,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:19 -0000 X-Original-Date: Sat, 6 Apr 2019 01:49:37 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:19 -0000 Author: ngie Date: Sat Apr 6 01:49:37 2019 New Revision: 345973 URL: https://svnweb.freebsd.org/changeset/base/345973 Log: Force MK_COVERAGE off if not building with a C++11 capable compiler This will unbreak the build with powerpc*, etc. Modified: projects/runtime-coverage-v2/share/mk/src.opts.mk Modified: projects/runtime-coverage-v2/share/mk/src.opts.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/src.opts.mk Fri Apr 5 23:34:46 2019 (r345972) +++ projects/runtime-coverage-v2/share/mk/src.opts.mk Sat Apr 6 01:49:37 2019 (r345973) @@ -295,12 +295,6 @@ __DEFAULT_NO_OPTIONS+=LLVM_TARGET_BPF # This means that architectures that have GCC 4.2 as default can not # build Clang without using an external compiler. -# Note about MK_COVERAGE: -# -# clang and gcc 4.8+ (c++11 supporting compilers) support -fprofile-dir and -# can compile lib/libclang_rt/profile . libgcov, etc, in base is a dead end -# that I do not wish to support. - .if ${COMPILER_FEATURES:Mc++11} && (${__T} == "aarch64" || \ ${__T} == "amd64" || ${__TT} == "arm" || ${__T} == "i386") # Clang is enabled, and will be installed as the default /usr/bin/cc. @@ -574,6 +568,12 @@ MK_${vv:H}:= ${MK_${vv:T}} # .if !${COMPILER_FEATURES:Mc++11} +# Note about MK_COVERAGE: +# +# clang and gcc 4.8+ (c++11 supporting compilers) support -fprofile-dir and +# can compile lib/libclang_rt/profile . libgcov, etc, in base would require +# backports from GPLv3 versions of the gcc toolchain in order to function. +MK_COVERAGE:= no MK_LLDB:= no .endif From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:17 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EBD93DC6C1 for ; Tue, 3 Sep 2019 14:06:17 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zF2syhz4PNr; Tue, 3 Sep 2019 14:06:17 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 16F7F1A422; Tue, 3 Sep 2019 14:06:04 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 9CB7210857; Fri, 5 Apr 2019 18:37:54 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3173A6E8D5; Fri, 5 Apr 2019 18:37:54 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1646D10855; Fri, 5 Apr 2019 18:37:54 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id B3C7610850 for ; Fri, 5 Apr 2019 18:37:50 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 419D26E8D2; Fri, 5 Apr 2019 18:37:50 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F03DE19082; Fri, 5 Apr 2019 18:37:49 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x35Ibnui059567; Fri, 5 Apr 2019 18:37:49 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x35Ibm4X059559; Fri, 5 Apr 2019 18:37:48 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904051837.x35Ibm4X059559@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345962 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345962 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3173A6E8D5 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.93 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.93)[-0.929,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:18 -0000 X-Original-Date: Fri, 5 Apr 2019 18:37:48 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:18 -0000 Author: asomers Date: Fri Apr 5 18:37:48 2019 New Revision: 345962 URL: https://svnweb.freebsd.org/changeset/base/345962 Log: fusefs: implement VOP_ACCESS VOP_ACCESS was never fully implemented in fusefs. This change: * Removes the FACCESS_DO_ACCESS flag, which pretty much disabled the whole vop. * Removes a quixotic special case for VEXEC on regular files. I don't know why that was in there. * Removes another confusing special case for VADMIN. * Removes the FACCESS_NOCHECKSPY flag. It seemed to be a performance optimization, but I'm unconvinced that it was a net positive. * Updates test cases. This change does NOT implement -o default_permissions. That will be handled separately. PR: 236291 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_internal.h projects/fuse2/tests/sys/fs/fusefs/access.cc projects/fuse2/tests/sys/fs/fusefs/mockfs.cc projects/fuse2/tests/sys/fs/fusefs/utils.cc Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Fri Apr 5 18:17:11 2019 (r345961) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Fri Apr 5 18:37:48 2019 (r345962) @@ -115,7 +115,7 @@ fuse_internal_access(struct vnode *vp, struct ucred *cred) { int err = 0; - uint32_t mask = 0; + uint32_t mask = F_OK; int dataflags; int vtype; struct mount *mp; @@ -123,13 +123,6 @@ fuse_internal_access(struct vnode *vp, struct fuse_access_in *fai; struct fuse_data *data; - /* NOT YET DONE */ - /* - * If this vnop gives you trouble, just return 0 here for a lazy - * kludge. - */ - /* return 0;*/ - mp = vnode_mount(vp); vtype = vnode_vtype(vp); @@ -139,65 +132,37 @@ fuse_internal_access(struct vnode *vp, if ((mode & VWRITE) && vfs_isrdonly(mp)) { return EROFS; } + /* Unless explicitly permitted, deny everyone except the fs owner. */ - if (!(facp->facc_flags & FACCESS_NOCHECKSPY)) { + if (!(facp->facc_flags)) { if (!(dataflags & FSESS_DAEMON_CAN_SPY)) { - int denied = fuse_match_cred(data->daemoncred, - cred); + int denied = fuse_match_cred(data->daemoncred, cred); - if (denied) { + if (denied) return EPERM; - } } - /* - * Set the "skip cred check" flag so future callers that share - * facp can skip fuse_match_cred. - */ - facp->facc_flags |= FACCESS_NOCHECKSPY; } - if (!(facp->facc_flags & FACCESS_DO_ACCESS)) { + + if (dataflags & FSESS_DEFAULT_PERMISSIONS) { + /* TODO: Implement me! Bug 216391 */ return 0; } - if (((vtype == VREG) && (mode & VEXEC))) { -#ifdef NEED_MOUNT_ARGUMENT_FOR_THIS - /* Let the kernel handle this through open / close heuristics.*/ - return ENOTSUP; -#else - /* Let the kernel handle this. */ - return 0; -#endif - } - if (!fsess_isimpl(mp, FUSE_ACCESS)) { - /* Let the kernel handle this. */ - return 0; - } - if (dataflags & FSESS_DEFAULT_PERMISSIONS) { - /* Let the kernel handle this. */ - return 0; - } - if ((mode & VADMIN) != 0) { - err = priv_check_cred(cred, PRIV_VFS_ADMIN); - if (err) { - return err; - } - } - if ((mode & (VWRITE | VAPPEND | VADMIN)) != 0) { + + if (!fsess_isimpl(mp, FUSE_ACCESS)) + return 0; + + if ((mode & (VWRITE | VAPPEND | VADMIN)) != 0) mask |= W_OK; - } - if ((mode & VREAD) != 0) { + if ((mode & VREAD) != 0) mask |= R_OK; - } - if ((mode & VEXEC) != 0) { + if ((mode & VEXEC) != 0) mask |= X_OK; - } - bzero(&fdi, sizeof(fdi)); fdisp_init(&fdi, sizeof(*fai)); fdisp_make_vp(&fdi, FUSE_ACCESS, vp, td, cred); fai = fdi.indata; - fai->mask = F_OK; - fai->mask |= mask; + fai->mask = mask; err = fdisp_wait_answ(&fdi); fdisp_destroy(&fdi); Modified: projects/fuse2/sys/fs/fuse/fuse_internal.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.h Fri Apr 5 18:17:11 2019 (r345961) +++ projects/fuse2/sys/fs/fuse/fuse_internal.h Fri Apr 5 18:37:48 2019 (r345962) @@ -155,7 +155,6 @@ fuse_iosize(struct vnode *vp) #define FVP_ACCESS_NOOP 0x01 #define FACCESS_VA_VALID 0x01 -#define FACCESS_DO_ACCESS 0x02 /* * Caller must be the directory's owner, or the superuser, or the sticky bit * must not be set @@ -163,7 +162,6 @@ fuse_iosize(struct vnode *vp) #define FACCESS_STICKY 0x04 /* Caller requires access to change file's owner */ #define FACCESS_CHOWN 0x08 -#define FACCESS_NOCHECKSPY 0x10 #define FACCESS_SETGID 0x12 #define FACCESS_XQUERIES (FACCESS_STICKY | FACCESS_CHOWN | FACCESS_SETGID) Modified: projects/fuse2/tests/sys/fs/fusefs/access.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/access.cc Fri Apr 5 18:17:11 2019 (r345961) +++ projects/fuse2/tests/sys/fs/fusefs/access.cc Fri Apr 5 18:37:48 2019 (r345962) @@ -55,14 +55,14 @@ virtual void SetUp() { }; /* The error case of FUSE_ACCESS. */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236291 */ -TEST_F(Access, DISABLED_eaccess) +TEST_F(Access, eaccess) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; uint64_t ino = 42; mode_t access_mode = X_OK; + expect_access(1, X_OK, 0); expect_lookup(RELPATH, ino); expect_access(ino, access_mode, EACCES); @@ -75,17 +75,15 @@ TEST_F(Access, DISABLED_eaccess) * and subsequent VOP_ACCESS calls will succeed automatically without querying * the daemon. */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236557 */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236291 */ -TEST_F(Access, DISABLED_enosys) +TEST_F(Access, enosys) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; uint64_t ino = 42; mode_t access_mode = R_OK; - expect_lookup(RELPATH, ino); - expect_access(ino, access_mode, ENOSYS); + expect_access(1, X_OK, ENOSYS); + FuseTest::expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 2); ASSERT_EQ(0, access(FULLPATH, access_mode)) << strerror(errno); ASSERT_EQ(0, access(FULLPATH, access_mode)) << strerror(errno); @@ -98,6 +96,7 @@ TEST_F(RofsAccess, erofs) uint64_t ino = 42; mode_t access_mode = W_OK; + expect_access(1, X_OK, 0); expect_lookup(RELPATH, ino); ASSERT_NE(0, access(FULLPATH, access_mode)); @@ -105,14 +104,14 @@ TEST_F(RofsAccess, erofs) } /* The successful case of FUSE_ACCESS. */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236291 */ -TEST_F(Access, DISABLED_ok) +TEST_F(Access, ok) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; uint64_t ino = 42; mode_t access_mode = R_OK; + expect_access(1, X_OK, 0); expect_lookup(RELPATH, ino); expect_access(ino, access_mode, 0); Modified: projects/fuse2/tests/sys/fs/fusefs/mockfs.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Fri Apr 5 18:17:11 2019 (r345961) +++ projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Fri Apr 5 18:37:48 2019 (r345962) @@ -162,6 +162,9 @@ void debug_fuseop(const mockfs_buf_in *in) switch (in->header.opcode) { const char *name, *value; + case FUSE_ACCESS: + printf(" mask=%#x", in->body.access.mask); + break; case FUSE_CREATE: name = (const char*)in->body.bytes + sizeof(fuse_open_in); Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Fri Apr 5 18:17:11 2019 (r345961) +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Fri Apr 5 18:37:48 2019 (r345962) @@ -96,6 +96,21 @@ void FuseTest::SetUp() { m_mock = new MockFS(m_maxreadahead, m_allow_other, m_default_permissions, m_push_symlinks_in, m_ro, m_init_flags); + /* + * FUSE_ACCESS is called almost universally. Expecting it in + * each test case would be super-annoying. Instead, set a + * default expectation for FUSE_ACCESS and return ENOSYS. + * + * Individual test cases can override this expectation since + * googlemock evaluates expectations in LIFO order. + */ + EXPECT_CALL(*m_mock, process( + ResultOf([=](auto in) { + return (in->header.opcode == FUSE_ACCESS); + }, Eq(true)), + _) + ).Times(AnyNumber()) + .WillRepeatedly(Invoke(ReturnErrno(ENOSYS))); } catch (std::system_error err) { FAIL() << err.what(); } From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:21 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A9C37DC77C for ; Tue, 3 Sep 2019 14:06:20 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zJ0pVYz4PRn; Tue, 3 Sep 2019 14:06:20 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 065D11A4F7; Tue, 3 Sep 2019 14:06:05 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6580A1AEAB; Sat, 6 Apr 2019 03:55:21 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2635D8BFD9; Sat, 6 Apr 2019 03:55:21 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 163391AEAA; Sat, 6 Apr 2019 03:55:21 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 2A1EF1AEA8 for ; Sat, 6 Apr 2019 03:55:18 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id AF7FD8BFD6; Sat, 6 Apr 2019 03:55:17 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 873271F0C4; Sat, 6 Apr 2019 03:55:17 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x363tHfl061947; Sat, 6 Apr 2019 03:55:17 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x363tHgh061946; Sat, 6 Apr 2019 03:55:17 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904060355.x363tHgh061946@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345977 - projects/fuse2-googletest-engine X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/fuse2-googletest-engine X-SVN-Commit-Revision: 345977 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2635D8BFD9 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.968,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:21 -0000 X-Original-Date: Sat, 6 Apr 2019 03:55:17 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:21 -0000 Author: ngie Date: Sat Apr 6 03:55:17 2019 New Revision: 345977 URL: https://svnweb.freebsd.org/changeset/base/345977 Log: Remove ^/projects/fuse2-googletest-engine I isolated the issue seen on the branch and developed a fix for my googletest engine enhancement PR: https://github.com/jmmv/kyua/pull/203 . Deleted: projects/fuse2-googletest-engine/ From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:13 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 35208DC54E for ; Tue, 3 Sep 2019 14:06:13 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z85dJRz4PKH; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id BE0121A317; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 74BEF1B28B; Thu, 4 Apr 2019 20:25:02 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 25E008B1E3; Thu, 4 Apr 2019 20:25:02 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0D91A1B289; Thu, 4 Apr 2019 20:25:02 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 4FD9D1B287 for ; Thu, 4 Apr 2019 20:24:59 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 05E6B8B1DF; Thu, 4 Apr 2019 20:24:59 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id CFF9C28C7; Thu, 4 Apr 2019 20:24:58 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x34KOw3v029547; Thu, 4 Apr 2019 20:24:58 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x34KOwMB029546; Thu, 4 Apr 2019 20:24:58 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904042024.x34KOwMB029546@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345890 - projects/fuse2/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: projects/fuse2/sys/fs/fuse X-SVN-Commit-Revision: 345890 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 25E008B1E3 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.95)[-0.945,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:13 -0000 X-Original-Date: Thu, 4 Apr 2019 20:24:58 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:13 -0000 Author: asomers Date: Thu Apr 4 20:24:58 2019 New Revision: 345890 URL: https://svnweb.freebsd.org/changeset/base/345890 Log: fusefs: fix some uninitialized memory references This bug was long present, but was exacerbated by r345876. The problem is that fiov_refresh was bzero()ing a buffer _before_ it reallocated that buffer. That's obviously the wrong order. I fixed the order in r345876, which exposed the main problem. Previously, the first 160 bytes of the buffer were getting bzero()ed when it was first allocated in fiov_init. Subsequently, as that buffer got recycled between callers, the portion used by the _previous_ caller was getting bzero()ed by the current caller in fiov_refresh. The problem was never visible simply because no caller was trying to use more than 160 bytes. Now the buffer gets properly bzero()ed both at initialization time and any time it gets enlarged or reallocated. Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_ipc.c Modified: projects/fuse2/sys/fs/fuse/fuse_ipc.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_ipc.c Thu Apr 4 19:59:31 2019 (r345889) +++ projects/fuse2/sys/fs/fuse/fuse_ipc.c Thu Apr 4 20:24:58 2019 (r345890) @@ -182,6 +182,11 @@ fiov_adjust(struct fuse_iov *fiov, size_t size) } fiov->allocated_size = FU_AT_LEAST(size); fiov->credit = fuse_iov_credit; + /* Clear data buffer after reallocation */ + bzero(fiov->base, size); + } else if (size > fiov->len) { + /* Clear newly extended portion of data buffer */ + bzero((char*)fiov->base + fiov->len, size - fiov->len); } fiov->len = size; } @@ -198,7 +203,6 @@ void fiov_refresh(struct fuse_iov *fiov) { fiov_adjust(fiov, 0); - bzero(fiov->base, fiov->len); } static int @@ -744,6 +748,8 @@ fdisp_refresh_pid(struct fuse_dispatcher *fdip, enum f struct mount *mp, uint64_t nid, pid_t pid, struct ucred *cred) { MPASS(fdip->tick); + MPASS2(sizeof(fdip->finh) + fdip->iosize <= fdip->tick->tk_ms_fiov.len, + "Must use fdisp_make_pid to increase the size of the fiov"); fticket_reset(fdip->tick); FUSE_DIMALLOC(&fdip->tick->tk_ms_fiov, fdip->finh, @@ -766,6 +772,7 @@ fdisp_make_pid(struct fuse_dispatcher *fdip, enum fuse fdip->tick = fuse_ticket_fetch(data); } + /* FUSE_DIMALLOC will bzero the fiovs when it enlarges them */ FUSE_DIMALLOC(&fdip->tick->tk_ms_fiov, fdip->finh, fdip->indata, fdip->iosize); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:13 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id B5AF2DC538 for ; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z82xfSz4PJq; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 7F9471A2F7; Tue, 3 Sep 2019 14:06:01 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 726FD18CCF; Thu, 4 Apr 2019 18:13:05 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 32CA785EE7; Thu, 4 Apr 2019 18:13:05 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 19A6318CCD; Thu, 4 Apr 2019 18:13:05 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 955F918CCB for ; Thu, 4 Apr 2019 18:13:02 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 6344C85EE4; Thu, 4 Apr 2019 18:13:02 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 35CAA11F1; Thu, 4 Apr 2019 18:13:02 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x34ID2P8060659; Thu, 4 Apr 2019 18:13:02 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x34ID2wY060658; Thu, 4 Apr 2019 18:13:02 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904041813.x34ID2wY060658@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345884 - projects/fuse2-googletest-engine/sys/fs/fuse X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/fuse2-googletest-engine/sys/fs/fuse X-SVN-Commit-Revision: 345884 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 32CA785EE7 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.96)[-0.960,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:13 -0000 X-Original-Date: Thu, 4 Apr 2019 18:13:02 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:13 -0000 Author: ngie Date: Thu Apr 4 18:13:01 2019 New Revision: 345884 URL: https://svnweb.freebsd.org/changeset/base/345884 Log: Unbreak the fusefs module build with GENERIC-NODEBUG by merging ^/head@r345689 Modified: projects/fuse2-googletest-engine/sys/fs/fuse/fuse_ipc.c Directory Properties: projects/fuse2-googletest-engine/ (props changed) Modified: projects/fuse2-googletest-engine/sys/fs/fuse/fuse_ipc.c ============================================================================== --- projects/fuse2-googletest-engine/sys/fs/fuse/fuse_ipc.c Thu Apr 4 18:11:56 2019 (r345883) +++ projects/fuse2-googletest-engine/sys/fs/fuse/fuse_ipc.c Thu Apr 4 18:13:01 2019 (r345884) @@ -229,7 +229,9 @@ fticket_ctor(void *mem, int size, void *arg, int flags static void fticket_dtor(void *mem, int size, void *arg) { +#ifdef INVARIANTS struct fuse_ticket *ftick = mem; +#endif FUSE_ASSERT_MS_DONE(ftick); FUSE_ASSERT_AW_DONE(ftick); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:14 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 28CB1DC594 for ; Tue, 3 Sep 2019 14:06:14 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7z95BJyz4PLD; Tue, 3 Sep 2019 14:06:13 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 3E07D1A34D; Tue, 3 Sep 2019 14:06:02 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 0E1731C00; Fri, 5 Apr 2019 03:37:22 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 57FA27349D; Fri, 5 Apr 2019 03:37:21 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 20D0A1BAB; Fri, 5 Apr 2019 03:37:21 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id DCB8B1BA9 for ; Fri, 5 Apr 2019 03:37:18 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 8F5CA73498; Fri, 5 Apr 2019 03:37:18 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 690FC75C9; Fri, 5 Apr 2019 03:37:18 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x353bIaW058118; Fri, 5 Apr 2019 03:37:18 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x353bHmX058112; Fri, 5 Apr 2019 03:37:17 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904050337.x353bHmX058112@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345904 - in projects/fuse2-googletest-engine: contrib/googletest/googletest/test sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/fuse2-googletest-engine: contrib/googletest/googletest/test sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345904 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 57FA27349D X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.95 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.95)[-0.947,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:14 -0000 X-Original-Date: Fri, 5 Apr 2019 03:37:17 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:14 -0000 Author: ngie Date: Fri Apr 5 03:37:16 2019 New Revision: 345904 URL: https://svnweb.freebsd.org/changeset/base/345904 Log: MFprojects/fuse2@r345903 Added: projects/fuse2-googletest-engine/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc - copied unchanged from r345903, projects/fuse2/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc Modified: projects/fuse2-googletest-engine/sys/fs/fuse/fuse_file.c projects/fuse2-googletest-engine/sys/fs/fuse/fuse_file.h projects/fuse2-googletest-engine/sys/fs/fuse/fuse_ipc.c projects/fuse2-googletest-engine/sys/fs/fuse/fuse_node.c projects/fuse2-googletest-engine/sys/fs/fuse/fuse_vnops.c projects/fuse2-googletest-engine/tests/sys/fs/fusefs/read.cc Directory Properties: projects/fuse2-googletest-engine/ (props changed) Copied: projects/fuse2-googletest-engine/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc (from r345903, projects/fuse2/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/fuse2-googletest-engine/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc Fri Apr 5 03:37:16 2019 (r345904, copy of r345903, projects/fuse2/contrib/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc) @@ -0,0 +1,60 @@ +// Copyright 2019, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// This test verifies that skipping in the environment results in the +// testcases being skipped. +// +// This is a reproduction case for +// https://github.com/google/googletest/issues/2189 . + +#include +#include + +class SetupEnvironment : public testing::Environment { +public: + void SetUp() override { + GTEST_SKIP() << "Skipping the entire environment"; + } +}; + +TEST(Test, AlwaysPasses) { + EXPECT_EQ(true, true); +} + +TEST(Test, AlwaysFails) { + EXPECT_EQ(true, false); +} + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + + testing::AddGlobalTestEnvironment(new SetupEnvironment()); + + return (RUN_ALL_TESTS()); +} Modified: projects/fuse2-googletest-engine/sys/fs/fuse/fuse_file.c ============================================================================== --- projects/fuse2-googletest-engine/sys/fs/fuse/fuse_file.c Fri Apr 5 03:35:40 2019 (r345903) +++ projects/fuse2-googletest-engine/sys/fs/fuse/fuse_file.c Fri Apr 5 03:37:16 2019 (r345904) @@ -79,6 +79,7 @@ __FBSDID("$FreeBSD$"); #include "fuse.h" #include "fuse_file.h" #include "fuse_internal.h" +#include "fuse_io.h" #include "fuse_ipc.h" #include "fuse_node.h" @@ -188,9 +189,7 @@ fuse_filehandle_open(struct vnode *vp, int a_mode, } foo = fdi.answ; - fuse_filehandle_init(vp, fufh_type, fufhp, td->td_proc->p_pid, cred, - foo); - + fuse_filehandle_init(vp, fufh_type, fufhp, td, cred, foo); fuse_vnode_open(vp, foo->open_flags, td); out: @@ -322,7 +321,7 @@ fuse_filehandle_getrw(struct vnode *vp, int fflag, void fuse_filehandle_init(struct vnode *vp, fufh_type_t fufh_type, - struct fuse_filehandle **fufhp, pid_t pid, struct ucred *cred, + struct fuse_filehandle **fufhp, struct thread *td, struct ucred *cred, struct fuse_open_out *foo) { struct fuse_vnode_data *fvdat = VTOFUD(vp); @@ -335,7 +334,7 @@ fuse_filehandle_init(struct vnode *vp, fufh_type_t fuf fufh->fufh_type = fufh_type; fufh->gid = cred->cr_rgid; fufh->uid = cred->cr_uid; - fufh->pid = pid; + fufh->pid = td->td_proc->p_pid; fufh->fuse_open_flags = foo->open_flags; if (!FUFH_IS_VALID(fufh)) { panic("FUSE: init: invalid filehandle id (type=%d)", fufh_type); @@ -345,4 +344,15 @@ fuse_filehandle_init(struct vnode *vp, fufh_type_t fuf *fufhp = fufh; atomic_add_acq_int(&fuse_fh_count, 1); + + if (foo->open_flags & FOPEN_DIRECT_IO) { + ASSERT_VOP_ELOCKED(vp, __func__); + VTOFUD(vp)->flag |= FN_DIRECTIO; + fuse_io_invalbuf(vp, td); + } else { + if ((foo->open_flags & FOPEN_KEEP_CACHE) == 0) + fuse_io_invalbuf(vp, td); + VTOFUD(vp)->flag &= ~FN_DIRECTIO; + } + } Modified: projects/fuse2-googletest-engine/sys/fs/fuse/fuse_file.h ============================================================================== --- projects/fuse2-googletest-engine/sys/fs/fuse/fuse_file.h Fri Apr 5 03:35:40 2019 (r345903) +++ projects/fuse2-googletest-engine/sys/fs/fuse/fuse_file.h Fri Apr 5 03:37:16 2019 (r345904) @@ -158,7 +158,7 @@ int fuse_filehandle_getrw(struct vnode *vp, int fflag, pid_t pid); void fuse_filehandle_init(struct vnode *vp, fufh_type_t fufh_type, - struct fuse_filehandle **fufhp, pid_t pid, + struct fuse_filehandle **fufhp, struct thread *td, struct ucred *cred, struct fuse_open_out *foo); int fuse_filehandle_open(struct vnode *vp, int mode, struct fuse_filehandle **fufhp, struct thread *td, Modified: projects/fuse2-googletest-engine/sys/fs/fuse/fuse_ipc.c ============================================================================== --- projects/fuse2-googletest-engine/sys/fs/fuse/fuse_ipc.c Fri Apr 5 03:35:40 2019 (r345903) +++ projects/fuse2-googletest-engine/sys/fs/fuse/fuse_ipc.c Fri Apr 5 03:37:16 2019 (r345904) @@ -182,6 +182,11 @@ fiov_adjust(struct fuse_iov *fiov, size_t size) } fiov->allocated_size = FU_AT_LEAST(size); fiov->credit = fuse_iov_credit; + /* Clear data buffer after reallocation */ + bzero(fiov->base, size); + } else if (size > fiov->len) { + /* Clear newly extended portion of data buffer */ + bzero((char*)fiov->base + fiov->len, size - fiov->len); } fiov->len = size; } @@ -198,7 +203,6 @@ void fiov_refresh(struct fuse_iov *fiov) { fiov_adjust(fiov, 0); - bzero(fiov->base, fiov->len); } static int @@ -744,6 +748,8 @@ fdisp_refresh_pid(struct fuse_dispatcher *fdip, enum f struct mount *mp, uint64_t nid, pid_t pid, struct ucred *cred) { MPASS(fdip->tick); + MPASS2(sizeof(fdip->finh) + fdip->iosize <= fdip->tick->tk_ms_fiov.len, + "Must use fdisp_make_pid to increase the size of the fiov"); fticket_reset(fdip->tick); FUSE_DIMALLOC(&fdip->tick->tk_ms_fiov, fdip->finh, @@ -766,6 +772,7 @@ fdisp_make_pid(struct fuse_dispatcher *fdip, enum fuse fdip->tick = fuse_ticket_fetch(data); } + /* FUSE_DIMALLOC will bzero the fiovs when it enlarges them */ FUSE_DIMALLOC(&fdip->tick->tk_ms_fiov, fdip->finh, fdip->indata, fdip->iosize); Modified: projects/fuse2-googletest-engine/sys/fs/fuse/fuse_node.c ============================================================================== --- projects/fuse2-googletest-engine/sys/fs/fuse/fuse_node.c Fri Apr 5 03:35:40 2019 (r345903) +++ projects/fuse2-googletest-engine/sys/fs/fuse/fuse_node.c Fri Apr 5 03:37:16 2019 (r345904) @@ -329,16 +329,6 @@ fuse_vnode_open(struct vnode *vp, int32_t fuse_open_fl * * XXXIP: Handle fd based DIRECT_IO */ - if (fuse_open_flags & FOPEN_DIRECT_IO) { - ASSERT_VOP_ELOCKED(vp, __func__); - VTOFUD(vp)->flag |= FN_DIRECTIO; - fuse_io_invalbuf(vp, td); - } else { - if ((fuse_open_flags & FOPEN_KEEP_CACHE) == 0) - fuse_io_invalbuf(vp, td); - VTOFUD(vp)->flag &= ~FN_DIRECTIO; - } - if (vnode_vtype(vp) == VREG) { /* XXXIP prevent getattr, by using cached node size */ vnode_create_vobject(vp, 0, td); Modified: projects/fuse2-googletest-engine/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2-googletest-engine/sys/fs/fuse/fuse_vnops.c Fri Apr 5 03:35:40 2019 (r345903) +++ projects/fuse2-googletest-engine/sys/fs/fuse/fuse_vnops.c Fri Apr 5 03:37:16 2019 (r345904) @@ -479,8 +479,7 @@ fuse_vnop_create(struct vop_create_args *ap) } ASSERT_VOP_ELOCKED(*vpp, "fuse_vnop_create"); - fuse_filehandle_init(*vpp, FUFH_RDWR, NULL, td->td_proc->p_pid, cred, - foo); + fuse_filehandle_init(*vpp, FUFH_RDWR, NULL, td, cred, foo); fuse_vnode_open(*vpp, foo->open_flags, td); cache_purge_negative(dvp); Modified: projects/fuse2-googletest-engine/tests/sys/fs/fusefs/read.cc ============================================================================== --- projects/fuse2-googletest-engine/tests/sys/fs/fusefs/read.cc Fri Apr 5 03:35:40 2019 (r345903) +++ projects/fuse2-googletest-engine/tests/sys/fs/fusefs/read.cc Fri Apr 5 03:37:16 2019 (r345904) @@ -398,8 +398,7 @@ TEST_F(Read, eio) * With the keep_cache option, the kernel may keep its read cache across * multiple open(2)s. */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236560 */ -TEST_F(Read, DISABLED_keep_cache) +TEST_F(Read, keep_cache) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -410,7 +409,7 @@ TEST_F(Read, DISABLED_keep_cache) char buf[bufsize]; FuseTest::expect_lookup(RELPATH, ino, S_IFREG | 0644, bufsize, 2); - expect_open(ino, FOPEN_KEEP_CACHE, 1); + expect_open(ino, FOPEN_KEEP_CACHE, 2); expect_getattr(ino, bufsize); expect_read(ino, 0, bufsize, bufsize, CONTENTS); @@ -418,7 +417,7 @@ TEST_F(Read, DISABLED_keep_cache) ASSERT_LE(0, fd0) << strerror(errno); ASSERT_EQ(bufsize, read(fd0, buf, bufsize)) << strerror(errno); - fd1 = open(FULLPATH, O_RDONLY); + fd1 = open(FULLPATH, O_RDWR); ASSERT_LE(0, fd1) << strerror(errno); /* @@ -445,7 +444,7 @@ TEST_F(Read, keep_cache_disabled) char buf[bufsize]; FuseTest::expect_lookup(RELPATH, ino, S_IFREG | 0644, bufsize, 2); - expect_open(ino, FOPEN_KEEP_CACHE, 1); + expect_open(ino, 0, 2); expect_getattr(ino, bufsize); expect_read(ino, 0, bufsize, bufsize, CONTENTS); @@ -453,7 +452,7 @@ TEST_F(Read, keep_cache_disabled) ASSERT_LE(0, fd0) << strerror(errno); ASSERT_EQ(bufsize, read(fd0, buf, bufsize)) << strerror(errno); - fd1 = open(FULLPATH, O_RDONLY); + fd1 = open(FULLPATH, O_RDWR); ASSERT_LE(0, fd1) << strerror(errno); /* From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:17 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 2F2A4DC68B for ; Tue, 3 Sep 2019 14:06:17 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zD6WyHz4PNJ; Tue, 3 Sep 2019 14:06:16 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id B7B591A3FC; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6D3F1DB7B; Fri, 5 Apr 2019 15:33:49 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3839996AE9; Fri, 5 Apr 2019 15:33:49 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1AEB1DB7A; Fri, 5 Apr 2019 15:33:49 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 1848BDB78 for ; Fri, 5 Apr 2019 15:33:46 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C2A3096AE6; Fri, 5 Apr 2019 15:33:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 993C6F165; Fri, 5 Apr 2019 15:33:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x35FXjgO064538; Fri, 5 Apr 2019 15:33:45 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x35FXi7h064532; Fri, 5 Apr 2019 15:33:44 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904051533.x35FXi7h064532@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345950 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345950 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3839996AE9 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.998,0]; NEURAL_HAM_SHORT(-0.96)[-0.961,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:17 -0000 X-Original-Date: Fri, 5 Apr 2019 15:33:44 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:17 -0000 Author: asomers Date: Fri Apr 5 15:33:43 2019 New Revision: 345950 URL: https://svnweb.freebsd.org/changeset/base/345950 Log: fusefs: correctly return EROFS from VOP_ACCESS Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/tests/sys/fs/fusefs/access.cc projects/fuse2/tests/sys/fs/fusefs/mockfs.cc projects/fuse2/tests/sys/fs/fusefs/mockfs.hh projects/fuse2/tests/sys/fs/fusefs/utils.cc projects/fuse2/tests/sys/fs/fusefs/utils.hh Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Fri Apr 5 15:04:25 2019 (r345949) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Fri Apr 5 15:33:43 2019 (r345950) @@ -137,7 +137,7 @@ fuse_internal_access(struct vnode *vp, dataflags = data->dataflags; if ((mode & VWRITE) && vfs_isrdonly(mp)) { - return EACCES; + return EROFS; } /* Unless explicitly permitted, deny everyone except the fs owner. */ if (vnode_isvroot(vp) && !(facp->facc_flags & FACCESS_NOCHECKSPY)) { Modified: projects/fuse2/tests/sys/fs/fusefs/access.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/access.cc Fri Apr 5 15:04:25 2019 (r345949) +++ projects/fuse2/tests/sys/fs/fusefs/access.cc Fri Apr 5 15:33:43 2019 (r345950) @@ -46,6 +46,14 @@ void expect_lookup(const char *relpath, uint64_t ino) } }; +class RofsAccess: public Access { +public: +virtual void SetUp() { + m_ro = true; + Access::SetUp(); +} +}; + /* The error case of FUSE_ACCESS. */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=236291 */ TEST_F(Access, DISABLED_eaccess) @@ -81,6 +89,19 @@ TEST_F(Access, DISABLED_enosys) ASSERT_EQ(0, access(FULLPATH, access_mode)) << strerror(errno); ASSERT_EQ(0, access(FULLPATH, access_mode)) << strerror(errno); +} + +TEST_F(RofsAccess, erofs) +{ + const char FULLPATH[] = "mountpoint/some_file.txt"; + const char RELPATH[] = "some_file.txt"; + uint64_t ino = 42; + mode_t access_mode = W_OK; + + expect_lookup(RELPATH, ino); + + ASSERT_NE(0, access(FULLPATH, access_mode)); + ASSERT_EQ(EROFS, errno); } /* The successful case of FUSE_ACCESS. */ Modified: projects/fuse2/tests/sys/fs/fusefs/mockfs.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Fri Apr 5 15:04:25 2019 (r345949) +++ projects/fuse2/tests/sys/fs/fusefs/mockfs.cc Fri Apr 5 15:33:43 2019 (r345950) @@ -258,7 +258,7 @@ void debug_fuseop(const mockfs_buf_in *in) } MockFS::MockFS(int max_readahead, bool allow_other, bool default_permissions, - bool push_symlinks_in, uint32_t flags) + bool push_symlinks_in, bool ro, uint32_t flags) { struct iovec *iov = NULL; int iovlen = 0; @@ -305,6 +305,10 @@ MockFS::MockFS(int max_readahead, bool allow_other, bo } if (push_symlinks_in) { build_iovec(&iov, &iovlen, "push_symlinks_in", + __DECONST(void*, &trueval), sizeof(bool)); + } + if (ro) { + build_iovec(&iov, &iovlen, "ro", __DECONST(void*, &trueval), sizeof(bool)); } if (nmount(iov, iovlen, 0)) Modified: projects/fuse2/tests/sys/fs/fusefs/mockfs.hh ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/mockfs.hh Fri Apr 5 15:04:25 2019 (r345949) +++ projects/fuse2/tests/sys/fs/fusefs/mockfs.hh Fri Apr 5 15:33:43 2019 (r345950) @@ -216,7 +216,7 @@ class MockFS { /* Create a new mockfs and mount it to a tempdir */ MockFS(int max_readahead, bool allow_other, - bool default_permissions, bool push_symlinks_in, + bool default_permissions, bool push_symlinks_in, bool ro, uint32_t flags); virtual ~MockFS(); Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Fri Apr 5 15:04:25 2019 (r345949) +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Fri Apr 5 15:33:43 2019 (r345950) @@ -94,7 +94,7 @@ void FuseTest::SetUp() { try { m_mock = new MockFS(m_maxreadahead, m_allow_other, - m_default_permissions, m_push_symlinks_in, + m_default_permissions, m_push_symlinks_in, m_ro, m_init_flags); } catch (std::system_error err) { FAIL() << err.what(); Modified: projects/fuse2/tests/sys/fs/fusefs/utils.hh ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.hh Fri Apr 5 15:04:25 2019 (r345949) +++ projects/fuse2/tests/sys/fs/fusefs/utils.hh Fri Apr 5 15:33:43 2019 (r345950) @@ -44,6 +44,7 @@ class FuseTest : public ::testing::Test { bool m_allow_other; bool m_default_permissions; bool m_push_symlinks_in; + bool m_ro; MockFS *m_mock = NULL; const static uint64_t FH = 0xdeadbeef1a7ebabe; @@ -59,7 +60,8 @@ class FuseTest : public ::testing::Test { m_init_flags(0), m_allow_other(false), m_default_permissions(false), - m_push_symlinks_in(false) + m_push_symlinks_in(false), + m_ro(false) {} virtual void SetUp(); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:18 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 00210DC6C7 for ; Tue, 3 Sep 2019 14:06:17 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zF24gcz4PNj; Tue, 3 Sep 2019 14:06:17 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id F2FCC1A415; Tue, 3 Sep 2019 14:06:03 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 59944FA72; Fri, 5 Apr 2019 17:21:27 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 26E346C406; Fri, 5 Apr 2019 17:21:27 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 17014FA71; Fri, 5 Apr 2019 17:21:27 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 8A027FA6C for ; Fri, 5 Apr 2019 17:21:24 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4DFCE6C3F8; Fri, 5 Apr 2019 17:21:24 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 244C618314; Fri, 5 Apr 2019 17:21:24 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x35HLOwT020008; Fri, 5 Apr 2019 17:21:24 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x35HLNIX020006; Fri, 5 Apr 2019 17:21:23 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904051721.x35HLNIX020006@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345958 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 345958 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 26E346C406 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.98)[-0.983,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:18 -0000 X-Original-Date: Fri, 5 Apr 2019 17:21:23 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:18 -0000 Author: asomers Date: Fri Apr 5 17:21:23 2019 New Revision: 345958 URL: https://svnweb.freebsd.org/changeset/base/345958 Log: fusefs: enforce -onoallow_other even beneath the mountpoint When -o allow_other is not in use, fusefs is supposed to prevent access to the filesystem by any user other than the one who owns the daemon. Our fusefs implementation was only enforcing that restriction at the mountpoint itself. That was usually good enough because lookup usually descends from the mountpoint. However, there are cases when it doesn't, such as when using openat relative to a file beneath the mountpoint. PR: 237052 Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Fri Apr 5 16:54:20 2019 (r345957) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Fri Apr 5 17:21:23 2019 (r345958) @@ -140,7 +140,7 @@ fuse_internal_access(struct vnode *vp, return EROFS; } /* Unless explicitly permitted, deny everyone except the fs owner. */ - if (vnode_isvroot(vp) && !(facp->facc_flags & FACCESS_NOCHECKSPY)) { + if (!(facp->facc_flags & FACCESS_NOCHECKSPY)) { if (!(dataflags & FSESS_DAEMON_CAN_SPY)) { int denied = fuse_match_cred(data->daemoncred, cred); @@ -149,6 +149,10 @@ fuse_internal_access(struct vnode *vp, return EPERM; } } + /* + * Set the "skip cred check" flag so future callers that share + * facp can skip fuse_match_cred. + */ facp->facc_flags |= FACCESS_NOCHECKSPY; } if (!(facp->facc_flags & FACCESS_DO_ACCESS)) { Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Fri Apr 5 16:54:20 2019 (r345957) +++ projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Fri Apr 5 17:21:23 2019 (r345958) @@ -179,3 +179,48 @@ TEST_F(NoAllowOther, disallowed) } ); } + +/* + * When -o allow_other is not used, users other than the owner aren't allowed + * to open anything inside of the mount point, not just the mountpoint itself + * This is a regression test for bug 237052 + */ +TEST_F(NoAllowOther, disallowed_beneath_root) +{ + const static char FULLPATH[] = "mountpoint/some_dir"; + const static char RELPATH[] = "some_dir"; + const static char RELPATH2[] = "other_dir"; + const static uint64_t ino = 42; + const static uint64_t ino2 = 43; + int dfd; + + expect_lookup(RELPATH, ino, S_IFDIR | 0755, 0, 1); + EXPECT_LOOKUP(ino, RELPATH2) + .WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto out) { + SET_OUT_HEADER_LEN(out, entry); + out->body.entry.attr.mode = S_IFREG | 0644; + out->body.entry.nodeid = ino2; + out->body.entry.attr.nlink = 1; + out->body.entry.attr_valid = UINT64_MAX; + }))); + expect_opendir(ino); + dfd = open(FULLPATH, O_DIRECTORY); + ASSERT_LE(0, dfd) << strerror(errno); + + fork(true, [] { + }, [&]() { + int fd; + + fd = openat(dfd, RELPATH2, O_RDONLY); + if (fd >= 0) { + fprintf(stderr, "openat should've failed\n"); + return(1); + } else if (errno != EPERM) { + fprintf(stderr, "Unexpected error: %s\n", + strerror(errno)); + return(1); + } + return 0; + } + ); +} From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:26 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 50699DC900 for ; Tue, 3 Sep 2019 14:06:26 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zP4GXqz4PX6; Tue, 3 Sep 2019 14:06:25 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 99C451A640; Tue, 3 Sep 2019 14:06:07 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 6475718759; Sun, 7 Apr 2019 17:22:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 302FD6A596; Sun, 7 Apr 2019 17:22:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1C1D118758; Sun, 7 Apr 2019 17:22:35 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 88BFE18756 for ; Sun, 7 Apr 2019 17:22:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 52B506A594; Sun, 7 Apr 2019 17:22:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 26AE1F507; Sun, 7 Apr 2019 17:22:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x37HMW9S064849; Sun, 7 Apr 2019 17:22:32 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x37HMWY0064848; Sun, 7 Apr 2019 17:22:32 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904071722.x37HMWY0064848@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r346014 - projects/runtime-coverage-v2/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage-v2/share/mk X-SVN-Commit-Revision: 346014 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 302FD6A596 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.96)[-0.965,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:26 -0000 X-Original-Date: Sun, 7 Apr 2019 17:22:32 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:26 -0000 Author: ngie Date: Sun Apr 7 17:22:31 2019 New Revision: 346014 URL: https://svnweb.freebsd.org/changeset/base/346014 Log: Disable MK_COVERAGE* when cross-building Unfortunately, make tinderbox is building a copy of libclang_rt.profile*.a for the machine architecture, not the target architecture, while looking for the library under the cross-toolchain directory, with the current set of proposed changes. As such, disable MK_COVERAGE and MK_COVERAGE_SUPPORT until I work out why the library isn't being built and installed as expected. Add a comment to note the issue. Modified: projects/runtime-coverage-v2/share/mk/src.opts.mk Modified: projects/runtime-coverage-v2/share/mk/src.opts.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/src.opts.mk Sun Apr 7 16:33:22 2019 (r346013) +++ projects/runtime-coverage-v2/share/mk/src.opts.mk Sun Apr 7 17:22:31 2019 (r346014) @@ -405,6 +405,15 @@ __DEFAULT_YES_OPTIONS+=OPENMP __DEFAULT_NO_OPTIONS+=OPENMP .endif +# cross toolchains with "make universe" aren't properly building +# libclang_rt.profile*.a yet for the target platform and installing it to the +# expected location, so disable coverage support for now with clang when +# cross-building. +.if ${COMPILER_TYPE} == "clang" && ${__T} != ${__TT} +BROKEN_OPTIONS+=COVERAGE +BROKEN_OPTIONS+=COVERAGE_SUPPORT +.endif + .include # From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:29 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 704D5DCA04 for ; Tue, 3 Sep 2019 14:06:29 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zS1WDqz4Pb1; Tue, 3 Sep 2019 14:06:28 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 1FEF81A6FC; Tue, 3 Sep 2019 14:06:09 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E5B8111475; Tue, 9 Apr 2019 00:35:12 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3DF7F6BED1; Tue, 9 Apr 2019 00:35:12 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1C8EB11446; Tue, 9 Apr 2019 00:35:12 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id BF7C111444 for ; Tue, 9 Apr 2019 00:35:09 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 67B536BECC; Tue, 9 Apr 2019 00:35:09 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3A6DE32A3; Tue, 9 Apr 2019 00:35:09 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x390Z9ph050168; Tue, 9 Apr 2019 00:35:09 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x390Z94Z050167; Tue, 9 Apr 2019 00:35:09 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904090035.x390Z94Z050167@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r346045 - projects/runtime-coverage-v2/share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage-v2/share/mk X-SVN-Commit-Revision: 346045 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3DF7F6BED1 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.996,0]; NEURAL_HAM_SHORT(-0.95)[-0.947,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:29 -0000 X-Original-Date: Tue, 9 Apr 2019 00:35:09 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:29 -0000 Author: ngie Date: Tue Apr 9 00:35:08 2019 New Revision: 346045 URL: https://svnweb.freebsd.org/changeset/base/346045 Log: Disable MK_COVERAGE_SUPPORT when MK_COVERAGE is disabled Modified: projects/runtime-coverage-v2/share/mk/src.opts.mk Modified: projects/runtime-coverage-v2/share/mk/src.opts.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/src.opts.mk Mon Apr 8 22:57:36 2019 (r346044) +++ projects/runtime-coverage-v2/share/mk/src.opts.mk Tue Apr 9 00:35:08 2019 (r346045) @@ -547,6 +547,7 @@ MK_LLD_BOOTSTRAP:= no MK_BINUTILS:= no MK_CLANG:= no MK_COVERAGE:= no +MK_COVERAGE_SUPPORT:= no MK_GCC:= no MK_GDB:= no MK_INCLUDES:= no @@ -584,12 +585,13 @@ MK_${vv:H}:= ${MK_${vv:T}} # .if !${COMPILER_FEATURES:Mc++11} -# Note about MK_COVERAGE: +# Note about MK_COVERAGE and MK_COVERAGE_SUPPORT: # # clang and gcc 4.8+ (c++11 supporting compilers) support -fprofile-dir and # can compile lib/libclang_rt/profile . libgcov, etc, in base would require # backports from GPLv3 versions of the gcc toolchain in order to function. MK_COVERAGE:= no +MK_COVERAGE_SUPPORT:= no MK_LLDB:= no .endif From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:20 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A76CFDC77B for ; Tue, 3 Sep 2019 14:06:20 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zJ15gzz4PRt; Tue, 3 Sep 2019 14:06:20 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 155A41A513; Tue, 3 Sep 2019 14:06:06 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 5A0441BDFC; Sat, 6 Apr 2019 05:34:55 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2C28B8EA27; Sat, 6 Apr 2019 05:34:55 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1BA841BDFB; Sat, 6 Apr 2019 05:34:55 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id D84C01BDF9 for ; Sat, 6 Apr 2019 05:34:52 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 64A098EA25; Sat, 6 Apr 2019 05:34:52 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 415532025A; Sat, 6 Apr 2019 05:34:52 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x365YqdX015366; Sat, 6 Apr 2019 05:34:52 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x365YpBc015364; Sat, 6 Apr 2019 05:34:51 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904060534.x365YpBc015364@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345979 - in projects/runtime-coverage-v2: . share/mk X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage-v2: . share/mk X-SVN-Commit-Revision: 345979 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2C28B8EA27 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.95)[-0.945,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:21 -0000 X-Original-Date: Sat, 6 Apr 2019 05:34:51 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:21 -0000 Author: ngie Date: Sat Apr 6 05:34:51 2019 New Revision: 345979 URL: https://svnweb.freebsd.org/changeset/base/345979 Log: Build libclang_rt.profile as a cross-tools dependency Long story short, make tinderbox was failing because it was looking for libclang_rt.profile under a different path from there make libraries installs it. Add a new MK knob to control building `lib/libclang_rt/profile` in buildworld: MK_COVERAGE_SUPPORT. MK_COVERAGE_SUPPORT is to `lib/libclang_rt/profile`, as MK_TESTS_SUPPORT is to lib/atf/...: it serves to separate out building infrastructure from the resulting code. This commit is untested, but I'm hopeful that it's a move in the right direction. Modified: projects/runtime-coverage-v2/Makefile.inc1 projects/runtime-coverage-v2/share/mk/src.opts.mk Modified: projects/runtime-coverage-v2/Makefile.inc1 ============================================================================== --- projects/runtime-coverage-v2/Makefile.inc1 Sat Apr 6 03:59:21 2019 (r345978) +++ projects/runtime-coverage-v2/Makefile.inc1 Sat Apr 6 05:34:51 2019 (r345979) @@ -688,7 +688,8 @@ BSARGS= DESTDIR= \ BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \ BWPHASE=${.TARGET:C,^_,,} \ SSP_CFLAGS= \ - MK_COVERAGE=no MK_HTML=no NO_LINT=yes MK_MAN=no \ + MK_COVERAGE=no MK_COVERAGE_SUPPORT=${MK_COVERAGE} \ + MK_HTML=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ @@ -734,7 +735,8 @@ KTMAKE= \ MAKEOBJDIRPREFIX= \ BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \ SSP_CFLAGS= \ - MK_COVERAGE=no MK_HTML=no -DNO_LINT MK_MAN=no \ + MK_COVERAGE=no MK_COVERAGE_SUPPORT=${MK_COVERAGE} \ + MK_HTML=no -DNO_LINT MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_RETPOLINE=no MK_WARNS=no MK_CTF=no @@ -2463,7 +2465,10 @@ _elftctools= lib/libelftc \ .if ${MK_CLANG_BOOTSTRAP} != "no" _clang= usr.bin/clang +.if ${MK_COVERAGE_SUPPORT} != "no" +_coverage_libs= lib/libclang_rt/profile .endif +.endif .if ${MK_LLD_BOOTSTRAP} != "no" _lld= usr.bin/clang/lld .endif @@ -2487,6 +2492,7 @@ cross-tools: .MAKE .PHONY ${_ar} \ ${_clang_libs} \ ${_clang} \ + ${_coverage_libs} \ ${_lld} \ ${_binutils} \ ${_elftctools} \ @@ -2720,7 +2726,7 @@ _prereq_libs+= gnu/lib/libssp/libssp_nonshared # The coverage libraries must be built for the target prior to ${_startup_libs} # for world to have runtime coverage instrumentation. # -.if ${MK_COVERAGE} != "no" +.if ${MK_COVERAGE_SUPPORT} != "no" _prereq_libs+= lib/libclang_rt/profile .endif @@ -3339,6 +3345,7 @@ XDEVDIRS= \ ${_elftctools} \ usr.bin/ar \ ${_clang} \ + ${_coverage_libs} \ ${_gcc} _xb-cross-tools: .PHONY Modified: projects/runtime-coverage-v2/share/mk/src.opts.mk ============================================================================== --- projects/runtime-coverage-v2/share/mk/src.opts.mk Sat Apr 6 03:59:21 2019 (r345978) +++ projects/runtime-coverage-v2/share/mk/src.opts.mk Sat Apr 6 05:34:51 2019 (r345979) @@ -230,6 +230,7 @@ __DEFAULT_DEPENDENT_OPTIONS= \ .for var in \ BLACKLIST \ BZIP2 \ + COVERAGE \ INET \ INET6 \ KERBEROS \ From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:20 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 9EF2FDC77A for ; Tue, 3 Sep 2019 14:06:20 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zJ0JRVz4PRL; Tue, 3 Sep 2019 14:06:20 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 111531A50E; Tue, 3 Sep 2019 14:06:06 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 537101B054; Sat, 6 Apr 2019 03:59:27 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 2D28D8C14F; Sat, 6 Apr 2019 03:59:26 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0EABE1AFEB; Sat, 6 Apr 2019 03:59:26 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id DB15A1AFE9 for ; Sat, 6 Apr 2019 03:59:22 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id B70F18C14A; Sat, 6 Apr 2019 03:59:22 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 788401F0CA; Sat, 6 Apr 2019 03:59:22 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x363xMe5062192; Sat, 6 Apr 2019 03:59:22 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x363xLdg062187; Sat, 6 Apr 2019 03:59:21 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904060359.x363xLdg062187@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r345978 - in projects/kyua-use-googletest-test-interface: . contrib/bsnmp/gensnmptree contrib/bsnmp/lib contrib/bsnmp/snmp_mibII contrib/bsnmp/snmpd contrib/elftoolchain/strings contrib... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/kyua-use-googletest-test-interface: . contrib/bsnmp/gensnmptree contrib/bsnmp/lib contrib/bsnmp/snmp_mibII contrib/bsnmp/snmpd contrib/elftoolchain/strings contrib/libxo contrib/libxo/doc ... X-SVN-Commit-Revision: 345978 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 2D28D8C14F X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.97)[-0.969,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:21 -0000 X-Original-Date: Sat, 6 Apr 2019 03:59:21 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:21 -0000 Author: ngie Date: Sat Apr 6 03:59:21 2019 New Revision: 345978 URL: https://svnweb.freebsd.org/changeset/base/345978 Log: MFhead@r345977 Added: projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trans_inet.c - copied unchanged from r345977, head/contrib/bsnmp/snmpd/trans_inet.c projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trans_inet.h - copied unchanged from r345977, head/contrib/bsnmp/snmpd/trans_inet.h projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_explicit.h - copied unchanged from r345977, head/contrib/libxo/libxo/xo_explicit.h projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.H.err - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.H.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.H.out - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.H.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.HIPx.err - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.HIPx.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.HIPx.out - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.HIPx.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.HP.err - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.HP.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.HP.out - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.HP.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.J.err - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.J.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.J.out - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.JP.err - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.JP.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.JP.out - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.JP.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.T.err - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.T.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.T.out - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.T.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.X.err - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.X.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.X.out - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.X.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.XP.err - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.XP.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_02.XP.out - copied unchanged from r345977, head/contrib/libxo/tests/xo/saved/xo_02.XP.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/xo_02.sh - copied unchanged from r345977, head/contrib/libxo/tests/xo/xo_02.sh projects/kyua-use-googletest-test-interface/lib/libsecureboot/pass_manifest.c - copied unchanged from r345977, head/lib/libsecureboot/pass_manifest.c projects/kyua-use-googletest-test-interface/sys/security/mac_veriexec_parser/ - copied from r345977, head/sys/security/mac_veriexec_parser/ projects/kyua-use-googletest-test-interface/tests/sys/geom/class/eli/online_resize_test.sh - copied unchanged from r345977, head/tests/sys/geom/class/eli/online_resize_test.sh projects/kyua-use-googletest-test-interface/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANFIEST - copied unchanged from r345977, head/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANFIEST Modified: projects/kyua-use-googletest-test-interface/UPDATING projects/kyua-use-googletest-test-interface/contrib/bsnmp/gensnmptree/gensnmptree.1 projects/kyua-use-googletest-test-interface/contrib/bsnmp/gensnmptree/gensnmptree.c projects/kyua-use-googletest-test-interface/contrib/bsnmp/lib/snmpclient.c projects/kyua-use-googletest-test-interface/contrib/bsnmp/lib/snmpclient.h projects/kyua-use-googletest-test-interface/contrib/bsnmp/lib/tc.def projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmp_mibII/mibII_interfaces.c projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/BEGEMOT-SNMPD.txt projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/main.c projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/snmpd.config projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/snmpd.h projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/snmpmod.h projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trans_lsock.c projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/trans_udp.c projects/kyua-use-googletest-test-interface/contrib/bsnmp/snmpd/tree.def projects/kyua-use-googletest-test-interface/contrib/elftoolchain/strings/strings.c projects/kyua-use-googletest-test-interface/contrib/libxo/configure.ac projects/kyua-use-googletest-test-interface/contrib/libxo/doc/api.rst projects/kyua-use-googletest-test-interface/contrib/libxo/doc/libxo-manual.html projects/kyua-use-googletest-test-interface/contrib/libxo/doc/xo.rst projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/Makefile.am projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/libxo.c projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo.h projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_attr.3 projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_buf.h projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_emit.3 projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_emit_f.3 projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_finish.3 projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_flush.3 projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_open_container.3 projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_open_list.3 projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_open_marker.3 projects/kyua-use-googletest-test-interface/contrib/libxo/libxo/xo_set_writer.3 projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_01.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_02.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_03.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_04.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_05.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_05.JP.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_06.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_07.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_08.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_09.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_10.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_11.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.E.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.E.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.H.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.H.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.HIPx.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.HIPx.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.HP.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.HP.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.J.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.JP.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.JP.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.T.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.T.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.X.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.X.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.XP.err projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/saved/test_12.XP.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/core/test_12.c projects/kyua-use-googletest-test-interface/contrib/libxo/tests/gettext/po/pig_latin/strerror.po projects/kyua-use-googletest-test-interface/contrib/libxo/tests/gettext/saved/gt_01.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/Makefile.am projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_01.H.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_01.HIPx.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_01.HP.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_01.J.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_01.JP.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/saved/xo_01.T.out projects/kyua-use-googletest-test-interface/contrib/libxo/tests/xo/xo_01.sh projects/kyua-use-googletest-test-interface/contrib/libxo/xo/xo.1 projects/kyua-use-googletest-test-interface/contrib/libxo/xo/xo.c projects/kyua-use-googletest-test-interface/contrib/llvm/tools/clang/lib/CodeGen/CGObjCGNU.cpp projects/kyua-use-googletest-test-interface/lib/atf/libatf-c++/tests/Makefile projects/kyua-use-googletest-test-interface/lib/atf/libatf-c/tests/Makefile projects/kyua-use-googletest-test-interface/lib/geom/eli/geli.8 projects/kyua-use-googletest-test-interface/lib/geom/eli/geom_eli.c projects/kyua-use-googletest-test-interface/lib/libbe/be.c projects/kyua-use-googletest-test-interface/lib/libbsnmp/libbsnmp/Makefile projects/kyua-use-googletest-test-interface/lib/libc/net/getnameinfo.c projects/kyua-use-googletest-test-interface/lib/libcam/Makefile projects/kyua-use-googletest-test-interface/lib/libdevctl/devctl.3 projects/kyua-use-googletest-test-interface/lib/libdevctl/devctl.c projects/kyua-use-googletest-test-interface/lib/libdevctl/devctl.h projects/kyua-use-googletest-test-interface/lib/libsecureboot/Makefile.libsa.inc projects/kyua-use-googletest-test-interface/lib/libsecureboot/h/verify_file.h projects/kyua-use-googletest-test-interface/lib/libsecureboot/libsecureboot-priv.h projects/kyua-use-googletest-test-interface/lib/libsecureboot/verify_file.c projects/kyua-use-googletest-test-interface/lib/libxo/xo_config.h projects/kyua-use-googletest-test-interface/libexec/rc/network.subr projects/kyua-use-googletest-test-interface/release/Makefile.vm projects/kyua-use-googletest-test-interface/release/tools/ec2.conf projects/kyua-use-googletest-test-interface/release/tools/vmimage.subr projects/kyua-use-googletest-test-interface/sbin/bectl/bectl.8 projects/kyua-use-googletest-test-interface/sbin/fsck_msdosfs/dir.c projects/kyua-use-googletest-test-interface/sbin/fsck_msdosfs/fat.c projects/kyua-use-googletest-test-interface/share/man/man4/asmc.4 projects/kyua-use-googletest-test-interface/share/man/man4/intro.4 projects/kyua-use-googletest-test-interface/share/mk/src.opts.mk projects/kyua-use-googletest-test-interface/stand/common/boot.c projects/kyua-use-googletest-test-interface/stand/common/module.c projects/kyua-use-googletest-test-interface/stand/loader.mk projects/kyua-use-googletest-test-interface/sys/amd64/conf/NOTES projects/kyua-use-googletest-test-interface/sys/amd64/vmm/io/ppt.c projects/kyua-use-googletest-test-interface/sys/arm/ti/cpsw/if_cpsw.c projects/kyua-use-googletest-test-interface/sys/cam/ata/ata_all.c projects/kyua-use-googletest-test-interface/sys/cam/cam.c projects/kyua-use-googletest-test-interface/sys/cam/cam_periph.c projects/kyua-use-googletest-test-interface/sys/cam/nvme/nvme_all.c projects/kyua-use-googletest-test-interface/sys/cam/nvme/nvme_all.h projects/kyua-use-googletest-test-interface/sys/cam/nvme/nvme_da.c projects/kyua-use-googletest-test-interface/sys/cam/nvme/nvme_xpt.c projects/kyua-use-googletest-test-interface/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/kyua-use-googletest-test-interface/sys/compat/linuxkpi/common/include/linux/etherdevice.h projects/kyua-use-googletest-test-interface/sys/compat/linuxkpi/common/include/linux/random.h projects/kyua-use-googletest-test-interface/sys/conf/files projects/kyua-use-googletest-test-interface/sys/conf/newvers.sh projects/kyua-use-googletest-test-interface/sys/dev/cxgbe/common/t4_hw.c projects/kyua-use-googletest-test-interface/sys/dev/fdt/fdt_common.c projects/kyua-use-googletest-test-interface/sys/dev/iicbus/twsi/a10_twsi.c projects/kyua-use-googletest-test-interface/sys/dev/iicbus/twsi/twsi.c projects/kyua-use-googletest-test-interface/sys/dev/iicbus/twsi/twsi.h projects/kyua-use-googletest-test-interface/sys/dev/ioat/ioat.c projects/kyua-use-googletest-test-interface/sys/dev/ioat/ioat_internal.h projects/kyua-use-googletest-test-interface/sys/dev/ioat/ioat_test.c projects/kyua-use-googletest-test-interface/sys/dev/ioat/ioat_test.h projects/kyua-use-googletest-test-interface/sys/dev/ipmi/ipmi_opal.c projects/kyua-use-googletest-test-interface/sys/dev/pci/pci.c projects/kyua-use-googletest-test-interface/sys/dev/pci/pci_pci.c projects/kyua-use-googletest-test-interface/sys/dev/pci/pcivar.h projects/kyua-use-googletest-test-interface/sys/dev/smartpqi/smartpqi_cam.c projects/kyua-use-googletest-test-interface/sys/dev/smartpqi/smartpqi_defines.h projects/kyua-use-googletest-test-interface/sys/dev/tpm/tpm20.c projects/kyua-use-googletest-test-interface/sys/dev/usb/net/if_muge.c projects/kyua-use-googletest-test-interface/sys/fs/msdosfs/msdosfs_denode.c projects/kyua-use-googletest-test-interface/sys/fs/nfs/nfs_commonkrpc.c projects/kyua-use-googletest-test-interface/sys/fs/nfs/nfs_commonport.c projects/kyua-use-googletest-test-interface/sys/fs/nfs/nfs_commonsubs.c projects/kyua-use-googletest-test-interface/sys/fs/nfs/nfs_var.h projects/kyua-use-googletest-test-interface/sys/fs/nfsclient/nfs_clport.c projects/kyua-use-googletest-test-interface/sys/fs/tmpfs/tmpfs.h projects/kyua-use-googletest-test-interface/sys/fs/tmpfs/tmpfs_fifoops.c projects/kyua-use-googletest-test-interface/sys/fs/tmpfs/tmpfs_subr.c projects/kyua-use-googletest-test-interface/sys/fs/tmpfs/tmpfs_vfsops.c projects/kyua-use-googletest-test-interface/sys/fs/tmpfs/tmpfs_vnops.c projects/kyua-use-googletest-test-interface/sys/geom/eli/g_eli.c projects/kyua-use-googletest-test-interface/sys/geom/eli/g_eli.h projects/kyua-use-googletest-test-interface/sys/geom/eli/g_eli_ctl.c projects/kyua-use-googletest-test-interface/sys/geom/eli/g_eli_key_cache.c projects/kyua-use-googletest-test-interface/sys/i386/conf/NOTES projects/kyua-use-googletest-test-interface/sys/kern/bus_if.m projects/kyua-use-googletest-test-interface/sys/kern/subr_bus.c projects/kyua-use-googletest-test-interface/sys/kern/vfs_vnops.c projects/kyua-use-googletest-test-interface/sys/net/if_spppsubr.c projects/kyua-use-googletest-test-interface/sys/netinet/in.c projects/kyua-use-googletest-test-interface/sys/netinet/ip_input.c projects/kyua-use-googletest-test-interface/sys/netinet/ip_output.c projects/kyua-use-googletest-test-interface/sys/netinet/netdump/netdump_client.c projects/kyua-use-googletest-test-interface/sys/netinet/tcp_output.c projects/kyua-use-googletest-test-interface/sys/netipsec/key.c projects/kyua-use-googletest-test-interface/sys/netipsec/key.h projects/kyua-use-googletest-test-interface/sys/netipsec/xform_esp.c projects/kyua-use-googletest-test-interface/sys/netpfil/ipfw/nat64/nat64_translate.h projects/kyua-use-googletest-test-interface/sys/netpfil/pf/pf.c projects/kyua-use-googletest-test-interface/sys/powerpc/fpu/fpu_sqrt.c projects/kyua-use-googletest-test-interface/sys/powerpc/include/trap.h projects/kyua-use-googletest-test-interface/sys/powerpc/powernv/opal.h projects/kyua-use-googletest-test-interface/sys/powerpc/powernv/opal_async.c projects/kyua-use-googletest-test-interface/sys/powerpc/powernv/opal_dev.c projects/kyua-use-googletest-test-interface/sys/powerpc/powernv/opal_flash.c projects/kyua-use-googletest-test-interface/sys/powerpc/powerpc/exec_machdep.c projects/kyua-use-googletest-test-interface/sys/powerpc/powerpc/trap.c projects/kyua-use-googletest-test-interface/sys/riscv/riscv/plic.c projects/kyua-use-googletest-test-interface/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c projects/kyua-use-googletest-test-interface/sys/sparc64/conf/NOTES projects/kyua-use-googletest-test-interface/sys/sys/ata.h projects/kyua-use-googletest-test-interface/sys/sys/bus.h projects/kyua-use-googletest-test-interface/sys/vm/vm_map.c projects/kyua-use-googletest-test-interface/sys/x86/iommu/busdma_dmar.c projects/kyua-use-googletest-test-interface/tests/sys/geom/class/eli/Makefile projects/kyua-use-googletest-test-interface/tests/sys/geom/class/eli/configure_test.sh projects/kyua-use-googletest-test-interface/tools/build/Makefile projects/kyua-use-googletest-test-interface/tools/tools/ioat/ioatcontrol.8 projects/kyua-use-googletest-test-interface/tools/tools/ioat/ioatcontrol.c projects/kyua-use-googletest-test-interface/usr.bin/rctl/rctl.c projects/kyua-use-googletest-test-interface/usr.bin/sort/coll.c projects/kyua-use-googletest-test-interface/usr.bin/strings/Makefile projects/kyua-use-googletest-test-interface/usr.bin/systat/devs.c projects/kyua-use-googletest-test-interface/usr.bin/systat/devs.h projects/kyua-use-googletest-test-interface/usr.bin/systat/iostat.c projects/kyua-use-googletest-test-interface/usr.bin/systat/swap.c projects/kyua-use-googletest-test-interface/usr.bin/systat/systat.h projects/kyua-use-googletest-test-interface/usr.bin/systat/vmstat.c projects/kyua-use-googletest-test-interface/usr.bin/systat/zarc.c projects/kyua-use-googletest-test-interface/usr.bin/top/display.c projects/kyua-use-googletest-test-interface/usr.bin/xohtml/xohtml.sh projects/kyua-use-googletest-test-interface/usr.sbin/bhyve/pci_nvme.c projects/kyua-use-googletest-test-interface/usr.sbin/bsnmpd/bsnmpd/Makefile projects/kyua-use-googletest-test-interface/usr.sbin/bsnmpd/bsnmpd/snmpd.config projects/kyua-use-googletest-test-interface/usr.sbin/devctl/devctl.8 projects/kyua-use-googletest-test-interface/usr.sbin/devctl/devctl.c Directory Properties: projects/kyua-use-googletest-test-interface/ (props changed) projects/kyua-use-googletest-test-interface/contrib/elftoolchain/ (props changed) projects/kyua-use-googletest-test-interface/contrib/libxo/ (props changed) projects/kyua-use-googletest-test-interface/contrib/llvm/ (props changed) projects/kyua-use-googletest-test-interface/contrib/llvm/tools/clang/ (props changed) projects/kyua-use-googletest-test-interface/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/kyua-use-googletest-test-interface/UPDATING ============================================================================== --- projects/kyua-use-googletest-test-interface/UPDATING Sat Apr 6 03:55:17 2019 (r345977) +++ projects/kyua-use-googletest-test-interface/UPDATING Sat Apr 6 03:59:21 2019 (r345978) @@ -31,6 +31,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20190404: + r345895 reverts r320698. This implies that an nfsuserd(8) daemon + built from head sources between r320757 (July 6, 2017) and + r338192 (Aug. 22, 2018) will not work unless the "-use-udpsock" + is added to the command line. + nfsuserd daemons built from head sources that are post-r338192 are + not affected and should continue to work. + 20190320: The fuse(4) module has been renamed to fusefs(4) for consistency with other filesystems. You should update any kld_load="fuse" entries in Modified: projects/kyua-use-googletest-test-interface/contrib/bsnmp/gensnmptree/gensnmptree.1 ============================================================================== --- projects/kyua-use-googletest-test-interface/contrib/bsnmp/gensnmptree/gensnmptree.1 Sat Apr 6 03:55:17 2019 (r345977) +++ projects/kyua-use-googletest-test-interface/contrib/bsnmp/gensnmptree/gensnmptree.1 Sat Apr 6 03:59:21 2019 (r345978) @@ -31,7 +31,7 @@ .\" .\" $Begemot: gensnmptree.1 383 2006-05-30 07:40:49Z brandt_h $ .\" -.Dd June 29, 2018 +.Dd April 2, 2019 .Dt GENSNMPTREE 1 .Os .Sh NAME @@ -100,25 +100,11 @@ is the length of the OID. is the last component of the OID. .El .It Fl F -Together with -.Fl E -causes -.Nm -instead of the generation of enum definitions the generation of -functions for checking a value to be one of the enumeration variants and -for conversion between strings and the enum. The file is sent to standard -output and is meant to be included into a C-file for compilation. +emit definitions for C-functions includeable in a C-file that do some basic +stuff on enums like value checking and conversion between value and strings. .It Fl f -This flag can be used together with -.Fl E -or when generating the tree files. It causes -.Nm -to emit static inline functions for checking a value to be one of the -enumeration values and for conversion between strings and the enum. -If used when generating the tree files, the preprocessor symbol -.Ar SNMPTREE_TYPES -must be defined when including the tree header file for these definitions -to become visible. +emit definitions for inline C-functions that do some basic +stuff on enums like value checking and conversion between value and strings. .It Fl h Print a short help page. .It Fl I Ar directory @@ -136,36 +122,6 @@ Instead of normal output print the resulting tree. Prefix the file names and the table name with .Ar prefix . .El -.Pp -The following functions are generated by -.Fl f -or -.Fl F : -.Pp -.Ft static inline int -.Fn isok_EnumName "enum EnumName" ; -.Pp -.Ft static inline const char * -.Fn tostr_EnumName "enum EnumName" ; -.Pp -.Ft static inline int -.Fn fromstr_EnumName "const char *" "enum EnumName *" ; -.Pp -The -.Fa EnumName -is replaced with the enumeration name. -.Fn isok_EnumName -returns 1 if the argument is one of the valid enum values and 0 otherwise. -.Fn tostr_EnumName -returns a string representation of the enumeration value. -If the values is not one of the legal values -.Ar EnumName??? -is returned. -.Fn fromstr_EnumName -returns 1 if the string represents one of the legal enumeration values and -0 otherwise. -If 1 is return the variable pointed to by the second argument is set to -the enumeration value. .Sh MIBS The syntax of the MIB description file can formally be specified as follows: .Bd -unfilled -offset indent Modified: projects/kyua-use-googletest-test-interface/contrib/bsnmp/gensnmptree/gensnmptree.c ============================================================================== --- projects/kyua-use-googletest-test-interface/contrib/bsnmp/gensnmptree/gensnmptree.c Sat Apr 6 03:55:17 2019 (r345977) +++ projects/kyua-use-googletest-test-interface/contrib/bsnmp/gensnmptree/gensnmptree.c Sat Apr 6 03:59:21 2019 (r345978) @@ -110,7 +110,6 @@ static int debug; static const char usgtxt[] = "\ Generate SNMP tables.\n\ -$Id$\n\ usage: gensnmptree [-dEeFfhlt] [-I directory] [-i infile] [-p prefix]\n\ [name]...\n\ options:\n\ @@ -127,6 +126,37 @@ options:\n\ -t generate a .def file\n\ "; +/** + * Program operation. + */ +enum op { + /** generate the tree */ + OP_GEN, + + /** extract OIDs */ + OP_EXTRACT, + + /** print the parsed tree */ + OP_TREE, + + /** extract enums */ + OP_ENUMS, +}; + +/** + * Which functions to create. + */ +enum gen_funcs { + /** none */ + GEN_FUNCS_NONE, + + /** functions for header files */ + GEN_FUNCS_H, + + /** functions for C files */ + GEN_FUNCS_C, +}; + /* * A node in the OID tree */ @@ -162,15 +192,18 @@ struct node { uint32_t index; /* index for table entry */ char *func; /* function for tables */ struct node_list subs; + char *subtypes[SNMP_INDEXES_MAX]; } entry; struct leaf { enum snmp_syntax syntax; /* syntax for this leaf */ char *func; /* function name */ + char *subtype; /* subtype */ } leaf; struct column { enum snmp_syntax syntax; /* syntax for this column */ + char *subtype; /* subtype */ } column; } u; }; @@ -214,7 +247,7 @@ xalloc(size_t size) { void *ptr; - if ((ptr = malloc(size)) == NULL) + if ((ptr = calloc(1, size)) == NULL) err(1, "allocing %zu bytes", size); return (ptr); @@ -710,12 +743,14 @@ make_type(const char *s) * token. */ static u_int -parse_type(enum tok *tok, struct type *t, const char *vname) +parse_type(enum tok *tok, struct type *t, const char *vname, char **subtype) { u_int syntax; struct enums *e; syntax = val; + if (subtype != NULL) + *subtype = NULL; if (*tok == TOK_ENUM || *tok == TOK_BITS) { if (t == NULL && vname != NULL) { @@ -759,6 +794,8 @@ parse_type(enum tok *tok, struct type *t, const char * if ((*tok = gettoken()) == '|') { if (gettoken() != TOK_STR) report("subtype expected after '|'"); + if (subtype != NULL) + *subtype = savetok(); *tok = gettoken(); } } @@ -794,18 +831,21 @@ parse(enum tok tok) if ((tok = gettoken()) == TOK_TYPE || tok == TOK_DEFTYPE || tok == TOK_ENUM || tok == TOK_BITS) { /* LEAF or COLUM */ - u_int syntax = parse_type(&tok, NULL, node->name); + char *subtype; + u_int syntax = parse_type(&tok, NULL, node->name, &subtype); if (tok == TOK_STR) { /* LEAF */ node->type = NODE_LEAF; node->u.leaf.func = savetok(); node->u.leaf.syntax = syntax; + node->u.leaf.subtype = subtype; tok = gettoken(); } else { /* COLUMN */ node->type = NODE_COLUMN; node->u.column.syntax = syntax; + node->u.column.subtype = subtype; } while (tok != ')') { @@ -825,9 +865,12 @@ parse(enum tok tok) tok = gettoken(); while (tok == TOK_TYPE || tok == TOK_DEFTYPE || tok == TOK_ENUM || tok == TOK_BITS) { - u_int syntax = parse_type(&tok, NULL, node->name); - if (index_count++ == SNMP_INDEXES_MAX) + char *subtype; + u_int syntax = parse_type(&tok, NULL, node->name, + &subtype); + if (index_count == SNMP_INDEXES_MAX) report("too many table indexes"); + node->u.entry.subtypes[index_count++] = subtype; node->u.entry.index |= syntax << (SNMP_INDEX_SHIFT * index_count); } @@ -882,7 +925,8 @@ parse_top(enum tok tok) tok = gettoken(); t->is_enum = (tok == TOK_ENUM); t->is_bits = (tok == TOK_BITS); - t->syntax = parse_type(&tok, t, NULL); + + t->syntax = parse_type(&tok, t, NULL, NULL); pushback(tok); return (NULL); @@ -903,7 +947,7 @@ parse_top(enum tok tok) * Generate the C-code table part for one node. */ static void -gen_node(FILE *fp, struct node *np, struct asn_oid *oid, u_int idx, +gen_node(FILE *fp, const struct node *np, struct asn_oid *oid, u_int idx, const char *func) { u_int n; @@ -1008,7 +1052,7 @@ gen_node(FILE *fp, struct node *np, struct asn_oid *oi * Generate the header file with the function declarations. */ static void -gen_header(FILE *fp, struct node *np, u_int oidlen, const char *func) +gen_header(FILE *fp, const struct node *np, u_int oidlen, const char *func) { char f[MAXSTR + 4]; struct node *sub; @@ -1058,7 +1102,7 @@ gen_header(FILE *fp, struct node *np, u_int oidlen, co * Generate the OID table. */ static void -gen_table(FILE *fp, struct node *node) +gen_table(FILE *fp, const struct node *node) { struct asn_oid oid; @@ -1067,7 +1111,6 @@ gen_table(FILE *fp, struct node *node) #ifdef HAVE_STDINT_H fprintf(fp, "#include \n"); #endif - fprintf(fp, "#include \n"); if (localincs) { fprintf(fp, "#include \"asn1.h\"\n"); fprintf(fp, "#include \"snmp.h\"\n"); @@ -1118,6 +1161,8 @@ gen_tree(const struct node *np, int level) case NODE_LEAF: print_syntax(np->u.leaf.syntax); + if (np->u.leaf.subtype != NULL) + printf(" | %s", np->u.leaf.subtype); printf(" %s%s%s)\n", np->u.leaf.func, (np->flags & FL_GET) ? " GET" : "", (np->flags & FL_SET) ? " SET" : ""); @@ -1137,8 +1182,11 @@ gen_tree(const struct node *np, int level) case NODE_ENTRY: printf(" :"); - for (i = 0; i < SNMP_INDEX_COUNT(np->u.entry.index); i++) + for (i = 0; i < SNMP_INDEX_COUNT(np->u.entry.index); i++) { print_syntax(SNMP_INDEX(np->u.entry.index, i)); + if (np->u.entry.subtypes[i] != NULL) + printf(" | %s", np->u.entry.subtypes[i]); + } printf(" %s\n", np->u.entry.func); TAILQ_FOREACH(sp, &np->u.entry.subs, link) gen_tree(sp, level + 1); @@ -1147,6 +1195,8 @@ gen_tree(const struct node *np, int level) case NODE_COLUMN: print_syntax(np->u.column.syntax); + if (np->u.column.subtype != NULL) + printf(" | %s", np->u.column.subtype); printf("%s%s)\n", (np->flags & FL_GET) ? " GET" : "", (np->flags & FL_SET) ? " SET" : ""); break; @@ -1194,15 +1244,6 @@ extract(FILE *fp, const struct node *np, struct asn_oi return (1); } -/** - * Extract the named OID. - * - * \param fp file to extract to - * \param root root of the tree - * \param object name of the object to extract - * - * \return 0 on success, -1 if the object was not found - */ static int gen_extract(FILE *fp, const struct node *root, char *object) { @@ -1391,45 +1432,6 @@ unminus(FILE *fp, const char *s) } /** - * Generate a definition for the enum packed into a guard against multiple - * definitions. - * - * \param fp file to write definition to - * \param t type - */ -static void -gen_enum(FILE *fp, const struct type *t) -{ - const struct enums *e; - long min = LONG_MAX; - - fprintf(fp, "\n"); - fprintf(fp, "#ifndef %s_defined__\n", t->name); - fprintf(fp, "#define %s_defined__\n", t->name); - fprintf(fp, "/*\n"); - fprintf(fp, " * From %s:%u\n", t->from_fname, t->from_lno); - fprintf(fp, " */\n"); - fprintf(fp, "enum %s {\n", t->name); - TAILQ_FOREACH(e, &t->enums, link) { - fprintf(fp, "\t%s_", t->name); - unminus(fp, e->name); - fprintf(fp, " = %ld,\n", e->value); - if (e->value < min) - min = e->value; - } - fprintf(fp, "};\n"); - fprintf(fp, "#define STROFF_%s %ld\n", t->name, min); - fprintf(fp, "#define STRING_%s \\\n", t->name); - TAILQ_FOREACH(e, &t->enums, link) { - fprintf(fp, "\t[%ld] = \"%s_", e->value - min, t->name); - unminus(fp, e->name); - fprintf(fp, "\",\\\n"); - } - fprintf(fp, "\n"); - fprintf(fp, "#endif /* %s_defined__ */\n", t->name); -} - -/** * Generate helper functions for an enum. * * We always generate a switch statement for the isok function. The compiler @@ -1494,6 +1496,54 @@ gen_enum_funcs(FILE *fp, const struct type *t, int cco } /** + * Generate a definition for the enum packed into a guard against multiple + * definitions. + * + * \param fp file to write definition to + * \param t type + * \param dof generate functions too + */ +static void +gen_enum(FILE *fp, const struct type *t, int dof) +{ + const struct enums *e; + long min = LONG_MAX; + + fprintf(fp, "\n"); + fprintf(fp, "#ifndef %s_defined__\n", t->name); + fprintf(fp, "#define %s_defined__\n", t->name); + fprintf(fp, "/*\n"); + fprintf(fp, " * From %s:%u\n", t->from_fname, t->from_lno); + fprintf(fp, " */\n"); + fprintf(fp, "enum %s {\n", t->name); + TAILQ_FOREACH(e, &t->enums, link) { + fprintf(fp, "\t%s_", t->name); + unminus(fp, e->name); + fprintf(fp, " = %ld,\n", e->value); + if (e->value < min) + min = e->value; + } + fprintf(fp, "};\n"); + fprintf(fp, "#define STROFF_%s %ld\n", t->name, min); + fprintf(fp, "#define STRING_%s \\\n", t->name); + TAILQ_FOREACH(e, &t->enums, link) { + fprintf(fp, "\t[%ld] = \"%s_", e->value - min, t->name); + unminus(fp, e->name); + fprintf(fp, "\",\\\n"); + } + fprintf(fp, "\n"); + if (dof) { + fprintf(fp, "#ifdef SNMPENUM_FUNCS\n"); + fprintf(fp, "\n"); + gen_enum_funcs(fp, t, 0); + fprintf(fp, "\n"); + fprintf(fp, "#endif\n"); + fprintf(fp, "\n"); + } + fprintf(fp, "#endif /* %s_defined__ */\n", t->name); +} + +/** * Generate helper functions for an enum. This generates code for a c file. * * \param fp file to write to @@ -1529,6 +1579,16 @@ gen_all_enum_funcs(FILE *fp, int ccode) gen_enum_funcs(fp, t, ccode); } +static void +gen_enums(FILE *fp, int dof) +{ + const struct type *t; + + LIST_FOREACH(t, &types, link) + if (t->is_enum || t->is_bits) + gen_enum(fp, t, dof); +} + /** * Extract a given enum to the specified file and optionally generate static * inline helper functions for them. @@ -1546,9 +1606,7 @@ extract_enum(FILE *fp, const char *name, int gen_funcs LIST_FOREACH(t, &types, link) if ((t->is_enum || t->is_bits) && strcmp(t->name, name) == 0) { - gen_enum(fp, t); - if (gen_funcs) - gen_enum_funcs(fp, t, 0); + gen_enum(fp, t, gen_funcs); return (0); } return (-1); @@ -1567,11 +1625,8 @@ extract_all_enums(FILE *fp, int gen_funcs) const struct type *t; LIST_FOREACH(t, &types, link) - if (t->is_enum || t->is_bits) { - gen_enum(fp, t); - if (gen_funcs) - gen_enum_funcs(fp, t, 0); - } + if (t->is_enum || t->is_bits) + gen_enum(fp, t, gen_funcs); } /** @@ -1579,13 +1634,12 @@ extract_all_enums(FILE *fp, int gen_funcs) * * \param argc number of arguments * \param argv arguments (enum names) - * \param gen_funcs_h generate functions into the header file - * \param gen_funcs_c generate a .c file with functions + * \param gen_funcs which functions to generate */ static void -make_enums(int argc, char *argv[], int gen_funcs_h, int gen_funcs_c) +make_enums(int argc, char *argv[], enum gen_funcs gen_funcs) { - if (gen_funcs_c) { + if (gen_funcs == GEN_FUNCS_C) { if (argc == 0) gen_all_enum_funcs(stdout, 1); else { @@ -1595,30 +1649,58 @@ make_enums(int argc, char *argv[], int gen_funcs_h, in } } else { if (argc == 0) - extract_all_enums(stdout, gen_funcs_h); + extract_all_enums(stdout, gen_funcs == GEN_FUNCS_H); else { for (int i = 0; i < argc; i++) - if (extract_enum(stdout, argv[i], gen_funcs_h)) + if (extract_enum(stdout, argv[i], + gen_funcs == GEN_FUNCS_H)) errx(1, "enum not found: %s", argv[i]); } } } +/** + * Produce the operation tables for the daemon or a module. + * + * \param root tree root + * \param gen_funcs generate enum funcs + */ +static void +make_table(const struct node *root, int gen_funcs) +{ + FILE *fp; + + char fname[MAXPATHLEN + 1]; + sprintf(fname, "%stree.h", file_prefix); + if ((fp = fopen(fname, "w")) == NULL) + err(1, "%s: ", fname); + gen_header(fp, root, PREFIX_LEN, NULL); + + fprintf(fp, "\n#ifdef SNMPTREE_TYPES\n"); + gen_enums(fp, gen_funcs); + fprintf(fp, "\n#endif /* SNMPTREE_TYPES */\n\n"); + + fprintf(fp, "#define %sCTREE_SIZE %u\n", file_prefix, tree_size); + fprintf(fp, "extern const struct snmp_node %sctree[];\n", file_prefix); + + fclose(fp); + + sprintf(fname, "%stree.c", file_prefix); + if ((fp = fopen(fname, "w")) == NULL) + err(1, "%s: ", fname); + gen_table(fp, root); + fclose(fp); +} + int main(int argc, char *argv[]) { - int do_extract = 0; - int do_tree = 0; - int do_enums = 0; - int gen_funcs_h = 0; - int gen_funcs_c = 0; - int opt; - struct node *root; - char fname[MAXPATHLEN + 1]; - int tok; - FILE *fp; + enum op op = OP_GEN; + enum gen_funcs gen_funcs = GEN_FUNCS_NONE; + char *infile = NULL; + int opt; while ((opt = getopt(argc, argv, "dEeFfhI:i:lp:t")) != EOF) switch (opt) { @@ -1627,19 +1709,29 @@ main(int argc, char *argv[]) break; case 'E': - do_enums = 1; + if (op != OP_GEN && op != OP_ENUMS) + errx(1, "-E conflicts with earlier options"); + op = OP_ENUMS; break; case 'e': - do_extract = 1; + if (op != OP_GEN && op != OP_EXTRACT) + errx(1, "-e conflicts with earlier options"); + op = OP_EXTRACT; break; case 'F': - gen_funcs_c = 1; + if (gen_funcs != GEN_FUNCS_NONE && + gen_funcs != GEN_FUNCS_C) + errx(1, "-F conflicts with -f"); + gen_funcs = GEN_FUNCS_C; break; case 'f': - gen_funcs_h = 1; + if (gen_funcs != GEN_FUNCS_NONE && + gen_funcs != GEN_FUNCS_H) + errx(1, "-f conflicts with -F"); + gen_funcs = GEN_FUNCS_H; break; case 'h': @@ -1666,75 +1758,61 @@ main(int argc, char *argv[]) break; case 't': - do_tree = 1; + if (op != OP_GEN && op != OP_TREE) + errx(1, "-t conflicts with earlier options"); + op = OP_TREE; break; } - if (do_extract + do_tree + do_enums > 1) - errx(1, "conflicting options -e/-t/-E"); - if (!do_extract && !do_enums && argc != optind) - errx(1, "no arguments allowed"); - if (do_extract && argc == optind) - errx(1, "no objects specified"); + argc -= optind; + argv += optind; - if ((gen_funcs_h || gen_funcs_c) && (do_extract || do_tree)) - errx(1, "-f and -F not allowed with -e or -t"); - if (gen_funcs_c && !do_enums) - errx(1, "-F requires -E"); - if (gen_funcs_h && gen_funcs_c) - errx(1, "-f and -F are mutually exclusive"); - + /* open input */ if (infile == NULL) { input_new(stdin, NULL, ""); } else { + FILE *fp; if ((fp = fopen(infile, "r")) == NULL) err(1, "%s", infile); input_new(fp, NULL, infile); } - root = parse_top(gettoken()); + /* parse and check input */ + struct node *root = parse_top(gettoken()); + + int tok; while ((tok = gettoken()) != TOK_EOF) merge(&root, parse_top(tok)); if (root) check_tree(root); - if (do_extract) { - while (optind < argc) { - if (gen_extract(stdout, root, argv[optind])) - errx(1, "object not found: %s", argv[optind]); - optind++; - } + /* do what the user has requested */ + switch (op) { + + case OP_EXTRACT: + if (argc == 0) + errx(1, "-e requires arguments"); + + for (int i = 0; i < argc; i++) + if (gen_extract(stdout, root, argv[i])) + errx(1, "object not found: %s", argv[i]); return (0); - } - if (do_enums) { - make_enums(argc - optind, argv + optind, - gen_funcs_h, gen_funcs_c); + + case OP_ENUMS: + make_enums(argc, argv, gen_funcs); return (0); - } - if (do_tree) { + + case OP_TREE: + if (argc != 0) + errx(1, "-t allows no arguments"); gen_tree(root, 0); return (0); - } - sprintf(fname, "%stree.h", file_prefix); - if ((fp = fopen(fname, "w")) == NULL) - err(1, "%s: ", fname); - gen_header(fp, root, PREFIX_LEN, NULL); - fprintf(fp, "\n#ifdef SNMPTREE_TYPES\n"); - extract_all_enums(fp, gen_funcs_h); - fprintf(fp, "\n#endif /* SNMPTREE_TYPES */\n\n"); - - fprintf(fp, "#define %sCTREE_SIZE %u\n", file_prefix, tree_size); - fprintf(fp, "extern const struct snmp_node %sctree[];\n", file_prefix); - - fclose(fp); - - sprintf(fname, "%stree.c", file_prefix); - if ((fp = fopen(fname, "w")) == NULL) - err(1, "%s: ", fname); - gen_table(fp, root); - fclose(fp); - - return (0); + case OP_GEN: + if (argc != 0) + errx(1, "tree generation allows no arguments"); + make_table(root, gen_funcs == GEN_FUNCS_H); + return (0); + } } Modified: projects/kyua-use-googletest-test-interface/contrib/bsnmp/lib/snmpclient.c ============================================================================== --- projects/kyua-use-googletest-test-interface/contrib/bsnmp/lib/snmpclient.c Sat Apr 6 03:55:17 2019 (r345977) +++ projects/kyua-use-googletest-test-interface/contrib/bsnmp/lib/snmpclient.c Sat Apr 6 03:59:21 2019 (r345978) @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004-2005 + * Copyright (c) 2004-2005,2018 * Hartmut Brandt. * All rights reserved. * Copyright (c) 2001-2003 @@ -34,11 +34,13 @@ * * Support functions for SNMP clients. */ -#include +#include #include #include #include #include +#include +#include #include #include #include @@ -58,12 +60,16 @@ #include #endif +#include + #include "support.h" #include "asn1.h" #include "snmp.h" #include "snmpclient.h" #include "snmppriv.h" +#define DEBUG_PARSE 0 + /* global context */ struct snmp_client snmp_client; @@ -924,7 +930,8 @@ open_client_udp(const char *host, const char *port) /* open connection */ memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_CANONNAME; - hints.ai_family = AF_INET; + hints.ai_family = snmp_client.trans == SNMP_TRANS_UDP ? AF_INET: + AF_INET6; hints.ai_socktype = SOCK_DGRAM; hints.ai_protocol = 0; error = getaddrinfo(snmp_client.chost, snmp_client.cport, &hints, &res0); @@ -1068,6 +1075,7 @@ snmp_open(const char *host, const char *port, const ch switch (snmp_client.trans) { case SNMP_TRANS_UDP: + case SNMP_TRANS_UDP6: if (open_client_udp(host, port) != 0) return (-1); break; @@ -1866,99 +1874,412 @@ snmp_client_set_port(struct snmp_client *cl, const cha return (0); } -/* - * parse a server specification +static const char *const trans_list[] = { + [SNMP_TRANS_UDP] = "udp::", + [SNMP_TRANS_LOC_DGRAM] = "dgram::", + [SNMP_TRANS_LOC_STREAM] = "stream::", + [SNMP_TRANS_UDP6] = "udp6::", +}; + +/** + * Try to get a transport identifier which is a leading alphanumeric string + * terminated by a double colon. The string may not be empty. The transport + * identifier is optional. * - * [trans::][community@][server][:port] + * \param sc client struct to set errors + * \param strp possible start of transport; updated to point to + * the next character to parse + * + * \return transport identifier */ -int -snmp_parse_server(struct snmp_client *sc, const char *str) +static inline int +get_transp(struct snmp_client *sc, const char **strp) { - const char *p, *s = str; + const char *p; + size_t i; - /* look for a double colon */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; + for (i = 0; i < nitems(trans_list); i++) { + if (trans_list[i] == NULL || *trans_list[i] == '\0') continue; + p = strstr(*strp, trans_list[i]); + if (p == *strp) { + *strp += strlen(trans_list[i]); + return ((int)i); } - if (*p == ':' && p[1] == ':') - break; } - if (*p != '\0') { - if (p > s) { - if (p - s == 3 && strncmp(s, "udp", 3) == 0) - sc->trans = SNMP_TRANS_UDP; - else if (p - s == 6 && strncmp(s, "stream", 6) == 0) - sc->trans = SNMP_TRANS_LOC_STREAM; - else if (p - s == 5 && strncmp(s, "dgram", 5) == 0) - sc->trans = SNMP_TRANS_LOC_DGRAM; - else { - seterr(sc, "unknown SNMP transport '%.*s'", - (int)(p - s), s); - return (-1); - } - } - s = p + 2; + + p = *strp; + if (p[0] == ':' && p[1] == ':') { + seterr(sc, "empty transport specifier"); + return (-1); } + /* by default assume UDP */ + return (SNMP_TRANS_UDP); +} - /* look for a @ */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; - continue; - } - if (*p == '@') - break; +/** + * Try to get community string. Eat everything up to the last @ (if there is + * any) but only if it is not longer than SNMP_COMMUNITY_MAXLEN. Empty + * community strings are legal. + * + * \param sc client struct to set errors + * \param strp possible start of community; updated to the point to + * the next character to parse + * + * \return end of community; equals *strp if there is none; NULL if there + * was an error + */ +static inline const char * +get_comm(struct snmp_client *sc, const char **strp) +{ + const char *p = strrchr(*strp, '@'); + + if (p == NULL) + /* no community string */ + return (*strp); + + if (p - *strp > SNMP_COMMUNITY_MAXLEN) { + seterr(sc, "community string too long '%.*s'", + p - *strp, *strp); + return (NULL); } - if (*p != '\0') { - if (p - s > SNMP_COMMUNITY_MAXLEN) { - seterr(sc, "community string too long"); - return (-1); + *strp = p + 1; + return (p); +} + +/** + * Try to get an IPv6 address. This starts with an [ and should end with an ] + * and everything between should be not longer than INET6_ADDRSTRLEN and + * parseable by inet_pton(). + * + * \param sc client struct to set errors + * \param strp possible start of IPv6 address (the '['); updated to point to + * the next character to parse (the one after the closing ']') + * + * \return end of address (equals *strp + 1 if there is none) or NULL + * on errors + */ +static inline const char * +get_ipv6(struct snmp_client *sc, const char **strp) +{ + char str[INET6_ADDRSTRLEN + IF_NAMESIZE]; + struct addrinfo hints, *res; + int error; + + if (**strp != '[') + return (*strp + 1); + + const char *p = *strp + 1; + while (*p != ']' ) { + if (*p == '\0') { + seterr(sc, "unterminated IPv6 address '%.*s'", + p - *strp, *strp); + return (NULL); } - strncpy(sc->read_community, s, p - s); - sc->read_community[p - s] = '\0'; - strncpy(sc->write_community, s, p - s); - sc->write_community[p - s] = '\0'; - s = p + 1; + p++; } - /* look for a colon */ - for (p = s; *p != '\0'; p++) { - if (*p == '\\' && p[1] != '\0') { - p++; - continue; - } - if (*p == ':') - break; + if (p - *strp > INET6_ADDRSTRLEN + IF_NAMESIZE) { + seterr(sc, "IPv6 address too long '%.*s'", p - *strp, *strp); + return (NULL); } - if (*p == ':') { - if (p > s) { - /* host:port */ - free(sc->chost); - if ((sc->chost = malloc(p - s + 1)) == NULL) { - seterr(sc, "%s", strerror(errno)); - return (-1); - } - strncpy(sc->chost, s, p - s); - sc->chost[p - s] = '\0'; - } - /* port */ - free(sc->cport); - if ((sc->cport = strdup(p + 1)) == NULL) { - seterr(sc, "%s", strerror(errno)); - return (-1); - } + strncpy(str, *strp + 1, p - (*strp + 1)); + str[p - (*strp + 1)] = '\0'; - } else if (p > s) { - /* host */ - free(sc->chost); - if ((sc->chost = strdup(s)) == NULL) { - seterr(sc, "%s", strerror(errno)); + memset(&hints, 0, sizeof(hints)); + hints.ai_flags = AI_CANONNAME | AI_NUMERICHOST; + hints.ai_family = AF_INET6; + hints.ai_socktype = SOCK_DGRAM; + hints.ai_protocol = IPPROTO_UDP; + error = getaddrinfo(str, NULL, &hints, &res); + if (error != 0) { + seterr(sc, "%s: %s", str, gai_strerror(error)); + return (NULL); + } + freeaddrinfo(res); + *strp = p + 1; + return (p); +} + +/** + * Try to get an IPv4 address. This starts with a digit and consists of digits + * and dots, is not longer INET_ADDRSTRLEN and must be parseable by + * inet_aton(). + * + * \param sc client struct to set errors + * \param strp possible start of IPv4 address; updated to point to the + * next character to parse + * + * \return end of address (equals *strp if there is none) or NULL + * on errors + */ +static inline const char * +get_ipv4(struct snmp_client *sc, const char **strp) +{ + const char *p = *strp; + + while (isascii(*p) && (isdigit(*p) || *p == '.')) + p++; + + if (p - *strp > INET_ADDRSTRLEN) { + seterr(sc, "IPv4 address too long '%.*s'", p - *strp, *strp); + return (NULL); + } + if (*strp == p) + return *strp; + + char str[INET_ADDRSTRLEN + 1]; + strncpy(str, *strp, p - *strp); + str[p - *strp] = '\0'; + + struct in_addr addr; + if (inet_aton(str, &addr) != 1) { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:35 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id D83C9DCC33 for ; Tue, 3 Sep 2019 14:06:35 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zb2rvbz4PjL; Tue, 3 Sep 2019 14:06:35 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 674021A8C1; Tue, 3 Sep 2019 14:06:12 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id C74A79126; Wed, 10 Apr 2019 06:23:19 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3E65F91B76; Wed, 10 Apr 2019 06:23:19 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 12D9890F6; Wed, 10 Apr 2019 06:23:19 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 00FA690F4 for ; Wed, 10 Apr 2019 06:23:15 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C7D5291B6D; Wed, 10 Apr 2019 06:23:15 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9FED51EA07; Wed, 10 Apr 2019 06:23:15 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x3A6NF6o001881; Wed, 10 Apr 2019 06:23:15 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x3A6NFeh001880; Wed, 10 Apr 2019 06:23:15 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904100623.x3A6NFeh001880@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r346071 - projects/runtime-coverage-v2 X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: projects/runtime-coverage-v2 X-SVN-Commit-Revision: 346071 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3E65F91B76 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.93 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.997,0]; NEURAL_HAM_SHORT(-0.94)[-0.939,0]; NEURAL_HAM_LONG(-1.00)[-1.000,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:36 -0000 X-Original-Date: Wed, 10 Apr 2019 06:23:15 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:36 -0000 Author: ngie Date: Wed Apr 10 06:23:15 2019 New Revision: 346071 URL: https://svnweb.freebsd.org/changeset/base/346071 Log: r345979 didn't yield fruit Try taking a different approach by compiling coverage support into the libraries, after the fact, like building tests. Modified: projects/runtime-coverage-v2/Makefile.inc1 Modified: projects/runtime-coverage-v2/Makefile.inc1 ============================================================================== --- projects/runtime-coverage-v2/Makefile.inc1 Tue Apr 9 22:20:11 2019 (r346070) +++ projects/runtime-coverage-v2/Makefile.inc1 Wed Apr 10 06:23:15 2019 (r346071) @@ -688,12 +688,12 @@ BSARGS= DESTDIR= \ BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \ BWPHASE=${.TARGET:C,^_,,} \ SSP_CFLAGS= \ - MK_COVERAGE=no MK_COVERAGE_SUPPORT=${MK_COVERAGE} \ MK_HTML=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ - MK_LLDB=no MK_RETPOLINE=no MK_TESTS=no \ + MK_LLDB=no MK_RETPOLINE=no \ + MK_TESTS=no MK_COVERAGE=no \ MK_INCLUDES=yes BMAKE= \ @@ -714,13 +714,15 @@ TMAKE= \ -DNO_LINT \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ MK_CLANG_EXTRAS=no MK_CLANG_FULL=no \ - MK_LLDB=no MK_RETPOLINE=no MK_TESTS=no + MK_LLDB=no MK_RETPOLINE=no \ + MK_TESTS=no MK_COVERAGE=no # cross-tools stage # TOOLS_PREFIX set in BMAKE XMAKE= ${BMAKE} \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ - MK_GDB=no MK_TESTS=no + MK_GDB=no \ + MK_TESTS=no MK_COVERAGE=no # kernel-tools stage KTMAKEENV= INSTALL="sh ${.CURDIR}/tools/install.sh" \ @@ -735,7 +737,6 @@ KTMAKE= \ MAKEOBJDIRPREFIX= \ BOOTSTRAPPING=${BOOTSTRAPPING_OSRELDATE} \ SSP_CFLAGS= \ - MK_COVERAGE=no MK_COVERAGE_SUPPORT=${MK_COVERAGE} \ MK_HTML=no -DNO_LINT MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_RETPOLINE=no MK_WARNS=no MK_CTF=no @@ -1115,7 +1116,9 @@ _libraries: @echo "--------------------------------------------------------------" ${_+_}cd ${.CURDIR}; \ ${WMAKE} -DNO_FSCHG MK_HTML=no -DNO_LINT MK_MAN=no \ - MK_PROFILE=no MK_TESTS=no MK_TESTS_SUPPORT=${MK_TESTS} libraries + MK_PROFILE=no MK_TESTS=no MK_TESTS_SUPPORT=${MK_TESTS} \ + MK_COVERAGE=no MK_COVERAGE_SUPPORT=${MK_COVERAGE} \ + libraries everything: .PHONY @echo @echo "--------------------------------------------------------------" @@ -2465,10 +2468,7 @@ _elftctools= lib/libelftc \ .if ${MK_CLANG_BOOTSTRAP} != "no" _clang= usr.bin/clang -.if ${MK_COVERAGE_SUPPORT} != "no" -_coverage_libs= lib/libclang_rt/profile .endif -.endif .if ${MK_LLD_BOOTSTRAP} != "no" _lld= usr.bin/clang/lld .endif @@ -2492,7 +2492,6 @@ cross-tools: .MAKE .PHONY ${_ar} \ ${_clang_libs} \ ${_clang} \ - ${_coverage_libs} \ ${_lld} \ ${_binutils} \ ${_elftctools} \ @@ -2976,7 +2975,7 @@ ${_lib}__PL: .PHONY .MAKE ${_+_}@${ECHODIR} "===> ${_lib} (obj,all,install)"; \ cd ${.CURDIR}/${_lib}; \ if [ -z "${NO_OBJWALK}" ]; then ${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ obj; fi; \ - ${MAKE} MK_TESTS=no MK_PROFILE=no -DNO_PIC \ + ${MAKE} MK_COVERAGE=no MK_TESTS=no MK_PROFILE=no -DNO_PIC \ DIRPRFX=${_lib}/ all; \ ${MAKE} MK_COVERAGE=no MK_TESTS=no MK_PROFILE=no -DNO_PIC \ DIRPRFX=${_lib}/ install @@ -2989,7 +2988,7 @@ ${_lib}__L: .PHONY .MAKE ${_+_}@${ECHODIR} "===> ${_lib} (obj,all,install)"; \ cd ${.CURDIR}/${_lib}; \ if [ -z "${NO_OBJWALK}" ]; then ${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ obj; fi; \ - ${MAKE} MK_TESTS=no DIRPRFX=${_lib}/ all; \ + ${MAKE} MK_COVERAGE=no MK_TESTS=no DIRPRFX=${_lib}/ all; \ ${MAKE} MK_COVERAGE=no MK_TESTS=no DIRPRFX=${_lib}/ install .endif .endfor @@ -3257,9 +3256,10 @@ XDEV_CPUTYPE?=${CPUTYPE} XDEV_CPUTYPE?=${TARGET_CPUTYPE} .endif -NOFUN= MK_COVERAGE=no -DNO_FSCHG MK_HTML=no -DNO_LINT \ +NOFUN= -DNO_FSCHG MK_HTML=no -DNO_LINT \ MK_MAN=no MK_NLS=no MK_PROFILE=no \ MK_KERBEROS=no MK_RESCUE=no MK_TESTS=no MK_WARNS=no \ + MK_COVERAGE=no \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ CPUTYPE=${XDEV_CPUTYPE} @@ -3345,7 +3345,6 @@ XDEVDIRS= \ ${_elftctools} \ usr.bin/ar \ ${_clang} \ - ${_coverage_libs} \ ${_gcc} _xb-cross-tools: .PHONY From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:28 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 75186DC9C7 for ; Tue, 3 Sep 2019 14:06:28 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zS1R33z4Pb0; Tue, 3 Sep 2019 14:06:28 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 0A4251A6F5; Tue, 3 Sep 2019 14:06:09 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id E3DC0C90B; Mon, 8 Apr 2019 18:45:49 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 488E086D5E; Mon, 8 Apr 2019 18:45:49 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1B2F9C8AB; Mon, 8 Apr 2019 18:45:49 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 9B55DC8A6 for ; Mon, 8 Apr 2019 18:45:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 789DB86D57; Mon, 8 Apr 2019 18:45:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 38FF527641; Mon, 8 Apr 2019 18:45:45 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x38Ijj66065552; Mon, 8 Apr 2019 18:45:45 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x38Ijfdd065529; Mon, 8 Apr 2019 18:45:41 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904081845.x38Ijfdd065529@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r346043 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 346043 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 488E086D5E X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.98 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.996,0]; NEURAL_HAM_SHORT(-0.98)[-0.983,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:28 -0000 X-Original-Date: Mon, 8 Apr 2019 18:45:41 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:28 -0000 Author: asomers Date: Mon Apr 8 18:45:41 2019 New Revision: 346043 URL: https://svnweb.freebsd.org/changeset/base/346043 Log: fusefs: cache file attributes FUSE_LOOKUP, FUSE_GETATTR, FUSE_SETATTR, FUSE_MKDIR, FUSE_LINK, FUSE_SYMLINK, FUSE_MKNOD, and FUSE_CREATE all return file attributes with a cache validity period. fusefs will now cache the attributes, if the server returns a non-zero cache validity period. This change does _not_ implement finite attr cache timeouts. That will follow as part of PR 235773. PR: 235775 Reported by: cem Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_internal.h projects/fuse2/sys/fs/fuse/fuse_node.c projects/fuse2/sys/fs/fuse/fuse_node.h projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/tests/sys/fs/fusefs/allow_other.cc projects/fuse2/tests/sys/fs/fusefs/create.cc projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc projects/fuse2/tests/sys/fs/fusefs/flush.cc projects/fuse2/tests/sys/fs/fusefs/fsync.cc projects/fuse2/tests/sys/fs/fusefs/getattr.cc projects/fuse2/tests/sys/fs/fusefs/locks.cc projects/fuse2/tests/sys/fs/fusefs/lookup.cc projects/fuse2/tests/sys/fs/fusefs/open.cc projects/fuse2/tests/sys/fs/fusefs/read.cc projects/fuse2/tests/sys/fs/fusefs/release.cc projects/fuse2/tests/sys/fs/fusefs/setattr.cc projects/fuse2/tests/sys/fs/fusefs/unlink.cc projects/fuse2/tests/sys/fs/fusefs/utils.cc projects/fuse2/tests/sys/fs/fusefs/write.cc Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Mon Apr 8 18:45:41 2019 (r346043) @@ -175,9 +175,9 @@ fuse_internal_access(struct vnode *vp, } /* - * Cache FUSE attributes from feo, in attr cache associated with vnode 'vp'. - * Optionally, if argument 'vap' is not NULL, store a copy of the converted - * attributes there as well. + * Cache FUSE attributes from attr, in attribute cache associated with vnode + * 'vp'. Optionally, if argument 'vap' is not NULL, store a copy of the + * converted attributes there as well. * * If the nominal attribute cache TTL is zero, do not cache on the 'vp' (but do * return the result to the caller). @@ -581,6 +581,62 @@ fuse_internal_forget_send(struct mount *mp, fuse_insert_message(fdi.tick); fdisp_destroy(&fdi); +} + +/* Read a vnode's attributes from cache or fetch them from the fuse daemon */ +int +fuse_internal_getattr(struct vnode *vp, struct vattr *vap, struct ucred *cred, + struct thread *td) +{ + struct fuse_dispatcher fdi; + struct fuse_vnode_data *fvdat = VTOFUD(vp); + struct vattr *attrs; + struct fuse_attr_out *fao; + int err = 0; + + if ((attrs = VTOVA(vp)) != NULL) { + /* struct copy */ + *vap = *attrs; + if ((fvdat->flag & FN_SIZECHANGE) != 0) + vap->va_size = fvdat->filesize; + return 0; + } + + fdisp_init(&fdi, 0); + if ((err = fdisp_simple_putget_vp(&fdi, FUSE_GETATTR, vp, td, cred))) { + if (err == ENOENT) { + fuse_internal_vnode_disappear(vp); + } + goto out; + } + + fao = (struct fuse_attr_out *)fdi.answ; + fuse_internal_cache_attrs(vp, &fao->attr, fao->attr_valid, + fao->attr_valid_nsec, vap); + if (vap->va_type != vnode_vtype(vp)) { + fuse_internal_vnode_disappear(vp); + err = ENOENT; + goto out; + } + if ((fvdat->flag & FN_SIZECHANGE) != 0) + vap->va_size = fvdat->filesize; + + if (vnode_isreg(vp) && (fvdat->flag & FN_SIZECHANGE) == 0) { + /* + * This is for those cases when the file size changed without us + * knowing, and we want to catch up. + */ + off_t new_filesize = fao->attr.size; + + if (fvdat->filesize != new_filesize) { + fuse_vnode_setsize(vp, cred, new_filesize); + fvdat->flag &= ~FN_SIZECHANGE; + } + } + +out: + fdisp_destroy(&fdi); + return err; } void Modified: projects/fuse2/sys/fs/fuse/fuse_internal.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.h Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/sys/fs/fuse/fuse_internal.h Mon Apr 8 18:45:41 2019 (r346043) @@ -199,6 +199,10 @@ int fuse_internal_fsync(struct vnode *vp, struct threa bool datasync); int fuse_internal_fsync_callback(struct fuse_ticket *tick, struct uio *uio); +/* getattr */ +int fuse_internal_getattr(struct vnode *vp, struct vattr *vap, + struct ucred *cred, struct thread *td); + /* readdir */ struct pseudo_dirent { Modified: projects/fuse2/sys/fs/fuse/fuse_node.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.c Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/sys/fs/fuse/fuse_node.c Mon Apr 8 18:45:41 2019 (r346043) @@ -403,6 +403,7 @@ int fuse_vnode_setsize(struct vnode *vp, struct ucred *cred, off_t newsize) { struct fuse_vnode_data *fvdat = VTOFUD(vp); + struct vattr *attrs; off_t oldsize; size_t iosize; struct buf *bp = NULL; @@ -413,6 +414,8 @@ fuse_vnode_setsize(struct vnode *vp, struct ucred *cre iosize = fuse_iosize(vp); oldsize = fvdat->filesize; fvdat->filesize = newsize; + if ((attrs = VTOVA(vp)) != NULL) + attrs->va_size = newsize; fvdat->flag |= FN_SIZECHANGE; if (newsize < oldsize) { Modified: projects/fuse2/sys/fs/fuse/fuse_node.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.h Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/sys/fs/fuse/fuse_node.h Mon Apr 8 18:45:41 2019 (r346043) @@ -80,7 +80,7 @@ struct fuse_vnode_data { uint64_t parent_nid; /** I/O **/ - /* List of file data for each of the vnode's open file descriptors */ + /* List of file handles for all of the vnode's open file descriptors */ LIST_HEAD(, fuse_filehandle) handles; /** flags **/ Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Mon Apr 8 18:45:41 2019 (r346043) @@ -478,6 +478,8 @@ fuse_vnop_create(struct vop_create_args *ap) goto out; } ASSERT_VOP_ELOCKED(*vpp, "fuse_vnop_create"); + fuse_internal_cache_attrs(*vpp, &feo->attr, feo->attr_valid, + feo->attr_valid_nsec, NULL); fuse_filehandle_init(*vpp, FUFH_RDWR, NULL, td, cred, foo); fuse_vnode_open(*vpp, foo->open_flags, td); @@ -555,12 +557,9 @@ fuse_vnop_getattr(struct vop_getattr_args *ap) struct vattr *vap = ap->a_vap; struct ucred *cred = ap->a_cred; struct thread *td = curthread; - struct fuse_vnode_data *fvdat = VTOFUD(vp); - struct fuse_attr_out *fao; int err = 0; int dataflags; - struct fuse_dispatcher fdi; dataflags = fuse_get_mpdata(vnode_mount(vp))->dataflags; @@ -575,47 +574,13 @@ fuse_vnop_getattr(struct vop_getattr_args *ap) goto fake; } } - fdisp_init(&fdi, 0); - if ((err = fdisp_simple_putget_vp(&fdi, FUSE_GETATTR, vp, td, cred))) { - if ((err == ENOTCONN) && vnode_isvroot(vp)) { - /* see comment in fuse_vfsop_statfs() */ - fdisp_destroy(&fdi); - goto fake; - } - if (err == ENOENT) { - fuse_internal_vnode_disappear(vp); - } - goto out; + err = fuse_internal_getattr(vp, vap, cred, td); + if (err == ENOTCONN && vnode_isvroot(vp)) { + /* see comment in fuse_vfsop_statfs() */ + goto fake; + } else { + return err; } - - fao = (struct fuse_attr_out *)fdi.answ; - fuse_internal_cache_attrs(vp, &fao->attr, fao->attr_valid, - fao->attr_valid_nsec, vap); - if (vap->va_type != vnode_vtype(vp)) { - fuse_internal_vnode_disappear(vp); - err = ENOENT; - goto out; - } - if ((fvdat->flag & FN_SIZECHANGE) != 0) - vap->va_size = fvdat->filesize; - - if (vnode_isreg(vp) && (fvdat->flag & FN_SIZECHANGE) == 0) { - /* - * This is for those cases when the file size changed without us - * knowing, and we want to catch up. - */ - off_t new_filesize = ((struct fuse_attr_out *) - fdi.answ)->attr.size; - - if (fvdat->filesize != new_filesize) { - fuse_vnode_setsize(vp, cred, new_filesize); - fvdat->flag &= ~FN_SIZECHANGE; - } - } - -out: - fdisp_destroy(&fdi); - return err; fake: bzero(vap, sizeof(*vap)); Modified: projects/fuse2/tests/sys/fs/fusefs/allow_other.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/allow_other.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -80,7 +80,6 @@ TEST_F(AllowOther, allowed) expect_open(ino, 0, 1); expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, FH); - expect_getattr(ino, 0); }, []() { int fd; @@ -137,7 +136,6 @@ TEST_F(AllowOther, privilege_escalation) _) ).Times(AnyNumber()) .WillRepeatedly(Invoke(ReturnErrno(EPERM))); - expect_getattr(ino, 0); fd1 = open(FULLPATH, O_RDONLY); EXPECT_LE(0, fd1) << strerror(errno); Modified: projects/fuse2/tests/sys/fs/fusefs/create.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/create.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/create.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -59,8 +59,7 @@ void expect_create(const char *relpath, ProcessMockerT * If FUSE_CREATE sets the attr_valid, then subsequent GETATTRs should use the * attribute cache */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235775 */ -TEST_F(Create, DISABLED_attr_cache) +TEST_F(Create, attr_cache) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -151,19 +150,6 @@ TEST_F(Create, Enosys) SET_OUT_HEADER_LEN(out, open); }))); - /* Until the attr cache is working, we may send an additional GETATTR */ - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_GETATTR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { - SET_OUT_HEADER_LEN(out, attr); - out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | 0644; - }))); - fd = open(FULLPATH, O_CREAT | O_EXCL, mode); EXPECT_LE(0, fd) << strerror(errno); /* Deliberately leak fd. close(2) will be tested in release.cc */ @@ -196,19 +182,6 @@ TEST_F(Create, entry_cache_negative) out->body.create.entry.attr_valid = UINT64_MAX; })); - /* Until the attr cache is working, we may send an additional GETATTR */ - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_GETATTR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { - SET_OUT_HEADER_LEN(out, attr); - out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | 0644; - }))); - fd = open(FULLPATH, O_CREAT | O_EXCL, mode); ASSERT_LE(0, fd) << strerror(errno); /* Deliberately leak fd. close(2) will be tested in release.cc */ @@ -239,19 +212,6 @@ TEST_F(Create, entry_cache_negative_purge) out->body.create.entry.attr_valid = UINT64_MAX; })); - /* Until the attr cache is working, we may send an additional GETATTR */ - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_GETATTR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { - SET_OUT_HEADER_LEN(out, attr); - out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | 0644; - }))); - fd = open(FULLPATH, O_CREAT | O_EXCL, mode); ASSERT_LE(0, fd) << strerror(errno); @@ -296,19 +256,6 @@ TEST_F(Create, ok) out->body.create.entry.attr_valid = UINT64_MAX; })); - /* Until the attr cache is working, we may send an additional GETATTR */ - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_GETATTR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { - SET_OUT_HEADER_LEN(out, attr); - out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | mode; - }))); - fd = open(FULLPATH, O_CREAT | O_EXCL, mode); EXPECT_LE(0, fd) << strerror(errno); /* Deliberately leak fd. close(2) will be tested in release.cc */ @@ -338,19 +285,6 @@ TEST_F(Create, wronly_0444) out->body.create.entry.entry_valid = UINT64_MAX; out->body.create.entry.attr_valid = UINT64_MAX; })); - - /* Until the attr cache is working, we may send an additional GETATTR */ - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { - return (in->header.opcode == FUSE_GETATTR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { - SET_OUT_HEADER_LEN(out, attr); - out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | mode; - }))); fd = open(FULLPATH, O_CREAT | O_WRONLY, mode); EXPECT_LE(0, fd) << strerror(errno); Modified: projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/default_permissions.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -111,8 +111,6 @@ TEST_F(Open, ok) expect_lookup(RELPATH, ino, S_IFREG | 0644); expect_open(ino, 0, 1); - /* Until the attr cache is working, we may send an additional GETATTR */ - expect_getattr(ino, 0); fd = open(FULLPATH, O_RDONLY); EXPECT_LE(0, fd) << strerror(errno); Modified: projects/fuse2/tests/sys/fs/fusefs/flush.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/flush.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/flush.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -96,7 +96,6 @@ TEST_F(Flush, open_twice) expect_lookup(RELPATH, ino, 2); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_flush(ino, 2, 0, ReturnErrno(0)); expect_release(); @@ -127,7 +126,6 @@ TEST_F(Flush, eio) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_flush(ino, 1, 0, ReturnErrno(EIO)); expect_release(); @@ -153,14 +151,12 @@ TEST_F(Flush, enosys) expect_lookup(RELPATH0, ino0, 1); expect_open(ino0, 0, 1); - expect_getattr(ino0, 0); /* On the 2nd close, FUSE_FLUSH won't be sent at all */ expect_flush(ino0, 1, 0, ReturnErrno(ENOSYS)); expect_release(); expect_lookup(RELPATH1, ino1, 1); expect_open(ino1, 0, 1); - expect_getattr(ino1, 0); /* On the 2nd close, FUSE_FLUSH won't be sent at all */ expect_release(); @@ -184,7 +180,6 @@ TEST_F(Flush, flush) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_flush(ino, 1, 0, ReturnErrno(0)); expect_release(); @@ -210,7 +205,6 @@ TEST_F(FlushWithLocks, DISABLED_unlock_on_close) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); - expect_getattr(ino, 0); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_SETLK && Modified: projects/fuse2/tests/sys/fs/fusefs/fsync.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/fsync.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/fsync.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -93,7 +93,6 @@ TEST_F(Fsync, aio_fsync) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_write(ino, bufsize, CONTENTS); expect_fsync(ino, 0, 0); @@ -127,7 +126,6 @@ TEST_F(Fsync, close) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_write(ino, bufsize, CONTENTS); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { @@ -164,7 +162,6 @@ TEST_F(Fsync, eio) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_write(ino, bufsize, CONTENTS); expect_fsync(ino, FUSE_FSYNC_FDATASYNC, EIO); @@ -194,7 +191,6 @@ TEST_F(Fsync, DISABLED_enosys) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_write(ino, bufsize, CONTENTS); expect_fsync(ino, FUSE_FSYNC_FDATASYNC, ENOSYS); @@ -220,7 +216,6 @@ TEST_F(Fsync, fdatasync) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_write(ino, bufsize, CONTENTS); expect_fsync(ino, FUSE_FSYNC_FDATASYNC, 0); @@ -243,7 +238,6 @@ TEST_F(Fsync, fsync) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_write(ino, bufsize, CONTENTS); expect_fsync(ino, 0, 0); Modified: projects/fuse2/tests/sys/fs/fusefs/getattr.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/getattr.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/getattr.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -33,14 +33,32 @@ using namespace testing; -class Getattr : public FuseTest {}; +class Getattr : public FuseTest { +public: +void expect_lookup(const char *relpath, uint64_t ino, mode_t mode, + uint64_t size, int times, uint64_t attr_valid, uint32_t attr_valid_nsec) +{ + EXPECT_LOOKUP(1, relpath) + .Times(times) + .WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto out) { + SET_OUT_HEADER_LEN(out, entry); + out->body.entry.attr.mode = mode; + out->body.entry.nodeid = ino; + out->body.entry.attr.nlink = 1; + out->body.entry.attr_valid = attr_valid; + out->body.entry.attr_valid_nsec = attr_valid_nsec; + out->body.entry.attr.size = size; + out->body.entry.entry_valid = UINT64_MAX; + }))); +} +}; + /* * If getattr returns a non-zero cache timeout, then subsequent VOP_GETATTRs * should use the cached attributes, rather than query the daemon */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235775 */ -TEST_F(Getattr, DISABLED_attr_cache) +TEST_F(Getattr, attr_cache) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -52,6 +70,7 @@ TEST_F(Getattr, DISABLED_attr_cache) SET_OUT_HEADER_LEN(out, entry); out->body.entry.attr.mode = S_IFREG | 0644; out->body.entry.nodeid = ino; + out->body.entry.entry_valid = UINT64_MAX; }))); EXPECT_CALL(*m_mock, process( ResultOf([](auto in) { @@ -76,7 +95,7 @@ TEST_F(Getattr, DISABLED_attr_cache) * period passes. */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235773 */ -TEST_F(Getattr, attr_cache_timeout) +TEST_F(Getattr, DISABLED_attr_cache_timeout) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -88,7 +107,7 @@ TEST_F(Getattr, attr_cache_timeout) */ long timeout_ns = 250'000'000; - expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 2); + expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 2, 0, 0); EXPECT_CALL(*m_mock, process( ResultOf([](auto in) { return (in->header.opcode == FUSE_GETATTR && @@ -116,7 +135,7 @@ TEST_F(Getattr, enoent) struct stat sb; const uint64_t ino = 42; - expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 1); + expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 1, 0, 0); EXPECT_CALL(*m_mock, process( ResultOf([](auto in) { return (in->header.opcode == FUSE_GETATTR && @@ -135,7 +154,7 @@ TEST_F(Getattr, ok) const uint64_t ino = 42; struct stat sb; - expect_lookup(RELPATH, ino, S_IFREG | 0644, 1, 1); + expect_lookup(RELPATH, ino, S_IFREG | 0644, 1, 1, 0, 0); EXPECT_CALL(*m_mock, process( ResultOf([](auto in) { return (in->header.opcode == FUSE_GETATTR && Modified: projects/fuse2/tests/sys/fs/fusefs/locks.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/locks.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/locks.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -80,7 +80,6 @@ TEST_F(GetlkFallback, local) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); fd = open(FULLPATH, O_RDWR); ASSERT_LE(0, fd) << strerror(errno); @@ -110,7 +109,6 @@ TEST_F(Getlk, DISABLED_no_locks) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_GETLK && @@ -156,7 +154,6 @@ TEST_F(Getlk, DISABLED_lock_exists) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_GETLK && @@ -209,7 +206,6 @@ TEST_F(SetlkFallback, local) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); fd = open(FULLPATH, O_RDWR); ASSERT_LE(0, fd) << strerror(errno); @@ -236,7 +232,6 @@ TEST_F(Setlk, DISABLED_set) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_SETLK && @@ -279,7 +274,6 @@ TEST_F(Setlk, DISABLED_set_eof) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_SETLK && @@ -322,7 +316,6 @@ TEST_F(Setlk, DISABLED_eagain) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_SETLK && @@ -364,7 +357,6 @@ TEST_F(SetlkwFallback, local) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); fd = open(FULLPATH, O_RDWR); ASSERT_LE(0, fd) << strerror(errno); @@ -395,7 +387,6 @@ TEST_F(Setlkw, DISABLED_set) expect_lookup(RELPATH, ino); expect_open(ino, 0, 1); - expect_getattr(ino, 0); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_SETLK && Modified: projects/fuse2/tests/sys/fs/fusefs/lookup.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/lookup.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/lookup.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -43,8 +43,7 @@ class Lookup: public FuseTest {}; * If lookup returns a non-zero cache timeout, then subsequent VOP_GETATTRs * should use the cached attributes, rather than query the daemon */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235775 */ -TEST_F(Lookup, DISABLED_attr_cache) +TEST_F(Lookup, attr_cache) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -106,7 +105,7 @@ TEST_F(Lookup, DISABLED_attr_cache) * the cached attributes and requery the daemon. */ /* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235773 */ -TEST_F(Lookup, attr_cache_timeout) +TEST_F(Lookup, DISABLED_attr_cache_timeout) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; Modified: projects/fuse2/tests/sys/fs/fusefs/open.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/open.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/open.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -61,9 +61,6 @@ void test_ok(int os_flags, int fuse_flags) { SET_OUT_HEADER_LEN(out, open); }))); - /* Until the attr cache is working, we may send an additional GETATTR */ - expect_getattr(ino, 0); - fd = open(FULLPATH, os_flags); EXPECT_LE(0, fd) << strerror(errno); /* Deliberately leak fd. close(2) will be tested in release.cc */ @@ -204,7 +201,6 @@ TEST_F(Open, multiple_creds) out->header.len = sizeof(out->header); SET_OUT_HEADER_LEN(out, open); }))); - expect_getattr(ino, 0); expect_flush(ino, 2, ReturnErrno(0)); expect_release(ino, fh0); expect_release(ino, fh1); Modified: projects/fuse2/tests/sys/fs/fusefs/read.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/read.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/read.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -117,7 +117,6 @@ TEST_F(AioRead, aio_read) expect_lookup(RELPATH, ino, bufsize); expect_open(ino, 0, 1); - expect_getattr(ino, bufsize); expect_read(ino, 0, bufsize, bufsize, CONTENTS); fd = open(FULLPATH, O_RDONLY); @@ -152,7 +151,6 @@ TEST_F(AioRead, async_read_disabled) expect_lookup(RELPATH, ino, bufsize); expect_open(ino, 0, 1); - expect_getattr(ino, bufsize); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_READ && @@ -230,7 +228,6 @@ TEST_F(AsyncRead, DISABLED_async_read) expect_lookup(RELPATH, ino, bufsize); expect_open(ino, 0, 1); - expect_getattr(ino, bufsize); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_READ && @@ -299,7 +296,6 @@ TEST_F(Read, direct_io_read_nothing) expect_lookup(RELPATH, ino, offset + 1000); expect_open(ino, FOPEN_DIRECT_IO, 1); - expect_getattr(ino, offset + 1000); fd = open(FULLPATH, O_RDONLY); ASSERT_LE(0, fd) << strerror(errno); @@ -325,7 +321,6 @@ TEST_F(Read, direct_io_pread) expect_lookup(RELPATH, ino, offset + bufsize); expect_open(ino, FOPEN_DIRECT_IO, 1); - expect_getattr(ino, offset + bufsize); expect_read(ino, offset, bufsize, bufsize, CONTENTS); fd = open(FULLPATH, O_RDONLY); @@ -354,7 +349,6 @@ TEST_F(Read, direct_io_short_read) expect_lookup(RELPATH, ino, offset + bufsize); expect_open(ino, FOPEN_DIRECT_IO, 1); - expect_getattr(ino, offset + bufsize); expect_read(ino, offset, bufsize, halfbufsize, CONTENTS); fd = open(FULLPATH, O_RDONLY); @@ -378,7 +372,6 @@ TEST_F(Read, eio) expect_lookup(RELPATH, ino, bufsize); expect_open(ino, 0, 1); - expect_getattr(ino, bufsize); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_READ); @@ -410,7 +403,6 @@ TEST_F(Read, keep_cache) FuseTest::expect_lookup(RELPATH, ino, S_IFREG | 0644, bufsize, 2); expect_open(ino, FOPEN_KEEP_CACHE, 2); - expect_getattr(ino, bufsize); expect_read(ino, 0, bufsize, bufsize, CONTENTS); fd0 = open(FULLPATH, O_RDONLY); @@ -445,7 +437,6 @@ TEST_F(Read, keep_cache_disabled) FuseTest::expect_lookup(RELPATH, ino, S_IFREG | 0644, bufsize, 2); expect_open(ino, 0, 2); - expect_getattr(ino, bufsize); expect_read(ino, 0, bufsize, bufsize, CONTENTS); fd0 = open(FULLPATH, O_RDONLY); @@ -482,7 +473,6 @@ TEST_F(ReadCacheable, mmap) expect_lookup(RELPATH, ino, bufsize); expect_open(ino, 0, 1); - expect_getattr(ino, bufsize); /* mmap may legitimately try to read more data than is available */ EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { @@ -526,7 +516,6 @@ TEST_F(Read, o_direct) expect_lookup(RELPATH, ino, bufsize); expect_open(ino, 0, 1); - expect_getattr(ino, bufsize); expect_read(ino, 0, bufsize, bufsize, CONTENTS); fd = open(FULLPATH, O_RDONLY); @@ -563,7 +552,6 @@ TEST_F(Read, pread) expect_lookup(RELPATH, ino, offset + bufsize); expect_open(ino, 0, 1); - expect_getattr(ino, offset + bufsize); expect_read(ino, offset, bufsize, bufsize, CONTENTS); fd = open(FULLPATH, O_RDONLY); @@ -586,7 +574,6 @@ TEST_F(Read, read) expect_lookup(RELPATH, ino, bufsize); expect_open(ino, 0, 1); - expect_getattr(ino, bufsize); expect_read(ino, 0, bufsize, bufsize, CONTENTS); fd = open(FULLPATH, O_RDONLY); @@ -620,7 +607,6 @@ TEST_F(ReadCacheable, default_readahead) expect_lookup(RELPATH, ino, filesize); expect_open(ino, 0, 1); - expect_getattr(ino, filesize); expect_read(ino, 0, default_maxreadahead, default_maxreadahead, contents); @@ -651,7 +637,6 @@ TEST_F(ReadCacheable, sendfile) expect_lookup(RELPATH, ino, bufsize); expect_open(ino, 0, 1); - expect_getattr(ino, bufsize); /* Like mmap, sendfile may request more data than is available */ EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { @@ -697,7 +682,6 @@ TEST_F(ReadCacheable, DISABLED_sendfile_eio) expect_lookup(RELPATH, ino, bufsize); expect_open(ino, 0, 1); - expect_getattr(ino, bufsize); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_READ); @@ -739,7 +723,6 @@ TEST_P(ReadAhead, DISABLED_readahead) { expect_lookup(RELPATH, ino, filesize); expect_open(ino, 0, 1); - expect_getattr(ino, filesize); /* fuse(4) should only read ahead the allowed amount */ expect_read(ino, 0, GetParam(), GetParam(), contents); Modified: projects/fuse2/tests/sys/fs/fusefs/release.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/release.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/release.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -81,7 +81,6 @@ TEST_F(Release, dup) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, 0, O_RDONLY, 0); @@ -111,7 +110,6 @@ TEST_F(Release, eio) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, 0, O_WRONLY, EIO); @@ -134,7 +132,6 @@ TEST_F(Release, DISABLED_flags) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, 0, O_RDWR | O_APPEND, 0); @@ -158,7 +155,6 @@ TEST_F(Release, multiple_opens) expect_lookup(RELPATH, ino, 2); expect_open(ino, 0, 2); - expect_getattr(ino, 0); expect_flush(ino, 2, ReturnErrno(0)); expect_release(ino, 0, O_RDONLY, 0); @@ -182,7 +178,6 @@ TEST_F(Release, ok) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_flush(ino, 1, ReturnErrno(0)); expect_release(ino, 0, O_RDONLY, 0); @@ -205,7 +200,6 @@ TEST_F(ReleaseWithLocks, DISABLED_unlock_on_close) expect_lookup(RELPATH, ino, 1); expect_open(ino, 0, 1); - expect_getattr(ino, 0); EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_SETLK && Modified: projects/fuse2/tests/sys/fs/fusefs/setattr.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/setattr.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/setattr.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -46,8 +46,7 @@ class Setattr : public FuseTest {}; * If setattr returns a non-zero cache timeout, then subsequent VOP_GETATTRs * should use the cached attributes, rather than query the daemon */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235775 */ -TEST_F(Setattr, DISABLED_attr_cache) +TEST_F(Setattr, attr_cache) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -60,11 +59,11 @@ TEST_F(Setattr, DISABLED_attr_cache) SET_OUT_HEADER_LEN(out, entry); out->body.entry.attr.mode = S_IFREG | 0644; out->body.entry.nodeid = ino; + out->body.entry.entry_valid = UINT64_MAX; }))); EXPECT_CALL(*m_mock, process( ResultOf([](auto in) { - /* In protocol 7.23, ctime will be changed too */ return (in->header.opcode == FUSE_SETATTR && in->header.nodeid == ino); }, Eq(true)), @@ -73,6 +72,7 @@ TEST_F(Setattr, DISABLED_attr_cache) SET_OUT_HEADER_LEN(out, attr); out->body.attr.attr.ino = ino; // Must match nodeid out->body.attr.attr.mode = S_IFREG | newmode; + out->body.attr.attr_valid = UINT64_MAX; }))); EXPECT_CALL(*m_mock, process( ResultOf([](auto in) { @@ -227,21 +227,8 @@ TEST_F(Setattr, fchmod) SET_OUT_HEADER_LEN(out, open); }))); - /* Until the attr cache is working, we may send an additional GETATTR */ EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { - return (in->header.opcode == FUSE_GETATTR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { - SET_OUT_HEADER_LEN(out, attr); - out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | oldmode; - }))); - - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { /* In protocol 7.23, ctime will be changed too */ uint32_t valid = FATTR_MODE; return (in->header.opcode == FUSE_SETATTR && @@ -294,22 +281,8 @@ TEST_F(Setattr, ftruncate) out->body.open.fh = fh; }))); - /* Until the attr cache is working, we may send an additional GETATTR */ EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { - return (in->header.opcode == FUSE_GETATTR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { - SET_OUT_HEADER_LEN(out, attr); - out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | 0755; - out->body.attr.attr.size = oldsize; - }))); - - EXPECT_CALL(*m_mock, process( - ResultOf([=](auto in) { /* In protocol 7.23, ctime will be changed too */ uint32_t valid = FATTR_SIZE | FATTR_FH; return (in->header.opcode == FUSE_SETATTR && @@ -502,27 +475,7 @@ TEST_F(Setattr, utimensat) { out->body.entry.attr.mtimensec = oldtimes[1].tv_nsec; }))); - /* - * Until bug 235775 is fixed, utimensat will make an extra FUSE_GETATTR - * call - */ EXPECT_CALL(*m_mock, process( - ResultOf([](auto in) { - return (in->header.opcode == FUSE_GETATTR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) { - SET_OUT_HEADER_LEN(out, attr); - out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | 0644; - out->body.attr.attr.atime = oldtimes[0].tv_sec; - out->body.attr.attr.atimensec = oldtimes[0].tv_nsec; - out->body.attr.attr.mtime = oldtimes[1].tv_sec; - out->body.attr.attr.mtimensec = oldtimes[1].tv_nsec; - }))); - - EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { /* In protocol 7.23, ctime will be changed too */ uint32_t valid = FATTR_ATIME | FATTR_MTIME; @@ -574,26 +527,6 @@ TEST_F(Setattr, utimensat_mtime_only) { out->body.entry.attr.atimensec = oldtimes[0].tv_nsec; out->body.entry.attr.mtime = oldtimes[1].tv_sec; out->body.entry.attr.mtimensec = oldtimes[1].tv_nsec; - }))); - - /* - * Until bug 235775 is fixed, utimensat will make an extra FUSE_GETATTR - * call - */ - EXPECT_CALL(*m_mock, process( - ResultOf([](auto in) { - return (in->header.opcode == FUSE_GETATTR && - in->header.nodeid == ino); - }, Eq(true)), - _) - ).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto out) { - SET_OUT_HEADER_LEN(out, attr); - out->body.attr.attr.ino = ino; // Must match nodeid - out->body.attr.attr.mode = S_IFREG | 0644; - out->body.attr.attr.atime = oldtimes[0].tv_sec; - out->body.attr.attr.atimensec = oldtimes[0].tv_nsec; - out->body.attr.attr.mtime = oldtimes[1].tv_sec; - out->body.attr.attr.mtimensec = oldtimes[1].tv_nsec; }))); EXPECT_CALL(*m_mock, process( Modified: projects/fuse2/tests/sys/fs/fusefs/unlink.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/unlink.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/unlink.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -92,7 +92,6 @@ TEST_F(Unlink, open_but_deleted) expect_lookup(RELPATH, ino, 2); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_unlink(1, RELPATH, 0); fd = open(FULLPATH, O_RDWR); Modified: projects/fuse2/tests/sys/fs/fusefs/utils.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/utils.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/utils.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -144,14 +144,13 @@ FuseTest::expect_flush(uint64_t ino, int times, Proces void FuseTest::expect_getattr(uint64_t ino, uint64_t size) { - /* Until the attr cache is working, we may send an additional GETATTR */ EXPECT_CALL(*m_mock, process( ResultOf([=](auto in) { return (in->header.opcode == FUSE_GETATTR && in->header.nodeid == ino); }, Eq(true)), _) - ).WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { + ).WillOnce(Invoke(ReturnImmediate([=](auto i __unused, auto out) { SET_OUT_HEADER_LEN(out, attr); out->body.attr.attr.ino = ino; // Must match nodeid out->body.attr.attr.mode = S_IFREG | 0644; Modified: projects/fuse2/tests/sys/fs/fusefs/write.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/write.cc Mon Apr 8 18:38:18 2019 (r346042) +++ projects/fuse2/tests/sys/fs/fusefs/write.cc Mon Apr 8 18:45:41 2019 (r346043) @@ -153,7 +153,6 @@ TEST_F(AioWrite, DISABLED_aio_write) expect_lookup(RELPATH, ino, 0); expect_open(ino, 0, 1); - expect_getattr(ino, 0); expect_write(ino, offset, bufsize, bufsize, 0, CONTENTS); fd = open(FULLPATH, O_WRONLY); @@ -197,7 +196,6 @@ TEST_F(Write, append) expect_lookup(RELPATH, ino, initial_offset); expect_open(ino, 0, 1); - expect_getattr(ino, initial_offset); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:29 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 78945DCA09 for ; Tue, 3 Sep 2019 14:06:29 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zS28GVz4Pb7; Tue, 3 Sep 2019 14:06:28 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 259681A6FE; Tue, 3 Sep 2019 14:06:09 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id AE5F111610; Tue, 9 Apr 2019 00:47:43 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 3662B6C3C8; Tue, 9 Apr 2019 00:47:43 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0F86A11602; Tue, 9 Apr 2019 00:47:43 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id D21A9115FF for ; Tue, 9 Apr 2019 00:47:40 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 89C806C3C2; Tue, 9 Apr 2019 00:47:40 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 5A8543447; Tue, 9 Apr 2019 00:47:40 +0000 (UTC) (envelope-from asomers@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x390le25055453; Tue, 9 Apr 2019 00:47:40 GMT (envelope-from asomers@FreeBSD.org) Received: (from asomers@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x390lc2W055446; Tue, 9 Apr 2019 00:47:38 GMT (envelope-from asomers@FreeBSD.org) Message-Id: <201904090047.x390lc2W055446@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: asomers set sender to asomers@FreeBSD.org using -f From: Alan Somers To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r346046 - in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Group: projects X-SVN-Commit-Author: asomers X-SVN-Commit-Paths: in projects/fuse2: sys/fs/fuse tests/sys/fs/fusefs X-SVN-Commit-Revision: 346046 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 3662B6C3C8 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.996,0]; NEURAL_HAM_SHORT(-0.96)[-0.964,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:29 -0000 X-Original-Date: Tue, 9 Apr 2019 00:47:38 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:29 -0000 Author: asomers Date: Tue Apr 9 00:47:38 2019 New Revision: 346046 URL: https://svnweb.freebsd.org/changeset/base/346046 Log: fusefs: implement attribute cache timeouts The FUSE protocol allows the server to specify the timeout period for the client's attribute and entry caches. This commit implements the timeout period for the attribute cache. The entry cache's timeout period is currently disabled because it panics, and is guarded by the vfs.fusefs.lookup_cache_expire sysctl. PR: 235773 Reported by: cem Sponsored by: The FreeBSD Foundation Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c projects/fuse2/sys/fs/fuse/fuse_internal.h projects/fuse2/sys/fs/fuse/fuse_node.c projects/fuse2/sys/fs/fuse/fuse_node.h projects/fuse2/sys/fs/fuse/fuse_vnops.c projects/fuse2/tests/sys/fs/fusefs/getattr.cc projects/fuse2/tests/sys/fs/fusefs/lookup.cc Modified: projects/fuse2/sys/fs/fuse/fuse_internal.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.c Tue Apr 9 00:35:08 2019 (r346045) +++ projects/fuse2/sys/fs/fuse/fuse_internal.c Tue Apr 9 00:47:38 2019 (r346046) @@ -189,15 +189,22 @@ fuse_internal_cache_attrs(struct vnode *vp, struct fus struct mount *mp; struct fuse_vnode_data *fvdat; struct vattr *vp_cache_at; + struct timespec now, duration, timeout; mp = vnode_mount(vp); fvdat = VTOFUD(vp); - /* Honor explicit do-not-cache requests from user filesystems. */ - if (attr_valid == 0 && attr_valid_nsec == 0) - fvdat->valid_attr_cache = false; - else - fvdat->valid_attr_cache = true; + getnanouptime(&now); + /* "+ 2" is the bound of attr_valid_nsec + now.tv_nsec */ + /* Why oh why isn't there a TIME_MAX defined? */ + if (attr_valid >= INT_MAX || attr_valid + now.tv_sec + 2 >= INT_MAX) { + fvdat->attr_cache_timeout.sec = INT_MAX; + } else { + duration.tv_sec = attr_valid; + duration.tv_nsec = attr_valid_nsec; + timespecadd(&duration, &now, &timeout); + timespec2bintime(&timeout, &fvdat->attr_cache_timeout); + } vp_cache_at = VTOVA(vp); @@ -646,7 +653,7 @@ fuse_internal_vnode_disappear(struct vnode *vp) ASSERT_VOP_ELOCKED(vp, "fuse_internal_vnode_disappear"); fvdat->flag |= FN_REVOKED; - fvdat->valid_attr_cache = false; + bintime_clear(&fvdat->attr_cache_timeout); cache_purge(vp); } Modified: projects/fuse2/sys/fs/fuse/fuse_internal.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_internal.h Tue Apr 9 00:35:08 2019 (r346045) +++ projects/fuse2/sys/fs/fuse/fuse_internal.h Tue Apr 9 00:47:38 2019 (r346046) @@ -68,6 +68,8 @@ #include "fuse_ipc.h" #include "fuse_node.h" +extern int fuse_lookup_cache_expire; + static inline bool vfs_isrdonly(struct mount *mp) { Modified: projects/fuse2/sys/fs/fuse/fuse_node.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.c Tue Apr 9 00:35:08 2019 (r346045) +++ projects/fuse2/sys/fs/fuse/fuse_node.c Tue Apr 9 00:47:38 2019 (r346046) @@ -293,7 +293,22 @@ fuse_vnode_get(struct mount *mp, (feo->entry_valid != 0 || feo->entry_valid_nsec != 0)) { ASSERT_VOP_LOCKED(*vpp, "fuse_vnode_get"); ASSERT_VOP_LOCKED(dvp, "fuse_vnode_get"); - cache_enter(dvp, *vpp, cnp); + if (fuse_lookup_cache_expire) { + struct timespec duration, now, timeout; + + getnanouptime(&now); + if (feo->entry_valid >= INT_MAX || + feo->entry_valid + now.tv_sec + 2 >= INT_MAX) { + timeout.tv_sec = INT_MAX; + } else { + duration.tv_sec = feo->entry_valid; + duration.tv_nsec = feo->entry_valid_nsec; + timespecadd(&duration, &now, &timeout); + } + cache_enter_time(dvp, *vpp, cnp, &timeout, NULL); + } else { + cache_enter(dvp, *vpp, cnp); + } } /* Modified: projects/fuse2/sys/fs/fuse/fuse_node.h ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_node.h Tue Apr 9 00:35:08 2019 (r346045) +++ projects/fuse2/sys/fs/fuse/fuse_node.h Tue Apr 9 00:47:38 2019 (r346046) @@ -87,7 +87,8 @@ struct fuse_vnode_data { uint32_t flag; /** meta **/ - bool valid_attr_cache; + /* The monotonic time after which the attr cache is invalid */ + struct bintime attr_cache_timeout; struct vattr cached_attrs; off_t filesize; uint64_t nlookup; @@ -97,9 +98,18 @@ struct fuse_vnode_data { #define VTOFUD(vp) \ ((struct fuse_vnode_data *)((vp)->v_data)) #define VTOI(vp) (VTOFUD(vp)->nid) -#define VTOVA(vp) \ - (VTOFUD(vp)->valid_attr_cache ? \ - &(VTOFUD(vp)->cached_attrs) : NULL) +static inline struct vattr* +VTOVA(struct vnode *vp) +{ + struct bintime now; + + getbinuptime(&now); + if (bintime_cmp(&(VTOFUD(vp)->attr_cache_timeout), &now, >)) + return &(VTOFUD(vp)->cached_attrs); + else + return NULL; +} + #define VTOILLU(vp) ((uint64_t)(VTOFUD(vp) ? VTOI(vp) : 0)) #define FUSE_NULL_ID 0 Modified: projects/fuse2/sys/fs/fuse/fuse_vnops.c ============================================================================== --- projects/fuse2/sys/fs/fuse/fuse_vnops.c Tue Apr 9 00:35:08 2019 (r346045) +++ projects/fuse2/sys/fs/fuse/fuse_vnops.c Tue Apr 9 00:47:38 2019 (r346046) @@ -195,10 +195,11 @@ static u_long fuse_lookup_cache_misses = 0; SYSCTL_ULONG(_vfs_fusefs, OID_AUTO, lookup_cache_misses, CTLFLAG_RD, &fuse_lookup_cache_misses, 0, "number of cache misses in lookup"); -int fuse_lookup_cache_enable = 1; +int fuse_lookup_cache_expire = 0; -SYSCTL_INT(_vfs_fusefs, OID_AUTO, lookup_cache_enable, CTLFLAG_RW, - &fuse_lookup_cache_enable, 0, "if non-zero, enable lookup cache"); +SYSCTL_INT(_vfs_fusefs, OID_AUTO, lookup_cache_expire, CTLFLAG_RW, + &fuse_lookup_cache_expire, 0, + "if non-zero, expire fuse lookup cache entries at the proper time"); /* * XXX: This feature is highly experimental and can bring to instabilities, @@ -749,7 +750,43 @@ fuse_vnop_lookup(struct vop_lookup_args *ap) fdisp_init(&fdi, 0); op = FUSE_GETATTR; goto calldaemon; - } else if (fuse_lookup_cache_enable) { + } else if (fuse_lookup_cache_expire) { + struct timespec now, timeout; + + err = cache_lookup(dvp, vpp, cnp, &timeout, NULL); + switch (err) { + + case -1: /* positive match */ + getnanouptime(&now); + if (timespeccmp(&timeout, &now, <=)) { + atomic_add_acq_long(&fuse_lookup_cache_hits, 1); + } else { + /* Cache timeout */ + atomic_add_acq_long(&fuse_lookup_cache_misses, + 1); + cache_purge(*vpp); + break; + } + return 0; + + case 0: /* no match in cache */ + atomic_add_acq_long(&fuse_lookup_cache_misses, 1); + break; + + case ENOENT: /* negative match */ + getnanouptime(&now); + if (timespeccmp(&timeout, &now, >)) { + /* Cache timeout */ + printf("Purging vnode %p name=%s\n", *vpp, + cnp->cn_nameptr); + fuse_internal_vnode_disappear(*vpp); + break; + } + /* fall through */ + default: + return err; + } + } else { err = cache_lookup(dvp, vpp, cnp, NULL, NULL); switch (err) { Modified: projects/fuse2/tests/sys/fs/fusefs/getattr.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/getattr.cc Tue Apr 9 00:35:08 2019 (r346045) +++ projects/fuse2/tests/sys/fs/fusefs/getattr.cc Tue Apr 9 00:47:38 2019 (r346046) @@ -94,8 +94,7 @@ TEST_F(Getattr, attr_cache) * discard the cached attributes and requery the daemon after the timeout * period passes. */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235773 */ -TEST_F(Getattr, DISABLED_attr_cache_timeout) +TEST_F(Getattr, attr_cache_timeout) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -107,7 +106,7 @@ TEST_F(Getattr, DISABLED_attr_cache_timeout) */ long timeout_ns = 250'000'000; - expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 2, 0, 0); + expect_lookup(RELPATH, ino, S_IFREG | 0644, 0, 1, 0, 0); EXPECT_CALL(*m_mock, process( ResultOf([](auto in) { return (in->header.opcode == FUSE_GETATTR && @@ -118,13 +117,14 @@ TEST_F(Getattr, DISABLED_attr_cache_timeout) .WillRepeatedly(Invoke(ReturnImmediate([=](auto i __unused, auto out) { SET_OUT_HEADER_LEN(out, attr); out->body.attr.attr_valid_nsec = timeout_ns; - out->body.attr.attr_valid = UINT64_MAX; + out->body.attr.attr_valid = 0; out->body.attr.attr.ino = ino; // Must match nodeid out->body.attr.attr.mode = S_IFREG | 0644; }))); + EXPECT_EQ(0, stat(FULLPATH, &sb)); usleep(2 * timeout_ns / 1000); - /* Timeout has expire. stat(2) should requery the daemon */ + /* Timeout has expired. stat(2) should requery the daemon */ EXPECT_EQ(0, stat(FULLPATH, &sb)); } Modified: projects/fuse2/tests/sys/fs/fusefs/lookup.cc ============================================================================== --- projects/fuse2/tests/sys/fs/fusefs/lookup.cc Tue Apr 9 00:35:08 2019 (r346045) +++ projects/fuse2/tests/sys/fs/fusefs/lookup.cc Tue Apr 9 00:47:38 2019 (r346046) @@ -104,8 +104,7 @@ TEST_F(Lookup, attr_cache) * If lookup returns a finite but non-zero cache timeout, then we should discard * the cached attributes and requery the daemon. */ -/* https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235773 */ -TEST_F(Lookup, DISABLED_attr_cache_timeout) +TEST_F(Lookup, attr_cache_timeout) { const char FULLPATH[] = "mountpoint/some_file.txt"; const char RELPATH[] = "some_file.txt"; @@ -118,6 +117,7 @@ TEST_F(Lookup, DISABLED_attr_cache_timeout) long timeout_ns = 250'000'000; EXPECT_LOOKUP(1, RELPATH) + .Times(2) .WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto out) { SET_OUT_HEADER_LEN(out, entry); out->body.entry.nodeid = ino; @@ -125,10 +125,10 @@ TEST_F(Lookup, DISABLED_attr_cache_timeout) out->body.entry.attr.ino = ino; // Must match nodeid out->body.entry.attr.mode = S_IFREG | 0644; }))); - expect_getattr(ino, 0); - /* access(2) will issue a VOP_LOOKUP but not a VOP_GETATTR */ + /* access(2) will issue a VOP_LOOKUP and fill the attr cache */ ASSERT_EQ(0, access(FULLPATH, F_OK)) << strerror(errno); + /* Next access(2) will use the cached attributes */ usleep(2 * timeout_ns / 1000); /* The cache has timed out; VOP_GETATTR should query the daemon*/ ASSERT_EQ(0, stat(FULLPATH, &sb)) << strerror(errno); @@ -222,16 +222,21 @@ TEST_F(Lookup, DISABLED_entry_cache_timeout) */ long timeout_ns = 250'000'000; - EXPECT_LOOKUP(1, RELPATH).Times(2) + EXPECT_LOOKUP(1, RELPATH) + .Times(2) .WillRepeatedly(Invoke(ReturnImmediate([=](auto in __unused, auto out) { SET_OUT_HEADER_LEN(out, entry); out->body.entry.entry_valid_nsec = timeout_ns; out->body.entry.attr.mode = S_IFREG | 0644; out->body.entry.nodeid = 14; }))); + + /* access(2) will issue a VOP_LOOKUP and fill the entry cache */ ASSERT_EQ(0, access(FULLPATH, F_OK)) << strerror(errno); + /* Next access(2) will use the cached entry */ + ASSERT_EQ(0, access(FULLPATH, F_OK)) << strerror(errno); usleep(2 * timeout_ns / 1000); - /* The cache has timed out; VOP_LOOKUP should query the daemon*/ + /* The cache has timed out; VOP_LOOKUP should requery the daemon*/ ASSERT_EQ(0, access(FULLPATH, F_OK)) << strerror(errno); } From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:32 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id EBD0FDCB17 for ; Tue, 3 Sep 2019 14:06:32 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2610:1c1:1:6074::16:84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zX3ttcz4Pfm; Tue, 3 Sep 2019 14:06:32 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 682C41A808; Tue, 3 Sep 2019 14:06:11 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id B66561D809; Tue, 9 Apr 2019 16:31:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 365506D250; Tue, 9 Apr 2019 16:31:35 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 0F75C1D7D8; Tue, 9 Apr 2019 16:31:35 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 8F8071D7D6 for ; Tue, 9 Apr 2019 16:31:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4416E6D243; Tue, 9 Apr 2019 16:31:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1D3F2DA79; Tue, 9 Apr 2019 16:31:32 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x39GVVvY054881; Tue, 9 Apr 2019 16:31:32 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x39GVUX3054874; Tue, 9 Apr 2019 16:31:30 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904091631.x39GVUX3054874@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r346058 - in projects/runtime-coverage-v2: . lib/libc/string lib/libc/sys share/man/man7 sys/dev/usb/net sys/kern tests/sys/geom/class/eli tools/tools/ioat X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage-v2: . lib/libc/string lib/libc/sys share/man/man7 sys/dev/usb/net sys/kern tests/sys/geom/class/eli tools/tools/ioat X-SVN-Commit-Revision: 346058 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 365506D250 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.96 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-0.99)[-0.993,0]; NEURAL_HAM_SHORT(-0.97)[-0.972,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:33 -0000 X-Original-Date: Tue, 9 Apr 2019 16:31:30 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:33 -0000 Author: ngie Date: Tue Apr 9 16:31:30 2019 New Revision: 346058 URL: https://svnweb.freebsd.org/changeset/base/346058 Log: MFhead@r346057 Modified: projects/runtime-coverage-v2/Makefile projects/runtime-coverage-v2/lib/libc/string/strstr.c projects/runtime-coverage-v2/lib/libc/sys/procctl.2 projects/runtime-coverage-v2/share/man/man7/hostname.7 projects/runtime-coverage-v2/sys/dev/usb/net/if_ure.c projects/runtime-coverage-v2/sys/kern/imgact_elf.c projects/runtime-coverage-v2/tests/sys/geom/class/eli/online_resize_test.sh projects/runtime-coverage-v2/tools/tools/ioat/ioatcontrol.c Directory Properties: projects/runtime-coverage-v2/ (props changed) Modified: projects/runtime-coverage-v2/Makefile ============================================================================== --- projects/runtime-coverage-v2/Makefile Tue Apr 9 16:20:36 2019 (r346057) +++ projects/runtime-coverage-v2/Makefile Tue Apr 9 16:31:30 2019 (r346058) @@ -570,7 +570,7 @@ universe-toolchain: .PHONY universe_prologue false; \ fi @if [ ! -e "${HOST_OBJTOP}/tmp/usr/bin/ld" ]; then \ - echo "Missing host linker at ${HOST_OBJTOP}/tmp/usr/bin/cc?" >&2; \ + echo "Missing host linker at ${HOST_OBJTOP}/tmp/usr/bin/ld?" >&2; \ false; \ fi @echo "--------------------------------------------------------------" Modified: projects/runtime-coverage-v2/lib/libc/string/strstr.c ============================================================================== --- projects/runtime-coverage-v2/lib/libc/string/strstr.c Tue Apr 9 16:20:36 2019 (r346057) +++ projects/runtime-coverage-v2/lib/libc/string/strstr.c Tue Apr 9 16:31:30 2019 (r346058) @@ -143,9 +143,8 @@ static char *twoway_strstr(const unsigned char *h, con /* Check last byte first; advance by shift on mismatch */ if (BITOP(byteset, h[l-1], &)) { k = l-shift[h[l-1]]; - //printf("adv by %zu (on %c) at [%s] (%zu;l=%zu)\n", k, h[l-1], h, shift[h[l-1]], l); if (k) { - if (mem0 && mem && k < p) k = l-p; + if (k < mem) k = mem; h += k; mem = 0; continue; Modified: projects/runtime-coverage-v2/lib/libc/sys/procctl.2 ============================================================================== --- projects/runtime-coverage-v2/lib/libc/sys/procctl.2 Tue Apr 9 16:20:36 2019 (r346057) +++ projects/runtime-coverage-v2/lib/libc/sys/procctl.2 Tue Apr 9 16:31:30 2019 (r346058) @@ -29,7 +29,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 23, 2019 +.Dd April 9, 2019 .Dt PROCCTL 2 .Os .Sh NAME @@ -570,6 +570,8 @@ or invalid signal number. .El .Sh SEE ALSO .Xr dtrace 1 , +.Xr proccontrol 1 , +.Xr protect 1 , .Xr cap_enter 2, .Xr kill 2 , .Xr ktrace 2 , Modified: projects/runtime-coverage-v2/share/man/man7/hostname.7 ============================================================================== --- projects/runtime-coverage-v2/share/man/man7/hostname.7 Tue Apr 9 16:20:36 2019 (r346057) +++ projects/runtime-coverage-v2/share/man/man7/hostname.7 Tue Apr 9 16:31:30 2019 (r346058) @@ -81,7 +81,7 @@ by a system-wide configuration file (see .Xr resolver 5 ) . .Sh SEE ALSO .Xr gethostbyname 3 , -.Xr resolver 5 , +.Xr resolver 5 .Sh HISTORY .Nm Hostname appeared in Modified: projects/runtime-coverage-v2/sys/dev/usb/net/if_ure.c ============================================================================== --- projects/runtime-coverage-v2/sys/dev/usb/net/if_ure.c Tue Apr 9 16:20:36 2019 (r346057) +++ projects/runtime-coverage-v2/sys/dev/usb/net/if_ure.c Tue Apr 9 16:31:30 2019 (r346058) @@ -62,6 +62,9 @@ SYSCTL_INT(_hw_usb_ure, OID_AUTO, debug, CTLFLAG_RWTUN "Debug level"); #endif +#define ETHER_IS_ZERO(addr) \ + (!(addr[0] | addr[1] | addr[2] | addr[3] | addr[4] | addr[5])) + /* * Various supported device vendors/products. */ @@ -673,12 +676,20 @@ ure_attach_post(struct usb_ether *ue) else ure_rtl8153_init(sc); - if (sc->sc_chip & URE_CHIP_VER_4C00) + if ((sc->sc_chip & URE_CHIP_VER_4C00) || + (sc->sc_chip & URE_CHIP_VER_4C10)) ure_read_mem(sc, URE_PLA_IDR, URE_MCU_TYPE_PLA, ue->ue_eaddr, 8); else ure_read_mem(sc, URE_PLA_BACKUP, URE_MCU_TYPE_PLA, ue->ue_eaddr, 8); + + if (ETHER_IS_ZERO(sc->sc_ue.ue_eaddr)) { + device_printf(sc->sc_ue.ue_dev, "MAC assigned randomly\n"); + arc4rand(sc->sc_ue.ue_eaddr, ETHER_ADDR_LEN, 0); + sc->sc_ue.ue_eaddr[0] &= ~0x01; /* unicast */ + sc->sc_ue.ue_eaddr[0] |= 0x02; /* locally administered */ + } } static int @@ -724,8 +735,10 @@ ure_init(struct usb_ether *ue) ure_reset(sc); /* Set MAC address. */ + ure_write_1(sc, URE_PLA_CRWECR, URE_MCU_TYPE_PLA, URE_CRWECR_CONFIG); ure_write_mem(sc, URE_PLA_IDR, URE_MCU_TYPE_PLA | URE_BYTE_EN_SIX_BYTES, IF_LLADDR(ifp), 8); + ure_write_1(sc, URE_PLA_CRWECR, URE_MCU_TYPE_PLA, URE_CRWECR_NORAML); /* Reset the packet filter. */ ure_write_2(sc, URE_PLA_FMC, URE_MCU_TYPE_PLA, Modified: projects/runtime-coverage-v2/sys/kern/imgact_elf.c ============================================================================== --- projects/runtime-coverage-v2/sys/kern/imgact_elf.c Tue Apr 9 16:20:36 2019 (r346057) +++ projects/runtime-coverage-v2/sys/kern/imgact_elf.c Tue Apr 9 16:31:30 2019 (r346058) @@ -649,6 +649,45 @@ __elfN(load_section)(struct image_params *imgp, vm_oof return (0); } +static int +__elfN(load_sections)(struct image_params *imgp, const Elf_Ehdr *hdr, + const Elf_Phdr *phdr, u_long rbase, u_long *base_addrp) +{ + vm_prot_t prot; + u_long base_addr; + bool first; + int error, i; + + base_addr = 0; + first = true; + + for (i = 0; i < hdr->e_phnum; i++) { + if (phdr[i].p_type != PT_LOAD || phdr[i].p_memsz == 0) + continue; + + /* Loadable segment */ + prot = __elfN(trans_prot)(phdr[i].p_flags); + error = __elfN(load_section)(imgp, phdr[i].p_offset, + (caddr_t)(uintptr_t)phdr[i].p_vaddr + rbase, + phdr[i].p_memsz, phdr[i].p_filesz, prot); + if (error != 0) + return (error); + + /* + * Establish the base address if this is the first segment. + */ + if (first) { + base_addr = trunc_page(phdr[i].p_vaddr + rbase); + first = false; + } + } + + if (base_addrp != NULL) + *base_addrp = base_addr; + + return (0); +} + /* * Load the file "file" into memory. It may be either a shared object * or an executable. @@ -675,10 +714,9 @@ __elfN(load_file)(struct proc *p, const char *file, u_ struct nameidata *nd; struct vattr *attr; struct image_params *imgp; - vm_prot_t prot; u_long rbase; u_long base_addr = 0; - int error, i, numsegs; + int error; #ifdef CAPABILITY_MODE /* @@ -756,25 +794,10 @@ __elfN(load_file)(struct proc *p, const char *file, u_ goto fail; } - for (i = 0, numsegs = 0; i < hdr->e_phnum; i++) { - if (phdr[i].p_type == PT_LOAD && phdr[i].p_memsz != 0) { - /* Loadable segment */ - prot = __elfN(trans_prot)(phdr[i].p_flags); - error = __elfN(load_section)(imgp, phdr[i].p_offset, - (caddr_t)(uintptr_t)phdr[i].p_vaddr + rbase, - phdr[i].p_memsz, phdr[i].p_filesz, prot); - if (error != 0) - goto fail; - /* - * Establish the base address if this is the - * first segment. - */ - if (numsegs == 0) - base_addr = trunc_page(phdr[i].p_vaddr + - rbase); - numsegs++; - } - } + error = __elfN(load_sections)(imgp, hdr, phdr, rbase, &base_addr); + if (error != 0) + goto fail; + *addr = base_addr; *entry = (unsigned long)hdr->e_entry + rbase; @@ -998,7 +1021,6 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *i char *interp; Elf_Brandinfo *brand_info; struct sysentvec *sv; - vm_prot_t prot; u_long addr, baddr, et_dyn_addr, entry, proghdr; u_long maxalign, mapsz, maxv, maxv1; uint32_t fctl0; @@ -1055,6 +1077,17 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *i maxalign = phdr[i].p_align; mapsz += phdr[i].p_memsz; n++; + + /* + * If this segment contains the program headers, + * remember their virtual address for the AT_PHDR + * aux entry. Static binaries don't usually include + * a PT_PHDR entry. + */ + if (phdr[i].p_offset == 0 && + hdr->e_phoff + hdr->e_phnum * hdr->e_phentsize + <= phdr[i].p_filesz) + proghdr = phdr[i].p_vaddr + hdr->e_phoff; break; case PT_INTERP: /* Path to interpreter */ @@ -1074,6 +1107,9 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *i __elfN(trans_prot)(phdr[i].p_flags); imgp->stack_sz = phdr[i].p_memsz; break; + case PT_PHDR: /* Program header table info */ + proghdr = phdr[i].p_vaddr; + break; } } @@ -1174,38 +1210,10 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *i if (error != 0) goto ret; - for (i = 0; i < hdr->e_phnum; i++) { - switch (phdr[i].p_type) { - case PT_LOAD: /* Loadable segment */ - if (phdr[i].p_memsz == 0) - break; - prot = __elfN(trans_prot)(phdr[i].p_flags); - error = __elfN(load_section)(imgp, phdr[i].p_offset, - (caddr_t)(uintptr_t)phdr[i].p_vaddr + et_dyn_addr, - phdr[i].p_memsz, phdr[i].p_filesz, prot); - if (error != 0) - goto ret; + error = __elfN(load_sections)(imgp, hdr, phdr, et_dyn_addr, NULL); + if (error != 0) + goto ret; - /* - * If this segment contains the program headers, - * remember their virtual address for the AT_PHDR - * aux entry. Static binaries don't usually include - * a PT_PHDR entry. - */ - if (phdr[i].p_offset == 0 && - hdr->e_phoff + hdr->e_phnum * hdr->e_phentsize - <= phdr[i].p_filesz) - proghdr = phdr[i].p_vaddr + hdr->e_phoff + - et_dyn_addr; - break; - case PT_PHDR: /* Program header table info */ - proghdr = phdr[i].p_vaddr + et_dyn_addr; - break; - default: - break; - } - } - error = __elfN(enforce_limits)(imgp, hdr, phdr, et_dyn_addr); if (error != 0) goto ret; @@ -1253,7 +1261,7 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *i */ elf_auxargs = malloc(sizeof(Elf_Auxargs), M_TEMP, M_WAITOK); elf_auxargs->execfd = -1; - elf_auxargs->phdr = proghdr; + elf_auxargs->phdr = proghdr + et_dyn_addr; elf_auxargs->phent = hdr->e_phentsize; elf_auxargs->phnum = hdr->e_phnum; elf_auxargs->pagesz = PAGE_SIZE; Modified: projects/runtime-coverage-v2/tests/sys/geom/class/eli/online_resize_test.sh ============================================================================== --- projects/runtime-coverage-v2/tests/sys/geom/class/eli/online_resize_test.sh Tue Apr 9 16:20:36 2019 (r346057) +++ projects/runtime-coverage-v2/tests/sys/geom/class/eli/online_resize_test.sh Tue Apr 9 16:31:30 2019 (r346058) @@ -172,22 +172,18 @@ online_resize_body() atf_check -s exit:0 -o match:'^Flags: .*AUTORESIZE' geli list ${md}p1.eli atf_check -s exit:0 -o match:resized gpart resize -i 1 -s 30${prefix} ${md} atf_check -s exit:0 -o match:"^[[:space:]]${osize30}[[:space:]]+# mediasize in bytes" diskinfo -v ${md}p1.eli - atf_check geli detach ${md}p1.eli - - # Cleanup. - atf_check -s exit:0 -o match:deleted gpart delete -i 1 ${md} - atf_check -s exit:0 -o match:destroyed gpart destroy ${md} - atf_check -s exit:0 -o ignore mdconfig -d -u ${md} done } online_resize_cleanup() { if [ -f "$TEST_MDS_FILE" ]; then while read md; do - [ -c /dev/${md}p1.eli ] && geli detach ${md}p1.eli - mdconfig -d -u ${md} 2>/dev/null + atf_check -s ignore -e ignore -o ignore geli detach ${md}p1.eli + atf_check -s ignore -e ignore -o ignore gpart delete -i 1 ${md} + atf_check -s ignore -e ignore -o ignore gpart destroy ${md} done < $TEST_MDS_FILE fi + geli_test_cleanup } atf_init_test_cases() Modified: projects/runtime-coverage-v2/tools/tools/ioat/ioatcontrol.c ============================================================================== --- projects/runtime-coverage-v2/tools/tools/ioat/ioatcontrol.c Tue Apr 9 16:20:36 2019 (r346057) +++ projects/runtime-coverage-v2/tools/tools/ioat/ioatcontrol.c Tue Apr 9 16:31:30 2019 (r346058) @@ -49,7 +49,7 @@ static void usage(void) { - printf("Usage: %s [-c period] [-EfmVz] channel-number num-txns [ " + printf("Usage: %s [-c period] [-EefmVxXz] channel-number num-txns [ " "[ [duration]]]\n", getprogname()); printf(" %s -r [-c period] [-vVwz] channel-number address []\n\n", getprogname()); @@ -154,9 +154,11 @@ main(int argc, char **argv) break; case 'x': xflag = true; + modeflags++; break; case 'X': Xflag = true; + modeflags++; break; case 'z': t.zero_stats = true; @@ -172,7 +174,7 @@ main(int argc, char **argv) usage(); if (modeflags > 1) { - printf("Invalid: Cannot use >1 mode flag (-E, -f, -m, or -r)\n"); + printf("Invalid: Cannot use >1 mode flag (-E, -e, -f, -m, -r, -x or -X)\n"); usage(); } @@ -191,7 +193,7 @@ main(int argc, char **argv) t.testkind = IOAT_TEST_MEMCPY; else if (xflag) t.testkind = IOAT_TEST_DMA_CRC; - else if (xflag) + else if (Xflag) t.testkind = IOAT_TEST_DMA_CRC_COPY; t.channel_index = atoi(argv[0]); From owner-svn-src-projects@freebsd.org Tue Sep 3 14:06:29 2019 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 6F1E0DC9FF for ; Tue, 3 Sep 2019 14:06:29 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46N7zS234zz4Pb5; Tue, 3 Sep 2019 14:06:28 +0000 (UTC) (envelope-from yuripv@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1452) id 19FF21A6FA; Tue, 3 Sep 2019 14:06:09 +0000 (UTC) X-Original-To: yuripv@localmail.freebsd.org Delivered-To: yuripv@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [96.47.72.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id 61F1A104D8; Mon, 8 Apr 2019 22:57:44 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 664AB8FA07; Mon, 8 Apr 2019 22:57:43 +0000 (UTC) (envelope-from owner-src-committers@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 538) id 1D183104B9; Mon, 8 Apr 2019 22:57:43 +0000 (UTC) Delivered-To: src-committers@localmail.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client CN "mx1.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by freefall.freebsd.org (Postfix) with ESMTPS id B73EF104B4 for ; Mon, 8 Apr 2019 22:57:40 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 622238F9FE; Mon, 8 Apr 2019 22:57:40 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 1B29F21B5; Mon, 8 Apr 2019 22:57:40 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x38Mvdcf097806; Mon, 8 Apr 2019 22:57:39 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x38Mvbem097796; Mon, 8 Apr 2019 22:57:37 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201904082257.x38Mvbem097796@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Enji Cooper To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r346044 - in projects/runtime-coverage-v2: . contrib/bsnmp/lib contrib/elftoolchain/strings contrib/libxo contrib/libxo/doc contrib/libxo/libxo contrib/libxo/tests/core contrib/libxo/te... X-SVN-Group: projects X-SVN-Commit-Author: ngie X-SVN-Commit-Paths: in projects/runtime-coverage-v2: . contrib/bsnmp/lib contrib/elftoolchain/strings contrib/libxo contrib/libxo/doc contrib/libxo/libxo contrib/libxo/tests/core contrib/libxo/tests/core/saved contrib/li... X-SVN-Commit-Revision: 346044 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk X-Loop: FreeBSD.org Sender: owner-src-committers@freebsd.org X-Rspamd-Queue-Id: 664AB8FA07 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.97 / 15.00]; local_wl_from(0.00)[freebsd.org]; NEURAL_HAM_MEDIUM(-1.00)[-0.996,0]; NEURAL_HAM_SHORT(-0.98)[-0.978,0]; ASN(0.00)[asn:11403, ipnet:96.47.64.0/20, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] Status: O X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Date: Tue, 03 Sep 2019 14:06:29 -0000 X-Original-Date: Mon, 8 Apr 2019 22:57:37 +0000 (UTC) X-List-Received-Date: Tue, 03 Sep 2019 14:06:29 -0000 Author: ngie Date: Mon Apr 8 22:57:36 2019 New Revision: 346044 URL: https://svnweb.freebsd.org/changeset/base/346044 Log: MFhead@r346043 Added: projects/runtime-coverage-v2/contrib/libxo/libxo/xo_explicit.h - copied unchanged from r346043, head/contrib/libxo/libxo/xo_explicit.h projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.H.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.H.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.H.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.H.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.HIPx.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.HIPx.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.HIPx.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.HIPx.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.HP.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.HP.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.HP.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.HP.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.J.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.J.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.J.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.J.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.JP.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.JP.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.JP.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.JP.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.T.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.T.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.T.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.T.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.X.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.X.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.X.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.X.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.XP.err - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.XP.err projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_02.XP.out - copied unchanged from r346043, head/contrib/libxo/tests/xo/saved/xo_02.XP.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/xo_02.sh - copied unchanged from r346043, head/contrib/libxo/tests/xo/xo_02.sh projects/runtime-coverage-v2/lib/libsecureboot/pass_manifest.c - copied unchanged from r346043, head/lib/libsecureboot/pass_manifest.c projects/runtime-coverage-v2/sys/security/mac_veriexec_parser/ - copied from r346043, head/sys/security/mac_veriexec_parser/ projects/runtime-coverage-v2/tests/sys/geom/class/eli/online_resize_test.sh - copied unchanged from r346043, head/tests/sys/geom/class/eli/online_resize_test.sh projects/runtime-coverage-v2/tools/build/options/WITHOUT_LLVM_TARGET_RISCV - copied unchanged from r346043, head/tools/build/options/WITHOUT_LLVM_TARGET_RISCV projects/runtime-coverage-v2/tools/build/options/WITH_LLVM_TARGET_RISCV - copied unchanged from r346043, head/tools/build/options/WITH_LLVM_TARGET_RISCV projects/runtime-coverage-v2/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANFIEST - copied unchanged from r346043, head/tools/build/options/WITH_LOADER_VERIEXEC_PASS_MANFIEST Modified: projects/runtime-coverage-v2/UPDATING projects/runtime-coverage-v2/contrib/bsnmp/lib/snmpclient.c projects/runtime-coverage-v2/contrib/elftoolchain/strings/strings.c projects/runtime-coverage-v2/contrib/libxo/configure.ac projects/runtime-coverage-v2/contrib/libxo/doc/api.rst projects/runtime-coverage-v2/contrib/libxo/doc/libxo-manual.html projects/runtime-coverage-v2/contrib/libxo/doc/xo.rst projects/runtime-coverage-v2/contrib/libxo/libxo/Makefile.am projects/runtime-coverage-v2/contrib/libxo/libxo/libxo.c projects/runtime-coverage-v2/contrib/libxo/libxo/xo.h projects/runtime-coverage-v2/contrib/libxo/libxo/xo_attr.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_buf.h projects/runtime-coverage-v2/contrib/libxo/libxo/xo_emit.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_emit_f.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_finish.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_flush.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_open_container.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_open_list.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_open_marker.3 projects/runtime-coverage-v2/contrib/libxo/libxo/xo_set_writer.3 projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_01.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_02.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_03.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_04.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_05.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_05.JP.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_06.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_07.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_08.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_09.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_10.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_11.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.E.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.E.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.H.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.H.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.HIPx.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.HIPx.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.HP.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.HP.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.J.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.J.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.JP.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.JP.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.T.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.T.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.X.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.X.out projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.XP.err projects/runtime-coverage-v2/contrib/libxo/tests/core/saved/test_12.XP.out projects/runtime-coverage-v2/contrib/libxo/tests/core/test_12.c projects/runtime-coverage-v2/contrib/libxo/tests/gettext/po/pig_latin/strerror.po projects/runtime-coverage-v2/contrib/libxo/tests/gettext/saved/gt_01.J.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/Makefile.am projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.H.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.HIPx.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.HP.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.J.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.JP.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/saved/xo_01.T.out projects/runtime-coverage-v2/contrib/libxo/tests/xo/xo_01.sh projects/runtime-coverage-v2/contrib/libxo/xo/xo.1 projects/runtime-coverage-v2/contrib/libxo/xo/xo.c projects/runtime-coverage-v2/contrib/sqlite3/Makefile.in projects/runtime-coverage-v2/contrib/sqlite3/Makefile.msc projects/runtime-coverage-v2/contrib/sqlite3/aclocal.m4 projects/runtime-coverage-v2/contrib/sqlite3/config.guess projects/runtime-coverage-v2/contrib/sqlite3/config.sub projects/runtime-coverage-v2/contrib/sqlite3/configure projects/runtime-coverage-v2/contrib/sqlite3/configure.ac projects/runtime-coverage-v2/contrib/sqlite3/depcomp projects/runtime-coverage-v2/contrib/sqlite3/install-sh projects/runtime-coverage-v2/contrib/sqlite3/ltmain.sh projects/runtime-coverage-v2/contrib/sqlite3/shell.c projects/runtime-coverage-v2/contrib/sqlite3/sqlite3.c projects/runtime-coverage-v2/contrib/sqlite3/sqlite3.h projects/runtime-coverage-v2/contrib/sqlite3/tea/configure projects/runtime-coverage-v2/contrib/sqlite3/tea/configure.ac projects/runtime-coverage-v2/contrib/sqlite3/tea/generic/tclsqlite3.c projects/runtime-coverage-v2/include/unistd.h projects/runtime-coverage-v2/lib/atf/libatf-c++/tests/Makefile projects/runtime-coverage-v2/lib/atf/libatf-c/tests/Makefile projects/runtime-coverage-v2/lib/clang/include/llvm/Config/AsmParsers.def projects/runtime-coverage-v2/lib/clang/include/llvm/Config/AsmPrinters.def projects/runtime-coverage-v2/lib/clang/include/llvm/Config/Disassemblers.def projects/runtime-coverage-v2/lib/clang/include/llvm/Config/Targets.def projects/runtime-coverage-v2/lib/clang/libllvm/Makefile projects/runtime-coverage-v2/lib/clang/llvm.build.mk projects/runtime-coverage-v2/lib/geom/eli/geli.8 projects/runtime-coverage-v2/lib/geom/eli/geom_eli.c projects/runtime-coverage-v2/lib/libbe/be.c projects/runtime-coverage-v2/lib/libc/net/getnameinfo.c projects/runtime-coverage-v2/lib/libc/sys/Makefile.inc projects/runtime-coverage-v2/lib/libc/sys/Symbol.map projects/runtime-coverage-v2/lib/libc/sys/unlink.2 projects/runtime-coverage-v2/lib/libdevctl/devctl.3 projects/runtime-coverage-v2/lib/libdevctl/devctl.c projects/runtime-coverage-v2/lib/libdevctl/devctl.h projects/runtime-coverage-v2/lib/libsecureboot/Makefile.libsa.inc projects/runtime-coverage-v2/lib/libsecureboot/h/verify_file.h projects/runtime-coverage-v2/lib/libsecureboot/libsecureboot-priv.h projects/runtime-coverage-v2/lib/libsecureboot/verify_file.c projects/runtime-coverage-v2/lib/libutil/pidfile.c projects/runtime-coverage-v2/lib/libvgl/bitmap.c projects/runtime-coverage-v2/lib/libxo/xo_config.h projects/runtime-coverage-v2/libexec/rc/network.subr projects/runtime-coverage-v2/libexec/rc/rc.conf projects/runtime-coverage-v2/libexec/rc/rc.d/abi projects/runtime-coverage-v2/libexec/rc/rc.d/bthidd projects/runtime-coverage-v2/libexec/rc/rc.d/cfumass projects/runtime-coverage-v2/libexec/rc/rc.d/kld projects/runtime-coverage-v2/libexec/rc/rc.d/mdconfig projects/runtime-coverage-v2/libexec/rc/rc.d/mdconfig2 projects/runtime-coverage-v2/libexec/rc/rc.d/mountcritremote projects/runtime-coverage-v2/libexec/rc/rc.d/syscons projects/runtime-coverage-v2/libexec/rc/rc.subr projects/runtime-coverage-v2/release/Makefile.vm projects/runtime-coverage-v2/release/tools/ec2.conf projects/runtime-coverage-v2/release/tools/vmimage.subr projects/runtime-coverage-v2/sbin/bectl/bectl.8 projects/runtime-coverage-v2/sbin/fsck_msdosfs/dir.c projects/runtime-coverage-v2/sbin/fsck_msdosfs/fat.c projects/runtime-coverage-v2/sbin/mount/mount.c projects/runtime-coverage-v2/share/man/man4/intro.4 projects/runtime-coverage-v2/share/man/man5/rc.conf.5 projects/runtime-coverage-v2/share/man/man5/src.conf.5 projects/runtime-coverage-v2/share/mk/src.opts.mk projects/runtime-coverage-v2/stand/common/boot.c projects/runtime-coverage-v2/stand/common/module.c projects/runtime-coverage-v2/stand/efi/loader/main.c projects/runtime-coverage-v2/stand/loader.mk projects/runtime-coverage-v2/sys/amd64/conf/NOTES projects/runtime-coverage-v2/sys/amd64/vmm/io/ppt.c projects/runtime-coverage-v2/sys/arm/ti/cpsw/if_cpsw.c projects/runtime-coverage-v2/sys/cam/ata/ata_all.c projects/runtime-coverage-v2/sys/cddl/compat/opensolaris/sys/vnode.h projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/runtime-coverage-v2/sys/compat/cloudabi/cloudabi_file.c projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_syscall.h projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_syscalls.c projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_sysent.c projects/runtime-coverage-v2/sys/compat/freebsd32/freebsd32_systrace_args.c projects/runtime-coverage-v2/sys/compat/freebsd32/syscalls.master projects/runtime-coverage-v2/sys/compat/linux/linux_file.c projects/runtime-coverage-v2/sys/compat/linuxkpi/common/include/linux/etherdevice.h projects/runtime-coverage-v2/sys/compat/linuxkpi/common/include/linux/random.h projects/runtime-coverage-v2/sys/conf/files projects/runtime-coverage-v2/sys/conf/newvers.sh projects/runtime-coverage-v2/sys/contrib/dev/acpica/changes.txt projects/runtime-coverage-v2/sys/contrib/dev/acpica/common/adisasm.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslcodegen.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslcompile.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asldefine.h projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslerror.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslfileio.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslfiles.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslglobal.h projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asllisting.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslload.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslmain.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslmessages.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslmessages.h projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asloperands.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asloptions.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslstartup.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslsupport.l projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asltree.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/asltypes.h projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslutils.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/aslxref.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/dtcompile.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/compiler/prutils.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/components/events/evgpe.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/components/namespace/nsalloc.c projects/runtime-coverage-v2/sys/contrib/dev/acpica/include/acpixf.h projects/runtime-coverage-v2/sys/dev/fdt/fdt_common.c projects/runtime-coverage-v2/sys/dev/iicbus/twsi/a10_twsi.c projects/runtime-coverage-v2/sys/dev/iicbus/twsi/twsi.c projects/runtime-coverage-v2/sys/dev/iicbus/twsi/twsi.h projects/runtime-coverage-v2/sys/dev/pci/pci.c projects/runtime-coverage-v2/sys/dev/pci/pci_pci.c projects/runtime-coverage-v2/sys/dev/pci/pcivar.h projects/runtime-coverage-v2/sys/dev/smartpqi/smartpqi_cam.c projects/runtime-coverage-v2/sys/dev/smartpqi/smartpqi_defines.h projects/runtime-coverage-v2/sys/dev/tpm/tpm20.c projects/runtime-coverage-v2/sys/dev/usb/net/if_muge.c projects/runtime-coverage-v2/sys/dev/usb/net/if_urereg.h projects/runtime-coverage-v2/sys/fs/fuse/fuse_vfsops.c projects/runtime-coverage-v2/sys/fs/msdosfs/msdosfs_denode.c projects/runtime-coverage-v2/sys/fs/nfs/nfs.h projects/runtime-coverage-v2/sys/fs/nfs/nfs_commonkrpc.c projects/runtime-coverage-v2/sys/fs/nfs/nfs_commonport.c projects/runtime-coverage-v2/sys/fs/nfs/nfs_commonsubs.c projects/runtime-coverage-v2/sys/fs/nfs/nfs_var.h projects/runtime-coverage-v2/sys/fs/nfsclient/nfs_clport.c projects/runtime-coverage-v2/sys/geom/eli/g_eli.c projects/runtime-coverage-v2/sys/geom/eli/g_eli.h projects/runtime-coverage-v2/sys/geom/eli/g_eli_ctl.c projects/runtime-coverage-v2/sys/geom/eli/g_eli_key_cache.c projects/runtime-coverage-v2/sys/i386/conf/NOTES projects/runtime-coverage-v2/sys/kern/bus_if.m projects/runtime-coverage-v2/sys/kern/capabilities.conf projects/runtime-coverage-v2/sys/kern/imgact_elf.c projects/runtime-coverage-v2/sys/kern/init_sysent.c projects/runtime-coverage-v2/sys/kern/kern_exit.c projects/runtime-coverage-v2/sys/kern/subr_bus.c projects/runtime-coverage-v2/sys/kern/subr_pctrie.c projects/runtime-coverage-v2/sys/kern/syscalls.c projects/runtime-coverage-v2/sys/kern/syscalls.master projects/runtime-coverage-v2/sys/kern/systrace_args.c projects/runtime-coverage-v2/sys/kern/vfs_mountroot.c projects/runtime-coverage-v2/sys/kern/vfs_syscalls.c projects/runtime-coverage-v2/sys/kern/vfs_vnops.c projects/runtime-coverage-v2/sys/modules/geom/geom_label/Makefile projects/runtime-coverage-v2/sys/net/if_spppsubr.c projects/runtime-coverage-v2/sys/netinet/in.c projects/runtime-coverage-v2/sys/netinet/ip_input.c projects/runtime-coverage-v2/sys/netinet/ip_output.c projects/runtime-coverage-v2/sys/netinet/netdump/netdump_client.c projects/runtime-coverage-v2/sys/netinet/tcp_output.c projects/runtime-coverage-v2/sys/netipsec/key.c projects/runtime-coverage-v2/sys/netipsec/key.h projects/runtime-coverage-v2/sys/netipsec/xform_esp.c projects/runtime-coverage-v2/sys/netpfil/ipfw/nat64/nat64_translate.h projects/runtime-coverage-v2/sys/netpfil/pf/pf.c projects/runtime-coverage-v2/sys/powerpc/fpu/fpu_sqrt.c projects/runtime-coverage-v2/sys/powerpc/include/trap.h projects/runtime-coverage-v2/sys/powerpc/powernv/opal.h projects/runtime-coverage-v2/sys/powerpc/powernv/opal_async.c projects/runtime-coverage-v2/sys/powerpc/powernv/opal_flash.c projects/runtime-coverage-v2/sys/powerpc/powerpc/exec_machdep.c projects/runtime-coverage-v2/sys/powerpc/powerpc/trap.c projects/runtime-coverage-v2/sys/riscv/include/pcpu.h projects/runtime-coverage-v2/sys/riscv/riscv/machdep.c projects/runtime-coverage-v2/sys/rpc/rpcsec_gss/svc_rpcsec_gss.c projects/runtime-coverage-v2/sys/sparc64/conf/NOTES projects/runtime-coverage-v2/sys/sys/ata.h projects/runtime-coverage-v2/sys/sys/bus.h projects/runtime-coverage-v2/sys/sys/fcntl.h projects/runtime-coverage-v2/sys/sys/param.h projects/runtime-coverage-v2/sys/sys/pctrie.h projects/runtime-coverage-v2/sys/sys/syscall.h projects/runtime-coverage-v2/sys/sys/syscall.mk projects/runtime-coverage-v2/sys/sys/syscallsubr.h projects/runtime-coverage-v2/sys/sys/sysproto.h projects/runtime-coverage-v2/sys/ufs/ffs/ffs_alloc.c projects/runtime-coverage-v2/sys/ufs/ffs/ffs_vfsops.c projects/runtime-coverage-v2/sys/vm/vm_map.c projects/runtime-coverage-v2/tests/sys/geom/class/eli/Makefile projects/runtime-coverage-v2/tests/sys/geom/class/eli/configure_test.sh projects/runtime-coverage-v2/tests/sys/kern/ptrace_test.c projects/runtime-coverage-v2/tools/build/Makefile projects/runtime-coverage-v2/usr.bin/rctl/rctl.c projects/runtime-coverage-v2/usr.bin/sort/coll.c projects/runtime-coverage-v2/usr.bin/strings/Makefile projects/runtime-coverage-v2/usr.bin/xohtml/xohtml.sh projects/runtime-coverage-v2/usr.sbin/bhyve/Makefile projects/runtime-coverage-v2/usr.sbin/bhyve/pci_nvme.c projects/runtime-coverage-v2/usr.sbin/bhyve/uart_emul.c projects/runtime-coverage-v2/usr.sbin/devctl/devctl.8 projects/runtime-coverage-v2/usr.sbin/devctl/devctl.c projects/runtime-coverage-v2/usr.sbin/nfsuserd/Makefile projects/runtime-coverage-v2/usr.sbin/nfsuserd/nfsuserd.8 projects/runtime-coverage-v2/usr.sbin/nfsuserd/nfsuserd.c projects/runtime-coverage-v2/usr.sbin/vidcontrol/vidcontrol.c Directory Properties: projects/runtime-coverage-v2/ (props changed) projects/runtime-coverage-v2/contrib/elftoolchain/ (props changed) projects/runtime-coverage-v2/contrib/libxo/ (props changed) projects/runtime-coverage-v2/contrib/sqlite3/ (props changed) projects/runtime-coverage-v2/sys/cddl/contrib/opensolaris/ (props changed) projects/runtime-coverage-v2/sys/contrib/dev/acpica/ (props changed) Modified: projects/runtime-coverage-v2/UPDATING ============================================================================== --- projects/runtime-coverage-v2/UPDATING Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/UPDATING Mon Apr 8 22:57:36 2019 (r346044) @@ -31,6 +31,14 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 13.x IS SLOW: disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20190404: + r345895 reverts r320698. This implies that an nfsuserd(8) daemon + built from head sources between r320757 (July 6, 2017) and + r338192 (Aug. 22, 2018) will not work unless the "-use-udpsock" + is added to the command line. + nfsuserd daemons built from head sources that are post-r338192 are + not affected and should continue to work. + 20190320: The fuse(4) module has been renamed to fusefs(4) for consistency with other filesystems. You should update any kld_load="fuse" entries in Modified: projects/runtime-coverage-v2/contrib/bsnmp/lib/snmpclient.c ============================================================================== --- projects/runtime-coverage-v2/contrib/bsnmp/lib/snmpclient.c Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/bsnmp/lib/snmpclient.c Mon Apr 8 22:57:36 2019 (r346044) @@ -1874,38 +1874,47 @@ snmp_client_set_port(struct snmp_client *cl, const cha return (0); } +static const char *const trans_list[] = { + [SNMP_TRANS_UDP] = "udp::", + [SNMP_TRANS_LOC_DGRAM] = "dgram::", + [SNMP_TRANS_LOC_STREAM] = "stream::", + [SNMP_TRANS_UDP6] = "udp6::", +}; + /** * Try to get a transport identifier which is a leading alphanumeric string - * (starting with '_' or a letter and including also '_') terminated by - * a double colon. The string may not be empty. The transport identifier - * is optional. + * terminated by a double colon. The string may not be empty. The transport + * identifier is optional. * * \param sc client struct to set errors * \param strp possible start of transport; updated to point to * the next character to parse * - * \return end of transport; equals *strp if there is none; NULL if there - * was an error + * \return transport identifier */ -static inline const char * +static inline int get_transp(struct snmp_client *sc, const char **strp) { - const char *p = *strp; + const char *p; + size_t i; - if (isascii(*p) && (isalpha(*p) || *p == '_')) { - p++; - while (isascii(*p) && (isalnum(*p) || *p == '_')) - p++; - if (p[0] == ':' && p[1] == ':') { - *strp = p + 2; - return (p); + for (i = 0; i < nitems(trans_list); i++) { + if (trans_list[i] == NULL || *trans_list[i] == '\0') + continue; + p = strstr(*strp, trans_list[i]); + if (p == *strp) { + *strp += strlen(trans_list[i]); + return ((int)i); } } + + p = *strp; if (p[0] == ':' && p[1] == ':') { seterr(sc, "empty transport specifier"); - return (NULL); + return (-1); } - return (*strp); + /* by default assume UDP */ + return (SNMP_TRANS_UDP); } /** @@ -2143,24 +2152,13 @@ save_str(struct snmp_client *sc, const char *const s[2 int snmp_parse_server(struct snmp_client *sc, const char *str) { -#if DEBUG_PARSE const char *const orig = str; -#endif - - const char *const trans_list[] = { - [SNMP_TRANS_UDP] = "udp", - [SNMP_TRANS_LOC_DGRAM] = "dgram", - [SNMP_TRANS_LOC_STREAM] = "stream", - [SNMP_TRANS_UDP6] = "udp6", - }; - /* parse input */ - const char *const transp[2] = { - str, - get_transp(sc, &str), - }; - if (transp[1] == NULL) + int i, trans = get_transp(sc, &str); + if (trans < 0) return (-1); + /* choose automatically */ + i = orig == str ? -1: trans; const char *const comm[2] = { str, @@ -2206,7 +2204,7 @@ snmp_parse_server(struct snmp_client *sc, const char * } #if DEBUG_PARSE - printf("transp: %zu %zu\n", transp[0] - orig, transp[1] - orig); + printf("transp: %u\n", trans); printf("comm: %zu %zu\n", comm[0] - orig, comm[1] - orig); printf("ipv6: %zu %zu\n", ipv6[0] - orig, ipv6[1] - orig); printf("ipv4: %zu %zu\n", ipv4[0] - orig, ipv4[1] - orig); @@ -2215,69 +2213,73 @@ snmp_parse_server(struct snmp_client *sc, const char * #endif /* analyse and allocate */ - int i = -1; - if (transp[0] != transp[1]) { - for (i = 0; i < (int)nitems(trans_list); i++) { - if (trans_list[i] != NULL && - strlen(trans_list[i]) == (size_t)(transp[1] - - transp[0]) && !strncmp(trans_list[i], transp[0], - transp[1] - transp[0])) - break; - } - - if (i == (int)nitems(trans_list)) { - seterr(sc, "unknown transport specifier '%.*s'", - transp[1] - transp[0], transp[0]); - return (-1); - } - } - char *chost; if (ipv6[0] != ipv6[1]) { if ((chost = save_str(sc, ipv6)) == NULL) return (-1); - if (i == -1) - i = SNMP_TRANS_UDP6; + if (i == -1 || trans == SNMP_TRANS_UDP) + trans = SNMP_TRANS_UDP6; } else if (ipv4[0] != ipv4[1]) { if ((chost = save_str(sc, ipv4)) == NULL) return (-1); if (i == -1) - i = SNMP_TRANS_UDP; + trans = SNMP_TRANS_UDP; } else { if ((chost = save_str(sc, host)) == NULL) return (-1); if (i == -1) { - /* Default transport is UDP unless the host contains - * a slash in which case we default to DGRAM. */ - i = SNMP_TRANS_UDP; + /* + * Default transport is UDP unless the host contains + * a slash in which case we default to DGRAM. + */ for (const char *p = host[0]; p < host[1]; p++) if (*p == '/') { - i = SNMP_TRANS_LOC_DGRAM; + trans = SNMP_TRANS_LOC_DGRAM; break; } } } - char *cport = save_str(sc, port); + char *cport; + + if (port[0] == port[1] && ( + trans == SNMP_TRANS_UDP || trans == SNMP_TRANS_UDP6)) { + /* If port was not specified, use "snmp" name by default */ + cport = strdup("snmp"); + } else + cport = save_str(sc, port); + if (cport == NULL) { free(chost); return (-1); } /* commit */ - sc->trans = i; + sc->trans = trans; + /* + * If community string was specified and it is empty, overwrite it. + * If it was not specified, use default. + */ + if (comm[0] != comm[1] || strrchr(comm[0], '@') != NULL) { + strncpy(sc->read_community, comm[0], comm[1] - comm[0]); + sc->read_community[comm[1] - comm[0]] = '\0'; + strncpy(sc->write_community, comm[0], comm[1] - comm[0]); + sc->write_community[comm[1] - comm[0]] = '\0'; + } - strncpy(sc->read_community, comm[0], comm[1] - comm[0]); - sc->read_community[comm[1] - comm[0]] = '\0'; - strncpy(sc->write_community, comm[0], comm[1] - comm[0]); - sc->write_community[comm[1] - comm[0]] = '\0'; - free(sc->chost); sc->chost = chost; free(sc->cport); sc->cport = cport; +#if DEBUG_PARSE + printf("Committed values:\n"); + printf("trans: %u\n", sc->trans); + printf("comm: '%s'/'%s'\n", sc->read_community, sc->write_community); + printf("host: '%s'\n", sc->chost); + printf("port: '%s'\n", sc->cport); +#endif return (0); } Modified: projects/runtime-coverage-v2/contrib/elftoolchain/strings/strings.c ============================================================================== --- projects/runtime-coverage-v2/contrib/elftoolchain/strings/strings.c Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/elftoolchain/strings/strings.c Mon Apr 8 22:57:36 2019 (r346044) @@ -25,8 +25,10 @@ */ #include +#include #include +#include #include #include #include @@ -44,6 +46,9 @@ #include #include +#include +#include + #include "_elftc.h" ELFTC_VCSID("$Id: strings.c 3648 2018-11-22 23:26:43Z emaste $"); @@ -85,7 +90,7 @@ static struct option strings_longopts[] = { }; int getcharacter(FILE *, long *); -int handle_file(const char *); +int handle_file(fileargs_t *fa, const char *); int handle_elf(const char *, FILE *); int handle_binary(const char *, FILE *, size_t); int find_strings(const char *, FILE *, off_t, off_t); @@ -99,6 +104,8 @@ void usage(void); int main(int argc, char **argv) { + fileargs_t *fa; + cap_rights_t rights; int ch, rc; rc = 0; @@ -187,27 +194,41 @@ main(int argc, char **argv) argc -= optind; argv += optind; + cap_rights_init(&rights, CAP_READ, CAP_SEEK, CAP_FSTAT, CAP_FCNTL); + fa = fileargs_init(argc, argv, O_RDONLY, 0, &rights); + if (fa == NULL) + err(1, "Unable to initialize casper fileargs"); + + caph_cache_catpages(); + if (caph_limit_stdio() < 0 && caph_enter_casper() < 0) { + fileargs_free(fa); + err(1, "Unable to enter capability mode"); + } + if (min_len == 0) min_len = 4; if (*argv == NULL) rc = find_strings("{standard input}", stdin, 0, 0); else while (*argv != NULL) { - if (handle_file(*argv) != 0) + if (handle_file(fa, *argv) != 0) rc = 1; argv++; } + + fileargs_free(fa); + return (rc); } int -handle_file(const char *name) +handle_file(fileargs_t *fa, const char *name) { FILE *pfile; int rt; if (name == NULL) return (1); - pfile = fopen(name, "rb"); + pfile = fileargs_fopen(fa, name, "rb"); if (pfile == NULL) { warnx("'%s': %s", name, strerror(errno)); return (1); Modified: projects/runtime-coverage-v2/contrib/libxo/configure.ac ============================================================================== --- projects/runtime-coverage-v2/contrib/libxo/configure.ac Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/libxo/configure.ac Mon Apr 8 22:57:36 2019 (r346044) @@ -12,7 +12,7 @@ # AC_PREREQ(2.2) -AC_INIT([libxo], [0.9.0], [phil@juniper.net]) +AC_INIT([libxo], [1.0.2], [phil@juniper.net]) AM_INIT_AUTOMAKE([-Wall -Werror foreign -Wno-portability]) # Support silent build rules. Requires at least automake-1.11. Modified: projects/runtime-coverage-v2/contrib/libxo/doc/api.rst ============================================================================== --- projects/runtime-coverage-v2/contrib/libxo/doc/api.rst Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/libxo/doc/api.rst Mon Apr 8 22:57:36 2019 (r346044) @@ -400,28 +400,28 @@ string, since an inappropriate cast can ruin your day. argument to `xo_emit_hv` points to a variable argument list that can be used to retrieve arguments via `va_arg`. -.. c:function:: int xo_emit (const char *fmt, ...) +.. c:function:: xo_ssize_t xo_emit (const char *fmt, ...) :param fmt: The format string, followed by zero or more arguments :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t -.. c:function:: int xo_emit_h (xo_handle_t *xop, const char *fmt, ...) +.. c:function:: xo_ssize_t xo_emit_h (xo_handle_t *xop, const char *fmt, ...) :param xop: Handle for modify (or NULL for default handle) :type xop: xo_handle_t \* :param fmt: The format string, followed by zero or more arguments :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t -.. c:function:: int xo_emit_hv (xo_handle_t *xop, const char *fmt, va_list vap) +.. c:function:: xo_ssize_t xo_emit_hv (xo_handle_t *xop, const char *fmt, va_list vap) :param xop: Handle for modify (or NULL for default handle) :type xop: xo_handle_t \* :param fmt: The format string :param va_list vap: A set of variadic arguments :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t .. index:: xo_emit_field @@ -434,7 +434,7 @@ scenario where one would otherwise need to compose a f descriptors using `snprintf`. The individual parts of the format descriptor are passed in distinctly. -.. c:function:: int xo_emit_field (const char *rolmod, const char *contents, const char *fmt, const char *efmt, ...) +.. c:function:: xo_ssize_t xo_emit_field (const char *rolmod, const char *contents, const char *fmt, const char *efmt, ...) :param rolmod: A comma-separated list of field roles and field modifiers :type rolmod: const char * @@ -445,7 +445,7 @@ descriptor are passed in distinctly. :param efmt: Encoding format string, followed by additional arguments :type efmt: const char * :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t :: @@ -453,7 +453,7 @@ descriptor are passed in distinctly. xo_emit_field("T", "Host name is ", NULL, NULL); xo_emit_field("V", "host-name", NULL, NULL, host-name); -.. c:function:: int xo_emit_field_h (xo_handle_t *xop, const char *rolmod, const char *contents, const char *fmt, const char *efmt, ...) +.. c:function:: xo_ssize_t xo_emit_field_h (xo_handle_t *xop, const char *rolmod, const char *contents, const char *fmt, const char *efmt, ...) :param xop: Handle for modify (or NULL for default handle) :type xop: xo_handle_t \* @@ -466,9 +466,9 @@ descriptor are passed in distinctly. :param efmt: Encoding format string, followed by additional arguments :type efmt: const char * :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t -.. c:function:: int xo_emit_field_hv (xo_handle_t *xop, const char *rolmod, const char *contents, const char *fmt, const char *efmt, va_list vap) +.. c:function:: xo_ssize_t xo_emit_field_hv (xo_handle_t *xop, const char *rolmod, const char *contents, const char *fmt, const char *efmt, va_list vap) :param xop: Handle for modify (or NULL for default handle) :type xop: xo_handle_t \* @@ -482,7 +482,7 @@ descriptor are passed in distinctly. :type efmt: const char * :param va_list vap: A set of variadic arguments :returns: If XOF_COLUMNS is set, the number of columns used; otherwise the number of bytes emitted - :rtype: int + :rtype: xo_ssize_t .. index:: xo_attr .. _xo_attr: @@ -505,14 +505,14 @@ Since attributes are only emitted in XML, their use sh to meta-data and additional or redundant representations of data already emitted in other form. -.. c:function:: int xo_attr (const char *name, const char *fmt, ...) +.. c:function:: xo_ssize_t xo_attr (const char *name, const char *fmt, ...) :param name: Attribute name :type name: const char * :param fmt: Attribute value, as variadic arguments :type fmt: const char * :returns: -1 for error, or the number of bytes in the formatted attribute value - :rtype: int + :rtype: xo_ssize_t :: @@ -525,7 +525,7 @@ already emitted in other form. 00:14 -.. c:function:: int xo_attr_h (xo_handle_t *xop, const char *name, const char *fmt, ...) +.. c:function:: xo_ssize_t xo_attr_h (xo_handle_t *xop, const char *name, const char *fmt, ...) :param xop: Handle for modify (or NULL for default handle) :type xop: xo_handle_t \* @@ -533,7 +533,7 @@ already emitted in other form. The `xo_attr_h` function follows the conventions of `xo_attr` but adds an explicit libxo handle. -.. c:function:: int xo_attr_hv (xo_handle_t *xop, const char *name, const char *fmt, va_list vap) +.. c:function:: xo_ssize_t xo_attr_hv (xo_handle_t *xop, const char *name, const char *fmt, va_list vap) The `xo_attr_h` function follows the conventions of `xo_attr_h` but replaced the variadic list with a variadic pointer. Modified: projects/runtime-coverage-v2/contrib/libxo/doc/libxo-manual.html ============================================================================== --- projects/runtime-coverage-v2/contrib/libxo/doc/libxo-manual.html Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/libxo/doc/libxo-manual.html Mon Apr 8 22:57:36 2019 (r346044) @@ -515,7 +515,7 @@ li.indline1 { } @top-right { - content: "May 2018"; + content: "April 2019"; } @top-center { @@ -22011,7 +22011,7 @@ jQuery(function ($) { -May 21, 2018 +April 2, 2019

libxo: The Easy Way to Generate text, XML, JSON, and HTML output
libxo-manual

Modified: projects/runtime-coverage-v2/contrib/libxo/doc/xo.rst ============================================================================== --- projects/runtime-coverage-v2/contrib/libxo/doc/xo.rst Mon Apr 8 18:45:41 2019 (r346043) +++ projects/runtime-coverage-v2/contrib/libxo/doc/xo.rst Mon Apr 8 22:57:36 2019 (r346044) @@ -75,7 +75,7 @@ prepend data to the XPath values used for HTML output EXAMPLE; #!/bin/sh xo --open top/data - xo --depth 2 '{tag}' value + xo --depth 2 '{:tag}' value xo --close top/data XML: @@ -90,6 +90,84 @@ prepend data to the XPath values used for HTML output } } +When making partial lines of output (where the format string does not +include a newline), use the `--continuation` option to let secondary +invocations know they are adding data to an existing line. + +When emitting a series of objects, use the `--not-first` option to +ensure that any details from the previous object (e.g. commas in JSON) +are handled correctly. + +Use the `--top-wrap` option to ensure any top-level object details are +handled correctly, e.g. wrap the entire output in a top-level set of +braces for JSON output. + + EXAMPLE; + #!/bin/sh + xo --top-wrap --open top/data + xo --depth 2 'First {:tag} ' value1 + xo --depth 2 --continuation 'and then {:tag}\n' value2 + xo --top-wrap --close top/data + TEXT: + First value1 and then value2 + HTML: +
+
First
+
value1
+
+
and then
+
value2
+
+ XML: + + + value1 + value2 + + + JSON: + { + "top": { + "data": { + "tag": "value1", + "tag": "value2" + } + } + } + +Lists and Instances +------------------- + +A "*list*" is set of one or more instances that appear under the same +parent. The instances contain details about a specific object. One +can think of instances as objects or records. A call is needed to +open and close the list, while a distinct call is needed to open and +close each instance of the list. + +Use the `--open-list` and `--open-instances` to open lists and +instances. Use the `--close-list` and `--close-instances` to close +them. Each of these options take a `name` parameter, providing the +name of the list and instance. + +In the following example, a list named "machine" is created with three +instances: + + opts="--json" + xo $opts --open-list machine + NF= + for name in red green blue; do + xo $opts --depth 1 $NF --open-instance machine + xo $opts --depth 2 "Machine {k:name} has {:memory}\n" $name 55 + xo $opts --depth 1 --close-instance machine + NF=--not-first + done + xo $opts $NF --close-list machine + +The normal `libxo` functions use a state machine to help these +transitions, but since each `xo` command is invoked independent of the +previous calls, the state must be passed in explicitly via these +command line options. + Command Line Options -------------------- @@ -97,15 +175,23 @@ Command Line Options Usage: xo [options] format [fields] --close Close tags for the given path + --close-instance Close an open instance name + --close-list Close an open list name + --continuation OR -C Output belongs on same line as previous output --depth Set the depth for pretty printing --help Display this help text --html OR -H Generate HTML output --json OR -J Generate JSON output --leading-xpath Add a prefix to generated XPaths (HTML) + --not-first Indicate this object is not the first (JSON) --open Open tags for the given path + --open-instance Open an instance given by name + --open-list Open a list given by name + --option -or -O Give formatting options --pretty OR -p Make 'pretty' output (add indent, newlines) --style