From 3237babd8b5786ce6ea9b516c89f43c32f8c35b2 Mon Sep 17 00:00:00 2001 From: phk Date: Sat, 19 Jun 2004 11:41:45 +0000 Subject: [PATCH] Only initialize f_data and f_ops if nobody else did so already. --- sys/kern/vfs_extattr.c | 6 ++++-- sys/kern/vfs_syscalls.c | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/sys/kern/vfs_extattr.c b/sys/kern/vfs_extattr.c index 50ab8ed2e9c..10ff13f69ad 100644 --- a/sys/kern/vfs_extattr.c +++ b/sys/kern/vfs_extattr.c @@ -1033,9 +1033,11 @@ kern_open(struct thread *td, char *path, enum uio_seg pathseg, int flags, return (0); } fp->f_vnode = vp; - fp->f_data = vp; + if (fp->f_data == NULL) + fp->f_data = vp; fp->f_flag = flags & FMASK; - fp->f_ops = &vnops; + if (fp->f_ops == &badfileops) + fp->f_ops = &vnops; fp->f_seqcount = 1; fp->f_type = (vp->v_type == VFIFO ? DTYPE_FIFO : DTYPE_VNODE); FILEDESC_UNLOCK(fdp); diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 50ab8ed2e9c..10ff13f69ad 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -1033,9 +1033,11 @@ kern_open(struct thread *td, char *path, enum uio_seg pathseg, int flags, return (0); } fp->f_vnode = vp; - fp->f_data = vp; + if (fp->f_data == NULL) + fp->f_data = vp; fp->f_flag = flags & FMASK; - fp->f_ops = &vnops; + if (fp->f_ops == &badfileops) + fp->f_ops = &vnops; fp->f_seqcount = 1; fp->f_type = (vp->v_type == VFIFO ? DTYPE_FIFO : DTYPE_VNODE); FILEDESC_UNLOCK(fdp); -- 2.45.2