From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Kg2yE-0003Ew-Qz for qemu-devel@nongnu.org; Wed, 17 Sep 2008 15:45:50 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Kg2yE-0003EM-3i for qemu-devel@nongnu.org; Wed, 17 Sep 2008 15:45:50 -0400 Received: from [199.232.76.173] (port=58442 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Kg2yD-0003E9-S6 for qemu-devel@nongnu.org; Wed, 17 Sep 2008 15:45:49 -0400 Received: from [84.20.150.76] (port=43418 helo=narury.org) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Kg2yD-00005A-Kd for qemu-devel@nongnu.org; Wed, 17 Sep 2008 15:45:49 -0400 Received: from kos.to (localhost.localdomain [127.0.0.1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by narury.org (Postfix) with ESMTP id 177843274001 for ; Wed, 17 Sep 2008 22:45:43 +0300 (EEST) Date: Wed, 17 Sep 2008 22:45:42 +0300 From: Riku Voipio Message-ID: <20080917194542.GC21187@kos.to> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="EgVrEAR5UttbsTXg" Content-Disposition: inline Subject: [Qemu-devel] [PATCH] uselib, mincore and readahead syscalls 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 --EgVrEAR5UttbsTXg Content-Type: multipart/mixed; boundary="VV4b6MQE+OnNyhkM" Content-Disposition: inline --VV4b6MQE+OnNyhkM Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable These have been carried in Debian since forever. Added lock_user() calls for mincore before submitting, I'm not sure if that's the correct way? Signed-off-by: Riku Voipio --=20 "rm -rf" only sounds scary if you don't have backups --VV4b6MQE+OnNyhkM Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="31_syscalls.patch" Content-Transfer-Encoding: quoted-printable Index: trunk/linux-user/syscall.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk.orig/linux-user/syscall.c 2008-09-17 20:07:40.000000000 +0300 +++ trunk/linux-user/syscall.c 2008-09-17 21:43:47.000000000 +0300 @@ -276,6 +276,7 @@ extern int setfsuid(int); extern int setfsgid(int); extern int setgroups(int, gid_t *); +extern int uselib(const char*); =20 #define ERRNO_TABLE_SIZE 1200 =20 @@ -4226,7 +4227,13 @@ #endif #ifdef TARGET_NR_uselib case TARGET_NR_uselib: - goto unimplemented; + { + if(!(p =3D lock_user_string(arg1))) + goto efault; + ret =3D get_errno(uselib(path(p))); + unlock_user(p, arg1, 0); + } + break; #endif #ifdef TARGET_NR_swapon case TARGET_NR_swapon: @@ -5512,7 +5519,18 @@ goto unimplemented; #ifdef TARGET_NR_mincore case TARGET_NR_mincore: - goto unimplemented; + { + void *a; + if (!(a =3D lock_user(VERIFY_READ, arg1,arg2, 0))) + goto efault; + if (!(p =3D lock_user_string(arg3))) + goto mincore_fail; + ret =3D get_errno(mincore((void*)a, (size_t)arg2, (unsigned char*= )p)); + unlock_user(p, arg3, ret); + mincore_fail: + unlock_user(a, arg1, 0); + } + break; #endif #ifdef TARGET_NR_madvise case TARGET_NR_madvise: @@ -5652,7 +5670,8 @@ break; #ifdef TARGET_NR_readahead case TARGET_NR_readahead: - goto unimplemented; + ret =3D get_errno(readahead((int)arg1, (off64_t)arg2, (size_t)arg3= )); + break; #endif #ifdef TARGET_NR_setxattr case TARGET_NR_setxattr: --VV4b6MQE+OnNyhkM-- --EgVrEAR5UttbsTXg Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) iD8DBQFI0V5mibPvMsrqrwMRAmKMAKDedN8DEKSi9kwVXe5Ci4KSONWH9ACfWT3d S6l9h4LK9dYwR22d9qq+fuY= =UEVd -----END PGP SIGNATURE----- --EgVrEAR5UttbsTXg--