kernel: Make sysvipc syscalls non-optional.
authorSascha Wildner <saw@online.de>
Tue, 29 Jul 2014 19:36:23 +0000 (21:36 +0200)
committerSascha Wildner <saw@online.de>
Tue, 29 Jul 2014 19:40:24 +0000 (21:40 +0200)
Before this commit, we had three related kernel options, SYSVMSG,
SYSVSEM and SYSVSHM, to enable the syscalls. They were in all our
configs, but in theory the user could disable the functionality.
Having to deal with scenarios where they are not available is
unnecessarily complicated and there seems to be no real reason to
want to disable them.

For convenience, leave the three options as no-ops for now, so
adjusting the kernel config is not necessarily needed. We'll
change them to being unknown at some later point.

This commit also removes some parts which assumed that we had
sysvmsg.ko, sysvsem.ko and sysvshm.ko modules, like FreeBSD, but
this assumption was never true on DragonFly.

16 files changed:
UPDATING
etc/defaults/rc.conf
etc/rc.d/abi
share/man/man5/rc.conf.5
sys/conf/files
sys/conf/options
sys/config/GENERIC
sys/config/LINT
sys/config/LINT64
sys/config/SOEKRIS
sys/config/VKERNEL
sys/config/VKERNEL64
sys/config/X86_64_GENERIC
sys/kern/sysv_ipc.c
test/stress/stress2/misc/syscall.sh
test/stress/stress2/misc/syscall2.sh

index f28a3a8..ac6648d 100644 (file)
--- a/UPDATING
+++ b/UPDATING
 +         UPGRADING DRAGONFLY FROM 3.8 TO LATER VERSIONS                +
 +-----------------------------------------------------------------------+
 
+SYSVIPC SYSCALLS MADE NON-OPTIONAL
+----------------------------------
+
+The code related to the SYSVMSG, SYSVSEM and SYSVSHM kernel options is
+now compiled in by default. The options are no-ops for now.
+
 DEFAULT DRIVER CHANGED FOR LSI "THUNDERBOLT" SERIES RAID CONTROLLERS
 --------------------------------------------------------------------
 
index 8e9e601..bbdc08f 100644 (file)
@@ -360,7 +360,6 @@ crashinfo_program="/usr/sbin/crashinfo"     # Script to generate crash dump summary.
 enable_quotas="NO"     # turn on quotas on startup (or NO).
 check_quotas="YES"     # Check quotas on startup (or NO).
 accounting_enable="NO" # Turn on process accounting (or NO).
-sysvipc_enable="NO"    # Load System V IPC primitives at startup (or NO).
 sysvipcd_enable="NO"   # Run the System V IPC daemon at startup (or NO).
 linux_enable="NO"      # Linux binary compatibility loaded at startup (or NO).
 clear_tmp_enable="NO"  # Clear /tmp at startup.
index 2c57998..5b4f24b 100644 (file)
 
 echo -n 'Additional ABI support:'
 
-name="sysvipc"
-rcvar=`set_rcvar`
-start_cmd="sysv_start"
-stop_cmd=":"
-
-sysv_start()
-{
-       echo -n ' sysvipc'
-       kldload -n sysvmsg
-       kldload -n sysvsem
-       kldload -n sysvshm
-}
-load_rc_config $name
-run_rc_command "$1"
-
 name="linux"
 rcvar=`set_rcvar`
 start_cmd="linux_start"
index 43c1463..884125a 100644 (file)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD: src/share/man/man5/rc.conf.5,v 1.197 2003/07/28 13:56:00 mbr Exp $
 .\"
-.Dd July 13, 2014
+.Dd July 29, 2014
 .Dt RC.CONF 5
 .Os
 .Sh NAME
@@ -2129,11 +2129,6 @@ facility.
 Set to
 .Dq Li YES
 to enable Linux/ELF binary emulation at system initial boot time.
-.It Va sysvipc_enable
-.Pq Vt bool
-If set to
-.Dq Li YES ,
-load System V IPC primitives at boot time.
 .\" ----- cleanvar_enable setting--------------------------------
 .It Va cleanvar_enable
 .Pq Vt bool
index eb2a6e5..5c5e40c 100644 (file)
@@ -1017,9 +1017,9 @@ kern/subr_unit.c  standard
 kern/sys_mqueue.c      standard
 kern/sys_socket.c      standard
 kern/sysv_ipc.c                standard
-kern/sysv_msg.c                optional sysvmsg
-kern/sysv_sem.c                optional sysvsem
-kern/sysv_shm.c                optional sysvshm
+kern/sysv_msg.c                standard
+kern/sysv_sem.c                standard
+kern/sysv_shm.c                standard
 kern/tty.c             standard
 kern/tty_compat.c      optional compat_43
 kern/tty_conf.c                standard
index dd5a59a..cf709b5 100644 (file)
@@ -91,9 +91,6 @@ NSWBUF_MIN    opt_swap.h
 PPS_SYNC       opt_ntp.h
 QUOTA
 SUIDDIR                opt_suiddir.h
-SYSVMSG                opt_sysvipc.h
-SYSVSEM                opt_sysvipc.h
-SYSVSHM                opt_sysvipc.h
 SHMMIN         opt_sysvipc.h
 SHMMNI         opt_sysvipc.h
 SHMSEG         opt_sysvipc.h
@@ -716,3 +713,6 @@ PANIC_REBOOT_WAIT_TIME      opt_panic.h
 #
 DEVICE_POLLING         opt_dontuse.h
 SMP                    opt_dontuse.h
+SYSVMSG                        opt_dontuse.h
+SYSVSEM                        opt_dontuse.h
+SYSVSHM                        opt_dontuse.h
index baacef7..7b25fce 100644 (file)
@@ -41,9 +41,6 @@ options       UCONSOLE                #Allow users to grab the console
 options        USERCONFIG              #boot -c editor
 options        VISUAL_USERCONFIG       #visual boot -c editor
 options        KTRACE                  #ktrace(1) support
-options        SYSVSHM                 #SYSV-style shared memory
-options        SYSVMSG                 #SYSV-style message queues
-options        SYSVSEM                 #SYSV-style semaphores
 options        P1003_1B                #Posix P1003_1B real-time extensions
 options        _KPOSIX_PRIORITY_SCHEDULING
 options        ICMP_BANDLIM            #Rate limit bad replies
index 03babb4..d710ed5 100644 (file)
@@ -218,13 +218,11 @@ device            ndis
 # memory, semaphores, and message queues, respectively.
 #
 # System V shared memory and tunable parameters
-options        SYSVSHM         # include support for shared memory
 options        SHMMIN=2        # min shared memory segment size (bytes)
 options        SHMMNI=33       # max number of shared memory identifiers
 options        SHMSEG=9        # max shared memory segments per process
 
 # System V semaphores and tunable parameters
-options        SYSVSEM         # include support for semaphores
 options        SEMMAP=31       # amount of entries in semaphore map
 options        SEMMNI=11       # number of semaphore identifiers in the system
 options        SEMMNS=61       # number of semaphores in the system
@@ -234,7 +232,6 @@ options     SEMOPM=101      # max number of operations per semop call
 options        SEMUME=11       # max number of undo entries per process
 
 # System V message queues and tunable parameters
-options        SYSVMSG         # include support for message queues
 options        MSGMNB=2049     # max characters per message queue
 options        MSGMNI=41       # max number of message queue identifiers
 options        MSGSEG=2049     # max number of message segments in the system
index 1fefb34..e39e54b 100644 (file)
@@ -140,13 +140,11 @@ device            ndis
 # memory, semaphores, and message queues, respectively.
 #
 # System V shared memory and tunable parameters
-options        SYSVSHM         # include support for shared memory
 options        SHMMIN=2        # min shared memory segment size (bytes)
 options        SHMMNI=33       # max number of shared memory identifiers
 options        SHMSEG=9        # max shared memory segments per process
 
 # System V semaphores and tunable parameters
-options        SYSVSEM         # include support for semaphores
 options        SEMMAP=31       # amount of entries in semaphore map
 options        SEMMNI=11       # number of semaphore identifiers in the system
 options        SEMMNS=61       # number of semaphores in the system
@@ -156,7 +154,6 @@ options     SEMOPM=101      # max number of operations per semop call
 options        SEMUME=11       # max number of undo entries per process
 
 # System V message queues and tunable parameters
-options        SYSVMSG         # include support for message queues
 options        MSGMNB=2049     # max characters per message queue
 options        MSGMNI=41       # max number of message queue identifiers
 options        MSGSEG=2049     # max number of message segments in the system
index ac08a5b..ef54205 100644 (file)
@@ -44,9 +44,6 @@ options       UCONSOLE                #Allow users to grab the console
 options        USERCONFIG              #boot -c editor
 options        VISUAL_USERCONFIG       #visual boot -c editor
 options        KTRACE                  #ktrace(1) support
-options        SYSVSHM                 #SYSV-style shared memory
-options        SYSVMSG                 #SYSV-style message queues
-options        SYSVSEM                 #SYSV-style semaphores
 options        P1003_1B                #Posix P1003_1B real-time extensions
 options        _KPOSIX_PRIORITY_SCHEDULING
 options        ICMP_BANDLIM            #Rate limit bad replies
index a1461c8..dad55b4 100644 (file)
@@ -58,9 +58,6 @@ options       PROCFS                  #Process filesystem
 options        COMPAT_DF12             #Compatible with DragonFly 1.2 and earlier
 options        UCONSOLE                #Allow users to grab the console
 options        KTRACE                  #ktrace(1) support
-options        SYSVSHM                 #SYSV-style shared memory
-options        SYSVMSG                 #SYSV-style message queues
-options        SYSVSEM                 #SYSV-style semaphores
 options        P1003_1B                #Posix P1003_1B real-time extensions
 options        _KPOSIX_PRIORITY_SCHEDULING
 options        ICMP_BANDLIM            #Rate limit bad replies
index 2b8c036..29d68cb 100644 (file)
@@ -56,9 +56,6 @@ options       PROCFS                  #Process filesystem
 #options       COMPAT_43               #Compatible with BSD 4.3
 options        UCONSOLE                #Allow users to grab the console
 options        KTRACE                  #ktrace(1) support
-options        SYSVSHM                 #SYSV-style shared memory
-options        SYSVMSG                 #SYSV-style message queues
-options        SYSVSEM                 #SYSV-style semaphores
 options        P1003_1B                #Posix P1003_1B real-time extensions
 options        _KPOSIX_PRIORITY_SCHEDULING
 options        ICMP_BANDLIM            #Rate limit bad replies
index 7e77a06..f99a0dd 100644 (file)
@@ -36,9 +36,6 @@ options               IFPOLL_ENABLE           # Support mixed interrupt-polling
                                        # handling of network device drivers
 options        UCONSOLE                #Allow users to grab the console
 options        KTRACE                  #ktrace(1) support
-options        SYSVSHM                 #SYSV-style shared memory
-options        SYSVMSG                 #SYSV-style message queues
-options        SYSVSEM                 #SYSV-style semaphores
 options        P1003_1B                #Posix P1003_1B real-time extensions
 options        _KPOSIX_PRIORITY_SCHEDULING
 options        ICMP_BANDLIM            #Rate limit bad replies
index fd10447..62311af 100644 (file)
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "opt_sysvipc.h"
-
 #include <sys/param.h>
 #include <sys/ipc.h>
 #include <sys/proc.h>
 #include <sys/priv.h>
 #include <sys/ucred.h>
 
-#define SYSCALL_NOT_PRESENT_GEN(SC, str) \
-int sys_##SC (struct SC##_args *uap) \
-{ \
-       sysv_nosys(str); \
-       return sys_nosys((struct nosys_args *)uap); \
-}
-
-#if defined(SYSVSEM) || defined(SYSVSHM) || defined(SYSVMSG)
-
 /*
  * Check for ipc permission
  */
@@ -74,91 +63,3 @@ ipcperm(struct proc *p, struct ipc_perm *perm, int mode)
        return ((mode & perm->mode) == mode || 
                priv_check_cred(cred, PRIV_ROOT, 0) == 0 ? 0 : EACCES);
 }
-
-#endif /* defined(SYSVSEM) || defined(SYSVSHM) || defined(SYSVMSG) */
-
-
-#if !defined(SYSVSEM) || !defined(SYSVSHM) || !defined(SYSVMSG)
-
-#include <sys/proc.h>
-#include <sys/sem.h>
-#include <sys/shm.h>
-#include <sys/syslog.h>
-#include <sys/sysproto.h>
-#include <sys/systm.h>
-
-static void sysv_nosys (char *s);
-
-static void 
-sysv_nosys(char *s)
-{
-       struct thread *td = curthread;
-       struct proc *p = td->td_proc;
-
-       log(LOG_ERR, "cmd %s pid %d tried to use non-present %s\n",
-                       (p ? p->p_comm : td->td_comm),
-                       (p ? p->p_pid : -1), s);
-}
-
-#if !defined(SYSVSEM)
-
-/*
- * SYSVSEM stubs
- */
-
-SYSCALL_NOT_PRESENT_GEN(__semctl, "SYSVSEM");
-SYSCALL_NOT_PRESENT_GEN(semget, "SYSVSEM");
-SYSCALL_NOT_PRESENT_GEN(semop, "SYSVSEM");
-
-/* called from kern_exit.c */
-void
-semexit(struct proc *p)
-{
-       /* empty */
-}
-
-#endif /* !defined(SYSVSEM) */
-
-
-#if !defined(SYSVMSG)
-
-/*
- * SYSVMSG stubs
- */
-
-SYSCALL_NOT_PRESENT_GEN(msgctl, "SYSVMSG");
-SYSCALL_NOT_PRESENT_GEN(msgget, "SYSVMSG");
-SYSCALL_NOT_PRESENT_GEN(msgsnd, "SYSVMSG");
-SYSCALL_NOT_PRESENT_GEN(msgrcv, "SYSVMSG");
-
-#endif /* !defined(SYSVMSG) */
-
-
-#if !defined(SYSVSHM)
-
-/*
- * SYSVSHM stubs
- */
-
-SYSCALL_NOT_PRESENT_GEN(shmdt, "SYSVSHM");
-SYSCALL_NOT_PRESENT_GEN(shmat, "SYSVSHM");
-SYSCALL_NOT_PRESENT_GEN(shmctl, "SYSVSHM");
-SYSCALL_NOT_PRESENT_GEN(shmget, "SYSVSHM");
-
-/* called from kern_fork.c */
-void
-shmfork(struct proc *p1, struct proc *p2)
-{
-       /* empty */
-}
-
-/* called from kern_exit.c */
-void
-shmexit(struct vmspace *vm)
-{
-       /* empty */
-}
-
-#endif /* !defined(SYSVSHM) */
-
-#endif /* !defined(SYSVSEM) || !defined(SYSVSHM) || !defined(SYSVMSG) */
index a5fd553..66d9b37 100755 (executable)
 
 . ../default.cfg
 
-kldstat -v | grep -q sysvmsg  || kldload sysvmsg
-kldstat -v | grep -q sysvsem  || kldload sysvsem
-kldstat -v | grep -q sysvshm  || kldload sysvshm
-
-kldstat -v | grep -q aio      || kldload aio
-kldstat -v | grep -q mqueuefs || kldload mqueuefs
+#kldstat -v | grep -q aio      || kldload aio
+#kldstat -v | grep -q mqueuefs || kldload mqueuefs
 
 syscall=`grep SYS_MAXSYSCALL /usr/include/sys/syscall.h | awk '{print $NF}'`
 
index 054f64e..e1fcfe4 100755 (executable)
@@ -41,12 +41,8 @@ sed '1,/^EOF/d' < $odir/$0 > syscall2.c
 cc -o syscall2 -Wall -I $odir/../include -L $odir/../lib syscall2.c -lstress -lutil
 rm -f syscall2.c
 
-kldstat -v | grep -q sysvmsg  || kldload sysvmsg
-kldstat -v | grep -q sysvsem  || kldload sysvsem
-kldstat -v | grep -q sysvshm  || kldload sysvshm
-
-kldstat -v | grep -q aio      || kldload aio
-kldstat -v | grep -q mqueuefs || kldload mqueuefs
+#kldstat -v | grep -q aio      || kldload aio
+#kldstat -v | grep -q mqueuefs || kldload mqueuefs
 
 syscall=`grep SYS_MAXSYSCALL /usr/include/sys/syscall.h | awk '{print $NF}'`