From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Date: Wed, 4 Oct 2017 14:20:03 -0700 Message-Id: <20171004212003.28296-28-thgarnie@google.com> In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Subject: [kernel-hardening] [RFC v3 27/27] x86/kaslr: Add option to extend KASLR range from 1GB to 3GB 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 a new CONFIG_RANDOMIZE_BASE_LARGE option to benefit from PIE support. It increases the KASLR range from 1GB to 3GB. The new range stars at 0xffffffff00000000 just above the EFI memory region. This option is off by default. The boot code is adapted to create the appropriate page table spanning three PUD pages. The relocation table uses 64-bit integers generated with the updated relocation tool with the large-reloc option. Signed-off-by: Thomas Garnier --- arch/x86/Kconfig | 21 +++++++++++++++++++++ arch/x86/boot/compressed/Makefile | 5 +++++ arch/x86/boot/compressed/misc.c | 10 +++++++++- arch/x86/include/asm/page_64_types.h | 9 +++++++++ arch/x86/kernel/head64.c | 15 ++++++++++++--- arch/x86/kernel/head_64.S | 11 ++++++++++- 6 files changed, 66 insertions(+), 5 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index b92f96923712..81f4512549d1 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -2149,6 +2149,27 @@ config X86_PIE select MODULE_REL_CRCS if MODVERSIONS select X86_GLOBAL_STACKPROTECTOR if CC_STACKPROTECTOR +config RANDOMIZE_BASE_LARGE + bool "Increase the randomization range of the kernel image" + depends on X86_64 && RANDOMIZE_BASE + select X86_PIE + select X86_MODULE_PLTS if MODULES + default n + ---help--- + Build the kernel as a Position Independent Executable (PIE) and + increase the available randomization range from 1GB to 3GB. + + This option impacts performance on kernel CPU intensive workloads up + to 10% due to PIE generated code. Impact on user-mode processes and + typical usage would be significantly less (0.50% when you build the + kernel). + + The kernel and modules will generate slightly more assembly (1 to 2% + increase on the .text sections). The vmlinux binary will be + significantly smaller due to less relocations. + + If unsure say N + config HOTPLUG_CPU bool "Support for hot-pluggable CPUs" depends on SMP diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile index 8a958274b54c..94dfee5a7cd2 100644 --- a/arch/x86/boot/compressed/Makefile +++ b/arch/x86/boot/compressed/Makefile @@ -112,7 +112,12 @@ $(obj)/vmlinux.bin: vmlinux FORCE targets += $(patsubst $(obj)/%,%,$(vmlinux-objs-y)) vmlinux.bin.all vmlinux.relocs +# Large randomization require bigger relocation table +ifeq ($(CONFIG_RANDOMIZE_BASE_LARGE),y) +CMD_RELOCS = arch/x86/tools/relocs --large-reloc +else CMD_RELOCS = arch/x86/tools/relocs +endif quiet_cmd_relocs = RELOCS $@ cmd_relocs = $(CMD_RELOCS) $< > $@;$(CMD_RELOCS) --abs-relocs $< $(obj)/vmlinux.relocs: vmlinux FORCE diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c index c14217cd0155..c1ac9f2e283d 100644 --- a/arch/x86/boot/compressed/misc.c +++ b/arch/x86/boot/compressed/misc.c @@ -169,10 +169,18 @@ void __puthex(unsigned long value) } #if CONFIG_X86_NEED_RELOCS + +/* Large randomization go lower than -2G and use large relocation table */ +#ifdef CONFIG_RANDOMIZE_BASE_LARGE +typedef long rel_t; +#else +typedef int rel_t; +#endif + static void handle_relocations(void *output, unsigned long output_len, unsigned long virt_addr) { - int *reloc; + rel_t *reloc; unsigned long delta, map, ptr; unsigned long min_addr = (unsigned long)output; unsigned long max_addr = min_addr + (VO___bss_start - VO__text); diff --git a/arch/x86/include/asm/page_64_types.h b/arch/x86/include/asm/page_64_types.h index 3f5f08b010d0..6b65f846dd64 100644 --- a/arch/x86/include/asm/page_64_types.h +++ b/arch/x86/include/asm/page_64_types.h @@ -48,7 +48,11 @@ #define __PAGE_OFFSET __PAGE_OFFSET_BASE #endif /* CONFIG_RANDOMIZE_MEMORY */ +#ifdef CONFIG_RANDOMIZE_BASE_LARGE +#define __START_KERNEL_map _AC(0xffffffff00000000, UL) +#else #define __START_KERNEL_map _AC(0xffffffff80000000, UL) +#endif /* CONFIG_RANDOMIZE_BASE_LARGE */ /* See Documentation/x86/x86_64/mm.txt for a description of the memory map. */ #ifdef CONFIG_X86_5LEVEL @@ -65,9 +69,14 @@ * 512MiB by default, leaving 1.5GiB for modules once the page tables * are fully set up. If kernel ASLR is configured, it can extend the * kernel page table mapping, reducing the size of the modules area. + * On PIE, we relocate the binary 2G lower so add this extra space. */ #if defined(CONFIG_RANDOMIZE_BASE) +#ifdef CONFIG_RANDOMIZE_BASE_LARGE +#define KERNEL_IMAGE_SIZE (_AC(3, UL) * 1024 * 1024 * 1024) +#else #define KERNEL_IMAGE_SIZE (1024 * 1024 * 1024) +#endif #else #define KERNEL_IMAGE_SIZE (512 * 1024 * 1024) #endif diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c index b6363f0d11a7..d603d0f5a40a 100644 --- a/arch/x86/kernel/head64.c +++ b/arch/x86/kernel/head64.c @@ -39,6 +39,7 @@ static unsigned int __initdata next_early_pgt; pmdval_t early_pmd_flags = __PAGE_KERNEL_LARGE & ~(_PAGE_GLOBAL | _PAGE_NX); #define __head __section(.head.text) +#define pud_count(x) (((x + (PUD_SIZE - 1)) & ~(PUD_SIZE - 1)) >> PUD_SHIFT) static void __head *fixup_pointer(void *ptr, unsigned long physaddr) { @@ -56,6 +57,8 @@ unsigned long __head notrace __startup_64(unsigned long physaddr, { unsigned long load_delta, *p; unsigned long pgtable_flags; + unsigned long level3_kernel_start, level3_kernel_count; + unsigned long level3_fixmap_start; pgdval_t *pgd; p4dval_t *p4d; pudval_t *pud; @@ -83,6 +86,11 @@ unsigned long __head notrace __startup_64(unsigned long physaddr, /* Include the SME encryption mask in the fixup value */ load_delta += sme_get_me_mask(); + /* Look at the randomization spread to adapt page table used */ + level3_kernel_start = pud_index(__START_KERNEL_map); + level3_kernel_count = pud_count(KERNEL_IMAGE_SIZE); + level3_fixmap_start = level3_kernel_start + level3_kernel_count; + /* Fixup the physical addresses in the page table */ pgd = fixup_pointer(&early_top_pgt, physaddr); @@ -94,8 +102,9 @@ unsigned long __head notrace __startup_64(unsigned long physaddr, } pud = fixup_pointer(&level3_kernel_pgt, physaddr); - pud[510] += load_delta; - pud[511] += load_delta; + for (i = 0; i < level3_kernel_count; i++) + pud[level3_kernel_start + i] += load_delta; + pud[level3_fixmap_start] += load_delta; pmd = fixup_pointer(level2_fixmap_pgt, physaddr); pmd[506] += load_delta; @@ -150,7 +159,7 @@ unsigned long __head notrace __startup_64(unsigned long physaddr, */ pmd = fixup_pointer(level2_kernel_pgt, physaddr); - for (i = 0; i < PTRS_PER_PMD; i++) { + for (i = 0; i < PTRS_PER_PMD * level3_kernel_count; i++) { if (pmd[i] & _PAGE_PRESENT) pmd[i] += load_delta; } diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index df5198e310fc..7918ffefc9c9 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S @@ -39,11 +39,15 @@ #define p4d_index(x) (((x) >> P4D_SHIFT) & (PTRS_PER_P4D-1)) #define pud_index(x) (((x) >> PUD_SHIFT) & (PTRS_PER_PUD-1)) +#define pud_count(x) (((x + (PUD_SIZE - 1)) & ~(PUD_SIZE - 1)) >> PUD_SHIFT) PGD_PAGE_OFFSET = pgd_index(__PAGE_OFFSET_BASE) PGD_START_KERNEL = pgd_index(__START_KERNEL_map) L3_START_KERNEL = pud_index(__START_KERNEL_map) +/* Adapt page table L3 space based on range of randomization */ +L3_KERNEL_ENTRY_COUNT = pud_count(KERNEL_IMAGE_SIZE) + .text __HEAD .code64 @@ -413,7 +417,12 @@ NEXT_PAGE(level4_kernel_pgt) NEXT_PAGE(level3_kernel_pgt) .fill L3_START_KERNEL,8,0 /* (2^48-(2*1024*1024*1024)-((2^39)*511))/(2^30) = 510 */ - .quad level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE_NOENC + i = 0 + .rept L3_KERNEL_ENTRY_COUNT + .quad level2_kernel_pgt - __START_KERNEL_map + _KERNPG_TABLE_NOENC \ + + PAGE_SIZE*i + i = i + 1 + .endr .quad level2_fixmap_pgt - __START_KERNEL_map + _PAGE_TABLE_NOENC NEXT_PAGE(level2_kernel_pgt) -- 2.14.2.920.gcf0c67979c-goog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 27/27] x86/kaslr: Add option to extend KASLR range from 1GB to 3GB Date: Wed, 4 Oct 2017 14:20:03 -0700 Message-ID: <20171004212003.28296-28-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 QWRkIGEgbmV3IENPTkZJR19SQU5ET01JWkVfQkFTRV9MQVJHRSBvcHRpb24gdG8gYmVuZWZpdCBm cm9tIFBJRQpzdXBwb3J0LiBJdCBpbmNyZWFzZXMgdGhlIEtBU0xSIHJhbmdlIGZyb20gMUdCIHRv IDNHQi4gVGhlIG5ldyByYW5nZQpzdGFycyBhdCAweGZmZmZmZmZmMDAwMDAwMDAganVzdCBhYm92 ZSB0aGUgRUZJIG1lbW9yeSByZWdpb24uIFRoaXMKb3B0aW9uIGlzIG9mZiBieSBkZWZhdWx0LgoK VGhlIGJvb3QgY29kZSBpcyBhZGFwdGVkIHRvIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgcGFnZSB0 YWJsZSBzcGFubmluZwp0aHJlZSBQVUQgcGFnZXMuCgpUaGUgcmVsb2NhdGlvbiB0YWJsZSB1c2Vz IDY0LWJpdCBpbnRlZ2VycyBnZW5lcmF0ZWQgd2l0aCB0aGUgdXBkYXRlZApyZWxvY2F0aW9uIHRv b2wgd2l0aCB0aGUgbGFyZ2UtcmVsb2Mgb3B0aW9uLgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdh cm5pZXIgPHRoZ2FybmllQGdvb2dsZS5jb20+Ci0tLQogYXJjaC94ODYvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni9ib290L2Nv bXByZXNzZWQvTWFrZWZpbGUgICAgfCAgNSArKysrKwogYXJjaC94ODYvYm9vdC9jb21wcmVzc2Vk L21pc2MuYyAgICAgIHwgMTAgKysrKysrKysrLQogYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZV82 NF90eXBlcy5oIHwgIDkgKysrKysrKysrCiBhcmNoL3g4Ni9rZXJuZWwvaGVhZDY0LmMgICAgICAg ICAgICAgfCAxNSArKysrKysrKysrKystLS0KIGFyY2gveDg2L2tlcm5lbC9oZWFkXzY0LlMgICAg ICAgICAgICB8IDExICsrKysrKysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMo KyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gv eDg2L0tjb25maWcKaW5kZXggYjkyZjk2OTIzNzEyLi44MWY0NTEyNTQ5ZDEgMTAwNjQ0Ci0tLSBh L2FyY2gveDg2L0tjb25maWcKKysrIGIvYXJjaC94ODYvS2NvbmZpZwpAQCAtMjE0OSw2ICsyMTQ5 LDI3IEBAIGNvbmZpZyBYODZfUElFCiAJc2VsZWN0IE1PRFVMRV9SRUxfQ1JDUyBpZiBNT0RWRVJT SU9OUwogCXNlbGVjdCBYODZfR0xPQkFMX1NUQUNLUFJPVEVDVE9SIGlmIENDX1NUQUNLUFJPVEVD VE9SCiAKK2NvbmZpZyBSQU5ET01JWkVfQkFTRV9MQVJHRQorCWJvb2wgIkluY3JlYXNlIHRoZSBy YW5kb21pemF0aW9uIHJhbmdlIG9mIHRoZSBrZXJuZWwgaW1hZ2UiCisJZGVwZW5kcyBvbiBYODZf NjQgJiYgUkFORE9NSVpFX0JBU0UKKwlzZWxlY3QgWDg2X1BJRQorCXNlbGVjdCBYODZfTU9EVUxF X1BMVFMgaWYgTU9EVUxFUworCWRlZmF1bHQgbgorCS0tLWhlbHAtLS0KKwkgIEJ1aWxkIHRoZSBr ZXJuZWwgYXMgYSBQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlIChQSUUpIGFuZAorCSAg aW5jcmVhc2UgdGhlIGF2YWlsYWJsZSByYW5kb21pemF0aW9uIHJhbmdlIGZyb20gMUdCIHRvIDNH Qi4KKworCSAgVGhpcyBvcHRpb24gaW1wYWN0cyBwZXJmb3JtYW5jZSBvbiBrZXJuZWwgQ1BVIGlu dGVuc2l2ZSB3b3JrbG9hZHMgdXAKKwkgIHRvIDEwJSBkdWUgdG8gUElFIGdlbmVyYXRlZCBjb2Rl LiBJbXBhY3Qgb24gdXNlci1tb2RlIHByb2Nlc3NlcyBhbmQKKwkgIHR5cGljYWwgdXNhZ2Ugd291 bGQgYmUgc2lnbmlmaWNhbnRseSBsZXNzICgwLjUwJSB3aGVuIHlvdSBidWlsZCB0aGUKKwkgIGtl cm5lbCkuCisKKwkgIFRoZSBrZXJuZWwgYW5kIG1vZHVsZXMgd2lsbCBnZW5lcmF0ZSBzbGlnaHRs eSBtb3JlIGFzc2VtYmx5ICgxIHRvIDIlCisJICBpbmNyZWFzZSBvbiB0aGUgLnRleHQgc2VjdGlv bnMpLiBUaGUgdm1saW51eCBiaW5hcnkgd2lsbCBiZQorCSAgc2lnbmlmaWNhbnRseSBzbWFsbGVy IGR1ZSB0byBsZXNzIHJlbG9jYXRpb25zLgorCisJICBJZiB1bnN1cmUgc2F5IE4KKwogY29uZmln IEhPVFBMVUdfQ1BVCiAJYm9vbCAiU3VwcG9ydCBmb3IgaG90LXBsdWdnYWJsZSBDUFVzIgogCWRl cGVuZHMgb24gU01QCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZp bGUgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKaW5kZXggOGE5NTgyNzRiNTRj Li45NGRmZWU1YTdjZDIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9NYWtl ZmlsZQorKysgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKQEAgLTExMiw3ICsx MTIsMTIgQEAgJChvYmopL3ZtbGludXguYmluOiB2bWxpbnV4IEZPUkNFCiAKIHRhcmdldHMgKz0g JChwYXRzdWJzdCAkKG9iaikvJSwlLCQodm1saW51eC1vYmpzLXkpKSB2bWxpbnV4LmJpbi5hbGwg dm1saW51eC5yZWxvY3MKIAorIyBMYXJnZSByYW5kb21pemF0aW9uIHJlcXVpcmUgYmlnZ2VyIHJl bG9jYXRpb24gdGFibGUKK2lmZXEgKCQoQ09ORklHX1JBTkRPTUlaRV9CQVNFX0xBUkdFKSx5KQor Q01EX1JFTE9DUyA9IGFyY2gveDg2L3Rvb2xzL3JlbG9jcyAtLWxhcmdlLXJlbG9jCitlbHNlCiBD TURfUkVMT0NTID0gYXJjaC94ODYvdG9vbHMvcmVsb2NzCitlbmRpZgogcXVpZXRfY21kX3JlbG9j cyA9IFJFTE9DUyAgJEAKICAgICAgIGNtZF9yZWxvY3MgPSAkKENNRF9SRUxPQ1MpICQ8ID4gJEA7 JChDTURfUkVMT0NTKSAtLWFicy1yZWxvY3MgJDwKICQob2JqKS92bWxpbnV4LnJlbG9jczogdm1s aW51eCBGT1JDRQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuYyBi L2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjLmMKaW5kZXggYzE0MjE3Y2QwMTU1Li5jMWFj OWYyZTI4M2QgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjLmMKKysr IGIvYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuYwpAQCAtMTY5LDEwICsxNjksMTggQEAg dm9pZCBfX3B1dGhleCh1bnNpZ25lZCBsb25nIHZhbHVlKQogfQogCiAjaWYgQ09ORklHX1g4Nl9O RUVEX1JFTE9DUworCisvKiBMYXJnZSByYW5kb21pemF0aW9uIGdvIGxvd2VyIHRoYW4gLTJHIGFu ZCB1c2UgbGFyZ2UgcmVsb2NhdGlvbiB0YWJsZSAqLworI2lmZGVmIENPTkZJR19SQU5ET01JWkVf QkFTRV9MQVJHRQordHlwZWRlZiBsb25nIHJlbF90OworI2Vsc2UKK3R5cGVkZWYgaW50IHJlbF90 OworI2VuZGlmCisKIHN0YXRpYyB2b2lkIGhhbmRsZV9yZWxvY2F0aW9ucyh2b2lkICpvdXRwdXQs IHVuc2lnbmVkIGxvbmcgb3V0cHV0X2xlbiwKIAkJCSAgICAgICB1bnNpZ25lZCBsb25nIHZpcnRf YWRkcikKIHsKLQlpbnQgKnJlbG9jOworCXJlbF90ICpyZWxvYzsKIAl1bnNpZ25lZCBsb25nIGRl bHRhLCBtYXAsIHB0cjsKIAl1bnNpZ25lZCBsb25nIG1pbl9hZGRyID0gKHVuc2lnbmVkIGxvbmcp b3V0cHV0OwogCXVuc2lnbmVkIGxvbmcgbWF4X2FkZHIgPSBtaW5fYWRkciArIChWT19fX2Jzc19z dGFydCAtIFZPX190ZXh0KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2Vf NjRfdHlwZXMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjRfdHlwZXMuaAppbmRleCAz ZjVmMDhiMDEwZDAuLjZiNjVmODQ2ZGQ2NCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9h c20vcGFnZV82NF90eXBlcy5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjRfdHlw ZXMuaApAQCAtNDgsNyArNDgsMTEgQEAKICNkZWZpbmUgX19QQUdFX09GRlNFVCAgICAgICAgICAg X19QQUdFX09GRlNFVF9CQVNFCiAjZW5kaWYgLyogQ09ORklHX1JBTkRPTUlaRV9NRU1PUlkgKi8K IAorI2lmZGVmIENPTkZJR19SQU5ET01JWkVfQkFTRV9MQVJHRQorI2RlZmluZSBfX1NUQVJUX0tF Uk5FTF9tYXAJX0FDKDB4ZmZmZmZmZmYwMDAwMDAwMCwgVUwpCisjZWxzZQogI2RlZmluZSBfX1NU QVJUX0tFUk5FTF9tYXAJX0FDKDB4ZmZmZmZmZmY4MDAwMDAwMCwgVUwpCisjZW5kaWYgLyogQ09O RklHX1JBTkRPTUlaRV9CQVNFX0xBUkdFICovCiAKIC8qIFNlZSBEb2N1bWVudGF0aW9uL3g4Ni94 ODZfNjQvbW0udHh0IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBtZW1vcnkgbWFwLiAqLwogI2lm ZGVmIENPTkZJR19YODZfNUxFVkVMCkBAIC02NSw5ICs2OSwxNCBAQAogICogNTEyTWlCIGJ5IGRl ZmF1bHQsIGxlYXZpbmcgMS41R2lCIGZvciBtb2R1bGVzIG9uY2UgdGhlIHBhZ2UgdGFibGVzCiAg KiBhcmUgZnVsbHkgc2V0IHVwLiBJZiBrZXJuZWwgQVNMUiBpcyBjb25maWd1cmVkLCBpdCBjYW4g ZXh0ZW5kIHRoZQogICoga2VybmVsIHBhZ2UgdGFibGUgbWFwcGluZywgcmVkdWNpbmcgdGhlIHNp emUgb2YgdGhlIG1vZHVsZXMgYXJlYS4KKyAqIE9uIFBJRSwgd2UgcmVsb2NhdGUgdGhlIGJpbmFy eSAyRyBsb3dlciBzbyBhZGQgdGhpcyBleHRyYSBzcGFjZS4KICAqLwogI2lmIGRlZmluZWQoQ09O RklHX1JBTkRPTUlaRV9CQVNFKQorI2lmZGVmIENPTkZJR19SQU5ET01JWkVfQkFTRV9MQVJHRQor I2RlZmluZSBLRVJORUxfSU1BR0VfU0laRQkoX0FDKDMsIFVMKSAqIDEwMjQgKiAxMDI0ICogMTAy NCkKKyNlbHNlCiAjZGVmaW5lIEtFUk5FTF9JTUFHRV9TSVpFCSgxMDI0ICogMTAyNCAqIDEwMjQp CisjZW5kaWYKICNlbHNlCiAjZGVmaW5lIEtFUk5FTF9JTUFHRV9TSVpFCSg1MTIgKiAxMDI0ICog MTAyNCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jIGIvYXJj aC94ODYva2VybmVsL2hlYWQ2NC5jCmluZGV4IGI2MzYzZjBkMTFhNy4uZDYwM2QwZjVhNDBhIDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvaGVhZDY0LmMKKysrIGIvYXJjaC94ODYva2VybmVs L2hlYWQ2NC5jCkBAIC0zOSw2ICszOSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgX19pbml0ZGF0 YSBuZXh0X2Vhcmx5X3BndDsKIHBtZHZhbF90IGVhcmx5X3BtZF9mbGFncyA9IF9fUEFHRV9LRVJO RUxfTEFSR0UgJiB+KF9QQUdFX0dMT0JBTCB8IF9QQUdFX05YKTsKIAogI2RlZmluZSBfX2hlYWQJ X19zZWN0aW9uKC5oZWFkLnRleHQpCisjZGVmaW5lIHB1ZF9jb3VudCh4KSAgICgoKHggKyAoUFVE X1NJWkUgLSAxKSkgJiB+KFBVRF9TSVpFIC0gMSkpID4+IFBVRF9TSElGVCkKIAogc3RhdGljIHZv aWQgX19oZWFkICpmaXh1cF9wb2ludGVyKHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBwaHlzYWRk cikKIHsKQEAgLTU2LDYgKzU3LDggQEAgdW5zaWduZWQgbG9uZyBfX2hlYWQgbm90cmFjZSBfX3N0 YXJ0dXBfNjQodW5zaWduZWQgbG9uZyBwaHlzYWRkciwKIHsKIAl1bnNpZ25lZCBsb25nIGxvYWRf ZGVsdGEsICpwOwogCXVuc2lnbmVkIGxvbmcgcGd0YWJsZV9mbGFnczsKKwl1bnNpZ25lZCBsb25n IGxldmVsM19rZXJuZWxfc3RhcnQsIGxldmVsM19rZXJuZWxfY291bnQ7CisJdW5zaWduZWQgbG9u ZyBsZXZlbDNfZml4bWFwX3N0YXJ0OwogCXBnZHZhbF90ICpwZ2Q7CiAJcDRkdmFsX3QgKnA0ZDsK IAlwdWR2YWxfdCAqcHVkOwpAQCAtODMsNiArODYsMTEgQEAgdW5zaWduZWQgbG9uZyBfX2hlYWQg bm90cmFjZSBfX3N0YXJ0dXBfNjQodW5zaWduZWQgbG9uZyBwaHlzYWRkciwKIAkvKiBJbmNsdWRl IHRoZSBTTUUgZW5jcnlwdGlvbiBtYXNrIGluIHRoZSBmaXh1cCB2YWx1ZSAqLwogCWxvYWRfZGVs dGEgKz0gc21lX2dldF9tZV9tYXNrKCk7CiAKKwkvKiBMb29rIGF0IHRoZSByYW5kb21pemF0aW9u IHNwcmVhZCB0byBhZGFwdCBwYWdlIHRhYmxlIHVzZWQgKi8KKwlsZXZlbDNfa2VybmVsX3N0YXJ0 ID0gcHVkX2luZGV4KF9fU1RBUlRfS0VSTkVMX21hcCk7CisJbGV2ZWwzX2tlcm5lbF9jb3VudCA9 IHB1ZF9jb3VudChLRVJORUxfSU1BR0VfU0laRSk7CisJbGV2ZWwzX2ZpeG1hcF9zdGFydCA9IGxl dmVsM19rZXJuZWxfc3RhcnQgKyBsZXZlbDNfa2VybmVsX2NvdW50OworCiAJLyogRml4dXAgdGhl IHBoeXNpY2FsIGFkZHJlc3NlcyBpbiB0aGUgcGFnZSB0YWJsZSAqLwogCiAJcGdkID0gZml4dXBf cG9pbnRlcigmZWFybHlfdG9wX3BndCwgcGh5c2FkZHIpOwpAQCAtOTQsOCArMTAyLDkgQEAgdW5z aWduZWQgbG9uZyBfX2hlYWQgbm90cmFjZSBfX3N0YXJ0dXBfNjQodW5zaWduZWQgbG9uZyBwaHlz YWRkciwKIAl9CiAKIAlwdWQgPSBmaXh1cF9wb2ludGVyKCZsZXZlbDNfa2VybmVsX3BndCwgcGh5 c2FkZHIpOwotCXB1ZFs1MTBdICs9IGxvYWRfZGVsdGE7Ci0JcHVkWzUxMV0gKz0gbG9hZF9kZWx0 YTsKKwlmb3IgKGkgPSAwOyBpIDwgbGV2ZWwzX2tlcm5lbF9jb3VudDsgaSsrKQorCQlwdWRbbGV2 ZWwzX2tlcm5lbF9zdGFydCArIGldICs9IGxvYWRfZGVsdGE7CisJcHVkW2xldmVsM19maXhtYXBf c3RhcnRdICs9IGxvYWRfZGVsdGE7CiAKIAlwbWQgPSBmaXh1cF9wb2ludGVyKGxldmVsMl9maXht YXBfcGd0LCBwaHlzYWRkcik7CiAJcG1kWzUwNl0gKz0gbG9hZF9kZWx0YTsKQEAgLTE1MCw3ICsx NTksNyBAQCB1bnNpZ25lZCBsb25nIF9faGVhZCBub3RyYWNlIF9fc3RhcnR1cF82NCh1bnNpZ25l ZCBsb25nIHBoeXNhZGRyLAogCSAqLwogCiAJcG1kID0gZml4dXBfcG9pbnRlcihsZXZlbDJfa2Vy bmVsX3BndCwgcGh5c2FkZHIpOwotCWZvciAoaSA9IDA7IGkgPCBQVFJTX1BFUl9QTUQ7IGkrKykg eworCWZvciAoaSA9IDA7IGkgPCBQVFJTX1BFUl9QTUQgKiBsZXZlbDNfa2VybmVsX2NvdW50OyBp KyspIHsKIAkJaWYgKHBtZFtpXSAmIF9QQUdFX1BSRVNFTlQpCiAJCQlwbWRbaV0gKz0gbG9hZF9k ZWx0YTsKIAl9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvaGVhZF82NC5TIGIvYXJjaC94 ODYva2VybmVsL2hlYWRfNjQuUwppbmRleCBkZjUxOThlMzEwZmMuLjc5MThmZmVmYzljOSAxMDA2 NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2hlYWRfNjQuUworKysgYi9hcmNoL3g4Ni9rZXJuZWwv aGVhZF82NC5TCkBAIC0zOSwxMSArMzksMTUgQEAKIAogI2RlZmluZSBwNGRfaW5kZXgoeCkJKCgo eCkgPj4gUDREX1NISUZUKSAmIChQVFJTX1BFUl9QNEQtMSkpCiAjZGVmaW5lIHB1ZF9pbmRleCh4 KQkoKCh4KSA+PiBQVURfU0hJRlQpICYgKFBUUlNfUEVSX1BVRC0xKSkKKyNkZWZpbmUgcHVkX2Nv dW50KHgpICAgKCgoeCArIChQVURfU0laRSAtIDEpKSAmIH4oUFVEX1NJWkUgLSAxKSkgPj4gUFVE X1NISUZUKQogCiBQR0RfUEFHRV9PRkZTRVQgPSBwZ2RfaW5kZXgoX19QQUdFX09GRlNFVF9CQVNF KQogUEdEX1NUQVJUX0tFUk5FTCA9IHBnZF9pbmRleChfX1NUQVJUX0tFUk5FTF9tYXApCiBMM19T VEFSVF9LRVJORUwgPSBwdWRfaW5kZXgoX19TVEFSVF9LRVJORUxfbWFwKQogCisvKiBBZGFwdCBw YWdlIHRhYmxlIEwzIHNwYWNlIGJhc2VkIG9uIHJhbmdlIG9mIHJhbmRvbWl6YXRpb24gKi8KK0wz X0tFUk5FTF9FTlRSWV9DT1VOVCA9IHB1ZF9jb3VudChLRVJORUxfSU1BR0VfU0laRSkKKwogCS50 ZXh0CiAJX19IRUFECiAJLmNvZGU2NApAQCAtNDEzLDcgKzQxNywxMiBAQCBORVhUX1BBR0UobGV2 ZWw0X2tlcm5lbF9wZ3QpCiBORVhUX1BBR0UobGV2ZWwzX2tlcm5lbF9wZ3QpCiAJLmZpbGwJTDNf U1RBUlRfS0VSTkVMLDgsMAogCS8qICgyXjQ4LSgyKjEwMjQqMTAyNCoxMDI0KS0oKDJeMzkpKjUx MSkpLygyXjMwKSA9IDUxMCAqLwotCS5xdWFkCWxldmVsMl9rZXJuZWxfcGd0IC0gX19TVEFSVF9L RVJORUxfbWFwICsgX0tFUk5QR19UQUJMRV9OT0VOQworCWkgPSAwCisJLnJlcHQJTDNfS0VSTkVM X0VOVFJZX0NPVU5UCisJLnF1YWQJbGV2ZWwyX2tlcm5lbF9wZ3QgLSBfX1NUQVJUX0tFUk5FTF9t YXAgKyBfS0VSTlBHX1RBQkxFX05PRU5DIFwKKwkJKyBQQUdFX1NJWkUqaQorCWkgPSBpICsgMQor CS5lbmRyCiAJLnF1YWQJbGV2ZWwyX2ZpeG1hcF9wZ3QgLSBfX1NUQVJUX0tFUk5FTF9tYXAgKyBf UEFHRV9UQUJMRV9OT0VOQwogCiBORVhUX1BBR0UobGV2ZWwyX2tlcm5lbF9wZ3QpCi0tIAoyLjE0 LjIuOTIwLmdjZjBjNjc5NzljLWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 27/27] x86/kaslr: Add option to extend KASLR range from 1GB to 3GB Date: Wed, 4 Oct 2017 14:20:03 -0700 Message-ID: <20171004212003.28296-28-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 QWRkIGEgbmV3IENPTkZJR19SQU5ET01JWkVfQkFTRV9MQVJHRSBvcHRpb24gdG8gYmVuZWZpdCBm cm9tIFBJRQpzdXBwb3J0LiBJdCBpbmNyZWFzZXMgdGhlIEtBU0xSIHJhbmdlIGZyb20gMUdCIHRv IDNHQi4gVGhlIG5ldyByYW5nZQpzdGFycyBhdCAweGZmZmZmZmZmMDAwMDAwMDAganVzdCBhYm92 ZSB0aGUgRUZJIG1lbW9yeSByZWdpb24uIFRoaXMKb3B0aW9uIGlzIG9mZiBieSBkZWZhdWx0LgoK VGhlIGJvb3QgY29kZSBpcyBhZGFwdGVkIHRvIGNyZWF0ZSB0aGUgYXBwcm9wcmlhdGUgcGFnZSB0 YWJsZSBzcGFubmluZwp0aHJlZSBQVUQgcGFnZXMuCgpUaGUgcmVsb2NhdGlvbiB0YWJsZSB1c2Vz IDY0LWJpdCBpbnRlZ2VycyBnZW5lcmF0ZWQgd2l0aCB0aGUgdXBkYXRlZApyZWxvY2F0aW9uIHRv b2wgd2l0aCB0aGUgbGFyZ2UtcmVsb2Mgb3B0aW9uLgoKU2lnbmVkLW9mZi1ieTogVGhvbWFzIEdh cm5pZXIgPHRoZ2FybmllQGdvb2dsZS5jb20+Ci0tLQogYXJjaC94ODYvS2NvbmZpZyAgICAgICAg ICAgICAgICAgICAgIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCiBhcmNoL3g4Ni9ib290L2Nv bXByZXNzZWQvTWFrZWZpbGUgICAgfCAgNSArKysrKwogYXJjaC94ODYvYm9vdC9jb21wcmVzc2Vk L21pc2MuYyAgICAgIHwgMTAgKysrKysrKysrLQogYXJjaC94ODYvaW5jbHVkZS9hc20vcGFnZV82 NF90eXBlcy5oIHwgIDkgKysrKysrKysrCiBhcmNoL3g4Ni9rZXJuZWwvaGVhZDY0LmMgICAgICAg ICAgICAgfCAxNSArKysrKysrKysrKystLS0KIGFyY2gveDg2L2tlcm5lbC9oZWFkXzY0LlMgICAg ICAgICAgICB8IDExICsrKysrKysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMo KyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2NvbmZpZyBiL2FyY2gv eDg2L0tjb25maWcKaW5kZXggYjkyZjk2OTIzNzEyLi44MWY0NTEyNTQ5ZDEgMTAwNjQ0Ci0tLSBh L2FyY2gveDg2L0tjb25maWcKKysrIGIvYXJjaC94ODYvS2NvbmZpZwpAQCAtMjE0OSw2ICsyMTQ5 LDI3IEBAIGNvbmZpZyBYODZfUElFCiAJc2VsZWN0IE1PRFVMRV9SRUxfQ1JDUyBpZiBNT0RWRVJT SU9OUwogCXNlbGVjdCBYODZfR0xPQkFMX1NUQUNLUFJPVEVDVE9SIGlmIENDX1NUQUNLUFJPVEVD VE9SCiAKK2NvbmZpZyBSQU5ET01JWkVfQkFTRV9MQVJHRQorCWJvb2wgIkluY3JlYXNlIHRoZSBy YW5kb21pemF0aW9uIHJhbmdlIG9mIHRoZSBrZXJuZWwgaW1hZ2UiCisJZGVwZW5kcyBvbiBYODZf NjQgJiYgUkFORE9NSVpFX0JBU0UKKwlzZWxlY3QgWDg2X1BJRQorCXNlbGVjdCBYODZfTU9EVUxF X1BMVFMgaWYgTU9EVUxFUworCWRlZmF1bHQgbgorCS0tLWhlbHAtLS0KKwkgIEJ1aWxkIHRoZSBr ZXJuZWwgYXMgYSBQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlIChQSUUpIGFuZAorCSAg aW5jcmVhc2UgdGhlIGF2YWlsYWJsZSByYW5kb21pemF0aW9uIHJhbmdlIGZyb20gMUdCIHRvIDNH Qi4KKworCSAgVGhpcyBvcHRpb24gaW1wYWN0cyBwZXJmb3JtYW5jZSBvbiBrZXJuZWwgQ1BVIGlu dGVuc2l2ZSB3b3JrbG9hZHMgdXAKKwkgIHRvIDEwJSBkdWUgdG8gUElFIGdlbmVyYXRlZCBjb2Rl LiBJbXBhY3Qgb24gdXNlci1tb2RlIHByb2Nlc3NlcyBhbmQKKwkgIHR5cGljYWwgdXNhZ2Ugd291 bGQgYmUgc2lnbmlmaWNhbnRseSBsZXNzICgwLjUwJSB3aGVuIHlvdSBidWlsZCB0aGUKKwkgIGtl cm5lbCkuCisKKwkgIFRoZSBrZXJuZWwgYW5kIG1vZHVsZXMgd2lsbCBnZW5lcmF0ZSBzbGlnaHRs eSBtb3JlIGFzc2VtYmx5ICgxIHRvIDIlCisJICBpbmNyZWFzZSBvbiB0aGUgLnRleHQgc2VjdGlv bnMpLiBUaGUgdm1saW51eCBiaW5hcnkgd2lsbCBiZQorCSAgc2lnbmlmaWNhbnRseSBzbWFsbGVy IGR1ZSB0byBsZXNzIHJlbG9jYXRpb25zLgorCisJICBJZiB1bnN1cmUgc2F5IE4KKwogY29uZmln IEhPVFBMVUdfQ1BVCiAJYm9vbCAiU3VwcG9ydCBmb3IgaG90LXBsdWdnYWJsZSBDUFVzIgogCWRl cGVuZHMgb24gU01QCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZp bGUgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKaW5kZXggOGE5NTgyNzRiNTRj Li45NGRmZWU1YTdjZDIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9NYWtl ZmlsZQorKysgYi9hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKQEAgLTExMiw3ICsx MTIsMTIgQEAgJChvYmopL3ZtbGludXguYmluOiB2bWxpbnV4IEZPUkNFCiAKIHRhcmdldHMgKz0g JChwYXRzdWJzdCAkKG9iaikvJSwlLCQodm1saW51eC1vYmpzLXkpKSB2bWxpbnV4LmJpbi5hbGwg dm1saW51eC5yZWxvY3MKIAorIyBMYXJnZSByYW5kb21pemF0aW9uIHJlcXVpcmUgYmlnZ2VyIHJl bG9jYXRpb24gdGFibGUKK2lmZXEgKCQoQ09ORklHX1JBTkRPTUlaRV9CQVNFX0xBUkdFKSx5KQor Q01EX1JFTE9DUyA9IGFyY2gveDg2L3Rvb2xzL3JlbG9jcyAtLWxhcmdlLXJlbG9jCitlbHNlCiBD TURfUkVMT0NTID0gYXJjaC94ODYvdG9vbHMvcmVsb2NzCitlbmRpZgogcXVpZXRfY21kX3JlbG9j cyA9IFJFTE9DUyAgJEAKICAgICAgIGNtZF9yZWxvY3MgPSAkKENNRF9SRUxPQ1MpICQ8ID4gJEA7 JChDTURfUkVMT0NTKSAtLWFicy1yZWxvY3MgJDwKICQob2JqKS92bWxpbnV4LnJlbG9jczogdm1s aW51eCBGT1JDRQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuYyBi L2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjLmMKaW5kZXggYzE0MjE3Y2QwMTU1Li5jMWFj OWYyZTI4M2QgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjLmMKKysr IGIvYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuYwpAQCAtMTY5LDEwICsxNjksMTggQEAg dm9pZCBfX3B1dGhleCh1bnNpZ25lZCBsb25nIHZhbHVlKQogfQogCiAjaWYgQ09ORklHX1g4Nl9O RUVEX1JFTE9DUworCisvKiBMYXJnZSByYW5kb21pemF0aW9uIGdvIGxvd2VyIHRoYW4gLTJHIGFu ZCB1c2UgbGFyZ2UgcmVsb2NhdGlvbiB0YWJsZSAqLworI2lmZGVmIENPTkZJR19SQU5ET01JWkVf QkFTRV9MQVJHRQordHlwZWRlZiBsb25nIHJlbF90OworI2Vsc2UKK3R5cGVkZWYgaW50IHJlbF90 OworI2VuZGlmCisKIHN0YXRpYyB2b2lkIGhhbmRsZV9yZWxvY2F0aW9ucyh2b2lkICpvdXRwdXQs IHVuc2lnbmVkIGxvbmcgb3V0cHV0X2xlbiwKIAkJCSAgICAgICB1bnNpZ25lZCBsb25nIHZpcnRf YWRkcikKIHsKLQlpbnQgKnJlbG9jOworCXJlbF90ICpyZWxvYzsKIAl1bnNpZ25lZCBsb25nIGRl bHRhLCBtYXAsIHB0cjsKIAl1bnNpZ25lZCBsb25nIG1pbl9hZGRyID0gKHVuc2lnbmVkIGxvbmcp b3V0cHV0OwogCXVuc2lnbmVkIGxvbmcgbWF4X2FkZHIgPSBtaW5fYWRkciArIChWT19fX2Jzc19z dGFydCAtIFZPX190ZXh0KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2Vf NjRfdHlwZXMuaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjRfdHlwZXMuaAppbmRleCAz ZjVmMDhiMDEwZDAuLjZiNjVmODQ2ZGQ2NCAxMDA2NDQKLS0tIGEvYXJjaC94ODYvaW5jbHVkZS9h c20vcGFnZV82NF90eXBlcy5oCisrKyBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3BhZ2VfNjRfdHlw ZXMuaApAQCAtNDgsNyArNDgsMTEgQEAKICNkZWZpbmUgX19QQUdFX09GRlNFVCAgICAgICAgICAg X19QQUdFX09GRlNFVF9CQVNFCiAjZW5kaWYgLyogQ09ORklHX1JBTkRPTUlaRV9NRU1PUlkgKi8K IAorI2lmZGVmIENPTkZJR19SQU5ET01JWkVfQkFTRV9MQVJHRQorI2RlZmluZSBfX1NUQVJUX0tF Uk5FTF9tYXAJX0FDKDB4ZmZmZmZmZmYwMDAwMDAwMCwgVUwpCisjZWxzZQogI2RlZmluZSBfX1NU QVJUX0tFUk5FTF9tYXAJX0FDKDB4ZmZmZmZmZmY4MDAwMDAwMCwgVUwpCisjZW5kaWYgLyogQ09O RklHX1JBTkRPTUlaRV9CQVNFX0xBUkdFICovCiAKIC8qIFNlZSBEb2N1bWVudGF0aW9uL3g4Ni94 ODZfNjQvbW0udHh0IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSBtZW1vcnkgbWFwLiAqLwogI2lm ZGVmIENPTkZJR19YODZfNUxFVkVMCkBAIC02NSw5ICs2OSwxNCBAQAogICogNTEyTWlCIGJ5IGRl ZmF1bHQsIGxlYXZpbmcgMS41R2lCIGZvciBtb2R1bGVzIG9uY2UgdGhlIHBhZ2UgdGFibGVzCiAg KiBhcmUgZnVsbHkgc2V0IHVwLiBJZiBrZXJuZWwgQVNMUiBpcyBjb25maWd1cmVkLCBpdCBjYW4g ZXh0ZW5kIHRoZQogICoga2VybmVsIHBhZ2UgdGFibGUgbWFwcGluZywgcmVkdWNpbmcgdGhlIHNp emUgb2YgdGhlIG1vZHVsZXMgYXJlYS4KKyAqIE9uIFBJRSwgd2UgcmVsb2NhdGUgdGhlIGJpbmFy eSAyRyBsb3dlciBzbyBhZGQgdGhpcyBleHRyYSBzcGFjZS4KICAqLwogI2lmIGRlZmluZWQoQ09O RklHX1JBTkRPTUlaRV9CQVNFKQorI2lmZGVmIENPTkZJR19SQU5ET01JWkVfQkFTRV9MQVJHRQor I2RlZmluZSBLRVJORUxfSU1BR0VfU0laRQkoX0FDKDMsIFVMKSAqIDEwMjQgKiAxMDI0ICogMTAy NCkKKyNlbHNlCiAjZGVmaW5lIEtFUk5FTF9JTUFHRV9TSVpFCSgxMDI0ICogMTAyNCAqIDEwMjQp CisjZW5kaWYKICNlbHNlCiAjZGVmaW5lIEtFUk5FTF9JTUFHRV9TSVpFCSg1MTIgKiAxMDI0ICog MTAyNCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2hlYWQ2NC5jIGIvYXJj aC94ODYva2VybmVsL2hlYWQ2NC5jCmluZGV4IGI2MzYzZjBkMTFhNy4uZDYwM2QwZjVhNDBhIDEw MDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwvaGVhZDY0LmMKKysrIGIvYXJjaC94ODYva2VybmVs L2hlYWQ2NC5jCkBAIC0zOSw2ICszOSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgX19pbml0ZGF0 YSBuZXh0X2Vhcmx5X3BndDsKIHBtZHZhbF90IGVhcmx5X3BtZF9mbGFncyA9IF9fUEFHRV9LRVJO RUxfTEFSR0UgJiB+KF9QQUdFX0dMT0JBTCB8IF9QQUdFX05YKTsKIAogI2RlZmluZSBfX2hlYWQJ X19zZWN0aW9uKC5oZWFkLnRleHQpCisjZGVmaW5lIHB1ZF9jb3VudCh4KSAgICgoKHggKyAoUFVE X1NJWkUgLSAxKSkgJiB+KFBVRF9TSVpFIC0gMSkpID4+IFBVRF9TSElGVCkKIAogc3RhdGljIHZv aWQgX19oZWFkICpmaXh1cF9wb2ludGVyKHZvaWQgKnB0ciwgdW5zaWduZWQgbG9uZyBwaHlzYWRk cikKIHsKQEAgLTU2LDYgKzU3LDggQEAgdW5zaWduZWQgbG9uZyBfX2hlYWQgbm90cmFjZSBfX3N0 YXJ0dXBfNjQodW5zaWduZWQgbG9uZyBwaHlzYWRkciwKIHsKIAl1bnNpZ25lZCBsb25nIGxvYWRf ZGVsdGEsICpwOwogCXVuc2lnbmVkIGxvbmcgcGd0YWJsZV9mbGFnczsKKwl1bnNpZ25lZCBsb25n IGxldmVsM19rZXJuZWxfc3RhcnQsIGxldmVsM19rZXJuZWxfY291bnQ7CisJdW5zaWduZWQgbG9u ZyBsZXZlbDNfZml4bWFwX3N0YXJ0OwogCXBnZHZhbF90ICpwZ2Q7CiAJcDRkdmFsX3QgKnA0ZDsK IAlwdWR2YWxfdCAqcHVkOwpAQCAtODMsNiArODYsMTEgQEAgdW5zaWduZWQgbG9uZyBfX2hlYWQg bm90cmFjZSBfX3N0YXJ0dXBfNjQodW5zaWduZWQgbG9uZyBwaHlzYWRkciwKIAkvKiBJbmNsdWRl IHRoZSBTTUUgZW5jcnlwdGlvbiBtYXNrIGluIHRoZSBmaXh1cCB2YWx1ZSAqLwogCWxvYWRfZGVs dGEgKz0gc21lX2dldF9tZV9tYXNrKCk7CiAKKwkvKiBMb29rIGF0IHRoZSByYW5kb21pemF0aW9u IHNwcmVhZCB0byBhZGFwdCBwYWdlIHRhYmxlIHVzZWQgKi8KKwlsZXZlbDNfa2VybmVsX3N0YXJ0 ID0gcHVkX2luZGV4KF9fU1RBUlRfS0VSTkVMX21hcCk7CisJbGV2ZWwzX2tlcm5lbF9jb3VudCA9 IHB1ZF9jb3VudChLRVJORUxfSU1BR0VfU0laRSk7CisJbGV2ZWwzX2ZpeG1hcF9zdGFydCA9IGxl dmVsM19rZXJuZWxfc3RhcnQgKyBsZXZlbDNfa2VybmVsX2NvdW50OworCiAJLyogRml4dXAgdGhl IHBoeXNpY2FsIGFkZHJlc3NlcyBpbiB0aGUgcGFnZSB0YWJsZSAqLwogCiAJcGdkID0gZml4dXBf cG9pbnRlcigmZWFybHlfdG9wX3BndCwgcGh5c2FkZHIpOwpAQCAtOTQsOCArMTAyLDkgQEAgdW5z aWduZWQgbG9uZyBfX2hlYWQgbm90cmFjZSBfX3N0YXJ0dXBfNjQodW5zaWduZWQgbG9uZyBwaHlz YWRkciwKIAl9CiAKIAlwdWQgPSBmaXh1cF9wb2ludGVyKCZsZXZlbDNfa2VybmVsX3BndCwgcGh5 c2FkZHIpOwotCXB1ZFs1MTBdICs9IGxvYWRfZGVsdGE7Ci0JcHVkWzUxMV0gKz0gbG9hZF9kZWx0 YTsKKwlmb3IgKGkgPSAwOyBpIDwgbGV2ZWwzX2tlcm5lbF9jb3VudDsgaSsrKQorCQlwdWRbbGV2 ZWwzX2tlcm5lbF9zdGFydCArIGldICs9IGxvYWRfZGVsdGE7CisJcHVkW2xldmVsM19maXhtYXBf c3RhcnRdICs9IGxvYWRfZGVsdGE7CiAKIAlwbWQgPSBmaXh1cF9wb2ludGVyKGxldmVsMl9maXht YXBfcGd0LCBwaHlzYWRkcik7CiAJcG1kWzUwNl0gKz0gbG9hZF9kZWx0YTsKQEAgLTE1MCw3ICsx NTksNyBAQCB1bnNpZ25lZCBsb25nIF9faGVhZCBub3RyYWNlIF9fc3RhcnR1cF82NCh1bnNpZ25l ZCBsb25nIHBoeXNhZGRyLAogCSAqLwogCiAJcG1kID0gZml4dXBfcG9pbnRlcihsZXZlbDJfa2Vy bmVsX3BndCwgcGh5c2FkZHIpOwotCWZvciAoaSA9IDA7IGkgPCBQVFJTX1BFUl9QTUQ7IGkrKykg eworCWZvciAoaSA9IDA7IGkgPCBQVFJTX1BFUl9QTUQgKiBsZXZlbDNfa2VybmVsX2NvdW50OyBp KyspIHsKIAkJaWYgKHBtZFtpXSAmIF9QQUdFX1BSRVNFTlQpCiAJCQlwbWRbaV0gKz0gbG9hZF9k ZWx0YTsKIAl9CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJuZWwvaGVhZF82NC5TIGIvYXJjaC94 ODYva2VybmVsL2hlYWRfNjQuUwppbmRleCBkZjUxOThlMzEwZmMuLjc5MThmZmVmYzljOSAxMDA2 NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2hlYWRfNjQuUworKysgYi9hcmNoL3g4Ni9rZXJuZWwv aGVhZF82NC5TCkBAIC0zOSwxMSArMzksMTUgQEAKIAogI2RlZmluZSBwNGRfaW5kZXgoeCkJKCgo eCkgPj4gUDREX1NISUZUKSAmIChQVFJTX1BFUl9QNEQtMSkpCiAjZGVmaW5lIHB1ZF9pbmRleCh4 KQkoKCh4KSA+PiBQVURfU0hJRlQpICYgKFBUUlNfUEVSX1BVRC0xKSkKKyNkZWZpbmUgcHVkX2Nv dW50KHgpICAgKCgoeCArIChQVURfU0laRSAtIDEpKSAmIH4oUFVEX1NJWkUgLSAxKSkgPj4gUFVE X1NISUZUKQogCiBQR0RfUEFHRV9PRkZTRVQgPSBwZ2RfaW5kZXgoX19QQUdFX09GRlNFVF9CQVNF KQogUEdEX1NUQVJUX0tFUk5FTCA9IHBnZF9pbmRleChfX1NUQVJUX0tFUk5FTF9tYXApCiBMM19T VEFSVF9LRVJORUwgPSBwdWRfaW5kZXgoX19TVEFSVF9LRVJORUxfbWFwKQogCisvKiBBZGFwdCBw YWdlIHRhYmxlIEwzIHNwYWNlIGJhc2VkIG9uIHJhbmdlIG9mIHJhbmRvbWl6YXRpb24gKi8KK0wz X0tFUk5FTF9FTlRSWV9DT1VOVCA9IHB1ZF9jb3VudChLRVJORUxfSU1BR0VfU0laRSkKKwogCS50 ZXh0CiAJX19IRUFECiAJLmNvZGU2NApAQCAtNDEzLDcgKzQxNywxMiBAQCBORVhUX1BBR0UobGV2 ZWw0X2tlcm5lbF9wZ3QpCiBORVhUX1BBR0UobGV2ZWwzX2tlcm5lbF9wZ3QpCiAJLmZpbGwJTDNf U1RBUlRfS0VSTkVMLDgsMAogCS8qICgyXjQ4LSgyKjEwMjQqMTAyNCoxMDI0KS0oKDJeMzkpKjUx MSkpLygyXjMwKSA9IDUxMCAqLwotCS5xdWFkCWxldmVsMl9rZXJuZWxfcGd0IC0gX19TVEFSVF9L RVJORUxfbWFwICsgX0tFUk5QR19UQUJMRV9OT0VOQworCWkgPSAwCisJLnJlcHQJTDNfS0VSTkVM X0VOVFJZX0NPVU5UCisJLnF1YWQJbGV2ZWwyX2tlcm5lbF9wZ3QgLSBfX1NUQVJUX0tFUk5FTF9t YXAgKyBfS0VSTlBHX1RBQkxFX05PRU5DIFwKKwkJKyBQQUdFX1NJWkUqaQorCWkgPSBpICsgMQor CS5lbmRyCiAJLnF1YWQJbGV2ZWwyX2ZpeG1hcF9wZ3QgLSBfX1NUQVJUX0tFUk5FTF9tYXAgKyBf UEFHRV9UQUJMRV9OT0VOQwogCiBORVhUX1BBR0UobGV2ZWwyX2tlcm5lbF9wZ3QpCi0tIAoyLjE0 LjIuOTIwLmdjZjBjNjc5NzljLWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK