Re: [PATCH] NFS: Use common error handling code in nfs_alloc_server()

Christophe JAILLET <[email protected]> Sat, 13 Jun 2026 22:24:35 +0200
Newsgroups org.kernel.vger.kernel-janitors,org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs
Message-ID <[email protected]>
Le 10/06/2026 à 18:35, Markus Elfring a écrit :
> From: Markus Elfring <[email protected]>
> Date: Wed, 10 Jun 2026 18:28:17 +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.
> 
> Signed-off-by: Markus Elfring <[email protected]>
> ---
>   fs/nfs/client.c | 16 ++++++++--------
>   1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/fs/nfs/client.c b/fs/nfs/client.c
> index 73b95318ba48..50482257667d 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 an error occurs after a successful ida_alloc(), then ida_free() needs 
to be called in the error handling path.

CJ

> -	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);
>   
> @@ -1087,10 +1085,8 @@ struct nfs_server *nfs_alloc_server(void)
>   	atomic_long_set(&server->nr_active_delegations, 0);
>   
>   	server->io_stats = nfs_alloc_iostats();
> -	if (!server->io_stats) {
> -		kfree(server);
> -		return NULL;
> -	}
> +	if (!server->io_stats)
> +		goto free_server;
>   
>   	server->change_attr_type = NFS4_CHANGE_TYPE_IS_UNDEFINED;
>   
> @@ -1103,6 +1099,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);
>