I'm not sure exactly what happened here, but it looks like this patch is 
already in stable/linux-3.3.y as commit 
abe9a6d57b4544ac208401f9c0a4262814db2be4.

Thanks,
-dros

On Mar 23, 2012, at 1:49 PM, <[email protected]>
 <[email protected]> wrote:

> 
> The patch below does not apply to the 3.3-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <[email protected]>.
> 
> thanks,
> 
> greg k-h
> 
> ------------------ original commit in Linus's tree ------------------
> 
>> From 9edbd953f8aeabf49b89c7c29ff9e31560775b27 Mon Sep 17 00:00:00 2001
> From: Weston Andros Adamson <[email protected]>
> Date: Fri, 17 Feb 2012 15:20:25 -0500
> Subject: [PATCH] NFSv4: fix server_scope memory leak
> 
> server_scope would never be freed if nfs4_check_cl_exchange_flags() returned
> non-zero
> 
> Signed-off-by: Weston Andros Adamson <[email protected]>
> Cc: [email protected]
> Signed-off-by: Trond Myklebust <[email protected]>
> 
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index 87c584d..20c3bb0 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -4945,8 +4945,10 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, 
> struct rpc_cred *cred)
>                               clp->cl_rpcclient->cl_auth->au_flavor);
> 
>       res.server_scope = kzalloc(sizeof(struct server_scope), GFP_KERNEL);
> -     if (unlikely(!res.server_scope))
> -             return -ENOMEM;
> +     if (unlikely(!res.server_scope)) {
> +             status = -ENOMEM;
> +             goto out;
> +     }
> 
>       status = rpc_call_sync(clp->cl_rpcclient, &msg, RPC_TASK_TIMEOUT);
>       if (!status)
> @@ -4963,12 +4965,13 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, 
> struct rpc_cred *cred)
>                       clp->server_scope = NULL;
>               }
> 
> -             if (!clp->server_scope)
> +             if (!clp->server_scope) {
>                       clp->server_scope = res.server_scope;
> -             else
> -                     kfree(res.server_scope);
> +                     goto out;
> +             }
>       }
> -
> +     kfree(res.server_scope);
> +out:
>       dprintk("<-- %s status= %d\n", __func__, status);
>       return status;
> }
> 

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to