From nobody Sat May 10 05:13:47 2025 Delivered-To: importer2@patchew.org Received-SPF: pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; envelope-from=linux-kernel-owner@vger.kernel.org; helo=vger.kernel.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1619815112; cv=none; d=zohomail.com; s=zohoarc; b=iBZSuYv8EzOn8lxXcTM4TrJ5BPpDu+ywAX5Gh1wWmyKGWA2rL9JDc8KwWPHk4+Kr5l7RjlabBIsIUFVln20X3k7RU55YjSf82lm77Pj9N7hNGU+ktc9w/rNeksvTnKGjiVRG2n/czXsQIuDTM7KHy+SUsKy025cPI0dtF6kvFdY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1619815112; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:MIME-Version:Message-ID:References:Subject:To; bh=wp7Rsa3dbFK1Rt2HaXcIflNA2UCoRc1Jacf2kiGOD4Y=; b=Hkcu1Bd2XdjLvM5mGG14PgDN5i4hOh6EPOxF6+zJr1gxzedXjDOS2ZJmdQ46BevO+Sc8bVpbQQ+2twqdev4X4HijrxmUAAypJmFa/WvqjgLyBUqEqSM+YZDBPdrB5tqZZy58zNrpnYpU08BiJXjCpplN2iRumu/VIzEuPoBH3GI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mx.zohomail.com with SMTP id 1619815112007364.43833240012395; Fri, 30 Apr 2021 13:38:32 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236124AbhD3UjS (ORCPT ); Fri, 30 Apr 2021 16:39:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44332 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236037AbhD3UjF (ORCPT ); Fri, 30 Apr 2021 16:39:05 -0400 Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 11C06C06174A for ; Fri, 30 Apr 2021 13:38:16 -0700 (PDT) Received: by mail-wr1-x433.google.com with SMTP id z6so10654743wrm.4 for ; Fri, 30 Apr 2021 13:38:15 -0700 (PDT) Received: from amanieu-desktop.home ([2a00:23c6:f081:f801:93ef:94e:9f8:1f0]) by smtp.gmail.com with ESMTPSA id r5sm4384239wmh.23.2021.04.30.13.38.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Apr 2021 13:38:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=wp7Rsa3dbFK1Rt2HaXcIflNA2UCoRc1Jacf2kiGOD4Y=; b=fTWIgIXXXBicM8mkR4e+jMmoMkXLMfXIPA8qQJfimikpqNo4e6OavH5E2OFZQldeFV wdFu2C17LBu3ZAafS1DpnRtyU4zQ1q7hL/DdUZUopyaPYWKVkOnAOVxVT7gmhzihNhkA RpwpPqwn/JyMXn7bsws+DE6vi1jEZxsi1D6DQpfPSaHA3VYErEIxGP10opO3WQRGovzW T/gZAAry1kzu0qIbeQif93P8myozy7i4SphAn7qrDDyLLQv9S7SYSkKQkEa1nvU7F0fu P87agY0+PtB1lGoj+4fEcJ0rH2pAb6xB6djbUyfg4cZoHgAYFjtdJxqY/OGX56xL2bHV yc4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=wp7Rsa3dbFK1Rt2HaXcIflNA2UCoRc1Jacf2kiGOD4Y=; b=oXig2t+wgGKzDEVL9T/4TWo2+QLqsePcYlk0Qky0KCUP3BdgcdwwSJ7GbIlfQ+oJ0o YnMh3pMUH2BC/Nj26GvlYUQ7/LKVtPeXXX4Dqyech588FOTbyQuWAror6ap17lsMIET7 +iekBqIpHRWBl1Ka655nb6RrxsahChLnXiXOsRFTDgOmK6XNWTx7XpVGUmIikZqR/G4X S5qE+FiipYHAYVcG6HYeicZR8Bptp140UbTxPHcqZKazdCpS6W2yqpfSR0Sh4zQW30t4 ryuXtFau3w+gwPXoIDuBK/FEGKNeaBDPorirD/LIAbjOmkLcjMICHibyU/G5cu/302Mc +Jqg== X-Gm-Message-State: AOAM530nKriyPu6W5LWAvXpmi/fD2FeHL8hlIO7D7GsGMTfLbqw07WJy CFNrqn5gOgY9864imEJBJ5s= X-Google-Smtp-Source: ABdhPJwsNZHj8NpnDYRZa7EoRD8F5v2Z3j4FTMvwiwmwQHZqMamEq3kqT32JAYW/vdBQAdOO2UmHUw== X-Received: by 2002:adf:f8cb:: with SMTP id f11mr9644074wrq.168.1619815094834; Fri, 30 Apr 2021 13:38:14 -0700 (PDT) From: Amanieu d'Antras Cc: Amanieu d'Antras , Ryan Houdek , Catalin Marinas , Will Deacon , Mark Rutland , Steven Price , Arnd Bergmann , David Laight , Mark Brown , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v4 6/8] arm64: Add a compat syscall flag to thread_info Date: Fri, 30 Apr 2021 21:37:55 +0100 Message-Id: <20210430203757.47653-5-amanieu@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210430202810.44092-1-amanieu@gmail.com> References: <20210430202810.44092-1-amanieu@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" This flag is used by in_compat_syscall to handle compat syscalls coming from 64-bit tasks. Signed-off-by: Amanieu d'Antras Co-developed-by: Ryan Houdek Signed-off-by: Ryan Houdek --- arch/arm64/include/asm/compat.h | 4 ++-- arch/arm64/include/asm/elf.h | 13 ++++++++++++- arch/arm64/include/asm/thread_info.h | 6 ++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/arch/arm64/include/asm/compat.h b/arch/arm64/include/asm/compa= t.h index a2f5001f7793..124f4487dfee 100644 --- a/arch/arm64/include/asm/compat.h +++ b/arch/arm64/include/asm/compat.h @@ -190,13 +190,13 @@ static inline bool is_compat_thread(struct thread_inf= o *thread) =20 static inline bool in_compat_syscall(void) { - return is_compat_task(); + return current_thread_info()->use_compat_syscall; } #define in_compat_syscall in_compat_syscall /* override the generic impl */ =20 static inline bool thread_in_compat_syscall(struct thread_info *thread) { - return is_compat_thread(thread); + return thread->use_compat_syscall; } =20 #else /* !CONFIG_COMPAT */ diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h index e21964898d06..49a9a9db612c 100644 --- a/arch/arm64/include/asm/elf.h +++ b/arch/arm64/include/asm/elf.h @@ -158,10 +158,20 @@ typedef struct user_fpsimd_state elf_fpregset_t; */ #define ELF_PLAT_INIT(_r, load_addr) (_r)->regs[0] =3D 0 =20 +#ifdef CONFIG_COMPAT +#define CLEAR_COMPAT_SYSCALL() \ +({ \ + current_thread_info()->use_compat_syscall =3D false; \ +}) +#else +#define CLEAR_COMPAT_SYSCALL() ((void)0) +#endif + #define SET_PERSONALITY(ex) \ ({ \ clear_thread_flag(TIF_32BIT); \ current->personality &=3D ~READ_IMPLIES_EXEC; \ + CLEAR_COMPAT_SYSCALL(); \ }) =20 /* update AT_VECTOR_SIZE_ARCH if the number of NEW_AUX_ENT entries changes= */ @@ -228,7 +238,8 @@ typedef compat_elf_greg_t compat_elf_gregset_t[COMPAT_= ELF_NGREG]; #define COMPAT_SET_PERSONALITY(ex) \ ({ \ set_thread_flag(TIF_32BIT); \ - }) + current_thread_info()->use_compat_syscall =3D true; \ +}) #ifdef CONFIG_COMPAT_VDSO #define COMPAT_ARCH_DLINFO \ do { \ diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/= thread_info.h index 6623c99f0984..02310b45900d 100644 --- a/arch/arm64/include/asm/thread_info.h +++ b/arch/arm64/include/asm/thread_info.h @@ -42,6 +42,12 @@ struct thread_info { void *scs_base; void *scs_sp; #endif +#ifdef CONFIG_COMPAT + /* + * compat task or inside a compat syscall from a 64-bit task + */ + bool use_compat_syscall; +#endif }; =20 #define thread_saved_pc(tsk) \ --=20 2.31.1