Print this page
Caution with use after exi_rele()
Be far more judicious in the use of curzone-using macros.
(Merge and extra asserts by danmcd.)
@@ -2945,15 +2945,17 @@
*/
/* Release the reference on the old exi value */
ASSERT(*exi != NULL);
exi_rele(*exi);
+ *exi = NULL;
if (error = nfs_check_vpexi(mc_dvp, *vpp, kcred, exi)) {
VN_RELE(*vpp);
goto publicfh_done;
}
+ /* Have a new *exi */
}
}
publicfh_done:
if (mc_dvp)
@@ -2976,10 +2978,12 @@
{
char namebuf[TYPICALMAXPATHLEN];
struct pathname pn;
int error;
+ ASSERT3U(crgetzoneid(cr), ==, curzone->zone_id);
+
/*
* If pathname starts with '/', then set startdvp to root.
*/
if (*path == '/') {
while (*path == '/')