head	1.2;
access;
symbols
	RELENG_8_4:1.2.0.2
	RELENG_9_1_0_RELEASE:1.1.6.1.4.2
	RELENG_9_1:1.1.6.1.0.4
	RELENG_9_1_BP:1.1.6.1
	RELENG_8_3_0_RELEASE:1.1.4.1.8.1
	RELENG_8_3:1.1.4.1.0.8
	RELENG_8_3_BP:1.1.4.1
	RELENG_9_0_0_RELEASE:1.1.6.1.2.1
	RELENG_9_0:1.1.6.1.0.2
	RELENG_9_0_BP:1.1.6.1
	RELENG_9:1.1.0.6
	RELENG_9_BP:1.1
	RELENG_7_4_0_RELEASE:1.1.2.1.6.1
	RELENG_8_2_0_RELEASE:1.1.4.1.6.1
	RELENG_7_4:1.1.2.1.0.6
	RELENG_7_4_BP:1.1.2.1
	RELENG_8_2:1.1.4.1.0.6
	RELENG_8_2_BP:1.1.4.1
	RELENG_8_1_0_RELEASE:1.1.4.1.4.1
	RELENG_8_1:1.1.4.1.0.4
	RELENG_8_1_BP:1.1.4.1
	RELENG_7_3_0_RELEASE:1.1.2.1.4.1
	RELENG_7_3:1.1.2.1.0.4
	RELENG_7_3_BP:1.1.2.1
	RELENG_8_0_0_RELEASE:1.1.4.1.2.1
	RELENG_8_0:1.1.4.1.0.2
	RELENG_8_0_BP:1.1.4.1
	RELENG_8:1.1.0.4
	RELENG_8_BP:1.1
	RELENG_7_2_0_RELEASE:1.1.2.1.2.1
	RELENG_7_2:1.1.2.1.0.2
	RELENG_7_2_BP:1.1.2.1
	RELENG_7:1.1.0.2;
locks; strict;
comment	@# @;


1.2
date	2012.11.17.01.53.55;	author svnexp;	state Exp;
branches
	1.2.2.1;
next	1.1;

1.1
date	2008.06.27.05.39.04;	author jhb;	state Exp;
branches
	1.1.2.1
	1.1.4.1
	1.1.6.1;
next	;

1.2.2.1
date	2012.11.17.01.53.55;	author svnexp;	state dead;
branches;
next	1.2.2.2;

1.2.2.2
date	2013.03.28.13.05.52;	author svnexp;	state Exp;
branches;
next	;

1.1.2.1
date	2009.02.17.19.57.52;	author jhb;	state Exp;
branches
	1.1.2.1.2.1
	1.1.2.1.4.1
	1.1.2.1.6.1;
next	1.1.2.2;

1.1.2.2
date	2012.11.17.08.08.05;	author svnexp;	state Exp;
branches;
next	;

1.1.2.1.2.1
date	2009.04.15.03.14.26;	author kensmith;	state Exp;
branches;
next	;

1.1.2.1.4.1
date	2010.02.10.00.26.20;	author kensmith;	state Exp;
branches;
next	;

1.1.2.1.6.1
date	2010.12.21.17.10.29;	author kensmith;	state Exp;
branches;
next	1.1.2.1.6.2;

1.1.2.1.6.2
date	2012.11.17.08.17.39;	author svnexp;	state Exp;
branches;
next	;

1.1.4.1
date	2009.08.03.08.13.06;	author kensmith;	state Exp;
branches
	1.1.4.1.2.1
	1.1.4.1.4.1
	1.1.4.1.6.1
	1.1.4.1.8.1;
next	1.1.4.2;

1.1.4.2
date	2012.11.17.10.37.12;	author svnexp;	state Exp;
branches;
next	;

1.1.4.1.2.1
date	2009.10.25.01.10.29;	author kensmith;	state Exp;
branches;
next	;

1.1.4.1.4.1
date	2010.06.14.02.09.06;	author kensmith;	state Exp;
branches;
next	;

1.1.4.1.6.1
date	2010.12.21.17.09.25;	author kensmith;	state Exp;
branches;
next	;

1.1.4.1.8.1
date	2012.03.03.06.15.13;	author kensmith;	state Exp;
branches;
next	1.1.4.1.8.2;

1.1.4.1.8.2
date	2012.11.17.08.25.46;	author svnexp;	state Exp;
branches;
next	;

1.1.6.1
date	2011.09.23.00.51.37;	author kensmith;	state Exp;
branches
	1.1.6.1.2.1
	1.1.6.1.4.1;
next	1.1.6.2;

1.1.6.2
date	2012.11.17.11.37.30;	author svnexp;	state Exp;
branches;
next	;

1.1.6.1.2.1
date	2011.11.11.04.20.22;	author kensmith;	state Exp;
branches;
next	1.1.6.1.2.2;

1.1.6.1.2.2
date	2012.11.17.08.37.27;	author svnexp;	state Exp;
branches;
next	;

1.1.6.1.4.1
date	2012.08.05.23.54.33;	author kensmith;	state Exp;
branches;
next	1.1.6.1.4.2;

1.1.6.1.4.2
date	2012.11.17.08.48.18;	author svnexp;	state Exp;
branches;
next	;


desc
@@


1.2
log
@Switching exporter and resync
@
text
@# $FreeBSD: head/tools/regression/posixsem/Makefile 180059 2008-06-27 05:39:04Z jhb $

PROG=	posixsem
SRCS=	posixsem.c test.c
DPADD=	${LIBKVM}
LDADD=	-lkvm
NO_MAN=

WARNS?=	3

.include <bsd.prog.mk>
@


1.2.2.1
log
@file Makefile was added on branch RELENG_8_4 on 2013-03-28 13:05:52 +0000
@
text
@d1 11
@


1.2.2.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/248810
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@a0 11
# $FreeBSD: releng/8.4/tools/regression/posixsem/Makefile 180059 2008-06-27 05:39:04Z jhb $

PROG=	posixsem
SRCS=	posixsem.c test.c
DPADD=	${LIBKVM}
LDADD=	-lkvm
NO_MAN=

WARNS?=	3

.include <bsd.prog.mk>
@


1.1
log
@SVN rev 180059 on 2008-06-27 05:39:04Z by jhb

Rework the lifetime management of the kernel implementation of POSIX
semaphores.  Specifically, semaphores are now represented as new file
descriptor type that is set to close on exec.  This removes the need for
all of the manual process reference counting (and fork, exec, and exit
event handlers) as the normal file descriptor operations handle all of
that for us nicely.  It is also suggested as one possible implementation
in the spec and at least one other OS (OS X) uses this approach.

Some bugs that were fixed as a result include:
- References to a named semaphore whose name is removed still work after
  the sem_unlink() operation.  Prior to this patch, if a semaphore's name
  was removed, valid handles from sem_open() would get EINVAL errors from
  sem_getvalue(), sem_post(), etc.  This fixes that.
- Unnamed semaphores created with sem_init() were not cleaned up when a
  process exited or exec'd.  They were only cleaned up if the process
  did an explicit sem_destroy().  This could result in a leak of semaphore
  objects that could never be cleaned up.
- On the other hand, if another process guessed the id (kernel pointer to
  'struct ksem' of an unnamed semaphore (created via sem_init)) and had
  write access to the semaphore based on UID/GID checks, then that other
  process could manipulate the semaphore via sem_destroy(), sem_post(),
  sem_wait(), etc.
- As part of the permission check (UID/GID), the umask of the proces
  creating the semaphore was not honored.  Thus if your umask denied group
  read/write access but the explicit mode in the sem_init() call allowed
  it, the semaphore would be readable/writable by other users in the
  same group, for example.  This includes access via the previous bug.
- If the module refused to unload because there were active semaphores,
  then it might have deregistered one or more of the semaphore system
  calls before it noticed that there was a problem.  I'm not sure if
  this actually happened as the order that modules are discovered by the
  kernel linker depends on how the actual .ko file is linked.  One can
  make the order deterministic by using a single module with a mod_event
  handler that explicitly registers syscalls (and deregisters during
  unload after any checks).  This also fixes a race where even if the
  sem_module unloaded first it would have destroyed locks that the
  syscalls might be trying to access if they are still executing when
  they are unloaded.

  XXX: By the way, deregistering system calls doesn't do any blocking
  to drain any threads from the calls.
- Some minor fixes to errno values on error.  For example, sem_init()
  isn't documented to return ENFILE or EMFILE if we run out of semaphores
  the way that sem_open() can.  Instead, it should return ENOSPC in that
  case.

Other changes:
- Kernel semaphores now use a hash table to manage the namespace of
  named semaphores nearly in a similar fashion to the POSIX shared memory
  object file descriptors.  Kernel semaphores can now also have names
  longer than 14 chars (up to MAXPATHLEN) and can include subdirectories
  in their pathname.
- The UID/GID permission checks for access to a named semaphore are now
  done via vaccess() rather than a home-rolled set of checks.
- Now that kernel semaphores have an associated file object, the various
  MAC checks for POSIX semaphores accept both a file credential and an
  active credential.  There is also a new posixsem_check_stat() since it
  is possible to fstat() a semaphore file descriptor.
- A small set of regression tests (using the ksem API directly) is present
  in src/tools/regression/posixsem.

Reported by:	kris (1)
Tested by:	kris
Reviewed by:	rwatson (lightly)
MFC after:	1 month
@
text
@d1 1
a1 1
# $FreeBSD$
@


1.1.6.1
log
@SVN rev 225736 on 2011-09-23 00:51:37Z by kensmith

Copy head to stable/9 as part of 9.0-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.1.6.2
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242902
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242902 | dteske | 2012-11-11 23:29:45 +0000 (Sun, 11 Nov 2012) | 10 lines
## SVN ##
## SVN ## Fix a regression introduced by SVN r211417 that saw the breakage of a feature
## SVN ## documented in usr.sbin/sysinstall/help/shortcuts.hlp (reproduced below):
## SVN ##
## SVN ## If /usr/sbin/sysinstall is linked to another filename, say
## SVN ## `/usr/local/bin/configPackages', then the basename will be used
## SVN ## as an implicit command name.
## SVN ##
## SVN ## Reviewed by:	adrian (co-mentor)
## SVN ## Approved by:	adrian (co-mentor)
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d1 1
a1 1
# $FreeBSD: stable/9/tools/regression/posixsem/Makefile 180059 2008-06-27 05:39:04Z jhb $
@


1.1.6.1.4.1
log
@SVN rev 239080 on 2012-08-05 23:54:33Z by kensmith

Copy stable/9 to releng/9.1 as part of the 9.1-RELEASE release process.

Approved by:	re (implicit)
@
text
@@


1.1.6.1.4.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/9.1/tools/regression/posixsem/Makefile 180059 2008-06-27 05:39:04Z jhb $
@


1.1.6.1.2.1
log
@SVN rev 227445 on 2011-11-11 04:20:22Z by kensmith

Copy stable/9 to releng/9.0 as part of the FreeBSD 9.0-RELEASE release
cycle.

Approved by:	re (implicit)
@
text
@@


1.1.6.1.2.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/9.0/tools/regression/posixsem/Makefile 180059 2008-06-27 05:39:04Z jhb $
@


1.1.4.1
log
@SVN rev 196045 on 2009-08-03 08:13:06Z by kensmith

Copy head to stable/8 as part of 8.0 Release cycle.

Approved by:	re (Implicit)
@
text
@@


1.1.4.2
log
@## SVN ##
## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/ 242909
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ## r242909 | dim | 2012-11-12 07:47:19 +0000 (Mon, 12 Nov 2012) | 20 lines
## SVN ##
## SVN ## MFC r242625:
## SVN ##
## SVN ## Remove duplicate const specifiers in many drivers (I hope I got all of
## SVN ## them, please let me know if not).  Most of these are of the form:
## SVN ##
## SVN ## static const struct bzzt_type {
## SVN ##       [...list of members...]
## SVN ## } const bzzt_devs[] = {
## SVN ##       [...list of initializers...]
## SVN ## };
## SVN ##
## SVN ## The second const is unnecessary, as arrays cannot be modified anyway,
## SVN ## and if the elements are const, the whole thing is const automatically
## SVN ## (e.g. it is placed in .rodata).
## SVN ##
## SVN ## I have verified this does not change the binary output of a full kernel
## SVN ## build (except for build timestamps embedded in the object files).
## SVN ##
## SVN ## Reviewed by:	yongari, marius
## SVN ##
## SVN ## ------------------------------------------------------------------------
## SVN ##
@
text
@d1 1
a1 1
# $FreeBSD: stable/8/tools/regression/posixsem/Makefile 180059 2008-06-27 05:39:04Z jhb $
@


1.1.4.1.8.1
log
@SVN rev 232438 on 2012-03-03 06:15:13Z by kensmith

Copy stable/8 to releng/8.3 as part of 8.3-RELEASE release cycle.

Approved by:	re (implicit)
@
text
@@


1.1.4.1.8.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/8.3/tools/regression/posixsem/Makefile 180059 2008-06-27 05:39:04Z jhb $
@


1.1.4.1.6.1
log
@SVN rev 216617 on 2010-12-21 17:09:25Z by kensmith

Copy stable/8 to releng/8.2 in preparation for FreeBSD-8.2 release.

Approved by:	re (implicit)
@
text
@@


1.1.4.1.4.1
log
@SVN rev 209145 on 2010-06-14 02:09:06Z by kensmith

Copy stable/8 to releng/8.1 in preparation for 8.1-RC1.

Approved by:	re (implicit)
@
text
@@


1.1.4.1.2.1
log
@SVN rev 198460 on 2009-10-25 01:10:29Z by kensmith

Copy stable/8 to releng/8.0 as part of 8.0-RELEASE release procedure.

Approved by:	re (implicit)
@
text
@@


1.1.2.1
log
@SVN rev 188727 on 2009-02-17 19:57:52Z by jhb

MFC: Rework the lifetime management of the kernel implementation of POSIX
semaphores.  Specifically, semaphores are now represented as new file
descriptor type that is set to close on exec.  This removes the need for
all of the manual process reference counting (and fork, exec, and exit
event handlers) as the normal file descriptor operations handle all of
that for us nicely.  It is also suggested as one possible implementation
in the spec and at least one other OS (OS X) uses this approach.

Refer to the original commit for more details on specific bug fixes, etc.
A notable difference in this MFC relative to the original commit to HEAD
is that the MAC entry points are unchanged to preserve the ABI for MAC
policy modules.  fstat() on a POSIX semaphore in 7 uses the
mac_check_posix_sem_getvalue() hook to determine access as that is the
closest match to stat() of the available hooks.

Discussed with:	 rwatson (MAC bits (or lack thereof))
@
text
@@


1.1.2.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: stable/7/tools/regression/posixsem/Makefile 180059 2008-06-27 05:39:04Z jhb $
@


1.1.2.1.6.1
log
@SVN rev 216618 on 2010-12-21 17:10:29Z by kensmith

Copy stable/7 to releng/7.4 in preparation for FreeBSD-7.4 release.

Approved by:	re (implicit)
@
text
@@


1.1.2.1.6.2
log
@Switch importer
@
text
@d1 1
a1 1
# $FreeBSD: releng/7.4/tools/regression/posixsem/Makefile 180059 2008-06-27 05:39:04Z jhb $
@


1.1.2.1.4.1
log
@SVN rev 203736 on 2010-02-10 00:26:20Z by kensmith

Copy stable/7 to releng/7.3 as part of the 7.3-RELEASE process.

Approved by:	re (implicit)
@
text
@@


1.1.2.1.2.1
log
@SVN rev 191087 on 2009-04-15 03:14:26Z by kensmith

Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.

Approved by:	re (implicit)
@
text
@@


