opnsense-src/sys
Andrey V. Elsukov 8f1beb889e Fix deadlock in IPv6 PCB code.
When several threads are trying to send datagram to the same destination,
but fragmentation is disabled and datagram size exceeds link MTU,
ip6_output() calls pfctlinput2(PRC_MSGSIZE). It does notify all
sockets wanted to know MTU to this destination. And since all threads
hold PCB lock while sending, taking the lock for each PCB in the
in6_pcbnotify() leads to deadlock.

RFC 3542 p.11.3 suggests notify all application wanted to receive
IPV6_PATHMTU ancillary data for each ICMPv6 packet too big message.
But it doesn't require this, when we don't receive ICMPv6 message.

Change ip6_notify_pmtu() function to be able use it directly from
ip6_output() to notify only one socket, and to notify all sockets
when ICMPv6 packet too big message received.

PR:		197059
Differential Revision:	https://reviews.freebsd.org/D1949
Reviewed by:	no objection from #network
Obtained from:	Yandex LLC
MFC after:	1 week
Sponsored by:	Yandex LLC
2015-03-04 11:20:01 +00:00
..
amd64 Fix warnings/errors when building vmm.ko with gcc: 2015-03-02 20:13:49 +00:00
arm Add a "module" to build the dtb files for all supported imx6 systems. 2015-03-02 22:12:56 +00:00
boot o Add more room for EFI boot blocks 2015-03-02 18:08:39 +00:00
bsm IFp4 @1192291: 2014-04-07 20:44:00 +00:00
cam Make periphdriver_register() take XPT lock when modifying the periph_drivers 2015-03-02 22:48:11 +00:00
cddl Fix the dtrace ARM atomic compare-and-set functions. These functions are 2015-03-01 10:04:14 +00:00
compat Run make sysent. 2015-01-23 21:08:24 +00:00
conf Record the dependency to x86bios in vga_pci 2015-03-01 20:54:29 +00:00
contrib Merge ACPICA 20141107 and 20150204. 2015-02-18 20:33:00 +00:00
crypto Add some new modes to OpenCrypto. These modes are AES-ICM (can be used 2014-12-12 19:56:36 +00:00
ddb ddb: ANSI-fy function declarations. 2014-10-12 18:01:52 +00:00
dev Update ThunderX SATA quirk 2015-03-04 02:17:36 +00:00
fs Fix white spaces. 2015-03-02 19:14:58 +00:00
gdb Add support for gdb's memory searching capabilities to our in-kernel gdb 2014-09-05 16:40:47 +00:00
geom Replace constant with proper sizeof(). 2015-02-25 10:18:11 +00:00
gnu Merge latest (commit c8c1b3a77934768c7f7a4a9c10140c8bec529059) files 2015-02-28 00:06:04 +00:00
i386 Implement interface to create SR-IOV Virtual Functions 2015-03-01 00:40:09 +00:00
isa Remove vestiges of knowing the ISA bus, which we gave up on around 20 2014-03-19 21:03:04 +00:00
kern Move libnv into the kernel and hook it into the kernel build 2015-03-01 00:34:27 +00:00
kgssapi Avoid dynamic syscall overhead for statically compiled modules. 2014-10-26 19:42:44 +00:00
libkern Implement asprintf in libkern 2015-03-01 00:22:16 +00:00
mips Add ethernet MAC DDR flush hookups for QCA955x. 2015-03-04 03:52:50 +00:00
modules Allow USB modules to be built in parallel. 2015-03-04 09:17:03 +00:00
net Fix group membership of cloned interfaces when one is moved by 2015-03-02 20:00:03 +00:00
net80211 Fix kern/196290 - don't announce 11n HTINFO rates if the channel is 2015-02-27 04:45:47 +00:00
netgraph Revise default limit for maximum of netgraph data items. 2015-02-12 22:20:34 +00:00
netinet Implement Enhanced DAD algorithm for IPv6 described in 2015-03-02 17:30:26 +00:00
netinet6 Fix deadlock in IPv6 PCB code. 2015-03-04 11:20:01 +00:00
netipsec Fix possible memory leak and several races in the IPsec policy management 2015-02-24 10:35:07 +00:00
netnatm
netpfil Even more fixes to !INET and !INET6 kernels. 2015-02-17 22:33:22 +00:00
netsmb Remove redundant unlock. 2014-04-17 12:22:08 +00:00
nfs Avoid closing unallocated socket in case socreate fails. 2015-02-28 20:30:29 +00:00
nfsclient Remove the old NFS client and server from head, 2014-12-23 00:47:46 +00:00
nfsserver Use M_SIZE() instead of hand-crafted (and mostly correct) NFSMSIZ() macro 2015-01-07 17:22:56 +00:00
nlm Avoid dynamic syscall overhead for statically compiled modules. 2014-10-26 19:42:44 +00:00
ofed Define PTR_ALIGN() macro which will be needed coming Mellanox driver 2015-03-04 09:58:39 +00:00
opencrypto Add some new modes to OpenCrypto. These modes are AES-ICM (can be used 2014-12-12 19:56:36 +00:00
pc98 Factor out duplicated code from dumpsys() on each architecture into generic 2015-01-07 01:01:39 +00:00
powerpc Missed local diff. 2015-03-01 21:47:38 +00:00
rpc rpc: Uninitialized pointer read 2015-02-02 16:07:07 +00:00
security Adjust printf format specifiers for dev_t and ino_t in kernel. 2014-12-17 07:27:19 +00:00
sparc64 Unbreak sparc64 after r276630 by calling __sparc_sigtramp_setup signal 2015-02-16 22:13:03 +00:00
sys give others fair warning that _SPARE2 isn't just cxgb, but used by large 2015-03-02 20:05:16 +00:00
teken mdoc: improvements to SEE ALSO. 2014-12-27 07:07:37 +00:00
tools Allow the make_dtb script to work outside of a "make buildkernel" context 2014-08-30 22:39:15 +00:00
ufs Partially revert r277922, avoid sleeping and do flush if we a awaken, 2015-02-05 13:00:27 +00:00
vm Use RW_NEW rather than calling bzero(). 2015-03-01 05:18:02 +00:00
x86 Free up the IPI slot used by IPI_STOP_HARD. 2015-03-01 02:31:27 +00:00
xdr
xen Pacify clang 3.3 by ending the file with a newline. This is common 2015-01-06 21:26:35 +00:00
Makefile Remove "pci" from CSCOPEDIRS. 2014-09-23 06:32:19 +00:00