提交 2135e5d5 编写于 作者: T Trond Myklebust

NFSv4/pnfs: Fix a use-after-free bug in open

If someone cancels the open RPC call, then we must not try to free
either the open slot or the layoutget operation arguments, since they
are likely still in use by the hung RPC call.

Fixes: 69494938 ("NFSv4: Don't hold the layoutget locks across multiple RPC calls")
Signed-off-by: NTrond Myklebust <trond.myklebust@hammerspace.com>
上级 b1a28f2e
......@@ -3096,12 +3096,13 @@ 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)
if (!opendata->cancelled) {
if (opendata->lgp) {
nfs4_lgopen_release(opendata->lgp);
opendata->lgp = NULL;
}
nfs4_sequence_free_slot(&opendata->o_res.seq_res);
}
return ret;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册