svn commit: r193262 - head/sys/compat/linux

Dmitry Chagin dchagin at FreeBSD.org
Mon Jun 1 20:42:28 UTC 2009


Author: dchagin
Date: Mon Jun  1 20:42:27 2009
New Revision: 193262
URL: http://svn.freebsd.org/changeset/base/193262

Log:
  Split linux_accept() syscall onto linux_accept_common() which should
  be used by linuxulator and linux_accept() itself.
  
  Approved by:	kib (mentor)
  MFC after:	1 month

Modified:
  head/sys/compat/linux/linux_socket.c

Modified: head/sys/compat/linux/linux_socket.c
==============================================================================
--- head/sys/compat/linux/linux_socket.c	Mon Jun  1 20:41:33 2009	(r193261)
+++ head/sys/compat/linux/linux_socket.c	Mon Jun  1 20:42:27 2009	(r193262)
@@ -763,14 +763,9 @@ linux_listen(struct thread *td, struct l
 	return (listen(td, &bsd_args));
 }
 
-struct linux_accept_args {
-	int s;
-	l_uintptr_t addr;
-	l_uintptr_t namelen;
-};
-
 static int
-linux_accept(struct thread *td, struct linux_accept_args *args)
+linux_accept_common(struct thread *td, int s, l_uintptr_t addr,
+    l_uintptr_t namelen)
 {
 	struct accept_args /* {
 		int	s;
@@ -779,19 +774,19 @@ linux_accept(struct thread *td, struct l
 	} */ bsd_args;
 	int error, fd;
 
-	bsd_args.s = args->s;
+	bsd_args.s = s;
 	/* XXX: */
-	bsd_args.name = (struct sockaddr * __restrict)PTRIN(args->addr);
-	bsd_args.anamelen = PTRIN(args->namelen);/* XXX */
+	bsd_args.name = (struct sockaddr * __restrict)PTRIN(addr);
+	bsd_args.anamelen = PTRIN(namelen);/* XXX */
 	error = accept(td, &bsd_args);
 	bsd_to_linux_sockaddr((struct sockaddr *)bsd_args.name);
 	if (error) {
-		if (error == EFAULT && args->namelen != sizeof(struct sockaddr_in))
+		if (error == EFAULT && namelen != sizeof(struct sockaddr_in))
 			return (EINVAL);
 		return (error);
 	}
-	if (args->addr) {
-		error = linux_sa_put(PTRIN(args->addr));
+	if (addr) {
+		error = linux_sa_put(PTRIN(addr));
 		if (error) {
 			(void)kern_close(td, td->td_retval[0]);
 			return (error);
@@ -809,6 +804,20 @@ linux_accept(struct thread *td, struct l
 	return (0);
 }
 
+struct linux_accept_args {
+	int s;
+	l_uintptr_t addr;
+	l_uintptr_t namelen;
+};
+
+static int
+linux_accept(struct thread *td, struct linux_accept_args *args)
+{
+
+	return (linux_accept_common(td, args->s, args->addr,
+	    args->namelen));
+}
+
 struct linux_getsockname_args {
 	int s;
 	l_uintptr_t addr;


More information about the svn-src-head mailing list