Module Name:    src
Committed By:   pgoyette
Date:           Mon Oct 15 09:51:34 UTC 2018

Modified Files:
        src/sys/compat/common [pgoyette-compat]: compat_70_mod.c tty_60.c
        src/sys/compat/net [pgoyette-compat]: route_70.h
        src/sys/kern [pgoyette-compat]: compat_stub.c tty.c tty_ptm.c
            uipc_usrreq.c
        src/sys/sys [pgoyette-compat]: compat_stub.h module.h tty.h

Log Message:
Convert another hook to the MP-sfe mechanism.

XXX still have three more to convert: openat_10, sysvipc50_sysctl and
XXX compat70_unp_addsockcred


To generate a diff of this commit:
cvs rdiff -u -r1.1.2.10 -r1.1.2.11 src/sys/compat/common/compat_70_mod.c
cvs rdiff -u -r1.4.16.4 -r1.4.16.5 src/sys/compat/common/tty_60.c
cvs rdiff -u -r1.1.2.3 -r1.1.2.4 src/sys/compat/net/route_70.h
cvs rdiff -u -r1.1.2.28 -r1.1.2.29 src/sys/kern/compat_stub.c
cvs rdiff -u -r1.275.2.4 -r1.275.2.5 src/sys/kern/tty.c
cvs rdiff -u -r1.37.16.1 -r1.37.16.2 src/sys/kern/tty_ptm.c
cvs rdiff -u -r1.183.2.3 -r1.183.2.4 src/sys/kern/uipc_usrreq.c
cvs rdiff -u -r1.1.2.40 -r1.1.2.41 src/sys/sys/compat_stub.h
cvs rdiff -u -r1.41.14.13 -r1.41.14.14 src/sys/sys/module.h
cvs rdiff -u -r1.94.2.2 -r1.94.2.3 src/sys/sys/tty.h

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/compat_70_mod.c
diff -u src/sys/compat/common/compat_70_mod.c:1.1.2.10 src/sys/compat/common/compat_70_mod.c:1.1.2.11
--- src/sys/compat/common/compat_70_mod.c:1.1.2.10	Sat Sep 22 04:56:28 2018
+++ src/sys/compat/common/compat_70_mod.c	Mon Oct 15 09:51:33 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: compat_70_mod.c,v 1.1.2.10 2018/09/22 04:56:28 pgoyette Exp $	*/
+/*	$NetBSD: compat_70_mod.c,v 1.1.2.11 2018/10/15 09:51:33 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -38,7 +38,7 @@
 #endif
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: compat_70_mod.c,v 1.1.2.10 2018/09/22 04:56:28 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: compat_70_mod.c,v 1.1.2.11 2018/10/15 09:51:33 pgoyette Exp $");
 
 #include <sys/systm.h>
 #include <sys/module.h>
@@ -56,7 +56,7 @@ __KERNEL_RCSID(0, "$NetBSD: compat_70_mo
 int compat_70_init(void)
 {
 
-	vec_ocreds_valid = true;
+	compat70_ocreds_valid = true;
 	rtsock_70_init();
 
 	return 0;
@@ -66,7 +66,7 @@ int compat_70_fini(void)
 {
 
 	rtsock_70_fini();
-	vec_ocreds_valid = false;
+	compat70_ocreds_valid = false;
 
 	return 0;
 }

Index: src/sys/compat/common/tty_60.c
diff -u src/sys/compat/common/tty_60.c:1.4.16.4 src/sys/compat/common/tty_60.c:1.4.16.5
--- src/sys/compat/common/tty_60.c:1.4.16.4	Tue Sep  4 02:21:58 2018
+++ src/sys/compat/common/tty_60.c	Mon Oct 15 09:51:33 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty_60.c,v 1.4.16.4 2018/09/04 02:21:58 pgoyette Exp $	*/
+/*	$NetBSD: tty_60.c,v 1.4.16.5 2018/10/15 09:51:33 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty_60.c,v 1.4.16.4 2018/09/04 02:21:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty_60.c,v 1.4.16.5 2018/10/15 09:51:33 pgoyette Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -41,6 +41,7 @@ __KERNEL_RCSID(0, "$NetBSD: tty_60.c,v 1
 #include <sys/conf.h>
 #include <sys/errno.h>
 #include <sys/systm.h>
+#include <sys/compat_stub.h>
 
 #include <sys/tty.h>
 
@@ -117,17 +118,23 @@ compat_60_ptmioctl(dev_t dev, u_long cmd
 	}
 }
 
+/* 
+ * Hooks for compat_60 ttioctl and ptmioctl
+ */
+MODULE_SET_HOOK2(compat_60_ioctl_hook, "tty_60", compat_60_ttioctl,
+    compat_60_ptmioctl);
+MODULE_UNSET_HOOK2(compat_60_ioctl_hook);
+
+
 void
 kern_tty_60_init(void)
 {
 
-	vec_compat_ttioctl_60 = compat_60_ttioctl;
-	vec_compat_ptmioctl_60 = compat_60_ptmioctl;
+	compat_60_ioctl_hook_set();
 }
 
 void
 kern_tty_60_fini(void)
 {
-	vec_compat_ttioctl_60 = NULL;
-	vec_compat_ptmioctl_60 = stub_compat_ptmioctl_60;
+	compat_60_ioctl_hook_unset();
 }

Index: src/sys/compat/net/route_70.h
diff -u src/sys/compat/net/route_70.h:1.1.2.3 src/sys/compat/net/route_70.h:1.1.2.4
--- src/sys/compat/net/route_70.h:1.1.2.3	Mon Oct 15 04:33:34 2018
+++ src/sys/compat/net/route_70.h	Mon Oct 15 09:51:33 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: route_70.h,v 1.1.2.3 2018/10/15 04:33:34 pgoyette Exp $	*/
+/*	$NetBSD: route_70.h,v 1.1.2.4 2018/10/15 09:51:33 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -39,6 +39,6 @@
 void rtsock_70_init(void);
 void rtsock_70_fini(void);
 
-extern bool vec_ocreds_valid;
+extern bool compat70_ocreds_valid;
 
 #endif /* !_COMPAT_NET_ROUTE_70_H_ */

Index: src/sys/kern/compat_stub.c
diff -u src/sys/kern/compat_stub.c:1.1.2.28 src/sys/kern/compat_stub.c:1.1.2.29
--- src/sys/kern/compat_stub.c:1.1.2.28	Mon Oct 15 04:33:34 2018
+++ src/sys/kern/compat_stub.c	Mon Oct 15 09:51:33 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.c,v 1.1.2.28 2018/10/15 04:33:34 pgoyette Exp $	*/
+/* $NetBSD: compat_stub.c,v 1.1.2.29 2018/10/15 09:51:33 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -187,3 +187,9 @@ struct get_emul_sunos_hook_t get_emul_su
  */
 struct rnd_ioctl_50_hook_t rnd_ioctl_50_hook;
 struct rnd_ioctl_50_32_hook_t rnd_ioctl_50_32_hook;
+
+/* 
+ * Hooks for compat_60 ttioctl and ptmioctl
+ */
+struct compat_60_ioctl_hook_t compat_60_ioctl_hook;
+

Index: src/sys/kern/tty.c
diff -u src/sys/kern/tty.c:1.275.2.4 src/sys/kern/tty.c:1.275.2.5
--- src/sys/kern/tty.c:1.275.2.4	Thu Sep  6 06:56:42 2018
+++ src/sys/kern/tty.c	Mon Oct 15 09:51:33 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty.c,v 1.275.2.4 2018/09/06 06:56:42 pgoyette Exp $	*/
+/*	$NetBSD: tty.c,v 1.275.2.5 2018/10/15 09:51:33 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -63,7 +63,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.275.2.4 2018/09/06 06:56:42 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.275.2.5 2018/10/15 09:51:33 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -98,6 +98,7 @@ __KERNEL_RCSID(0, "$NetBSD: tty.c,v 1.27
 #include <sys/ioctl_compat.h>
 #include <sys/module.h>
 #include <sys/bitops.h>
+#include <sys/compat_stub.h>
 
 #ifdef COMPAT_60
 #include <compat/sys/ttycom.h>
@@ -209,9 +210,6 @@ struct ttylist_head ttylist = TAILQ_HEAD
 int tty_count;
 kmutex_t tty_lock;
 krwlock_t ttcompat_lock;
-int (*vec_compat_ttioctl_60)(dev_t, u_long, void *, int, struct lwp *) = NULL;
-int (*vec_compat_ptmioctl_60)(dev_t, u_long, void *, int, struct lwp *) =
-    stub_compat_ptmioctl_60;
 
 struct ptm_pty *ptm = NULL;
 
@@ -921,6 +919,15 @@ ttyoutput(int c, struct tty *tp)
 }
 
 /*
+ * MODULE_HOOK glue for compat_60_ttioctl
+ */
+MODULE_CALL_HOOK_DECL(compat_60_ioctl_hook, f1, 
+    (dev_t, u_long, void *, int, struct lwp *));
+MODULE_CALL_HOOK(compat_60_ioctl_hook, f1, 
+    (dev_t dev, u_long cmd, void *data, int flag, struct lwp *l),
+    (dev, cmd, data, flag, l), enosys());
+    
+/*
  * Ioctls for all tty devices.  Called after line-discipline specific ioctl
  * has been called to do discipline-specific functions and/or reject any
  * of these ioctl commands.
@@ -1412,19 +1419,24 @@ ttioctl(struct tty *tp, u_long cmd, void
 		default:
 			break;
 		}
-		/* We may have to load the compat module for this. */
+		/* We may have to load the compat_60 module for this. */
 		for (;;) {
 			rw_enter(&ttcompat_lock, RW_READER);
-			if (vec_compat_ttioctl_60 != NULL) {
+			error = compat_60_ioctl_hook_f1_call(tp->t_dev, cmd,
+			    data, flag, l);
+			if (error != ENOSYS) {
 				break;
 			}
 			rw_exit(&ttcompat_lock);
-			(void)module_autoload("compat", MODULE_CLASS_EXEC);
-			if (vec_compat_ttioctl_60 == NULL) {
+			(void)module_autoload("compat_60", MODULE_CLASS_EXEC);
+			rw_enter(&ttcompat_lock, RW_READER);
+			error = compat_60_ioctl_hook_f1_call(tp->t_dev, cmd,
+			    data, flag, l);
+			if (error == ENOSYS) {
+				rw_exit(&ttcompat_lock);
 				return EPASSTHROUGH;
 			}
 		}
-		error = (*vec_compat_ttioctl_60)(tp->t_dev, cmd, data, flag, l);
 		rw_exit(&ttcompat_lock);
 		return error;
 	}
@@ -3068,11 +3080,3 @@ tty_try_xonxoff(struct tty *tp, unsigned
     }
     return EAGAIN;
 }
-
-int
-stub_compat_ptmioctl_60(dev_t dev, u_long cmd, void *data, int flag,
-    struct lwp *l)
-{
-
-	return EPASSTHROUGH;
-}

Index: src/sys/kern/tty_ptm.c
diff -u src/sys/kern/tty_ptm.c:1.37.16.1 src/sys/kern/tty_ptm.c:1.37.16.2
--- src/sys/kern/tty_ptm.c:1.37.16.1	Tue Sep  4 02:21:58 2018
+++ src/sys/kern/tty_ptm.c	Mon Oct 15 09:51:34 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty_ptm.c,v 1.37.16.1 2018/09/04 02:21:58 pgoyette Exp $	*/
+/*	$NetBSD: tty_ptm.c,v 1.37.16.2 2018/10/15 09:51:34 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2004 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tty_ptm.c,v 1.37.16.1 2018/09/04 02:21:58 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tty_ptm.c,v 1.37.16.2 2018/10/15 09:51:34 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -53,6 +53,7 @@ __KERNEL_RCSID(0, "$NetBSD: tty_ptm.c,v 
 #include <sys/poll.h>
 #include <sys/pty.h>
 #include <sys/kauth.h>
+#include <sys/compat_stub.h>
 
 #include <miscfs/specfs/specdev.h>
 
@@ -372,6 +373,24 @@ ptmclose(dev_t dev, int flag, int mode, 
 	return (0);
 }
 
+/*
+ * MODULE_HOOK glue for ptmioctl_60
+ */
+
+int                     
+stub_compat_ptmioctl_60(dev_t dev, u_long cmd, void *data, int flag,
+    struct lwp *l)
+{               
+        
+        return EPASSTHROUGH;
+}
+
+MODULE_CALL_HOOK_DECL(compat_60_ioctl_hook, f2,
+    (dev_t, u_long, void *, int, struct lwp *));
+MODULE_CALL_HOOK(compat_60_ioctl_hook, f2,
+    (dev_t dev, u_long cmd, void *data, int flag, struct lwp *l),
+    (dev, cmd, data, flag, l), enosys());
+
 static int
 /*ARGSUSED*/
 ptmioctl(dev_t dev, u_long cmd, void *data, int flag, struct lwp *l)
@@ -402,7 +421,7 @@ ptmioctl(dev_t dev, u_long cmd, void *da
 			goto bad2;
 		return 0;
 	default:
-		error = (*vec_compat_ptmioctl_60)(dev, cmd, data, flag, l);
+		error = compat_60_ioctl_hook_f2_call(dev, cmd, data, flag, l);
 		if (error != EPASSTHROUGH)
 			return error;
 		DPRINTF(("ptmioctl EINVAL\n"));

Index: src/sys/kern/uipc_usrreq.c
diff -u src/sys/kern/uipc_usrreq.c:1.183.2.3 src/sys/kern/uipc_usrreq.c:1.183.2.4
--- src/sys/kern/uipc_usrreq.c:1.183.2.3	Mon May 21 04:36:15 2018
+++ src/sys/kern/uipc_usrreq.c	Mon Oct 15 09:51:34 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: uipc_usrreq.c,v 1.183.2.3 2018/05/21 04:36:15 pgoyette Exp $	*/
+/*	$NetBSD: uipc_usrreq.c,v 1.183.2.4 2018/10/15 09:51:34 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000, 2004, 2008, 2009 The NetBSD Foundation, Inc.
@@ -96,7 +96,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.183.2.3 2018/05/21 04:36:15 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uipc_usrreq.c,v 1.183.2.4 2018/10/15 09:51:34 pgoyette Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_compat_netbsd.h"
@@ -209,7 +209,7 @@ struct mbuf *stub_compat_70_unp_addsockc
 	return control;
 }
 
-bool *vec_ocreds_valid = false;
+bool *compat70_ocreds_valid = false;
 
 /*
  * Initialize Unix protocols.
@@ -606,7 +606,7 @@ uipc_ctloutput(int op, struct socket *so
 	case PRCO_SETOPT:
 		switch (sopt->sopt_name) {
 		case LOCAL_OCREDS:
-			if (!*vec_ocreds_valid)  {
+			if (!*compat70_ocreds_valid)  {
 				error = ENOPROTOOPT;
 				break;
 			}
@@ -660,7 +660,7 @@ uipc_ctloutput(int op, struct socket *so
 			error = sockopt_setint(sopt, optval);
 			break;
 		case LOCAL_OCREDS:
-			if (*vec_ocreds_valid) {
+			if (*compat70_ocreds_valid) {
 				optval = OPTBIT(UNP_OWANTCRED);
 				error = sockopt_setint(sopt, optval);
 				break;

Index: src/sys/sys/compat_stub.h
diff -u src/sys/sys/compat_stub.h:1.1.2.40 src/sys/sys/compat_stub.h:1.1.2.41
--- src/sys/sys/compat_stub.h:1.1.2.40	Mon Oct 15 04:33:34 2018
+++ src/sys/sys/compat_stub.h	Mon Oct 15 09:51:34 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.h,v 1.1.2.40 2018/10/15 04:33:34 pgoyette Exp $	*/
+/* $NetBSD: compat_stub.h,v 1.1.2.41 2018/10/15 09:51:34 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -239,4 +239,10 @@ MODULE_HOOK(get_emul_sunos_hook, (const 
 MODULE_HOOK(rnd_ioctl_50_hook, (struct file *, u_long, void *));
 MODULE_HOOK(rnd_ioctl_50_32_hook, (struct file *, u_long, void *));
 
+/*
+ * Hooks for compat_60 ttioctl and ptmioctl
+ */
+MODULE_HOOK2(compat_60_ioctl_hook, (dev_t, u_long, void *, int, struct lwp *),
+    (dev_t, u_long, void *, int, struct lwp *));
+
 #endif	/* _SYS_COMPAT_STUB_H */

Index: src/sys/sys/module.h
diff -u src/sys/sys/module.h:1.41.14.13 src/sys/sys/module.h:1.41.14.14
--- src/sys/sys/module.h:1.41.14.13	Tue Sep 11 08:25:43 2018
+++ src/sys/sys/module.h	Mon Oct 15 09:51:34 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: module.h,v 1.41.14.13 2018/09/11 08:25:43 pgoyette Exp $	*/
+/*	$NetBSD: module.h,v 1.41.14.14 2018/10/15 09:51:34 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -219,8 +219,6 @@ extern char	module_base[MODULE_BASE_SIZE
 extern const char	*module_machine;
 
 struct netbsd32_modctl_args;
-extern int (*vec_compat32_80_modctl)(struct lwp *, 
-    const struct netbsd32_modctl_args *, register_t *);
 extern int compat32_80_modctl_compat_stub(struct lwp *,
     const struct netbsd32_modctl_args *, register_t *);
 

Index: src/sys/sys/tty.h
diff -u src/sys/sys/tty.h:1.94.2.2 src/sys/sys/tty.h:1.94.2.3
--- src/sys/sys/tty.h:1.94.2.2	Tue Sep  4 02:21:58 2018
+++ src/sys/sys/tty.h	Mon Oct 15 09:51:34 2018
@@ -1,4 +1,4 @@
-/*	$NetBSD: tty.h,v 1.94.2.2 2018/09/04 02:21:58 pgoyette Exp $	*/
+/*	$NetBSD: tty.h,v 1.94.2.3 2018/10/15 09:51:34 pgoyette Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -313,10 +313,6 @@ bool	 ttypull(struct tty *);
 int	clalloc(struct clist *, int, int);
 void	clfree(struct clist *);
 
-extern int (*vec_compat_ttioctl_60)(dev_t, u_long, void *, int,
-    struct lwp *);
-extern int (*vec_compat_ptmioctl_60)(dev_t, u_long, void *, int,
-    struct lwp *);
 int stub_compat_ptmioctl_60(dev_t, u_long, void *, int, struct lwp *);
 
 /* overwritten to be non-null if ptm(4) is present */

Reply via email to