mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 17:24:17 +08:00
RxRPC development fixes
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEqG5UsNXhtOCrfGQP+7dXa6fLC2sFAl9fipcACgkQ+7dXa6fL C2sNIhAAjnqKckjbLtzy2ZhO3nyEMlABYtGcDi8a1x3H42Ncsqca5GiKjjY54n90 rLe2iyX/5ncURjrkVVUJFTlkhQrha40dOp/DYHHbwj4ko9P625QrsPn0h5zo/Ben UUeOVqibyAOoqXWCqhRgLF1BhPmg/22TtHiqbcRul+nss9vcjuFcjOEIhNVZDUfu VPjeitxF9Tuz9FEH00UJs23LWONBCvNWDtCjAj/hf328Mk+TptSiFPTNVEuPrbje 1IbBy3PjBzeL2CFtp0OQs3uibAz+7C9IY4i53tdBPQNE5uW1FE/Wm7ixK3Oseq8X hkAP3phNG669tZzE+49g0X1AfqHJr9F0dGbdIqOYC4seyC6NXROuvnzX3HdV7gYd MwCyIcjWxw2B6dhjk2sDncFjr7Tima6KRvWHsf8cEk645gbMEltvNxJi1KCK/sj/ wpiiQrPZZ82e+RfIfQ5l5cuMEROceZ1LpUKRK5rc4Gc49xuFbanoOYh4iBChmABb ULKVRHb/HFRIY9Y8boxw+0iDzDYQugoH6IsEEBdH87UBonEfPaJpcRTljcFU4LVh ppNeOXFu0p+CQwDaLDhTILDVoFDjMfVAjOC42TMfiTLEarWz5cpRPu96tOerpSgk Ulmh6m2cGNYDOIuCdVyRJFf5F9+Mj3VIBygven4GuWUqkZ18ooc= =0qvR -----END PGP SIGNATURE----- Merge tag 'rxrpc-next-20200914' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs David Howells says: ==================== rxrpc: Fixes for the connection manager rewrite Here are some fixes for the connection manager rewrite: (1) Fix a goto to the wrong place in error handling. (2) Fix a missing NULL pointer check. (3) The stored allocation error needs to be stored signed. (4) Fix a leak of connection bundle when clearing connections due to net namespace exit. (5) Fix an overget of the bundle when setting up a new client conn. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
e0d9ae699e
@ -579,7 +579,7 @@ TRACE_EVENT(rxrpc_client,
|
||||
__entry->channel = channel;
|
||||
__entry->usage = conn ? atomic_read(&conn->usage) : -2;
|
||||
__entry->op = op;
|
||||
__entry->cid = conn->proto.cid;
|
||||
__entry->cid = conn ? conn->proto.cid : 0;
|
||||
),
|
||||
|
||||
TP_printk("C=%08x h=%2d %s i=%08x u=%d",
|
||||
|
@ -395,7 +395,7 @@ struct rxrpc_bundle {
|
||||
unsigned int debug_id;
|
||||
bool try_upgrade; /* True if the bundle is attempting upgrade */
|
||||
bool alloc_conn; /* True if someone's getting a conn */
|
||||
unsigned short alloc_error; /* Error from last conn allocation */
|
||||
short alloc_error; /* Error from last conn allocation */
|
||||
spinlock_t channel_lock;
|
||||
struct rb_node local_node; /* Node in local->client_conns */
|
||||
struct list_head waiting_calls; /* Calls waiting for channels */
|
||||
|
@ -433,7 +433,6 @@ static void rxrpc_add_conn_to_bundle(struct rxrpc_bundle *bundle, gfp_t gfp)
|
||||
if (!rxrpc_may_reuse_conn(old)) {
|
||||
if (old)
|
||||
trace_rxrpc_client(old, -1, rxrpc_client_replace);
|
||||
candidate->bundle = rxrpc_get_bundle(bundle);
|
||||
candidate->bundle_shift = shift;
|
||||
bundle->conns[i] = candidate;
|
||||
for (j = 0; j < RXRPC_MAXCALLS; j++)
|
||||
@ -724,8 +723,9 @@ granted_channel:
|
||||
/* Paired with the write barrier in rxrpc_activate_one_channel(). */
|
||||
smp_rmb();
|
||||
|
||||
out:
|
||||
out_put_bundle:
|
||||
rxrpc_put_bundle(bundle);
|
||||
out:
|
||||
_leave(" = %d", ret);
|
||||
return ret;
|
||||
|
||||
@ -742,7 +742,7 @@ wait_failed:
|
||||
trace_rxrpc_client(call->conn, ret, rxrpc_client_chan_wait_failed);
|
||||
rxrpc_set_call_completion(call, RXRPC_CALL_LOCAL_ERROR, 0, ret);
|
||||
rxrpc_disconnect_client_call(bundle, call);
|
||||
goto out;
|
||||
goto out_put_bundle;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1111,6 +1111,7 @@ void rxrpc_clean_up_local_conns(struct rxrpc_local *local)
|
||||
conn = list_entry(graveyard.next,
|
||||
struct rxrpc_connection, cache_link);
|
||||
list_del_init(&conn->cache_link);
|
||||
rxrpc_unbundle_conn(conn);
|
||||
rxrpc_put_connection(conn);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user