Print this page
Revert exi_zone to exi_zoneid, and install exi_ne backpointer
        
*** 415,425 ****
  rfs_climb_crossmnt(vnode_t **dvpp, struct exportinfo **exip, cred_t *cr)
  {
          struct exportinfo *exi;
          vnode_t *dvp = *dvpp;
  
!         ASSERT3P((*exip)->exi_zone, ==, curzone);
          ASSERT((dvp->v_flag & VROOT) || VN_IS_CURZONEROOT(dvp));
  
          VN_HOLD(dvp);
          dvp = untraverse(dvp);
          exi = nfs_vptoexi(NULL, dvp, cr, NULL, NULL, FALSE);
--- 415,425 ----
  rfs_climb_crossmnt(vnode_t **dvpp, struct exportinfo **exip, cred_t *cr)
  {
          struct exportinfo *exi;
          vnode_t *dvp = *dvpp;
  
!         ASSERT3U((*exip)->exi_zoneid, ==, curzone->zone_id);
          ASSERT((dvp->v_flag & VROOT) || VN_IS_CURZONEROOT(dvp));
  
          VN_HOLD(dvp);
          dvp = untraverse(dvp);
          exi = nfs_vptoexi(NULL, dvp, cr, NULL, NULL, FALSE);
*** 426,436 ****
          if (exi == NULL) {
                  VN_RELE(dvp);
                  return (-1);
          }
  
!         ASSERT3P(exi->exi_zone, ==, curzone);
          exi_rele(*exip);
          *exip = exi;
          VN_RELE(*dvpp);
          *dvpp = dvp;
  
--- 426,436 ----
          if (exi == NULL) {
                  VN_RELE(dvp);
                  return (-1);
          }
  
!         ASSERT3U(exi->exi_zoneid, ==, curzone->zone_id);
          exi_rele(*exip);
          *exip = exi;
          VN_RELE(*dvpp);
          *dvpp = dvp;
  
*** 487,497 ****
                          return;
                  }
          }
  
          exi_hold(exi);
!         ASSERT3P(exi->exi_zone, ==, curzone);
  
          /*
           * Not allow lookup beyond root.
           * If the filehandle matches a filehandle of the exi,
           * then the ".." refers beyond the root of an exported filesystem.
--- 487,497 ----
                          return;
                  }
          }
  
          exi_hold(exi);
!         ASSERT3U(exi->exi_zoneid, ==, curzone->zone_id);
  
          /*
           * Not allow lookup beyond root.
           * If the filehandle matches a filehandle of the exi,
           * then the ".." refers beyond the root of an exported filesystem.