aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/kern_descrip.c
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2021-09-30 10:49:51 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2021-09-30 10:49:51 +0000
commit85c855d31b18d7a8ab534259f27444c81b6ec797 (patch)
tree5ed6855810cc620b39cef402c9d23b3afe4cce0a /sys/kern/kern_descrip.c
parent41e946694333bcc6f64242f294312553f2ef2dcd (diff)
downloadsrc-85c855d31b18d7a8ab534259f27444c81b6ec797.tar.gz
src-85c855d31b18d7a8ab534259f27444c81b6ec797.zip
fd: add pwd_hold_proc
Diffstat (limited to 'sys/kern/kern_descrip.c')
-rw-r--r--sys/kern/kern_descrip.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 58c2d1939dba..755b5df51c6a 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -3791,6 +3791,26 @@ pwd_hold(struct thread *td)
return (pwd);
}
+struct pwd *
+pwd_hold_proc(struct proc *p)
+{
+ struct pwddesc *pdp;
+ struct pwd *pwd;
+
+ PROC_ASSERT_HELD(p);
+ PROC_LOCK(p);
+ pdp = pdhold(p);
+ MPASS(pdp != NULL);
+ PROC_UNLOCK(p);
+
+ PWDDESC_XLOCK(pdp);
+ pwd = pwd_hold_pwddesc(pdp);
+ MPASS(pwd != NULL);
+ PWDDESC_XUNLOCK(pdp);
+ pddrop(pdp);
+ return (pwd);
+}
+
static struct pwd *
pwd_alloc(void)
{