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);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to