From: Trond Myklebust Date: Thu, 24 May 2012 20:31:39 +0000 (-0400) Subject: NFSv4.1: Exchange ID must use GFP_NOFS allocation mode X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=bbafffd293e47f4cd5f0ae8b91d7d5767b242a5e;p=GitHub%2Fexynos8895%2Fandroid_kernel_samsung_universal8895.git NFSv4.1: Exchange ID must use GFP_NOFS allocation mode Exchange ID can be called in a lease reclaim situation, so it will deadlock if it then tries to write out dirty NFS pages. Signed-off-by: Trond Myklebust --- diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index e8988c000e7f..f8817e81096e 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -5192,20 +5192,20 @@ int nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred) clp->cl_rpcclient->cl_auth->au_flavor); res.server_owner = kzalloc(sizeof(struct nfs41_server_owner), - GFP_KERNEL); + GFP_NOFS); if (unlikely(res.server_owner == NULL)) { status = -ENOMEM; goto out; } res.server_scope = kzalloc(sizeof(struct nfs41_server_scope), - GFP_KERNEL); + GFP_NOFS); if (unlikely(res.server_scope == NULL)) { status = -ENOMEM; goto out_server_owner; } - res.impl_id = kzalloc(sizeof(struct nfs41_impl_id), GFP_KERNEL); + res.impl_id = kzalloc(sizeof(struct nfs41_impl_id), GFP_NOFS); if (unlikely(res.impl_id == NULL)) { status = -ENOMEM; goto out_server_scope;