diff options
Diffstat (limited to 'net/rxrpc/conn_object.c')
| -rw-r--r-- | net/rxrpc/conn_object.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/net/rxrpc/conn_object.c b/net/rxrpc/conn_object.c index 19e141eeed17..8cbe0bf20ed5 100644 --- a/net/rxrpc/conn_object.c +++ b/net/rxrpc/conn_object.c @@ -212,9 +212,11 @@ void rxrpc_disconnect_call(struct rxrpc_call *call)  	call->peer->cong_cwnd = call->cong_cwnd; -	spin_lock_bh(&conn->params.peer->lock); -	hlist_del_rcu(&call->error_link); -	spin_unlock_bh(&conn->params.peer->lock); +	if (!hlist_unhashed(&call->error_link)) { +		spin_lock_bh(&call->peer->lock); +		hlist_del_rcu(&call->error_link); +		spin_unlock_bh(&call->peer->lock); +	}  	if (rxrpc_is_client_call(call))  		return rxrpc_disconnect_client_call(call);  | 
