Date: Sun, 10 Jul 2005 04:39:31 GMT From: "Christian S.J. Peron" <csjp@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 79890 for review Message-ID: <200507100439.j6A4dVTM021246@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=79890 Change 79890 by csjp@csjp_xor on 2005/07/10 04:38:31 Activate mac_syscall_enter and mac_syscall_exit for all other supported architectures. It should be noted that syscall value (or code) is greater than p->p_sysent->sv_size, we change code to zero. This might have an impact on kernel tracing mechanisms, however at least we will be tracing the accurate syscall now. (nosys). Anyone who could test these to make sure everything builds alright, that would be great! I do not have access to half this hardware. Affected files ... .. //depot/projects/trustedbsd/mac/sys/alpha/alpha/trap.c#26 edit .. //depot/projects/trustedbsd/mac/sys/amd64/amd64/trap.c#16 edit .. //depot/projects/trustedbsd/mac/sys/arm/arm/trap.c#6 edit .. //depot/projects/trustedbsd/mac/sys/ia64/ia32/ia32_trap.c#4 edit .. //depot/projects/trustedbsd/mac/sys/ia64/ia64/trap.c#29 edit .. //depot/projects/trustedbsd/mac/sys/powerpc/powerpc/trap.c#19 edit .. //depot/projects/trustedbsd/mac/sys/sparc64/sparc64/trap.c#29 edit Differences ... ==== //depot/projects/trustedbsd/mac/sys/alpha/alpha/trap.c#26 (text+ko) ==== @@ -32,6 +32,7 @@ /* #include "opt_fix_unaligned_vax_fp.h" */ #include "opt_ddb.h" #include "opt_ktrace.h" +#include "opt_mac.h" #include <sys/param.h> #include <sys/systm.h> @@ -42,6 +43,7 @@ #include <sys/proc.h> #include <sys/exec.h> #include <sys/lock.h> +#include <sys/mac.h> #include <sys/mutex.h> #include <sys/smp.h> #include <sys/vmmeter.h> @@ -687,10 +689,9 @@ if (p->p_sysent->sv_mask) code &= p->p_sysent->sv_mask; - if (code >= p->p_sysent->sv_size) - callp = &p->p_sysent->sv_table[0]; - else - callp = &p->p_sysent->sv_table[code]; + if (code >= p->p_sysent->sv_size) + code = 0; + callp = &p->p_sysent->sv_table[code]; nargs = (callp->sy_narg & SYF_ARGMASK) + hidden; switch (nargs) { @@ -734,7 +735,14 @@ PTRACESTOP_SC(p, td, S_PT_SCE); +#ifdef MAC + error = mac_syscall_enter(td, args + hidden, code); + if (error == 0) + error = (*callp->sy_call)(td, args + hidden); + mac_syscall_exit(td, args + hidden, code, error); +#else error = (*callp->sy_call)(td, args + hidden); +#endif } ==== //depot/projects/trustedbsd/mac/sys/amd64/amd64/trap.c#16 (text+ko) ==== @@ -48,6 +48,7 @@ #include "opt_cpu.h" #include "opt_isa.h" #include "opt_ktrace.h" +#include "opt_mac.h" #include <sys/param.h> #include <sys/bus.h> @@ -59,6 +60,7 @@ #include <sys/kernel.h> #include <sys/ktr.h> #include <sys/lock.h> +#include <sys/mac.h> #include <sys/mutex.h> #include <sys/resourcevar.h> #include <sys/signalvar.h> @@ -740,10 +742,9 @@ if (p->p_sysent->sv_mask) code &= p->p_sysent->sv_mask; - if (code >= p->p_sysent->sv_size) - callp = &p->p_sysent->sv_table[0]; - else - callp = &p->p_sysent->sv_table[code]; + if (code >= p->p_sysent->sv_size) + code = 0; + callp = &p->p_sysent->sv_table[code]; narg = callp->sy_narg & SYF_ARGMASK; @@ -779,12 +780,18 @@ PTRACESTOP_SC(p, td, S_PT_SCE); - if ((callp->sy_narg & SYF_MPSAFE) == 0) { + if ((callp->sy_narg & SYF_MPSAFE) == 0) mtx_lock(&Giant); +#ifdef MAC + error = mac_syscall_enter(td, argp, code); + if (error == 0) error = (*callp->sy_call)(td, argp); + mac_syscall_exit(td, argp, code, error); +#else + error = (*callp->sy_call)(td, argp); +#endif + if ((callp->sy_narg & SYF_MPSAFE) == 0) mtx_unlock(&Giant); - } else - error = (*callp->sy_call)(td, argp); } switch (error) { ==== //depot/projects/trustedbsd/mac/sys/arm/arm/trap.c#6 (text+ko) ==== @@ -80,6 +80,7 @@ #include "opt_ktrace.h" +#include "opt_mac.h" #include <sys/cdefs.h> __FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.15 2005/05/25 13:46:32 cognet Exp $"); @@ -91,6 +92,7 @@ #include <sys/proc.h> #include <sys/kernel.h> #include <sys/lock.h> +#include <sys/mac.h> #include <sys/mutex.h> #include <sys/syscall.h> #include <sys/sysent.h> @@ -894,9 +896,8 @@ if (p->p_sysent->sv_mask) code &= p->p_sysent->sv_mask; if (code >= p->p_sysent->sv_size) - callp = &p->p_sysent->sv_table[0]; - else - callp = &p->p_sysent->sv_table[code]; + code = 0; + callp = &p->p_sysent->sv_table[code]; nargs = callp->sy_narg & SYF_ARGMASK; memcpy(copyargs, ap, nap * sizeof(register_t)); if (nargs > nap) { @@ -922,7 +923,14 @@ td->td_retval[1] = 0; STOPEVENT(p, S_SCE, (callp->sy_narg & SYF_ARGMASK)); PTRACESTOP_SC(p, td, S_PT_SCE); +#ifdef MAC + error = mac_syscall_enter(td, args, code); + if (error == 0) + error = (*callp->sy_call)(td, args); + mac_syscall_exit(td, args, code, error); +#else error = (*callp->sy_call)(td, args); +#endif } switch (error) { case 0: ==== //depot/projects/trustedbsd/mac/sys/ia64/ia32/ia32_trap.c#4 (text+ko) ==== @@ -27,12 +27,15 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD: src/sys/ia64/ia32/ia32_trap.c,v 1.5 2005/04/12 23:18:54 jhb Exp $"); +#include "opt_mac.h" + #include <sys/param.h> #include <sys/systm.h> #include <sys/ktr.h> #include <sys/sysproto.h> #include <sys/kernel.h> #include <sys/lock.h> +#include <sys/mac.h> #include <sys/mutex.h> #include <sys/pioctl.h> #include <sys/proc.h> @@ -92,9 +95,8 @@ code &= p->p_sysent->sv_mask; if (code >= p->p_sysent->sv_size) - callp = &p->p_sysent->sv_table[0]; - else - callp = &p->p_sysent->sv_table[code]; + code = 0; + callp = &p->p_sysent->sv_table[code]; narg = callp->sy_narg & SYF_ARGMASK; @@ -124,7 +126,14 @@ STOPEVENT(p, S_SCE, narg); +#ifdef MAC + eror = mac_syscall_enter(td, args64, code); + if (error == 0) + error = (*callp->sy_call)(td, args64); + mac_syscall_exit(td, args64, code, error); +#else error = (*callp->sy_call)(td, args64); +#endif } switch (error) { ==== //depot/projects/trustedbsd/mac/sys/ia64/ia64/trap.c#29 (text+ko) ==== @@ -33,6 +33,7 @@ #include "opt_ddb.h" #include "opt_ktrace.h" +#include "opt_mac.h" #include <sys/param.h> #include <sys/systm.h> @@ -43,6 +44,7 @@ #include <sys/proc.h> #include <sys/exec.h> #include <sys/lock.h> +#include <sys/mac.h> #include <sys/mutex.h> #include <sys/smp.h> #include <sys/vmmeter.h> @@ -928,10 +930,9 @@ if (p->p_sysent->sv_mask) code &= p->p_sysent->sv_mask; - if (code >= p->p_sysent->sv_size) - callp = &p->p_sysent->sv_table[0]; - else - callp = &p->p_sysent->sv_table[code]; + if (code >= p->p_sysent->sv_size) + code = 0; + callp = &p->p_sysent->sv_table[code] #ifdef KTRACE if (KTRPOINT(td, KTR_SYSCALL)) @@ -949,12 +950,18 @@ /* * Grab Giant if the syscall is not flagged as MP safe. */ - if ((callp->sy_narg & SYF_MPSAFE) == 0) { + if ((callp->sy_narg & SYF_MPSAFE) == 0) mtx_lock(&Giant); +#ifdef MAC + error = mac_syscall_enter(td, args, code); + if (error == 0) error = (*callp->sy_call)(td, args); + mac_syscall_exit(td, args, code, error); +#else + error = (*callp->sy_call)(td, args); +#endif + if ((callp->sy_narg & SYF_MPSAFE) == 0) mtx_unlock(&Giant); - } else - error = (*callp->sy_call)(td, args); if (error != EJUSTRETURN) { /* ==== //depot/projects/trustedbsd/mac/sys/powerpc/powerpc/trap.c#19 (text+ko) ==== @@ -35,12 +35,14 @@ __FBSDID("$FreeBSD: src/sys/powerpc/powerpc/trap.c,v 1.54 2005/04/20 20:52:46 ps Exp $"); #include "opt_ktrace.h" +#include "opt_mac.h" #include <sys/param.h> #include <sys/kdb.h> #include <sys/proc.h> #include <sys/ktr.h> #include <sys/lock.h> +#include <sys/mac.h> #include <sys/mutex.h> #include <sys/pioctl.h> #include <sys/reboot.h> @@ -373,10 +375,9 @@ if (p->p_sysent->sv_mask) code &= p->p_sysent->sv_mask; - if (code >= p->p_sysent->sv_size) - callp = &p->p_sysent->sv_table[0]; - else - callp = &p->p_sysent->sv_table[code]; + if (code >= p->p_sysent->sv_size) + code = 0; + callp = &p->p_sysent->sv_table[code]; narg = callp->sy_narg & SYF_ARGMASK; @@ -410,7 +411,14 @@ STOPEVENT(p, S_SCE, narg); +#ifdef MAC + error = mac_syscall_enter(td, params, code); + if (error == 0) + error = (*callp->sy_call)(td, params); + mac_syscall_exit(td, params, code, error); +#else error = (*callp->sy_call)(td, params); +#endif CTR3(KTR_SYSC, "syscall: p=%s %s ret=%x", p->p_comm, syscallnames[code], td->td_retval[0]); ==== //depot/projects/trustedbsd/mac/sys/sparc64/sparc64/trap.c#29 (text+ko) ==== @@ -43,6 +43,7 @@ #include "opt_ddb.h" #include "opt_ktr.h" #include "opt_ktrace.h" +#include "opt_mac.h" #include <sys/param.h> #include <sys/kdb.h> @@ -51,6 +52,7 @@ #include <sys/interrupt.h> #include <sys/ktr.h> #include <sys/lock.h> +#include <sys/mac.h> #include <sys/mutex.h> #include <sys/systm.h> #include <sys/pioctl.h> @@ -547,10 +549,9 @@ if (p->p_sysent->sv_mask) code &= p->p_sysent->sv_mask; - if (code >= p->p_sysent->sv_size) - callp = &p->p_sysent->sv_table[0]; - else - callp = &p->p_sysent->sv_table[code]; + if (code >= p->p_sysent->sv_size) + code = 0; + callp = &p->p_sysent->sv_table[code]; narg = callp->sy_narg & SYF_ARGMASK; @@ -589,7 +590,14 @@ PTRACESTOP_SC(p, td, S_PT_SCE); +#ifdef MAC + error = mac_syscall_enter(td, argp, code); + if (error == 0) + error = (*callp->sy_call)(td, argp); + mac_syscall_exit(td, argp, code, error); +#else error = (*callp->sy_call)(td, argp); +#endif CTR5(KTR_SYSC, "syscall: p=%p error=%d %s return %#lx %#lx ", p, error, syscallnames[code], td->td_retval[0],
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200507100439.j6A4dVTM021246>