Page MenuHomeFreeBSD

D56864.id177341.diff
No OneTemporary

D56864.id177341.diff

diff --git a/sys/kern/sys_process.c b/sys/kern/sys_process.c
--- a/sys/kern/sys_process.c
+++ b/sys/kern/sys_process.c
@@ -72,13 +72,6 @@
/* Assert it's safe to unlock a process, e.g. to allocate working memory */
#define PROC_ASSERT_TRACEREQ(p) MPASS(((p)->p_flag2 & P2_PTRACEREQ) != 0)
-#define PROC_PRIV_CHECK(priv) do { \
- int _error; \
- _error = priv_check(curthread, priv); \
- if (_error) \
- return (_error); \
- } while (0)
-
/*
* Functions implemented below:
*
@@ -115,8 +108,12 @@
int
proc_write_regs(struct thread *td, struct reg *regs)
{
+ int error;
+
PROC_LOCK_ASSERT(td->td_proc, MA_OWNED);
- PROC_PRIV_CHECK(PRIV_PROC_MEM_WRITE);
+ error = priv_check(curthread, PRIV_PROC_MEM_WRITE);
+ if (error)
+ return (error);
return (set_regs(td, regs));
}
@@ -130,8 +127,12 @@
int
proc_write_dbregs(struct thread *td, struct dbreg *dbregs)
{
+ int error;
+
PROC_LOCK_ASSERT(td->td_proc, MA_OWNED);
- PROC_PRIV_CHECK(PRIV_PROC_MEM_WRITE);
+ error = priv_check(curthread, PRIV_PROC_MEM_WRITE);
+ if (error)
+ return (error);
return (set_dbregs(td, dbregs));
}
@@ -149,8 +150,12 @@
int
proc_write_fpregs(struct thread *td, struct fpreg *fpregs)
{
+ int error;
+
PROC_LOCK_ASSERT(td->td_proc, MA_OWNED);
- PROC_PRIV_CHECK(PRIV_PROC_MEM_WRITE);
+ error = priv_check(curthread, PRIV_PROC_MEM_WRITE);
+ if (error)
+ return (error);
return (set_fpregs(td, fpregs));
}
@@ -271,7 +276,9 @@
if (regset->set == NULL)
return (EINVAL);
- PROC_PRIV_CHECK(PRIV_PROC_MEM_WRITE);
+ error = priv_check(curthread, PRIV_PROC_MEM_WRITE);
+ if (error)
+ return (error);
p = td->td_proc;
@@ -305,8 +312,12 @@
int
proc_write_regs32(struct thread *td, struct reg32 *regs32)
{
+ int error;
+
PROC_LOCK_ASSERT(td->td_proc, MA_OWNED);
- PROC_PRIV_CHECK(PRIV_PROC_MEM_WRITE);
+ error = priv_check(curthread, PRIV_PROC_MEM_WRITE);
+ if (error)
+ return (error);
return (set_regs32(td, regs32));
}
@@ -320,8 +331,12 @@
int
proc_write_dbregs32(struct thread *td, struct dbreg32 *dbregs32)
{
+ int error;
+
PROC_LOCK_ASSERT(td->td_proc, MA_OWNED);
- PROC_PRIV_CHECK(PRIV_PROC_MEM_WRITE);
+ error = priv_check(curthread, PRIV_PROC_MEM_WRITE);
+ if (error)
+ return (error);
return (set_dbregs32(td, dbregs32));
}
@@ -335,8 +350,12 @@
int
proc_write_fpregs32(struct thread *td, struct fpreg32 *fpregs32)
{
+ int error;
+
PROC_LOCK_ASSERT(td->td_proc, MA_OWNED);
- PROC_PRIV_CHECK(PRIV_PROC_MEM_WRITE);
+ error = priv_check(curthread, PRIV_PROC_MEM_WRITE);
+ if (error)
+ return (error);
return (set_fpregs32(td, fpregs32));
}
#endif
@@ -378,7 +397,9 @@
fault_flags = writing ? VM_FAULT_DIRTY : VM_FAULT_NORMAL;
if (writing) {
- PROC_PRIV_CHECK(PRIV_PROC_MEM_WRITE);
+ error = priv_check(curthread, PRIV_PROC_MEM_WRITE);
+ if (error)
+ return (error);
}
/*

File Metadata

Mime Type
text/plain
Expires
Wed, Sep 30, 12:23 AM (14 h, 32 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
39910339
Default Alt Text
D56864.id177341.diff (2 KB)

Event Timeline