From patchwork Tue Jun 26 18:27:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 140072 Delivered-To: patch@linaro.org Received: by 2002:a2e:970d:0:0:0:0:0 with SMTP id r13-v6csp5572769lji; Tue, 26 Jun 2018 11:28:52 -0700 (PDT) X-Google-Smtp-Source: AAOMgpe+8LRBrkXDRk/Arg/b5ylA/VP+kdOHscUIlaRvulnK3Yhd/hEctSnB1RX4RRMJZLOiFCHV X-Received: by 2002:a62:1fd6:: with SMTP id l83-v6mr2678311pfj.182.1530037732257; Tue, 26 Jun 2018 11:28:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530037732; cv=none; d=google.com; s=arc-20160816; b=wyQ0NJxbid1+2E1vYE4aS70HMPvmbW+VyICHBnEXfQn+whn4WR64YqskqwoMF6/hPi JF8QEKCVPthhN77M0ezi1X/b+ZVPau+9QKI4X4eFNfi4mm1HYVyLwWs6qAAtAwaVCk4T d3KRqOWI5uiP6eoQ2MqUmtQkfWbbrKvI+J/v+BXHal5BjQYTVLO2xqdhNkO8D5MKA1/8 sTU5WgGx8zsK/7BAWagvE5tAdU7cYzyD3kTxxcKt/egIXyo2RSgJNaOFUMYUjm8O0XJn PGWa4+WV/T/HiRfNrnFKLzV9c+HfzHMSd8b4CbV0QZwVbEdpoZByDgZF1cUX4AKQH8VB khGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=7Pl3hl9dlr/wJP2mnaTAtaT54uoquJiV2t4p4cdOAyg=; b=pOR/QRycSi/P69iITmGnyeZbCdkpjQpZyMj1/guPdtfZ5M0+5r5eMqFJIt1Vl3KxFq bJ0+uOQVLqMcJMLQMFg1er9z5A+mUobXJZ+xFQqEKVO4YRpcA9qjAEIPtT7Y/ffYQBSZ G52WIhvPzii5/A2SmumrALXKWFcS9pMavEqH4nSNgjEfy3kcairwWciKdMG4SHRV3NDH by9uk3MWBk8xP4Nnujok2u0mFOCmzh6bJmbj04eI1Sjv7vGyMf2ekHd3f6K3O0a46v/G URxVJLwMzK7KiYofkLrIoF+JhTGq1Adm+XA+6vzpxLz9OqPMWJb9O0N/L2ovCg/4rq8V ulvQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Q2SuMHmp; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p5-v6si2103152pfb.171.2018.06.26.11.28.51; Tue, 26 Jun 2018 11:28:52 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Q2SuMHmp; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752913AbeFZS2r (ORCPT + 31 others); Tue, 26 Jun 2018 14:28:47 -0400 Received: from mail-wr0-f196.google.com ([209.85.128.196]:35862 "EHLO mail-wr0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751708AbeFZS2o (ORCPT ); Tue, 26 Jun 2018 14:28:44 -0400 Received: by mail-wr0-f196.google.com with SMTP id f16-v6so18228090wrm.3 for ; Tue, 26 Jun 2018 11:28:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7Pl3hl9dlr/wJP2mnaTAtaT54uoquJiV2t4p4cdOAyg=; b=Q2SuMHmpWc0SFvLy6xXOjfHRMrRsAwFPYNhXwbVsiRG/mDtWiE26DFzdPw657vIUoe CI/gMks+q6ug0i6zfBiWFiiMjsSnnDHmWEh2IFpjvpHAMiLbAOPKwUpMP6oy5HYP6ohH NLRjX3Btm+gWIrQ3cUm9F7iD7Form2lxGBOCI= 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; bh=7Pl3hl9dlr/wJP2mnaTAtaT54uoquJiV2t4p4cdOAyg=; b=g89OJer3EUj+zJ9F/kFw5OaQGilZ/vib8QsWpf//gX2efOOca+kLUYLFyxXj5RpJE0 aWjbr0JBDAhWO4J+KF6ShJrWyBh9MpbZCdFTAlJ6JQ1w1pkzuJcBJ8wsNvh6iHoufQVw gyV10aWCq3c4i+sWWEMJgcCubYcQ+9wJvi/e2DxJSw03vLdy2DMVVILEeJBY3RVZnKb4 VNEMFBQ++jxG9dekaFKMJ7PNf9EZ7JDxR4OpfEnmcGl6Uz3+9l321z4qTAjKhGtinzRx egxfho93qHy0pQ5FvkrJ9H9Xmaab0lqN4U35e6HES3z+ciaq5TmcgBBod0xcXapGHa4V CQwQ== X-Gm-Message-State: APt69E2CKPIH4eMxB7M7ba+oQwQEJsxDVaAjqx2A/IfWkFGOYM5Wvs5i lRThnNzMqJo9O0PCnZUn7tXUCjJcYag= X-Received: by 2002:adf:afd3:: with SMTP id y19-v6mr2601535wrd.176.1530037722557; Tue, 26 Jun 2018 11:28:42 -0700 (PDT) Received: from rev02.home ([2a01:cb1d:112:6f00:d037:e907:f0a2:a5ea]) by smtp.gmail.com with ESMTPSA id s17-v6sm1707664wmc.34.2018.06.26.11.28.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 26 Jun 2018 11:28:41 -0700 (PDT) From: Ard Biesheuvel To: linux-kernel@vger.kernel.org Cc: Ard Biesheuvel , Arnd Bergmann , Kees Cook , Will Deacon , Michael Ellerman , Thomas Garnier , Thomas Gleixner , "Serge E. Hallyn" , Bjorn Helgaas , Benjamin Herrenschmidt , Russell King , Paul Mackerras , Catalin Marinas , Petr Mladek , Ingo Molnar , James Morris , Andrew Morton , Nicolas Pitre , Josh Poimboeuf , Steven Rostedt , Sergey Senozhatsky , Linus Torvalds , Jessica Yu , linux-arm-kernel@lists.infradead.org, linuxppc-dev@lists.ozlabs.org, x86@kernel.org Subject: [PATCH v9 1/6] arch: enable relative relocations for arm64, power and x86 Date: Tue, 26 Jun 2018 20:27:56 +0200 Message-Id: <20180626182802.19932-2-ard.biesheuvel@linaro.org> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20180626182802.19932-1-ard.biesheuvel@linaro.org> References: <20180626182802.19932-1-ard.biesheuvel@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Before updating certain subsystems to use place relative 32-bit relocations in special sections, to save space and reduce the number of absolute relocations that need to be processed at runtime by relocatable kernels, introduce the Kconfig symbol and define it for some architectures that should be able to support and benefit from it. Cc: Catalin Marinas Cc: Will Deacon Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Michael Ellerman Cc: Thomas Gleixner Cc: Ingo Molnar Cc: x86@kernel.org Signed-off-by: Ard Biesheuvel --- arch/Kconfig | 10 ++++++++++ arch/arm64/Kconfig | 1 + arch/powerpc/Kconfig | 1 + arch/x86/Kconfig | 1 + 4 files changed, 13 insertions(+) -- 2.11.0 diff --git a/arch/Kconfig b/arch/Kconfig index 1aa59063f1fd..2b8b70820002 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -971,4 +971,14 @@ config REFCOUNT_FULL against various use-after-free conditions that can be used in security flaw exploits. +config HAVE_ARCH_PREL32_RELOCATIONS + bool + help + May be selected by an architecture if it supports place-relative + 32-bit relocations, both in the toolchain and in the module loader, + in which case relative references can be used in special sections + for PCI fixup, initcalls etc which are only half the size on 64 bit + architectures, and don't require runtime relocation on relocatable + kernels. + source "kernel/gcov/Kconfig" diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 42c090cf0292..1940c6405d04 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -95,6 +95,7 @@ config ARM64 select HAVE_ARCH_KGDB select HAVE_ARCH_MMAP_RND_BITS select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT + select HAVE_ARCH_PREL32_RELOCATIONS select HAVE_ARCH_SECCOMP_FILTER select HAVE_ARCH_THREAD_STRUCT_WHITELIST select HAVE_ARCH_TRACEHOOK diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 9f2b75fe2c2d..e4fe19789b8b 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -177,6 +177,7 @@ config PPC select HAVE_ARCH_KGDB select HAVE_ARCH_MMAP_RND_BITS select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT + select HAVE_ARCH_PREL32_RELOCATIONS select HAVE_ARCH_SECCOMP_FILTER select HAVE_ARCH_TRACEHOOK select HAVE_CBPF_JIT if !PPC64 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index f1dbb4ee19d7..e10a3542db7e 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -123,6 +123,7 @@ config X86 select HAVE_ARCH_MMAP_RND_BITS if MMU select HAVE_ARCH_MMAP_RND_COMPAT_BITS if MMU && COMPAT select HAVE_ARCH_COMPAT_MMAP_BASES if MMU && COMPAT + select HAVE_ARCH_PREL32_RELOCATIONS select HAVE_ARCH_SECCOMP_FILTER select HAVE_ARCH_THREAD_STRUCT_WHITELIST select HAVE_ARCH_TRACEHOOK