diff options
author | David Howells <dhowells@redhat.com> | 2022-07-06 11:26:14 +0100 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2022-08-02 18:21:29 +0100 |
commit | 2757a4dc184997c66ef1de32636f73b9f21aac14 (patch) | |
tree | e5d3b2a1c35bc3d8126b6b6d4b0c32a19e3fdc6d /fs/afs/cmservice.c | |
parent | c56f9ec8b20f931014574b943590c4d830109380 (diff) | |
download | linux-2757a4dc184997c66ef1de32636f73b9f21aac14.tar.gz linux-2757a4dc184997c66ef1de32636f73b9f21aac14.tar.bz2 linux-2757a4dc184997c66ef1de32636f73b9f21aac14.zip |
afs: Fix access after dec in put functions
Reference-putting functions should not access the object being put after
decrementing the refcount unless they reduce the refcount to zero.
Fix a couple of instances of this in afs by copying the information to be
logged by tracepoint to local variables before doing the decrement.
[Fixed a bit in afs_put_server() that I'd missed but Marc caught]
Fixes: 341f741f04be ("afs: Refcount the afs_call struct")
Fixes: 452181936931 ("afs: Trace afs_server usage")
Fixes: 977e5f8ed0ab ("afs: Split the usage count on struct afs_server")
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Marc Dionne <marc.dionne@auristor.com>
cc: linux-afs@lists.infradead.org
Link: https://lore.kernel.org/r/165911278430.3745403.16526310736054780645.stgit@warthog.procyon.org.uk/ # v1
Diffstat (limited to 'fs/afs/cmservice.c')
-rw-r--r-- | fs/afs/cmservice.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/afs/cmservice.c b/fs/afs/cmservice.c index cedd627e1fae..0a090d614e76 100644 --- a/fs/afs/cmservice.c +++ b/fs/afs/cmservice.c @@ -212,7 +212,7 @@ static void SRXAFSCB_CallBack(struct work_struct *work) * to maintain cache coherency. */ if (call->server) { - trace_afs_server(call->server, + trace_afs_server(call->server->debug_id, refcount_read(&call->server->ref), atomic_read(&call->server->active), afs_server_trace_callback); |