Module Name: src Committed By: pgoyette Date: Thu Mar 12 15:02:29 UTC 2020
Modified Files: src/sys/compat/netbsd32: files.netbsd32 netbsd32_compat_50.c netbsd32_quota.c syscalls.master src/sys/modules: Makefile src/sys/modules/compat_netbsd32: Makefile src/sys/modules/compat_netbsd32_50: Makefile Added Files: src/sys/compat/netbsd32: netbsd32_compat_50_quota.c src/sys/modules/compat_netbsd32_quota: Makefile src/sys/modules/compat_netbsd32_quota_50: Makefile Log Message: Split out the quota code from the rest of compat_netbsd32 module. This allows loading of compat_netbsd32 on kernels that don't have ``options QUOTA'' enabled. To generate a diff of this commit: cvs rdiff -u -r1.49 -r1.50 src/sys/compat/netbsd32/files.netbsd32 cvs rdiff -u -r1.46 -r1.47 src/sys/compat/netbsd32/netbsd32_compat_50.c cvs rdiff -u -r0 -r1.1 src/sys/compat/netbsd32/netbsd32_compat_50_quota.c cvs rdiff -u -r1.2 -r1.3 src/sys/compat/netbsd32/netbsd32_quota.c cvs rdiff -u -r1.132 -r1.133 src/sys/compat/netbsd32/syscalls.master cvs rdiff -u -r1.242 -r1.243 src/sys/modules/Makefile cvs rdiff -u -r1.31 -r1.32 src/sys/modules/compat_netbsd32/Makefile cvs rdiff -u -r1.5 -r1.6 src/sys/modules/compat_netbsd32_50/Makefile cvs rdiff -u -r0 -r1.1 src/sys/modules/compat_netbsd32_quota/Makefile cvs rdiff -u -r0 -r1.1 src/sys/modules/compat_netbsd32_quota_50/Makefile 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/netbsd32/files.netbsd32 diff -u src/sys/compat/netbsd32/files.netbsd32:1.49 src/sys/compat/netbsd32/files.netbsd32:1.50 --- src/sys/compat/netbsd32/files.netbsd32:1.49 Sun Sep 22 22:59:38 2019 +++ src/sys/compat/netbsd32/files.netbsd32 Thu Mar 12 15:02:29 2020 @@ -1,4 +1,4 @@ -# $NetBSD: files.netbsd32,v 1.49 2019/09/22 22:59:38 christos Exp $ +# $NetBSD: files.netbsd32,v 1.50 2020/03/12 15:02:29 pgoyette Exp $ # # config file description for machine-independent netbsd32 compat code. # included by ports that need it. @@ -54,6 +54,8 @@ file compat/netbsd32/netbsd32_compat_30. file compat/netbsd32/netbsd32_compat_40.c compat_netbsd32 & compat_40 file compat/netbsd32/netbsd32_compat_43.c compat_netbsd32 & (compat_43 | compat_sunos | compat_linux32) file compat/netbsd32/netbsd32_compat_50.c compat_netbsd32 & compat_50 +file compat/netbsd32/netbsd32_compat_50_quota.c compat_netbsd32 & compat_50 & + quota file compat/netbsd32/netbsd32_rndpseudo_50.c compat_netbsd32 & compat_50 file compat/netbsd32/netbsd32_compat_50_sysv.c compat_netbsd32 & compat_50 & (sysvmsg | sysvsem | sysvshm) Index: src/sys/compat/netbsd32/netbsd32_compat_50.c diff -u src/sys/compat/netbsd32/netbsd32_compat_50.c:1.46 src/sys/compat/netbsd32/netbsd32_compat_50.c:1.47 --- src/sys/compat/netbsd32/netbsd32_compat_50.c:1.46 Thu Feb 27 20:54:24 2020 +++ src/sys/compat/netbsd32/netbsd32_compat_50.c Thu Mar 12 15:02:29 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_compat_50.c,v 1.46 2020/02/27 20:54:24 pgoyette Exp $ */ +/* $NetBSD: netbsd32_compat_50.c,v 1.47 2020/03/12 15:02:29 pgoyette Exp $ */ /*- * Copyright (c) 2008, 2020 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.46 2020/02/27 20:54:24 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.47 2020/03/12 15:02:29 pgoyette Exp $"); #if defined(_KERNEL_OPT) #include "opt_compat_netbsd.h" @@ -916,26 +916,6 @@ compat_50_netbsd32_getitimer(struct lwp return copyout(&s32it, SCARG_P32(uap, itv), sizeof(s32it)); } -#ifdef QUOTA -int -compat_50_netbsd32_quotactl(struct lwp *l, const struct compat_50_netbsd32_quotactl_args *uap, register_t *retval) -{ - /* { - syscallarg(const netbsd32_charp) path; - syscallarg(int) cmd; - syscallarg(int) uid; - syscallarg(netbsd32_voidp) arg; - } */ - struct compat_50_sys_quotactl_args ua; - - NETBSD32TOP_UAP(path, const char); - NETBSD32TO64_UAP(cmd); - NETBSD32TO64_UAP(uid); - NETBSD32TOP_UAP(arg, void *); - return (compat_50_sys_quotactl(l, &ua, retval)); -} -#endif - #ifdef NTP int compat_50_netbsd32_ntp_gettime(struct lwp *l, @@ -1026,10 +1006,6 @@ static struct syscall_package compat_net (sy_call_t *)compat_50_netbsd32_setitimer }, { NETBSD32_SYS_compat_50_netbsd32_getitimer, 0, (sy_call_t *)compat_50_netbsd32_getitimer }, -#ifdef QUOTA - { NETBSD32_SYS_compat_50_netbsd32_quotactl, 0, - (sy_call_t *)compat_50_netbsd32_quotactl }, -#endif #ifdef NTP { NETBSD32_SYS_compat_50_netbsd32_ntp_gettime, 0, (sy_call_t *)compat_50_netbsd32_ntp_gettime }, Index: src/sys/compat/netbsd32/netbsd32_quota.c diff -u src/sys/compat/netbsd32/netbsd32_quota.c:1.2 src/sys/compat/netbsd32/netbsd32_quota.c:1.3 --- src/sys/compat/netbsd32/netbsd32_quota.c:1.2 Tue Jun 18 16:22:54 2019 +++ src/sys/compat/netbsd32/netbsd32_quota.c Thu Mar 12 15:02:29 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_quota.c,v 1.2 2019/06/18 16:22:54 christos Exp $ */ +/* $NetBSD: netbsd32_quota.c,v 1.3 2020/03/12 15:02:29 pgoyette Exp $ */ /* * Copyright (c) 1998, 2001, 2008, 2018 Matthew R. Green @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_quota.c,v 1.2 2019/06/18 16:22:54 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_quota.c,v 1.3 2020/03/12 15:02:29 pgoyette Exp $"); #ifdef _KERNEL_OPT #include "opt_quota.h" @@ -38,13 +38,13 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_quo #include <sys/param.h> #include <sys/systm.h> #include <sys/quotactl.h> -#include <sys/filedesc.h> +#include <sys/module.h> #include <sys/vfs_syscalls.h> +#include <sys/syscallvar.h> #include <compat/netbsd32/netbsd32.h> #include <compat/netbsd32/netbsd32_syscall.h> #include <compat/netbsd32/netbsd32_syscallargs.h> -#include <compat/netbsd32/netbsd32_conv.h> #ifdef QUOTA int @@ -140,4 +140,30 @@ netbsd32___quotactl(struct lwp *l, const return do_sys_quotactl(SCARG_P32(uap, path), &args); } +static struct syscall_package compat_netbsd32_quota_syscalls[] = { + { NETBSD32_SYS_netbsd32___quotactl, 0, + (sy_call_t *)netbsd32___quotactl }, + { 0, 0, NULL } +}; + +MODULE(MODULE_CLASS_EXEC, compat_netbsd32_quota, "compat_netbsd32"); + +static int +compat_netbsd32_quota_modcmd(modcmd_t cmd, void *arg) +{ + int ret; + + switch (cmd) { + case MODULE_CMD_INIT: + ret = syscall_establish(&emul_netbsd32, + compat_netbsd32_quota_syscalls); + return ret; + case MODULE_CMD_FINI: + ret = syscall_disestablish(&emul_netbsd32, + compat_netbsd32_quota_syscalls); + return ret; + default: + return ENOTTY; + } +} #endif Index: src/sys/compat/netbsd32/syscalls.master diff -u src/sys/compat/netbsd32/syscalls.master:1.132 src/sys/compat/netbsd32/syscalls.master:1.133 --- src/sys/compat/netbsd32/syscalls.master:1.132 Sat Mar 7 00:56:41 2020 +++ src/sys/compat/netbsd32/syscalls.master Thu Mar 12 15:02:29 2020 @@ -1,4 +1,4 @@ - $NetBSD: syscalls.master,v 1.132 2020/03/07 00:56:41 pgoyette Exp $ + $NetBSD: syscalls.master,v 1.133 2020/03/12 15:02:29 pgoyette Exp $ ; from: NetBSD: syscalls.master,v 1.81 1998/07/05 08:49:50 jonathan Exp ; @(#)syscalls.master 8.2 (Berkeley) 1/13/94 @@ -356,13 +356,9 @@ 146 COMPAT_43 MODULAR compat_netbsd32_43 \ { int|netbsd32||killpg(int pgid, int signum); } 147 NOARGS { int|sys||setsid(void); } -#if defined(QUOTA) || !defined(_KERNEL_OPT) -148 COMPAT_50 MODULAR compat_netbsd32_50 \ +148 COMPAT_50 MODULAR compat_netbsd32_quota_50 \ { int|netbsd32||quotactl(netbsd32_charp path, int cmd, \ int uid, netbsd32_voidp arg); } -#else -148 EXCL compat_netbsd32_quotactl -#endif 149 EXCL compat_netbsd32_quota 150 COMPAT_43 MODULAR compat_netbsd32_43 \ { int|netbsd32||ogetsockname(int fdec, \ @@ -1127,12 +1123,9 @@ int flag); } 472 STD { int|netbsd32||futimens(int fd, \ const netbsd32_timespecp_t tptr); } -#if defined(QUOTA) || !defined(_KERNEL_OPT) -473 STD { int|netbsd32||__quotactl(const netbsd32_charp path, \ +473 STD MODULAR compat_netbsd32_quota \ + { int|netbsd32||__quotactl(const netbsd32_charp path, \ netbsd32_voidp args); } -#else -473 EXCL netbsd32___quotactl -#endif 474 NOERR { int|netbsd32||posix_spawn(netbsd32_pid_tp pid, \ const netbsd32_charp path, \ const netbsd32_posix_spawn_file_actionsp \ Index: src/sys/modules/Makefile diff -u src/sys/modules/Makefile:1.242 src/sys/modules/Makefile:1.243 --- src/sys/modules/Makefile:1.242 Wed Mar 11 08:31:08 2020 +++ src/sys/modules/Makefile Thu Mar 12 15:02:29 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.242 2020/03/11 08:31:08 skrll Exp $ +# $NetBSD: Makefile,v 1.243 2020/03/12 15:02:29 pgoyette Exp $ .include <bsd.own.mk> @@ -301,11 +301,13 @@ SUBDIR+= compat_netbsd32_43 SUBDIR+= compat_netbsd32_mqueue SUBDIR+= compat_netbsd32_nfssrv SUBDIR+= compat_netbsd32_ptrace +SUBDIR+= compat_netbsd32_quota +SUBDIR+= compat_netbsd32_quota_50 +SUBDIR+= compat_netbsd32_raid SUBDIR+= compat_netbsd32_sysvipc SUBDIR+= compat_netbsd32_sysvipc_10 SUBDIR+= compat_netbsd32_sysvipc_14 SUBDIR+= compat_netbsd32_sysvipc_50 -SUBDIR+= compat_netbsd32_raid .if ${MACHINE_ARCH} == "x86_64" SUBDIR+= compat_linux32 Index: src/sys/modules/compat_netbsd32/Makefile diff -u src/sys/modules/compat_netbsd32/Makefile:1.31 src/sys/modules/compat_netbsd32/Makefile:1.32 --- src/sys/modules/compat_netbsd32/Makefile:1.31 Thu Mar 5 15:58:33 2020 +++ src/sys/modules/compat_netbsd32/Makefile Thu Mar 12 15:02:29 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.31 2020/03/05 15:58:33 christos Exp $ +# $NetBSD: Makefile,v 1.32 2020/03/12 15:02:29 pgoyette Exp $ .include "../Makefile.inc" .include "../Makefile.assym" @@ -12,7 +12,7 @@ NETBSD32_DRMKMS?=yes CPPFLAGS+= -DCOMPAT_NETBSD32 CPPFLAGS+= -DEXEC_ELF32 -DEXEC_ELF64 CPPFLAGS+= -DNTP -DVMSWAP -CPPFLAGS+= -DKTRACE -DMODULAR -DQUOTA +CPPFLAGS+= -DKTRACE -DMODULAR CPPFLAGS+= -I${NETBSDSRCDIR}/sys/external/bsd/libnv/dist .if ${NETBSD32_DRMKMS:Uno} == "yes" @@ -34,14 +34,13 @@ SRCS+= netbsd32_exec_elf32.c netbsd32_ex SRCS+= netbsd32_fd.c netbsd32_fs.c SRCS+= netbsd32_ioctl.c netbsd32_kern_proc.c SRCS+= netbsd32_lwp.c netbsd32_mod.c -SRCS+= netbsd32_netbsd.c netbsd32_quota.c +SRCS+= netbsd32_module.c netbsd32_netbsd.c SRCS+= netbsd32_rlimit.c netbsd32_select.c SRCS+= netbsd32_sem.c netbsd32_signal.c SRCS+= netbsd32_socket.c netbsd32_syscalls.c SRCS+= netbsd32_sysctl.c netbsd32_sysent.c SRCS+= netbsd32_time.c netbsd32_wait.c SRCS+= netbsd32_vm.c -SRCS+= netbsd32_module.c .if ${MACHINE_CPU} != "mips" && ${MACHINE_CPU} != "powerpc" && \ ${MACHINE_CPU} != "aarch64" Index: src/sys/modules/compat_netbsd32_50/Makefile diff -u src/sys/modules/compat_netbsd32_50/Makefile:1.5 src/sys/modules/compat_netbsd32_50/Makefile:1.6 --- src/sys/modules/compat_netbsd32_50/Makefile:1.5 Thu Sep 26 02:01:03 2019 +++ src/sys/modules/compat_netbsd32_50/Makefile Thu Mar 12 15:02:29 2020 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.5 2019/09/26 02:01:03 christos Exp $ +# $NetBSD: Makefile,v 1.6 2020/03/12 15:02:29 pgoyette Exp $ .include "../Makefile.inc" @@ -6,7 +6,7 @@ KMOD= compat_netbsd32_50 -CPPFLAGS+= -DNTP -DQUOTA +CPPFLAGS+= -DNTP CPPFLAGS+= -DCOMPAT_NETBSD32 CPPFLAGS+= -DCOMPAT_50 -DCOMPAT_60 -DCOMPAT_70 -DCOMPAT_80 CPPFLAGS+= -I${NETBSDSRCDIR}/sys/external/bsd/libnv/dist Added files: Index: src/sys/compat/netbsd32/netbsd32_compat_50_quota.c diff -u /dev/null src/sys/compat/netbsd32/netbsd32_compat_50_quota.c:1.1 --- /dev/null Thu Mar 12 15:02:30 2020 +++ src/sys/compat/netbsd32/netbsd32_compat_50_quota.c Thu Mar 12 15:02:29 2020 @@ -0,0 +1,100 @@ +/* $NetBSD: netbsd32_compat_50_quota.c,v 1.1 2020/03/12 15:02:29 pgoyette Exp $ */ + +/*- + * Copyright (c) 2008, 2020 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Christos Zoulas. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +#include <sys/cdefs.h> +__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50_quota.c,v 1.1 2020/03/12 15:02:29 pgoyette Exp $"); + +#if defined(_KERNEL_OPT) +#include "opt_compat_netbsd.h" +#include "opt_compat_netbsd32.h" +#include "opt_quota.h" +#endif + + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/module.h> +#include <sys/syscallargs.h> +#include <sys/syscallvar.h> + +#include <compat/netbsd32/netbsd32.h> +#include <compat/netbsd32/netbsd32_syscall.h> +#include <compat/netbsd32/netbsd32_syscallargs.h> + +#if defined(COMPAT_50) && defined(QUOTA) + +int +compat_50_netbsd32_quotactl(struct lwp *l, const struct compat_50_netbsd32_quotactl_args *uap, register_t *retval) +{ + /* { + syscallarg(const netbsd32_charp) path; + syscallarg(int) cmd; + syscallarg(int) uid; + syscallarg(netbsd32_voidp) arg; + } */ + struct compat_50_sys_quotactl_args ua; + + NETBSD32TOP_UAP(path, const char); + NETBSD32TO64_UAP(cmd); + NETBSD32TO64_UAP(uid); + NETBSD32TOP_UAP(arg, void *); + return (compat_50_sys_quotactl(l, &ua, retval)); +} + +static struct syscall_package compat_netbsd32_quota_50_syscalls[] = { + { NETBSD32_SYS_compat_50_netbsd32_quotactl, 0, + (sy_call_t *)compat_50_netbsd32_quotactl }, + { 0, 0, NULL } +}; + +MODULE(MODULE_CLASS_EXEC, compat_netbsd32_quota_50, + "compat_netbsd32_50,compat_50,compat_50_quota"); + +static int +compat_netbsd32_quota_50_modcmd(modcmd_t cmd, void *arg) +{ + int ret; + + switch (cmd) { + case MODULE_CMD_INIT: + ret = syscall_establish(&emul_netbsd32, + compat_netbsd32_quota_50_syscalls); + return ret; + + case MODULE_CMD_FINI: + ret = syscall_disestablish(&emul_netbsd32, + compat_netbsd32_quota_50_syscalls); + return ret; + + default: + return ENOTTY; + } +} +#endif /* COMPAT_50 && QUOTA */ Index: src/sys/modules/compat_netbsd32_quota/Makefile diff -u /dev/null src/sys/modules/compat_netbsd32_quota/Makefile:1.1 --- /dev/null Thu Mar 12 15:02:30 2020 +++ src/sys/modules/compat_netbsd32_quota/Makefile Thu Mar 12 15:02:29 2020 @@ -0,0 +1,15 @@ +# $NetBSD: Makefile,v 1.1 2020/03/12 15:02:29 pgoyette Exp $ + +.include "../Makefile.inc" +.include "../Makefile.assym" + +KMOD= compat_netbsd32_quota + +CPPFLAGS+= -DCOMPAT_NETBSD32 +CPPFLAGS+= -DQUOTA + +.PATH: ${S}/compat/netbsd32 + +SRCS+= netbsd32_quota.c + +.include <bsd.kmodule.mk> Index: src/sys/modules/compat_netbsd32_quota_50/Makefile diff -u /dev/null src/sys/modules/compat_netbsd32_quota_50/Makefile:1.1 --- /dev/null Thu Mar 12 15:02:30 2020 +++ src/sys/modules/compat_netbsd32_quota_50/Makefile Thu Mar 12 15:02:29 2020 @@ -0,0 +1,15 @@ +# $NetBSD: Makefile,v 1.1 2020/03/12 15:02:29 pgoyette Exp $ + +.include "../Makefile.inc" +.include "../Makefile.assym" + +KMOD= compat_netbsd32_quota_50 + +CPPFLAGS+= -DCOMPAT_NETBSD32 +CPPFLAGS+= -DCOMPAT_50 -DQUOTA + +.PATH: ${S}/compat/netbsd32 + +SRCS+= netbsd32_compat_50_quota.c + +.include <bsd.kmodule.mk>