From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Date: Wed, 4 Oct 2017 14:19:53 -0700 Message-Id: <20171004212003.28296-18-thgarnie@google.com> In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Subject: [kernel-hardening] [RFC v3 17/27] xen: Adapt assembly for PIE support 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: Change the assembly code to use the new _ASM_GET_PTR macro which get a symbol reference while being PIE compatible. Adapt the relocation tool to ignore 32-bit Xen code. Position Independent Executable (PIE) support will allow to extended the KASLR randomization range below the -2G memory limit. Signed-off-by: Thomas Garnier --- arch/x86/tools/relocs.c | 16 +++++++++++++++- arch/x86/xen/xen-head.S | 9 +++++---- arch/x86/xen/xen-pvh.S | 13 +++++++++---- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/arch/x86/tools/relocs.c b/arch/x86/tools/relocs.c index 5d3eb2760198..bc032ad88b22 100644 --- a/arch/x86/tools/relocs.c +++ b/arch/x86/tools/relocs.c @@ -831,6 +831,16 @@ static int is_percpu_sym(ElfW(Sym) *sym, const char *symname) strncmp(symname, "init_per_cpu_", 13); } +/* + * Check if the 32-bit relocation is within the xenpvh 32-bit code. + * If so, ignores it. + */ +static int is_in_xenpvh_assembly(ElfW(Addr) offset) +{ + ElfW(Sym) *sym = sym_lookup("pvh_start_xen"); + return sym && (offset >= sym->st_value) && + (offset < (sym->st_value + sym->st_size)); +} static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym, const char *symname) @@ -892,8 +902,12 @@ static int do_reloc64(struct section *sec, Elf_Rel *rel, ElfW(Sym) *sym, * the relocations are processed. * Make sure that the offset will fit. */ - if (r_type != R_X86_64_64 && (int32_t)offset != (int64_t)offset) + if (r_type != R_X86_64_64 && + (int32_t)offset != (int64_t)offset) { + if (is_in_xenpvh_assembly(offset)) + break; die("Relocation offset doesn't fit in 32 bits\n"); + } if (r_type == R_X86_64_64) add_reloc(&relocs64, offset); diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S index 124941d09b2b..e5b7b9566191 100644 --- a/arch/x86/xen/xen-head.S +++ b/arch/x86/xen/xen-head.S @@ -25,14 +25,15 @@ ENTRY(startup_xen) /* Clear .bss */ xor %eax,%eax - mov $__bss_start, %_ASM_DI - mov $__bss_stop, %_ASM_CX + _ASM_GET_PTR(__bss_start, %_ASM_DI) + _ASM_GET_PTR(__bss_stop, %_ASM_CX) sub %_ASM_DI, %_ASM_CX shr $__ASM_SEL(2, 3), %_ASM_CX rep __ASM_SIZE(stos) - mov %_ASM_SI, xen_start_info - mov $init_thread_union+THREAD_SIZE, %_ASM_SP + _ASM_GET_PTR(xen_start_info, %_ASM_AX) + mov %_ASM_SI, (%_ASM_AX) + _ASM_GET_PTR(init_thread_union+THREAD_SIZE, %_ASM_SP) jmp xen_start_kernel END(startup_xen) diff --git a/arch/x86/xen/xen-pvh.S b/arch/x86/xen/xen-pvh.S index e1a5fbeae08d..43e234c7c2de 100644 --- a/arch/x86/xen/xen-pvh.S +++ b/arch/x86/xen/xen-pvh.S @@ -101,8 +101,8 @@ ENTRY(pvh_start_xen) call xen_prepare_pvh /* startup_64 expects boot_params in %rsi. */ - mov $_pa(pvh_bootparams), %rsi - mov $_pa(startup_64), %rax + movabs $_pa(pvh_bootparams), %rsi + movabs $_pa(startup_64), %rax jmp *%rax #else /* CONFIG_X86_64 */ @@ -137,10 +137,15 @@ END(pvh_start_xen) .section ".init.data","aw" .balign 8 + /* + * Use a quad for _pa(gdt_start) because PIE does not understand a + * long is enough. The resulting value will still be in the lower long + * part. + */ gdt: .word gdt_end - gdt_start - .long _pa(gdt_start) - .word 0 + .quad _pa(gdt_start) + .balign 8 gdt_start: .quad 0x0000000000000000 /* NULL descriptor */ .quad 0x0000000000000000 /* reserved */ -- 2.14.2.920.gcf0c67979c-goog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 17/27] xen: Adapt assembly for PIE support Date: Wed, 4 Oct 2017 14:19:53 -0700 Message-ID: <20171004212003.28296-18-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 Q2hhbmdlIHRoZSBhc3NlbWJseSBjb2RlIHRvIHVzZSB0aGUgbmV3IF9BU01fR0VUX1BUUiBtYWNy byB3aGljaCBnZXQgYQpzeW1ib2wgcmVmZXJlbmNlIHdoaWxlIGJlaW5nIFBJRSBjb21wYXRpYmxl LiBBZGFwdCB0aGUgcmVsb2NhdGlvbiB0b29sCnRvIGlnbm9yZSAzMi1iaXQgWGVuIGNvZGUuCgpQ b3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlIChQSUUpIHN1cHBvcnQgd2lsbCBhbGxvdyB0 byBleHRlbmRlZCB0aGUKS0FTTFIgcmFuZG9taXphdGlvbiByYW5nZSBiZWxvdyB0aGUgLTJHIG1l bW9yeSBsaW1pdC4KClNpZ25lZC1vZmYtYnk6IFRob21hcyBHYXJuaWVyIDx0aGdhcm5pZUBnb29n bGUuY29tPgotLS0KIGFyY2gveDg2L3Rvb2xzL3JlbG9jcy5jIHwgMTYgKysrKysrKysrKysrKysr LQogYXJjaC94ODYveGVuL3hlbi1oZWFkLlMgfCAgOSArKysrKy0tLS0KIGFyY2gveDg2L3hlbi94 ZW4tcHZoLlMgIHwgMTMgKysrKysrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRp b25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3Rvb2xzL3JlbG9j cy5jIGIvYXJjaC94ODYvdG9vbHMvcmVsb2NzLmMKaW5kZXggNWQzZWIyNzYwMTk4Li5iYzAzMmFk ODhiMjIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3Rvb2xzL3JlbG9jcy5jCisrKyBiL2FyY2gveDg2 L3Rvb2xzL3JlbG9jcy5jCkBAIC04MzEsNiArODMxLDE2IEBAIHN0YXRpYyBpbnQgaXNfcGVyY3B1 X3N5bShFbGZXKFN5bSkgKnN5bSwgY29uc3QgY2hhciAqc3ltbmFtZSkKIAkJc3RybmNtcChzeW1u YW1lLCAiaW5pdF9wZXJfY3B1XyIsIDEzKTsKIH0KIAorLyoKKyAqIENoZWNrIGlmIHRoZSAzMi1i aXQgcmVsb2NhdGlvbiBpcyB3aXRoaW4gdGhlIHhlbnB2aCAzMi1iaXQgY29kZS4KKyAqIElmIHNv LCBpZ25vcmVzIGl0LgorICovCitzdGF0aWMgaW50IGlzX2luX3hlbnB2aF9hc3NlbWJseShFbGZX KEFkZHIpIG9mZnNldCkKK3sKKwlFbGZXKFN5bSkgKnN5bSA9IHN5bV9sb29rdXAoInB2aF9zdGFy dF94ZW4iKTsKKwlyZXR1cm4gc3ltICYmIChvZmZzZXQgPj0gc3ltLT5zdF92YWx1ZSkgJiYKKwkJ KG9mZnNldCA8IChzeW0tPnN0X3ZhbHVlICsgc3ltLT5zdF9zaXplKSk7Cit9CiAKIHN0YXRpYyBp bnQgZG9fcmVsb2M2NChzdHJ1Y3Qgc2VjdGlvbiAqc2VjLCBFbGZfUmVsICpyZWwsIEVsZlcoU3lt KSAqc3ltLAogCQkgICAgICBjb25zdCBjaGFyICpzeW1uYW1lKQpAQCAtODkyLDggKzkwMiwxMiBA QCBzdGF0aWMgaW50IGRvX3JlbG9jNjQoc3RydWN0IHNlY3Rpb24gKnNlYywgRWxmX1JlbCAqcmVs LCBFbGZXKFN5bSkgKnN5bSwKIAkJICogdGhlIHJlbG9jYXRpb25zIGFyZSBwcm9jZXNzZWQuCiAJ CSAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBvZmZzZXQgd2lsbCBmaXQuCiAJCSAqLwotCQlpZiAocl90 eXBlICE9IFJfWDg2XzY0XzY0ICYmIChpbnQzMl90KW9mZnNldCAhPSAoaW50NjRfdClvZmZzZXQp CisJCWlmIChyX3R5cGUgIT0gUl9YODZfNjRfNjQgJiYKKwkJICAgIChpbnQzMl90KW9mZnNldCAh PSAoaW50NjRfdClvZmZzZXQpIHsKKwkJCWlmIChpc19pbl94ZW5wdmhfYXNzZW1ibHkob2Zmc2V0 KSkKKwkJCQlicmVhazsKIAkJCWRpZSgiUmVsb2NhdGlvbiBvZmZzZXQgZG9lc24ndCBmaXQgaW4g MzIgYml0c1xuIik7CisJCX0KIAogCQlpZiAocl90eXBlID09IFJfWDg2XzY0XzY0KQogCQkJYWRk X3JlbG9jKCZyZWxvY3M2NCwgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi94ZW4t aGVhZC5TIGIvYXJjaC94ODYveGVuL3hlbi1oZWFkLlMKaW5kZXggMTI0OTQxZDA5YjJiLi5lNWI3 Yjk1NjYxOTEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3hlbi94ZW4taGVhZC5TCisrKyBiL2FyY2gv eDg2L3hlbi94ZW4taGVhZC5TCkBAIC0yNSwxNCArMjUsMTUgQEAgRU5UUlkoc3RhcnR1cF94ZW4p CiAKIAkvKiBDbGVhciAuYnNzICovCiAJeG9yICVlYXgsJWVheAotCW1vdiAkX19ic3Nfc3RhcnQs ICVfQVNNX0RJCi0JbW92ICRfX2Jzc19zdG9wLCAlX0FTTV9DWAorCV9BU01fR0VUX1BUUihfX2Jz c19zdGFydCwgJV9BU01fREkpCisJX0FTTV9HRVRfUFRSKF9fYnNzX3N0b3AsICVfQVNNX0NYKQog CXN1YiAlX0FTTV9ESSwgJV9BU01fQ1gKIAlzaHIgJF9fQVNNX1NFTCgyLCAzKSwgJV9BU01fQ1gK IAlyZXAgX19BU01fU0laRShzdG9zKQogCi0JbW92ICVfQVNNX1NJLCB4ZW5fc3RhcnRfaW5mbwot CW1vdiAkaW5pdF90aHJlYWRfdW5pb24rVEhSRUFEX1NJWkUsICVfQVNNX1NQCisJX0FTTV9HRVRf UFRSKHhlbl9zdGFydF9pbmZvLCAlX0FTTV9BWCkKKwltb3YgJV9BU01fU0ksICglX0FTTV9BWCkK KwlfQVNNX0dFVF9QVFIoaW5pdF90aHJlYWRfdW5pb24rVEhSRUFEX1NJWkUsICVfQVNNX1NQKQog CiAJam1wIHhlbl9zdGFydF9rZXJuZWwKIEVORChzdGFydHVwX3hlbikKZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L3hlbi94ZW4tcHZoLlMgYi9hcmNoL3g4Ni94ZW4veGVuLXB2aC5TCmluZGV4IGUxYTVm YmVhZTA4ZC4uNDNlMjM0YzdjMmRlIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni94ZW4veGVuLXB2aC5T CisrKyBiL2FyY2gveDg2L3hlbi94ZW4tcHZoLlMKQEAgLTEwMSw4ICsxMDEsOCBAQCBFTlRSWShw dmhfc3RhcnRfeGVuKQogCWNhbGwgeGVuX3ByZXBhcmVfcHZoCiAKIAkvKiBzdGFydHVwXzY0IGV4 cGVjdHMgYm9vdF9wYXJhbXMgaW4gJXJzaS4gKi8KLQltb3YgJF9wYShwdmhfYm9vdHBhcmFtcyks ICVyc2kKLQltb3YgJF9wYShzdGFydHVwXzY0KSwgJXJheAorCW1vdmFicyAkX3BhKHB2aF9ib290 cGFyYW1zKSwgJXJzaQorCW1vdmFicyAkX3BhKHN0YXJ0dXBfNjQpLCAlcmF4CiAJam1wIColcmF4 CiAKICNlbHNlIC8qIENPTkZJR19YODZfNjQgKi8KQEAgLTEzNywxMCArMTM3LDE1IEBAIEVORChw dmhfc3RhcnRfeGVuKQogCiAJLnNlY3Rpb24gIi5pbml0LmRhdGEiLCJhdyIKIAkuYmFsaWduIDgK KwkvKgorCSAqIFVzZSBhIHF1YWQgZm9yIF9wYShnZHRfc3RhcnQpIGJlY2F1c2UgUElFIGRvZXMg bm90IHVuZGVyc3RhbmQgYQorCSAqIGxvbmcgaXMgZW5vdWdoLiBUaGUgcmVzdWx0aW5nIHZhbHVl IHdpbGwgc3RpbGwgYmUgaW4gdGhlIGxvd2VyIGxvbmcKKwkgKiBwYXJ0LgorCSAqLwogZ2R0Ogog CS53b3JkIGdkdF9lbmQgLSBnZHRfc3RhcnQKLQkubG9uZyBfcGEoZ2R0X3N0YXJ0KQotCS53b3Jk IDAKKwkucXVhZCBfcGEoZ2R0X3N0YXJ0KQorCS5iYWxpZ24gOAogZ2R0X3N0YXJ0OgogCS5xdWFk IDB4MDAwMDAwMDAwMDAwMDAwMCAgICAgICAgICAgIC8qIE5VTEwgZGVzY3JpcHRvciAqLwogCS5x dWFkIDB4MDAwMDAwMDAwMDAwMDAwMCAgICAgICAgICAgIC8qIHJlc2VydmVkICovCi0tIAoyLjE0 LjIuOTIwLmdjZjBjNjc5NzljLWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 17/27] xen: Adapt assembly for PIE support Date: Wed, 4 Oct 2017 14:19:53 -0700 Message-ID: <20171004212003.28296-18-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 Q2hhbmdlIHRoZSBhc3NlbWJseSBjb2RlIHRvIHVzZSB0aGUgbmV3IF9BU01fR0VUX1BUUiBtYWNy byB3aGljaCBnZXQgYQpzeW1ib2wgcmVmZXJlbmNlIHdoaWxlIGJlaW5nIFBJRSBjb21wYXRpYmxl LiBBZGFwdCB0aGUgcmVsb2NhdGlvbiB0b29sCnRvIGlnbm9yZSAzMi1iaXQgWGVuIGNvZGUuCgpQ b3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlIChQSUUpIHN1cHBvcnQgd2lsbCBhbGxvdyB0 byBleHRlbmRlZCB0aGUKS0FTTFIgcmFuZG9taXphdGlvbiByYW5nZSBiZWxvdyB0aGUgLTJHIG1l bW9yeSBsaW1pdC4KClNpZ25lZC1vZmYtYnk6IFRob21hcyBHYXJuaWVyIDx0aGdhcm5pZUBnb29n bGUuY29tPgotLS0KIGFyY2gveDg2L3Rvb2xzL3JlbG9jcy5jIHwgMTYgKysrKysrKysrKysrKysr LQogYXJjaC94ODYveGVuL3hlbi1oZWFkLlMgfCAgOSArKysrKy0tLS0KIGFyY2gveDg2L3hlbi94 ZW4tcHZoLlMgIHwgMTMgKysrKysrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRp b25zKCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3Rvb2xzL3JlbG9j cy5jIGIvYXJjaC94ODYvdG9vbHMvcmVsb2NzLmMKaW5kZXggNWQzZWIyNzYwMTk4Li5iYzAzMmFk ODhiMjIgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3Rvb2xzL3JlbG9jcy5jCisrKyBiL2FyY2gveDg2 L3Rvb2xzL3JlbG9jcy5jCkBAIC04MzEsNiArODMxLDE2IEBAIHN0YXRpYyBpbnQgaXNfcGVyY3B1 X3N5bShFbGZXKFN5bSkgKnN5bSwgY29uc3QgY2hhciAqc3ltbmFtZSkKIAkJc3RybmNtcChzeW1u YW1lLCAiaW5pdF9wZXJfY3B1XyIsIDEzKTsKIH0KIAorLyoKKyAqIENoZWNrIGlmIHRoZSAzMi1i aXQgcmVsb2NhdGlvbiBpcyB3aXRoaW4gdGhlIHhlbnB2aCAzMi1iaXQgY29kZS4KKyAqIElmIHNv LCBpZ25vcmVzIGl0LgorICovCitzdGF0aWMgaW50IGlzX2luX3hlbnB2aF9hc3NlbWJseShFbGZX KEFkZHIpIG9mZnNldCkKK3sKKwlFbGZXKFN5bSkgKnN5bSA9IHN5bV9sb29rdXAoInB2aF9zdGFy dF94ZW4iKTsKKwlyZXR1cm4gc3ltICYmIChvZmZzZXQgPj0gc3ltLT5zdF92YWx1ZSkgJiYKKwkJ KG9mZnNldCA8IChzeW0tPnN0X3ZhbHVlICsgc3ltLT5zdF9zaXplKSk7Cit9CiAKIHN0YXRpYyBp bnQgZG9fcmVsb2M2NChzdHJ1Y3Qgc2VjdGlvbiAqc2VjLCBFbGZfUmVsICpyZWwsIEVsZlcoU3lt KSAqc3ltLAogCQkgICAgICBjb25zdCBjaGFyICpzeW1uYW1lKQpAQCAtODkyLDggKzkwMiwxMiBA QCBzdGF0aWMgaW50IGRvX3JlbG9jNjQoc3RydWN0IHNlY3Rpb24gKnNlYywgRWxmX1JlbCAqcmVs LCBFbGZXKFN5bSkgKnN5bSwKIAkJICogdGhlIHJlbG9jYXRpb25zIGFyZSBwcm9jZXNzZWQuCiAJ CSAqIE1ha2Ugc3VyZSB0aGF0IHRoZSBvZmZzZXQgd2lsbCBmaXQuCiAJCSAqLwotCQlpZiAocl90 eXBlICE9IFJfWDg2XzY0XzY0ICYmIChpbnQzMl90KW9mZnNldCAhPSAoaW50NjRfdClvZmZzZXQp CisJCWlmIChyX3R5cGUgIT0gUl9YODZfNjRfNjQgJiYKKwkJICAgIChpbnQzMl90KW9mZnNldCAh PSAoaW50NjRfdClvZmZzZXQpIHsKKwkJCWlmIChpc19pbl94ZW5wdmhfYXNzZW1ibHkob2Zmc2V0 KSkKKwkJCQlicmVhazsKIAkJCWRpZSgiUmVsb2NhdGlvbiBvZmZzZXQgZG9lc24ndCBmaXQgaW4g MzIgYml0c1xuIik7CisJCX0KIAogCQlpZiAocl90eXBlID09IFJfWDg2XzY0XzY0KQogCQkJYWRk X3JlbG9jKCZyZWxvY3M2NCwgb2Zmc2V0KTsKZGlmZiAtLWdpdCBhL2FyY2gveDg2L3hlbi94ZW4t aGVhZC5TIGIvYXJjaC94ODYveGVuL3hlbi1oZWFkLlMKaW5kZXggMTI0OTQxZDA5YjJiLi5lNWI3 Yjk1NjYxOTEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L3hlbi94ZW4taGVhZC5TCisrKyBiL2FyY2gv eDg2L3hlbi94ZW4taGVhZC5TCkBAIC0yNSwxNCArMjUsMTUgQEAgRU5UUlkoc3RhcnR1cF94ZW4p CiAKIAkvKiBDbGVhciAuYnNzICovCiAJeG9yICVlYXgsJWVheAotCW1vdiAkX19ic3Nfc3RhcnQs ICVfQVNNX0RJCi0JbW92ICRfX2Jzc19zdG9wLCAlX0FTTV9DWAorCV9BU01fR0VUX1BUUihfX2Jz c19zdGFydCwgJV9BU01fREkpCisJX0FTTV9HRVRfUFRSKF9fYnNzX3N0b3AsICVfQVNNX0NYKQog CXN1YiAlX0FTTV9ESSwgJV9BU01fQ1gKIAlzaHIgJF9fQVNNX1NFTCgyLCAzKSwgJV9BU01fQ1gK IAlyZXAgX19BU01fU0laRShzdG9zKQogCi0JbW92ICVfQVNNX1NJLCB4ZW5fc3RhcnRfaW5mbwot CW1vdiAkaW5pdF90aHJlYWRfdW5pb24rVEhSRUFEX1NJWkUsICVfQVNNX1NQCisJX0FTTV9HRVRf UFRSKHhlbl9zdGFydF9pbmZvLCAlX0FTTV9BWCkKKwltb3YgJV9BU01fU0ksICglX0FTTV9BWCkK KwlfQVNNX0dFVF9QVFIoaW5pdF90aHJlYWRfdW5pb24rVEhSRUFEX1NJWkUsICVfQVNNX1NQKQog CiAJam1wIHhlbl9zdGFydF9rZXJuZWwKIEVORChzdGFydHVwX3hlbikKZGlmZiAtLWdpdCBhL2Fy Y2gveDg2L3hlbi94ZW4tcHZoLlMgYi9hcmNoL3g4Ni94ZW4veGVuLXB2aC5TCmluZGV4IGUxYTVm YmVhZTA4ZC4uNDNlMjM0YzdjMmRlIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni94ZW4veGVuLXB2aC5T CisrKyBiL2FyY2gveDg2L3hlbi94ZW4tcHZoLlMKQEAgLTEwMSw4ICsxMDEsOCBAQCBFTlRSWShw dmhfc3RhcnRfeGVuKQogCWNhbGwgeGVuX3ByZXBhcmVfcHZoCiAKIAkvKiBzdGFydHVwXzY0IGV4 cGVjdHMgYm9vdF9wYXJhbXMgaW4gJXJzaS4gKi8KLQltb3YgJF9wYShwdmhfYm9vdHBhcmFtcyks ICVyc2kKLQltb3YgJF9wYShzdGFydHVwXzY0KSwgJXJheAorCW1vdmFicyAkX3BhKHB2aF9ib290 cGFyYW1zKSwgJXJzaQorCW1vdmFicyAkX3BhKHN0YXJ0dXBfNjQpLCAlcmF4CiAJam1wIColcmF4 CiAKICNlbHNlIC8qIENPTkZJR19YODZfNjQgKi8KQEAgLTEzNywxMCArMTM3LDE1IEBAIEVORChw dmhfc3RhcnRfeGVuKQogCiAJLnNlY3Rpb24gIi5pbml0LmRhdGEiLCJhdyIKIAkuYmFsaWduIDgK KwkvKgorCSAqIFVzZSBhIHF1YWQgZm9yIF9wYShnZHRfc3RhcnQpIGJlY2F1c2UgUElFIGRvZXMg bm90IHVuZGVyc3RhbmQgYQorCSAqIGxvbmcgaXMgZW5vdWdoLiBUaGUgcmVzdWx0aW5nIHZhbHVl IHdpbGwgc3RpbGwgYmUgaW4gdGhlIGxvd2VyIGxvbmcKKwkgKiBwYXJ0LgorCSAqLwogZ2R0Ogog CS53b3JkIGdkdF9lbmQgLSBnZHRfc3RhcnQKLQkubG9uZyBfcGEoZ2R0X3N0YXJ0KQotCS53b3Jk IDAKKwkucXVhZCBfcGEoZ2R0X3N0YXJ0KQorCS5iYWxpZ24gOAogZ2R0X3N0YXJ0OgogCS5xdWFk IDB4MDAwMDAwMDAwMDAwMDAwMCAgICAgICAgICAgIC8qIE5VTEwgZGVzY3JpcHRvciAqLwogCS5x dWFkIDB4MDAwMDAwMDAwMDAwMDAwMCAgICAgICAgICAgIC8qIHJlc2VydmVkICovCi0tIAoyLjE0 LjIuOTIwLmdjZjBjNjc5NzljLWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK