Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F157581042
D56864.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D56864.diff
View Options
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 != 0)
+ 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 != 0)
+ 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 != 0)
+ 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 != 0)
+ 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 != 0)
+ 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 != 0)
+ 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 != 0)
+ 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 != 0)
+ return (error);
}
/*
@@ -710,11 +731,11 @@
addr = uap->addr;
break;
}
- if (error)
+ if (error != 0)
return (error);
error = kern_ptrace(td, uap->req, uap->pid, addr, uap->data);
- if (error)
+ if (error != 0)
return (error);
switch (uap->req) {
@@ -1250,7 +1271,7 @@
CTR3(KTR_PTRACE, "PT_STEP: tid %d (pid %d), sig = %d",
td2->td_tid, p->p_pid, data);
error = ptrace_single_step(td2);
- if (error)
+ if (error != 0)
goto out;
break;
case PT_CONTINUE:
@@ -1260,7 +1281,7 @@
if (addr != (void *)1) {
error = ptrace_set_pc(td2,
(u_long)(uintfptr_t)addr);
- if (error)
+ if (error != 0)
goto out;
td2->td_dbgflags |= TDB_USERWR;
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, May 24, 1:33 AM (17 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32760347
Default Alt Text
D56864.diff (3 KB)
Attached To
Mode
D56864: Remove PROC_CHECK_PRIV macro from sys_process.c
Attached
Detach File
Event Timeline
Log In to Comment