On 9/7/21 1:13 PM, Philippe Mathieu-Daudé wrote: > Target errno should be converted to host errno in IP_RECVERR > and IPV6_RECVERR socket options.
I meant "Host errno must be converted to target errno ..." > Fixes: ee1ac3a1822 ("linux-user: Add sockopts for IPv6") > Resolves: https://gitlab.com/qemu-project/qemu/-/issues/602 > Reported-by: Conrad Meyer <c...@freebsd.org> > Signed-off-by: Philippe Mathieu-Daudé <f4...@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); >