Patchwork [04/10] linux-user: fix openat

login
register
mail settings
Submitter riku.voipio@linaro.org
Date Oct. 27, 2011, 12:02 p.m.
Message ID <f4c690101c74afcc58deead71f6302fe343718b7.1319716562.git.riku.voipio@linaro.org>
Download mbox | patch
Permalink /patch/122140/
State New
Headers show

Comments

riku.voipio@linaro.org - Oct. 27, 2011, 12:02 p.m.
From: Alexander Graf <agraf@suse.de>

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>
Signed-off-by: Riku Voipio <riku.voipio@iki.fi>
---
 linux-user/syscall.c |   14 +-------------
 1 files changed, 1 insertions(+), 13 deletions(-)

Patch

diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 9a63357..6159571 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -379,25 +379,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));