ae 86de47baf2 MFC r279588:
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.

MFC r279684:
  tcp6_ctlinput() doesn't pass MTU value to in6_pcbnotify().
  Check cmdarg isn't NULL before dereference, this check was in the
  ip6_notify_pmtu() before r279588.

PR:		197059
Sponsored by:	Yandex LLC
2015-03-12 09:04:19 +00:00
..
2014-12-16 11:53:45 +00:00
2014-10-06 17:08:19 +00:00
2014-12-23 16:33:44 +00:00
2014-12-23 16:33:44 +00:00
2014-11-06 09:16:52 +00:00
2015-03-12 09:04:19 +00:00
2012-10-22 21:49:56 +00:00
2014-10-09 02:49:33 +00:00
2014-10-09 02:49:33 +00:00
2015-02-15 13:57:44 +00:00
2014-10-06 17:08:19 +00:00
2014-11-05 09:23:29 +00:00
2015-03-12 09:04:19 +00:00
2014-11-20 18:49:11 +00:00
2014-11-05 09:23:29 +00:00
2014-03-12 08:15:15 +00:00
2014-01-28 00:30:17 +00:00
2015-03-12 09:04:19 +00:00
2015-03-12 09:04:19 +00:00
2012-10-22 21:49:56 +00:00
2014-10-09 23:25:57 +00:00
2015-02-15 13:57:44 +00:00
2014-09-06 04:39:26 +00:00
2014-09-06 04:39:26 +00:00
2014-09-18 08:58:22 +00:00
2012-11-17 20:04:04 +00:00
2012-10-22 21:49:56 +00:00
2015-01-27 06:19:30 +00:00