From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1I5S92-0007Wf-7d for qemu-devel@nongnu.org; Mon, 02 Jul 2007 16:05:12 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1I5S90-0007WQ-OW for qemu-devel@nongnu.org; Mon, 02 Jul 2007 16:05:11 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1I5S90-0007WN-MP for qemu-devel@nongnu.org; Mon, 02 Jul 2007 16:05:10 -0400 Received: from mail.gmx.net ([213.165.64.20]) by monty-python.gnu.org with smtp (Exim 4.60) (envelope-from ) id 1I5S8z-0000Gj-Rl for qemu-devel@nongnu.org; Mon, 02 Jul 2007 16:05:10 -0400 From: Andreas Schwab Date: Mon, 02 Jul 2007 22:05:05 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH] Fix statfs(64) syscall wrapper Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org The kernel's idea of fsid_t has always been a structure with 2 ints, identical to the user space definition. Andreas. --- linux-user/syscall.c.~1.111.~ 2007-06-25 19:08:05.000000000 +0200 +++ linux-user/syscall.c 2007-07-02 21:35:07.000000000 +0200 @@ -3346,7 +3346,8 @@ long do_syscall(void *cpu_env, int num,=20 put_user(stfs.f_bavail, &target_stfs->f_bavail); put_user(stfs.f_files, &target_stfs->f_files); put_user(stfs.f_ffree, &target_stfs->f_ffree); - put_user(stfs.f_fsid.__val[0], &target_stfs->f_fsid); + put_user(stfs.f_fsid.__val[0], &target_stfs->f_fsid.val[0]); + put_user(stfs.f_fsid.__val[1], &target_stfs->f_fsid.val[1]); put_user(stfs.f_namelen, &target_stfs->f_namelen); unlock_user_struct(target_stfs, arg2, 1); } @@ -3372,7 +3373,8 @@ long do_syscall(void *cpu_env, int num,=20 put_user(stfs.f_bavail, &target_stfs->f_bavail); put_user(stfs.f_files, &target_stfs->f_files); put_user(stfs.f_ffree, &target_stfs->f_ffree); - put_user(stfs.f_fsid.__val[0], &target_stfs->f_fsid); + put_user(stfs.f_fsid.__val[0], &target_stfs->f_fsid.val[0]); + put_user(stfs.f_fsid.__val[1], &target_stfs->f_fsid.val[1]); put_user(stfs.f_namelen, &target_stfs->f_namelen); unlock_user_struct(target_stfs, arg3, 0); } --- linux-user/syscall_defs.h.~1.35.~ 2007-06-25 19:08:05.000000000 +0200 +++ linux-user/syscall_defs.h 2007-07-02 21:34:18.000000000 +0200 @@ -1305,6 +1305,10 @@ struct target_stat64 { #error unsupported CPU #endif =20 +typedef struct { + int val[2]; +} target_fsid_t; + #ifdef TARGET_MIPS struct target_statfs { target_long f_type; @@ -1317,7 +1321,7 @@ struct target_statfs { target_long f_bavail; =20 /* Linux specials */ - int f_fsid; + target_fsid_t f_fsid; target_long f_namelen; target_long f_spare[6]; }; @@ -1332,7 +1336,7 @@ struct target_statfs64 { uint64_t f_files; uint64_t f_ffree; uint64_t f_bavail; - int f_fsid; + target_fsid_t f_fsid; uint32_t f_namelen; uint32_t f_spare[6]; }; @@ -1345,7 +1349,7 @@ struct target_statfs { uint32_t f_bavail; uint32_t f_files; uint32_t f_ffree; - int f_fsid; + target_fsid_t f_fsid; uint32_t f_namelen; uint32_t f_frsize; uint32_t f_spare[5]; @@ -1359,7 +1363,7 @@ struct target_statfs64 { uint64_t f_bavail; uint64_t f_files; uint64_t f_ffree; - int f_fsid; + target_fsid_t f_fsid; uint32_t f_namelen; uint32_t f_frsize; uint32_t f_spare[5]; --=20 Andreas Schwab, SuSE Labs, schwab@suse.de SuSE Linux Products GmbH, Maxfeldstra=DFe 5, 90409 N=FCrnberg, Germany Key fingerprint =3D 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different."