summaryrefslogtreecommitdiffstats
path: root/sys/fs/procfs/procfs_vnops.c
Commit message (Collapse)AuthorAgeFilesLines
* Proc locking identical to that of linprocfs' vnops except that we hold thejhb2001-03-071-18/+59
| | | | proc lock while calling psignal.
* Mechanical change to use <sys/queue.h> macro API instead ofphk2001-02-041-1/+1
| | | | | | | fondling implementation details. Created with: sed(1) Reviewed by: md5(1)
* Use macro API to <sys/queue.h>phk2000-12-311-4/+4
|
* - Change the allproc_lock to use a macro, ALLPROC_LOCK(how), insteadjake2000-12-131-1/+4
| | | | | | | | of explicit calls to lockmgr. Also provides macros for the flags pased to specify shared, exclusive or release which map to the lockmgr flags. This is so that the use of lockmgr can be easily replaced with optimized reader-writer locks. - Add some locking that I missed the first time.
* return correct type for process directory entries, DT_DIR not DT_REGalfred2000-10-051-1/+1
|
* Remove a comment that has been not only obsolete but patently wrong for thedes2000-09-041-8/+0
| | | | last 31 revisions (almost three years).
* o Simplify if/then clause equating ESRCH with ENOENT when hiding a processrwatson2000-09-011-5/+2
| | | | Submitted by: des
* o Make procfs use vaccess() for procfs_access() DAC and super-user checks,rwatson2000-09-011-28/+4
| | | | | | | rather than implementing its own {uid,gid,other} checks against vnode mode. Similar change to linprocfs currently under review. Obtained from: TrustedBSD Project
* o Centralize inter-process access control, introducing:rwatson2000-08-301-16/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | int p_can(p1, p2, operation, privused) which allows specification of subject process, object process, inter-process operation, and an optional call-by-reference privused flag, allowing the caller to determine if privilege was required for the call to succeed. This allows jail, kern.ps_showallprocs and regular credential-based interaction checks to occur in one block of code. Possible operations are P_CAN_SEE, P_CAN_SCHED, P_CAN_KILL, and P_CAN_DEBUG. p_can currently breaks out as a wrapper to a series of static function checks in kern_prot, which should not be invoked directly. o Commented out capabilities entries are included for some checks. o Update most inter-process authorization to make use of p_can() instead of manual checks, PRISON_CHECK(), P_TRESPASS(), and kern.ps_showallprocs. o Modify suser{,_xxx} to use const arguments, as it no longer modifies process flags due to the disabling of ASU. o Modify some checks/errors in procfs so that ENOENT is returned instead of ESRCH, further improving concealment of processes that should not be visible to other processes. Also introduce new access checks to improve hiding of processes for procfs_lookup(), procfs_getattr(), procfs_readdir(). Correct a bug reported by bp concerning not handling the CREATE case in procfs_lookup(). Remove volatile flag in procfs that caused apparently spurious qualifier warnigns (approved by bde). o Add comment noting that ktrace() has not been updated, as its access control checks are different from ptrace(), whereas they should probably be the same. Further discussion should happen on this topic. Reviewed by: bde, green, phk, freebsd-security, others Approved by: bde Obtained from: TrustedBSD Project
* Introduce vop_stdinactive() and make it the default if no vop_inactivephk2000-08-181-24/+0
| | | | | | is declared. Sort and prune a few vop_op[].
* Move procfs_fullpath() to vfs_cache.c, with a rename to textvp_fullpath().green2000-04-261-2/+2
| | | | | | | | | | There's no excuse to have code in synthetic filestores that allows direct references to the textvp anymore. Feature requested by: msmith Feature agreed to by: warner Move requested by: phk Move agreed to by: bde
* Quiet an unused variable warning by commenting out a variable declarationgreen2000-04-221-1/+1
| | | | that goes with a commented out statement.
* Welcome back our old friend from procfs, "file"!green2000-04-221-19/+50
|
* Introduce NDFREE (and remove VOP_ABORTOP)eivind1999-12-151-21/+0
|
* Introduce the new functionphk1999-11-211-2/+2
| | | | | | | | | | | | | | p_trespass(struct proc *p1, struct proc *p2) which returns zero or an errno depending on the legality of p1 trespassing on p2. Replace kern_sig.c:CANSIGNAL() with call to p_trespass() and one extra signal related check. Replace procfs.h:CHECKIO() macros with calls to p_trespass(). Only show command lines to process which can trespass on the target process.
* The function `procfs_getattr()' in procfs doesn't set the value ofphk1999-11-171-0/+2
| | | | | | | | vap->va_fsid, so we cannot get valid information about procfs. Submitted by: SAWADA Mizuki miz@pa.aix.or.jp Reviewed by: phk PR: 1654
* Make an incredibly stupid change because Warner threatened to do it andsef1999-11-071-1/+0
| | | | | | | | | | | | | | | | | | | continue doing it despite objections by me (the principal author). Note that this doesn't fix the real problem -- the real problem is generally bad setup by ignorant users, and education is the right way to fix it. So while this doesn't actually solve the prolem mentioned in the complaint (since it's still possible to do it via other methods, although they mostly involve a bit more complicity), and there are better methods to do this, nobody was willing or able to provide me with a real world example that couldn't be worked around using the existing permissions and group mechanism. And therefore, security by removing features is the method of the day. I only had three applications that used it, in any event. One of them would have made debugging easier, but I still haven't finished it, and won't now, so it doesn't really matter.
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* Allow jailed proccesses to open non-process vnodes like the root of the fs.phk1999-07-091-2/+2
|
* Implement support for hardware debug registers on the i386.jlemon1999-07-091-1/+7
| | | | Submitted by: Brian Dean <brdean@unx.sas.com>
* Eliminate the bogus procfs private almost struct dirent structure.phk1999-06-131-23/+24
| | | | | Spotted by: Lars Hamren Reviewed by: bde
* Make the type and map files claim 0 bytes size. Tar doesn't get confusedphk1999-05-041-13/+10
| | | | | | now, but doesn't store any data eiter. I wonder if we shouldn't claim to be fifos instead...
* Add a new "file" to procfs: "rlimit" which shows the resource limits forphk1999-04-301-1/+3
| | | | | | | | the process. PR: 11342 Submitted by: Adrian Chadd adrian@freebsd.org Reviewed by: phk
* This Implements the mumbled about "Jail" feature.phk1999-04-281-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a seriously beefed up chroot kind of thing. The process is jailed along the same lines as a chroot does it, but with additional tough restrictions imposed on what the superuser can do. For all I know, it is safe to hand over the root bit inside a prison to the customer living in that prison, this is what it was developed for in fact: "real virtual servers". Each prison has an ip number associated with it, which all IP communications will be coerced to use and each prison has its own hostname. Needless to say, you need more RAM this way, but the advantage is that each customer can run their own particular version of apache and not stomp on the toes of their neighbors. It generally does what one would expect, but setting up a jail still takes a little knowledge. A few notes: I have no scripts for setting up a jail, don't ask me for them. The IP number should be an alias on one of the interfaces. mount a /proc in each jail, it will make ps more useable. /proc/<pid>/status tells the hostname of the prison for jailed processes. Quotas are only sensible if you have a mountpoint per prison. There are no privisions for stopping resource-hogging. Some "#ifdef INET" and similar may be missing (send patches!) If somebody wants to take it from here and develop it into more of a "virtual machine" they should be most welcome! Tools, comments, patches & documentation most welcome. Have fun... Sponsored by: http://www.rndassociates.com/ Run for almost a year by: http://www.servetheweb.com/
* Suser() simplification:phk1999-04-271-3/+3
| | | | | | | | | | | | | | | | | | | 1: s/suser/suser_xxx/ 2: Add new function: suser(struct proc *), prototyped in <sys/proc.h>. 3: s/suser_xxx(\([a-zA-Z0-9_]*\)->p_ucred, \&\1->p_acflag)/suser(\1)/ The remaining suser_xxx() calls will be scrutinized and dealt with later. There may be some unneeded #include <sys/cred.h>, but they are left as an exercise for Bruce. More changes to the suser() API will come along with the "jail" code.
* Fix warnings in preparation for adding -Wall -Wcast-qual to thedillon1999-01-271-6/+6
| | | | kernel compile
* A partial implementation of the procfs cmdline pseudo-file. Thispeter1999-01-051-1/+3
| | | | | | | | is enough to satisfy things like StarOffice. This is a hack, but doing it properly would be a LOT of work, and would require extensive grovelling around in the user address space to find the argv[]. Obtained from: Mostly from Andrzej Bialecki <abial@nask.pl>.
* Examine all occurrences of sprintf(), strcat(), and str[n]cpy()archie1998-12-041-3/+3
| | | | | | | | | | | | | | for possible buffer overflow problems. Replaced most sprintf()'s with snprintf(); for others cases, added terminating NUL bytes where appropriate, replaced constants like "16" with sizeof(), etc. These changes include several bug fixes, but most changes are for maintainability's sake. Any instance where it wasn't "immediately obvious" that a buffer overflow could not occur was made safer. Reviewed by: Bruce Evans <bde@zeta.org.au> Reviewed by: Matthew Dillon <dillon@apollo.backplane.com> Reviewed by: Mike Spengler <mks@networkcs.com>
* Fixed printf format errors.bde1998-07-111-3/+3
|
* Remove "not hungly" panics. Cookies now used by the linux and ibcs2dt1998-06-251-10/+3
| | | | | | | emulators. The emulators assume that filesystem may just ignore cookies, and handle this case correctly. So we just ignore cookies. Also sync *_readdir "prototypes" with reality.
* Avoid a 64-bit division in procfs_readdir(). Fixed related overflows.bde1998-06-141-10/+6
| | | | | | | | | | | | Check args using the same expression as in fdesc and kernfs. The check was actually already correct, modulo overflow. It could be tightened up to either allow huge (aligned) offsets, treating them as EOF, or disallow all offsets beyond EOF. Didn't fix invalid address calculation &foo[i] where i may be out of bounds. Didn't fix shooting of foot using a private unportable dirent struct.
* Don't silently accept attempts to change flags where they are notpeter1998-06-101-1/+5
| | | | supported.
* Disallow reading the current kernel stack. Only the user structure andtegge1998-05-191-2/+2
| | | | | the current registers should be accessible. Reviewed by: David Greenman <dg@root.com>
* Add two new functions, get{micro|nano}time.phk1998-03-261-6/+2
| | | | | | | | | | | | They are atomic, but return in essence what is in the "time" variable. gettime() is now a macro front for getmicrotime(). Various patches to use the two new functions instead of the various hacks used in their absence. Some puntuation and grammer patches from Bruce. A couple of XXX comments.
* Staticize.eivind1998-02-091-2/+2
|
* Back out DIAGNOSTIC changes.eivind1998-02-061-3/+1
|
* Turn DIAGNOSTIC into a new-style option.eivind1998-02-041-1/+3
|
* Make our v_usecount vnode reference count work identically to thedyson1998-01-061-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | original BSD code. The association between the vnode and the vm_object no longer includes reference counts. The major difference is that vm_object's are no longer freed gratuitiously from the vnode, and so once an object is created for the vnode, it will last as long as the vnode does. When a vnode object reference count is incremented, then the underlying vnode reference count is incremented also. The two "objects" are now more intimately related, and so the interactions are now much less complex. When vnodes are now normally placed onto the free queue with an object still attached. The rundown of the object happens at vnode rundown time, and happens with exactly the same filesystem semantics of the original VFS code. There is absolutely no need for vnode_pager_uncache and other travesties like that anymore. A side-effect of these changes is that SMP locking should be much simpler, the I/O copyin/copyout optimizations work, NFS should be more ponderable, and further work on layered filesystems should be less frustrating, because of the totally coherent management of the vnode objects and vnodes. Please be careful with your system while running this code, but I would greatly appreciate feedback as soon a reasonably possible.
* Use CHECKIO in procfs_ioctl() to ensure that any changes in UID/GID resultsef1998-01-061-1/+4
| | | | in the expected failure.
* Unspammed nested include of <vm/vm_zone.h>.bde1997-12-271-2/+2
|
* Clear the p_stops field on change of user/group id, unless the correctsef1997-12-201-3/+13
| | | | | | | | | flag is set in the p_pfsflags field. This, essentially, prevents an SUID proram from hanging after being traced. (E.g., "truss /usr/bin/rlogin" would fail, but leave rlogin in a stopevent state.) Yet another case where procctl is (hopefully ;)) no longer needed in the general case. Reviewed by: bde (thanks bruce :))
* Change the ioctls for procfs around a bit; in particular, whever possible,sef1997-12-131-3/+4
| | | | | | | | | | | | | | change from ioctl(fd, PIOC<foo>, &i); to ioctl(fd, PIOC<foo>, i); This is going from the _IOW to _IO ioctl macro. The kernel, procctl, and truss must be in synch for it all to work (not doing so will get errors about inappropriate ioctl's, fortunately). Hopefully I didn't forget anything :).
* Fix a problem with procfs_exit() that resulted in missing some procfssef1997-12-121-11/+1
| | | | | | nodes; this also apparantly caused a panic in some circumstances. Also, since procfs_exit() is getting rid of the nodes when a process exits, don't bother checking for the process' existance in procfs_inactive().
* A couple of fixes from bruce: first of all, psignal is a void (stupidsef1997-12-081-3/+3
| | | | | | | | me; unfortunately, also makes it hard ot check for errors); second, I had managed to forget a change to PIOCSFL (it should be _IOW, not _IOR) I had in my local copy, and Bruce called me on it. Submitted by: bde
* Clear the stop events and wakeup the process on teh last close of thesef1997-12-071-1/+29
| | | | | | | procfs/mem file. While this doesn't prevent an unkillable process, it means that a broken truss prorgam won't do it accidently now (well, there's a small window of opportunity). Note that this requires the change to truss I am about to commit.
* Changes to allow event-based process monitoring and control.sef1997-12-061-1/+77
|
* Don't include <sys/lock.h> in headers when only `struct simplelock' isbde1997-12-051-1/+2
| | | | required. Fixed everything that depended on the pollution.
* Remove a bunch of variables which were unused both in GENERIC and LINT.phk1997-11-071-4/+1
| | | | Found by: -Wunused
* KNFize rev.1.31.bde1997-10-271-4/+6
|
* Removed unused #includes. The need for most of them went away withbde1997-10-271-2/+1
| | | | recent changes (docluster* and vfs improvements).
OpenPOWER on IntegriCloud