From nobody Tue Feb 22 18:56:25 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id BA98C19D49A9; Tue, 22 Feb 2022 18:56:25 +0000 (UTC) (envelope-from git@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) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4K37gF4tDHz4SMw; Tue, 22 Feb 2022 18:56:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1645556185; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NumUtBh8XLDOCiaGXTfE8xhafx2rQFqJhWJa+RS1F5g=; b=fgu7qWvaGtP5JcGJ/emFbkYeex5JUQAi8UoTFPYpn0fGi2b0pSLxO2lXDL/PsQTR8TliCf 2+ifinK4ozbMKcOiKqco1KzI2HL8UPAFO0FiksmlNrw2CgWumQ742APV2zlc7KPUx4jvYL rLTHa3PpfqGR1H+nusIENBtChtkiuAfU4kY1vdYk6dtB0GLP3SlWIxGHQHIMxY9GLNzTwB 9+G0oi6zApjVbBooO6KK/iyMBnpzdrYXeEb0v22KkaZ/fr5P6kdIyVnAZa2paEL763nTg+ m258NrzLvZpl/yBzTvlvdge2YC05mXTY8zlrli5CGUUHWbR9o/woj1WhfSGozg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8770D1A85; Tue, 22 Feb 2022 18:56:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 21MIuPYF044723; Tue, 22 Feb 2022 18:56:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 21MIuP7R044722; Tue, 22 Feb 2022 18:56:25 GMT (envelope-from git) Date: Tue, 22 Feb 2022 18:56:25 GMT Message-Id: <202202221856.21MIuP7R044722@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mateusz Guzik Subject: git: f17ef28674f1 - main - fd: rename fget*_locked to fget*_noref List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mjg X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: f17ef28674f13bc2199d4819123248f5997b435a Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1645556185; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NumUtBh8XLDOCiaGXTfE8xhafx2rQFqJhWJa+RS1F5g=; b=wvXxsxuyk3kW2j58X4oe1VUk0aLmPmmcBljeU5DYsxWR7XayiqTQk6VCA8awY1E4P4w/qw 6wxYBEHPAldu+9ckKmhz9Nh89CzSCi22iZsM1SWeA80mxpDeQuw3nVUWfrCJmWNbOrmpuu 84Ys0Jntt8ZFRSr+vWFJhTSSnWLeJqeJcUD4DK9aUyp4iudDXeVmYj/J7miIKdRhnZwdOb 6eNS+nwBJnvrwwalACgGLM+fvMHRwQLyrU8xPP8bi+Rz8mHlNnG2ims8VyNzIQQLrsVupM VZhMs4K/o8xGQZYbVV+ms8ycr/S1S4J3Qo7F8nQU0Bhb9rRwhQbqqZX6gW10lA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1645556185; a=rsa-sha256; cv=none; b=GhFkDC6quJvEBk6S6SZN6ACUutc+NL/NMm8P16Rbu6z6JusjF/KedWzerANKDCo2BUUX10 HRTqYUjIx5+ICHu3Roqxc3ha68pRge9+s3Dky8ye5QcnskZCir92m6h6wKpisMl3sCMwRD C1MsKmhO87Gm0U0IwjC8Z+xLMiwxykkFtlICxd1t8ptcd42heeSwjjhmuzrpkM7kvL4iIV 5FqNc0Ajab7NhyvpJDYNovodpBJb0Rrj/napnfvH+IVgBi1CbAsBMscr+gz3PZu188aQvV I0bp0J9Ua/m9RF7bYVUqJHq8S7ERaOyc+0L10L0pbHe91a4ec4p+LDL7KvOgow== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mjg: URL: https://cgit.FreeBSD.org/src/commit/?id=f17ef28674f13bc2199d4819123248f5997b435a commit f17ef28674f13bc2199d4819123248f5997b435a Author: Mateusz Guzik AuthorDate: 2022-02-22 15:54:17 +0000 Commit: Mateusz Guzik CommitDate: 2022-02-22 18:53:43 +0000 fd: rename fget*_locked to fget*_noref This gets rid of the error prone naming where fget_unlocked returns with a ref held, while fget_locked requires a lock but provides nothing in terms of making sure the file lives past unlock. No functional changes. --- .../contrib/opensolaris/uts/common/dtrace/dtrace.c | 5 ++++- sys/compat/freebsd32/freebsd32_capability.c | 2 +- sys/kern/kern_descrip.c | 18 +++++++++--------- sys/kern/sys_capability.c | 14 +++++++------- sys/kern/sys_generic.c | 2 +- sys/kern/tty.c | 2 +- sys/kern/uipc_mqueue.c | 4 ++-- sys/kern/uipc_usrreq.c | 2 +- sys/sys/filedesc.h | 6 +++--- 9 files changed, 29 insertions(+), 26 deletions(-) diff --git a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c index 38612a088066..b2e7b01b125c 100644 --- a/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c +++ b/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c @@ -5664,7 +5664,10 @@ dtrace_dif_subr(uint_t subr, uint_t rd, uint64_t *regs, } fdp = curproc->p_fd; FILEDESC_SLOCK(fdp); - fp = fget_locked(fdp, fd); + /* + * XXXMJG this looks broken as no ref is taken. + */ + fp = fget_noref(fdp, fd); mstate->dtms_getf = fp; regs[rd] = (uintptr_t)fp; FILEDESC_SUNLOCK(fdp); diff --git a/sys/compat/freebsd32/freebsd32_capability.c b/sys/compat/freebsd32/freebsd32_capability.c index 2796d2e9384f..ebcd4a6629c7 100644 --- a/sys/compat/freebsd32/freebsd32_capability.c +++ b/sys/compat/freebsd32/freebsd32_capability.c @@ -104,7 +104,7 @@ freebsd32_cap_ioctls_get(struct thread *td, fdp = td->td_proc->p_fd; FILEDESC_SLOCK(fdp); - if (fget_locked(fdp, fd) == NULL) { + if (fget_noref(fdp, fd) == NULL) { error = EBADF; goto out; } diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c index 259be785f88d..ed9d0bc3c253 100644 --- a/sys/kern/kern_descrip.c +++ b/sys/kern/kern_descrip.c @@ -518,7 +518,7 @@ kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg) case F_GETFD: error = EBADF; FILEDESC_SLOCK(fdp); - fde = fdeget_locked(fdp, fd); + fde = fdeget_noref(fdp, fd); if (fde != NULL) { td->td_retval[0] = (fde->fde_flags & UF_EXCLOSE) ? FD_CLOEXEC : 0; @@ -530,7 +530,7 @@ kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg) case F_SETFD: error = EBADF; FILEDESC_XLOCK(fdp); - fde = fdeget_locked(fdp, fd); + fde = fdeget_noref(fdp, fd); if (fde != NULL) { fde->fde_flags = (fde->fde_flags & ~UF_EXCLOSE) | (arg & FD_CLOEXEC ? UF_EXCLOSE : 0); @@ -874,7 +874,7 @@ kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg) } kif = malloc(sizeof(*kif), M_TEMP, M_WAITOK | M_ZERO); FILEDESC_SLOCK(fdp); - error = fget_cap_locked(fdp, fd, &cap_fcntl_rights, &fp, NULL); + error = fget_cap_noref(fdp, fd, &cap_fcntl_rights, &fp, NULL); if (error == 0 && fhold(fp)) { export_file_to_kinfo(fp, fd, NULL, kif, fdp, 0); FILEDESC_SUNLOCK(fdp); @@ -945,7 +945,7 @@ kern_dup(struct thread *td, u_int mode, int flags, int old, int new) error = EBADF; FILEDESC_XLOCK(fdp); - if (fget_locked(fdp, old) == NULL) + if (fget_noref(fdp, old) == NULL) goto unlock; if (mode == FDDUP_FIXED && old == new) { td->td_retval[0] = new; @@ -1383,7 +1383,7 @@ kern_close(struct thread *td, int fd) fdp = td->td_proc->p_fd; FILEDESC_XLOCK(fdp); - if ((fp = fget_locked(fdp, fd)) == NULL) { + if ((fp = fget_noref(fdp, fd)) == NULL) { FILEDESC_XUNLOCK(fdp); return (EBADF); } @@ -2812,7 +2812,7 @@ finit_vnode(struct file *fp, u_int flag, void *data, struct fileops *ops) } int -fget_cap_locked(struct filedesc *fdp, int fd, cap_rights_t *needrightsp, +fget_cap_noref(struct filedesc *fdp, int fd, cap_rights_t *needrightsp, struct file **fpp, struct filecaps *havecapsp) { struct filedescent *fde; @@ -2821,7 +2821,7 @@ fget_cap_locked(struct filedesc *fdp, int fd, cap_rights_t *needrightsp, FILEDESC_LOCK_ASSERT(fdp); *fpp = NULL; - fde = fdeget_locked(fdp, fd); + fde = fdeget_noref(fdp, fd); if (fde == NULL) { error = EBADF; goto out; @@ -2877,7 +2877,7 @@ fget_cap(struct thread *td, int fd, cap_rights_t *needrightsp, get_locked: FILEDESC_SLOCK(fdp); - error = fget_cap_locked(fdp, fd, needrightsp, fpp, havecapsp); + error = fget_cap_noref(fdp, fd, needrightsp, fpp, havecapsp); if (error == 0 && !fhold(*fpp)) error = EBADF; FILEDESC_SUNLOCK(fdp); @@ -3587,7 +3587,7 @@ dupfdopen(struct thread *td, struct filedesc *fdp, int dfd, int mode, * closed, then reject. */ FILEDESC_XLOCK(fdp); - if ((fp = fget_locked(fdp, dfd)) == NULL) { + if ((fp = fget_noref(fdp, dfd)) == NULL) { FILEDESC_XUNLOCK(fdp); return (EBADF); } diff --git a/sys/kern/sys_capability.c b/sys/kern/sys_capability.c index 6f97b74a0a53..2543a06e941d 100644 --- a/sys/kern/sys_capability.c +++ b/sys/kern/sys_capability.c @@ -239,7 +239,7 @@ kern_cap_rights_limit(struct thread *td, int fd, cap_rights_t *rights) fdp = td->td_proc->p_fd; FILEDESC_XLOCK(fdp); - fdep = fdeget_locked(fdp, fd); + fdep = fdeget_noref(fdp, fd); if (fdep == NULL) { FILEDESC_XUNLOCK(fdp); return (EBADF); @@ -325,7 +325,7 @@ sys___cap_rights_get(struct thread *td, struct __cap_rights_get_args *uap) fdp = td->td_proc->p_fd; FILEDESC_SLOCK(fdp); - if (fget_locked(fdp, fd) == NULL) { + if (fget_noref(fdp, fd) == NULL) { FILEDESC_SUNLOCK(fdp); return (EBADF); } @@ -367,7 +367,7 @@ cap_ioctl_check(struct filedesc *fdp, int fd, u_long cmd) KASSERT(fd >= 0 && fd < fdp->fd_nfiles, ("%s: invalid fd=%d", __func__, fd)); - fdep = fdeget_locked(fdp, fd); + fdep = fdeget_noref(fdp, fd); KASSERT(fdep != NULL, ("%s: invalid fd=%d", __func__, fd)); @@ -433,7 +433,7 @@ kern_cap_ioctls_limit(struct thread *td, int fd, u_long *cmds, size_t ncmds) fdp = td->td_proc->p_fd; FILEDESC_XLOCK(fdp); - fdep = fdeget_locked(fdp, fd); + fdep = fdeget_noref(fdp, fd); if (fdep == NULL) { error = EBADF; goto out; @@ -509,7 +509,7 @@ sys_cap_ioctls_get(struct thread *td, struct cap_ioctls_get_args *uap) } FILEDESC_SLOCK(fdp); - fdep = fdeget_locked(fdp, fd); + fdep = fdeget_noref(fdp, fd); if (fdep == NULL) { error = EBADF; FILEDESC_SUNLOCK(fdp); @@ -593,7 +593,7 @@ sys_cap_fcntls_limit(struct thread *td, struct cap_fcntls_limit_args *uap) fdp = td->td_proc->p_fd; FILEDESC_XLOCK(fdp); - fdep = fdeget_locked(fdp, fd); + fdep = fdeget_noref(fdp, fd); if (fdep == NULL) { FILEDESC_XUNLOCK(fdp); return (EBADF); @@ -626,7 +626,7 @@ sys_cap_fcntls_get(struct thread *td, struct cap_fcntls_get_args *uap) fdp = td->td_proc->p_fd; FILEDESC_SLOCK(fdp); - fdep = fdeget_locked(fdp, fd); + fdep = fdeget_noref(fdp, fd); if (fdep == NULL) { FILEDESC_SUNLOCK(fdp); return (EBADF); diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index 276dd4acd26d..dd33d3dbe53e 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -748,7 +748,7 @@ kern_ioctl(struct thread *td, int fd, u_long com, caddr_t data) } #ifdef CAPABILITIES - if ((fp = fget_locked(fdp, fd)) == NULL) { + if ((fp = fget_noref(fdp, fd)) == NULL) { error = EBADF; goto out; } diff --git a/sys/kern/tty.c b/sys/kern/tty.c index 9e6cd8d317cc..5fa7b3dc7525 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -2081,7 +2081,7 @@ ttyhook_register(struct tty **rtp, struct proc *p, int fd, struct ttyhook *th, */ fdp = p->p_fd; FILEDESC_SLOCK(fdp); - error = fget_cap_locked(fdp, fd, cap_rights_init_one(&rights, CAP_TTYHOOK), + error = fget_cap_noref(fdp, fd, cap_rights_init_one(&rights, CAP_TTYHOOK), &fp, NULL); if (error == 0 && !fhold(fp)) error = EBADF; diff --git a/sys/kern/uipc_mqueue.c b/sys/kern/uipc_mqueue.c index f2e0240436f4..745c1174638e 100644 --- a/sys/kern/uipc_mqueue.c +++ b/sys/kern/uipc_mqueue.c @@ -2350,7 +2350,7 @@ kern_kmq_notify(struct thread *td, int mqd, struct sigevent *sigev) return (error); again: FILEDESC_SLOCK(fdp); - fp2 = fget_locked(fdp, mqd); + fp2 = fget_noref(fdp, mqd); if (fp2 == NULL) { FILEDESC_SUNLOCK(fdp); error = EBADF; @@ -2482,7 +2482,7 @@ mq_proc_exit(void *arg __unused, struct proc *p) fdp = p->p_fd; FILEDESC_SLOCK(fdp); for (i = 0; i < fdp->fd_nfiles; ++i) { - fp = fget_locked(fdp, i); + fp = fget_noref(fdp, i); if (fp != NULL && fp->f_ops == &mqueueops) { mq = FPTOMQ(fp); mtx_lock(&mq->mq_mutex); diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index 360cd5424924..c2bf10b1f3e3 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -2262,7 +2262,7 @@ unp_internalize(struct mbuf **controlp, struct thread *td) fdp = data; FILEDESC_SLOCK(fdesc); for (i = 0; i < oldfds; i++, fdp++) { - fp = fget_locked(fdesc, *fdp); + fp = fget_noref(fdesc, *fdp); if (fp == NULL) { FILEDESC_SUNLOCK(fdesc); error = EBADF; diff --git a/sys/sys/filedesc.h b/sys/sys/filedesc.h index 24eb6eb2c061..b64a4c4849d9 100644 --- a/sys/sys/filedesc.h +++ b/sys/sys/filedesc.h @@ -287,7 +287,7 @@ int getvnode_path(struct thread *td, int fd, cap_rights_t *rightsp, struct file **fpp); void mountcheckdirs(struct vnode *olddp, struct vnode *newdp); -int fget_cap_locked(struct filedesc *fdp, int fd, cap_rights_t *needrightsp, +int fget_cap_noref(struct filedesc *fdp, int fd, cap_rights_t *needrightsp, struct file **fpp, struct filecaps *havecapsp); int fget_cap(struct thread *td, int fd, cap_rights_t *needrightsp, struct file **fpp, struct filecaps *havecapsp); @@ -304,7 +304,7 @@ int fget_only_user(struct filedesc *fdp, int fd, cap_rights_t *needrightsp, /* Requires a FILEDESC_{S,X}LOCK held and returns without a ref. */ static __inline struct file * -fget_locked(struct filedesc *fdp, int fd) +fget_noref(struct filedesc *fdp, int fd) { FILEDESC_LOCK_ASSERT(fdp); @@ -316,7 +316,7 @@ fget_locked(struct filedesc *fdp, int fd) } static __inline struct filedescent * -fdeget_locked(struct filedesc *fdp, int fd) +fdeget_noref(struct filedesc *fdp, int fd) { struct filedescent *fde;