diff options
author | rodrigc <rodrigc@FreeBSD.org> | 2013-11-25 18:49:37 +0000 |
---|---|---|
committer | rodrigc <rodrigc@FreeBSD.org> | 2013-11-25 18:49:37 +0000 |
commit | 919a38db633a7eec6c5533f47ebeecc35bcac5ba (patch) | |
tree | 59a065f38fee65c49ef20d2271b0e3f65ee10a5f /include | |
parent | 80415152a8912ab195f433916f4ecb7cf03f834e (diff) | |
download | FreeBSD-src-919a38db633a7eec6c5533f47ebeecc35bcac5ba.zip FreeBSD-src-919a38db633a7eec6c5533f47ebeecc35bcac5ba.tar.gz |
Only initialize some mutexes for the default VNET.
In r208160, sctp_it_ctl was made a global variable, across all VNETs.
However, sctp_init() is called for every VNET that is created. This results
in the same global mutexes which are part of sctp_it_ctl being initialized. This can result
in crashes if many jails are created.
To reproduce the problem:
(1) Take a GENERIC kernel config, and add options for: VIMAGE, WITNESS,
INVARIANTS.
(2) Run this command in a loop:
jail -l -u root -c path=/ name=foo persist vnet && jexec foo ifconfig lo0 127.0.0.1/8 && jail -r foo
(see http://lists.freebsd.org/pipermail/freebsd-current/2010-November/021280.html )
Witness will warn about the same mutex being initialized.
Fix the problem by only initializing these mutexes in the default VNET.
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions