qemu/linux-user
Ilya Leoshkevich 9c1da8b5ee linux-user: Fix unaligned memory access in prlimit64 syscall
target_rlimit64 contains uint64_t fields, so it's 8-byte aligned on
some hosts, while some guests may align their respective type on a
4-byte boundary. This may lead to an unaligned access, which is an UB.

Fix by defining the fields as abi_ullong. This makes the host alignment
match that of the guest, and lets the compiler know that it should emit
code that can deal with the guest alignment.

While at it, also use __get_user() and __put_user() instead of
tswap64().

Fixes: 163a05a839 ("linux-user: Implement prlimit64 syscall")
Reported-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20230224003907.263914-2-iii@linux.ibm.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
2023-03-10 20:42:00 +01:00
..
aarch64 linux-user: move target_flat.h to target subdirs 2023-02-03 22:55:12 +01:00
alpha linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
arm target/arm: Convert CPUARMState::eabi to boolean 2023-02-16 16:00:47 +00:00
cris linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
generic linux-user: Fix unaligned memory access in prlimit64 syscall 2023-03-10 20:42:00 +01:00
hexagon linux-user/hexagon: fix signal context save & restore 2023-01-05 09:19:02 -08:00
hppa linux-user/hppa: Detect glibc ABORT_INSTRUCTION and EXCP_BREAK handler 2022-11-02 17:14:02 +01:00
i386 linux-user: Add guest memory layout to exception dump 2022-10-25 09:20:40 +02:00
include linux-user: Implment host/ppc/host-signal.h 2023-01-23 14:39:48 -10:00
loongarch64 linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
m68k linux-user: move target_flat.h to target subdirs 2023-02-03 22:55:12 +01:00
microblaze linux-user/microblaze: Handle privileged exception 2023-02-21 08:44:13 -10:00
mips linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
mips64 linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
nios2 linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
openrisc linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
ppc linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
riscv linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
s390x linux-user/s390x: Save/restore fpc when handling a signal 2022-09-27 13:19:05 +02:00
sh4 linux-user: move target_flat.h to target subdirs 2023-02-03 22:55:12 +01:00
sparc linux-user/sparc: Raise SIGILL for all unhandled software traps 2023-02-21 08:44:13 -10:00
x86_64 linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
xtensa linux-user: Provide MADV_* definitions 2022-09-27 09:30:09 +02:00
cpu_loop-common.h linux-user: Add guest memory layout to exception dump 2022-10-25 09:20:40 +02:00
elfload.c accel/tcg: Add debuginfo support 2023-01-16 10:14:12 -10:00
errnos.c.inc linux-user: Simplify host <-> target errno conversion using macros 2021-07-12 21:53:35 +02:00
exit.c tcg: add perfmap and jitdump 2023-01-16 10:14:12 -10:00
fd-trans.c linux-user: add target to host netlink conversions 2023-03-10 20:42:00 +01:00
fd-trans.h linux-user: fix timerfd read endianness conversion 2023-03-10 20:42:00 +01:00
flat.h linux-user/: fix some comment spelling errors 2020-09-17 20:39:22 +02:00
flatload.c linux-user/flatload.c: Fix setting of image_info::end_code 2022-07-28 19:17:24 +02:00
ioctls.h linux-user: remove conditionals for many fs.h ioctls 2022-10-21 17:46:19 +02:00
linux_loop.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
linuxload.c linux-user: Clean up arg_start/arg_end confusion 2022-05-23 08:15:19 +02:00
loader.h linux-user: Split loader-related prototypes into loader.h 2021-09-13 20:35:44 +02:00
main.c linux-user: Fix access to /proc/self/exe 2023-03-10 20:41:30 +01:00
meson.build accel/tcg: Add debuginfo support 2023-01-16 10:14:12 -10:00
mmap.c linux-user: Add emulation for MADV_WIPEONFORK and MADV_KEEPONFORK in madvise() 2023-02-03 22:55:12 +01:00
qemu.h linux-user: Honor PT_GNU_STACK 2022-09-06 08:04:25 +01:00
semihost.c semihosting: Remove qemu_semihosting_console_outs 2022-06-28 04:41:20 +05:30
signal-common.h linux-user: Add missing signals in strace output 2022-09-27 09:29:33 +02:00
signal.c linux-user: Clean up when exiting due to a signal 2023-01-16 10:14:12 -10:00
socket.h Supply missing header guards 2019-06-12 13:20:21 +02:00
strace.c linux-user: Show 4th argument of rt_sigprocmask() in strace 2023-02-03 22:55:12 +01:00
strace.h linux-user: Have do_syscall() use CPUArchState* instead of void* 2022-05-23 22:47:19 +02:00
strace.list linux-user: Enhance strace output for various syscalls 2023-02-03 22:55:12 +01:00
syscall.c linux-user: Fix unaligned memory access in prlimit64 syscall 2023-03-10 20:42:00 +01:00
syscall_defs.h linux-user: Fix struct statfs ABI on loongarch64 2022-10-17 10:28:35 +08:00
syscall_types.h linux-user: implement more loop ioctls 2021-11-29 14:54:17 +01:00
thunk.c linux-user: Move thunk.c from top-level 2021-12-20 10:12:29 -08:00
trace-events linux-user: Rename user_force_sig tracepoint to match function name 2022-01-18 12:41:42 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
uaccess.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00
uname.c linux-user: Remove pointless CPU{ARCH}State casts 2022-05-23 22:47:20 +02:00
uname.h linux-user: Have do_syscall() use CPUArchState* instead of void* 2022-05-23 22:47:19 +02:00
user-internals.h target/arm: Convert CPUARMState::eabi to boolean 2023-02-16 16:00:47 +00:00
user-mmap.h linux-user: Add partial support for MADV_DONTNEED 2022-06-24 10:00:00 +02:00
vm86.c linux-user: Split linux-user internals out of qemu.h 2021-09-13 20:35:45 +02:00