summaryrefslogtreecommitdiffstats
path: root/sys/kern/sysv_ipc.c
Commit message (Collapse)AuthorAgeFilesLines
* Move SysV IPC freebsd32 compat shims helpers from freebsd32_misc.c tokib2010-03-191-0/+66
| | | | | | | sysv_ipc.c. Reviewed by: jhb MFC after: 2 weeks
* Change the ABI of some of the structures used by the SYSV IPC API:jhb2009-06-241-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - The uid/cuid members of struct ipc_perm are now uid_t instead of unsigned short. - The gid/cgid members of struct ipc_perm are now gid_t instead of unsigned short. - The mode member of struct ipc_perm is now mode_t instead of unsigned short (this is merely a style bug). - The rather dubious padding fields for ABI compat with SV/I386 have been removed from struct msqid_ds and struct semid_ds. - The shm_segsz member of struct shmid_ds is now a size_t instead of an int. This removes the need for the shm_bsegsz member in struct shmid_kernel and should allow for complete support of SYSV SHM regions >= 2GB. - The shm_nattch member of struct shmid_ds is now an int instead of a short. - The shm_internal member of struct shmid_ds is now gone. The internal VM object pointer for SHM regions has been moved into struct shmid_kernel. - The existing __semctl(), msgctl(), and shmctl() system call entries are now marked COMPAT7 and new versions of those system calls which support the new ABI are now present. - The new system calls are assigned to the FBSD-1.1 version in libc. The FBSD-1.0 symbols in libc now refer to the old COMPAT7 system calls. - A simplistic framework for tagging system calls with compatibility symbol versions has been added to libc. Version tags are added to system calls by adding an appropriate __sym_compat() entry to src/lib/libc/incldue/compat.h. [1] PR: kern/16195 kern/113218 bin/129855 Reviewed by: arch@, rwatson Discussed with: kan, kib [1]
* Eliminate now-unused SUSER_ALLOWJAIL arguments to priv_check_cred(); inrwatson2007-06-121-6/+3
| | | | | | | | | | | | | | | some cases, move to priv_check() if it was an operation on a thread and no other flags were present. Eliminate caller-side jail exception checking (also now-unused); jail privilege exception code now goes solely in kern_jail.c. We can't yet eliminate suser() due to some cases in the KAME code where a privilege check is performed and then used in many different deferred paths. Do, however, move those prototypes to priv.h. Reviewed by: csjp Obtained from: TrustedBSD Project
* Sync up PRIV_IPC_{ADMIN,READ,WRITE} priv checks in ipcperm() withrwatson2007-02-201-3/+6
| | | | | kern_jail.c: allow jailed root these privileges. This only has an effect if System V IPC is administratively enabled for the jail.
* Restore sysv_ipc.c:1.30, which was backed out due to interactions withrwatson2007-02-191-38/+66
| | | | | | | | | | | | | | | | | | | | | System V shared memory, now believed fixed in sysv_shm.c:1.109: date: 2006/11/06 13:42:01; author: rwatson; state: Exp; lines: +65 -37 Sweep kernel replacing suser(9) calls with priv(9) calls, assigning specific privilege names to a broad range of privileges. These may require some future tweaking. Sponsored by: nCircle Network Security, Inc. Obtained from: TrustedBSD Project Discussed on: arch@ Reviewed (at least in part) by: mlaier, jmg, pjd, bde, ceri, Alex Lyashkov <umka at sevcity dot net>, Skip Ford <skip dot ford at verizon dot net>, Antoine Brodin <antoine dot brodin at laposte dot net> This restores fine-grained privilege support to System V IPC. PR: 106078
* For now, back out sysv_ipc.c:1.30, which caused shmget() with odd moderwatson2006-12-161-66/+38
| | | | | | | | | | | arguments to fail. The mode field for shmget() appears to have undefined meaning in the context of an already-present IPC object, but applications appear to assume any arbitrary passed value will be ignored. I had hoped to revisit this more quickly, but am removing the change for now to prevent toe-stubbing. Reported by: JAroslav Suchanek <jarda at grisoft dot cz> PR: kern/106078
* Sweep kernel replacing suser(9) calls with priv(9) calls, assigningrwatson2006-11-061-38/+66
| | | | | | | | | | | | | specific privilege names to a broad range of privileges. These may require some future tweaking. Sponsored by: nCircle Network Security, Inc. Obtained from: TrustedBSD Project Discussed on: arch@ Reviewed (at least in part) by: mlaier, jmg, pjd, bde, ceri, Alex Lyashkov <umka at sevcity dot net>, Skip Ford <skip dot ford at verizon dot net>, Antoine Brodin <antoine dot brodin at laposte dot net>
* /* -> /*- for copyright notices, minor format tweaks as necessaryimp2005-01-061-1/+1
|
* Add an annotation to the comment for sysv_ipc.c to indicate that therwatson2004-10-221-2/+6
| | | | | | MAC Framework doesn't require checks in ipcperm() because checks relating to System V IPC will be performed in individual IPC implementations.
* Use __FBSDID().obrien2003-06-111-2/+3
|
* Attempt to further comment and clarify System V IPC logic: documentrwatson2003-05-311-9/+24
| | | | | | | | | | | why certain exceptions are made, note an inconsistency between FreeBSD and some other implementations regarding IPC_M, and let suser() generate our EPERM rather than forcing it ourselves. Remove a carriage return that crept in in the last commit. Reviewed by: gordon Obtained from: TrustedBSD Project Sponsored by: DARPA, Network Associates Laboratories
* Attempt to marginally de-obfuscate sections of the System V IPC accessrwatson2003-05-311-2/+7
| | | | | | | control logic. Obtained from: TrustedBSD Project Sponsored by: DARPA, Network Associates Laboratories
* It is possible for an active aio to prevent shared memory from beingdillon2003-01-131-4/+3
| | | | | | | | | | | | | dereferenced when a process exits due to the vmspace ref-count being bumped. Change shmexit() and shmexit_myhook() to take a vmspace instead of a process and call it in vmspace_dofree(). This way if it is missed in exit1()'s early-resource-free it will still be caught when the zombie is reaped. Also fix a potential race in shmexit_myhook() by NULLing out vmspace->vm_shm prior to calling shm_delete_mapping() and free(). MFC after: 7 days
* Change the suser() API to take advantage of td_ucred as well as do ajhb2002-04-011-2/+2
| | | | | | | | | | | | general cleanup of the API. The entire API now consists of two functions similar to the pre-KSE API. The suser() function takes a thread pointer as its only argument. The td_ucred member of this thread must be valid so the only valid thread pointers are curthread and a few kernel threads such as thread0. The suser_cred() function takes a pointer to a struct ucred as its first argument and an integer flag as its second argument. The flag is currently only used for the PRISON_ROOT flag. Discussed on: smp@
* Simple p_ucred -> td_ucred changes to start using the per-thread ucredjhb2002-02-271-1/+1
| | | | reference.
* Eliminate semexit_hook using at_exit(9) and rm_at_exit(9).alc2001-12-301-12/+0
| | | | Reviewed by: alfred
* o Remove (struct proc *p = td->td_proc) indirection in ipcperm(),rwatson2001-11-021-5/+3
| | | | | | | | | as suser_td(td) works as well as suser_xxx(NULL, p->p_ucred, 0); This simplifies upcoming changes to suser(), and causes this code to use the right credential (well, largely) once the td->td_ucred changes are complete. There remains some redundancy and oddness in this code, which should be rethought after the next batch of suser and credential changes.
* o Move suser() calls in kern/ to using suser_xxx() with an explicitrwatson2001-11-011-2/+4
| | | | | | | | | credential selection, rather than reference via a thread or process pointer. This is part of a gradual migration to suser() accepting a struct ucred instead of a struct proc, simplifying the reference and locking semantics of suser(). Obtained from: TrustedBSD Project
* KSE Milestone 2julian2001-09-121-2/+3
| | | | | | | | | | | | | | Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process. Sorry john! (your next MFC will be a doosie!) Reviewed by: peter@freebsd.org, dillon@freebsd.org X-MFC after: ha ha ha ha
* sysvipc loadable.alfred2000-12-011-204/+38
| | | | | | new syscall entry lkmressys - "reserved loadable syscall" Make syscall_register allow overwriting of such entries (lkmressys).
* Move suser() and suser_xxx() prototypes and a related #define fromphk2000-10-291-0/+1
| | | | | | | | | <sys/proc.h> to <sys/systm.h>. Correctly document the #includes needed in the manpage. Add one now needed #include of <sys/systm.h>. Remove the consequent 48 unused #includes of <sys/proc.h>.
* Remove the undocumented, flawed, broken-as-designed semconfig() syscall.peter2000-05-011-9/+0
|
* In 'ipcperm()', only call 'suser()' if it is actually required.bsd2000-03-131-7/+2
| | | | | | | | | Previously, it was being called whether it was needed or not and the ASU flag was being set (as a side affect of calling 'suser()') in cases where superuser privileges were not actually needed. This was all pointed out to me by Bruce Evans. Reviewed by: bde
* Fix a superuser credential check.bsd2000-02-291-1/+3
| | | | | Reviewed by: phk Approved by: jkh
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* Change suser_xxx() to suser() where it applies.phk1999-04-271-7/+6
|
* 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.
* Use suser() to determine super-user-ness, don't examine cr_uid directly.phk1999-01-301-2/+5
|
* Removed an unused #include. Added an unsed #include of <sys/ucred.h>bde1997-11-181-8/+9
| | | | | to prepare for not including it in <sys/param.h>. Moved conditionally used #includes inside an ifdef.
* Move the "retval" (3rd) parameter from all syscall functions and putphk1997-11-061-46/+31
| | | | | | | | | | | | it in struct proc instead. This fixes a boatload of compiler warning, and removes a lot of cruft from the sources. I have not removed the /*ARGSUSED*/, they will require some looking at. libkvm, ps and other userland struct proc frobbing programs will need recompiled.
* Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are notpeter1997-02-221-1/+1
| | | | ready for it yet.
* Make the long-awaited change from $Id$ to $FreeBSD$jkh1997-01-141-1/+1
| | | | | | | | This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
* kern_descrip.c: add fdshare()/fdcopy()peter1996-02-231-3/+2
| | | | | | | | | | | | | | | | | | | | kern_fork.c: add the tiny bit of code for rfork operation. kern/sysv_*: shmfork() takes one less arg, it was never used. sys/shm.h: drop "isvfork" arg from shmfork() prototype sys/param.h: declare rfork args.. (this is where OpenBSD put it..) sys/filedesc.h: protos for fdshare/fdcopy. vm/vm_mmap.c: add minherit code, add rounding to mmap() type args where it makes sense. vm/*: drop unused isvfork arg. Note: this rfork() implementation copies the address space mappings, it does not connect the mappings together. ie: once the two processes have split, the pages may be shared, but the address space is not. If one does a mmap() etc, it does not appear in the other. This makes it not useful for pthreads, but it is useful in it's own right for having light-weight threads in a static shared address space. Obtained from: Original by Ron Minnich, extended by OpenBSD
* (gulp!) reran makesyscalls..peter1996-01-081-2/+229
| | | | | | | sysv_ipc.c: add stub functions that either simply return (for the hooks in kern_fork/kern_exit) or log() a messgae and call enosys() (for the syscalls). sysv_ipc.c will become "standard" in conf/files and has #ifs for all the permutations.
* Somehow managed to miss these four files when converting the SYSV IPCwollman1996-01-051-1/+3
| | | | options over to the new style.
* Added SYSV ipcs.dfr1994-09-131-0/+69
Obtained from: NetBSD and FreeBSD-1.1.5
OpenPOWER on IntegriCloud