qemu/linux-user
Alexander Graf 77a8f1a512 linux-user: Fix stale tbs after mmap
If we execute linux-user code that does the following:

  * A = mmap()
  * execute code in A
  * munmap(A)
  * B = mmap(), but mmap returns the same address as A
  * execute code in B

we end up executing a stale cached tb that contains translated code
from A, while we want new code from B.

This patch adds a TB flush for mmap'ed regions, before we return them,
avoiding the whole issue. It also adds a flush for munmap, so that we
don't execute stale TBs instead of getting a segfault.

Reported-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Alexander Graf <agraf@suse.de>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Acked-by: Riku Voipio <riku.voipio@linaro.org>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
2012-05-19 15:49:40 +00:00
..
alpha
arm linux-user/arm/syscall_nr.h: Add syscall number for ppoll 2012-04-06 18:49:58 +03:00
cris
i386
m68k linux-user: Don't overuse CPUState 2012-03-14 22:20:24 +01:00
microblaze
mips
mips64 linux-user: Define TARGET_QEMU_ESIGRETURN for mips64 2012-02-02 17:51:21 +02:00
mipsn32 linux-user: Define TARGET_QEMU_ESIGRETURN for mipsn32 2012-02-02 17:51:20 +02:00
ppc
s390x
sh4
sparc sparc-linux-user: Add some missing syscall numbers 2011-10-27 14:43:10 +03:00
sparc64
unicore32
x86_64 Fix spelling in comments, documentation and messages 2011-12-14 11:09:44 +00:00
cpu-uname.c linux-user/cpu-uname.c: Convert to UTF-8 2011-12-06 10:04:36 +00:00
cpu-uname.h
elfload.c Userspace ARM BE8 support 2012-04-06 19:25:57 +03:00
errno_defs.h
flat.h
flatload.c fix spelling in linux-user sub directory 2011-12-02 10:50:56 +00:00
ioctls.h linux-user: Add ioctl for BLKBSZGET 2012-04-06 18:49:58 +03:00
linux_loop.h
linuxload.c linux-user/elfload.c: Don't memset(NULL..) if malloc() failed 2011-11-11 12:49:53 -06:00
m68k-sim.c
main.c Userspace ARM BE8 support 2012-04-06 19:25:57 +03:00
mmap.c linux-user: Fix stale tbs after mmap 2012-05-19 15:49:40 +00:00
qemu-types.h linux-user: fix abi_(u)long, target_ulong mismatch 2011-10-27 14:42:16 +03:00
qemu.h Userspace ARM BE8 support 2012-04-06 19:25:57 +03:00
signal.c Bad zero comparison for sas_ss_flags on powerpc 2012-03-15 13:12:10 +01:00
socket.h
strace.c linux-user/strace.c: Correct errno printing for mmap etc 2012-02-02 17:51:20 +02:00
strace.list
syscall_defs.h linux-user: fix BLK ioctl arguments 2012-04-06 18:49:58 +03:00
syscall_types.h linux-user: add struct old_dev_t compat 2012-04-06 18:49:58 +03:00
syscall.c linux-user: fix emulation of /proc/self/maps 2012-05-03 17:31:52 +03:00
target_flat.h
uaccess.c
vm86.c linux-user: fix abi_(u)long, target_ulong mismatch 2011-10-27 14:42:16 +03:00