From nobody Sun Apr 28 19:11:11 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@gnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@gnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1506785082539922.6462749305482; Sat, 30 Sep 2017 08:24:42 -0700 (PDT) Received: from localhost ([::1]:39589 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dyJcv-0000PL-Ma for importer@patchew.org; Sat, 30 Sep 2017 11:24:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43332) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dyJc0-00006I-3b for qemu-devel@nongnu.org; Sat, 30 Sep 2017 11:23:29 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dyJbw-0003T3-LI for qemu-devel@nongnu.org; Sat, 30 Sep 2017 11:23:28 -0400 Received: from sonic310-22.consmr.mail.ne1.yahoo.com ([66.163.186.203]:36778) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dyJbw-0003S3-Ev for qemu-devel@nongnu.org; Sat, 30 Sep 2017 11:23:24 -0400 Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.ne1.yahoo.com with HTTP; Sat, 30 Sep 2017 15:23:22 +0000 Received: from [127.0.0.1] by smtp114.mail.ne1.yahoo.com with NNFMP; 30 Sep 2017 15:23:18 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1506785002; bh=AAldWjrUNnLaxckKUOet+3Aao5QjzIlwT1Bbb4/2oc8=; h=From:To:Cc:Subject:Date:From:Subject; b=aB/uiJAmzLu3+RZh8QXdnXWylQ4vdex5eFA8Y22jZFfZ/TOCcQEWoeeBNTTCRFoB1v0TYUvbBugRLG7wuyExZzSgpzM+LK5UCDCXycowxCoWQyuYyepynfyApHswEZO6tYS10T6MxOnojRF7pwW5H0xwSLETs6JfyE3rh8PvykxVyCBvPe1j6M8UTTwQSSGxIeGWQZ15d5u+6iBuKgGIOgZ9djbbGT25y7FeJxMMA+w/6PsVhd4M3eolYegDvt9ADkm0CWUUxeU5EkEUTUrImI4AM9QApXIokTk8oB6len/kiqSNiWnR34SrsYkCyj5RAErXRWM3o3f57lshcxHPdA== X-YMail-OSG: x0gVi7IVM1nXe6llWMC7D_Sy4ibuWJl1p9grpT957GZCc2K1Kz4uXucyWE2TfIW qVUDU3pt774lwZ92hqpaXnGFSSei6biognuuCt1VHKwCH.2mtJiUQnKU3Hncd3QGqjJDHkLJAeRx sWxoeMmFtUg6VF1..w9LeMtSoFJApi6shu_mbPp3rTnOTokFmGsGRGamY9CbBNF0fnFP1yjckuNo YLbmMrkdEodgE26sUoh4vYFmnOwIUa4m5hx6M63p6p_cl0hQWlb6BMR2_tb.XkI2uh1PMfvrll0K EYjZIyKogAwgCqk_DDy9QsFKZnLa5Zske7.4lrupwK_PtplDyVjMblu45LI4VWo9zYdUjKq3c8Qn DKIBt5C_1Af3t9c95t_KI.fnAlVF1mV5ruDw18HVh08K0.A5WxYmb6ClJch9AidcEqAvpql7eWn. kt5QrNfCTWs4Jn6EVeRpFyRcPgjGaeTwJtYzYTBOGS8Mtrb3Zyu3EAcUmQhzinJC8Q6MfEpK3X.f BcR_bizj_fc79atOC245mksJafw-- X-Yahoo-Newman-Id: 453380.69625.bm@smtp114.mail.ne1.yahoo.com X-Yahoo-Newman-Property: ymail-3 X-YMail-OSG: x0gVi7IVM1nXe6llWMC7D_Sy4ibuWJl1p9grpT957GZCc2K 1Kz4uXucyWE2TfIWqVUDU3pt774lwZ92hqpaXnGFSSei6biognuuCt1VHKwC H.2mtJiUQnKU3Hncd3QGqjJDHkLJAeRxsWxoeMmFtUg6VF1..w9LeMtSoFJA pi6shu_mbPp3rTnOTokFmGsGRGamY9CbBNF0fnFP1yjckuNoYLbmMrkdEodg E26sUoh4vYFmnOwIUa4m5hx6M63p6p_cl0hQWlb6BMR2_tb.XkI2uh1PMfvr ll0KEYjZIyKogAwgCqk_DDy9QsFKZnLa5Zske7.4lrupwK_PtplDyVjMblu4 5LI4VWo9zYdUjKq3c8QnDKIBt5C_1Af3t9c95t_KI.fnAlVF1mV5ruDw18HV h08K0.A5WxYmb6ClJch9AidcEqAvpql7eWn.kt5QrNfCTWs4Jn6EVeRpFyRc PgjGaeTwJtYzYTBOGS8Mtrb3Zyu3EAcUmQhzinJC8Q6MfEpK3X.fBcR_bizj _fc79atOC245mksJafw-- X-Yahoo-SMTP: WsG.0yqswBD6rc_50gSjRSfoixD_XE47Zw-- To: qemu-devel@nongnu.org Date: Sat, 30 Sep 2017 11:23:05 -0400 Message-Id: <1506784985-4107-1-git-send-email-zhuoweizhang@yahoo.com> X-Mailer: git-send-email 1.9.1 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 66.163.186.203 Subject: [Qemu-devel] [PATCH v2] syscall: fix special case of write(fd, NULL, 0) X-BeenThere: qemu-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: zhuoweizhang--- via Qemu-devel Reply-To: zhuoweizhang@yahoo.com Cc: riku.voipio@iki.fi, Zhuowei Zhang , laurent@vivier.eu Errors-To: qemu-devel-bounces+importer=patchew.org@gnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Zhuowei Zhang Linux returns success for the special case of calling write with a zero-len= gth NULL buffer: compiling and running ``` #include #include #include int main() { ssize_t ret =3D write(STDOUT_FILENO, NULL, 0); fprintf(stderr, "write returned %ld\n", ret); return 0; } ``` gives "write returned 0" when run directly, but "write returned -1" in QEMU. This commit checks for this situation and calls the real syscall with a NULL buffer and zero length, which gives the correct return value. Signed-off-by: Zhuowei Zhang Reviewed-by: Carlo Marcelo Arenas Bel=C3=B3n Reviewed-by: Laurent Vivier --- linux-user/syscall.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 9b6364a..60769c0 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -7783,6 +7783,11 @@ abi_long do_syscall(void *cpu_env, int num, abi_long= arg1, } break; case TARGET_NR_write: + if (arg2 =3D=3D 0 && arg3 =3D=3D 0) { + /* special case: write(fd, NULL, 0) returns success. */ + ret =3D get_errno(safe_write(arg1, NULL, 0)); + break; + } if (!(p =3D lock_user(VERIFY_READ, arg2, arg3, 1))) goto efault; if (fd_trans_target_to_host_data(arg1)) { --=20 1.9.1 =2E