53 lines
1.6 KiB
Diff
53 lines
1.6 KiB
Diff
From 39c6bee3d5023a3e339bafd8073bc2c920cd79c5 Mon Sep 17 00:00:00 2001
|
|
From: Alexander Graf <agraf@suse.de>
|
|
Date: Sun, 25 Sep 2011 06:21:28 +0200
|
|
Subject: [PATCH] linux-user: fix openat
|
|
|
|
When running openat using qemu-arm, we stumbled over invalid permissions
|
|
on the created files. The reason for this is that the mode parameter gets
|
|
treates as an O_... flag, which it isn't - it's a permission bitmask.
|
|
|
|
This patch removes the needless translation of the mode parameter,
|
|
rendering permission passing of openat() to work with linux-user.
|
|
|
|
Reported-by: Dirk Mueller <dmueller@suse.de>
|
|
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
---
|
|
linux-user/syscall.c | 14 +-------------
|
|
1 files changed, 1 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
|
|
index 6b73769..27970a4 100644
|
|
--- a/linux-user/syscall.c
|
|
+++ b/linux-user/syscall.c
|
|
@@ -376,25 +376,13 @@ static int sys_mknodat(int dirfd, const char *pathname, mode_t mode,
|
|
}
|
|
#endif
|
|
#ifdef TARGET_NR_openat
|
|
-static int sys_openat(int dirfd, const char *pathname, int flags, ...)
|
|
+static int sys_openat(int dirfd, const char *pathname, int flags, mode_t mode)
|
|
{
|
|
/*
|
|
* open(2) has extra parameter 'mode' when called with
|
|
* flag O_CREAT.
|
|
*/
|
|
if ((flags & O_CREAT) != 0) {
|
|
- va_list ap;
|
|
- mode_t mode;
|
|
-
|
|
- /*
|
|
- * Get the 'mode' parameter and translate it to
|
|
- * host bits.
|
|
- */
|
|
- va_start(ap, flags);
|
|
- mode = va_arg(ap, mode_t);
|
|
- mode = target_to_host_bitmask(mode, fcntl_flags_tbl);
|
|
- va_end(ap);
|
|
-
|
|
return (openat(dirfd, pathname, flags, mode));
|
|
}
|
|
return (openat(dirfd, pathname, flags));
|
|
--
|
|
1.6.0.2
|
|
|