diff options
author | David Howells <dhowells@redhat.com> | 2019-10-07 11:58:29 +0200 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2019-10-07 12:05:05 +0200 |
commit | 48c9e0ec7cbbb7370448f859ccc8e3b7eb69e755 (patch) | |
tree | 6cc456254863837669a21dd40b25a11a735b56e1 /net/rxrpc/call_accept.c | |
parent | rxrpc: Fix trace-after-put looking at the put connection record (diff) | |
download | linux-48c9e0ec7cbbb7370448f859ccc8e3b7eb69e755.tar.xz linux-48c9e0ec7cbbb7370448f859ccc8e3b7eb69e755.zip |
rxrpc: Fix trace-after-put looking at the put call record
rxrpc_put_call() calls trace_rxrpc_call() after it has done the decrement
of the refcount - which looks at the debug_id in the call record. But
unless the refcount was reduced to zero, we no longer have the right to
look in the record and, indeed, it may be deleted by some other thread.
Fix this by getting the debug_id out before decrementing the refcount and
then passing that into the tracepoint.
Fixes: e34d4234b0b7 ("rxrpc: Trace rxrpc_call usage")
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'net/rxrpc/call_accept.c')
-rw-r--r-- | net/rxrpc/call_accept.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/rxrpc/call_accept.c b/net/rxrpc/call_accept.c index c1b1b7dd2924..1f778102ed8d 100644 --- a/net/rxrpc/call_accept.c +++ b/net/rxrpc/call_accept.c @@ -97,7 +97,7 @@ static int rxrpc_service_prealloc_one(struct rxrpc_sock *rx, call->flags |= (1 << RXRPC_CALL_IS_SERVICE); call->state = RXRPC_CALL_SERVER_PREALLOC; - trace_rxrpc_call(call, rxrpc_call_new_service, + trace_rxrpc_call(call->debug_id, rxrpc_call_new_service, atomic_read(&call->usage), here, (const void *)user_call_ID); |