[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 01/10] linux-user: fix O_TMPFILE handling
From: |
riku . voipio |
Subject: |
[Qemu-devel] [PULL 01/10] linux-user: fix O_TMPFILE handling |
Date: |
Wed, 18 Oct 2017 15:33:15 +0300 |
From: Riku Voipio <address@hidden>
Since O_TMPFILE might differ between guest and host,
add it to the bitmask_transtbl. While at it, fix the definitions
of O_DIRECTORY etc which should arm32 according to kernel sources.
This fixes open14 and openat03 ltp testcases. Fixes:
https://bugs.launchpad.net/qemu/+bug/1709170
---
linux-user/strace.c | 4 ++++
linux-user/syscall.c | 3 +++
linux-user/syscall_defs.h | 8 +++++++-
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/linux-user/strace.c b/linux-user/strace.c
index d821d165ff..bd897a3f20 100644
--- a/linux-user/strace.c
+++ b/linux-user/strace.c
@@ -837,6 +837,10 @@ UNUSED static struct flags open_flags[] = {
#endif
#ifdef O_PATH
FLAG_TARGET(O_PATH),
+#endif
+#ifdef O_TMPFILE
+ FLAG_TARGET(O_TMPFILE),
+ FLAG_TARGET(__O_TMPFILE),
#endif
FLAG_END,
};
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 9b6364a266..08fbc4d5f7 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -341,6 +341,9 @@ static bitmask_transtbl fcntl_flags_tbl[] = {
#endif
#if defined(O_PATH)
{ TARGET_O_PATH, TARGET_O_PATH, O_PATH, O_PATH },
+#endif
+#if defined(O_TMPFILE)
+ { TARGET_O_TMPFILE, TARGET_O_TMPFILE, O_TMPFILE, O_TMPFILE },
#endif
/* Don't terminate the list prematurely on 64-bit host+guest. */
#if TARGET_O_LARGEFILE != 0 || O_LARGEFILE != 0
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 40c5027e93..6e2287e918 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -2416,7 +2416,7 @@ struct target_statfs64 {
#define TARGET_O_CLOEXEC 010000000
#define TARGET___O_SYNC 000100000
#define TARGET_O_PATH 020000000
-#elif defined(TARGET_ARM) || defined(TARGET_M68K)
+#elif defined(TARGET_ARM) || defined(TARGET_M68K) || defined(TARGET_AARCH64)
#define TARGET_O_DIRECTORY 040000 /* must be a directory */
#define TARGET_O_NOFOLLOW 0100000 /* don't follow links */
#define TARGET_O_DIRECT 0200000 /* direct disk access hint */
@@ -2513,6 +2513,12 @@ struct target_statfs64 {
#ifndef TARGET_O_PATH
#define TARGET_O_PATH 010000000
#endif
+#ifndef TARGET___O_TMPFILE
+#define TARGET___O_TMPFILE 020000000
+#endif
+#ifndef TARGET_O_TMPFILE
+#define TARGET_O_TMPFILE (TARGET___O_TMPFILE | TARGET_O_DIRECTORY)
+#endif
#ifndef TARGET_O_NDELAY
#define TARGET_O_NDELAY TARGET_O_NONBLOCK
#endif
--
2.14.2
- [Qemu-devel] [PULL 00/10] linux-user update for 2.11, riku . voipio, 2017/10/18
- [Qemu-devel] [PULL 03/10] linux-user: remove duplicate break in syscall, riku . voipio, 2017/10/18
- [Qemu-devel] [PULL 05/10] tcg: Fix off-by-one in assert in page_set_flags, riku . voipio, 2017/10/18
- [Qemu-devel] [PULL 01/10] linux-user: fix O_TMPFILE handling,
riku . voipio <=
- [Qemu-devel] [PULL 02/10] target/m68k, linux-user: manage FP registers in ucontext, riku . voipio, 2017/10/18
- [Qemu-devel] [PULL 04/10] linux-user: Allow -R values up to 0xffff0000 for 32-bit ARM guests, riku . voipio, 2017/10/18
- [Qemu-devel] [PULL 07/10] linux-user/sh4: Reduce TARGET_VIRT_ADDR_SPACE_BITS to 31, riku . voipio, 2017/10/18
- [Qemu-devel] [PULL 06/10] linux-user: Tidy and enforce reserved_va initialization, riku . voipio, 2017/10/18
- [Qemu-devel] [PULL 10/10] linux-user: Fix TARGET_MTIOCTOP/MTIOCGET/MTIOCPOS values, riku . voipio, 2017/10/18
- [Qemu-devel] [PULL 09/10] linux-user/main: support dfilter, riku . voipio, 2017/10/18
- [Qemu-devel] [PULL 08/10] linux-user: Fix target FS_IOC_GETFLAGS and FS_IOC_SETFLAGS numbers, riku . voipio, 2017/10/18
- Re: [Qemu-devel] [PULL 00/10] linux-user update for 2.11, Peter Maydell, 2017/10/19
- Re: [Qemu-devel] [PULL 00/10] linux-user update for 2.11, no-reply, 2017/10/22