Skip to content

Commit

Permalink
rxrpc: Fix unexposed client conn release
Browse files Browse the repository at this point in the history
If the last call on a client connection is release after the connection has
had a bunch of calls allocated but before any DATA packets are sent (so
that it's not yet marked RXRPC_CONN_EXPOSED), an assertion will happen in
rxrpc_disconnect_client_call().

	af_rxrpc: Assertion failed - 1(0x1) >= 2(0x2) is false
	------------[ cut here ]------------
	kernel BUG at ../net/rxrpc/conn_client.c:753!

This is because it's expecting the conn to have been exposed and to have 2
or more refs - but this isn't necessarily the case.

Simply remove the assertion.  This allows the conn to be moved into the
inactive state and deleted if it isn't resurrected before the final put is
called.

Signed-off-by: David Howells <[email protected]>
  • Loading branch information
dhowells committed Sep 17, 2016
1 parent 357f5ef commit 7888379
Showing 1 changed file with 0 additions and 1 deletion.
1 change: 0 additions & 1 deletion net/rxrpc/conn_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -721,7 +721,6 @@ void rxrpc_disconnect_client_call(struct rxrpc_call *call)
}

ASSERTCMP(rcu_access_pointer(chan->call), ==, call);
ASSERTCMP(atomic_read(&conn->usage), >=, 2);

/* If a client call was exposed to the world, we save the result for
* retransmission.
Expand Down

0 comments on commit 7888379

Please sign in to comment.