linux/net/rxrpc
David Howells 8496af50eb rxrpc: Use RCU to access a peer's service connection tree
Move to using RCU access to a peer's service connection tree when routing
an incoming packet.  This is done using a seqlock to trigger retrying of
the tree walk if a change happened.

Further, we no longer get a ref on the connection looked up in the
data_ready handler unless we queue the connection's work item - and then
only if the refcount > 0.


Note that I'm avoiding the use of a hash table for service connections
because each service connection is addressed by a 62-bit number
(constructed from epoch and connection ID >> 2) that would allow the client
to engage in bucket stuffing, given knowledge of the hash algorithm.
Peers, however, are hashed as the network address is less controllable by
the client.  The total number of peers will also be limited in a future
commit.

Signed-off-by: David Howells <dhowells@redhat.com>
2016-07-06 10:51:14 +01:00
..
af_rxrpc.c rxrpc: Add RCU destruction for connections and calls 2016-07-06 10:43:51 +01:00
ar-internal.h rxrpc: Use RCU to access a peer's service connection tree 2016-07-06 10:51:14 +01:00
call_accept.c rxrpc: Move peer lookup from call-accept to new-incoming-conn 2016-07-06 10:49:57 +01:00
call_event.c rxrpc: Access socket accept queue under right lock 2016-07-06 10:43:51 +01:00
call_object.c rxrpc: Prune the contents of the rxrpc_conn_proto struct 2016-07-06 10:51:14 +01:00
conn_client.c rxrpc: Use RCU to access a peer's service connection tree 2016-07-06 10:51:14 +01:00
conn_event.c rxrpc: Call channels should have separate call number spaces 2016-07-06 10:43:52 +01:00
conn_object.c rxrpc: Use RCU to access a peer's service connection tree 2016-07-06 10:51:14 +01:00
conn_service.c rxrpc: Use RCU to access a peer's service connection tree 2016-07-06 10:51:14 +01:00
input.c rxrpc: Use RCU to access a peer's service connection tree 2016-07-06 10:51:14 +01:00
insecure.c rxrpc: Avoid using stack memory in SG lists in rxkad 2016-07-06 10:43:05 +01:00
Kconfig rxrpc: Absorb the rxkad security module 2016-04-11 15:34:41 -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: Rework local endpoint management 2016-06-15 15:38:17 +01:00
local_object.c rxrpc: Add RCU destruction for connections and calls 2016-07-06 10:43:51 +01:00
Makefile rxrpc: Split service connection code out into its own file 2016-07-06 10:49:35 +01:00
misc.c rxrpc: Limit the listening backlog 2016-06-10 18:14:47 -07:00
output.c rxrpc: Kill off the rxrpc_transport struct 2016-06-22 14:00:23 +01:00
peer_event.c rxrpc: Use the peer record to distribute network errors 2016-06-15 10:15:16 +01:00
peer_object.c rxrpc: Use RCU to access a peer's service connection tree 2016-07-06 10:51:14 +01:00
proc.c rxrpc: Call channels should have separate call number spaces 2016-07-06 10:43:52 +01:00
recvmsg.c rxrpc: Replace conn->trans->{local,peer} with conn->params.{local,peer} 2016-06-22 09:10:00 +01:00
rxkad.c rxrpc: Call channels should have separate call number spaces 2016-07-06 10:43:52 +01:00
security.c rxrpc: Replace conn->trans->{local,peer} with conn->params.{local,peer} 2016-06-22 09:10:00 +01:00
skbuff.c rxrpc: Rename files matching ar-*.c to git rid of the "ar-" prefix 2016-06-13 12:16:05 +01:00
sysctl.c rxrpc: Kill off the rxrpc_transport struct 2016-06-22 14:00:23 +01:00
utils.c rxrpc: Move data_ready peer lookup into rxrpc_find_connection() 2016-07-06 10:51:14 +01:00