svn commit: r358502 - head/sys/kern
Mateusz Guzik
mjg at FreeBSD.org
Sun Mar 1 21:50:14 UTC 2020
Author: mjg
Date: Sun Mar 1 21:50:13 2020
New Revision: 358502
URL: https://svnweb.freebsd.org/changeset/base/358502
Log:
fd: make fgetvp_rights work without the filedesc lock
Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D23883
Modified:
head/sys/kern/kern_descrip.c
Modified: head/sys/kern/kern_descrip.c
==============================================================================
--- head/sys/kern/kern_descrip.c Sun Mar 1 21:49:16 2020 (r358501)
+++ head/sys/kern/kern_descrip.c Sun Mar 1 21:50:13 2020 (r358502)
@@ -3028,13 +3028,11 @@ int
fgetvp_rights(struct thread *td, int fd, cap_rights_t *needrightsp,
struct filecaps *havecaps, struct vnode **vpp)
{
- struct filedesc *fdp;
struct filecaps caps;
struct file *fp;
int error;
- fdp = td->td_proc->p_fd;
- error = fget_cap_locked(fdp, fd, needrightsp, &fp, &caps);
+ error = fget_cap(td, fd, needrightsp, &fp, &caps);
if (error != 0)
return (error);
if (fp->f_ops == &badfileops) {
@@ -3049,10 +3047,12 @@ fgetvp_rights(struct thread *td, int fd, cap_rights_t
*havecaps = caps;
*vpp = fp->f_vnode;
vrefact(*vpp);
+ fdrop(fp, td);
return (0);
out:
filecaps_free(&caps);
+ fdrop(fp, td);
return (error);
}
More information about the svn-src-head
mailing list