From owner-svn-src-head@freebsd.org Mon Feb 3 22:26:01 2020 Return-Path: Delivered-To: svn-src-head@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 A4ECD230A4F; Mon, 3 Feb 2020 22:26:01 +0000 (UTC) (envelope-from mjg@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 48BMqF3xX7z4Cwj; Mon, 3 Feb 2020 22:26:01 +0000 (UTC) (envelope-from mjg@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 8286D7C1E; Mon, 3 Feb 2020 22:26:01 +0000 (UTC) (envelope-from mjg@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 013MQ1uj081412; Mon, 3 Feb 2020 22:26:01 GMT (envelope-from mjg@FreeBSD.org) Received: (from mjg@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 013MQ0lx081409; Mon, 3 Feb 2020 22:26:00 GMT (envelope-from mjg@FreeBSD.org) Message-Id: <202002032226.013MQ0lx081409@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mjg set sender to mjg@FreeBSD.org using -f From: Mateusz Guzik Date: Mon, 3 Feb 2020 22:26:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r357467 - in head/sys: kern sys X-SVN-Group: head X-SVN-Commit-Author: mjg X-SVN-Commit-Paths: in head/sys: kern sys X-SVN-Commit-Revision: 357467 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Feb 2020 22:26:01 -0000 Author: mjg Date: Mon Feb 3 22:26:00 2020 New Revision: 357467 URL: https://svnweb.freebsd.org/changeset/base/357467 Log: ktrace: provide ktrstat_error This eliminates a branch from its consumers trading it for an extra call if ktrace is enabled for curthread. Given that this is almost never true, the tradeoff is worth it. Modified: head/sys/kern/kern_descrip.c head/sys/kern/kern_ktrace.c head/sys/kern/vfs_syscalls.c head/sys/sys/ktrace.h Modified: head/sys/kern/kern_descrip.c ============================================================================== --- head/sys/kern/kern_descrip.c Mon Feb 3 20:48:57 2020 (r357466) +++ head/sys/kern/kern_descrip.c Mon Feb 3 22:26:00 2020 (r357467) @@ -1445,16 +1445,14 @@ kern_fstat(struct thread *td, int fd, struct stat *sbp error = fo_stat(fp, sbp, td->td_ucred, td); fdrop(fp, td); #ifdef __STAT_TIME_T_EXT - if (error == 0) { - sbp->st_atim_ext = 0; - sbp->st_mtim_ext = 0; - sbp->st_ctim_ext = 0; - sbp->st_btim_ext = 0; - } + sbp->st_atim_ext = 0; + sbp->st_mtim_ext = 0; + sbp->st_ctim_ext = 0; + sbp->st_btim_ext = 0; #endif #ifdef KTRACE - if (error == 0 && KTRPOINT(td, KTR_STRUCT)) - ktrstat(sbp); + if (KTRPOINT(td, KTR_STRUCT)) + ktrstat_error(sbp, error); #endif return (error); } Modified: head/sys/kern/kern_ktrace.c ============================================================================== --- head/sys/kern/kern_ktrace.c Mon Feb 3 20:48:57 2020 (r357466) +++ head/sys/kern/kern_ktrace.c Mon Feb 3 22:26:00 2020 (r357467) @@ -779,6 +779,14 @@ ktrstruct(const char *name, const void *data, size_t d } void +ktrstruct_error(const char *name, const void *data, size_t datalen, int error) +{ + + if (error == 0) + ktrstruct(name, data, datalen); +} + +void ktrstructarray(const char *name, enum uio_seg seg, const void *data, int num_items, size_t struct_size) { Modified: head/sys/kern/vfs_syscalls.c ============================================================================== --- head/sys/kern/vfs_syscalls.c Mon Feb 3 20:48:57 2020 (r357466) +++ head/sys/kern/vfs_syscalls.c Mon Feb 3 22:26:00 2020 (r357467) @@ -2349,8 +2349,6 @@ kern_statat(struct thread *td, int flag, int fd, const } NDFREE(&nd, NDF_ONLY_PNBUF); vput(nd.ni_vp); - if (error != 0) - return (error); #ifdef __STAT_TIME_T_EXT sbp->st_atim_ext = 0; sbp->st_mtim_ext = 0; @@ -2359,9 +2357,9 @@ kern_statat(struct thread *td, int flag, int fd, const #endif #ifdef KTRACE if (KTRPOINT(td, KTR_STRUCT)) - ktrstat(sbp); + ktrstat_error(sbp, error); #endif - return (0); + return (error); } #if defined(COMPAT_FREEBSD11) Modified: head/sys/sys/ktrace.h ============================================================================== --- head/sys/sys/ktrace.h Mon Feb 3 20:48:57 2020 (r357466) +++ head/sys/sys/ktrace.h Mon Feb 3 22:26:00 2020 (r357467) @@ -280,6 +280,7 @@ void ktrprocexit(struct thread *); void ktrprocfork(struct proc *, struct proc *); void ktruserret(struct thread *); void ktrstruct(const char *, const void *, size_t); +void ktrstruct_error(const char *, const void *, size_t, int); void ktrstructarray(const char *, enum uio_seg, const void *, int, size_t); void ktrcapfail(enum ktr_cap_fail_type, const cap_rights_t *, const cap_rights_t *); @@ -291,6 +292,8 @@ void ktrcapfail(enum ktr_cap_fail_type, const cap_righ ktrstruct("sockaddr", (s), ((struct sockaddr *)(s))->sa_len) #define ktrstat(s) \ ktrstruct("stat", (s), sizeof(struct stat)) +#define ktrstat_error(s, error) \ + ktrstruct_error("stat", (s), sizeof(struct stat), error) extern u_int ktr_geniosize; #else