aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Dionne <[email protected]>2022-11-30 17:55:51 +0000
committerLinus Torvalds <[email protected]>2022-11-30 10:02:37 -0800
commitef4d3ea40565a781c25847e9cb96c1bd9f462bc6 (patch)
treea1997480de0c6f5647cc2601f0756afd954b603e
parent04aa64375f48a5d430b5550d9271f8428883e550 (diff)
afs: Fix server->active leak in afs_put_server
The atomic_read was accidentally replaced with atomic_inc_return, which prevents the server from getting cleaned up and causes rmmod to hang with a warning: Can't purge s=00000001 Fixes: 2757a4dc1849 ("afs: Fix access after dec in put functions") Signed-off-by: Marc Dionne <[email protected]> Signed-off-by: David Howells <[email protected]> Link: https://lore.kernel.org/r/[email protected]/ Signed-off-by: Linus Torvalds <[email protected]>
-rw-r--r--fs/afs/server.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/afs/server.c b/fs/afs/server.c
index 4981baf97835..b5237206eac3 100644
--- a/fs/afs/server.c
+++ b/fs/afs/server.c
@@ -406,7 +406,7 @@ void afs_put_server(struct afs_net *net, struct afs_server *server,
if (!server)
return;
- a = atomic_inc_return(&server->active);
+ a = atomic_read(&server->active);
zero = __refcount_dec_and_test(&server->ref, &r);
trace_afs_server(debug_id, r - 1, a, reason);
if (unlikely(zero))