summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhen Ni <zhen.ni@easystack.cn>2025-09-23 15:51:04 +0800
committerChristian Brauner <brauner@kernel.org>2025-09-25 09:18:17 +0200
commit9158c6bb245113d4966df9b2ba602197a379412e (patch)
tree42c3adc764cfd70f0b9e1b7efdaf59faf8d66c18
parent66d938e89e940e512f4c3deac938ecef399c13f9 (diff)
afs: Fix potential null pointer dereference in afs_put_server
afs_put_server() accessed server->debug_id before the NULL check, which could lead to a null pointer dereference. Move the debug_id assignment, ensuring we never dereference a NULL server pointer. Fixes: 2757a4dc1849 ("afs: Fix access after dec in put functions") Cc: stable@vger.kernel.org Signed-off-by: Zhen Ni <zhen.ni@easystack.cn> Acked-by: David Howells <dhowells@redhat.com> Reviewed-by: Jeffrey Altman <jaltman@auristor.com> Signed-off-by: Christian Brauner <brauner@kernel.org>
-rw-r--r--fs/afs/server.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/afs/server.c b/fs/afs/server.c
index a97562f831eb..c4428ebddb1d 100644
--- a/fs/afs/server.c
+++ b/fs/afs/server.c
@@ -331,13 +331,14 @@ struct afs_server *afs_use_server(struct afs_server *server, bool activate,
void afs_put_server(struct afs_net *net, struct afs_server *server,
enum afs_server_trace reason)
{
- unsigned int a, debug_id = server->debug_id;
+ unsigned int a, debug_id;
bool zero;
int r;
if (!server)
return;
+ debug_id = server->debug_id;
a = atomic_read(&server->active);
zero = __refcount_dec_and_test(&server->ref, &r);
trace_afs_server(debug_id, r - 1, a, reason);