From owner-svn-src-stable-9@freebsd.org Mon Jul 20 22:17:12 2015 Return-Path: Delivered-To: svn-src-stable-9@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9C3CE9A71B8; Mon, 20 Jul 2015 22:17:12 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (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 82C5A18B4; Mon, 20 Jul 2015 22:17:12 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.14.9/8.14.9) with ESMTP id t6KMHCdO086508; Mon, 20 Jul 2015 22:17:12 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.14.9/8.14.9/Submit) id t6KMHB5C086506; Mon, 20 Jul 2015 22:17:11 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201507202217.t6KMHB5C086506@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Mon, 20 Jul 2015 22:17:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r285727 - in stable/9: etc usr.bin/quota X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-9@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for only the 9-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jul 2015 22:17:12 -0000 Author: gjb Date: Mon Jul 20 22:17:11 2015 New Revision: 285727 URL: https://svnweb.freebsd.org/changeset/base/285727 Log: MFC r285253 (hrs): - Add IPv6 support in quota(1). While rpc.rquotad has supported PF_INET6 for a long time, quota(1) utility supported only PF_INET. - Clean up confusing changes in f_mntfromname. - Add an entry for rquotad with rpc/udp6 to inetd.conf. PR: 194084 Sponsored by: The FreeBSD Foundation Modified: stable/9/etc/inetd.conf stable/9/usr.bin/quota/quota.c Directory Properties: stable/9/etc/ (props changed) stable/9/usr.bin/ (props changed) Modified: stable/9/etc/inetd.conf ============================================================================== --- stable/9/etc/inetd.conf Mon Jul 20 22:14:55 2015 (r285726) +++ stable/9/etc/inetd.conf Mon Jul 20 22:17:11 2015 (r285727) @@ -68,6 +68,7 @@ #walld/1 dgram rpc/udp wait root /usr/libexec/rpc.rwalld rpc.rwalld #pcnfsd/1-2 dgram rpc/udp wait root /usr/local/libexec/rpc.pcnfsd rpc.pcnfsd #rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad +#rquotad/1 dgram rpc/udp6 wait root /usr/libexec/rpc.rquotad rpc.rquotad #sprayd/1 dgram rpc/udp wait root /usr/libexec/rpc.sprayd rpc.sprayd # # example entry for the optional pop3 server Modified: stable/9/usr.bin/quota/quota.c ============================================================================== --- stable/9/usr.bin/quota/quota.c Mon Jul 20 22:14:55 2015 (r285726) +++ stable/9/usr.bin/quota/quota.c Mon Jul 20 22:17:11 2015 (r285727) @@ -571,7 +571,7 @@ getnfsquota(struct statfs *fst, struct q struct getquota_rslt gq_rslt; struct dqblk *dqp = &qup->dqblk; struct timeval tv; - char *cp; + char *cp, host[NI_MAXHOST]; if (fst->f_flags & MNT_LOCAL) return (0); @@ -585,33 +585,29 @@ getnfsquota(struct statfs *fst, struct q /* * must be some form of "hostname:/path" */ - cp = strchr(fst->f_mntfromname, ':'); + cp = fst->f_mntfromname; + do { + cp = strrchr(cp, ':'); + } while (cp != NULL && *(cp + 1) != '/'); if (cp == NULL) { warnx("cannot find hostname for %s", fst->f_mntfromname); return (0); } + memset(host, 0, sizeof(host)); + memcpy(host, fst->f_mntfromname, cp - fst->f_mntfromname); + host[sizeof(host) - 1] = '\0'; - *cp = '\0'; - if (*(cp+1) != '/') { - *cp = ':'; - return (0); - } - /* Avoid attempting the RPC for special amd(8) filesystems. */ if (strncmp(fst->f_mntfromname, "pid", 3) == 0 && - strchr(fst->f_mntfromname, '@') != NULL) { - *cp = ':'; + strchr(fst->f_mntfromname, '@') != NULL) return (0); - } gq_args.gqa_pathp = cp + 1; gq_args.gqa_uid = id; - if (callaurpc(fst->f_mntfromname, RQUOTAPROG, RQUOTAVERS, + if (callaurpc(host, RQUOTAPROG, RQUOTAVERS, RQUOTAPROC_GETQUOTA, (xdrproc_t)xdr_getquota_args, (char *)&gq_args, - (xdrproc_t)xdr_getquota_rslt, (char *)&gq_rslt) != 0) { - *cp = ':'; + (xdrproc_t)xdr_getquota_rslt, (char *)&gq_rslt) != 0) return (0); - } switch (gq_rslt.status) { case Q_NOQUOTA: @@ -644,13 +640,12 @@ getnfsquota(struct statfs *fst, struct q tv.tv_sec + gq_rslt.getquota_rslt_u.gqr_rquota.rq_btimeleft; dqp->dqb_itime = tv.tv_sec + gq_rslt.getquota_rslt_u.gqr_rquota.rq_ftimeleft; - *cp = ':'; return (1); default: warnx("bad rpc result, host: %s", fst->f_mntfromname); break; } - *cp = ':'; + return (0); } @@ -658,26 +653,17 @@ static int callaurpc(char *host, int prognum, int versnum, int procnum, xdrproc_t inproc, char *in, xdrproc_t outproc, char *out) { - struct sockaddr_in server_addr; enum clnt_stat clnt_stat; - struct hostent *hp; struct timeval timeout, tottimeout; CLIENT *client = NULL; - int sock = RPC_ANYSOCK; - - if ((hp = gethostbyname(host)) == NULL) - return ((int) RPC_UNKNOWNHOST); + + client = clnt_create(host, prognum, versnum, "udp"); + if (client == NULL) + return ((int)rpc_createerr.cf_stat); timeout.tv_usec = 0; timeout.tv_sec = 6; - bcopy(hp->h_addr, &server_addr.sin_addr, - MIN(hp->h_length,(int)sizeof(server_addr.sin_addr))); - server_addr.sin_family = AF_INET; - server_addr.sin_port = 0; - - if ((client = clntudp_create(&server_addr, prognum, - versnum, timeout, &sock)) == NULL) - return ((int) rpc_createerr.cf_stat); + CLNT_CONTROL(client, CLSET_RETRY_TIMEOUT, (char *)(void *)&timeout); client->cl_auth = authunix_create_default(); tottimeout.tv_sec = 25; From owner-svn-src-stable-9@freebsd.org Tue Jul 21 16:53:47 2015 Return-Path: Delivered-To: svn-src-stable-9@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 382989A7E81; Tue, 21 Jul 2015 16:53:47 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (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 0317110AD; Tue, 21 Jul 2015 16:53:47 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.14.9/8.14.9) with ESMTP id t6LGrkgE050635; Tue, 21 Jul 2015 16:53:46 GMT (envelope-from hselasky@FreeBSD.org) Received: (from hselasky@localhost) by repo.freebsd.org (8.14.9/8.14.9/Submit) id t6LGrkJ8050633; Tue, 21 Jul 2015 16:53:46 GMT (envelope-from hselasky@FreeBSD.org) Message-Id: <201507211653.t6LGrkJ8050633@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: hselasky set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky Date: Tue, 21 Jul 2015 16:53:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r285757 - stable/9/sys/ofed/include/linux X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-9@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for only the 9-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2015 16:53:47 -0000 Author: hselasky Date: Tue Jul 21 16:53:45 2015 New Revision: 285757 URL: https://svnweb.freebsd.org/changeset/base/285757 Log: MFC r285088: Fix broken implementation of "kvasprintf()" function by adding missing kmalloc() call. Make function global instead of static inline to fix compiler warnings about passing variable argument lists to inline functions. Sponsored by: Mellanox Technologies Requested by: markj @ Modified: stable/9/sys/ofed/include/linux/device.h stable/9/sys/ofed/include/linux/linux_compat.c Directory Properties: stable/9/sys/ (props changed) Modified: stable/9/sys/ofed/include/linux/device.h ============================================================================== --- stable/9/sys/ofed/include/linux/device.h Tue Jul 21 15:50:14 2015 (r285756) +++ stable/9/sys/ofed/include/linux/device.h Tue Jul 21 16:53:45 2015 (r285757) @@ -416,21 +416,7 @@ static inline int dev_to_node(struct dev return -1; } -static inline char *kvasprintf(gfp_t gfp, const char *fmt, va_list ap) -{ - unsigned int len; - char *p = NULL; - va_list aq; - - va_copy(aq, ap); - len = vsnprintf(NULL, 0, fmt, aq); - va_end(aq); - - vsnprintf(p, len+1, fmt, ap); - - return p; -} - +char *kvasprintf(gfp_t, const char *, va_list); char *kasprintf(gfp_t, const char *, ...); #endif /* _LINUX_DEVICE_H_ */ Modified: stable/9/sys/ofed/include/linux/linux_compat.c ============================================================================== --- stable/9/sys/ofed/include/linux/linux_compat.c Tue Jul 21 15:50:14 2015 (r285756) +++ stable/9/sys/ofed/include/linux/linux_compat.c Tue Jul 21 16:53:45 2015 (r285757) @@ -689,6 +689,23 @@ vunmap(void *addr) kfree(vmmap); } +char * +kvasprintf(gfp_t gfp, const char *fmt, va_list ap) +{ + unsigned int len; + char *p; + va_list aq; + + va_copy(aq, ap); + len = vsnprintf(NULL, 0, fmt, aq); + va_end(aq); + + p = kmalloc(len + 1, gfp); + if (p != NULL) + vsnprintf(p, len + 1, fmt, ap); + + return (p); +} char * kasprintf(gfp_t gfp, const char *fmt, ...) @@ -700,7 +717,7 @@ kasprintf(gfp_t gfp, const char *fmt, .. p = kvasprintf(gfp, fmt, ap); va_end(ap); - return p; + return (p); } static int From owner-svn-src-stable-9@freebsd.org Tue Jul 21 17:19:06 2015 Return-Path: Delivered-To: svn-src-stable-9@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 553A79A7309; Tue, 21 Jul 2015 17:19:06 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (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 320511E5E; Tue, 21 Jul 2015 17:19:06 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.14.9/8.14.9) with ESMTP id t6LHJ6gL059096; Tue, 21 Jul 2015 17:19:06 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.14.9/8.14.9/Submit) id t6LHJ43T059090; Tue, 21 Jul 2015 17:19:04 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201507211719.t6LHJ43T059090@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Tue, 21 Jul 2015 17:19:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r285760 - in stable/9/sys: cddl/dev/lockstat kern sys X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-9@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for only the 9-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2015 17:19:06 -0000 Author: markj Date: Tue Jul 21 17:19:03 2015 New Revision: 285760 URL: https://svnweb.freebsd.org/changeset/base/285760 Log: MFC r285663, r285664, r285667: Ensure that locstat_nsecs() has no effect when lockstat probes are not enabled or when the profiled lock carries the LO_NOPROFILE flag. PR: 201642, 201517 Modified: stable/9/sys/cddl/dev/lockstat/lockstat.c stable/9/sys/kern/kern_lockstat.c stable/9/sys/kern/kern_mutex.c stable/9/sys/kern/kern_rwlock.c stable/9/sys/kern/kern_sx.c stable/9/sys/sys/lockstat.h Directory Properties: stable/9/sys/ (props changed) stable/9/sys/sys/ (props changed) Modified: stable/9/sys/cddl/dev/lockstat/lockstat.c ============================================================================== --- stable/9/sys/cddl/dev/lockstat/lockstat.c Tue Jul 21 17:16:37 2015 (r285759) +++ stable/9/sys/cddl/dev/lockstat/lockstat.c Tue Jul 21 17:19:03 2015 (r285760) @@ -160,6 +160,8 @@ lockstat_enable(void *arg, dtrace_id_t i ASSERT(!lockstat_probemap[probe->lsp_probe]); + lockstat_enabled++; + lockstat_probemap[probe->lsp_probe] = id; #ifdef DOODAD membar_producer(); @@ -183,6 +185,8 @@ lockstat_disable(void *arg, dtrace_id_t ASSERT(lockstat_probemap[probe->lsp_probe]); + lockstat_enabled--; + lockstat_probemap[probe->lsp_probe] = 0; #ifdef DOODAD lockstat_hot_patch(); Modified: stable/9/sys/kern/kern_lockstat.c ============================================================================== --- stable/9/sys/kern/kern_lockstat.c Tue Jul 21 17:16:37 2015 (r285759) +++ stable/9/sys/kern/kern_lockstat.c Tue Jul 21 17:19:03 2015 (r285760) @@ -36,9 +36,10 @@ #ifdef KDTRACE_HOOKS -#include #include +#include #include +#include /* * The following must match the type definition of dtrace_probe. It is @@ -47,14 +48,19 @@ uint32_t lockstat_probemap[LS_NPROBES]; void (*lockstat_probe_func)(uint32_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t); - +int lockstat_enabled = 0; uint64_t -lockstat_nsecs(void) +lockstat_nsecs(struct lock_object *lo) { struct bintime bt; uint64_t ns; + if (!lockstat_enabled) + return (0); + if ((lo->lo_flags & LO_NOPROFILE) != 0) + return (0); + binuptime(&bt); ns = bt.sec * (uint64_t)1000000000; ns += ((uint64_t)1000000000 * (uint32_t)(bt.frac >> 32)) >> 32; Modified: stable/9/sys/kern/kern_mutex.c ============================================================================== --- stable/9/sys/kern/kern_mutex.c Tue Jul 21 17:16:37 2015 (r285759) +++ stable/9/sys/kern/kern_mutex.c Tue Jul 21 17:19:03 2015 (r285760) @@ -381,7 +381,7 @@ _mtx_lock_sleep(struct mtx *m, uintptr_t "_mtx_lock_sleep: %s contested (lock=%p) at %s:%d", m->lock_object.lo_name, (void *)m->mtx_lock, file, line); #ifdef KDTRACE_HOOKS - all_time -= lockstat_nsecs(); + all_time -= lockstat_nsecs(&m->lock_object); #endif while (!_mtx_obtain_lock(m, tid)) { @@ -471,16 +471,16 @@ _mtx_lock_sleep(struct mtx *m, uintptr_t * Block on the turnstile. */ #ifdef KDTRACE_HOOKS - sleep_time -= lockstat_nsecs(); + sleep_time -= lockstat_nsecs(&m->lock_object); #endif turnstile_wait(ts, mtx_owner(m), TS_EXCLUSIVE_QUEUE); #ifdef KDTRACE_HOOKS - sleep_time += lockstat_nsecs(); + sleep_time += lockstat_nsecs(&m->lock_object); sleep_cnt++; #endif } #ifdef KDTRACE_HOOKS - all_time += lockstat_nsecs(); + all_time += lockstat_nsecs(&m->lock_object); #endif #ifdef KTR if (cont_logged) { @@ -553,7 +553,7 @@ _mtx_lock_spin(struct mtx *m, uintptr_t #endif lock_profile_obtain_lock_failed(&m->lock_object, &contested, &waittime); #ifdef KDTRACE_HOOKS - spin_time -= lockstat_nsecs(); + spin_time -= lockstat_nsecs(&m->lock_object); #endif while (!_mtx_obtain_lock(m, tid)) { @@ -573,7 +573,7 @@ _mtx_lock_spin(struct mtx *m, uintptr_t spinlock_enter(); } #ifdef KDTRACE_HOOKS - spin_time += lockstat_nsecs(); + spin_time += lockstat_nsecs(&m->lock_object); #endif if (LOCK_LOG_TEST(&m->lock_object, opts)) @@ -581,7 +581,10 @@ _mtx_lock_spin(struct mtx *m, uintptr_t LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_MTX_SPIN_LOCK_ACQUIRE, m, contested, waittime, (file), (line)); - LOCKSTAT_RECORD1(LS_MTX_SPIN_LOCK_SPIN, m, spin_time); +#ifdef KDTRACE_HOOKS + if (spin_time != 0) + LOCKSTAT_RECORD1(LS_MTX_SPIN_LOCK_SPIN, m, spin_time); +#endif } #endif /* SMP */ @@ -606,7 +609,7 @@ _thread_lock_flags(struct thread *td, in return; #ifdef KDTRACE_HOOKS - spin_time -= lockstat_nsecs(); + spin_time -= lockstat_nsecs(&td->td_lock->lock_object); #endif for (;;) { retry: @@ -654,7 +657,7 @@ retry: __mtx_unlock_spin(m); /* does spinlock_exit() */ } #ifdef KDTRACE_HOOKS - spin_time += lockstat_nsecs(); + spin_time += lockstat_nsecs(&m->lock_object); #endif if (m->mtx_recurse == 0) LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_MTX_SPIN_LOCK_ACQUIRE, Modified: stable/9/sys/kern/kern_rwlock.c ============================================================================== --- stable/9/sys/kern/kern_rwlock.c Tue Jul 21 17:16:37 2015 (r285759) +++ stable/9/sys/kern/kern_rwlock.c Tue Jul 21 17:19:03 2015 (r285760) @@ -347,7 +347,7 @@ _rw_rlock(struct rwlock *rw, const char WITNESS_CHECKORDER(&rw->lock_object, LOP_NEWORDER, file, line, NULL); #ifdef KDTRACE_HOOKS - all_time -= lockstat_nsecs(); + all_time -= lockstat_nsecs(&rw->lock_object); state = rw->rw_lock; #endif for (;;) { @@ -488,11 +488,11 @@ _rw_rlock(struct rwlock *rw, const char CTR2(KTR_LOCK, "%s: %p blocking on turnstile", __func__, rw); #ifdef KDTRACE_HOOKS - sleep_time -= lockstat_nsecs(); + sleep_time -= lockstat_nsecs(&rw->lock_object); #endif turnstile_wait(ts, rw_owner(rw), TS_SHARED_QUEUE); #ifdef KDTRACE_HOOKS - sleep_time += lockstat_nsecs(); + sleep_time += lockstat_nsecs(&rw->lock_object); sleep_cnt++; #endif if (LOCK_LOG_TEST(&rw->lock_object, 0)) @@ -500,7 +500,7 @@ _rw_rlock(struct rwlock *rw, const char __func__, rw); } #ifdef KDTRACE_HOOKS - all_time += lockstat_nsecs(); + all_time += lockstat_nsecs(&rw->lock_object); if (sleep_time) LOCKSTAT_RECORD4(LS_RW_RLOCK_BLOCK, rw, sleep_time, LOCKSTAT_READER, (state & RW_LOCK_READ) == 0, @@ -713,7 +713,7 @@ _rw_wlock_hard(struct rwlock *rw, uintpt rw->lock_object.lo_name, (void *)rw->rw_lock, file, line); #ifdef KDTRACE_HOOKS - all_time -= lockstat_nsecs(); + all_time -= lockstat_nsecs(&rw->lock_object); state = rw->rw_lock; #endif while (!_rw_write_lock(rw, tid)) { @@ -829,11 +829,11 @@ _rw_wlock_hard(struct rwlock *rw, uintpt CTR2(KTR_LOCK, "%s: %p blocking on turnstile", __func__, rw); #ifdef KDTRACE_HOOKS - sleep_time -= lockstat_nsecs(); + sleep_time -= lockstat_nsecs(&rw->lock_object); #endif turnstile_wait(ts, rw_owner(rw), TS_EXCLUSIVE_QUEUE); #ifdef KDTRACE_HOOKS - sleep_time += lockstat_nsecs(); + sleep_time += lockstat_nsecs(&rw->lock_object); sleep_cnt++; #endif if (LOCK_LOG_TEST(&rw->lock_object, 0)) @@ -844,7 +844,7 @@ _rw_wlock_hard(struct rwlock *rw, uintpt #endif } #ifdef KDTRACE_HOOKS - all_time += lockstat_nsecs(); + all_time += lockstat_nsecs(&rw->lock_object); if (sleep_time) LOCKSTAT_RECORD4(LS_RW_WLOCK_BLOCK, rw, sleep_time, LOCKSTAT_WRITER, (state & RW_LOCK_READ) == 0, Modified: stable/9/sys/kern/kern_sx.c ============================================================================== --- stable/9/sys/kern/kern_sx.c Tue Jul 21 17:16:37 2015 (r285759) +++ stable/9/sys/kern/kern_sx.c Tue Jul 21 17:19:03 2015 (r285760) @@ -540,7 +540,7 @@ _sx_xlock_hard(struct sx *sx, uintptr_t sx->lock_object.lo_name, (void *)sx->sx_lock, file, line); #ifdef KDTRACE_HOOKS - all_time -= lockstat_nsecs(); + all_time -= lockstat_nsecs(&sx->lock_object); state = sx->sx_lock; #endif while (!atomic_cmpset_acq_ptr(&sx->sx_lock, SX_LOCK_UNLOCKED, tid)) { @@ -679,7 +679,7 @@ _sx_xlock_hard(struct sx *sx, uintptr_t __func__, sx); #ifdef KDTRACE_HOOKS - sleep_time -= lockstat_nsecs(); + sleep_time -= lockstat_nsecs(&sx->lock_object); #endif GIANT_SAVE(); sleepq_add(&sx->lock_object, NULL, sx->lock_object.lo_name, @@ -690,7 +690,7 @@ _sx_xlock_hard(struct sx *sx, uintptr_t else error = sleepq_wait_sig(&sx->lock_object, 0); #ifdef KDTRACE_HOOKS - sleep_time += lockstat_nsecs(); + sleep_time += lockstat_nsecs(&sx->lock_object); sleep_cnt++; #endif if (error) { @@ -705,7 +705,7 @@ _sx_xlock_hard(struct sx *sx, uintptr_t __func__, sx); } #ifdef KDTRACE_HOOKS - all_time += lockstat_nsecs(); + all_time += lockstat_nsecs(&sx->lock_object); if (sleep_time) LOCKSTAT_RECORD4(LS_SX_XLOCK_BLOCK, sx, sleep_time, LOCKSTAT_WRITER, (state & SX_LOCK_SHARED) == 0, @@ -816,7 +816,7 @@ _sx_slock_hard(struct sx *sx, int opts, #ifdef KDTRACE_HOOKS state = sx->sx_lock; - all_time -= lockstat_nsecs(); + all_time -= lockstat_nsecs(&sx->lock_object); #endif /* @@ -938,7 +938,7 @@ _sx_slock_hard(struct sx *sx, int opts, __func__, sx); #ifdef KDTRACE_HOOKS - sleep_time -= lockstat_nsecs(); + sleep_time -= lockstat_nsecs(&sx->lock_object); #endif GIANT_SAVE(); sleepq_add(&sx->lock_object, NULL, sx->lock_object.lo_name, @@ -949,7 +949,7 @@ _sx_slock_hard(struct sx *sx, int opts, else error = sleepq_wait_sig(&sx->lock_object, 0); #ifdef KDTRACE_HOOKS - sleep_time += lockstat_nsecs(); + sleep_time += lockstat_nsecs(&sx->lock_object); sleep_cnt++; #endif if (error) { @@ -964,7 +964,7 @@ _sx_slock_hard(struct sx *sx, int opts, __func__, sx); } #ifdef KDTRACE_HOOKS - all_time += lockstat_nsecs(); + all_time += lockstat_nsecs(&sx->lock_object); if (sleep_time) LOCKSTAT_RECORD4(LS_SX_SLOCK_BLOCK, sx, sleep_time, LOCKSTAT_READER, (state & SX_LOCK_SHARED) == 0, Modified: stable/9/sys/sys/lockstat.h ============================================================================== --- stable/9/sys/sys/lockstat.h Tue Jul 21 17:16:37 2015 (r285759) +++ stable/9/sys/sys/lockstat.h Tue Jul 21 17:19:03 2015 (r285760) @@ -149,11 +149,13 @@ * The following must match the type definition of dtrace_probe. It is * defined this way to avoid having to rely on CDDL code. */ +struct lock_object; extern uint32_t lockstat_probemap[LS_NPROBES]; typedef void (*lockstat_probe_func_t)(uint32_t, uintptr_t arg0, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4); extern lockstat_probe_func_t lockstat_probe_func; -extern uint64_t lockstat_nsecs(void); +extern uint64_t lockstat_nsecs(struct lock_object *); +extern int lockstat_enabled; #ifdef KDTRACE_HOOKS /* From owner-svn-src-stable-9@freebsd.org Tue Jul 21 18:54:40 2015 Return-Path: Delivered-To: svn-src-stable-9@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 088AC9A73CB; Tue, 21 Jul 2015 18:54:40 +0000 (UTC) (envelope-from vangyzen@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (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 DA59A1C01; Tue, 21 Jul 2015 18:54:39 +0000 (UTC) (envelope-from vangyzen@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.14.9/8.14.9) with ESMTP id t6LIsd5D001366; Tue, 21 Jul 2015 18:54:39 GMT (envelope-from vangyzen@FreeBSD.org) Received: (from vangyzen@localhost) by repo.freebsd.org (8.14.9/8.14.9/Submit) id t6LIsdTh001365; Tue, 21 Jul 2015 18:54:39 GMT (envelope-from vangyzen@FreeBSD.org) Message-Id: <201507211854.t6LIsdTh001365@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: vangyzen set sender to vangyzen@FreeBSD.org using -f From: Eric van Gyzen Date: Tue, 21 Jul 2015 18:54:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r285763 - stable/9/crypto/openssh X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-9@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for only the 9-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2015 18:54:40 -0000 Author: vangyzen Date: Tue Jul 21 18:54:38 2015 New Revision: 285763 URL: https://svnweb.freebsd.org/changeset/base/285763 Log: MFC r285642 ssh: canonicize the host name before looking it up in the host file Re-apply r99054 by des in 2002. This was accidentally dropped by the update to OpenSSH 6.5p1 (r261320). This change is actually taken from r387082 of ports/security/openssh-portable/files/patch-ssh.c Differential Revision: https://reviews.freebsd.org/D3103 PR: 198043 Approved by: kib (mentor) Sponsored by: Dell Inc. Relnotes: yes Modified: stable/9/crypto/openssh/ssh.c Directory Properties: stable/9/crypto/openssh/ (props changed) Modified: stable/9/crypto/openssh/ssh.c ============================================================================== --- stable/9/crypto/openssh/ssh.c Tue Jul 21 18:38:31 2015 (r285762) +++ stable/9/crypto/openssh/ssh.c Tue Jul 21 18:54:38 2015 (r285763) @@ -1001,6 +1001,23 @@ main(int ac, char **av) shorthost[strcspn(thishost, ".")] = '\0'; snprintf(portstr, sizeof(portstr), "%d", options.port); + /* Find canonic host name. */ + if (strchr(host, '.') == 0) { + struct addrinfo hints; + struct addrinfo *ai = NULL; + int errgai; + memset(&hints, 0, sizeof(hints)); + hints.ai_family = options.address_family; + hints.ai_flags = AI_CANONNAME; + hints.ai_socktype = SOCK_STREAM; + errgai = getaddrinfo(host, NULL, &hints, &ai); + if (errgai == 0) { + if (ai->ai_canonname != NULL) + host = xstrdup(ai->ai_canonname); + freeaddrinfo(ai); + } + } + if (options.local_command != NULL) { debug3("expanding LocalCommand: %s", options.local_command); cp = options.local_command; From owner-svn-src-stable-9@freebsd.org Tue Jul 21 23:42:21 2015 Return-Path: Delivered-To: svn-src-stable-9@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7CFA19A7DFF; Tue, 21 Jul 2015 23:42:21 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (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 568FC14BE; Tue, 21 Jul 2015 23:42:21 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.14.9/8.14.9) with ESMTP id t6LNgLVh019284; Tue, 21 Jul 2015 23:42:21 GMT (envelope-from delphij@FreeBSD.org) Received: (from delphij@localhost) by repo.freebsd.org (8.14.9/8.14.9/Submit) id t6LNgLWa019283; Tue, 21 Jul 2015 23:42:21 GMT (envelope-from delphij@FreeBSD.org) Message-Id: <201507212342.t6LNgLWa019283@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: delphij set sender to delphij@FreeBSD.org using -f From: Xin LI Date: Tue, 21 Jul 2015 23:42:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r285779 - in stable: 8/sys/netinet 9/sys/netinet X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-9@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for only the 9-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Jul 2015 23:42:21 -0000 Author: delphij Date: Tue Jul 21 23:42:20 2015 New Revision: 285779 URL: https://svnweb.freebsd.org/changeset/base/285779 Log: Fix resource exhaustion due to sessions stuck in LAST_ACK state. Security: CVE-2015-5358 Security: SA-15:13.tcp Submitted by: Jonathan Looney (Juniper SIRT) Reviewed by: lstewart Modified: stable/9/sys/netinet/tcp_output.c Changes in other areas also in this revision: Modified: stable/8/sys/netinet/tcp_output.c Modified: stable/9/sys/netinet/tcp_output.c ============================================================================== --- stable/9/sys/netinet/tcp_output.c Tue Jul 21 23:42:17 2015 (r285778) +++ stable/9/sys/netinet/tcp_output.c Tue Jul 21 23:42:20 2015 (r285779) @@ -397,7 +397,7 @@ after_sack_rexmit: flags &= ~TH_FIN; } - if (len < 0) { + if (len <= 0) { /* * If FIN has been sent but not acked, * but we haven't been called to retransmit, @@ -407,9 +407,16 @@ after_sack_rexmit: * to (closed) window, and set the persist timer * if it isn't already going. If the window didn't * close completely, just wait for an ACK. + * + * We also do a general check here to ensure that + * we will set the persist timer when we have data + * to send, but a 0-byte window. This makes sure + * the persist timer is set even if the packet + * hits one of the "goto send" lines below. */ len = 0; - if (sendwin == 0) { + if ((sendwin == 0) && (TCPS_HAVEESTABLISHED(tp->t_state)) && + (off < (int) so->so_snd.sb_cc)) { tcp_timer_activate(tp, TT_REXMT, 0); tp->t_rxtshift = 0; tp->snd_nxt = tp->snd_una; From owner-svn-src-stable-9@freebsd.org Wed Jul 22 16:38:10 2015 Return-Path: Delivered-To: svn-src-stable-9@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A5B829A756E; Wed, 22 Jul 2015 16:38:10 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (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 95D5714CA; Wed, 22 Jul 2015 16:38:10 +0000 (UTC) (envelope-from gjb@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.14.9/8.14.9) with ESMTP id t6MGcA4e030508; Wed, 22 Jul 2015 16:38:10 GMT (envelope-from gjb@FreeBSD.org) Received: (from gjb@localhost) by repo.freebsd.org (8.14.9/8.14.9/Submit) id t6MGcAqK030507; Wed, 22 Jul 2015 16:38:10 GMT (envelope-from gjb@FreeBSD.org) Message-Id: <201507221638.t6MGcAqK030507@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org using -f From: Glen Barber Date: Wed, 22 Jul 2015 16:38:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r285800 - in stable: 10/release/doc/share/xml 8/release/doc/share/xml 9/release/doc/share/xml X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-9@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for only the 9-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Jul 2015 16:38:10 -0000 Author: gjb Date: Wed Jul 22 16:38:07 2015 New Revision: 285800 URL: https://svnweb.freebsd.org/changeset/base/285800 Log: Document FreeBSD-SA-15:13. Approved by: re (implicit) Sponsored by: The FreeBSD Foundation Modified: stable/9/release/doc/share/xml/security.xml Changes in other areas also in this revision: Modified: stable/10/release/doc/share/xml/security.xml stable/8/release/doc/share/xml/security.xml Modified: stable/9/release/doc/share/xml/security.xml ============================================================================== --- stable/9/release/doc/share/xml/security.xml Wed Jul 22 16:26:17 2015 (r285799) +++ stable/9/release/doc/share/xml/security.xml Wed Jul 22 16:38:07 2015 (r285800) @@ -162,6 +162,14 @@ 7 July 2015 Resolver remote denial of service + + + FreeBSD-SA-15:13.tcp + 21 July 2015 + resource exhaustion due to sessions stuck in + LAST_ACK state. + From owner-svn-src-stable-9@freebsd.org Fri Jul 24 19:26:07 2015 Return-Path: Delivered-To: svn-src-stable-9@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 95E439A9B74; Fri, 24 Jul 2015 19:26:07 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (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 861B71D97; Fri, 24 Jul 2015 19:26:07 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.14.9/8.14.9) with ESMTP id t6OJQ7Zt079763; Fri, 24 Jul 2015 19:26:07 GMT (envelope-from pfg@FreeBSD.org) Received: (from pfg@localhost) by repo.freebsd.org (8.14.9/8.14.9/Submit) id t6OJQ7E2079762; Fri, 24 Jul 2015 19:26:07 GMT (envelope-from pfg@FreeBSD.org) Message-Id: <201507241926.t6OJQ7E2079762@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pfg set sender to pfg@FreeBSD.org using -f From: "Pedro F. Giffuni" Date: Fri, 24 Jul 2015 19:26:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r285852 - stable/9/usr.sbin/bsnmpd/modules/snmp_hostres X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-9@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for only the 9-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jul 2015 19:26:07 -0000 Author: pfg Date: Fri Jul 24 19:26:06 2015 New Revision: 285852 URL: https://svnweb.freebsd.org/changeset/base/285852 Log: MFC r285719: snmp_hostres(3): Fix buffer overflow. Actually just a typo. Detected by gcc + FORTIFY_SOURCE patches. CID: 1007594 Modified: stable/9/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_printer_tbl.c Directory Properties: stable/9/usr.sbin/bsnmpd/ (props changed) stable/9/usr.sbin/bsnmpd/modules/snmp_hostres/ (props changed) Modified: stable/9/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_printer_tbl.c ============================================================================== --- stable/9/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_printer_tbl.c Fri Jul 24 19:21:48 2015 (r285851) +++ stable/9/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_printer_tbl.c Fri Jul 24 19:26:06 2015 (r285852) @@ -175,7 +175,7 @@ get_printer_status(const struct printer goto LABEL_DONE; } - memset(&fline[0], '\0', sizeof(line)); + memset(&fline[0], '\0', sizeof(fline)); if (fgets(fline, sizeof(fline) -1, f) == NULL) { ps = PS_UNKNOWN; goto LABEL_DONE;