diff options
Diffstat (limited to 'usr/src/uts/common/os/shm.c')
-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 { |