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: 2757a4dc18 ("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>
This commit is contained in:
Zhen Ni 2025-09-23 15:51:04 +08:00 committed by Christian Brauner
parent 66d938e89e
commit 9158c6bb24
No known key found for this signature in database
GPG Key ID: 91C61BC06578DCA2
1 changed files with 2 additions and 1 deletions

View File

@ -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, void afs_put_server(struct afs_net *net, struct afs_server *server,
enum afs_server_trace reason) enum afs_server_trace reason)
{ {
unsigned int a, debug_id = server->debug_id; unsigned int a, debug_id;
bool zero; bool zero;
int r; int r;
if (!server) if (!server)
return; return;
debug_id = server->debug_id;
a = atomic_read(&server->active); a = atomic_read(&server->active);
zero = __refcount_dec_and_test(&server->ref, &r); zero = __refcount_dec_and_test(&server->ref, &r);
trace_afs_server(debug_id, r - 1, a, reason); trace_afs_server(debug_id, r - 1, a, reason);