diff options
author | David S. Miller <davem@davemloft.net> | 2018-10-13 00:38:46 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-10-13 00:38:46 -0400 |
commit | d864991b220b7c62e81d21209e1fd978fd67352c (patch) | |
tree | b570a1ad6fc1b959c5bcda6ceca0b321319c01e0 /net/tipc/socket.c | |
parent | a688c53a0277d8ea21d86a5c56884892e3442c5e (diff) | |
parent | bab5c80b211035739997ebd361a679fa85b39465 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts were easy to resolve using immediate context mostly,
except the cls_u32.c one where I simply too the entire HEAD
chunk.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/socket.c')
-rw-r--r-- | net/tipc/socket.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/net/tipc/socket.c b/net/tipc/socket.c index db148c4a916a..de09f514428c 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c | |||
@@ -1198,6 +1198,7 @@ void tipc_sk_mcast_rcv(struct net *net, struct sk_buff_head *arrvq, | |||
1198 | * @skb: pointer to message buffer. | 1198 | * @skb: pointer to message buffer. |
1199 | */ | 1199 | */ |
1200 | static void tipc_sk_conn_proto_rcv(struct tipc_sock *tsk, struct sk_buff *skb, | 1200 | static void tipc_sk_conn_proto_rcv(struct tipc_sock *tsk, struct sk_buff *skb, |
1201 | struct sk_buff_head *inputq, | ||
1201 | struct sk_buff_head *xmitq) | 1202 | struct sk_buff_head *xmitq) |
1202 | { | 1203 | { |
1203 | struct tipc_msg *hdr = buf_msg(skb); | 1204 | struct tipc_msg *hdr = buf_msg(skb); |
@@ -1215,7 +1216,16 @@ static void tipc_sk_conn_proto_rcv(struct tipc_sock *tsk, struct sk_buff *skb, | |||
1215 | tipc_node_remove_conn(sock_net(sk), tsk_peer_node(tsk), | 1216 | tipc_node_remove_conn(sock_net(sk), tsk_peer_node(tsk), |
1216 | tsk_peer_port(tsk)); | 1217 | tsk_peer_port(tsk)); |
1217 | sk->sk_state_change(sk); | 1218 | sk->sk_state_change(sk); |
1218 | goto exit; | 1219 | |
1220 | /* State change is ignored if socket already awake, | ||
1221 | * - convert msg to abort msg and add to inqueue | ||
1222 | */ | ||
1223 | msg_set_user(hdr, TIPC_CRITICAL_IMPORTANCE); | ||
1224 | msg_set_type(hdr, TIPC_CONN_MSG); | ||
1225 | msg_set_size(hdr, BASIC_H_SIZE); | ||
1226 | msg_set_hdr_sz(hdr, BASIC_H_SIZE); | ||
1227 | __skb_queue_tail(inputq, skb); | ||
1228 | return; | ||
1219 | } | 1229 | } |
1220 | 1230 | ||
1221 | tsk->probe_unacked = false; | 1231 | tsk->probe_unacked = false; |
@@ -1943,7 +1953,7 @@ static void tipc_sk_proto_rcv(struct sock *sk, | |||
1943 | 1953 | ||
1944 | switch (msg_user(hdr)) { | 1954 | switch (msg_user(hdr)) { |
1945 | case CONN_MANAGER: | 1955 | case CONN_MANAGER: |
1946 | tipc_sk_conn_proto_rcv(tsk, skb, xmitq); | 1956 | tipc_sk_conn_proto_rcv(tsk, skb, inputq, xmitq); |
1947 | return; | 1957 | return; |
1948 | case SOCK_WAKEUP: | 1958 | case SOCK_WAKEUP: |
1949 | tipc_dest_del(&tsk->cong_links, msg_orignode(hdr), 0); | 1959 | tipc_dest_del(&tsk->cong_links, msg_orignode(hdr), 0); |