diff options
author | Nick Todd <Nick.Todd@Sun.COM> | 2010-01-15 16:49:18 +0000 |
---|---|---|
committer | Nick Todd <Nick.Todd@Sun.COM> | 2010-01-15 16:49:18 +0000 |
commit | 57820e8807c20ff42b06c89fe0c7f2f2bc797a67 (patch) | |
tree | ff88f2d3d56af249e712b5a859830ee279e17aeb /usr/src | |
parent | 788199aef3f70e46f129f4b8dea5c22f8f8d267e (diff) | |
download | illumos-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.c | 7 |
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(&->a_rwlock, RW_WRITER); - anonmap_purge(amp); if (amp->a_szc != 0) { anon_shmap_free_pages(amp, 0, amp->size); } else { |