[PATCH v2 0/4] Missing endianness conversions in user mode

Mathis Marion posted 4 patches 1 year, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230220085822.626798-1-Mathis.Marion@silabs.com
Maintainers: Laurent Vivier <laurent@vivier.eu>
There is a newer version of this series
linux-user/fd-trans.c | 74 ++++++++++++++++++++++++++++++++++++++++---
linux-user/fd-trans.h |  1 +
linux-user/syscall.c  | 14 ++++++--
3 files changed, 83 insertions(+), 6 deletions(-)
[PATCH v2 0/4] Missing endianness conversions in user mode
Posted by Mathis Marion 1 year, 2 months ago
From: Mathis Marion <mathis.marion@silabs.com>

For a bit of context, I was trying to test a network border router [1]
daemon using the MIPS architecture (see [2]). I didn't have access to
real MIPS hardware so I figured I would emulate it using QEMU user mode.
I ran into a couple of problems all related to endianness conversion for
syscalls between host and target as MIPS is big endian and my x86 host
is little.

[1]: https://github.com/SiliconLabs/wisun-br-linux
[2]: https://github.com/SiliconLabs/wisun-br-linux/issues/5

v2:
- remove context from target_to_host_for_each_nlattr()

Mathis Marion (4):
  linux-user: fix timerfd read endianness conversion
  linux-user: fix sockaddr_in6 endianness
  linux-user: add target to host netlink conversions
  linux-user: handle netlink flag NLA_F_NESTED

 linux-user/fd-trans.c | 74 ++++++++++++++++++++++++++++++++++++++++---
 linux-user/fd-trans.h |  1 +
 linux-user/syscall.c  | 14 ++++++--
 3 files changed, 83 insertions(+), 6 deletions(-)

-- 
2.39.1

Re: [PATCH v2 0/4] Missing endianness conversions in user mode
Posted by Michael Tokarev 1 year ago
20.02.2023 11:58, Mathis Marion пишет:
> From: Mathis Marion <mathis.marion@silabs.com>
> 
> For a bit of context, I was trying to test a network border router [1]
> daemon using the MIPS architecture (see [2]). I didn't have access to
> real MIPS hardware so I figured I would emulate it using QEMU user mode.
> I ran into a couple of problems all related to endianness conversion for
> syscalls between host and target as MIPS is big endian and my x86 host
> is little.
> 
> [1]: https://github.com/SiliconLabs/wisun-br-linux
> [2]: https://github.com/SiliconLabs/wisun-br-linux/issues/5
> 
> v2:
> - remove context from target_to_host_for_each_nlattr()
> 
> Mathis Marion (4):
>    linux-user: fix timerfd read endianness conversion
>    linux-user: fix sockaddr_in6 endianness
>    linux-user: add target to host netlink conversions
>    linux-user: handle netlink flag NLA_F_NESTED

It looks like timefd and netlink conversions are good candidates
for -stable too. I've seen reports of these not working under
qemu linux-user emulation..

Thanks,

/mjt