linux/net/rxrpc
David Howells 66d58af7f4 rxrpc: Fix the putting of client connections
In rxrpc_put_one_client_conn(), if a connection has RXRPC_CONN_COUNTED set
on it, then it's accounted for in rxrpc_nr_client_conns and may be on
various lists - and this is cleaned up correctly.

However, if the connection doesn't have RXRPC_CONN_COUNTED set on it, then
the put routine returns rather than just skipping the extra bit of cleanup.

Fix this by making the extra bit of clean up conditional instead and always
killing off the connection.

This manifests itself as connections with a zero usage count hanging around
in /proc/net/rxrpc_conns because the connection allocated, but discarded,
due to a race with another process that set up a parallel connection, which
was then shared instead.

Signed-off-by: David Howells <dhowells@redhat.com>
2016-09-17 10:53:20 +01:00
..
af_rxrpc.c rxrpc: Make IPv6 support conditional on CONFIG_IPV6 2016-09-17 03:58:45 -04:00
ar-internal.h rxrpc: Correctly initialise, limit and transmit call->rx_winsize 2016-09-13 22:38:45 +01:00
call_accept.c rxrpc: Record calls that need to be accepted 2016-09-17 10:51:54 +01:00
call_event.c rxrpc: Remove some whitespace. 2016-09-17 10:50:15 +01:00
call_object.c rxrpc: Purge the to_be_accepted queue on socket release 2016-09-17 10:51:54 +01:00
conn_client.c rxrpc: Fix the putting of client connections 2016-09-17 10:53:20 +01:00
conn_event.c rxrpc: Rewrite the data and ack handling code 2016-09-08 11:10:12 +01:00
conn_object.c rxrpc: Make IPv6 support conditional on CONFIG_IPV6 2016-09-17 03:58:45 -04:00
conn_service.c rxrpc: Rewrite the data and ack handling code 2016-09-08 11:10:12 +01:00
input.c rxrpc: Fix handling of the last packet in rxrpc_recvmsg_data() 2016-09-17 10:51:54 +01:00
insecure.c rxrpc: Rewrite the data and ack handling code 2016-09-08 11:10:12 +01:00
Kconfig rxrpc: Make IPv6 support conditional on CONFIG_IPV6 2016-09-17 03:58:45 -04:00
key.c rxrpc: Use structs to hold connection params and protocol info 2016-06-22 09:09:59 +01:00
local_event.c rxrpc: Use rxrpc_extract_addr_from_skb() rather than doing this manually 2016-09-13 23:09:13 +01:00
local_object.c rxrpc: Make IPv6 support conditional on CONFIG_IPV6 2016-09-17 03:58:45 -04:00
Makefile rxrpc: Split sendmsg from packet transmission code 2016-09-04 21:41:39 +01:00
misc.c rxrpc: Correctly initialise, limit and transmit call->rx_winsize 2016-09-13 22:38:45 +01:00
output.c rxrpc: Make IPv6 support conditional on CONFIG_IPV6 2016-09-17 03:58:45 -04:00
peer_event.c rxrpc: Make IPv6 support conditional on CONFIG_IPV6 2016-09-17 03:58:45 -04:00
peer_object.c rxrpc: Make IPv6 support conditional on CONFIG_IPV6 2016-09-17 03:58:45 -04:00
proc.c rxrpc: Add IPv6 support 2016-09-13 23:09:13 +01:00
recvmsg.c rxrpc: Fix handling of the last packet in rxrpc_recvmsg_data() 2016-09-17 10:51:54 +01:00
rxkad.c rxrpc: Rewrite the data and ack handling code 2016-09-08 11:10:12 +01:00
security.c rxrpc: Rewrite the data and ack handling code 2016-09-08 11:10:12 +01:00
sendmsg.c rxrpc: Rewrite the data and ack handling code 2016-09-08 11:10:12 +01:00
skbuff.c rxrpc: Rewrite the data and ack handling code 2016-09-08 11:10:12 +01:00
sysctl.c rxrpc: Correctly initialise, limit and transmit call->rx_winsize 2016-09-13 22:38:45 +01:00
utils.c rxrpc: Make IPv6 support conditional on CONFIG_IPV6 2016-09-17 03:58:45 -04:00