Skip to content
Snippets Groups Projects
Commit ae64d846 authored by Trond Myklebust's avatar Trond Myklebust Committed by Laibin Qiu
Browse files

NFSv4: Don't hold the layoutget locks across multiple RPC calls

stable inclusion
from stable-4.19.247
commit 6b3fc1496e7227cd6a39a80bbfb7588ef7c7a010
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I5FNPY


CVE: NA

--------------------------------

[ Upstream commit 6949493884fe88500de4af182588e071cf1544ee ]

When doing layoutget as part of the open() compound, we have to be
careful to release the layout locks before we can call any further RPC
calls, such as setattr(). The reason is that those calls could trigger
a recall, which could deadlock.

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
Signed-off-by: default avatarYongqiang Liu <liuyongqiang13@huawei.com>
Signed-off-by: default avatarLaibin Qiu <qiulaibin@huawei.com>
parent dbed45ae
No related branches found
No related tags found
No related merge requests found
......@@ -2964,6 +2964,10 @@ static int _nfs4_open_and_get_state(struct nfs4_opendata *opendata,
}
out:
if (opendata->lgp) {
nfs4_lgopen_release(opendata->lgp);
opendata->lgp = NULL;
}
if (!opendata->cancelled)
nfs4_sequence_free_slot(&opendata->o_res.seq_res);
return ret;
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment