From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Date: Wed, 4 Oct 2017 14:19:58 -0700 Message-Id: <20171004212003.28296-23-thgarnie@google.com> In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Subject: [kernel-hardening] [RFC v3 22/27] x86/modules: Add option to start module section after kernel To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter , Boris Ostrovsky , Alexey Dobriyan , Andrew Morton , Paul Gortmaker , Chris Metcalf , "Paul E . McKenney" , Nicolas Pitre , Borislav Petkov , "Luis R . Rodriguez" , Greg Kroah-Hartman , Christopher Li , Steven Rostedt , Jason Baron , Dou Liyang , "Rafael J . Wysocki" , Mika Westerberg , Lukas Wunner , Masahiro Yamada , Alexei Starovoitov , Daniel Borkmann , Markus Trippelsdorf , Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Joerg Roedel , Rik van Riel , David Howells , Ard Biesheuvel , Waiman Long , Kyle Huey , Andrey Ryabinin , Jonathan Corbet , Matthew Wilcox , Michal Hocko , Peter Foley , Paul Bolle , Jiri Kosina , Rob Landley , "H . J . Lu" , Baoquan He , =?UTF-8?q?Jan=20H=20=2E=20Sch=C3=B6nherr?= , Daniel Micay Cc: x86@kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, virtualization@lists.linux-foundation.org, xen-devel@lists.xenproject.org, linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, kernel-hardening@lists.openwall.com List-ID: Add an option so the module section is just after the mapped kernel. It will ensure position independent modules are always at the right distance from the kernel and do not require mcmodule=large. It also optimize the available size for modules by getting rid of the empty space on kernel randomization range. Signed-off-by: Thomas Garnier --- Documentation/x86/x86_64/mm.txt | 3 +++ arch/x86/Kconfig | 4 ++++ arch/x86/include/asm/pgtable_64_types.h | 6 +++++- arch/x86/kernel/head64.c | 5 ++++- arch/x86/mm/dump_pagetables.c | 4 ++-- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/Documentation/x86/x86_64/mm.txt b/Documentation/x86/x86_64/mm.txt index b0798e281aa6..b51d66386e32 100644 --- a/Documentation/x86/x86_64/mm.txt +++ b/Documentation/x86/x86_64/mm.txt @@ -73,4 +73,7 @@ Note that if CONFIG_RANDOMIZE_MEMORY is enabled, the direct mapping of all physical memory, vmalloc/ioremap space and virtual memory map are randomized. Their order is preserved but their base will be offset early at boot time. +If CONFIG_DYNAMIC_MODULE_BASE is enabled, the module section follows the end of +the mapped kernel. + -Andi Kleen, Jul 2004 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 777197fab6dd..1e4b399c64e5 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -2133,6 +2133,10 @@ config RANDOMIZE_MEMORY_PHYSICAL_PADDING If unsure, leave at the default value. +# Module section starts just after the end of the kernel module +config DYNAMIC_MODULE_BASE + bool + config X86_GLOBAL_STACKPROTECTOR bool depends on CC_STACKPROTECTOR diff --git a/arch/x86/include/asm/pgtable_64_types.h b/arch/x86/include/asm/pgtable_64_types.h index 06470da156ba..e00fc429b898 100644 --- a/arch/x86/include/asm/pgtable_64_types.h +++ b/arch/x86/include/asm/pgtable_64_types.h @@ -6,6 +6,7 @@ #ifndef __ASSEMBLY__ #include #include +#include /* * These are used to make use of C type-checking.. @@ -18,7 +19,6 @@ typedef unsigned long pgdval_t; typedef unsigned long pgprotval_t; typedef struct { pteval_t pte; } pte_t; - #endif /* !__ASSEMBLY__ */ #define SHARED_KERNEL_PMD 0 @@ -93,7 +93,11 @@ typedef struct { pteval_t pte; } pte_t; #define VMEMMAP_START __VMEMMAP_BASE #endif /* CONFIG_RANDOMIZE_MEMORY */ #define VMALLOC_END (VMALLOC_START + _AC((VMALLOC_SIZE_TB << 40) - 1, UL)) +#ifdef CONFIG_DYNAMIC_MODULE_BASE +#define MODULES_VADDR ALIGN(((unsigned long)_end + PAGE_SIZE), PMD_SIZE) +#else #define MODULES_VADDR (__START_KERNEL_map + KERNEL_IMAGE_SIZE) +#endif /* The module sections ends with the start of the fixmap */ #define MODULES_END __fix_to_virt(__end_of_fixed_addresses + 1) #define MODULES_LEN (MODULES_END - MODULES_VADDR) diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index 675f1dba3b21..b6363f0d11a7 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -321,12 +321,15 @@ asmlinkage __visible void __init x86_64_start_kernel(char * real_mode_data) * Build-time sanity checks on the kernel image and module * area mappings. (these are purely build-time and produce no code) */ +#ifndef CONFIG_DYNAMIC_MODULE_BASE BUILD_BUG_ON(MODULES_VADDR < __START_KERNEL_map); BUILD_BUG_ON(MODULES_VADDR - __START_KERNEL_map < KERNEL_IMAGE_SIZE); - BUILD_BUG_ON(MODULES_LEN + KERNEL_IMAGE_SIZE > 2*PUD_SIZE); + BUILD_BUG_ON(!IS_ENABLED(CONFIG_RANDOMIZE_BASE_LARGE) && + MODULES_LEN + KERNEL_IMAGE_SIZE > 2*PUD_SIZE); BUILD_BUG_ON((__START_KERNEL_map & ~PMD_MASK) != 0); BUILD_BUG_ON((MODULES_VADDR & ~PMD_MASK) != 0); BUILD_BUG_ON(!(MODULES_VADDR > __START_KERNEL)); +#endif BUILD_BUG_ON(!(((MODULES_END - 1) & PGDIR_MASK) == (__START_KERNEL & PGDIR_MASK))); BUILD_BUG_ON(__fix_to_virt(__end_of_fixed_addresses) <= MODULES_END); diff --git a/arch/x86/mm/dump_pagetables.c b/arch/x86/mm/dump_pagetables.c index 8691a57da63e..8565b2b45848 100644 --- a/arch/x86/mm/dump_pagetables.c +++ b/arch/x86/mm/dump_pagetables.c @@ -95,7 +95,7 @@ static struct addr_marker address_markers[] = { { EFI_VA_END, "EFI Runtime Services" }, # endif { __START_KERNEL_map, "High Kernel Mapping" }, - { MODULES_VADDR, "Modules" }, + { 0/* MODULES_VADDR */, "Modules" }, { MODULES_END, "End Modules" }, #else { PAGE_OFFSET, "Kernel Mapping" }, @@ -529,7 +529,7 @@ static int __init pt_dump_init(void) # endif address_markers[FIXADDR_START_NR].start_address = FIXADDR_START; #endif - + address_markers[MODULES_VADDR_NR].start_address = MODULES_VADDR; return 0; } __initcall(pt_dump_init); -- 2.14.2.920.gcf0c67979c-goog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 22/27] x86/modules: Add option to start module section after kernel Date: Wed, 4 Oct 2017 14:19:58 -0700 Message-ID: <20171004212003.28296-23-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter Bor Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org List-Id: linux-arch.vger.kernel.org QWRkIGFuIG9wdGlvbiBzbyB0aGUgbW9kdWxlIHNlY3Rpb24gaXMganVzdCBhZnRlciB0aGUgbWFw cGVkIGtlcm5lbC4gSXQKd2lsbCBlbnN1cmUgcG9zaXRpb24gaW5kZXBlbmRlbnQgbW9kdWxlcyBh cmUgYWx3YXlzIGF0IHRoZSByaWdodApkaXN0YW5jZSBmcm9tIHRoZSBrZXJuZWwgYW5kIGRvIG5v dCByZXF1aXJlIG1jbW9kdWxlPWxhcmdlLiBJdCBhbHNvCm9wdGltaXplIHRoZSBhdmFpbGFibGUg c2l6ZSBmb3IgbW9kdWxlcyBieSBnZXR0aW5nIHJpZCBvZiB0aGUgZW1wdHkKc3BhY2Ugb24ga2Vy bmVsIHJhbmRvbWl6YXRpb24gcmFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgR2FybmllciA8 dGhnYXJuaWVAZ29vZ2xlLmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvbW0udHh0 ICAgICAgICAgfCAzICsrKwogYXJjaC94ODYvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAg IHwgNCArKysrCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0X3R5cGVzLmggfCA2ICsr KysrLQogYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jICAgICAgICAgICAgICAgIHwgNSArKysrLQog YXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMgICAgICAgICAgIHwgNCArKy0tCiA1IGZpbGVz IGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv RG9jdW1lbnRhdGlvbi94ODYveDg2XzY0L21tLnR4dCBiL0RvY3VtZW50YXRpb24veDg2L3g4Nl82 NC9tbS50eHQKaW5kZXggYjA3OThlMjgxYWE2Li5iNTFkNjYzODZlMzIgMTAwNjQ0Ci0tLSBhL0Rv Y3VtZW50YXRpb24veDg2L3g4Nl82NC9tbS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi94ODYveDg2 XzY0L21tLnR4dApAQCAtNzMsNCArNzMsNyBAQCBOb3RlIHRoYXQgaWYgQ09ORklHX1JBTkRPTUla RV9NRU1PUlkgaXMgZW5hYmxlZCwgdGhlIGRpcmVjdCBtYXBwaW5nIG9mIGFsbAogcGh5c2ljYWwg bWVtb3J5LCB2bWFsbG9jL2lvcmVtYXAgc3BhY2UgYW5kIHZpcnR1YWwgbWVtb3J5IG1hcCBhcmUg cmFuZG9taXplZC4KIFRoZWlyIG9yZGVyIGlzIHByZXNlcnZlZCBidXQgdGhlaXIgYmFzZSB3aWxs IGJlIG9mZnNldCBlYXJseSBhdCBib290IHRpbWUuCiAKK0lmIENPTkZJR19EWU5BTUlDX01PRFVM RV9CQVNFIGlzIGVuYWJsZWQsIHRoZSBtb2R1bGUgc2VjdGlvbiBmb2xsb3dzIHRoZSBlbmQgb2YK K3RoZSBtYXBwZWQga2VybmVsLgorCiAtQW5kaSBLbGVlbiwgSnVsIDIwMDQKZGlmZiAtLWdpdCBh L2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnCmluZGV4IDc3NzE5N2ZhYjZkZC4u MWU0YjM5OWM2NGU1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9LY29uZmlnCisrKyBiL2FyY2gveDg2 L0tjb25maWcKQEAgLTIxMzMsNiArMjEzMywxMCBAQCBjb25maWcgUkFORE9NSVpFX01FTU9SWV9Q SFlTSUNBTF9QQURESU5HCiAKIAkgICBJZiB1bnN1cmUsIGxlYXZlIGF0IHRoZSBkZWZhdWx0IHZh bHVlLgogCisjIE1vZHVsZSBzZWN0aW9uIHN0YXJ0cyBqdXN0IGFmdGVyIHRoZSBlbmQgb2YgdGhl IGtlcm5lbCBtb2R1bGUKK2NvbmZpZyBEWU5BTUlDX01PRFVMRV9CQVNFCisJYm9vbAorCiBjb25m aWcgWDg2X0dMT0JBTF9TVEFDS1BST1RFQ1RPUgogCWJvb2wKIAlkZXBlbmRzIG9uIENDX1NUQUNL UFJPVEVDVE9SCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0X3R5 cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0X3R5cGVzLmgKaW5kZXggMDY0 NzBkYTE1NmJhLi5lMDBmYzQyOWI4OTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BndGFibGVfNjRfdHlwZXMuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0 X3R5cGVzLmgKQEAgLTYsNiArNiw3IEBACiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogI2luY2x1ZGUg PGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL2thc2xyLmg+CisjaW5jbHVkZSA8YXNtL3Nl Y3Rpb25zLmg+CiAKIC8qCiAgKiBUaGVzZSBhcmUgdXNlZCB0byBtYWtlIHVzZSBvZiBDIHR5cGUt Y2hlY2tpbmcuLgpAQCAtMTgsNyArMTksNiBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcJcGdkdmFs X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcJcGdwcm90dmFsX3Q7CiAKIHR5cGVkZWYgc3RydWN0 IHsgcHRldmFsX3QgcHRlOyB9IHB0ZV90OwotCiAjZW5kaWYJLyogIV9fQVNTRU1CTFlfXyAqLwog CiAjZGVmaW5lIFNIQVJFRF9LRVJORUxfUE1ECTAKQEAgLTkzLDcgKzkzLDExIEBAIHR5cGVkZWYg c3RydWN0IHsgcHRldmFsX3QgcHRlOyB9IHB0ZV90OwogI2RlZmluZSBWTUVNTUFQX1NUQVJUCV9f Vk1FTU1BUF9CQVNFCiAjZW5kaWYgLyogQ09ORklHX1JBTkRPTUlaRV9NRU1PUlkgKi8KICNkZWZp bmUgVk1BTExPQ19FTkQJKFZNQUxMT0NfU1RBUlQgKyBfQUMoKFZNQUxMT0NfU0laRV9UQiA8PCA0 MCkgLSAxLCBVTCkpCisjaWZkZWYgQ09ORklHX0RZTkFNSUNfTU9EVUxFX0JBU0UKKyNkZWZpbmUg TU9EVUxFU19WQUREUiAgIEFMSUdOKCgodW5zaWduZWQgbG9uZylfZW5kICsgUEFHRV9TSVpFKSwg UE1EX1NJWkUpCisjZWxzZQogI2RlZmluZSBNT0RVTEVTX1ZBRERSICAgIChfX1NUQVJUX0tFUk5F TF9tYXAgKyBLRVJORUxfSU1BR0VfU0laRSkKKyNlbmRpZgogLyogVGhlIG1vZHVsZSBzZWN0aW9u cyBlbmRzIHdpdGggdGhlIHN0YXJ0IG9mIHRoZSBmaXhtYXAgKi8KICNkZWZpbmUgTU9EVUxFU19F TkQgICBfX2ZpeF90b192aXJ0KF9fZW5kX29mX2ZpeGVkX2FkZHJlc3NlcyArIDEpCiAjZGVmaW5l IE1PRFVMRVNfTEVOICAgKE1PRFVMRVNfRU5EIC0gTU9EVUxFU19WQUREUikKZGlmZiAtLWdpdCBh L2FyY2gveDg2L2tlcm5lbC9oZWFkNjQuYyBiL2FyY2gveDg2L2tlcm5lbC9oZWFkNjQuYwppbmRl eCA2NzVmMWRiYTNiMjEuLmI2MzYzZjBkMTFhNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVs L2hlYWQ2NC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9oZWFkNjQuYwpAQCAtMzIxLDEyICszMjEs MTUgQEAgYXNtbGlua2FnZSBfX3Zpc2libGUgdm9pZCBfX2luaXQgeDg2XzY0X3N0YXJ0X2tlcm5l bChjaGFyICogcmVhbF9tb2RlX2RhdGEpCiAJICogQnVpbGQtdGltZSBzYW5pdHkgY2hlY2tzIG9u IHRoZSBrZXJuZWwgaW1hZ2UgYW5kIG1vZHVsZQogCSAqIGFyZWEgbWFwcGluZ3MuICh0aGVzZSBh cmUgcHVyZWx5IGJ1aWxkLXRpbWUgYW5kIHByb2R1Y2Ugbm8gY29kZSkKIAkgKi8KKyNpZm5kZWYg Q09ORklHX0RZTkFNSUNfTU9EVUxFX0JBU0UKIAlCVUlMRF9CVUdfT04oTU9EVUxFU19WQUREUiA8 IF9fU1RBUlRfS0VSTkVMX21hcCk7CiAJQlVJTERfQlVHX09OKE1PRFVMRVNfVkFERFIgLSBfX1NU QVJUX0tFUk5FTF9tYXAgPCBLRVJORUxfSU1BR0VfU0laRSk7Ci0JQlVJTERfQlVHX09OKE1PRFVM RVNfTEVOICsgS0VSTkVMX0lNQUdFX1NJWkUgPiAyKlBVRF9TSVpFKTsKKwlCVUlMRF9CVUdfT04o IUlTX0VOQUJMRUQoQ09ORklHX1JBTkRPTUlaRV9CQVNFX0xBUkdFKSAmJgorCQkgICAgIE1PRFVM RVNfTEVOICsgS0VSTkVMX0lNQUdFX1NJWkUgPiAyKlBVRF9TSVpFKTsKIAlCVUlMRF9CVUdfT04o KF9fU1RBUlRfS0VSTkVMX21hcCAmIH5QTURfTUFTSykgIT0gMCk7CiAJQlVJTERfQlVHX09OKChN T0RVTEVTX1ZBRERSICYgflBNRF9NQVNLKSAhPSAwKTsKIAlCVUlMRF9CVUdfT04oIShNT0RVTEVT X1ZBRERSID4gX19TVEFSVF9LRVJORUwpKTsKKyNlbmRpZgogCUJVSUxEX0JVR19PTighKCgoTU9E VUxFU19FTkQgLSAxKSAmIFBHRElSX01BU0spID09CiAJCQkJKF9fU1RBUlRfS0VSTkVMICYgUEdE SVJfTUFTSykpKTsKIAlCVUlMRF9CVUdfT04oX19maXhfdG9fdmlydChfX2VuZF9vZl9maXhlZF9h ZGRyZXNzZXMpIDw9IE1PRFVMRVNfRU5EKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2R1bXBf cGFnZXRhYmxlcy5jIGIvYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMKaW5kZXggODY5MWE1 N2RhNjNlLi44NTY1YjJiNDU4NDggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tL2R1bXBfcGFnZXRh Ymxlcy5jCisrKyBiL2FyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jCkBAIC05NSw3ICs5NSw3 IEBAIHN0YXRpYyBzdHJ1Y3QgYWRkcl9tYXJrZXIgYWRkcmVzc19tYXJrZXJzW10gPSB7CiAJeyBF RklfVkFfRU5ELAkJIkVGSSBSdW50aW1lIFNlcnZpY2VzIiB9LAogIyBlbmRpZgogCXsgX19TVEFS VF9LRVJORUxfbWFwLCAgICJIaWdoIEtlcm5lbCBNYXBwaW5nIiB9LAotCXsgTU9EVUxFU19WQURE UiwgICAgICAgICJNb2R1bGVzIiB9LAorCXsgMC8qIE1PRFVMRVNfVkFERFIgKi8sCSJNb2R1bGVz IiB9LAogCXsgTU9EVUxFU19FTkQsICAgICAgICAgICJFbmQgTW9kdWxlcyIgfSwKICNlbHNlCiAJ eyBQQUdFX09GRlNFVCwgICAgICAgICAgIktlcm5lbCBNYXBwaW5nIiB9LApAQCAtNTI5LDcgKzUy OSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHB0X2R1bXBfaW5pdCh2b2lkKQogIyBlbmRpZgogCWFk ZHJlc3NfbWFya2Vyc1tGSVhBRERSX1NUQVJUX05SXS5zdGFydF9hZGRyZXNzID0gRklYQUREUl9T VEFSVDsKICNlbmRpZgotCisJYWRkcmVzc19tYXJrZXJzW01PRFVMRVNfVkFERFJfTlJdLnN0YXJ0 X2FkZHJlc3MgPSBNT0RVTEVTX1ZBRERSOwogCXJldHVybiAwOwogfQogX19pbml0Y2FsbChwdF9k dW1wX2luaXQpOwotLSAKMi4xNC4yLjkyMC5nY2YwYzY3OTc5Yy1nb29nCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 22/27] x86/modules: Add option to start module section after kernel Date: Wed, 4 Oct 2017 14:19:58 -0700 Message-ID: <20171004212003.28296-23-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter , Bor Return-path: In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" List-Id: linux-crypto.vger.kernel.org QWRkIGFuIG9wdGlvbiBzbyB0aGUgbW9kdWxlIHNlY3Rpb24gaXMganVzdCBhZnRlciB0aGUgbWFw cGVkIGtlcm5lbC4gSXQKd2lsbCBlbnN1cmUgcG9zaXRpb24gaW5kZXBlbmRlbnQgbW9kdWxlcyBh cmUgYWx3YXlzIGF0IHRoZSByaWdodApkaXN0YW5jZSBmcm9tIHRoZSBrZXJuZWwgYW5kIGRvIG5v dCByZXF1aXJlIG1jbW9kdWxlPWxhcmdlLiBJdCBhbHNvCm9wdGltaXplIHRoZSBhdmFpbGFibGUg c2l6ZSBmb3IgbW9kdWxlcyBieSBnZXR0aW5nIHJpZCBvZiB0aGUgZW1wdHkKc3BhY2Ugb24ga2Vy bmVsIHJhbmRvbWl6YXRpb24gcmFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgR2FybmllciA8 dGhnYXJuaWVAZ29vZ2xlLmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL3g4Ni94ODZfNjQvbW0udHh0 ICAgICAgICAgfCAzICsrKwogYXJjaC94ODYvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAg IHwgNCArKysrCiBhcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0X3R5cGVzLmggfCA2ICsr KysrLQogYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jICAgICAgICAgICAgICAgIHwgNSArKysrLQog YXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMgICAgICAgICAgIHwgNCArKy0tCiA1IGZpbGVz IGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv RG9jdW1lbnRhdGlvbi94ODYveDg2XzY0L21tLnR4dCBiL0RvY3VtZW50YXRpb24veDg2L3g4Nl82 NC9tbS50eHQKaW5kZXggYjA3OThlMjgxYWE2Li5iNTFkNjYzODZlMzIgMTAwNjQ0Ci0tLSBhL0Rv Y3VtZW50YXRpb24veDg2L3g4Nl82NC9tbS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi94ODYveDg2 XzY0L21tLnR4dApAQCAtNzMsNCArNzMsNyBAQCBOb3RlIHRoYXQgaWYgQ09ORklHX1JBTkRPTUla RV9NRU1PUlkgaXMgZW5hYmxlZCwgdGhlIGRpcmVjdCBtYXBwaW5nIG9mIGFsbAogcGh5c2ljYWwg bWVtb3J5LCB2bWFsbG9jL2lvcmVtYXAgc3BhY2UgYW5kIHZpcnR1YWwgbWVtb3J5IG1hcCBhcmUg cmFuZG9taXplZC4KIFRoZWlyIG9yZGVyIGlzIHByZXNlcnZlZCBidXQgdGhlaXIgYmFzZSB3aWxs IGJlIG9mZnNldCBlYXJseSBhdCBib290IHRpbWUuCiAKK0lmIENPTkZJR19EWU5BTUlDX01PRFVM RV9CQVNFIGlzIGVuYWJsZWQsIHRoZSBtb2R1bGUgc2VjdGlvbiBmb2xsb3dzIHRoZSBlbmQgb2YK K3RoZSBtYXBwZWQga2VybmVsLgorCiAtQW5kaSBLbGVlbiwgSnVsIDIwMDQKZGlmZiAtLWdpdCBh L2FyY2gveDg2L0tjb25maWcgYi9hcmNoL3g4Ni9LY29uZmlnCmluZGV4IDc3NzE5N2ZhYjZkZC4u MWU0YjM5OWM2NGU1IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9LY29uZmlnCisrKyBiL2FyY2gveDg2 L0tjb25maWcKQEAgLTIxMzMsNiArMjEzMywxMCBAQCBjb25maWcgUkFORE9NSVpFX01FTU9SWV9Q SFlTSUNBTF9QQURESU5HCiAKIAkgICBJZiB1bnN1cmUsIGxlYXZlIGF0IHRoZSBkZWZhdWx0IHZh bHVlLgogCisjIE1vZHVsZSBzZWN0aW9uIHN0YXJ0cyBqdXN0IGFmdGVyIHRoZSBlbmQgb2YgdGhl IGtlcm5lbCBtb2R1bGUKK2NvbmZpZyBEWU5BTUlDX01PRFVMRV9CQVNFCisJYm9vbAorCiBjb25m aWcgWDg2X0dMT0JBTF9TVEFDS1BST1RFQ1RPUgogCWJvb2wKIAlkZXBlbmRzIG9uIENDX1NUQUNL UFJPVEVDVE9SCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0X3R5 cGVzLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0X3R5cGVzLmgKaW5kZXggMDY0 NzBkYTE1NmJhLi5lMDBmYzQyOWI4OTggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BndGFibGVfNjRfdHlwZXMuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wZ3RhYmxlXzY0 X3R5cGVzLmgKQEAgLTYsNiArNiw3IEBACiAjaWZuZGVmIF9fQVNTRU1CTFlfXwogI2luY2x1ZGUg PGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL2thc2xyLmg+CisjaW5jbHVkZSA8YXNtL3Nl Y3Rpb25zLmg+CiAKIC8qCiAgKiBUaGVzZSBhcmUgdXNlZCB0byBtYWtlIHVzZSBvZiBDIHR5cGUt Y2hlY2tpbmcuLgpAQCAtMTgsNyArMTksNiBAQCB0eXBlZGVmIHVuc2lnbmVkIGxvbmcJcGdkdmFs X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcJcGdwcm90dmFsX3Q7CiAKIHR5cGVkZWYgc3RydWN0 IHsgcHRldmFsX3QgcHRlOyB9IHB0ZV90OwotCiAjZW5kaWYJLyogIV9fQVNTRU1CTFlfXyAqLwog CiAjZGVmaW5lIFNIQVJFRF9LRVJORUxfUE1ECTAKQEAgLTkzLDcgKzkzLDExIEBAIHR5cGVkZWYg c3RydWN0IHsgcHRldmFsX3QgcHRlOyB9IHB0ZV90OwogI2RlZmluZSBWTUVNTUFQX1NUQVJUCV9f Vk1FTU1BUF9CQVNFCiAjZW5kaWYgLyogQ09ORklHX1JBTkRPTUlaRV9NRU1PUlkgKi8KICNkZWZp bmUgVk1BTExPQ19FTkQJKFZNQUxMT0NfU1RBUlQgKyBfQUMoKFZNQUxMT0NfU0laRV9UQiA8PCA0 MCkgLSAxLCBVTCkpCisjaWZkZWYgQ09ORklHX0RZTkFNSUNfTU9EVUxFX0JBU0UKKyNkZWZpbmUg TU9EVUxFU19WQUREUiAgIEFMSUdOKCgodW5zaWduZWQgbG9uZylfZW5kICsgUEFHRV9TSVpFKSwg UE1EX1NJWkUpCisjZWxzZQogI2RlZmluZSBNT0RVTEVTX1ZBRERSICAgIChfX1NUQVJUX0tFUk5F TF9tYXAgKyBLRVJORUxfSU1BR0VfU0laRSkKKyNlbmRpZgogLyogVGhlIG1vZHVsZSBzZWN0aW9u cyBlbmRzIHdpdGggdGhlIHN0YXJ0IG9mIHRoZSBmaXhtYXAgKi8KICNkZWZpbmUgTU9EVUxFU19F TkQgICBfX2ZpeF90b192aXJ0KF9fZW5kX29mX2ZpeGVkX2FkZHJlc3NlcyArIDEpCiAjZGVmaW5l IE1PRFVMRVNfTEVOICAgKE1PRFVMRVNfRU5EIC0gTU9EVUxFU19WQUREUikKZGlmZiAtLWdpdCBh L2FyY2gveDg2L2tlcm5lbC9oZWFkNjQuYyBiL2FyY2gveDg2L2tlcm5lbC9oZWFkNjQuYwppbmRl eCA2NzVmMWRiYTNiMjEuLmI2MzYzZjBkMTFhNyAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVs L2hlYWQ2NC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9oZWFkNjQuYwpAQCAtMzIxLDEyICszMjEs MTUgQEAgYXNtbGlua2FnZSBfX3Zpc2libGUgdm9pZCBfX2luaXQgeDg2XzY0X3N0YXJ0X2tlcm5l bChjaGFyICogcmVhbF9tb2RlX2RhdGEpCiAJICogQnVpbGQtdGltZSBzYW5pdHkgY2hlY2tzIG9u IHRoZSBrZXJuZWwgaW1hZ2UgYW5kIG1vZHVsZQogCSAqIGFyZWEgbWFwcGluZ3MuICh0aGVzZSBh cmUgcHVyZWx5IGJ1aWxkLXRpbWUgYW5kIHByb2R1Y2Ugbm8gY29kZSkKIAkgKi8KKyNpZm5kZWYg Q09ORklHX0RZTkFNSUNfTU9EVUxFX0JBU0UKIAlCVUlMRF9CVUdfT04oTU9EVUxFU19WQUREUiA8 IF9fU1RBUlRfS0VSTkVMX21hcCk7CiAJQlVJTERfQlVHX09OKE1PRFVMRVNfVkFERFIgLSBfX1NU QVJUX0tFUk5FTF9tYXAgPCBLRVJORUxfSU1BR0VfU0laRSk7Ci0JQlVJTERfQlVHX09OKE1PRFVM RVNfTEVOICsgS0VSTkVMX0lNQUdFX1NJWkUgPiAyKlBVRF9TSVpFKTsKKwlCVUlMRF9CVUdfT04o IUlTX0VOQUJMRUQoQ09ORklHX1JBTkRPTUlaRV9CQVNFX0xBUkdFKSAmJgorCQkgICAgIE1PRFVM RVNfTEVOICsgS0VSTkVMX0lNQUdFX1NJWkUgPiAyKlBVRF9TSVpFKTsKIAlCVUlMRF9CVUdfT04o KF9fU1RBUlRfS0VSTkVMX21hcCAmIH5QTURfTUFTSykgIT0gMCk7CiAJQlVJTERfQlVHX09OKChN T0RVTEVTX1ZBRERSICYgflBNRF9NQVNLKSAhPSAwKTsKIAlCVUlMRF9CVUdfT04oIShNT0RVTEVT X1ZBRERSID4gX19TVEFSVF9LRVJORUwpKTsKKyNlbmRpZgogCUJVSUxEX0JVR19PTighKCgoTU9E VUxFU19FTkQgLSAxKSAmIFBHRElSX01BU0spID09CiAJCQkJKF9fU1RBUlRfS0VSTkVMICYgUEdE SVJfTUFTSykpKTsKIAlCVUlMRF9CVUdfT04oX19maXhfdG9fdmlydChfX2VuZF9vZl9maXhlZF9h ZGRyZXNzZXMpIDw9IE1PRFVMRVNfRU5EKTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L21tL2R1bXBf cGFnZXRhYmxlcy5jIGIvYXJjaC94ODYvbW0vZHVtcF9wYWdldGFibGVzLmMKaW5kZXggODY5MWE1 N2RhNjNlLi44NTY1YjJiNDU4NDggMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21tL2R1bXBfcGFnZXRh Ymxlcy5jCisrKyBiL2FyY2gveDg2L21tL2R1bXBfcGFnZXRhYmxlcy5jCkBAIC05NSw3ICs5NSw3 IEBAIHN0YXRpYyBzdHJ1Y3QgYWRkcl9tYXJrZXIgYWRkcmVzc19tYXJrZXJzW10gPSB7CiAJeyBF RklfVkFfRU5ELAkJIkVGSSBSdW50aW1lIFNlcnZpY2VzIiB9LAogIyBlbmRpZgogCXsgX19TVEFS VF9LRVJORUxfbWFwLCAgICJIaWdoIEtlcm5lbCBNYXBwaW5nIiB9LAotCXsgTU9EVUxFU19WQURE UiwgICAgICAgICJNb2R1bGVzIiB9LAorCXsgMC8qIE1PRFVMRVNfVkFERFIgKi8sCSJNb2R1bGVz IiB9LAogCXsgTU9EVUxFU19FTkQsICAgICAgICAgICJFbmQgTW9kdWxlcyIgfSwKICNlbHNlCiAJ eyBQQUdFX09GRlNFVCwgICAgICAgICAgIktlcm5lbCBNYXBwaW5nIiB9LApAQCAtNTI5LDcgKzUy OSw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHB0X2R1bXBfaW5pdCh2b2lkKQogIyBlbmRpZgogCWFk ZHJlc3NfbWFya2Vyc1tGSVhBRERSX1NUQVJUX05SXS5zdGFydF9hZGRyZXNzID0gRklYQUREUl9T VEFSVDsKICNlbmRpZgotCisJYWRkcmVzc19tYXJrZXJzW01PRFVMRVNfVkFERFJfTlJdLnN0YXJ0 X2FkZHJlc3MgPSBNT0RVTEVTX1ZBRERSOwogCXJldHVybiAwOwogfQogX19pbml0Y2FsbChwdF9k dW1wX2luaXQpOwotLSAKMi4xNC4yLjkyMC5nY2YwYzY3OTc5Yy1nb29nCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlz dApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVs Cg==