[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 06/10] linux-user: Sanitize interp_info and, for mips
From: |
Laurent Vivier |
Subject: |
[Qemu-devel] [PULL 06/10] linux-user: Sanitize interp_info and, for mips only, init field fp_abi |
Date: |
Thu, 23 May 2019 16:43:32 +0200 |
From: Daniel Santos <address@hidden>
Sanitize interp_info structure in load_elf_binary() and, for MIPS only,
init its field fp_abi to MIPS_ABI_FP_UNKNOWN. This fixes appearances of
"Unexpected FPU mode" message in some MIPS use cases. Currently, this
bug is a complete stopper for some MIPS binaries.
In load_elf_binary(), struct image_info interp_info is used without
being properly initialized. One result is that when the ELF's program
header doesn't contain an entry for the ABI flags, then the value of
the struct image_info's fp_abi field is set to whatever happened to
be in stack memory at the time.
Backporting to 4.0 and, if possible, to 3.1 is recommended.
Fixes: https://bugs.launchpad.net/qemu/+bug/1825002
Signed-off-by: Daniel Santos <address@hidden>
Signed-off-by: Aleksandar Markovic <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Laurent Vivier <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Laurent Vivier <address@hidden>
---
linux-user/elfload.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index ef42e02d8233..02832adfbc0c 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -2706,6 +2706,11 @@ int load_elf_binary(struct linux_binprm *bprm, struct
image_info *info)
char *elf_interpreter = NULL;
char *scratch;
+ memset(&interp_info, 0, sizeof(interp_info));
+#ifdef TARGET_MIPS
+ interp_info.fp_abi = MIPS_ABI_FP_UNKNOWN;
+#endif
+
info->start_mmap = (abi_ulong)ELF_START_MMAP;
load_elf_image(bprm->filename, bprm->fd, info,
--
2.20.1
- [Qemu-devel] [PULL 00/10] Linux user for 4.1 patches, Laurent Vivier, 2019/05/23
- [Qemu-devel] [PULL 01/10] linux-user: add pseudo /proc/cpuinfo for sparc, Laurent Vivier, 2019/05/23
- [Qemu-devel] [PULL 07/10] linux-user: Add support for setsockopt() options IPV6_<ADD|DROP>_MEMBERSHIP, Laurent Vivier, 2019/05/23
- [Qemu-devel] [PULL 04/10] linux-user: Add support for SIOCSPGRP ioctl for all targets, Laurent Vivier, 2019/05/23
- [Qemu-devel] [PULL 02/10] linux-user: add pseudo /proc/hardware for m68k, Laurent Vivier, 2019/05/23
- [Qemu-devel] [PULL 09/10] linux-user: Align mmap_find_vma to host page size, Laurent Vivier, 2019/05/23
- [Qemu-devel] [PULL 05/10] linux-user: Add support for SIOC<G|S>IFPFLAGS ioctls for all targets, Laurent Vivier, 2019/05/23
- [Qemu-devel] [PULL 03/10] linux-user: Fix support for SIOCATMARK and SIOCGPGRP ioctls for xtensa, Laurent Vivier, 2019/05/23
- [Qemu-devel] [PULL 08/10] linux-user: Fix shmat emulation by honoring host SHMLBA, Laurent Vivier, 2019/05/23
- [Qemu-devel] [PULL 06/10] linux-user: Sanitize interp_info and, for mips only, init field fp_abi,
Laurent Vivier <=
- [Qemu-devel] [PULL 10/10] linux-user: Pass through nanosecond timestamp components for stat syscalls, Laurent Vivier, 2019/05/23
- Re: [Qemu-devel] [PULL 00/10] Linux user for 4.1 patches, no-reply, 2019/05/23
- Re: [Qemu-devel] [PULL 00/10] Linux user for 4.1 patches, Peter Maydell, 2019/05/24