Module Name:    src
Committed By:   pgoyette
Date:           Thu Apr 12 22:33:41 UTC 2018

Modified Files:
        src/sys/compat/common [pgoyette-compat]: Makefile.inc
            uipc_syscalls_40.c uipc_syscalls_50.c
        src/sys/compat/sys [pgoyette-compat]: sockio.h
        src/sys/kern [pgoyette-compat]: kern_stub.c
        src/sys/net [pgoyette-compat]: if.c
        src/sys/rump/librump/rumpnet [pgoyette-compat]: net_stub.c

Log Message:
Merge christos's recent changes on HEAD


To generate a diff of this commit:
cvs rdiff -u -r1.23.2.1 -r1.23.2.2 src/sys/compat/common/Makefile.inc
cvs rdiff -u -r1.15.2.5 -r1.15.2.6 src/sys/compat/common/uipc_syscalls_40.c
cvs rdiff -u -r1.3.56.3 -r1.3.56.4 src/sys/compat/common/uipc_syscalls_50.c
cvs rdiff -u -r1.10.58.1 -r1.10.58.2 src/sys/compat/sys/sockio.h
cvs rdiff -u -r1.44.2.1 -r1.44.2.2 src/sys/kern/kern_stub.c
cvs rdiff -u -r1.419.2.4 -r1.419.2.5 src/sys/net/if.c
cvs rdiff -u -r1.31 -r1.31.2.1 src/sys/rump/librump/rumpnet/net_stub.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/compat/common/Makefile.inc
diff -u src/sys/compat/common/Makefile.inc:1.23.2.1 src/sys/compat/common/Makefile.inc:1.23.2.2
--- src/sys/compat/common/Makefile.inc:1.23.2.1	Tue Mar 13 08:53:06 2018
+++ src/sys/compat/common/Makefile.inc	Thu Apr 12 22:33:41 2018
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.inc,v 1.23.2.1 2018/03/13 08:53:06 pgoyette Exp $
+#	$NetBSD: Makefile.inc,v 1.23.2.2 2018/04/12 22:33:41 pgoyette Exp $
 #
 #	Configuration variables (default values are below):
 #
@@ -17,7 +17,11 @@
 
 # Default values:
 COMPATDST?=		${.OBJDIR}/lib/compat
+.if !empty(OPT_MODULAR)
+COMPAT_AS?=		library
+.else
 COMPAT_AS?=		obj
+.endif
 COMPATDOTDIR?= ../../.
 
 COMPATDIR=		${S:S@^.@${COMPATDOTDIR}@:Q}/compat/common

Index: src/sys/compat/common/uipc_syscalls_40.c
diff -u src/sys/compat/common/uipc_syscalls_40.c:1.15.2.5 src/sys/compat/common/uipc_syscalls_40.c:1.15.2.6
--- src/sys/compat/common/uipc_syscalls_40.c:1.15.2.5	Thu Mar  8 09:56:05 2018
+++ src/sys/compat/common/uipc_syscalls_40.c	Thu Apr 12 22:33:41 2018
@@ -1,9 +1,9 @@
-/*	$NetBSD: uipc_syscalls_40.c,v 1.15.2.5 2018/03/08 09:56:05 pgoyette Exp $	*/
+/*	$NetBSD: uipc_syscalls_40.c,v 1.15.2.6 2018/04/12 22:33:41 pgoyette Exp $	*/
 
 /* written by Pavel Cahyna, 2006. Public domain. */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls_40.c,v 1.15.2.5 2018/03/08 09:56:05 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls_40.c,v 1.15.2.6 2018/04/12 22:33:41 pgoyette Exp $");
 
 /*
  * System call interface to the socket abstraction.
@@ -44,6 +44,14 @@ compat_ifconf(u_long cmd, void *data)
 	int bound;
 	struct psref psref;
 
+	switch (cmd) {
+	case OSIOCGIFCONF:
+	case OOSIOCGIFCONF:
+		break;
+	default:
+		return ENOSYS;
+	}
+
 	if (docopy) {
 		space = ifc->ifc_len;
 		ifrp = ifc->ifc_req;
@@ -153,14 +161,10 @@ release_exit:
 	return error;
 }
 
-static int (*orig_compat_ifconf)(u_long, void *);
-static int (*orig_compat_ifconf)(u_long, void *);
- 
 void      
 if_40_init(void)
 {
  
-	orig_compat_ifconf = vec_compat_ifconf; 
 	vec_compat_ifconf = compat_ifconf;
 }
  
@@ -168,5 +172,5 @@ void
 if_40_fini(void)
 {
  
-	vec_compat_ifconf = orig_compat_ifconf;
+	vec_compat_ifconf = (void *)enosys;
 }

Index: src/sys/compat/common/uipc_syscalls_50.c
diff -u src/sys/compat/common/uipc_syscalls_50.c:1.3.56.3 src/sys/compat/common/uipc_syscalls_50.c:1.3.56.4
--- src/sys/compat/common/uipc_syscalls_50.c:1.3.56.3	Thu Mar  8 09:56:05 2018
+++ src/sys/compat/common/uipc_syscalls_50.c	Thu Apr 12 22:33:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_syscalls_50.c,v 1.3.56.3 2018/03/08 09:56:05 pgoyette Exp $	*/
+/*	$NetBSD: uipc_syscalls_50.c,v 1.3.56.4 2018/04/12 22:33:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls_50.c,v 1.3.56.3 2018/03/08 09:56:05 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_syscalls_50.c,v 1.3.56.4 2018/04/12 22:33:41 pgoyette Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -57,7 +57,7 @@ __KERNEL_RCSID(0, "$NetBSD: uipc_syscall
 #include <compat/sys/if.h>
 
 /*ARGSUSED*/
-int
+static int
 compat_ifdatareq(struct lwp *l, u_long cmd, void *data)
 {
 	struct oifdatareq *ifdr = data;
@@ -92,19 +92,16 @@ compat_ifdatareq(struct lwp *l, u_long c
 		return 0;
 
 	default:
-		return EINVAL;
+		return ENOSYS;
 	}
 }
 
 /* Save and restore compat vector as needed */
 
-int (*orig_compat_ifdatareq)(struct lwp *, u_long, void *);
-
 void
 if_50_init(void)
 {
 
-	orig_compat_ifdatareq = vec_compat_ifdatareq;
 	vec_compat_ifdatareq = compat_ifdatareq;
 }
 
@@ -112,5 +109,5 @@ void
 if_50_fini(void)
 {
 
-	vec_compat_ifdatareq = orig_compat_ifdatareq;
+	vec_compat_ifdatareq = (void *)enosys;
 }

Index: src/sys/compat/sys/sockio.h
diff -u src/sys/compat/sys/sockio.h:1.10.58.1 src/sys/compat/sys/sockio.h:1.10.58.2
--- src/sys/compat/sys/sockio.h:1.10.58.1	Thu Mar  8 01:37:46 2018
+++ src/sys/compat/sys/sockio.h	Thu Apr 12 22:33:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: sockio.h,v 1.10.58.1 2018/03/08 01:37:46 pgoyette Exp $	*/
+/*	$NetBSD: sockio.h,v 1.10.58.2 2018/04/12 22:33:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1982, 1986, 1990, 1993, 1994
@@ -56,8 +56,10 @@
 
 #endif /* _KERNEL_OPT */
 
+#define	OIFNAMSIZ	16
+
 struct oifreq {
-	char	ifr_name[IFNAMSIZ];		/* if name, e.g. "en0" */
+	char	ifr_name[OIFNAMSIZ];		/* if name, e.g. "en0" */
 	union {
 		struct	sockaddr ifru_addr;
 		struct	sockaddr ifru_dstaddr;
@@ -114,7 +116,7 @@ struct oif_data {
 };
 
 struct oifdatareq {
-	char	ifdr_name[IFNAMSIZ];		/* if name, e.g. "en0" */
+	char	ifdr_name[OIFNAMSIZ];		/* if name, e.g. "en0" */
 	struct	oif_data ifdr_data;
 };
 
@@ -178,7 +180,9 @@ struct oifdatareq {
 		(ni)->ifi_lastchange.tv_nsec = \
 		    (oi)->ifi_lastchange.tv_usec * 1000; \
 	} while (/*CONSTCOND*/0)
+
 #ifdef _KERNEL
+
 void if_50_init(void);
 void if_50_fini(void);
 
@@ -186,5 +190,7 @@ __BEGIN_DECLS
 int compat_ifconf(u_long, void *);
 int compat_ifdatareq(struct lwp *, u_long, void *);
 __END_DECLS
+
 #endif
+
 #endif /* _COMPAT_SYS_SOCKIO_H_ */

Index: src/sys/kern/kern_stub.c
diff -u src/sys/kern/kern_stub.c:1.44.2.1 src/sys/kern/kern_stub.c:1.44.2.2
--- src/sys/kern/kern_stub.c:1.44.2.1	Sat Mar 10 03:33:27 2018
+++ src/sys/kern/kern_stub.c	Thu Apr 12 22:33:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_stub.c,v 1.44.2.1 2018/03/10 03:33:27 pgoyette Exp $	*/
+/*	$NetBSD: kern_stub.c,v 1.44.2.2 2018/04/12 22:33:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc.
@@ -62,11 +62,12 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_stub.c,v 1.44.2.1 2018/03/10 03:33:27 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_stub.c,v 1.44.2.2 2018/04/12 22:33:41 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ktrace.h"
 #include "opt_sysv.h"
+#include "opt_modular.h"
 #endif
 
 #include <sys/param.h>
@@ -87,6 +88,21 @@ bool default_bus_space_handle_is_equal(b
     bus_space_handle_t);
 
 /*
+ * SYSV Semaphores, Shared Memory, Message Queues
+ */
+#ifndef MODULAR
+#ifndef SYSVMSG
+__strong_alias(msgctl1,enosys);
+#endif
+#ifndef SYSVSHM
+__strong_alias(shmctl1,enosys);
+#endif
+ #ifndef SYSVSEM
+ __strong_alias(semctl1,enosys);
+ #endif
+#endif
+
+/*
  * ktrace stubs.  ktruser() goes to enosys as we want to fail the syscall,
  * but not kill the process: utrace() is a debugging feature.
  */

Index: src/sys/net/if.c
diff -u src/sys/net/if.c:1.419.2.4 src/sys/net/if.c:1.419.2.5
--- src/sys/net/if.c:1.419.2.4	Thu Mar  8 00:25:30 2018
+++ src/sys/net/if.c	Thu Apr 12 22:33:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: if.c,v 1.419.2.4 2018/03/08 00:25:30 pgoyette Exp $	*/
+/*	$NetBSD: if.c,v 1.419.2.5 2018/04/12 22:33:41 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2008 The NetBSD Foundation, Inc.
@@ -90,7 +90,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.419.2.4 2018/03/08 00:25:30 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.419.2.5 2018/04/12 22:33:41 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_inet.h"
@@ -157,7 +157,6 @@ __KERNEL_RCSID(0, "$NetBSD: if.c,v 1.419
 
 #include <compat/sys/sockio.h>
 #include <compat/sys/socket.h>
-#include <compat/sys/if.h>
 
 MALLOC_DEFINE(M_IFADDR, "ifaddr", "interface address");
 MALLOC_DEFINE(M_IFMADDR, "ether_multi", "link-level multicast address");
@@ -243,58 +242,12 @@ static void sysctl_net_pktq_setup(struct
 
 static void if_sysctl_setup(struct sysctllog **);
 
-/*
- * Pointer to stub or real compat_cvtcmd() depending on presence of
- * the compat module
- */
-u_long stub_compat_cvtcmd(u_long);
-u_long (*vec_compat_cvtcmd)(u_long) = stub_compat_cvtcmd;
-
-/* Similarly, pointer to compat_ifioctl() if it is present */
-
+/* Compatability vector functions */
+u_long (*vec_compat_cvtcmd)(u_long) = NULL;
 int (*vec_compat_ifioctl)(struct socket *, u_long, u_long, void *,
 	struct lwp *) = NULL;
-
-/*
- * And a few more
- */
-int stub_compat_ifdatareq(struct lwp *, u_long, void *);
-int (*vec_compat_ifdatareq)(struct lwp *, u_long, void *) =
-    stub_compat_ifdatareq;
-
-void stub_compat_ifreqo2n(struct oifreq *, struct ifreq *);
-void (*vec_compat_ifreqo2n)(struct oifreq *, struct ifreq *) =
-    stub_compat_ifreqo2n;
-
-int stub_compat_ifconf(u_long, void *);
-int (*vec_compat_ifconf)(u_long, void *) = stub_compat_ifconf;
-
-/* The stub version of compat_cvtcmd() */
-u_long stub_compat_cvtcmd(u_long cmd)
-{
-
-	return cmd;
-}
-
-/* The stub version of compat_ifdatareq() */
-int stub_compat_ifdatareq(struct lwp *l, u_long cmd, void *data)
-{
-
-	return EINVAL;
-}
-
-/* The stub version of compat_ifreqo2n() */
-void stub_compat_ifreqo2n(struct oifreq *old, struct ifreq *new)
-{
-
-}
-
-/* The stub version of compat_ifconf() */
-int stub_compat_ifconf(u_long cmd, void *data)
-{
-
-	return EINVAL;
-}
+int (*vec_compat_ifconf)(struct lwp *, u_long, void *) = (void *)enosys;
+int (*vec_compat_ifdatareq)(struct lwp *, u_long, void *) = (void *)enosys;
 
 static int
 if_listener_cb(kauth_cred_t cred, kauth_action_t action, void *cookie,
@@ -3149,31 +3102,31 @@ doifioctl(struct socket *so, u_long cmd,
 	int bound;
 
 	switch (cmd) {
-#ifdef COMPAT_OIFREQ
-	case OSIOCGIFCONF:
-	case OOSIOCGIFCONF:
-		return (*vec_compat_ifconf)(cmd, data);
-#endif
-#ifdef COMPAT_OIFDATA
-	case OSIOCGIFDATA:
-	case OSIOCZIFDATA:
-		return (*vec_compat_ifdatareq)(l, cmd, data);
-#endif
 	case SIOCGIFCONF:
 		return ifconf(cmd, data);
 	case SIOCINITIFADDR:
 		return EPERM;
+	default:
+		error = (*vec_compat_ifconf)(l, cmd, data);
+		if (error != ENOSYS)
+			return error;
+		error = (*vec_compat_ifdatareq)(l, cmd, data);
+		if (error != ENOSYS)
+			return error;
+		break;
 	}
 
+	ifr = data;
 #ifdef COMPAT_OIFREQ
-	cmd = (*vec_compat_cvtcmd)(cmd);
-	if (cmd != ocmd) {
-		oifr = data;
-		data = ifr = &ifrb;
-		(*vec_compat_ifreqo2n)(oifr, ifr);
-	} else
+	if (vec_compat_cvtcmd) {
+		cmd = (*vec_compat_cvtcmd)(cmd);
+		if (cmd != ocmd) {
+			oifr = data;
+			data = ifr = &ifrb;
+			ifreqo2n(oifr, ifr);
+		}
+	}
 #endif
-		ifr = data;
 
 	switch (cmd) {
 	case SIOCIFCREATE:
@@ -3420,21 +3373,23 @@ release_exit:
 int
 ifreq_setaddr(u_long cmd, struct ifreq *ifr, const struct sockaddr *sa)
 {
-	uint8_t len;
+	uint8_t len = sizeof(ifr->ifr_ifru.ifru_space);
 #ifdef COMPAT_OIFREQ
 	struct ifreq ifrb;
 	struct oifreq *oifr = NULL;
 	u_long ocmd = cmd;
-	cmd = (*vec_compat_cvtcmd)(cmd);
-	if (cmd != ocmd) {
-		oifr = (struct oifreq *)(void *)ifr;
-		ifr = &ifrb;
-		(*vec_compat_ifreqo2n)(oifr, ifr);
-		len = sizeof(oifr->ifr_addr);
-	} else
-#endif
-		len = sizeof(ifr->ifr_ifru.ifru_space);
 
+	if (vec_compat_cvtcmd) {
+		cmd = (*vec_compat_cvtcmd)(cmd);
+		if (cmd != ocmd) {
+			oifr = (struct oifreq *)(void *)ifr;
+			ifr = &ifrb;
+			ifreqo2n(oifr, ifr);
+				len = sizeof(oifr->ifr_addr);
+		}
+	}
+
+#endif
 	if (len < sa->sa_len)
 		return EFBIG;
 

Index: src/sys/rump/librump/rumpnet/net_stub.c
diff -u src/sys/rump/librump/rumpnet/net_stub.c:1.31 src/sys/rump/librump/rumpnet/net_stub.c:1.31.2.1
--- src/sys/rump/librump/rumpnet/net_stub.c:1.31	Tue Feb 27 15:01:30 2018
+++ src/sys/rump/librump/rumpnet/net_stub.c	Thu Apr 12 22:33:41 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: net_stub.c,v 1.31 2018/02/27 15:01:30 maxv Exp $	*/
+/*	$NetBSD: net_stub.c,v 1.31.2.1 2018/04/12 22:33:41 pgoyette Exp $	*/
 
 /*
  * Copyright (c) 2008 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: net_stub.c,v 1.31 2018/02/27 15:01:30 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: net_stub.c,v 1.31.2.1 2018/04/12 22:33:41 pgoyette Exp $");
 
 #include <sys/mutex.h>
 #include <sys/param.h>
@@ -109,10 +109,3 @@ __weak_alias(key_sp_unref,rumpnet_stub);
 struct ifnet_head ifnet_list;
 struct pslist_head ifnet_pslist;
 kmutex_t ifnet_mtx;
-
-int
-compat_ifconf(u_long cmd, void *data)
-{
-
-	return EOPNOTSUPP;
-}

Reply via email to