[PATCH v2 2/2] NFS: Use common error handling code in nfs_alloc_server()

Markus Elfring <[email protected]> Sun, 14 Jun 2026 10:43:42 +0200
Newsgroups org.kernel.vger.kernel-janitors,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs
Message-ID <[email protected]>
From: Markus Elfring <[email protected]>
Date: Sun, 14 Jun 2026 10:06:11 +0200

Use an additional label so that a bit of exception handling can be better
reused at the end of this function implementation.

This issue was detected by using the Coccinelle software.

Cc: [email protected]
Signed-off-by: Markus Elfring <[email protected]>
---
 fs/nfs/client.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index e15568e388f8..4dcb91ab3039 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -1063,10 +1063,8 @@ struct nfs_server *nfs_alloc_server(void)
 		return NULL;
 
 	server->s_sysfs_id = ida_alloc(&s_sysfs_ids, GFP_KERNEL);
-	if (server->s_sysfs_id < 0) {
-		kfree(server);
-		return NULL;
-	}
+	if (server->s_sysfs_id < 0)
+		goto free_server;
 
 	server->client = server->client_acl = ERR_PTR(-EINVAL);
 
@@ -1089,8 +1087,7 @@ struct nfs_server *nfs_alloc_server(void)
 	server->io_stats = nfs_alloc_iostats();
 	if (!server->io_stats) {
 		ida_free(&s_sysfs_ids, server->s_sysfs_id);
-		kfree(server);
-		return NULL;
+		goto free_server;
 	}
 
 	server->change_attr_type = NFS4_CHANGE_TYPE_IS_UNDEFINED;
@@ -1104,6 +1101,10 @@ struct nfs_server *nfs_alloc_server(void)
 	rpc_init_wait_queue(&server->uoc_rpcwaitq, "NFS UOC");
 
 	return server;
+
+free_server:
+	kfree(server);
+	return NULL;
 }
 EXPORT_SYMBOL_GPL(nfs_alloc_server);
 
-- 
2.54.0