blob: 810c74fabd3817076cbb4dc95a618399988cdfd3 [file] [log] [blame]
Andrew Geissler87f5cff2022-09-30 13:13:31 -05001CVE: CVE-2022-1050
2Upstream-Status: Submitted [https://lore.kernel.org/qemu-devel/20220403095234.2210-1-yuval.shaia.ml@gmail.com/]
3Signed-off-by: Ross Burton <ross.burton@arm.com>
4
5From dbdef95c272e8f3ec037c3db4197c66002e30995 Mon Sep 17 00:00:00 2001
Andrew Geisslerd5838332022-05-27 11:33:10 -05006From: Yuval Shaia <yuval.shaia.ml@gmail.com>
Andrew Geissler87f5cff2022-09-30 13:13:31 -05007Date: Sun, 3 Apr 2022 12:52:34 +0300
8Subject: [PATCH] hw/pvrdma: Protect against buggy or malicious guest driver
Andrew Geisslerd5838332022-05-27 11:33:10 -05009
10Guest driver might execute HW commands when shared buffers are not yet
11allocated.
Andrew Geissler87f5cff2022-09-30 13:13:31 -050012This could happen on purpose (malicious guest) or because of some other
13guest/host address mapping error.
Andrew Geisslerd5838332022-05-27 11:33:10 -050014We need to protect againts such case.
15
Andrew Geissler87f5cff2022-09-30 13:13:31 -050016Fixes: CVE-2022-1050
17
18Reported-by: Raven <wxhusst@gmail.com>
Andrew Geisslerd5838332022-05-27 11:33:10 -050019Signed-off-by: Yuval Shaia <yuval.shaia.ml@gmail.com>
Andrew Geisslerd5838332022-05-27 11:33:10 -050020---
Andrew Geissler87f5cff2022-09-30 13:13:31 -050021 hw/rdma/vmw/pvrdma_cmd.c | 6 ++++++
22 1 file changed, 6 insertions(+)
Andrew Geisslerd5838332022-05-27 11:33:10 -050023
24diff --git a/hw/rdma/vmw/pvrdma_cmd.c b/hw/rdma/vmw/pvrdma_cmd.c
Andrew Geissler87f5cff2022-09-30 13:13:31 -050025index da7ddfa548..89db963c46 100644
Andrew Geisslerd5838332022-05-27 11:33:10 -050026--- a/hw/rdma/vmw/pvrdma_cmd.c
27+++ b/hw/rdma/vmw/pvrdma_cmd.c
28@@ -796,6 +796,12 @@ int pvrdma_exec_cmd(PVRDMADev *dev)
29
30 dsr_info = &dev->dsr_info;
31
32+ if (!dsr_info->dsr) {
33+ /* Buggy or malicious guest driver */
34+ rdma_error_report("Exec command without dsr, req or rsp buffers");
35+ goto out;
36+ }
37+
38 if (dsr_info->req->hdr.cmd >= sizeof(cmd_handlers) /
39 sizeof(struct cmd_handler)) {
40 rdma_error_report("Unsupported command");
Andrew Geisslerd5838332022-05-27 11:33:10 -050041--
Andrew Geissler87f5cff2022-09-30 13:13:31 -0500422.34.1
Andrew Geisslerd5838332022-05-27 11:33:10 -050043