FreeBSD src
Go to file
Alfred Perlstein c636255150 fix races in the uidinfo subsystem, several problems existed:
1) while allocating a uidinfo struct malloc is called with M_WAITOK,
   it's possible that while asleep another process by the same user
   could have woken up earlier and inserted an entry into the uid
   hash table.  Having redundant entries causes inconsistancies that
   we can't handle.

   fix: do a non-waiting malloc, and if that fails then do a blocking
   malloc, after waking up check that no one else has inserted an entry
   for us already.

2) Because many checks for sbsize were done as "test then set" in a non
   atomic manner it was possible to exceed the limits put up via races.

   fix: instead of querying the count then setting, we just attempt to
   set the count and leave it up to the function to return success or
   failure.

3) The uidinfo code was inlining and repeating, lookups and insertions
   and deletions needed to be in their own functions for clarity.

Reviewed by: green
2000-06-22 22:27:16 +00:00
bin Use %Ef 2000-06-22 16:57:39 +00:00
contrib Merge conflicts. Adds revs 1.2 and 1.3 (FreeBSD configuration support), 2000-06-20 08:28:23 +00:00
crypto Grrr. I hate CVS. These were supposed to be committed when I did the 2000-06-19 21:09:27 +00:00
etc Add ip_portrange_first and ip_portrange_last rc.conf/rc.network 2000-06-22 17:40:53 +00:00
games Remove garbage. 2000-06-02 12:49:57 +00:00
gnu /etc/weekly -> /etc/periodic/weekly/320.whatis 2000-06-20 10:41:01 +00:00
include Moving forward on my commitment to always make at least one commit from 2000-06-22 01:46:25 +00:00
kerberos5 Properly separate the K5-only buld from K4. 2000-03-23 14:56:47 +00:00
kerberosIV Remove the last vestiges of libRSAglue now that it's an empty stub. 2000-03-11 22:34:10 +00:00
lib - Make sure the message token returned by NgSendMsg() is non-negative 2000-06-21 23:01:07 +00:00
libexec Switch over to using the new fflagstostr and strtofflags library calls. 2000-06-17 14:19:33 +00:00
release update UP1000/Symbios SCSI info 2000-06-22 20:09:01 +00:00
sbin display version number of each kld module when using 2000-06-20 19:04:22 +00:00
secure Link explicitly against -lmd. I'm not sure what was pulling this in 2000-06-11 05:30:52 +00:00
share Use sub-sections (Ss) to categorize diagnostics and rationalize 2000-06-22 08:32:54 +00:00
sys fix races in the uidinfo subsystem, several problems existed: 2000-06-22 22:27:16 +00:00
tools Back out the previous change to the queue(3) interface. 2000-05-26 02:09:24 +00:00
usr.bin If the kevent() registration fails (probably due to the underlying 2000-06-22 18:46:03 +00:00
usr.sbin Correct PPPoE in multi-link mode 2000-06-22 20:51:03 +00:00
COPYRIGHT Update to add the July 22, 1999 addendum. 1999-09-05 21:33:47 +00:00
Makefile We have a new world order in libraries. 2000-02-24 23:03:16 +00:00
Makefile.inc1 Add -DNO_KERNELDEPEND and -DNO_KERNELCONFIG 2000-06-15 10:00:20 +00:00
Makefile.upgrade $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
README $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
UPDATING Fix typo in the config file update procedure URL and typo in preceding 2000-06-22 07:28:44 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on:
$FreeBSD$

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel and the contents of /etc.  Please see the top of the Makefile
in this directory for more information on the standard build targets
and compile-time flags.

Building a kernel with config(8) is a somewhat more involved process,
documentation for which can be found at:
   http://www.freebsd.org/handbook/kernelconfig.html
And in the config(8) man page.

The sample kernel configuration files reside in the sys/i386/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file LINT contains entries for all possible devices, not
just those commonly used, and is meant more as a general reference
than an actual kernel configuration file (a kernel built from it
wouldn't even run).


Source Roadmap:
---------------
bin		System/User commands.

contrib		Packages contributed by 3rd parties.

crypto		Export controlled stuff (see crypto/README).

etc		Template files for /etc

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberosIV	Kerberos package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

sbin		System commands.

secure		DES and DES-related utilities - NOT FOR EXPORT!

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/handbook/synching.html