diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2023-05-02 15:11:39 +0000 |
---|---|---|
committer | Dmitry Chagin <dchagin@FreeBSD.org> | 2023-06-29 08:15:50 +0000 |
commit | 4d1134a54c85ae8926eb43b7e51aee6e65b71816 (patch) | |
tree | 27495bfd809b466c67fd18475c0aeb28886dd1e5 | |
parent | 5e424fec72aafe1154ae23cd0674193e757a4d2a (diff) | |
download | src-4d1134a54c85ae8926eb43b7e51aee6e65b71816.tar.gz src-4d1134a54c85ae8926eb43b7e51aee6e65b71816.zip |
fstatat(2): restore AT_EMPTY_PATH handling
Fixes: cb858340dcbf214cc4c4d78dbb741620d7b3a252
Reported by: markj
Sponsored by: The FreeBSD Foundation
(cherry picked from commit a1d71cebc05ccfeedf95f2db3e94b17270167888)
-rw-r--r-- | sys/kern/vfs_syscalls.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 89f45e898d8e..7f7836450811 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -2432,8 +2432,12 @@ kern_statat(struct thread *td, int flag, int fd, const char *path, AT_SYMLINK_NOFOLLOW | AT_EMPTY_PATH) | LOCKSHARED | LOCKLEAF | AUDITVNODE1, pathseg, path, fd, &cap_fstat_rights, td); - if ((error = namei(&nd)) != 0) + if ((error = namei(&nd)) != 0) { + if (error == ENOTDIR && + (nd.ni_resflags & NIRES_EMPTYPATH) != 0) + error = kern_fstat(td, fd, sbp); return (error); + } error = VOP_STAT(nd.ni_vp, sbp, td->td_ucred, NOCRED, td); NDFREE_NOTHING(&nd); vput(nd.ni_vp); |