Print this page
curzone reality check and teardown changes to use the RIGHT zone
@@ -2565,11 +2565,17 @@
nlm_unexport(struct exportinfo *exi)
{
struct nlm_globals *g;
struct nlm_host *hostp;
- g = zone_getspecific(nlm_zone_key, curzone);
+ /* This may be called on behalf of global-zone doing shutdown. */
+ ASSERT(exi->exi_zone == curzone || curzone == global_zone);
+ g = zone_getspecific(nlm_zone_key, exi->exi_zone);
+ if (g == NULL) {
+ /* Did zone cleanup get here already? */
+ return;
+ }
mutex_enter(&g->lock);
hostp = avl_first(&g->nlm_hosts_tree);
while (hostp != NULL) {
struct nlm_vhold *nvp;