From patchwork Thu Mar 18 17:07:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 12148719 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.4 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B3068C43381 for ; Thu, 18 Mar 2021 17:09:44 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 57F0F64EF2 for ; Thu, 18 Mar 2021 17:09:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 57F0F64EF2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ago3Wvq4Di2K/xh3Fuiqr89Adrf6EoQQ3+nU7bRZDfQ=; b=JSMelvdX8Gp/rk3n87ZUC8QXc D8spvRulvsYOKxbmMYIwBt7V7QkHqisQnuEemfzOHObfjFOSW/niAtyNd50AHqsU3Ap2KybOMjS/L eS64aF4wZJiHXA82nkvkodm50/9RDplz77ShWPmcWvOoJ/Klv7L+xbN+3NOCf8qd2ZdyzoDsXxEk1 A47/66Mcum9kXIHNVRnT72SrNgQ4ZD2bQNn+LcDfZfcEe40BTe05a1xp/eM0o3U4mtgIoRK5zE7fy 18E67kfh11u8k03m2NQLjvgCriSg1zEsgVCgec6+19YSYz6dvF9WMPzevMXI9Do/4mremKFIoXdzA jBtiHuclg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lMw7t-005enH-Qu; Thu, 18 Mar 2021 17:08:01 +0000 Received: from mail.kernel.org ([198.145.29.99]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lMw7h-005eke-KW for linux-arm-kernel@lists.infradead.org; Thu, 18 Mar 2021 17:07:51 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 0BAB364F1D; Thu, 18 Mar 2021 17:07:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616087268; bh=kVOuaHxTe+sFm9TQERpI7KcTyGTf79VAP4V6yGelGIs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ZYn6EKQirpyXR5EfsZp5ANocCMf2ccwMTkezoiy8iFNhzSZ1xvem48o2g2rbh2TCZ BCj2bqW7b/YuXDhOVAi1QZsOeaxj4GBJARtr0afmiw87+tsg+CH6BIUbaik//hUFyZ H8xNZz6sRltKDOIzbULZbSy9zP9dtAkMThmFf1LNBTV7qWG/7AyLhMIlmvqcMbl9wu dwydf1As521m3hCNzN0g6QPycv8zU/yYiiRt5tzQa2vmHkfzQCOriQkMx+aaiAE424 LQ1eMIeJCjb4kP9paRAgd8QkY63u6HNHHOzByYLSY+D8u4cVog7BdLJAz3wMxzwxeF 6Rl8iZI4mEJpQ== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: kernel-team@android.com, Will Deacon , Catalin Marinas , Mark Rutland , Marc Zyngier , Vincenzo Frascino , Russell King Subject: [PATCH 1/5] arm64: vdso: Use GFP_KERNEL for allocating compat vdso and signal pages Date: Thu, 18 Mar 2021 17:07:34 +0000 Message-Id: <20210318170738.7756-2-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210318170738.7756-1-will@kernel.org> References: <20210318170738.7756-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210318_170749_914492_EAB9E309 X-CRM114-Status: GOOD ( 11.29 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org There's no need to allocate the compat vDSO and signal pages using GFP_ATOMIC allocations, so use GFP_KERNEL instead. Signed-off-by: Will Deacon Reviewed-by: Vincenzo Frascino --- arch/arm64/kernel/vdso.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c index cee5d04ea9ad..2d057a4dc787 100644 --- a/arch/arm64/kernel/vdso.c +++ b/arch/arm64/kernel/vdso.c @@ -299,7 +299,7 @@ static int aarch32_alloc_kuser_vdso_page(void) if (!IS_ENABLED(CONFIG_KUSER_HELPERS)) return 0; - vdso_page = get_zeroed_page(GFP_ATOMIC); + vdso_page = get_zeroed_page(GFP_KERNEL); if (!vdso_page) return -ENOMEM; @@ -316,7 +316,7 @@ static int aarch32_alloc_sigpage(void) int sigret_sz = __aarch32_sigret_code_end - __aarch32_sigret_code_start; unsigned long sigpage; - sigpage = get_zeroed_page(GFP_ATOMIC); + sigpage = get_zeroed_page(GFP_KERNEL); if (!sigpage) return -ENOMEM; From patchwork Thu Mar 18 17:07:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 12148715 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88B84C433DB for ; Thu, 18 Mar 2021 17:09:42 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3151764F1F for ; Thu, 18 Mar 2021 17:09:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3151764F1F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=XuHYDXkATw7c7YtKfzpVP/vFclpS6StlTkVEfwtg6OE=; b=mlUwhXIXw9cjcRM8DfY4lTE4R 5TTv5NJYZFAA2M14HrGmwlYI1qisrKnC0qPF+aSoQkDflxNd/Ns6llneVydZ7EG7smZYOZUx2bMlY qeZiWOfhBoiZfB0cWiv6feyvXlzChCoa5koyqhyQ5jCryL/6zcYFKWDdH+nBc2KR/C0Nr/SuiAqKz aBYYxMb1Xr9UvF1zqnkKThMVt5saDbPfQK/a5tcDjDz4nujizAf5HPlxlK7xrCWy0t2h2OeHf39BU +27JXbg/FzOk1KEbFgPybvGpRvAfsrF+QZlv/BbRSrCq4ehSMheJfAzcjNvKiOB0U+T2Tq/SxcRUf e4POolQrw==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lMw80-005ene-4B; Thu, 18 Mar 2021 17:08:08 +0000 Received: from mail.kernel.org ([198.145.29.99]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lMw7j-005el5-Ib for linux-arm-kernel@lists.infradead.org; Thu, 18 Mar 2021 17:07:53 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id E134B64E38; Thu, 18 Mar 2021 17:07:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616087270; bh=wFcRz9wEe2tvxHM8YxucX09UR0zIPp0Lj/R17kViygI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pXZNXlmPpHiLIq262/ZpSRmenM/6y1Oj9RqD4v0DmbWIo1Pxs4nI+JAi+TZXXg15H pRcjcquHyZoZRIVlSDtK0urA9GvI+SN/U7I04yAQOIT8qf3LtDf+eo6bcWAMP2/gKf uMvOCI1D5OhgfMteVA+CvGRPztmyXIbToANpBaEeOZ3Tcet05KBqdMX/nJW1ONSGS/ IAe7kZU2FkZeZKaz6asv13kTQO8j9M2aZ2CgRQJ7PlPbty1NaH4cjCK147OvlEr5wf 1frFVA1gLCS8AGqBgO2j09rEk7V4vSnJQ3Ps5xT/uzFzg+QjnVixQMLyTDwlANRILc Q5UDx5/DrjHMA== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: kernel-team@android.com, Will Deacon , Catalin Marinas , Mark Rutland , Marc Zyngier , Vincenzo Frascino , Russell King Subject: [PATCH 2/5] arm64: vdso: Remove redundant calls to flush_dcache_page() Date: Thu, 18 Mar 2021 17:07:35 +0000 Message-Id: <20210318170738.7756-3-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210318170738.7756-1-will@kernel.org> References: <20210318170738.7756-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210318_170751_891663_5975522C X-CRM114-Status: GOOD ( 10.75 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org flush_dcache_page() ensures that the 'PG_dcache_clean' flag for its 'page' argument is clear so that cache maintenance will be performed if the page is mapped into userspace with execute permissions. Newly allocated pages have this flag clear, so there is no need to call flush_dcache_page() for the compat vdso or signal pages. Remove the redundant calls. Signed-off-by: Will Deacon Reviewed-by: Vincenzo Frascino --- arch/arm64/kernel/vdso.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c index 2d057a4dc787..421411981dc3 100644 --- a/arch/arm64/kernel/vdso.c +++ b/arch/arm64/kernel/vdso.c @@ -306,7 +306,6 @@ static int aarch32_alloc_kuser_vdso_page(void) memcpy((void *)(vdso_page + 0x1000 - kuser_sz), __kuser_helper_start, kuser_sz); aarch32_vectors_page = virt_to_page(vdso_page); - flush_dcache_page(aarch32_vectors_page); return 0; } @@ -322,7 +321,6 @@ static int aarch32_alloc_sigpage(void) memcpy((void *)sigpage, __aarch32_sigret_code_start, sigret_sz); aarch32_sig_page = virt_to_page(sigpage); - flush_dcache_page(aarch32_sig_page); return 0; } From patchwork Thu Mar 18 17:07:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 12148717 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4E894C433E6 for ; Thu, 18 Mar 2021 17:09:43 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DC1FC64EF2 for ; Thu, 18 Mar 2021 17:09:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DC1FC64EF2 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ftLofCj6qsP+N/iT86AXSWbdC+ZNJwbfEC5nIJETGx8=; b=RrqordNdbaummhis7JnWMBif8 bowtd5KvDgxNQzhZhvqf6sDWdYWUNiZEPPng7snM+mKXCP1cfKhFbAZe8pomyirEtyQge7JEKW+Qt NxeUiA0yEJr4GwVFvjNGJjUVW5SuNYs5ro5SAXLRpxht+7O0Vf7pYa7n7DQFMBuwHM7/jBlWWn64W p9QCeWYm88sfrrdLfiRwiXnlw6PPUIvBX5R46j6wIurnAZLuUm/BqFB4Olce9SdXVjcux6W+tpf2f P976JSe7XgGibQLz0we2DfQHzLdWpGP0evmHatmLj0O4RFXLcgbzpjl1YpRzPB3tAty6htTsI4soo SFj+iSJkg==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lMw86-005eoC-U9; Thu, 18 Mar 2021 17:08:15 +0000 Received: from mail.kernel.org ([198.145.29.99]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lMw7l-005em1-H5 for linux-arm-kernel@lists.infradead.org; Thu, 18 Mar 2021 17:07:56 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id C169764F65; Thu, 18 Mar 2021 17:07:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616087272; bh=QV+ylgGMyvFNN4XLoOA3cBhI3xsb9WXSQI9SpW6MJ7g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=U94FTmJf0sroIOfO6WKT5k7/9nzy5t0ycJY08KZOCmDoGuwmHR2l1D4wKMWjKIFEV WV2RntM/47Dpfb6n8NyAyLcbR07lE6dMpHPPcCo7WWy53QqBJGwYg/+/W4ed/SCk87 A5YmO0jTZd5RjfYKqz3eAQiP/+N37EBWRjmbxONWROu3XXIYthUYxnbls9KiNZjNWl BpF2TpI3O1rtIWH6hVFAPG9cRV+Y5XpPy9vAWhxC2plUBQUtpdLJMDyqD0j2m1QccV Y4sGyabJHSNW4ldedrLYpGz2uBUYeYjXtTAnO/+OmhMl4pIpJzWNvua/vtGqtvYRx4 LFADBHCa5116A== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: kernel-team@android.com, Will Deacon , Catalin Marinas , Mark Rutland , Marc Zyngier , Vincenzo Frascino , Russell King Subject: [PATCH 3/5] arm64: compat: Allow signal page to be remapped Date: Thu, 18 Mar 2021 17:07:36 +0000 Message-Id: <20210318170738.7756-4-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210318170738.7756-1-will@kernel.org> References: <20210318170738.7756-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210318_170754_617261_5EA597C3 X-CRM114-Status: GOOD ( 10.52 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org For compatability with 32-bit Arm, allow the compat signal page to be remapped via mremap(). Signed-off-by: Will Deacon Reviewed-by: Vincenzo Frascino --- arch/arm64/kernel/vdso.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c index 421411981dc3..16bf0b46fb70 100644 --- a/arch/arm64/kernel/vdso.c +++ b/arch/arm64/kernel/vdso.c @@ -271,6 +271,14 @@ enum aarch32_map { static struct page *aarch32_vectors_page __ro_after_init; static struct page *aarch32_sig_page __ro_after_init; +static int aarch32_sigpage_mremap(const struct vm_special_mapping *sm, + struct vm_area_struct *new_vma) +{ + current->mm->context.sigpage = (void *)new_vma->vm_start; + + return 0; +} + static struct vm_special_mapping aarch32_vdso_maps[] = { [AA32_MAP_VECTORS] = { .name = "[vectors]", /* ABI */ @@ -279,6 +287,7 @@ static struct vm_special_mapping aarch32_vdso_maps[] = { [AA32_MAP_SIGPAGE] = { .name = "[sigpage]", /* ABI */ .pages = &aarch32_sig_page, + .mremap = aarch32_sigpage_mremap, }, [AA32_MAP_VVAR] = { .name = "[vvar]", From patchwork Thu Mar 18 17:07:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 12148723 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4E75C433E0 for ; Thu, 18 Mar 2021 17:09:46 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3E2A464F1F for ; Thu, 18 Mar 2021 17:09:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3E2A464F1F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=VTjW18HGk5id0pQOZ6m2YLg72Clg5PXxPCIKIu0bRbY=; b=b7J9j66jZRa5e4WfPXP2CgaWl vIxdZXXBLEZn1foS0EiQdn/BPWbDbZR1pXSEnwZL1FxkriMTfXtokw+QkkIazG0BxUE+SCnJ3U25J KzAlnS8QDWeU2QX99j40YLTAGKdErDiUqdrGSICamrSQpFQQcAc3OjmzDvOYYs4+IIRmA3sXKS5r2 SiEH9NKGyKl5hTNYnyf+0VjXMdYFBK0RpVE6UfagAVR4uFvAz/9MCNGBGt1EEdKb2fNXSRJBIH7r1 NwMPEVC7YIas2tdolnjsJDh7QNrGUGvoKDzBtSl64+UovwNfor8aJdIqFGxKZGnta6ifJfu/PDrhf +x+2QL0XQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lMw8D-005eop-3C; Thu, 18 Mar 2021 17:08:21 +0000 Received: from mail.kernel.org ([198.145.29.99]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lMw7n-005em5-8N for linux-arm-kernel@lists.infradead.org; Thu, 18 Mar 2021 17:07:57 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id A1DE464F3B; Thu, 18 Mar 2021 17:07:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616087274; bh=JmyKBgbj5+tDKwZoejlEI4HSvnyEkw5LKk+u2Tj61fI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jmsnc2dtZXHjNn5R0O1G1AjTJrfpsJPkrb5dusjSozFLiXMNe7TsYXxLst1MQoHT6 QC5bQ515jAwJT2GwUnUuxP0dZ8BjMoIhbeVdQB0uVFnlgQ5JMHtGkziyktTQjdsyFC qKVTnz3FCrYk3gaMq7MpZtVzPcrM5rfXEalFWxzxPFezuXNNL6yZoyLlMUh/b85Ohr DJpGmg5CQNyaMHjwyJefnELFW93lhbs3S0xm0uDoWyaBR18lg+3519z19LLfIlPFV2 MZZP61G2V4vpjNWyQ8GZMnaIYPUaMmANylYIOhO5kTCOPWJshatJZcy032DMJ+oTZ+ FJZ0WEpJe/Abw== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: kernel-team@android.com, Will Deacon , Catalin Marinas , Mark Rutland , Marc Zyngier , Vincenzo Frascino , Russell King Subject: [PATCH 4/5] arm64: vdso: Avoid ISB after reading from cntvct_el0 Date: Thu, 18 Mar 2021 17:07:37 +0000 Message-Id: <20210318170738.7756-5-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210318170738.7756-1-will@kernel.org> References: <20210318170738.7756-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210318_170755_664887_7A0A19C9 X-CRM114-Status: GOOD ( 12.27 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org We can avoid the expensive ISB instruction after reading the counter in the vDSO gettime functions by creating a fake address hazard against a dummy stack read, just like we do inside the kernel. Signed-off-by: Will Deacon Reviewed-by: Vincenzo Frascino --- arch/arm64/include/asm/arch_timer.h | 21 --------------------- arch/arm64/include/asm/barrier.h | 19 +++++++++++++++++++ arch/arm64/include/asm/vdso/gettimeofday.h | 6 +----- 3 files changed, 20 insertions(+), 26 deletions(-) diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h index 9f0ec21d6327..88d20f04c64a 100644 --- a/arch/arm64/include/asm/arch_timer.h +++ b/arch/arm64/include/asm/arch_timer.h @@ -165,25 +165,6 @@ static inline void arch_timer_set_cntkctl(u32 cntkctl) isb(); } -/* - * Ensure that reads of the counter are treated the same as memory reads - * for the purposes of ordering by subsequent memory barriers. - * - * This insanity brought to you by speculative system register reads, - * out-of-order memory accesses, sequence locks and Thomas Gleixner. - * - * http://lists.infradead.org/pipermail/linux-arm-kernel/2019-February/631195.html - */ -#define arch_counter_enforce_ordering(val) do { \ - u64 tmp, _val = (val); \ - \ - asm volatile( \ - " eor %0, %1, %1\n" \ - " add %0, sp, %0\n" \ - " ldr xzr, [%0]" \ - : "=r" (tmp) : "r" (_val)); \ -} while (0) - static __always_inline u64 __arch_counter_get_cntpct_stable(void) { u64 cnt; @@ -224,8 +205,6 @@ static __always_inline u64 __arch_counter_get_cntvct(void) return cnt; } -#undef arch_counter_enforce_ordering - static inline int arch_timer_arch_init(void) { return 0; diff --git a/arch/arm64/include/asm/barrier.h b/arch/arm64/include/asm/barrier.h index c3009b0e5239..37d891af8ea5 100644 --- a/arch/arm64/include/asm/barrier.h +++ b/arch/arm64/include/asm/barrier.h @@ -70,6 +70,25 @@ static inline unsigned long array_index_mask_nospec(unsigned long idx, return mask; } +/* + * Ensure that reads of the counter are treated the same as memory reads + * for the purposes of ordering by subsequent memory barriers. + * + * This insanity brought to you by speculative system register reads, + * out-of-order memory accesses, sequence locks and Thomas Gleixner. + * + * http://lists.infradead.org/pipermail/linux-arm-kernel/2019-February/631195.html + */ +#define arch_counter_enforce_ordering(val) do { \ + u64 tmp, _val = (val); \ + \ + asm volatile( \ + " eor %0, %1, %1\n" \ + " add %0, sp, %0\n" \ + " ldr xzr, [%0]" \ + : "=r" (tmp) : "r" (_val)); \ +} while (0) + #define __smp_mb() dmb(ish) #define __smp_rmb() dmb(ishld) #define __smp_wmb() dmb(ishst) diff --git a/arch/arm64/include/asm/vdso/gettimeofday.h b/arch/arm64/include/asm/vdso/gettimeofday.h index 631ab1281633..4b4c0dac0e14 100644 --- a/arch/arm64/include/asm/vdso/gettimeofday.h +++ b/arch/arm64/include/asm/vdso/gettimeofday.h @@ -83,11 +83,7 @@ static __always_inline u64 __arch_get_hw_counter(s32 clock_mode, */ isb(); asm volatile("mrs %0, cntvct_el0" : "=r" (res) :: "memory"); - /* - * This isb() is required to prevent that the seq lock is - * speculated.# - */ - isb(); + arch_counter_enforce_ordering(res); return res; } From patchwork Thu Mar 18 17:07:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Will Deacon X-Patchwork-Id: 12148725 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-17.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A0162C433E0 for ; Thu, 18 Mar 2021 17:09:50 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 388F464F1F for ; Thu, 18 Mar 2021 17:09:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 388F464F1F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=fjXy/7ZhfPf8PpNIXvNapDUE/n9NG2ljz+xSXLwUCiE=; b=IY+DYwgtyXpHjO0KRhwAHvdAX YEXQvf7KYfmzaWG+w15KZkkrebaHtiiDZXuyweY12sNoERZHlPfS8W00+IpJkfplC/dEry0vIvyHA ImN2Nztw1CDqd2tm0D0ym3wv/799g9rjhIYWV7F8Il/vW1Ze3zNNGq7EehBeowNiYmp9wwiKPyWds SbPk2q5CGJFj4QMPEBrSImLSR8VZtIoxNzRpy1iK2fZIATmiBJv6k1DftSy0NFOqAvDQ3Jd592Dwz mf8l3ukuqk6TWsr9NivxyxGr+RfkyBKcJPjWNxX4a9M3sWb+dAbStgARqmtzLVbJcQ+tU4NzEf57T 3dJ55IlVw==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lMw8J-005epH-3l; Thu, 18 Mar 2021 17:08:27 +0000 Received: from mail.kernel.org ([198.145.29.99]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lMw7p-005emi-5X for linux-arm-kernel@lists.infradead.org; Thu, 18 Mar 2021 17:07:58 +0000 Received: by mail.kernel.org (Postfix) with ESMTPSA id 8568064F1D; Thu, 18 Mar 2021 17:07:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1616087276; bh=KDmaDhL5z+l/yuRp06tDBxknJSdQk5//PBlGbYHsD8I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uXamTfM1e1nXPC+EzNOea+HK9mDtgfVqeGlFyYIl4TL1sfWVrQx2qBCPNEqZ3GkQW jLUYyhqAx8rhBB8uNrEUfW6O4qLHxSRvKP8oH9pqkJyBiSBMqqdhwfQq9uWK93r8tN PTDQg2d/C0z5NjTcT4U31thho1UivO8Mle/IWgqSRniIlTZ0TxZ/ECt13TLG6wbvRs kdQfAQi+1DymaDKwBdDe/vziK0QpiplI4HQv1M8Z89gAJjs+n8bc4OsmUDwt0XLkOm IyVmNf/jGcfJAHOJiD759cKRQaJaC7euHW2RrXGpHGAwXRQ9uuZ46ruTtWVgeDt/IU DHHFeXK407FNQ== From: Will Deacon To: linux-arm-kernel@lists.infradead.org Cc: kernel-team@android.com, Will Deacon , Catalin Marinas , Mark Rutland , Marc Zyngier , Vincenzo Frascino , Russell King Subject: [PATCH 5/5] arm64: compat: Poison the compat sigpage Date: Thu, 18 Mar 2021 17:07:38 +0000 Message-Id: <20210318170738.7756-6-will@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210318170738.7756-1-will@kernel.org> References: <20210318170738.7756-1-will@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210318_170757_420230_89E63282 X-CRM114-Status: UNSURE ( 9.83 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Commit 9c698bff66ab ("ARM: ensure the signal page contains defined contents") poisoned the unused portions of the signal page for 32-bit Arm. Implement the same poisoning for the compat signal page on arm64 rather than using __GFP_ZERO. Signed-off-by: Will Deacon Reviewed-by: Vincenzo Frascino --- arch/arm64/kernel/vdso.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c index 16bf0b46fb70..159b72a646ab 100644 --- a/arch/arm64/kernel/vdso.c +++ b/arch/arm64/kernel/vdso.c @@ -318,17 +318,20 @@ static int aarch32_alloc_kuser_vdso_page(void) return 0; } +#define COMPAT_SIGPAGE_POISON_WORD 0xe7fddef1 static int aarch32_alloc_sigpage(void) { extern char __aarch32_sigret_code_start[], __aarch32_sigret_code_end[]; int sigret_sz = __aarch32_sigret_code_end - __aarch32_sigret_code_start; - unsigned long sigpage; + __le32 poison = cpu_to_le32(COMPAT_SIGPAGE_POISON_WORD); + void *sigpage; - sigpage = get_zeroed_page(GFP_KERNEL); + sigpage = (void *)__get_free_page(GFP_KERNEL); if (!sigpage) return -ENOMEM; - memcpy((void *)sigpage, __aarch32_sigret_code_start, sigret_sz); + memset32(sigpage, (__force u32)poison, PAGE_SIZE / sizeof(poison)); + memcpy(sigpage, __aarch32_sigret_code_start, sigret_sz); aarch32_sig_page = virt_to_page(sigpage); return 0; }