svn commit: r321322 - in stable/11/sys: compat/freebsd32 kern netinet sys

Konstantin Belousov kib at FreeBSD.org
Fri Jul 21 06:48:49 UTC 2017


Author: kib
Date: Fri Jul 21 06:48:47 2017
New Revision: 321322
URL: https://svnweb.freebsd.org/changeset/base/321322

Log:
  MFC r320982:
  Correct sysent flags for dynamically loaded syscalls.

Modified:
  stable/11/sys/compat/freebsd32/freebsd32_util.h
  stable/11/sys/kern/capabilities.conf
  stable/11/sys/kern/uipc_mqueue.c
  stable/11/sys/netinet/sctp_syscalls.c
  stable/11/sys/sys/sysent.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/compat/freebsd32/freebsd32_util.h
==============================================================================
--- stable/11/sys/compat/freebsd32/freebsd32_util.h	Fri Jul 21 03:59:56 2017	(r321321)
+++ stable/11/sys/compat/freebsd32/freebsd32_util.h	Fri Jul 21 06:48:47 2017	(r321322)
@@ -79,23 +79,30 @@ SYSCALL32_MODULE(syscallname,                         
     & syscallname##_syscall32, & syscallname##_sysent32,\
     NULL, NULL);
 
-#define SYSCALL32_INIT_HELPER(syscallname) {			\
+#define SYSCALL32_INIT_HELPER_F(syscallname, flags) {		\
     .new_sysent = {						\
 	.sy_narg = (sizeof(struct syscallname ## _args )	\
 	    / sizeof(register_t)),				\
 	.sy_call = (sy_call_t *)& syscallname,			\
+	.sy_flags = (flags)					\
     },								\
     .syscall_no = FREEBSD32_SYS_##syscallname			\
 }
 
-#define SYSCALL32_INIT_HELPER_COMPAT(syscallname) {		\
+#define SYSCALL32_INIT_HELPER_COMPAT_F(syscallname, flags) {	\
     .new_sysent = {						\
 	.sy_narg = (sizeof(struct syscallname ## _args )	\
 	    / sizeof(register_t)),				\
 	.sy_call = (sy_call_t *)& sys_ ## syscallname,		\
+	.sy_flags = (flags)					\
     },								\
     .syscall_no = FREEBSD32_SYS_##syscallname			\
 }
+
+#define SYSCALL32_INIT_HELPER(syscallname)			\
+    SYSCALL32_INIT_HELPER_F(syscallname, 0)
+#define SYSCALL32_INIT_HELPER_COMPAT(syscallname)		\
+    SYSCALL32_INIT_HELPER_COMPAT_F(syscallname, 0)
 
 int    syscall32_register(int *offset, struct sysent *new_sysent,
 	    struct sysent *old_sysent, int flags);

Modified: stable/11/sys/kern/capabilities.conf
==============================================================================
--- stable/11/sys/kern/capabilities.conf	Fri Jul 21 03:59:56 2017	(r321321)
+++ stable/11/sys/kern/capabilities.conf	Fri Jul 21 06:48:47 2017	(r321322)
@@ -341,6 +341,8 @@ kill
 ##
 ## Allow message queue operations on file descriptors, subject to capability
 ## rights.
+## NOTE: Corresponding sysents are initialized in sys/kern/uipc_mqueue.c with
+## SYF_CAPENABLED.
 ##
 kmq_notify
 kmq_setattr
@@ -552,6 +554,8 @@ sched_yield
 
 ##
 ## Allow I/O-related file descriptors, subject to capability rights.
+## NOTE: Corresponding sysents are initialized in sys/netinet/sctp_syscalls.c
+## with SYF_CAPENABLED.
 ##
 sctp_generic_recvmsg
 sctp_generic_sendmsg

Modified: stable/11/sys/kern/uipc_mqueue.c
==============================================================================
--- stable/11/sys/kern/uipc_mqueue.c	Fri Jul 21 03:59:56 2017	(r321321)
+++ stable/11/sys/kern/uipc_mqueue.c	Fri Jul 21 06:48:47 2017	(r321322)
@@ -2691,10 +2691,10 @@ static struct vfsconf mqueuefs_vfsconf = {
 
 static struct syscall_helper_data mq_syscalls[] = {
 	SYSCALL_INIT_HELPER(kmq_open),
-	SYSCALL_INIT_HELPER(kmq_setattr),
-	SYSCALL_INIT_HELPER(kmq_timedsend),
-	SYSCALL_INIT_HELPER(kmq_timedreceive),
-	SYSCALL_INIT_HELPER(kmq_notify),
+	SYSCALL_INIT_HELPER_F(kmq_setattr, SYF_CAPENABLED),
+	SYSCALL_INIT_HELPER_F(kmq_timedsend, SYF_CAPENABLED),
+	SYSCALL_INIT_HELPER_F(kmq_timedreceive, SYF_CAPENABLED),
+	SYSCALL_INIT_HELPER_F(kmq_notify, SYF_CAPENABLED),
 	SYSCALL_INIT_HELPER(kmq_unlink),
 	SYSCALL_INIT_LAST
 };
@@ -2851,10 +2851,10 @@ freebsd32_kmq_notify(struct thread *td, struct freebsd
 
 static struct syscall_helper_data mq32_syscalls[] = {
 	SYSCALL32_INIT_HELPER(freebsd32_kmq_open),
-	SYSCALL32_INIT_HELPER(freebsd32_kmq_setattr),
-	SYSCALL32_INIT_HELPER(freebsd32_kmq_timedsend),
-	SYSCALL32_INIT_HELPER(freebsd32_kmq_timedreceive),
-	SYSCALL32_INIT_HELPER(freebsd32_kmq_notify),
+	SYSCALL32_INIT_HELPER_F(freebsd32_kmq_setattr, SYF_CAPENABLED),
+	SYSCALL32_INIT_HELPER_F(freebsd32_kmq_timedsend, SYF_CAPENABLED),
+	SYSCALL32_INIT_HELPER_F(freebsd32_kmq_timedreceive, SYF_CAPENABLED),
+	SYSCALL32_INIT_HELPER_F(freebsd32_kmq_notify, SYF_CAPENABLED),
 	SYSCALL32_INIT_HELPER_COMPAT(kmq_unlink),
 	SYSCALL_INIT_LAST
 };

Modified: stable/11/sys/netinet/sctp_syscalls.c
==============================================================================
--- stable/11/sys/netinet/sctp_syscalls.c	Fri Jul 21 03:59:56 2017	(r321321)
+++ stable/11/sys/netinet/sctp_syscalls.c	Fri Jul 21 06:48:47 2017	(r321322)
@@ -82,10 +82,10 @@ __FBSDID("$FreeBSD$");
 #include <netinet/sctp_peeloff.h>
 
 static struct syscall_helper_data sctp_syscalls[] = {
-	SYSCALL_INIT_HELPER(sctp_peeloff),
-	SYSCALL_INIT_HELPER(sctp_generic_sendmsg),
-	SYSCALL_INIT_HELPER(sctp_generic_sendmsg_iov),
-	SYSCALL_INIT_HELPER(sctp_generic_recvmsg),
+	SYSCALL_INIT_HELPER_F(sctp_peeloff, SYF_CAPENABLED),
+	SYSCALL_INIT_HELPER_F(sctp_generic_sendmsg, SYF_CAPENABLED),
+	SYSCALL_INIT_HELPER_F(sctp_generic_sendmsg_iov, SYF_CAPENABLED),
+	SYSCALL_INIT_HELPER_F(sctp_generic_recvmsg, SYF_CAPENABLED),
 	SYSCALL_INIT_LAST
 };
 

Modified: stable/11/sys/sys/sysent.h
==============================================================================
--- stable/11/sys/sys/sysent.h	Fri Jul 21 03:59:56 2017	(r321321)
+++ stable/11/sys/sys/sysent.h	Fri Jul 21 06:48:47 2017	(r321322)
@@ -231,24 +231,30 @@ struct syscall_helper_data {
 	int syscall_no;
 	int registered;
 };
-#define SYSCALL_INIT_HELPER(syscallname) {			\
+#define SYSCALL_INIT_HELPER_F(syscallname, flags) {		\
     .new_sysent = {						\
 	.sy_narg = (sizeof(struct syscallname ## _args )	\
 	    / sizeof(register_t)),				\
 	.sy_call = (sy_call_t *)& sys_ ## syscallname,		\
-	.sy_auevent = SYS_AUE_##syscallname			\
+	.sy_auevent = SYS_AUE_##syscallname,			\
+	.sy_flags = (flags)					\
     },								\
     .syscall_no = SYS_##syscallname				\
 }
-#define SYSCALL_INIT_HELPER_COMPAT(syscallname) {		\
+#define SYSCALL_INIT_HELPER_COMPAT_F(syscallname, flags) {	\
     .new_sysent = {						\
 	.sy_narg = (sizeof(struct syscallname ## _args )	\
 	    / sizeof(register_t)),				\
 	.sy_call = (sy_call_t *)& syscallname,			\
-	.sy_auevent = SYS_AUE_##syscallname			\
+	.sy_auevent = SYS_AUE_##syscallname,			\
+	.sy_flags = (flags)					\
     },								\
     .syscall_no = SYS_##syscallname				\
 }
+#define SYSCALL_INIT_HELPER(syscallname)			\
+    SYSCALL_INIT_HELPER_F(syscallname, 0)
+#define SYSCALL_INIT_HELPER_COMPAT(syscallname)			\
+    SYSCALL_INIT_HELPER_COMPAT_F(syscallname, 0)
 #define SYSCALL_INIT_LAST {					\
     .syscall_no = NO_SYSCALL					\
 }


More information about the svn-src-all mailing list