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.