FreeBSD src
Go to file
Fabien Thomas edd0e0b098 The r241129 description was wrong that the scenario is possible
only for read locks on pcbs. The same race can happen with write
lock semantics as well.

The race scenario:

- Two threads (1 and 2) locate pcb with writer semantics (INPLOOKUP_WLOCKPCB)
 and do in_pcbref() on it.
- 1 and 2 both drop the inp hash lock.
- Another thread (3) grabs the inp hash lock. Then it runs in_pcbfree(),
 which wlocks the pcb. They must happen faster than 1 or 2 come INP_WLOCK()!
- 1 and 2 congest in INP_WLOCK().
- 3 does in_pcbremlists(), drops hash lock, and runs in_pcbrele_wlocked(),
 which doesn't free the pcb due to two references on it.
 Then it unlocks the pcb.
- 1 (or 2) gets wlock on the pcb, runs in_pcbrele_wlocked(), which doesn't
 report inp as freed, due to 2 (or 1) still helding extra reference on it.
 The thread tries to do smth with a disconnected pcb and crashes.

Submitted by:	emeric.poupon@stormshield.eu
Reviewed by:	gleb@
MFC after:	1 week
Sponsored by: Stormshield
Tested by: Cassiano Peixoto, Stormshield
2015-11-25 14:45:43 +00:00
bin sh: Remove global state from nodes.c. 2015-11-24 22:47:19 +00:00
cddl Fix zfs(8) set options 2015-11-19 12:03:11 +00:00
contrib Remove unneeded libutil dependency for sendmail. 2015-11-24 04:19:55 +00:00
crypto Revert inadvertent commit of an incorrect patch 2015-11-24 16:07:03 +00:00
etc Avoid FSCHG for INSTALL_AS_USER as well. 2015-11-16 20:18:38 +00:00
gnu Fix ld not respecting --sysroot. 2015-11-24 00:49:29 +00:00
include META MODE: Fix changing what "MACHINE=host" means when computing dirdeps for include/. 2015-11-18 21:39:58 +00:00
kerberos5 Partially revert r288266: Remove SUBDIR_PARALLEL from kerberos5/lib. 2015-10-13 18:52:56 +00:00
lib Link localeconv(3) to localeconv_l(3) 2015-11-25 09:12:30 +00:00
libexec Remove unneeded libutil dependency for sendmail. 2015-11-24 04:19:55 +00:00
release Remove noatime from tmpfs(5) fstab(5) entry. 2015-11-09 06:30:26 +00:00
rescue Make iscsictl and iscsid build if MK_ISCSI == yes 2015-10-17 21:11:42 +00:00
sbin newfs_msdos: rework error handling for eventual use in makefs 2015-11-23 18:58:00 +00:00
secure Retire the NONE cipher option. 2015-11-23 12:48:13 +00:00
share Add dependency to uether. 2015-11-24 08:34:48 +00:00
sys The r241129 description was wrong that the scenario is possible 2015-11-25 14:45:43 +00:00
targets Disconnect unused kgzldr from sys/boot/i386 2015-11-20 21:56:20 +00:00
tests Integrate contrib/netbsd-tests/kernel/t_mqueue into the FreeBSD test 2015-11-23 09:17:25 +00:00
tools Add simple indent wrapper tool for style(9) checking GIT/SVN patches. 2015-11-25 13:26:42 +00:00
usr.bin Fix udp entry of `netstat -TW'. 2015-11-25 11:20:54 +00:00
usr.sbin Remove unneeded libutil dependency for sendmail. 2015-11-24 04:19:55 +00:00
.arcconfig Add repository.callsign, to help arcanist figure out what repo it's 2015-07-02 22:23:52 +00:00
.arclint phabricator related changes: 2015-04-20 20:33:22 +00:00
COPYRIGHT Bump copyright year. 2014-12-31 10:00:43 +00:00
LOCKS Explicitly require Security Officer's approval for kernel PRNG bits. 2013-09-17 14:19:05 +00:00
MAINTAINERS Move recently added entry above the "old" line. 2015-11-17 19:03:55 +00:00
Makefile Rename META_MODE option to DIRDEPS_BUILD 2015-11-14 03:24:48 +00:00
Makefile.inc1 Remove unneeded libmd from bootstrap-tools (reverting r246784). 2015-11-18 21:37:46 +00:00
ObsoleteFiles.inc colldef(1) and mklocale(1) reappeared in r291115. 2015-11-23 23:36:57 +00:00
README README: changes and fixups 2015-04-19 07:16:44 +00:00
UPDATING Recommend only to remove the content of /usr/share/locale/ and not the directory 2015-11-18 16:52:19 +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.  See build(7)
and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
for more information, including setting make(1) variables.

The `buildkernel` and `installkernel` targets build and install
the kernel and the modules (see below).  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 is a somewhat more involved process.  See build(7), config(8),
and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html
for more information.

Note: If you want to build and install the kernel with the
`buildkernel` and `installkernel` targets, you might need to build
world before.  More information is available in the handbook.

The kernel configuration files reside in the sys/<arch>/conf
sub-directory.  GENERIC is the default configuration used in release builds.
NOTES contains entries and documentation for all possible
devices, not just those commonly used.


Source Roadmap:
---------------

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography 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.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

sys		Kernel sources.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

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/doc/en_US.ISO8859-1/books/handbook/synching.html