From: Riku Voipio <riku.voipio@linaro.org>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [Bug 1709170] [PATCH] linux-user: fix O_TMPFILE handling
Date: Tue, 08 Aug 2017 13:21:47 -0000 [thread overview]
Message-ID: <20170808132147.GA29384@kos.to> (raw)
In-Reply-To: 150213708469.19430.16716526584783151905.malonedeb@chaenomeles.canonical.com
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 on arm64, which are identical to 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
@@ -838,6 +838,10 @@ UNUSED static struct flags open_flags[] = {
#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 54343c06be..b3aa8099b4 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -342,6 +342,9 @@ static bitmask_transtbl fcntl_flags_tbl[] = {
#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
{ TARGET_O_LARGEFILE, TARGET_O_LARGEFILE, O_LARGEFILE, O_LARGEFILE, },
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.11.0
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1709170
Title:
QEMU fails to honor O_TMPFILE
Status in QEMU:
New
Bug description:
When making a call like
open("/tmp", O_TMPFILE | O_RDWR);
under QEMU, we ged -EISDIR.
Under any kernel 3.11 or later, we are supposed to get an unnamed file
in /tmp. In case the filesystem for /tmp does not support unnamed
files, we are supposed to get EOPNOTSUPP.
[I don't know the QEMU version, since this happened in a system I
don't have access to]
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1709170/+subscriptions
next prev parent reply other threads:[~2017-08-08 13:31 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-07 20:18 [Qemu-devel] [Bug 1709170] [NEW] QEMU fails to honor O_TMPFILE Thiago Macieira
2017-08-08 6:47 ` [Qemu-devel] [Bug 1709170] " Riku Voipio
2017-08-08 13:19 ` [Qemu-devel] [Bug 1709170] [NEW] " Riku Voipio
2017-08-08 13:21 ` Riku Voipio [this message]
2017-08-08 21:56 ` [Qemu-devel] [Bug 1709170] " Thiago Macieira
2017-12-15 15:36 ` Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170808132147.GA29384@kos.to \
--to=riku.voipio@linaro.org \
--cc=1709170@bugs.launchpad.net \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.