X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/3e170ce000f1506b7b5d2c5c7faec85ceabb573d..d190cdc3f5544636abb56dc1874be391d3e1b148:/bsd/kern/kern_kpc.c diff --git a/bsd/kern/kern_kpc.c b/bsd/kern/kern_kpc.c index 3e3443fc3..38bc2abbd 100644 --- a/bsd/kern/kern_kpc.c +++ b/bsd/kern/kern_kpc.c @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -415,6 +416,8 @@ kpc_sysctl SYSCTL_HANDLER_ARGS if( !kpc_initted ) panic("kpc_init not called"); + lck_mtx_lock(ktrace_lock); + // Most sysctls require an access check, but a few are public. switch( (uintptr_t) arg1 ) { case REQ_CLASSES: @@ -426,13 +429,15 @@ kpc_sysctl SYSCTL_HANDLER_ARGS default: // Require kperf access to read or write anything else. // This is either root or the blessed pid. - ret = kperf_access_check(); - if (ret) { + if ((ret = ktrace_read_check())) { + lck_mtx_unlock(ktrace_lock); return ret; } break; } + lck_mtx_unlock(ktrace_lock); + lck_mtx_lock(&sysctl_buffer_lock); /* which request */