summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/syscall/uadmin.c
diff options
context:
space:
mode:
authorcg209009 <none@none>2007-06-11 12:44:21 -0700
committercg209009 <none@none>2007-06-11 12:44:21 -0700
commit8c9fe6576524d347beebb4d81036eb7acaec2a54 (patch)
treeb86aeaf1fc6dca3e0c1e4e68ed0fa2b0e3c429b3 /usr/src/uts/common/syscall/uadmin.c
parent33eb6ee16b13e39cea2a404869f48bac9f857dfe (diff)
downloadillumos-joyent-8c9fe6576524d347beebb4d81036eb7acaec2a54.tar.gz
5070257 uadmin(A_SHUTDOWN) can return with ualock held
Diffstat (limited to 'usr/src/uts/common/syscall/uadmin.c')
-rw-r--r--usr/src/uts/common/syscall/uadmin.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/usr/src/uts/common/syscall/uadmin.c b/usr/src/uts/common/syscall/uadmin.c
index cb71c07b9a..9946bd4b22 100644
--- a/usr/src/uts/common/syscall/uadmin.c
+++ b/usr/src/uts/common/syscall/uadmin.c
@@ -174,8 +174,11 @@ kadmin(int cmd, int fcn, void *mdep, cred_t *credp)
*/
if (p != &p0) {
proc_is_exiting(p);
- if ((error = exitlwps(0)) != 0)
+ if ((error = exitlwps(0)) != 0) {
+ ASSERT(locked);
+ mutex_exit(&ualock);
return (error);
+ }
mutex_enter(&p->p_lock);
p->p_flag |= SNOWAIT;
sigfillset(&p->p_ignore);