--- a/usr/src/uts/common/os/zone.c Wed Mar 28 17:36:57 2007 -0700
+++ b/usr/src/uts/common/os/zone.c Wed Mar 28 17:57:31 2007 -0700
@@ -4616,6 +4616,10 @@
zone->zone_max_swap += swap;
mutex_exit(&zone->zone_mem_lock);
+ mutex_enter(&(zone_proj0->kpj_data.kpd_crypto_lock));
+ zone_proj0->kpj_data.kpd_crypto_mem += pp->p_crypto_mem;
+ mutex_exit(&(zone_proj0->kpj_data.kpd_crypto_lock));
+
/* remove lwps from proc's old zone and old project */
mutex_enter(&pp->p_zone->zone_nlwps_lock);
pp->p_zone->zone_nlwps -= pp->p_lwpcnt;
@@ -4628,6 +4632,10 @@
pp->p_zone->zone_max_swap -= swap;
mutex_exit(&pp->p_zone->zone_mem_lock);
+ mutex_enter(&(pp->p_task->tk_proj->kpj_data.kpd_crypto_lock));
+ pp->p_task->tk_proj->kpj_data.kpd_crypto_mem -= pp->p_crypto_mem;
+ mutex_exit(&(pp->p_task->tk_proj->kpj_data.kpd_crypto_lock));
+
mutex_exit(&pp->p_lock);
AS_LOCK_EXIT(pp->p_as, &pp->p_as->a_lock);