mirror of
https://github.com/torvalds/linux
synced 2024-09-20 11:07:02 +00:00
rxrpc: Trace received connection aborts
Trace received calls that are aborted due to a connection abort, typically because of authentication failure. Without this, connection aborts don't show up in the trace log. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
f7f1dd3162
commit
39ce675575
|
@ -153,7 +153,8 @@ static void rxrpc_conn_retransmit_call(struct rxrpc_connection *conn,
|
||||||
* pass a connection-level abort onto all calls on that connection
|
* pass a connection-level abort onto all calls on that connection
|
||||||
*/
|
*/
|
||||||
static void rxrpc_abort_calls(struct rxrpc_connection *conn,
|
static void rxrpc_abort_calls(struct rxrpc_connection *conn,
|
||||||
enum rxrpc_call_completion compl)
|
enum rxrpc_call_completion compl,
|
||||||
|
rxrpc_serial_t serial)
|
||||||
{
|
{
|
||||||
struct rxrpc_call *call;
|
struct rxrpc_call *call;
|
||||||
int i;
|
int i;
|
||||||
|
@ -173,6 +174,9 @@ static void rxrpc_abort_calls(struct rxrpc_connection *conn,
|
||||||
call->call_id, 0,
|
call->call_id, 0,
|
||||||
conn->abort_code,
|
conn->abort_code,
|
||||||
conn->error);
|
conn->error);
|
||||||
|
else
|
||||||
|
trace_rxrpc_rx_abort(call, serial,
|
||||||
|
conn->abort_code);
|
||||||
if (rxrpc_set_call_completion(call, compl,
|
if (rxrpc_set_call_completion(call, compl,
|
||||||
conn->abort_code,
|
conn->abort_code,
|
||||||
conn->error))
|
conn->error))
|
||||||
|
@ -213,8 +217,6 @@ static int rxrpc_abort_connection(struct rxrpc_connection *conn,
|
||||||
conn->state = RXRPC_CONN_LOCALLY_ABORTED;
|
conn->state = RXRPC_CONN_LOCALLY_ABORTED;
|
||||||
spin_unlock_bh(&conn->state_lock);
|
spin_unlock_bh(&conn->state_lock);
|
||||||
|
|
||||||
rxrpc_abort_calls(conn, RXRPC_CALL_LOCALLY_ABORTED);
|
|
||||||
|
|
||||||
msg.msg_name = &conn->params.peer->srx.transport;
|
msg.msg_name = &conn->params.peer->srx.transport;
|
||||||
msg.msg_namelen = conn->params.peer->srx.transport_len;
|
msg.msg_namelen = conn->params.peer->srx.transport_len;
|
||||||
msg.msg_control = NULL;
|
msg.msg_control = NULL;
|
||||||
|
@ -242,6 +244,7 @@ static int rxrpc_abort_connection(struct rxrpc_connection *conn,
|
||||||
len = iov[0].iov_len + iov[1].iov_len;
|
len = iov[0].iov_len + iov[1].iov_len;
|
||||||
|
|
||||||
serial = atomic_inc_return(&conn->serial);
|
serial = atomic_inc_return(&conn->serial);
|
||||||
|
rxrpc_abort_calls(conn, RXRPC_CALL_LOCALLY_ABORTED, serial);
|
||||||
whdr.serial = htonl(serial);
|
whdr.serial = htonl(serial);
|
||||||
_proto("Tx CONN ABORT %%%u { %d }", serial, conn->abort_code);
|
_proto("Tx CONN ABORT %%%u { %d }", serial, conn->abort_code);
|
||||||
|
|
||||||
|
@ -321,7 +324,7 @@ static int rxrpc_process_event(struct rxrpc_connection *conn,
|
||||||
conn->error = -ECONNABORTED;
|
conn->error = -ECONNABORTED;
|
||||||
conn->abort_code = abort_code;
|
conn->abort_code = abort_code;
|
||||||
conn->state = RXRPC_CONN_REMOTELY_ABORTED;
|
conn->state = RXRPC_CONN_REMOTELY_ABORTED;
|
||||||
rxrpc_abort_calls(conn, RXRPC_CALL_REMOTELY_ABORTED);
|
rxrpc_abort_calls(conn, RXRPC_CALL_REMOTELY_ABORTED, sp->hdr.serial);
|
||||||
return -ECONNABORTED;
|
return -ECONNABORTED;
|
||||||
|
|
||||||
case RXRPC_PACKET_TYPE_CHALLENGE:
|
case RXRPC_PACKET_TYPE_CHALLENGE:
|
||||||
|
|
Loading…
Reference in a new issue