diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c index 80dab32530d..ff99bbde6fc 100644 --- a/sys/compat/linux/linux_socket.c +++ b/sys/compat/linux/linux_socket.c @@ -803,9 +803,12 @@ linux_accept_common(struct thread *td, int s, l_uintptr_t addr, error1 = getsock_cap(td, s, &rights, &fp, NULL); if (error1 != 0) return (error1); - so = (struct socket *)fp->f_data; - if (so->so_type == SOCK_DGRAM) + so = fp->f_data; + if (so->so_type == SOCK_DGRAM) { + fdrop(fp, td); return (EOPNOTSUPP); + } + fdrop(fp, td); } return (error); }