summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorNick Todd <Nick.Todd@Sun.COM>2010-01-15 16:49:18 +0000
committerNick Todd <Nick.Todd@Sun.COM>2010-01-15 16:49:18 +0000
commit57820e8807c20ff42b06c89fe0c7f2f2bc797a67 (patch)
treeff88f2d3d56af249e712b5a859830ee279e17aeb /usr/src
parent788199aef3f70e46f129f4b8dea5c22f8f8d267e (diff)
downloadillumos-gate-57820e8807c20ff42b06c89fe0c7f2f2bc797a67.tar.gz
6902883 thread hangs in page_lock_es()
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/os/shm.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/usr/src/uts/common/os/shm.c b/usr/src/uts/common/os/shm.c
index acdec470e8..869bbd5a38 100644
--- a/usr/src/uts/common/os/shm.c
+++ b/usr/src/uts/common/os/shm.c
@@ -20,7 +20,7 @@
*/
/*
- * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -578,6 +578,10 @@ shm_dtor(kipc_perm_t *perm)
uint_t cnt;
size_t rsize;
+ ANON_LOCK_ENTER(&sp->shm_amp->a_rwlock, RW_WRITER);
+ anonmap_purge(sp->shm_amp);
+ ANON_LOCK_EXIT(&sp->shm_amp->a_rwlock);
+
if (sp->shm_sptinfo) {
if (isspt(sp)) {
sptdestroy(sp->shm_sptinfo->sptas, sp->shm_amp);
@@ -1261,7 +1265,6 @@ shm_rm_amp(kshmid_t *sp)
*/
lgrp_shm_policy_fini(amp, NULL);
ANON_LOCK_ENTER(&amp->a_rwlock, RW_WRITER);
- anonmap_purge(amp);
if (amp->a_szc != 0) {
anon_shmap_free_pages(amp, 0, amp->size);
} else {