diff options
author | Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com> | 2018-10-10 18:50:23 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-10-11 08:56:07 +0300 |
commit | e7eb05823806502747eadc31039cecfd7836ddeb (patch) | |
tree | 7d60d5c73115548c7b18b955a6dcfbf8e2cc1f0b /drivers | |
parent | 047491ea334a454fa0647ec99dadcc6dd38417e0 (diff) | |
download | linux-e7eb05823806502747eadc31039cecfd7836ddeb.tar.xz |
tipc: queue socket protocol error messages into socket receive buffer
In tipc_sk_filter_rcv(), when we detect protocol messages with error we
call tipc_sk_conn_proto_rcv() and let it reset the connection and notify
the socket by calling sk->sk_state_change().
However, tipc_sk_filter_rcv() may have been called from the function
tipc_backlog_rcv(), in which case the socket lock is held and the socket
already awake. This means that the sk_state_change() call is ignored and
the error notification lost. Now the receive queue will remain empty and
the socket sleeps forever.
In this commit, we convert the protocol message into a connection abort
message and enqueue it into the socket's receive queue. By this addition
to the above state change we cover all conditions.
Acked-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions