diff options
author | Mateusz Guzik <mjg@FreeBSD.org> | 2021-09-30 10:49:51 +0000 |
---|---|---|
committer | Mateusz Guzik <mjg@FreeBSD.org> | 2021-09-30 10:49:51 +0000 |
commit | 85c855d31b18d7a8ab534259f27444c81b6ec797 (patch) | |
tree | 5ed6855810cc620b39cef402c9d23b3afe4cce0a /sys/kern/kern_descrip.c | |
parent | 41e946694333bcc6f64242f294312553f2ef2dcd (diff) | |
download | src-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.c | 20 |
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) { |