Hello community,

here is the log from the commit of package qemu for openSUSE:Factory
checked in at Tue Sep 27 16:07:06 CEST 2011.



--------
--- qemu/qemu.changes   2011-06-20 11:26:04.000000000 +0200
+++ /mounts/work_src_done/STABLE/qemu/qemu.changes      2011-09-26 
17:54:48.000000000 +0200
@@ -1,0 +2,5 @@
+Mon Sep 26 15:53:41 UTC 2011 - [email protected]
+
+- add fix from alex for openat file permission handling
+
+-------------------------------------------------------------------

calling whatdependson for head-i586


New:
----
  0019-linux-user-fix-openat.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ qemu.spec ++++++
--- /var/tmp/diff_new_pack.evYKIf/_old  2011-09-27 16:07:02.000000000 +0200
+++ /var/tmp/diff_new_pack.evYKIf/_new  2011-09-27 16:07:02.000000000 +0200
@@ -43,6 +43,7 @@
 Patch16:        0016-fix-mipsn32-linux-user-builds.patch
 Patch17:        0017-S-390-build-fix.patch
 Patch18:        0018-qemu-0.14.1-mcast-udp.patch
+Patch19:        0019-linux-user-fix-openat.patch
 # this is to make lint happy
 Source300:      rpmlintrc
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
@@ -104,6 +105,7 @@
 %endif
 %patch16 -p1
 %patch18 -p1
+%patch19 -p1
 
 %build
 # build QEMU

++++++ 0019-linux-user-fix-openat.patch ++++++
>From 39c6bee3d5023a3e339bafd8073bc2c920cd79c5 Mon Sep 17 00:00:00 2001
From: Alexander Graf <[email protected]>
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 <[email protected]>
Signed-off-by: Alexander Graf <[email protected]>
---
 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


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



Remember to have fun...

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to