aboutsummaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/kern_descrip.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 9a448b4e938f..132f326cbda7 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -1791,10 +1791,12 @@ fdcheckstd(td)
break;
}
NDFREE(&nd, NDF_ONLY_PNBUF);
- fp->f_vnode = nd.ni_vp;
- fp->f_data = nd.ni_vp;
fp->f_flag = flags;
- fp->f_ops = &vnops;
+ fp->f_vnode = nd.ni_vp;
+ if (fp->f_data == NULL)
+ fp->f_data = nd.ni_vp;
+ if (fp->f_ops == &badfileops)
+ fp->f_ops = &vnops;
fp->f_type = DTYPE_VNODE;
VOP_UNLOCK(nd.ni_vp, 0, td);
devnull = fd;