9p/trans_virtio: discard zero-length reply
"Linux Kernel Mailing List" <[email protected]> Fri, 16 Feb 2018 17:08:31 +0000 (UTC)
| Newsgroups | gmane.linux.kernel.commits.head |
|---|---|
| Message-ID | <[email protected]> |
Web: https://git.kernel.org/torvalds/c/26d99834f89e76514076d9cd06f61e56e6a509b8 Commit: 26d99834f89e76514076d9cd06f61e56e6a509b8 Parent: d25cc43c6775bff6b8e3dad97c747954b805e421 Refname: refs/heads/master Author: Greg Kurz <[email protected]> AuthorDate: Mon Jan 22 22:02:05 2018 +0100 Committer: Michael S. Tsirkin <[email protected]> CommitDate: Fri Feb 9 20:08:19 2018 +0200 9p/trans_virtio: discard zero-length reply When a 9p request is successfully flushed, the server is expected to just mark it as used without sending a 9p reply (ie, without writing data into the buffer). In this case, virtqueue_get_buf() will return len == 0 and we must not report a REQ_STATUS_RCVD status to the client, otherwise the client will erroneously assume the request has not been flushed. Cc: [email protected] Signed-off-by: Greg Kurz <[email protected]> Signed-off-by: Michael S. Tsirkin <[email protected]> --- net/9p/trans_virtio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/9p/trans_virtio.c b/net/9p/trans_virtio.c index f3a4efcf1456..3aa5a93ad107 100644 --- a/net/9p/trans_virtio.c +++ b/net/9p/trans_virtio.c @@ -160,7 +160,8 @@ static void req_done(struct virtqueue *vq) spin_unlock_irqrestore(&chan->lock, flags); /* Wakeup if anyone waiting for VirtIO ring space. */ wake_up(chan->vc_wq); - p9_client_cb(chan->client, req, REQ_STATUS_RCVD); + if (len) + p9_client_cb(chan->client, req, REQ_STATUS_RCVD); } } -- To unsubscribe from this list: send the line "unsubscribe git-commits-head" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html