summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/uipc_syscalls.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
index cd494151e75..a27c09089ff 100644
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uipc_syscalls.c,v 1.167 2018/02/21 09:30:02 mpi Exp $ */
+/* $OpenBSD: uipc_syscalls.c,v 1.168 2018/03/28 09:54:00 mpi Exp $ */
/* $NetBSD: uipc_syscalls.c,v 1.19 1996/02/09 19:00:48 christos Exp $ */
/*
@@ -1160,9 +1160,11 @@ getsock(struct proc *p, int fdes, struct file **fpp)
if ((fp = fd_getfile(p->p_fd, fdes)) == NULL)
return (EBADF);
- if (fp->f_type != DTYPE_SOCKET)
- return (ENOTSOCK);
FREF(fp);
+ if (fp->f_type != DTYPE_SOCKET) {
+ FRELE(fp, p);
+ return (ENOTSOCK);
+ }
*fpp = fp;
return (0);