Lines Matching defs:cnp
455 * cnp is always equal to &ndp->ni_cnp.
459 struct componentname *cnp;
479 state->cnp = &ndp->ni_cnd;
487 KASSERTMSG((state->cnp->cn_cred != NULL), "namei: bad cred/proc");
488 KASSERTMSG(((state->cnp->cn_nameiop & (~OPMASK)) == 0),
490 state->cnp->cn_nameiop);
491 KASSERTMSG(((state->cnp->cn_flags & OPMASK) == 0),
493 state->cnp->cn_flags);
510 KASSERT(state->cnp == &state->ndp->ni_cnd);
531 struct componentname *cnp = state->cnp;
548 if (cwdi->cwdi_rdir == NULL || (cnp->cn_flags & NOCHROOT)) {
555 if ((cnp->cn_flags & TRYEMULROOT) == 0) {
558 } else if (cnp->cn_flags & EMULROOTSET) {
579 } else if (cnp->cn_flags & TRYEMULROOT && erootdir != NULL) {
640 struct componentname *cnp = state->cnp;
654 if (cnp->cn_flags & EMULROOTSET)
721 (state->cnp->cn_flags & (FOLLOW|REQUIREDIR));
738 struct componentname *cnp = state->cnp;
753 error = VOP_ACCESS(foundobj, VEXEC, cnp->cn_cred);
770 error = VOP_READLINK(foundobj, &auio, cnp->cn_cred);
806 cnp->cn_nameptr = ndp->ni_pnbuf;
823 while (cnp->cn_nameptr[0] == '/') {
824 cnp->cn_nameptr++;
843 struct componentname *cnp = state->cnp;
846 KASSERT(cnp == &ndp->ni_cnd);
852 * cnp->cn_nameptr for callers that need the name. Callers needing
859 error = VOP_PARSEPATH(searchdir, cnp->cn_nameptr, &cnp->cn_namelen);
863 cp = cnp->cn_nameptr + cnp->cn_namelen;
864 if (cnp->cn_namelen > KERNEL_NAME_MAX) {
870 printf("{%s}: ", cnp->cn_nameptr);
873 ndp->ni_pathlen -= cnp->cn_namelen;
887 cnp->cn_flags |= REQUIREDIR;
890 cnp->cn_flags &= ~REQUIREDIR;
898 cnp->cn_flags |= MAKEENTRY;
900 cnp->cn_flags &= ~MAKEENTRY;
901 cnp->cn_flags |= ISLASTCN;
903 cnp->cn_flags |= MAKEENTRY;
904 cnp->cn_flags &= ~ISLASTCN;
906 if (cnp->cn_namelen == 2 &&
907 cnp->cn_nameptr[1] == '.' && cnp->cn_nameptr[0] == '.')
908 cnp->cn_flags |= ISDOTDOT;
910 cnp->cn_flags &= ~ISDOTDOT;
925 struct componentname *cnp = state->cnp;
935 KASSERT((cnp->cn_flags & NOCROSSMOUNT) == 0);
953 (cnp->cn_flags & NOCROSSMOUNT) == 0) {
1036 lookup_lktype(struct vnode *searchdir, struct componentname *cnp)
1047 (cnp->cn_nameiop == LOOKUP || (cnp->cn_flags & ISLASTCN) == 0)) {
1079 struct componentname *cnp = state->cnp;
1082 KASSERT(cnp == &ndp->ni_cnd);
1099 if (cnp->cn_flags & ISDOTDOT) {
1108 if (cnp->cn_flags & LOCKPARENT) {
1109 lktype = lookup_lktype(searchdir, cnp);
1142 (cnp->cn_flags & NOCROSSMOUNT))
1152 lktype = lookup_lktype(searchdir, cnp);
1164 error = VOP_LOOKUP(searchdir, &foundobj, cnp);
1169 cnp->cn_nameptr, foundobj);
1210 if ((cnp->cn_flags & (REQUIREDIR | CREATEDIR)) == REQUIREDIR) {
1241 if ((cnp->cn_flags & (ISLASTCN | LOCKPARENT)) !=
1271 struct componentname *cnp = state->cnp;
1287 oldnameptr = cnp->cn_nameptr;
1298 KASSERT(cnp->cn_nameptr[0] != '/');
1299 KASSERT(cnp->cn_nameptr[0] != '\0');
1308 if ((cnp->cn_flags & ISDOTDOT) != 0) {
1310 (cnp->cn_flags & NOCROSSMOUNT)) {
1326 if ((cnp->cn_flags & ISLASTCN) != 0) {
1327 if (cnp->cn_nameiop != LOOKUP ||
1328 (cnp->cn_flags & LOCKPARENT) != 0) {
1340 if (!cache_lookup_linked(searchdir, cnp->cn_nameptr,
1341 cnp->cn_namelen, &foundobj, &plock, cnp->cn_cred)) {
1359 terminal = ((cnp->cn_flags & ISLASTCN) != 0);
1375 (cnp->cn_flags & ISLASTCN) != 0);
1389 (cnp->cn_flags & NOCROSSMOUNT) == 0 &&
1410 if ((cnp->cn_flags & ISLASTCN) != 0) {
1426 cnp->cn_nameptr = ndp->ni_next;
1474 cnp->cn_nameptr = oldnameptr;
1502 struct componentname *cnp = state->cnp;
1518 state->docache = (cnp->cn_flags & NOCACHE) ^ NOCACHE;
1519 if (cnp->cn_nameiop == DELETE)
1521 state->rdonly = cnp->cn_flags & RDONLY;
1526 cnp->cn_nameptr = ndp->ni_pnbuf;
1529 while (cnp->cn_nameptr[0] == '/') {
1530 cnp->cn_nameptr++;
1534 if (cnp->cn_nameptr[0] == '\0') {
1537 cnp->cn_flags |= ISLASTCN;
1573 (cnp->cn_flags & NOCROSSMOUNT) == 0) {
1612 (cnp->cn_flags & ISLASTCN) != 0);
1685 if (cnp->cn_nameptr[0] == '\0') {
1689 cnp->cn_flags |= ISLASTCN;
1703 (cnp->cn_flags & REQUIREDIR)) {
1725 if (cnp->cn_flags & ISLASTCN) {
1732 cnp->cn_nameptr = ndp->ni_next;
1745 KASSERT((cnp->cn_flags & LOCKPARENT) == 0 || searchdir == NULL ||
1800 if (cnp->cn_nameiop != LOOKUP &&
1803 (cnp->cn_flags & NONEXCLHACK) == 0) {
1819 switch (cnp->cn_nameiop) {
1836 (cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME)) {
1855 if ((cnp->cn_flags & (LOCKLEAF | LOCKPARENT)) == LOCKPARENT &&
1871 } else if ((cnp->cn_flags & LOCKLEAF) != 0 &&
1873 (cnp->cn_flags & LOCKPARENT) == 0)) {
1874 const int lktype = (cnp->cn_flags & LOCKSHARED) != 0 ?
1887 if ((cnp->cn_flags & LOCKPARENT) == 0 && searchdir != NULL) {
1907 struct componentname *cnp = state->cnp;
1910 KASSERT(cnp == &ndp->ni_cnd);
1912 if (cnp->cn_flags & TRYEMULROOT) {
1928 cnp->cn_flags &= ~TRYEMULROOT;
2025 struct componentname *cnp = state->cnp;
2032 KASSERT(cnp == &ndp->ni_cnd);
2036 cnp->cn_nameptr = ndp->ni_pnbuf;
2038 state->rdonly = cnp->cn_flags & RDONLY;
2041 error = VOP_PARSEPATH(startdir, cnp->cn_nameptr, &cnp->cn_namelen);
2046 cp = cnp->cn_nameptr + cnp->cn_namelen;
2047 KASSERT(cnp->cn_namelen <= KERNEL_NAME_MAX);
2048 ndp->ni_pathlen -= cnp->cn_namelen;
2051 cnp->cn_flags &= ~REQUIREDIR;
2052 cnp->cn_flags |= MAKEENTRY|ISLASTCN;
2054 if (cnp->cn_namelen == 2 &&
2055 cnp->cn_nameptr[1] == '.' && cnp->cn_nameptr[0] == '.')
2056 cnp->cn_flags |= ISDOTDOT;
2058 cnp->cn_flags &= ~ISDOTDOT;
2068 KASSERT((cnp->cn_flags & LOCKPARENT) == 0);
2082 (cnp->cn_flags & NOCROSSMOUNT) == 0) {
2092 else if (foundobj != NULL && (cnp->cn_flags & LOCKLEAF) != 0)
2144 relookup(struct vnode *dvp, struct vnode **vpp, struct componentname *cnp,
2159 rdonly = cnp->cn_flags & RDONLY;
2166 * cnp->cn_nameptr for callers that need the name. Callers needing
2173 newhash = namei_hash(cnp->cn_nameptr, &cp);
2174 if ((uint32_t)newhash != (uint32_t)cnp->cn_hash)
2177 error = VOP_PARSEPATH(dvp, cnp->cn_nameptr, &newlen);
2181 if (cnp->cn_namelen != newlen)
2183 cp = cnp->cn_nameptr + cnp->cn_namelen;
2195 if (cnp->cn_nameptr[0] == '\0')
2198 if (cnp->cn_flags & ISDOTDOT)
2205 error = VOP_LOOKUP(dvp, vpp, cnp);
2209 cnp->cn_nameptr, *vpp);
2218 (cnp->cn_flags & FOLLOW) == 0),
2224 if (rdonly && cnp->cn_nameiop != LOOKUP) {