Print this page
Try to remove assumption that zone's root vnode is marked VROOT

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/nfs/nfs3_srv.c
          +++ new/usr/src/uts/common/fs/nfs/nfs3_srv.c
↓ open down ↓ 431 lines elided ↑ open up ↑
 432  432  
 433  433          if (args->what.name == NULL || *(args->what.name) == '\0') {
 434  434                  resp->status = NFS3ERR_ACCES;
 435  435                  goto out1;
 436  436          }
 437  437  
 438  438          fhp = &args->what.dir;
 439  439          if (strcmp(args->what.name, "..") == 0 &&
 440  440              EQFID(&exi->exi_fid, FH3TOFIDP(fhp))) {
 441  441                  if ((exi->exi_export.ex_flags & EX_NOHIDE) &&
 442      -                    (dvp->v_flag & VROOT)) {
      442 +                    ((dvp->v_flag & VROOT) || VN_IS_CURZONEROOT(dvp))) {
 443  443                          /*
 444  444                           * special case for ".." and 'nohide'exported root
 445  445                           */
 446  446                          if (rfs_climb_crossmnt(&dvp, &exi, cr) != 0) {
 447  447                                  resp->status = NFS3ERR_ACCES;
 448  448                                  goto out1;
 449  449                          }
 450  450                  } else {
 451  451                          resp->status = NFS3ERR_NOENT;
 452  452                          goto out1;
↓ open down ↓ 3999 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX