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.