qemu/linux-user-always-translate-cmsg-when-recvmsg.patch
yezengruan dec64939c6 Qemu update to version 6.2.0-59
- arm/virt: Fix vcpu hotplug idx_from_topo_ids
- Revert patches related to the vSVA
- sync some bugfix patches from upstream
- add generic vDPA device support

Signed-off-by: yezengruan <yezengruan@huawei.com>
(cherry picked from commit b99dbfd9847104300672fb4f559f1c2abba8aa33)
2022-12-06 09:18:10 +08:00

37 lines
1.5 KiB
Diff

From eb2a5f2f73e4cfaf20246fb3d3fb1b8bd5716606 Mon Sep 17 00:00:00 2001
From: jianchunfu <jianchunfu_yewu@cmss.chinamobile.com>
Date: Tue, 22 Nov 2022 17:10:35 +0800
Subject: [PATCH 03/29] linux-user: always translate cmsg when recvmsg
It's possible that a message contains both normal payload and ancillary
data in the same message, and even if no ancillary data is available
this information should be passed to the target, otherwise the target
cmsghdr will be left uninitialized and the target is going to access
uninitialized memory if it expects cmsg.
Always call the function that translate cmsg when recvmsg, because that
function should be empty-cmsg-safe(it creates an empty cmsg in the target).
Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
Signed-off-by: jianchunfu <jianchunfu_yewu@cmss.chinamobile.com>
---
linux-user/syscall.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index f1cfcc8104..fce2c03259 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -3296,7 +3296,8 @@ static abi_long do_sendrecvmsg_locked(int fd, struct target_msghdr *msgp,
if (fd_trans_host_to_target_data(fd)) {
ret = fd_trans_host_to_target_data(fd)(msg.msg_iov->iov_base,
MIN(msg.msg_iov->iov_len, len));
- } else {
+ }
+ if (!is_error(ret)) {
ret = host_to_target_cmsg(msgp, &msg);
}
if (!is_error(ret)) {
--
2.27.0