diff --git a/sys/fs/autofs/autofs_vnops.c b/sys/fs/autofs/autofs_vnops.c --- a/sys/fs/autofs/autofs_vnops.c +++ b/sys/fs/autofs/autofs_vnops.c @@ -247,7 +247,9 @@ } if (autofs_cached(anp, cnp->cn_nameptr, cnp->cn_namelen) == false && - autofs_ignore_thread(curthread) == false) { + autofs_ignore_thread(curthread) == false && + (cnp->cn_flags & (ISLASTCN | NOAUTOMOUNT)) != (ISLASTCN | + NOAUTOMOUNT)) { error = autofs_trigger_vn(dvp, cnp->cn_nameptr, cnp->cn_namelen, &newvp); if (error != 0) diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -2466,8 +2466,9 @@ return (EINVAL); NDINIT_ATRIGHTS(&nd, LOOKUP, at2cnpflags(flag, AT_RESOLVE_BENEATH | - AT_SYMLINK_NOFOLLOW | AT_EMPTY_PATH) | LOCKSHARED | LOCKLEAF | - AUDITVNODE1, pathseg, path, fd, &cap_fstat_rights); + AT_SYMLINK_NOFOLLOW | AT_EMPTY_PATH) | NOAUTOMOUNT | + LOCKSHARED | LOCKLEAF | AUDITVNODE1, pathseg, path, fd, + &cap_fstat_rights); if ((error = namei(&nd)) != 0) { if (error == ENOTDIR && diff --git a/sys/sys/namei.h b/sys/sys/namei.h --- a/sys/sys/namei.h +++ b/sys/sys/namei.h @@ -152,6 +152,7 @@ #define LOCKSHARED 0x0100 /* Shared lock leaf */ #define NOFOLLOW 0x0000 /* do not follow symbolic links (pseudo) */ #define RBENEATH 0x100000000ULL /* No escape, even tmp, from start dir */ +#define NOAUTOMOUNT 0x200000000ULL /* No automount on last cn */ #define MODMASK 0xf000001ffULL /* mask of operational modifiers */ /*