From mboxrd@z Thu Jan 1 00:00:00 1970 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=-13.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable 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 D1212C2D0A3 for ; Mon, 26 Oct 2020 16:05:33 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 70C0122409 for ; Mon, 26 Oct 2020 16:05:33 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="zluqvyJL"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="N4mA1qyL" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 70C0122409 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=merlin.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=dZT9AWy3jIEQobjBLfOmDza+DL7Yb6i8sDR6vWZObhg=; b=zluqvyJLzsYEIya1KAnSUeTiT 2rgGFJs+RXDWqZ/tqL0MRBIscHwPEJg40ObccpjsE6+7cdPyabj+YKrDXHmIFYMQBOO1vnCZ4jGg1 RJu3ZFblsHeTdE2TZpOLBVHq7k8vzbcCARYJd/ZfJTfjr8wVWixY18v//Ek/6+zsB3BCk50G8VwBu ppDeUNeKy0+JX9HZch3DmOICKgcfxwQMdXRJ7dna1Helyvgz8N3nN18jlEwcHdowkv62J+hX0ByIW /ZaL/2A5ggpMVcP3RNowECeyRkV4CVBh4qjOgG0RJs6D3EFrv2pb3rq2HK7Axwu4q3KVRqXDL9BeQ 3oPsg329w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX4yZ-000339-BV; Mon, 26 Oct 2020 16:04:03 +0000 Received: from mail.kernel.org ([198.145.29.99]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX4yV-00032A-OD for linux-arm-kernel@lists.infradead.org; Mon, 26 Oct 2020 16:04:00 +0000 Received: from localhost.localdomain (unknown [192.30.34.233]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5B4DB22404; Mon, 26 Oct 2020 16:03:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1603728239; bh=PbuVK46Su8Y2IN8OSWTg9G6iLuVj+1s0ldPwLWqHqC4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=N4mA1qyL810vk+6qn3OWEQqNxmv2+CDM1wcp5tLhXQSCwvNogsL1S7/px7MskpMz4 ycJVviQwB0FG48wBDWu+y0918F+gHjCydFHtAwp3u46pdn1zXR8AaqJQcNOVsvIZir WLOADKGhG2WD/Z+IU0SIgXw/vpE/8RLVUNSK/rSA= From: Arnd Bergmann To: Catalin Marinas , Will Deacon Subject: [PATCH 2/4] arm64: hide more compat_vdso code Date: Mon, 26 Oct 2020 17:03:29 +0100 Message-Id: <20201026160342.3705327-2-arnd@kernel.org> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201026160342.3705327-1-arnd@kernel.org> References: <20201026160342.3705327-1-arnd@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201026_120400_054511_B0A08864 X-CRM114-Status: GOOD ( 19.60 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Mark Rutland , Michel Lespinasse , Arnd Bergmann , Mark Brown , linux-kernel@vger.kernel.org, Andrei Vagin , Vincenzo Frascino , Ard Biesheuvel , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Arnd Bergmann When CONFIG_COMPAT_VDSO is disabled, we get a warning about a potential out-of-bounds access: arch/arm64/kernel/vdso.c: In function 'aarch32_vdso_mremap': arch/arm64/kernel/vdso.c:86:37: warning: array subscript 1 is above array bounds of 'struct vdso_abi_info[1]' [-Warray-bounds] 86 | unsigned long vdso_size = vdso_info[abi].vdso_code_end - | ~~~~~~~~~^~~~~ This is all in dead code however that the compiler is unable to eliminate by itself. Change the array to individual local variables that can be dropped in dead code elimination to let the compiler understand this better. Fixes: 0cbc2659123e ("arm64: vdso32: Remove a bunch of #ifdef CONFIG_COMPAT_VDSO guards") Signed-off-by: Arnd Bergmann --- arch/arm64/kernel/vdso.c | 56 ++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c index debb8995d57f..0b69d2894742 100644 --- a/arch/arm64/kernel/vdso.c +++ b/arch/arm64/kernel/vdso.c @@ -286,36 +286,9 @@ static int aarch32_vdso_mremap(const struct vm_special_mapping *sm, return __vdso_remap(VDSO_ABI_AA32, sm, new_vma); } -enum aarch32_map { - AA32_MAP_VECTORS, /* kuser helpers */ - AA32_MAP_SIGPAGE, - AA32_MAP_VVAR, - AA32_MAP_VDSO, -}; - static struct page *aarch32_vectors_page __ro_after_init; static struct page *aarch32_sig_page __ro_after_init; -static struct vm_special_mapping aarch32_vdso_maps[] = { - [AA32_MAP_VECTORS] = { - .name = "[vectors]", /* ABI */ - .pages = &aarch32_vectors_page, - }, - [AA32_MAP_SIGPAGE] = { - .name = "[sigpage]", /* ABI */ - .pages = &aarch32_sig_page, - }, - [AA32_MAP_VVAR] = { - .name = "[vvar]", - .fault = vvar_fault, - .mremap = vvar_mremap, - }, - [AA32_MAP_VDSO] = { - .name = "[vdso]", - .mremap = aarch32_vdso_mremap, - }, -}; - static int aarch32_alloc_kuser_vdso_page(void) { extern char __kuser_helper_start[], __kuser_helper_end[]; @@ -352,14 +325,25 @@ static int aarch32_alloc_sigpage(void) return 0; } +static struct vm_special_mapping aarch32_vdso_map_vvar = { + .name = "[vvar]", + .fault = vvar_fault, + .mremap = vvar_mremap, +}; + +static struct vm_special_mapping aarch32_vdso_map_vdso = { + .name = "[vdso]", + .mremap = aarch32_vdso_mremap, +}; + static int __aarch32_alloc_vdso_pages(void) { if (!IS_ENABLED(CONFIG_COMPAT_VDSO)) return 0; - vdso_info[VDSO_ABI_AA32].dm = &aarch32_vdso_maps[AA32_MAP_VVAR]; - vdso_info[VDSO_ABI_AA32].cm = &aarch32_vdso_maps[AA32_MAP_VDSO]; + vdso_info[VDSO_ABI_AA32].dm = &aarch32_vdso_map_vvar; + vdso_info[VDSO_ABI_AA32].cm = &aarch32_vdso_map_vdso; return __vdso_init(VDSO_ABI_AA32); } @@ -380,6 +364,11 @@ static int __init aarch32_alloc_vdso_pages(void) } arch_initcall(aarch32_alloc_vdso_pages); +static struct vm_special_mapping aarch32_vdso_map_vectors = { + .name = "[vectors]", /* ABI */ + .pages = &aarch32_vectors_page, +}; + static int aarch32_kuser_helpers_setup(struct mm_struct *mm) { void *ret; @@ -394,11 +383,16 @@ static int aarch32_kuser_helpers_setup(struct mm_struct *mm) ret = _install_special_mapping(mm, AARCH32_VECTORS_BASE, PAGE_SIZE, VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYEXEC, - &aarch32_vdso_maps[AA32_MAP_VECTORS]); + &aarch32_vdso_map_vectors); return PTR_ERR_OR_ZERO(ret); } +static struct vm_special_mapping aarch32_vdso_map_sigpage = { + .name = "[sigpage]", /* ABI */ + .pages = &aarch32_sig_page, +}; + static int aarch32_sigreturn_setup(struct mm_struct *mm) { unsigned long addr; @@ -417,7 +411,7 @@ static int aarch32_sigreturn_setup(struct mm_struct *mm) ret = _install_special_mapping(mm, addr, PAGE_SIZE, VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC, - &aarch32_vdso_maps[AA32_MAP_SIGPAGE]); + &aarch32_vdso_map_sigpage); if (IS_ERR(ret)) goto out; -- 2.27.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel