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 linux-user: Add syscall numbers from kernel 2.6.39.2 2011-07-11 16:12:51 +03:00
arm linux-user/arm/syscall_nr.h: Add syscall number for ppoll 2012-04-06 18:49:58 +03:00
cris linux-user: Add syscall numbers from kernel 2.6.39.2 2011-07-11 16:12:51 +03:00
i386 linux-user: Add syscall numbers from kernel 2.6.39.2 2011-07-11 16:12:51 +03:00
m68k linux-user: Don't overuse CPUState 2012-03-14 22:20:24 +01:00
microblaze linux-user: Add syscall numbers from kernel 2.6.39.2 2011-07-11 16:12:51 +03:00
mips linux-user: Add syscall numbers from kernel 2.6.39.2 2011-07-11 16:12:51 +03:00
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 linux-user: Add syscall numbers from kernel 2.6.39.2 2011-07-11 16:12:51 +03:00
s390x linux-user: Add syscall numbers from kernel 2.6.39.2 2011-07-11 16:12:51 +03:00
sh4 linux-user: correct syscall 123 on sh4 2011-07-13 17:11:37 +03:00
sparc sparc-linux-user: Add some missing syscall numbers 2011-10-27 14:43:10 +03:00
sparc64 linux-user: Add syscall numbers from kernel 2.6.39.2 2011-07-11 16:12:51 +03:00
unicore32 unicore32: add necessry headers in linux-user/unicore32 for unicore32 support 2011-04-12 18:48:43 +00:00
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 linux-user: adapt uname machine to emulated CPU 2010-02-06 17:19:43 +01:00
elfload.c Userspace ARM BE8 support 2012-04-06 19:25:57 +03:00
errno_defs.h Remove unnecessary trailing newlines 2008-12-13 09:32:43 +00:00
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 Fix build failure with old kernel headers (loop.h is incompatible with 2008-05-23 16:06:43 +00:00
linuxload.c linux-user/elfload.c: Don't memset(NULL..) if malloc() failed 2011-11-11 12:49:53 -06:00
m68k-sim.c linux-user: Fix typo m86k -> m68k 2010-10-05 13:53:56 -05:00
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 linux-user: improve traces 2011-04-26 10:15:40 +03:00
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 linux-user/FLAT: allow targets to override FLAT processing 2011-02-09 10:33:54 +02:00
uaccess.c Fix missing strnlen problems 2009-07-01 18:24:44 +00:00
vm86.c linux-user: fix abi_(u)long, target_ulong mismatch 2011-10-27 14:42:16 +03:00