summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/sys/os/os_filedes.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/sys/os/os_filedes.c b/src/sys/os/os_filedes.c
index 6fa3e5a..ad1de1f 100644
--- a/src/sys/os/os_filedes.c
+++ b/src/sys/os/os_filedes.c
@@ -135,19 +135,17 @@ fd_dup(struct proc *procp, int fd)
return NULL;
}
- /* We need the old vnode too */
- if (old->vp == NULL) {
- return NULL;
- }
-
/* Allocate an even newer file descriptor */
error = fd_alloc(procp, &new);
if (error != 0) {
return NULL;
}
- /* Grab a ref and copy */
- vnode_ref(old->vp);
+ /* Grab a ref if we can */
+ if (old->vp != NULL) {
+ vnode_ref(old->vp);
+ }
+
new->mode = old->mode;
new->vp = old->vp;
return new;