Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 May 2009 03:23:22 +0000 (UTC)
From:      Dmitry Chagin <dchagin@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r191871 - head/sys/compat/linux
Message-ID:  <200905070323.n473NM0o038829@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dchagin
Date: Thu May  7 03:23:22 2009
New Revision: 191871
URL: http://svn.freebsd.org/changeset/base/191871

Log:
  Rework r191742.
  Use the protocol family constants for the domain argument validation.
  
  Return EAFNOSUPPORT in case when the incorrect domain argument
  is specified.
  
  Return EPROTONOSUPPORT instead of passing values that are not 0
  to the BSD layer.
  
  Suggested by:   rwatson
  
  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	Thu May  7 02:17:09 2009	(r191870)
+++ head/sys/compat/linux/linux_socket.c	Thu May  7 03:23:22 2009	(r191871)
@@ -855,14 +855,21 @@ linux_socketpair(struct thread *td, stru
 	} */ bsd_args;
 
 	bsd_args.domain = linux_to_bsd_domain(args->domain);
-	if (bsd_args.domain == -1)
-		return (EINVAL);
+	if (bsd_args.domain != PF_LOCAL)
+		return (EAFNOSUPPORT);
 
 	bsd_args.type = args->type;
-	if (bsd_args.domain == AF_LOCAL && args->protocol == PF_UNIX)
-		bsd_args.protocol = 0;
+	if (args->protocol != 0 && args->protocol != PF_UNIX)
+
+		/*
+		 * Use of PF_UNIX as protocol argument is not right,
+		 * but Linux does it.
+		 * Do not map PF_UNIX as its Linux value is identical
+		 * to FreeBSD one.
+		 */
+		return (EPROTONOSUPPORT);
 	else
-		bsd_args.protocol = args->protocol;
+		bsd_args.protocol = 0;
 	bsd_args.rsv = (int *)PTRIN(args->rsv);
 	return (socketpair(td, &bsd_args));
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200905070323.n473NM0o038829>