From patchwork Wed May 16 08:18:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yury Norov X-Patchwork-Id: 10403041 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 16BDE602C2 for ; Wed, 16 May 2018 08:30:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0242628806 for ; Wed, 16 May 2018 08:30:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id EA1E82880A; Wed, 16 May 2018 08:30:48 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, DKIM_VALID, MAILING_LIST_MULTI autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 0122228806 for ; Wed, 16 May 2018 08:30:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=mhYFUm0R4oGbuko8d926dCh+Blo9R0EDmjqJqjM3s54=; b=KbCGwnRc6PWcqF CvNWhRmZZlZ7sTwDC6+U6UKGvnODjwDSdhKWyW6DklQ2kgOWUyTPVU6BnZ5zwTLNffiE+elLNLuWJ 1RXKpprCEqUBgBmt52+tguMaWqWhrNNNGKuBj8xMp/WLTLksL7mry1tJFl//4quWBo2Yx7NMRmopm xnXwntOVyPm57mgB2oeLydraH2iHW314MeQGklnGBphTtnMq6mTzQ1QXFBNftaJcZ6f6YqAAl463u 5pa5bDwjtlKHD2/eXMJQuZ28I0kHldBXG+ZeZMLpAUcbOZpILMYAMutBnaIZjyWxmyXMp86RIpZeA FJFL/Uc/akDVdonjWlcw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1fIrpW-0002ze-Ph; Wed, 16 May 2018 08:30:38 +0000 Received: from mail-dm3nam03on0055.outbound.protection.outlook.com ([104.47.41.55] helo=NAM03-DM3-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1fIrh3-0004Vl-VD for linux-arm-kernel@lists.infradead.org; Wed, 16 May 2018 08:22:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6QywykoFc49yT1QnX3FAq9x7rxbvDq267qdDeAjPlW8=; b=RSN0GTAYL1SVzxyNAYuAMQahDBGvgo1GqlgEbo40f9K3iqH0xTbkDntGH43xPqJqDdTV4h736W3HlsW+4rPC0ua0miDVzGHZqMoRZsjSKMgeAajWz9AmS3mamAqIMlIyR+amReFRdzRAg25mupHSAJrzIpsUJrzm5pjD3bSqZOc= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Yuri.Norov@cavium.com; Received: from localhost (176.59.36.13) by BYAPR07MB4376.namprd07.prod.outlook.com (2603:10b6:a02:c0::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.755.16; Wed, 16 May 2018 08:21:38 +0000 From: Yury Norov To: Catalin Marinas , Arnd Bergmann , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, linux-arch@vger.kernel.org, linux-api@vger.kernel.org Subject: [PATCH 11/24] arm64: introduce is_a32_task and is_a32_thread (for AArch32 compat) Date: Wed, 16 May 2018 11:18:56 +0300 Message-Id: <20180516081910.10067-12-ynorov@caviumnetworks.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180516081910.10067-1-ynorov@caviumnetworks.com> References: <20180516081910.10067-1-ynorov@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [176.59.36.13] X-ClientProxiedBy: VI1PR08CA0113.eurprd08.prod.outlook.com (2603:10a6:800:d4::15) To BYAPR07MB4376.namprd07.prod.outlook.com (2603:10b6:a02:c0::19) X-MS-PublicTrafficType: Email X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:BYAPR07MB4376; X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4376; 3:2yjWDL5GDHk84HMCpMf2f/ZW/yEA4bN/5cdHHnHfvbkHctK5Jo3xl1RemupMSY+zuyCKoGUFYNAZJv89Qgo/PEYlFdIy1bhwaORFzFOXORw1uTJYf5+iCgoap/fpLAZl0WrDrgNaXIwv4AKCmqDBa/YsqmhnPjDIunSwenR/6Pw2lW9lFXBjQpcEBuSIJTtvuvj14NtHckKeoNwCEUCH3IJrI9nmhhtKNjLMop7E5UatfeXEa5BghJsYqfxSxxGH; 25:q+BvBU4cq1CotDDXBFEhKDPsVWkh9V0ZSBL4ZcVuoapW0kjDfCipzlsZblL1aVhh0RClSPT3GvaL+a9USkg/jkpJ0NEYGDFbULOQnsA6mLgN4GDsqUwFfsF6PLvnVaq/m/RswfVgJzFCXBgzTb6nVkucHn1Tfdmton/HqwMAR7MfCOvUnuXaEvsPHfkEIFiqCagsa2T5qnlll2tE9DbJh8PEbEL483qrQovJzC0rthAxQhKk+QFNjJZgqEfsJWKykLJo/3tWUjNGB3JJt2LywfCfkpoD7nl9r8klBo9hi97NKosAA6RJ6A9Wsa9ETgb1hgaVHkaHgSH4n6RdXbQlgg==; 31:QijlmJITqGCcPrQrkICXKi6aqVSo48JePEvL3HT1YQwMjIoZZFNQoFWlb/028/86bIGCk9M8GTxRjLrJOpbfqmJ33Nty4AaUYZdEh1k4CINII+xhQql2+H6hIygrT46WPxfjTajJsWAqwM1hVoHQtERvOcMSlYSqon2THdb3R4EwrJLWyq73ugvw+Ym1NJce2SVpMKUGXAGRjOoUcaCqAuQhPmu9Yf3Umk8gDCEWwc0= X-MS-TrafficTypeDiagnostic: BYAPR07MB4376: X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4376; 20:eepGcaYGJju5y5YXv+BgfbgTUmPis5lTob9+eXuQrogC0aeGJtUr5ufEU7z51zyYzrzYYvqyAyk1TtV/2MRBQRViQTxAUoRA7Ay98C8EVSzpHCDoWK4Sj7G+HA+uCyZNz+mGHEMTxylDXkKQF3XUoB+poVE6N8QEQKDaE+q1rtdUhBDvq/mKPj//fZBuorq0Czu+skytHyDXIJRZq9sq5ayEpDLCi4JU8YrFaWdy2mI0s6sb8+UzVHgiPI9Dk4zkwLi5D/+me43Ew1qy02TXCDaF2qvQCGoPOqvAd4P/Fg2E4WcLJm2pHCRJA09+guFyHR3ivwe+o0C+N0G6qB9RFJ1SQItzIyNKtQn9WJjqY2TjRSPSIuDxmB1nzn5Gm7vnuKcR8Z+3HW6puREsmRbmgFbYpuJ0ePRUYQoGK2jRaIXT+Pt5IwV9kiemkL1L7yoWUjTs7wa6NXoQUzvSW6b30sqJRuSe/Nnif3X0s0v5XF0+6CFHWHWZaeJNgCJwu+CPZZMfg8rjPmbyPVMFST2dE/xgv5iYxlKnBRo9dRsz7JArnvc6gRAmo5hkTm9ybMcBEh6oHCMG1jlYjpkgs6WfSWMYg/iLKwrlXFUk0kMWe0k=; 4:tHTE1TdDcBzIdRijS0/aUgYiB+48bndYymsLFUx7MZz1h1brOowByaxh6CLSFKWVj+gPUugfnFV3FU46e3cc+/ibxl4DMt1sfc9Uakbh5zbEI5Tf1Hok1D03IKqclSbQ5lhtRIypi/bCsjZZA9FwKoXr2Lv/rMAdL7SFO168dcZuQ1jU7onCrF4sFgoj6QY0JRq4+PrVke0advGtgshgxDiFuKUZX4OkBxGpw+NvRZkQ9h06YNJa2GLzq0M1X4GVQn4lpqblHO2219r09Zu2EVW9s8z8s3HmlEJWCDyTPfmahBzTPP6nzaMwWuSEjqHb X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(85827821059158); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(93006095)(3002001)(10201501046)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:BYAPR07MB4376; BCL:0; PCL:0; RULEID:; SRVR:BYAPR07MB4376; X-Forefront-PRVS: 0674DC6DD3 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(376002)(346002)(366004)(39850400004)(39380400002)(396003)(189003)(199004)(39060400002)(107886003)(42882007)(59450400001)(6486002)(53936002)(6666003)(4326008)(51416003)(386003)(76176011)(52116002)(446003)(6496006)(50226002)(16586007)(305945005)(7736002)(72206003)(2616005)(26005)(316002)(478600001)(11346002)(36756003)(956004)(105586002)(186003)(16526019)(97736004)(2906002)(486006)(5660300001)(106356001)(8936002)(476003)(76506005)(575784001)(50466002)(48376002)(110136005)(47776003)(66066001)(25786009)(54906003)(7416002)(3846002)(81166006)(7406005)(1076002)(68736007)(81156014)(8676002)(6116002); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR07MB4376; H:localhost; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR07MB4376; 23:MdsSWMFVPiJKnhwttPvzaoYq2eEDBjauDAv47ITk8?= =?us-ascii?Q?67Xrxyu98OWPpM0sHnrQP1BnLQwsWZChTwjGXEcqS3T0TgI2+Bb7UOvY69ZD?= =?us-ascii?Q?TioKqtfXFGk+9czYGxWWFXofIs1u7p26QHYJ6EBGqmp/icalO9oPpIapasZt?= =?us-ascii?Q?A4TMN2l0f+1v0+jm5hcqNac1ccevrkSxZe9857uB25nZSu9lYSATXPHzNCBv?= =?us-ascii?Q?Z6AJ0C6JfzSmJD9jvejDXv/fusbNm+R+kmLlRGP6O2z4qXZkgnIM/fSD8hFL?= =?us-ascii?Q?tfCALMvoHLigAXiMkh/m5I6PU9wA+OsTZrCfV9ljPtG9jno6tnEjCIYsR2pC?= =?us-ascii?Q?+r6qnmXVTpMJPYBwwAsfuChH42MSZTColS009cuxDGVyUyTS08chaAfWN28p?= =?us-ascii?Q?j4ZhEVClTydjfsBM9mvprVIhYYygesQxJfxINkNwg+QJgSB0Ou/hqO5taHhM?= =?us-ascii?Q?jwyQavKjGx/bqzfT6FglSjC+LWSCjRilLjDZsslX7c/VyWNleHPvnlLXtdiS?= =?us-ascii?Q?KSU9eHUq4dReic+5ZTfHL/k2xdo2L9VbhjbzncO7T4S1FUL/z1/4oaz6d+eH?= =?us-ascii?Q?jvfrT/XLb3Un5JvKTCesCbxT1RHr/rUSyJ/JUsJ0Z3vzcpDVfOzmXFaHWcNv?= =?us-ascii?Q?+2Wi0OvcWnbKrC0Y1HVTjcLbHPs5cCdhDolbsU6AhlT9/t5TE6ldzafzliiV?= =?us-ascii?Q?VBY17ZO1Xjyi6zgHHNNpgHu+CPZamYDthDid38CZEE5m9ACmxhCs/DLP0Jjc?= =?us-ascii?Q?iaZoTMSR1GCh1T1gi5MS1bjGrSq35b5txBdwP2AVQAPTpzPupYPEckAYNCen?= =?us-ascii?Q?Jexm5lIj9uiRV0thfGaVokwtBFpn5eLsvFPWfhz3LL9OUldXmL7UxjWKHn+3?= =?us-ascii?Q?g+DAa9PTpXkju9QP0P2uykhjWkpJSoVvLIlTVS745ZhRm2oF0YuvmhefwUPT?= =?us-ascii?Q?jxpKC745//MK3ZuLgmNqD03PyyHcDyQbyp3ZBirbFCIExN1B9FstiGKZmr1V?= =?us-ascii?Q?zQh6ZEVbSh+n40wKDcBm5Aw6zicGs52+78WtfVcVUv3JTFti4XXbCjHn70X5?= =?us-ascii?Q?zXcibKicQUBcHJK3H95AMfm/8SiKbwO0s7qDQJBsauKoJJ6HyEoyodebVFOX?= =?us-ascii?Q?ymCtJD1j+4TIOF9DuCJocD/I4oPf46lpuIC1UwerkY4l8WedpYgt+Gz7R9/z?= =?us-ascii?Q?RxuR76GnrUO0pTXew3akUxuPMZ5ySYP0v5l2vKhndZ9tfkkXastDLqzlo+DL?= =?us-ascii?Q?D4a1HmilCWJRSkGiX7ZzY88NM0zIWf6iIkUwmhqC0v7fpygLzbPR9RL32L0S?= =?us-ascii?Q?V3NjpniwL51rbEVhZlz9/L+3R3BGbYnvqmngHH1/KVGKQ6KBew1r4/I2KGnp?= =?us-ascii?Q?JXQrAI5yoiedFHedVMwTfoM6q5SE0czIUAcrybCetWh4P0u?= X-Microsoft-Antispam-Message-Info: tpjw6pSZrm2NUhA5ti8jJawkIs6kpa/IScKaO0PGx0pYqwSkBFRVjxxHvoYjnUWpmJ3iLYIscHqZtmoLfjbpy8Bbxv9o4D/+/yt/NsRkWSyOnMVBZk7U+aJB0wNlPO3ZswjrsYR/BGVZVjUpbGPEZi9P2bK9zYNp//+UbS+kBY1y+zYsYfYE49Ajcr3SpZlO X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4376; 6:/GP+h0Z8skcHtm1SI2lHI6VDMrWUGpTDJCnzlvOhF3eEovSjDXcgF+ku99YRmHVp4Kcu1bSLU2dRQtsevdjEHJkDx/6vfNQg9vMJKCRPEz3QydySAFc1mSvmRc/oMzSCBP4MDOIqdDWHjWwCpO0offznyDDuqWMG+HLcQCNqe0q1/ZU37OZxr+5coehxtMLHBbyaxBLGykgu815JQ1nLk/NSdsMekAE13tQ1FeztcqjDXb+0aoMuD3lpoa4BSxi5nQVuhyBCifvy0MODot0nOBq1mtEOhIixHnRjOb4FUzip+ToA6/iJc3fSPc+hRFUgIEgIKvdgOZUMY8C6ioHitYRs/VUIDfrtUafWjUMl8J8Kjkdrfkm5Z2SC02kjVpL2KVWyYas/AWlkGXGs/SUpCju1w0HDg4cKxeRIGd0oLdSLMVmFUeVcOE6fp65kwFRfVzRdj40ivL4OLBZRZqjkaA==; 5:s7mQ6VnIW1ZKsas2ZFJVL8qGLEHQ/dD2SQzw/k6TO8pAx+C9gXjEpAv3hbg/x05Bk6vGUeSil3vnNyu8Kz4UfNMZm3WjYDTTuZYkWx5n4USoVY4N2kJ15DvXJUHDavbRvCjacd/Rjb/EnADNDFhkDtLzStMZgh4uMUmKvIGMe/Q=; 24:zGe5P43HfG73Ex9Is/HNWRLFzxTrsG7c2rRLRLaW1Eb8EU6ZY3DB+5CuM6xt2jY0n8KulZ2zaO7XvsHB4V0LhdNKM3Hd3+3CNal0EHIHj9s= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BYAPR07MB4376; 7:JXnUStheu260FleWrbLOTG2jswTx6plcHLhFIm8jzub9zdB5yJ2+rVlk1mqSoJ7DHHAcDg4i3xy/nLkq2mR17sV+kimDoxg6laqhQ3xeTTp46FEkm2FdxKyq8DphIa28tonyIk8ftXPwJ9MpRKm98vU2fgwQlmlTczBy5qskwvBHg4EVWfBaNhALe6lh9L698k5m5J/dZ9I+yC2ngYwJ/isSX2gVOeEUbQl7f/ecgh73pMM/xM8E+BrBipKC/UXo X-MS-Office365-Filtering-Correlation-Id: 2baa0b55-e6a0-4822-3af4-08d5bb060c43 X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 May 2018 08:21:38.6161 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2baa0b55-e6a0-4822-3af4-08d5bb060c43 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB4376 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20180516_012154_241690_2EB2D9C7 X-CRM114-Status: GOOD ( 15.08 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Szabolcs Nagy , Heiko Carstens , Yury Norov , Philipp Tomsich , Joseph Myers , Steve Ellcey , Prasun Kapoor , Andreas Schwab , Alexander Graf , Andrew Pinski , Bamvor Zhangjian , Geert Uytterhoeven , Dave Martin , Adam Borowski , Manuel Montezelo , James Hogan , Chris Metcalf , Andrew Pinski , Lin Yongting , Alexey Klimov , Mark Brown , Maxim Kuvyrkov , Florian Weimer , Nathan_Lynch , James Morse , Ramana Radhakrishnan , Martin Schwidefsky , "David S . Miller" , Christoph Muellner Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Based on patch of Andrew Pinski. This patch introduces is_a32_compat_task and is_a32_thread so it is easier to say this is a a32 specific thread or a generic compat thread/task. Corresponding functions are located in to avoid mess in headers. Some files include both and , and this is wrong because has already included. It was fixed too. Signed-off-by: Yury Norov Signed-off-by: Andrew Pinski Signed-off-by: Bamvor Jian Zhang --- arch/arm64/include/asm/compat.h | 19 ++-------- arch/arm64/include/asm/elf.h | 10 +++--- arch/arm64/include/asm/ftrace.h | 2 +- arch/arm64/include/asm/is_compat.h | 52 ++++++++++++++++++++++++++++ arch/arm64/include/asm/processor.h | 9 ++--- arch/arm64/include/asm/syscall.h | 2 +- arch/arm64/include/asm/thread_info.h | 2 +- arch/arm64/kernel/hw_breakpoint.c | 8 ++--- arch/arm64/kernel/perf_regs.c | 2 +- arch/arm64/kernel/process.c | 7 ++-- arch/arm64/kernel/ptrace.c | 11 +++--- arch/arm64/kernel/signal.c | 4 +-- arch/arm64/kernel/traps.c | 3 +- arch/arm64/mm/mmap.c | 2 +- 14 files changed, 85 insertions(+), 48 deletions(-) create mode 100644 arch/arm64/include/asm/is_compat.h diff --git a/arch/arm64/include/asm/compat.h b/arch/arm64/include/asm/compat.h index c00c62e1a4a3..412d7c07a3dd 100644 --- a/arch/arm64/include/asm/compat.h +++ b/arch/arm64/include/asm/compat.h @@ -25,6 +25,8 @@ #include #include +#include + #define COMPAT_USER_HZ 100 #ifdef __AARCH64EB__ #define COMPAT_UTS_MACHINE "armv8b\0\0" @@ -234,23 +236,6 @@ struct compat_shmid64_ds { compat_ulong_t __unused5; }; -static inline int is_compat_task(void) -{ - return test_thread_flag(TIF_32BIT); -} - -static inline int is_compat_thread(struct thread_info *thread) -{ - return test_ti_thread_flag(thread, TIF_32BIT); -} - -#else /* !CONFIG_COMPAT */ - -static inline int is_compat_thread(struct thread_info *thread) -{ - return 0; -} - #endif /* CONFIG_COMPAT */ #endif /* __KERNEL__ */ #endif /* __ASM_COMPAT_H */ diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h index fac1c4de7898..b4b10eefc667 100644 --- a/arch/arm64/include/asm/elf.h +++ b/arch/arm64/include/asm/elf.h @@ -16,6 +16,10 @@ #ifndef __ASM_ELF_H #define __ASM_ELF_H +#ifndef __ASSEMBLY__ +#include +#endif + #include /* @@ -156,13 +160,9 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp); /* 1GB of VA */ -#ifdef CONFIG_COMPAT -#define STACK_RND_MASK (test_thread_flag(TIF_32BIT) ? \ +#define STACK_RND_MASK (is_compat_task() ? \ 0x7ff >> (PAGE_SHIFT - 12) : \ 0x3ffff >> (PAGE_SHIFT - 12)) -#else -#define STACK_RND_MASK (0x3ffff >> (PAGE_SHIFT - 12)) -#endif #ifdef __AARCH64EB__ #define COMPAT_ELF_PLATFORM ("v8b") diff --git a/arch/arm64/include/asm/ftrace.h b/arch/arm64/include/asm/ftrace.h index caa955f10e19..0feb28ad10dd 100644 --- a/arch/arm64/include/asm/ftrace.h +++ b/arch/arm64/include/asm/ftrace.h @@ -54,7 +54,7 @@ static inline unsigned long ftrace_call_adjust(unsigned long addr) #define ARCH_TRACE_IGNORE_COMPAT_SYSCALLS static inline bool arch_trace_is_compat_syscall(struct pt_regs *regs) { - return is_compat_task(); + return is_a32_compat_task(); } #endif /* ifndef __ASSEMBLY__ */ diff --git a/arch/arm64/include/asm/is_compat.h b/arch/arm64/include/asm/is_compat.h new file mode 100644 index 000000000000..19868588fbef --- /dev/null +++ b/arch/arm64/include/asm/is_compat.h @@ -0,0 +1,52 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ + +#ifndef __ASM_IS_COMPAT_H +#define __ASM_IS_COMPAT_H +#ifndef __ASSEMBLY__ + +#include + +#ifdef CONFIG_AARCH32_EL0 + +static inline int is_a32_compat_task(void) +{ + return test_thread_flag(TIF_32BIT); +} + +static inline int is_a32_compat_thread(struct thread_info *thread) +{ + return test_ti_thread_flag(thread, TIF_32BIT); +} + +#else + +static inline int is_a32_compat_task(void) + +{ + return 0; +} + +static inline int is_a32_compat_thread(struct thread_info *thread) +{ + return 0; +} + +#endif /* CONFIG_AARCH32_EL0 */ + +#ifdef CONFIG_COMPAT + +static inline int is_compat_task(void) +{ + return is_a32_compat_task(); +} + +#endif /* CONFIG_COMPAT */ + +static inline int is_compat_thread(struct thread_info *thread) +{ + return is_a32_compat_thread(thread); +} + + +#endif /* !__ASSEMBLY__ */ +#endif /* __ASM_IS_COMPAT_H */ diff --git a/arch/arm64/include/asm/processor.h b/arch/arm64/include/asm/processor.h index 79cbc385f52a..78f9e71ad6fc 100644 --- a/arch/arm64/include/asm/processor.h +++ b/arch/arm64/include/asm/processor.h @@ -37,6 +37,7 @@ #include #include +#include #include #include #include @@ -50,9 +51,9 @@ */ #ifdef CONFIG_COMPAT #define TASK_SIZE_32 UL(0x100000000) -#define TASK_SIZE (test_thread_flag(TIF_32BIT) ? \ +#define TASK_SIZE (is_compat_task() ? \ TASK_SIZE_32 : TASK_SIZE_64) -#define TASK_SIZE_OF(tsk) (test_tsk_thread_flag(tsk, TIF_32BIT) ? \ +#define TASK_SIZE_OF(tsk) (is_compat_thread(tsk) ? \ TASK_SIZE_32 : TASK_SIZE_64) #else #define TASK_SIZE TASK_SIZE_64 @@ -63,7 +64,7 @@ #define STACK_TOP_MAX TASK_SIZE_64 #ifdef CONFIG_COMPAT #define AARCH32_VECTORS_BASE 0xffff0000 -#define STACK_TOP (test_thread_flag(TIF_32BIT) ? \ +#define STACK_TOP (is_compat_task() ? \ AARCH32_VECTORS_BASE : STACK_TOP_MAX) #else #define STACK_TOP STACK_TOP_MAX @@ -130,7 +131,7 @@ static inline void arch_thread_struct_whitelist(unsigned long *offset, #define task_user_tls(t) \ ({ \ unsigned long *__tls; \ - if (is_compat_thread(task_thread_info(t))) \ + if (is_a32_compat_thread(task_thread_info(t))) \ __tls = &(t)->thread.tp2_value; \ else \ __tls = &(t)->thread.tp_value; \ diff --git a/arch/arm64/include/asm/syscall.h b/arch/arm64/include/asm/syscall.h index 709a574468f0..ce09641f888d 100644 --- a/arch/arm64/include/asm/syscall.h +++ b/arch/arm64/include/asm/syscall.h @@ -113,7 +113,7 @@ static inline void syscall_set_arguments(struct task_struct *task, */ static inline int syscall_get_arch(void) { - if (is_compat_task()) + if (is_a32_compat_task()) return AUDIT_ARCH_ARM; return AUDIT_ARCH_AARCH64; diff --git a/arch/arm64/include/asm/thread_info.h b/arch/arm64/include/asm/thread_info.h index 740aa03c5f0d..6d2d58daa9d7 100644 --- a/arch/arm64/include/asm/thread_info.h +++ b/arch/arm64/include/asm/thread_info.h @@ -91,7 +91,7 @@ void arch_release_task_struct(struct task_struct *tsk); #define TIF_FREEZE 19 #define TIF_RESTORE_SIGMASK 20 #define TIF_SINGLESTEP 21 -#define TIF_32BIT 22 /* 32bit process */ +#define TIF_32BIT 22 /* AARCH32 process */ #define TIF_SVE 23 /* Scalable Vector Extension in use */ #define TIF_SVE_VL_INHERIT 24 /* Inherit sve_vl_onexec across exec */ diff --git a/arch/arm64/kernel/hw_breakpoint.c b/arch/arm64/kernel/hw_breakpoint.c index 74bb56f656ef..55c09285f444 100644 --- a/arch/arm64/kernel/hw_breakpoint.c +++ b/arch/arm64/kernel/hw_breakpoint.c @@ -169,7 +169,7 @@ enum hw_breakpoint_ops { HW_BREAKPOINT_RESTORE }; -static int is_compat_bp(struct perf_event *bp) +static int is_a32_compat_bp(struct perf_event *bp) { struct task_struct *tsk = bp->hw.target; @@ -180,7 +180,7 @@ static int is_compat_bp(struct perf_event *bp) * deprecated behaviour if we use unaligned watchpoints in * AArch64 state. */ - return tsk && is_compat_thread(task_thread_info(tsk)); + return tsk && is_a32_compat_thread(task_thread_info(tsk)); } /** @@ -480,7 +480,7 @@ static int arch_build_bp_info(struct perf_event *bp) * Watchpoints can be of length 1, 2, 4 or 8 bytes. */ if (info->ctrl.type == ARM_BREAKPOINT_EXECUTE) { - if (is_compat_bp(bp)) { + if (is_a32_compat_bp(bp)) { if (info->ctrl.len != ARM_BREAKPOINT_LEN_2 && info->ctrl.len != ARM_BREAKPOINT_LEN_4) return -EINVAL; @@ -537,7 +537,7 @@ int arch_validate_hwbkpt_settings(struct perf_event *bp) * AArch32 tasks expect some simple alignment fixups, so emulate * that here. */ - if (is_compat_bp(bp)) { + if (is_a32_compat_bp(bp)) { if (info->ctrl.len == ARM_BREAKPOINT_LEN_8) alignment_mask = 0x7; else diff --git a/arch/arm64/kernel/perf_regs.c b/arch/arm64/kernel/perf_regs.c index 513e279b12d3..6efbbd171670 100644 --- a/arch/arm64/kernel/perf_regs.c +++ b/arch/arm64/kernel/perf_regs.c @@ -47,7 +47,7 @@ int perf_reg_validate(u64 mask) u64 perf_reg_abi(struct task_struct *task) { - if (is_compat_thread(task_thread_info(task))) + if (is_a32_compat_thread(task_thread_info(task))) return PERF_SAMPLE_REGS_ABI_32; else return PERF_SAMPLE_REGS_ABI_64; diff --git a/arch/arm64/kernel/process.c b/arch/arm64/kernel/process.c index 105f79d126ee..50b1249844b7 100644 --- a/arch/arm64/kernel/process.c +++ b/arch/arm64/kernel/process.c @@ -51,7 +51,6 @@ #include #include -#include #include #include #include @@ -256,7 +255,7 @@ static void tls_thread_flush(void) { write_sysreg(0, tpidr_el0); - if (is_compat_task()) { + if (is_a32_compat_task()) { current->thread.tp_value = 0; /* @@ -340,7 +339,7 @@ int copy_thread(unsigned long clone_flags, unsigned long stack_start, *task_user_tls(p) = read_sysreg(tpidr_el0); if (stack_start) { - if (is_compat_thread(task_thread_info(p))) + if (is_a32_compat_thread(task_thread_info(p))) childregs->compat_sp = stack_start; else childregs->sp = stack_start; @@ -378,7 +377,7 @@ static void tls_thread_switch(struct task_struct *next) { tls_preserve_current_state(); - if (is_compat_thread(task_thread_info(next))) + if (is_a32_compat_thread(task_thread_info(next))) write_sysreg(next->thread.tp_value, tpidrro_el0); else if (!arm64_kernel_unmapped_at_el0()) write_sysreg(0, tpidrro_el0); diff --git a/arch/arm64/kernel/ptrace.c b/arch/arm64/kernel/ptrace.c index 04e9b7973b28..4d0a541d049b 100644 --- a/arch/arm64/kernel/ptrace.c +++ b/arch/arm64/kernel/ptrace.c @@ -40,7 +40,6 @@ #include #include -#include #include #include #include @@ -189,7 +188,7 @@ static void ptrace_hbptriggered(struct perf_event *bp, info.si_addr = (void __user *)(bkpt->trigger); #ifdef CONFIG_AARCH32_EL0 - if (is_compat_task()) { + if (is_a32_compat_task()) { int si_errno = 0; int i; @@ -1592,9 +1591,9 @@ const struct user_regset_view *task_user_regset_view(struct task_struct *task) * 32-bit children use an extended user_aarch32_ptrace_view to allow * access to the TLS register. */ - if (is_compat_task()) + if (is_a32_compat_task()) return &user_aarch32_view; - else if (is_compat_thread(task_thread_info(task))) + else if (is_a32_compat_thread(task_thread_info(task))) return &user_aarch32_ptrace_view; #endif return &user_aarch64_view; @@ -1621,7 +1620,7 @@ static void tracehook_report_syscall(struct pt_regs *regs, * A scratch register (ip(r12) on AArch32, x7 on AArch64) is * used to denote syscall entry/exit: */ - regno = (is_compat_task() ? 12 : 7); + regno = (is_a32_compat_task() ? 12 : 7); saved_reg = regs->regs[regno]; regs->regs[regno] = dir; @@ -1732,7 +1731,7 @@ int valid_user_regs(struct user_pt_regs *regs, struct task_struct *task) if (!test_tsk_thread_flag(task, TIF_SINGLESTEP)) regs->pstate &= ~DBG_SPSR_SS; - if (is_compat_thread(task_thread_info(task))) + if (is_a32_compat_thread(task_thread_info(task))) return valid_compat_regs(regs); else return valid_native_regs(regs); diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c index fb7c1a510ed4..0a829f6f1832 100644 --- a/arch/arm64/kernel/signal.c +++ b/arch/arm64/kernel/signal.c @@ -778,7 +778,7 @@ static int setup_rt_frame(int usig, struct ksignal *ksig, sigset_t *set, static void setup_restart_syscall(struct pt_regs *regs) { - if (is_compat_task()) + if (is_a32_compat_task()) a32_setup_restart_syscall(regs); else regs->regs[8] = __NR_restart_syscall; @@ -797,7 +797,7 @@ static void handle_signal(struct ksignal *ksig, struct pt_regs *regs) /* * Set up the stack frame */ - if (is_compat_task()) { + if (is_a32_compat_task()) { if (ksig->ka.sa.sa_flags & SA_SIGINFO) ret = a32_setup_rt_frame(usig, ksig, oldset, regs); else diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index d2ebfc2f4fbc..0d6eda51eca1 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c @@ -18,6 +18,7 @@ */ #include +#include #include #include #include @@ -519,7 +520,7 @@ asmlinkage long do_ni_syscall(struct pt_regs *regs) { #ifdef CONFIG_AARCH32_EL0 long ret; - if (is_compat_task()) { + if (is_a32_compat_task()) { ret = a32_arm_syscall(regs); if (ret != -ENOSYS) return ret; diff --git a/arch/arm64/mm/mmap.c b/arch/arm64/mm/mmap.c index decccffb03ca..65be0d308d75 100644 --- a/arch/arm64/mm/mmap.c +++ b/arch/arm64/mm/mmap.c @@ -54,7 +54,7 @@ unsigned long arch_mmap_rnd(void) unsigned long rnd; #ifdef CONFIG_COMPAT - if (test_thread_flag(TIF_32BIT)) + if (is_compat_task()) rnd = get_random_long() & ((1UL << mmap_rnd_compat_bits) - 1); else #endif