Commit Graph

144 Commits

Author SHA1 Message Date
christos
4bfe82cbac Flip the order of two lines I mixed. Thanks to wiz for noticing. 2005-01-09 20:25:26 +00:00
christos
82ee9647b8 Allow PT_DUMPCORE to specify the core filename. 2005-01-09 19:22:55 +00:00
skrll
f7155e40f6 There's no need to pass a proc value when using UIO_SYSSPACE with
vn_rdwr(9) and uiomove(9).

OK'd by Jason Thorpe
2004-09-17 14:11:20 +00:00
christos
0fe4a0b07a Don't check for negative offset in the memory case. 64 bit addresses can
have the high bit set, and thus be interpreted as negative offsets. This
is not a problem because uvm_io() does all the range checks.
2004-06-22 02:06:55 +00:00
christos
19c4641ff8 (off_t)(long) is wrong when it comes to kernel addresses [because on a 32 bit
machine if the high bit is set they turn negative]. Make an intermediate cast
to unsigned long.
2004-05-26 16:28:05 +00:00
christos
d3f7c2a23c Check for bad offsets at the beginning of the functions to save processing.
Idea from OpenBSD.
2004-05-14 16:36:33 +00:00
pk
b2260877bf proc_reparent() must be called with proclist write lock held. Make it so. 2004-05-04 21:58:47 +00:00
pk
2fb3dac280 Since a vmspace' always includes a vm_map' we can re-use vm_map's
reference count lock to also protect the vmspace's reference count.
2004-05-04 21:33:40 +00:00
matt
879040549d Only do the pmap_procwr if the uvm_io succeeded. 2004-03-13 18:43:18 +00:00
dsl
2ffbd2ab99 Remove p_nras from struct proc - use LIST_EMPTY(&p->p_raslist) instead.
Remove p_raslock and rename p_lwplock p_lock (one lock is enough).
Simplify window test when adding a ras and correct test on VM_MAXUSER_ADDRESS.
Avoid unpredictable branch in i386 locore.S
(pad fields left in struct proc to avoid kernel bump)
2003-11-04 10:33:15 +00:00
agc
aad01611e7 Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22364, verified by myself.
2003-08-07 16:26:28 +00:00
fvdl
d5aece61d6 Back out the lwp/ktrace changes. They contained a lot of colateral damage,
and need to be examined and discussed more.
2003-06-29 22:28:00 +00:00
darrenr
960df3c8d1 Pass lwp pointers throughtout the kernel, as required, so that the lwpid can
be inserted into ktrace records.  The general change has been to replace
"struct proc *" with "struct lwp *" in various function prototypes, pass
the lwp through and use l_proc to get the process pointer when needed.

Bump the kernel rev up to 1.6V
2003-06-28 14:20:43 +00:00
nathanw
c7ca70e27a Add a ptrace interface for iterating over and collecting information
about LWPs. Loosely inspired by a similar interface in HP-UX ttrace(2).
2003-05-20 18:16:08 +00:00
nathanw
b5a9638ee1 Adapt to the new conventions of proc_unstop() and don't try to call
setrunnable(NULL).
2003-02-07 21:44:45 +00:00
christos
3ea86aec06 PT_DUMPCORE support. 2003-01-23 17:35:18 +00:00
thorpej
e0d8d366df Merge the nathanw_sa branch. 2003-01-18 10:06:22 +00:00
gmcgarry
366dfb04d7 Attempt to protect restartable atomic sequences of a traced process
being written to.  Breakpoints aren't good in a RAS.  This test isn't
infallible, since we can't protect memory which will be registered
as a RAS in the future.

Also, set the PC before attempting to single-step, so we can backout
from single-stepping.  Just in case we try to single-step into a RAS.
2002-08-28 07:27:14 +00:00
thorpej
fde1164ef5 Fix some signed/unsigned comparison warnings from GCC 3.3. 2002-08-25 23:23:22 +00:00
jdolecek
02eb342b57 Make sure that the pointer to old parent process for ptraced children
gets reset properly when the old parent exits before the child. A flag
is set in old parent process when the child is reparented in ptrace(2).
If it's set when process is exiting, all running processes have their
'old parent process' pointer checked and reset if appropriate. Also
change to use 'struct proc *' pointer directly, rather than pid_t.
This fixes security/14444 by David Sainty.

Reviewed by Christos Zoulas.
2002-07-25 20:04:02 +00:00
thorpej
f1f51aa2b8 Move code shared by procfs and the kernel proper out of procfs and
into the kernel proper (renaming functions from procfs_* to process_*).
2002-05-09 15:44:44 +00:00
thorpej
53df727d27 Add a new ptrace request, PT_IO, as proposed by Artur Grabowski
on the <bsd-api-discuss@wasabisystems.com> mailing list.  PT_IO
is a more general inferior I/D space I/O mechanism.  FreeBSD and
OpenBSD have also added PT_IO.

From lha@stacken.kth.se, kern/15945.
2002-03-17 17:02:45 +00:00
christos
d4e7e4c9c4 Fix a ptrace/execve race that could be used to modify the child process's
image during execve. This is a security issue because one can
do that to setuid programs... From FreeBSD.
2002-01-11 21:16:27 +00:00
thorpej
03efee5585 * Allow machine-dependent code to specify hooks for ptrace(2)
(__HAVE_PTRACE_MACHDEP) and procfs (__HAVE_PROCFS_MACHDEP).
  These changes will allow platforms like x86 (XMM) and PowerPC
  (AltiVec) to export extended register sets in a sane manner.

* Use __HAVE_PTRACE_MACHDEP to export x86 XMM registers (standard
  FP + SSE/SSE2) using PT_{GET,SET}XMMREGS (in the machdep
  ptrace request space).
* Use __HAVE_PROCFS_MACHDEP to export x86 XMM registers via
  /proc/N/xmmregs in procfs.
2001-12-05 00:58:05 +00:00
lukem
adc783d537 add RCSIDs 2001-11-12 15:25:01 +00:00
wiz
a9356936b4 seperate -> separate 2001-07-22 13:33:58 +00:00
nathanw
9e8fb68348 The trace_req() function is a no-op; garbage collect it. 2001-06-13 16:06:27 +00:00
pooka
6c3e28927e fix typo in comment 2001-03-17 09:38:36 +00:00
fvdl
ea08a209b5 Adapt for procfs_valid* argument change. 2001-01-17 01:13:23 +00:00
erh
3392996d23 Prevent ptrace on system processes. Avoids panic when attempting to ptrace pid 0, which has no parent. 2000-09-24 07:31:28 +00:00
thorpej
a86d1f4891 Add a lock around the scheduler, and use it as necessary, including
in the non-MULTIPROCESSOR case (LOCKDEBUG requires it).  Scheduler
lock is held upon entry to mi_switch() and cpu_switch(), and
cpu_switch() releases the lock before returning.

Largely from Bill Sommerfeld, with some minor bug fixes and
machine-dependent code hacking from me.
2000-08-20 21:50:06 +00:00
eeh
2152b574c0 Fix LP64BE bug. 2000-07-28 04:21:26 +00:00
mrg
32aa199ccf remove include of <vm/vm.h> 2000-06-27 17:41:07 +00:00
sommerfe
ef07055d58 Disallow tracing of processes unless tracer's root directory is at or
above tracee's root directory.
1999-03-25 04:45:56 +00:00
mrg
d2397ac5f7 completely remove Mach VM support. all that is left is the all the
header files as UVM still uses (most of) these.
1999-03-24 05:50:49 +00:00
mrg
d90485202c - add defopt's for UVM, UVMHIST and PMAP_NEW.
- remove unnecessary UVMHIST_DECL's.
1998-02-10 14:08:44 +00:00
mrg
1a8c7604f4 initial import of the new virtual memory system, UVM, into -current.
UVM was written by chuck cranor <chuck@maria.wustl.edu>, with some
minor portions derived from the old Mach code.  i provided some help
getting swap and paging working, and other bug fixes/ideas.  chuck
silvers <chuq@chuq.com> also provided some other fixes.

this is the rest of the MI portion changes.

this will be KNF'd shortly.  :-)
1998-02-05 07:59:28 +00:00
mycroft
701f15db33 Reinstate P_FSTRACE, with different semantics:
* Never send a SIGCHLD to the parent if P_FSTRACE is set.
* Do not permit mixing ptrace(2) and procfs; only permit using the one that
  was attached.
1997-04-28 04:49:27 +00:00
mycroft
e725c03060 When checking for init, compare against initproc, rather than comparing the
PID.  No functional difference.
1997-04-28 02:29:52 +00:00
tls
3052b5a949 fix obscure problem involving ptrace of init 1996-05-15 06:17:47 +00:00
christos
09afd77655 More proto fixes 1996-02-09 18:59:18 +00:00
christos
8a5b1b92e2 First pass at prototyping 1996-02-04 02:15:01 +00:00
mycroft
245f292fed Prefix names of system call implementation functions with `sys_'. 1995-10-07 06:25:19 +00:00
thorpej
60024eb978 Make system calls conform to a standard prototype and bring those
prototypes into scope.
1995-09-19 21:40:36 +00:00
mycroft
36a94a031a Lock the process in core before operating on it. 1995-08-13 09:05:51 +00:00
mycroft
d7e904a697 Fix various signal handling bugs:
* If we got a stopping signal while already stopped with the same signal,
the second signal would sometimes (but not always) be ignored.
* Signals delivered by the debugger always pretended to be stopping
signals.
* PT_ATTACH still didn't quite work right.
1995-06-08 23:51:01 +00:00
mycroft
4a975bbe6f If necessary, wake up the child during attach so we always get a SIGCHLD. 1995-06-05 20:57:54 +00:00
mycroft
53f792b77d Omit the call to process_sstep() if PT_STEP is not defined. 1995-02-09 05:19:18 +00:00
cgd
a03b011499 undo a part of the last change that mistakenly required PT_STEP.
(i simply undid that part of the change.)  also, fix a tyop.
1995-02-08 23:38:29 +00:00
mycroft
1815d82b85 Make attach/detach more safe. 1995-02-03 11:35:57 +00:00
mycroft
42d23cb6e4 Remove PT_{READ,WRITE}_U. 1995-01-26 17:56:21 +00:00
cgd
6ac2bbfc35 be more careful with types, also pull in headers where necessary. 1994-10-30 21:43:03 +00:00
cgd
6b86130410 update for new syscall args description mechanism 1994-10-20 04:22:35 +00:00
mycroft
3cc6cbc0e6 Correct test for already being traced. 1994-09-24 07:17:18 +00:00
cgd
b690c315ff ugly (#ifdef) hack to fix m68k alignment differences, etc. Eventually,
should be done with a 'natual alignment' macro, or some such.
1994-09-14 16:40:29 +00:00
deraadt
280592c6a7 replace "ctob(UPAGES)" and "UPAGES * NBPG" with "USPACE"
(cvs dumped core during previous commit...)
1994-08-23 22:13:59 +00:00
cgd
94109335b3 kill errant spaces 1994-08-21 21:24:33 +00:00
mycroft
77fe78350b Minor update to a comment. 1994-08-15 16:45:14 +00:00
cgd
97bdeab31e replace with a completely rewritten version, based around the 4.4BSD
procfs.  Now the author of the old version will stop complaining that
we're using his code.
1994-08-15 16:32:41 +00:00
cgd
b48d84b629 replce with virgin copy from 4.4-Lite 1994-08-15 16:29:22 +00:00
ws
2db64ab48d Try to pick myself up from the floor where I fell laughing. 1994-07-12 22:20:46 +00:00
cgd
cf92afd66e New RCS ID's, take two. they're more aesthecially pleasant, and use 'NetBSD' 1994-06-29 06:29:24 +00:00
cgd
fcb7a3c514 Implement ptrace() functionality, based on the previous version
by Sean Eric Fagan.
1994-05-18 11:37:00 +00:00
cgd
e5456f6c3e replace sys_process.c with the 4.4-Lite version 1994-05-18 11:32:27 +00:00
cgd
ed848af6f7 function name changes 1994-05-07 00:51:06 +00:00
cgd
a0a7429482 lots of changes: prototype migration, move lots of variables, definitions,
and structure elements around.  kill some unnecessary type and macro
definitions.  standardize clock handling.  More changes than you'd want.
1994-05-05 05:35:42 +00:00
cgd
4bbabd8e7a Rename a lot of process flags. 1994-05-04 03:41:12 +00:00
cgd
675a199909 SUGID semantics, similar to 4.4BSD 1994-04-07 00:40:14 +00:00
pk
b2d32f38eb A zero scale factor turns profiling off. 1994-03-11 09:12:22 +00:00
pk
a2e2253e6c Remove out-dated comments 1994-02-03 16:17:25 +00:00
cgd
55d2821ec0 make sure PT_STEP's are in #ifdefs 1994-01-28 19:06:17 +00:00
cgd
1b2497a000 if you define PT_[GS]ETFPREGS, then you'd better define struct fpreg, etc. 1994-01-28 06:51:13 +00:00
ws
2cee3e073f Make procfs really work for debugging.
Implement not & notepg files in procfs.
1994-01-20 21:22:47 +00:00
mycroft
a537084311 Cleanup. 1994-01-10 06:10:30 +00:00
mycroft
27a2653bc6 *Really* fix the wakeup code this time. 1994-01-10 05:58:37 +00:00
mycroft
b58ba6927f Wake up the blasted process when we detach! 1994-01-10 04:20:29 +00:00
cgd
3fbd67b7d3 implement PT_ATTACH and PT_DETACH. 1994-01-09 23:57:15 +00:00
cgd
b0bc24471f PT_STEP is actually machine dependent. not all machines have it! 1994-01-09 16:52:11 +00:00
cgd
47529628bb core reorg 1994-01-08 11:18:56 +00:00
mycroft
7f50bd1829 Canonicalize all #includes. 1993-12-18 04:21:37 +00:00
cgd
5419d0bd49 initialize uninitialized variable, from Andy Heffernan <ahh@netcom.com>. 1993-12-01 22:05:04 +00:00
mycroft
526dbecdb2 A little more cleanup; 0 --> FALSE and 1 --> TRUE. 1993-09-06 02:06:34 +00:00
mycroft
cc054a83e7 De-ANSIfy and re-KNFify. 1993-09-06 02:03:03 +00:00
sef
b477be52eb Yet more of the ptrace() reorg; now ptrace_setregs() and ptrace_getregs()
are present, along with PT_GETREGS and PT_SETREGS ptrace commands.
1993-09-05 03:53:52 +00:00
sef
fddf2c7605 ptrace_single_step() and ptrace_set_pc() should return errors if
necessary.  (Mainly because the SPARC can't easily single step, so
it should return EINVAL, and then ptrace() should return that to the
user.)
1993-09-04 08:46:36 +00:00
cgd
3aa99f85dc better ptrace() support from Sean Eric Fagan <sef@kithrup.com> 1993-09-04 05:32:18 +00:00
cgd
c0334ef92c break args structs out, into syscallname_args structs, so gcc2 doesn't
whine so much.
1993-07-13 22:13:15 +00:00
cgd
955ae6a915 change exit() to kexit(), so prototypes are "safe" with stdio.h, etc. 1993-07-04 23:30:33 +00:00
andrew
0e6cb953ea ANSIfications - removed all implicit function return types and argument
definitions.  Ensured that all files include "systm.h" to gain access to
general prototypes.  Casts where necessary.
1993-06-27 06:01:27 +00:00
cgd
44dcf397e8 move sipcreg into i386/include/reg.h where it belongs, right next to ipcreg. 1993-05-24 11:37:12 +00:00
cgd
230dcf0d05 add $Id$ strings, and clean up file headers where necessary 1993-05-20 02:54:09 +00:00
cgd
e27c0ba7bc update for bde's useracc changes. from patchkit patch 137. 1993-05-07 07:06:42 +00:00
cgd
e541169ce2 after 0.2.2 "stable" patches applied 1993-03-21 18:04:42 +00:00
cgd
61f282557f initial import of 386bsd-0.1 sources 1993-03-21 09:45:37 +00:00