[PATCH 49/62] rxrpc: Remove IDR preloading

Matthew Wilcox
2017-11-22T21:12:54Z

The IDR now handles its own locking, so if we remove the locking in
rxrpc, we can also remove the memory preloading.

Signed-off-by: Matthew Wilcox <mawilcox@microsoft.com>
---
net/rxrpc/conn_client.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)

diff --git a/net/rxrpc/conn_client.c b/net/rxrpc/conn_client.c
index 7e8bf10fec86..d61fbd359bfa 100644
--- a/net/rxrpc/conn_client.c
+++ b/net/rxrpc/conn_client.c
@@ -91,7 +91,6 @@ __read_mostly unsigned int rxrpc_conn_idle_client_fast_expiry = 2 * HZ;
/*
* We use machine-unique IDs for our client connections.
*/
-static DEFINE_SPINLOCK(rxrpc_conn_id_lock);
int rxrpc_client_conn_cursor;
DEFINE_IDR(rxrpc_client_conn_ids);

@@ -111,12 +110,8 @@ static int rxrpc_get_client_connection_id(struct rxrpc_connection *conn,

_enter("");

- idr_preload(gfp);
- spin_lock(&rxrpc_conn_id_lock);
id = idr_alloc_cyclic(&rxrpc_client_conn_ids, &rxrpc_client_conn_cursor,
- conn, 1, 0x40000000, GFP_NOWAIT);
- spin_unlock(&rxrpc_conn_id_lock);
- idr_preload_end();
+ conn, 1, 0x40000000, gfp);
if (id < 0)
goto error;

@@ -137,10 +132,8 @@ static int rxrpc_get_client_connection_id(struct rxrpc_connection *conn,
static void rxrpc_put_client_connection_id(struct rxrpc_connection *conn)
{
if (test_bit(RXRPC_CONN_HAS_IDR, &conn->flags)) {
- spin_lock(&rxrpc_conn_id_lock);
idr_remove(&rxrpc_client_conn_ids,
conn->proto.cid >> RXRPC_CIDSHIFT);
- spin_unlock(&rxrpc_conn_id_lock);
}
}

--
2.15.0