summaryrefslogtreecommitdiffstats
path: root/net/tipc/node.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-06-22 01:23:35 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-06-22 01:23:35 -0400
commitc356dc4b540edd6c02b409dd8cf3208ba2804c38 (patch)
tree457d971da033bfb11c85aaee260d9811937fa2c4 /net/tipc/node.c
parent121bddf39a8e39baf0df9ef1d688392c179935cd (diff)
parentb6653b3629e5b88202be3c9abc44713973f5c4b4 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) Fix leak of unqueued fragments in ipv6 nf_defrag, from Guillaume Nault. 2) Don't access the DDM interface unless the transceiver implements it in bnx2x, from Mauro S. M. Rodrigues. 3) Don't double fetch 'len' from userspace in sock_getsockopt(), from JingYi Hou. 4) Sign extension overflow in lio_core, from Colin Ian King. 5) Various netem bug fixes wrt. corrupted packets from Jakub Kicinski. 6) Fix epollout hang in hvsock, from Sunil Muthuswamy. 7) Fix regression in default fib6_type, from David Ahern. 8) Handle memory limits in tcp_fragment more appropriately, from Eric Dumazet. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (24 commits) tcp: refine memory limit test in tcp_fragment() inet: clear num_timeout reqsk_alloc() net: mvpp2: debugfs: Add pmap to fs dump ipv6: Default fib6_type to RTN_UNICAST when not set net: hns3: Fix inconsistent indenting net/af_iucv: always register net_device notifier net/af_iucv: build proper skbs for HiperTransport net/af_iucv: remove GFP_DMA restriction for HiperTransport net: dsa: mv88e6xxx: fix shift of FID bits in mv88e6185_g1_vtu_loadpurge() hvsock: fix epollout hang from race condition net/udp_gso: Allow TX timestamp with UDP GSO net: netem: fix use after free and double free with packet corruption net: netem: fix backlog accounting for corrupted GSO frames net: lio_core: fix potential sign-extension overflow on large shift tipc: pass tunnel dev as NULL to udp_tunnel(6)_xmit_skb ip6_tunnel: allow not to count pkts on tstats by passing dev as NULL ip_tunnel: allow not to count pkts on tstats by setting skb's dev to NULL tun: wake up waitqueues after IFF_UP is set net: remove duplicate fetch in sock_getsockopt tipc: fix issues with early FAILOVER_MSG from peer ...
Diffstat (limited to 'net/tipc/node.c')
-rw-r--r--net/tipc/node.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/net/tipc/node.c b/net/tipc/node.c
index 9e106d3ed187..550581d47d51 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -766,9 +766,9 @@ static void tipc_node_link_up(struct tipc_node *n, int bearer_id,
766 * disturbance, wrong session, etc.) 766 * disturbance, wrong session, etc.)
767 * 3. Link <1B-2B> up 767 * 3. Link <1B-2B> up
768 * 4. Link endpoint 2A down (e.g. due to link tolerance timeout) 768 * 4. Link endpoint 2A down (e.g. due to link tolerance timeout)
769 * 5. Node B starts failover onto link <1B-2B> 769 * 5. Node 2 starts failover onto link <1B-2B>
770 * 770 *
771 * ==> Node A does never start link/node failover! 771 * ==> Node 1 does never start link/node failover!
772 * 772 *
773 * @n: tipc node structure 773 * @n: tipc node structure
774 * @l: link peer endpoint failingover (- can be NULL) 774 * @l: link peer endpoint failingover (- can be NULL)
@@ -783,6 +783,10 @@ static void tipc_node_link_failover(struct tipc_node *n, struct tipc_link *l,
783 if (!tipc_link_is_up(tnl)) 783 if (!tipc_link_is_up(tnl))
784 return; 784 return;
785 785
786 /* Don't rush, failure link may be in the process of resetting */
787 if (l && !tipc_link_is_reset(l))
788 return;
789
786 tipc_link_fsm_evt(tnl, LINK_SYNCH_END_EVT); 790 tipc_link_fsm_evt(tnl, LINK_SYNCH_END_EVT);
787 tipc_node_fsm_evt(n, NODE_SYNCH_END_EVT); 791 tipc_node_fsm_evt(n, NODE_SYNCH_END_EVT);
788 792
@@ -1706,7 +1710,7 @@ static bool tipc_node_check_state(struct tipc_node *n, struct sk_buff *skb,
1706 /* Initiate or update failover mode if applicable */ 1710 /* Initiate or update failover mode if applicable */
1707 if ((usr == TUNNEL_PROTOCOL) && (mtyp == FAILOVER_MSG)) { 1711 if ((usr == TUNNEL_PROTOCOL) && (mtyp == FAILOVER_MSG)) {
1708 syncpt = oseqno + exp_pkts - 1; 1712 syncpt = oseqno + exp_pkts - 1;
1709 if (pl && tipc_link_is_up(pl)) { 1713 if (pl && !tipc_link_is_reset(pl)) {
1710 __tipc_node_link_down(n, &pb_id, xmitq, &maddr); 1714 __tipc_node_link_down(n, &pb_id, xmitq, &maddr);
1711 trace_tipc_node_link_down(n, true, 1715 trace_tipc_node_link_down(n, true,
1712 "node link down <- failover!"); 1716 "node link down <- failover!");