Hi Laurent, On 02/15/2018 12:17 PM, Laurent Vivier wrote: > Le 24/01/2018 à 14:01, Philippe Mathieu-Daudé a écrit : >> Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> >> --- >> please double check __pad and ntohl() >> >> linux-user/syscall_defs.h | 7 +++++++ >> linux-user/strace.c | 34 ++++++++++++++++++++++++++++++++++ >> 2 files changed, 41 insertions(+) >> >> diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h >> index bec3680b94..550e7d2939 100644 >> --- a/linux-user/syscall_defs.h >> +++ b/linux-user/syscall_defs.h >> @@ -151,6 +151,13 @@ struct target_sockaddr_un { >> uint8_t sun_path[108]; >> }; >> >> +struct target_sockaddr_nl { >> + uint16_t nl_family; /* AF_NETLINK */ >> + int16_t __pad; > > netlink.h uses an unsigned type here.
This is padding, do you prefer char pad[2]? > >> + uint32_t nl_pid; >> + uint32_t nl_groups; >> +}; >> + >> struct target_in_addr { >> uint32_t s_addr; /* big endian */ >> }; >> diff --git a/linux-user/strace.c b/linux-user/strace.c >> index bd897a3f20..7eb5e2ab48 100644 >> --- a/linux-user/strace.c >> +++ b/linux-user/strace.c >> @@ -8,6 +8,7 @@ >> #include <arpa/inet.h> >> #include <netinet/tcp.h> >> #include <linux/if_packet.h> >> +#include <linux/netlink.h> >> #include <sched.h> >> #include "qemu.h" >> >> @@ -397,6 +398,12 @@ print_sockaddr(abi_ulong addr, abi_long addrlen) >> gemu_log("}"); >> break; >> } >> + case AF_NETLINK: { >> + struct target_sockaddr_nl *nl = (struct target_sockaddr_nl *)sa; >> + gemu_log("{nl_family=AF_NETLINK,nl_pid=%u,nl_groups=%u}", >> + ntohl(nl->nl_pid), ntohl(nl->nl_groups)); > > Both sides of the netlink pipe are local and have the same endianness, > so I don't think we need the ntohl() here. Moreover, I didn't find any > endianness change in the kernel for them. I had the same feeling but didn't check the kernel :\ since I was unsure I used ntohl(), I'll remove it and respin. Thanks to verify! Regards, Phil. > > Thanks, > Laurent >