Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Aug 2020 16:41:10 +0000 (UTC)
From:      Edward Tomasz Napierala <trasz@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org
Subject:   svn commit: r364709 - stable/12/sys/compat/linux
Message-ID:  <202008241641.07OGfAtj084509@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: trasz
Date: Mon Aug 24 16:41:10 2020
New Revision: 364709
URL: https://svnweb.freebsd.org/changeset/base/364709

Log:
  MFC r356729:
  
  Make linux(4) use kern_setsockopt(9) instead of going through
  sys_setsockopt.  Just a cleanup; no functional changes.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  stable/12/sys/compat/linux/linux_socket.c
Directory Properties:
  stable/12/   (props changed)

Modified: stable/12/sys/compat/linux/linux_socket.c
==============================================================================
--- stable/12/sys/compat/linux/linux_socket.c	Mon Aug 24 16:36:35 2020	(r364708)
+++ stable/12/sys/compat/linux/linux_socket.c	Mon Aug 24 16:41:10 2020	(r364709)
@@ -1428,22 +1428,14 @@ linux_shutdown(struct thread *td, struct linux_shutdow
 int
 linux_setsockopt(struct thread *td, struct linux_setsockopt_args *args)
 {
-	struct setsockopt_args /* {
-		int s;
-		int level;
-		int name;
-		caddr_t val;
-		int valsize;
-	} */ bsd_args;
 	l_timeval linux_tv;
 	struct sockaddr *sa;
 	struct timeval tv;
 	socklen_t len;
-	int error, name;
+	int error, level, name;
 
-	bsd_args.s = args->s;
-	bsd_args.level = linux_to_bsd_sockopt_level(args->level);
-	switch (bsd_args.level) {
+	level = linux_to_bsd_sockopt_level(args->level);
+	switch (level) {
 	case SOL_SOCKET:
 		name = linux_to_bsd_so_sockopt(args->optname);
 		switch (name) {
@@ -1456,7 +1448,7 @@ linux_setsockopt(struct thread *td, struct linux_setso
 				return (error);
 			tv.tv_sec = linux_tv.tv_sec;
 			tv.tv_usec = linux_tv.tv_usec;
-			return (kern_setsockopt(td, args->s, bsd_args.level,
+			return (kern_setsockopt(td, args->s, level,
 			    name, &tv, UIO_SYSSPACE, sizeof(tv)));
 			/* NOTREACHED */
 		default:
@@ -1489,20 +1481,17 @@ linux_setsockopt(struct thread *td, struct linux_setso
 
 
 	if (name == IPV6_NEXTHOP) {
-
 		len = args->optlen;
 		error = linux_to_bsd_sockaddr(PTRIN(args->optval), &sa, &len);
 		if (error != 0)
 			return (error);
 
-		error = kern_setsockopt(td, args->s, bsd_args.level,
+		error = kern_setsockopt(td, args->s, level,
 		    name, sa, UIO_SYSSPACE, len);
 		free(sa, M_SONAME);
 	} else {
-		bsd_args.name = name;
-		bsd_args.val = PTRIN(args->optval);
-		bsd_args.valsize = args->optlen;
-		error = sys_setsockopt(td, &bsd_args);
+		error = kern_setsockopt(td, args->s, level,
+		    name, PTRIN(args->optval), UIO_USERSPACE, args->optlen);
 	}
 
 	return (error);



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