Page MenuHomeFreeBSD

D40906.id124276.diff
No OneTemporary

D40906.id124276.diff

diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c
--- a/sys/kern/vfs_cache.c
+++ b/sys/kern/vfs_cache.c
@@ -3665,23 +3665,7 @@
addend = 0;
- /*
- * Check for VBAD to work around the vp_crossmp bug in lookup().
- *
- * For example consider tmpfs on /tmp and realpath /tmp. ni_vp will be
- * set to mount point's root vnode while ni_dvp will be vp_crossmp.
- * If the type is VDIR (like in this very case) we can skip looking
- * at ni_dvp in the first place. However, since vnodes get passed here
- * unlocked the target may transition to doomed state (type == VBAD)
- * before we get to evaluate the condition. If this happens, we will
- * populate part of the buffer and descend to vn_fullpath_dir with
- * vp == vp_crossmp. Prevent the problem by checking for VBAD.
- */
type = atomic_load_8(&vp->v_type);
- if (type == VBAD) {
- error = ENOENT;
- goto out_bad;
- }
if (type != VDIR) {
addend = hrdl_name_length + 2;
if (*buflen < addend) {

File Metadata

Mime Type
text/plain
Expires
Tue, Mar 3, 5:05 PM (11 h, 26 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29206771
Default Alt Text
D40906.id124276.diff (980 B)

Event Timeline