Print this page
13026 SMB and NFS use the global zone's IDMAP when they shouldn't
Change-Id: I3b5f7bc68bb77764aa7cb59a48dd1740a8387ccf

@@ -18,11 +18,11 @@
  *
  * CDDL HEADER END
  */
 /*
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
+ * Copyright 2020 Nexenta by DDN, Inc. All rights reserved.
  */
 
 /*
  * SMB server interface to idmap
  * (smb_idmap_get..., smb_idmap_batch_...)

@@ -81,16 +81,16 @@
 {
         smb_idmap_t sim;
 
         switch (idtype) {
         case SMB_IDMAP_USER:
-                sim.sim_stat = kidmap_getsidbyuid(global_zone, id,
+                sim.sim_stat = kidmap_getsidbyuid(curzone, id,
                     (const char **)&sim.sim_domsid, &sim.sim_rid);
                 break;
 
         case SMB_IDMAP_GROUP:
-                sim.sim_stat = kidmap_getsidbygid(global_zone, id,
+                sim.sim_stat = kidmap_getsidbygid(curzone, id,
                     (const char **)&sim.sim_domsid, &sim.sim_rid);
                 break;
 
         case SMB_IDMAP_EVERYONE:
                 /* Everyone S-1-1-0 */

@@ -148,21 +148,21 @@
         sim.sim_domsid = sidstr;
         sim.sim_id = id;
 
         switch (*idtype) {
         case SMB_IDMAP_USER:
-                sim.sim_stat = kidmap_getuidbysid(global_zone, sim.sim_domsid,
+                sim.sim_stat = kidmap_getuidbysid(curzone, sim.sim_domsid,
                     sim.sim_rid, sim.sim_id);
                 break;
 
         case SMB_IDMAP_GROUP:
-                sim.sim_stat = kidmap_getgidbysid(global_zone, sim.sim_domsid,
+                sim.sim_stat = kidmap_getgidbysid(curzone, sim.sim_domsid,
                     sim.sim_rid, sim.sim_id);
                 break;
 
         case SMB_IDMAP_UNKNOWN:
-                sim.sim_stat = kidmap_getpidbysid(global_zone, sim.sim_domsid,
+                sim.sim_stat = kidmap_getpidbysid(curzone, sim.sim_domsid,
                     sim.sim_rid, sim.sim_id, &sim.sim_idtype);
                 break;
 
         default:
                 ASSERT(0);

@@ -184,11 +184,11 @@
 {
         ASSERT(sib != NULL);
 
         bzero(sib, sizeof (smb_idmap_batch_t));
 
-        sib->sib_idmaph = kidmap_get_create(global_zone);
+        sib->sib_idmaph = kidmap_get_create(curzone);
 
         sib->sib_flags = flags;
         sib->sib_nmap = nmap;
         sib->sib_size = nmap * sizeof (smb_idmap_t);
         sib->sib_maps = kmem_zalloc(sib->sib_size, KM_SLEEP);