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

Christophe JAILLET <[email protected]>
Newsgroups gmane.linux.kernel,gmane.linux.kernel.janitors,gmane.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);
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.