qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] linux-user: Correct host errno for IP[V6]_RECVERR socket options


From: Philippe Mathieu-Daudé
Subject: [PATCH] linux-user: Correct host errno for IP[V6]_RECVERR socket options
Date: Tue, 7 Sep 2021 13:13:13 +0200

Target errno should be converted to host errno in IP_RECVERR
and IPV6_RECVERR socket options.

Fixes: ee1ac3a1822 ("linux-user: Add sockopts for IPv6")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/602
Reported-by: Conrad Meyer <cem@FreeBSD.org>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
 linux-user/syscall.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index ccd3892b2df..edc9d6b5ba2 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -1967,7 +1967,8 @@ static inline abi_long host_to_target_cmsg(struct 
target_msghdr *target_msgh,
                     tgt_len != sizeof(struct errhdr_t)) {
                     goto unimplemented;
                 }
-                __put_user(errh->ee.ee_errno, &target_errh->ee.ee_errno);
+                __put_user(get_errno(errh->ee.ee_errno),
+                           &target_errh->ee.ee_errno);
                 __put_user(errh->ee.ee_origin, &target_errh->ee.ee_origin);
                 __put_user(errh->ee.ee_type,  &target_errh->ee.ee_type);
                 __put_user(errh->ee.ee_code, &target_errh->ee.ee_code);
@@ -2011,7 +2012,8 @@ static inline abi_long host_to_target_cmsg(struct 
target_msghdr *target_msgh,
                     tgt_len != sizeof(struct errhdr6_t)) {
                     goto unimplemented;
                 }
-                __put_user(errh->ee.ee_errno, &target_errh->ee.ee_errno);
+                __put_user(get_errno(errh->ee.ee_errno),
+                           &target_errh->ee.ee_errno);
                 __put_user(errh->ee.ee_origin, &target_errh->ee.ee_origin);
                 __put_user(errh->ee.ee_type,  &target_errh->ee.ee_type);
                 __put_user(errh->ee.ee_code, &target_errh->ee.ee_code);
-- 
2.31.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]