Commit cf1a6d57 authored by Al Viro's avatar Al Viro Committed by Luis Henriques

9p: forgetting to cancel request on interrupted zero-copy RPC

commit a84b69cb upstream.

If we'd already sent a request and decide to abort it, we *must*
issue TFLUSH properly and not just blindly reuse the tag, or
we'll get seriously screwed when response eventually arrives
and we confuse it for response to later request that had reused
the same tag.
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarLuis Henriques <luis.henriques@canonical.com>
parent 2e01256a
...@@ -850,7 +850,8 @@ static struct p9_req_t *p9_client_zc_rpc(struct p9_client *c, int8_t type, ...@@ -850,7 +850,8 @@ static struct p9_req_t *p9_client_zc_rpc(struct p9_client *c, int8_t type,
if (err < 0) { if (err < 0) {
if (err == -EIO) if (err == -EIO)
c->status = Disconnected; c->status = Disconnected;
goto reterr; if (err != -ERESTARTSYS)
goto reterr;
} }
if (req->status == REQ_STATUS_ERROR) { if (req->status == REQ_STATUS_ERROR) {
p9_debug(P9_DEBUG_ERROR, "req_status error %d\n", req->t_err); p9_debug(P9_DEBUG_ERROR, "req_status error %d\n", req->t_err);
......
Markdown is supported
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