summaryrefslogtreecommitdiffstats
path: root/sys/compat
diff options
context:
space:
mode:
authordillon <dillon@FreeBSD.org>2001-11-17 18:43:13 +0000
committerdillon <dillon@FreeBSD.org>2001-11-17 18:43:13 +0000
commit271e61648420b256374ae031ae2d70a0c59672ba (patch)
treeb1149a213564bfae65807f5b610fac1cdf7722d5 /sys/compat
parentda12fd2ad37f43c6b84ab0f63563b5fcdd574f3e (diff)
downloadFreeBSD-src-271e61648420b256374ae031ae2d70a0c59672ba.zip
FreeBSD-src-271e61648420b256374ae031ae2d70a0c59672ba.tar.gz
Fix missing holdsock()->fgetsock()
Submitted by: Hisashi Hiramoto <hiramoto@phys.chs.nihon-u.ac.jp>
Diffstat (limited to 'sys/compat')
-rw-r--r--sys/compat/linux/linux_socket.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c
index c09c0bd..f0ee0ce 100644
--- a/sys/compat/linux/linux_socket.c
+++ b/sys/compat/linux/linux_socket.c
@@ -416,7 +416,7 @@ linux_connect(struct thread *td, struct linux_connect_args *args)
int namelen;
} */ bsd_args;
struct socket *so;
- struct file *fp;
+ u_int fflag;
int error;
#ifdef __alpha__
@@ -438,17 +438,15 @@ linux_connect(struct thread *td, struct linux_connect_args *args)
* when on a non-blocking socket. Instead it returns the
* error getsockopt(SOL_SOCKET, SO_ERROR) would return on BSD.
*/
- error = holdsock(td->td_proc->p_fd, linux_args.s, &fp);
- if (error)
- return (error);
+ if ((error = fgetsock(td, linux_args.s, &so, &fflag)) != 0)
+ return(error);
error = EISCONN;
- if (fp->f_flag & FNONBLOCK) {
- so = (struct socket *)fp->f_data;
+ if (fflag & FNONBLOCK) {
if (so->so_emuldata == 0)
error = so->so_error;
so->so_emuldata = (void *)1;
}
- fdrop(fp, td);
+ fputsock(so);
return (error);
}
OpenPOWER on IntegriCloud