diff options
| author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2016-11-03 13:34:36 +0000 |
|---|---|---|
| committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2016-11-03 17:08:45 +0000 |
| commit | 319f1706dddd0b2e45c61122ee4a33201f63a466 (patch) | |
| tree | e331941be4a987254301ef022cc98f0810754798 /usr/src/uts/common/syscall/uadmin.c | |
| parent | cb5adfa07a7aefc440f5a55351017de82213ea5c (diff) | |
| download | illumos-joyent-319f1706dddd0b2e45c61122ee4a33201f63a466.tar.gz | |
OS-5761 some code is careless about p_lock when accessing u_cdir
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
Approved by: Patrick Mooney <patrick.mooney@joyent.com>
Diffstat (limited to 'usr/src/uts/common/syscall/uadmin.c')
| -rw-r--r-- | usr/src/uts/common/syscall/uadmin.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/usr/src/uts/common/syscall/uadmin.c b/usr/src/uts/common/syscall/uadmin.c index 68aa1a95f5..7aac5b52a7 100644 --- a/usr/src/uts/common/syscall/uadmin.c +++ b/usr/src/uts/common/syscall/uadmin.c @@ -22,7 +22,7 @@ /* * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. - * Copyright 2013 Joyent, Inc. All rights reserved. + * Copyright 2016 Joyent, Inc. */ #include <sys/param.h> @@ -251,6 +251,7 @@ kadmin(int cmd, int fcn, void *mdep, cred_t *credp) * do not release these resources. */ if (ttoproc(curthread) != &p0) { + mutex_enter(&curproc->p_lock); VN_RELE(PTOU(curproc)->u_cdir); if (PTOU(curproc)->u_rdir) VN_RELE(PTOU(curproc)->u_rdir); @@ -260,6 +261,7 @@ kadmin(int cmd, int fcn, void *mdep, cred_t *credp) PTOU(curproc)->u_cdir = rootdir; PTOU(curproc)->u_rdir = NULL; PTOU(curproc)->u_cwd = NULL; + mutex_exit(&curproc->p_lock); } /* |
