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 */