Page MenuHomeFreeBSD

D50531.id156055.diff
No OneTemporary

D50531.id156055.diff

diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c
--- a/sys/kern/vfs_vnops.c
+++ b/sys/kern/vfs_vnops.c
@@ -258,7 +258,8 @@
return (EINVAL);
else if ((fmode & (O_CREAT | O_DIRECTORY)) == O_CREAT) {
ndp->ni_cnd.cn_nameiop = CREATE;
- ndp->ni_cnd.cn_flags = open2nameif(fmode, vn_open_flags);
+ ndp->ni_cnd.cn_flags |= open2nameif(fmode, vn_open_flags);
+
/*
* Set NOCACHE to avoid flushing the cache when
* rolling in many files at once.
@@ -348,9 +349,14 @@
}
} else {
ndp->ni_cnd.cn_nameiop = LOOKUP;
- ndp->ni_cnd.cn_flags = open2nameif(fmode, vn_open_flags);
- ndp->ni_cnd.cn_flags |= (fmode & O_NOFOLLOW) != 0 ? NOFOLLOW :
- FOLLOW;
+ ndp->ni_cnd.cn_flags |= open2nameif(fmode, vn_open_flags);
+ if ((fmode & O_NOFOLLOW) != 0) {
+ ndp->ni_cnd.cn_flags &= ~FOLLOW;
+ ndp->ni_cnd.cn_flags |= NOFOLLOW;
+ } else {
+ ndp->ni_cnd.cn_flags &= ~NOFOLLOW;
+ ndp->ni_cnd.cn_flags |= FOLLOW;
+ }
if ((fmode & FWRITE) == 0)
ndp->ni_cnd.cn_flags |= LOCKSHARED;
if ((error = namei(ndp)) != 0)

File Metadata

Mime Type
text/plain
Expires
Fri, Apr 24, 2:46 PM (9 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32080828
Default Alt Text
D50531.id156055.diff (1 KB)

Event Timeline