From patchwork Fri Jul 7 13:19:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Helge Deller X-Patchwork-Id: 13304889 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id C12C3EB64D9 for ; Fri, 7 Jul 2023 13:21:08 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qHlN7-0005QY-V8; Fri, 07 Jul 2023 09:19:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qHlN3-0005Q4-P9 for qemu-devel@nongnu.org; Fri, 07 Jul 2023 09:19:38 -0400 Received: from mout.gmx.net ([212.227.17.22]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qHlMz-0001Lf-Sc for qemu-devel@nongnu.org; Fri, 07 Jul 2023 09:19:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.de; s=s31663417; t=1688735969; x=1689340769; i=deller@gmx.de; bh=kW+aRGZnsWLqxw+XdUu3PLEnhXuIX+DbTAQorTksg3s=; h=X-UI-Sender-Class:From:To:Cc:Subject:Date:In-Reply-To:References; b=K9m4YF7YTMwB3FAZTJeIZAMIHRhcSbxiq6DuAuYBwRqD8Ddz9Jnwhk0u+YyDDaeojKpBRox TFmXT0Sm9xfn2caR2pvPQqY8cIXvnYzx1WPH8Y87c0K97j6644G4Xe1NOyOceosnDs1DZ8TE0 X6AmKVH3mk/yxBy+ON2glw3BIVNEGUjdppk8PwxLsbkMk72M7SBbcMJ+U3Lk/XpwHqRqPjWU1 bJhWNMb8DBpVymQ5XcGh9lhmEdXHTZgGmWqg2KPBLp+0j2vefEDTHwOTJuQ5G1iIe8ujXYbL1 JvGGxVJAGwi2Ya/Z4tohfZm/Fr5ZesDSe+0bH/Q2GuaqDVGpZ/IQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from p100.fritz.box ([94.134.153.180]) by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M8ykg-1qNnmh0iUY-00670Y; Fri, 07 Jul 2023 15:19:29 +0200 From: Helge Deller To: Laurent Vivier , Richard Henderson , qemu-devel@nongnu.org Cc: Helge Deller Subject: [PATCH 1/4] linux-user: Fix fcntl64() to return O_LARGEFILE for 32-bit targets Date: Fri, 7 Jul 2023 15:19:25 +0200 Message-ID: <20230707131928.89500-2-deller@gmx.de> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230707131928.89500-1-deller@gmx.de> References: <20230707131928.89500-1-deller@gmx.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:ZlUQJHL0WzuzH6nmDdzcVxEsTrW9dBTQ1reCPhnXQJbtVH4Begu GRNfzozyKHZVMXwtzJjDxO+mvT7fcZpwdECcxll3sQjlYfRLbTjC1E3ZHne4aFR96On8wBJ HjPDh6sY9DJdlW+wfoFP1GjWtuhg2f9nubucmjGJwVxORlEfq6NbIb5NlM4mcA1oXqalD0b HdkZVb5m3z/Vv/wKJzoeA== UI-OutboundReport: notjunk:1;M01:P0:r0dqhEGywF0=;1+MhtO3SEotqwaxRTKPr1oSWmW4 KpeDdvWOd17lEIGB9xoIKbur9h5KHNa8u/f1SVru/jGmDEEwcJS1YIw5D4hStzaDUwpfaK3W+ K3GkJOD25ue1W2zbmHK+t/L24dsS76YF4W3vLU7GU0zJ7BLSWYY20tVuQ3JNa+jMv/F1feGXE Q+MdgSfHC5QKcg2poYwXTxPhl+n/z28KsmciS+Z6jLQodfjjN2DzEw7kpCjBEEaDCq9iDPV9s zIXyV22vXRg8oae5G+utpKCOqYeGJUcL+tgH+S3bEpHRstW/3w8TeqBTkm7geWdvZJZ9Hr4u7 hDC8b4F2/U4v8PEpVJXlxAAnIw8E0IKSx6vmcXahC3aqVK479cuoyidEqwuPn3ekLNbh+LhO1 7FXjoFg0eHHWrXnbDQ1TuMZEhlO1Sz5VyhyuWIyeVvFvNU9JdgcKEYeWQbDodO6dg0eLUvgLd ZFovtmg/LRYK53jplrwBQA1UqYVY5enz1+FdSBtDFZvNn/0KxDgoBpBJg7OjjGij35x2MVzLY GxVKuHgvKrApbx3XFc75II/pScA0Y03dOVxNSGlyaC5po98UVK8AwfS8E7ytp8DzaSUzjl2rv kIM5ehgXImIrM3aS3npIM73dwIImhejles4sINjSEoOIcUAlM6B4tTIhTMPYpP+VspiKR9/K/ 9Kuum8KfchGRs/0v95XGYDh2LrxxBP5jImyOKgXONKybnzJbX/L5Mb1SbMT+6MuKyJV2uAy1O r5N2wOSvt9RCIcRlBaDM9vxyXbdo3aCcYwaelTyVLmmYZ0bmPunSTTktscLxYW/Ox1p9qnNLP s3jRV+s5ZpdGt84sU4YTGDGLQKpeNm3ZXPhZopL4I9/WF35DxW0PYVcy0pJSL8h+nVLs8iSER eCL+bNnLFdO3hnC3qJzP/sSRgv/y8aDsFLnbO3ZgNMHUW6xHTSVLUaRlroVSztEAjVDszHiFp IYQHdtEn4l/z8eVfum1BvgsKxkE= Received-SPF: pass client-ip=212.227.17.22; envelope-from=deller@gmx.de; helo=mout.gmx.net X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org On a 64-bit host, O_LARGEFILE has the value 0. When running a 32-bit guest on a 64-bit host, fcntl64(F_GETFL) should return with the O_LARGEFILE flag set, because the 64-bit host supports large files unconditionally. The flag translation should have happened in do_fcntl(), but since O_LARGEFILE is zero for 64-bit hosts, the translation can't be done with the translation table. Fix it by setting the TARGET_O_LARGEFILE flag unconditionally for 32-bit guests on 64-bit hosts when fcntl64() is called. Signed-off-by: Helge Deller --- linux-user/syscall.c | 9 +++++++++ 1 file changed, 9 insertions(+) -- 2.41.0 diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 08162cc966..3f1e8e7ad9 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -12328,6 +12328,15 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, } switch(arg2) { +#if HOST_LONG_BITS == 64 && TARGET_LONG_BITS == 32 && \ + O_LARGEFILE == 0 && TARGET_O_LARGEFILE != 0 + case TARGET_F_GETFL: + ret = do_fcntl(arg1, arg2, arg3); + if (ret > 0) { + ret |= TARGET_O_LARGEFILE; + } + break; +#endif case TARGET_F_GETLK64: ret = copyfrom(&fl, arg3); if (ret) {