From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 38594 invoked by alias); 13 Feb 2020 17:04:43 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 38570 invoked by uid 89); 13 Feb 2020 17:04:42 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-14.4 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_SHORT,RCVD_IN_DNSWL_NONE,SCC_5_SHORT_WORD_LINES,SPF_PASS autolearn=ham version=3.3.1 spammy=ESP, H*f:sk:2020010 X-HELO: mail-ot1-f68.google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=uyTMXy0eTMxfgDUr+4ogZNi8QsU9HOx3ihFJDbeNMBo=; b=m8AP/J/JdG8o8k5e25oo3Fw708m5XhE4hfip/uA21bsjeeH+9VC9hvoIP1JNN85rQe 4i1uRMnGUNcqQuvhGsT5+LZEERMbuDFvQPC3GnVOC0j9khjYv6nnXKrnlAY4wmVLNu43 EX8HTIt6EaRiE1oInff1quEDgfD7jkNKn0D9Q3f5owHSlBUgXESNtnRjgcFKRRpNzo7f Rt/r0B2RdHHX8Kn3iXyRZVXqNDw/2h81TC7KR8CMRa4bMYuSrQVoK/RxPbwJFgGWuD90 z32ScYDLDV4S3y2tQ3JOeMwBm6X7Vxx2aAhjO1Xu0/5osucddxnKHbeEUqHpJyQ0NSrv Ijog== MIME-Version: 1.0 References: <20200108161535.6141-1-hjl.tools@gmail.com> <20200108161535.6141-6-hjl.tools@gmail.com> In-Reply-To: From: "H.J. Lu" Date: Thu, 13 Feb 2020 17:04:00 -0000 Message-ID: Subject: V4 [PATCH] i386: Enable CET support in ucontext functions To: GNU C Library Content-Type: multipart/mixed; boundary="0000000000007c3122059e78152e" X-SW-Source: 2020-02/txt/msg00591.txt.bz2 --0000000000007c3122059e78152e Content-Type: text/plain; charset="UTF-8" Content-length: 2921 On Sat, Feb 1, 2020 at 6:09 AM H.J. Lu wrote: > > On Wed, Jan 8, 2020 at 8:15 AM H.J. Lu wrote: > > > > 1. getcontext and swapcontext are updated to save the caller's shadow > > stack pointer and return address. > > 2. setcontext and swapcontext are updated to restore shadow stack and > > jump to new context directly. > > 3. makecontext is updated to allocate a new shadow stack and set the > > caller's return address to the helper code, L(exitcode). > > > > Since makecontext allocates a new shadow stack when making a new > > context and kernel allocates a new shadow stack for clone/fork/vfork > > syscalls, we track the current shadow stack base. In setcontext and > > swapcontext, if the target shadow stack base is the same as the current > > shadow stack base, we unwind the shadow stack. Otherwise it is a stack > > switch and we look for a restore token. > > > > We enable shadow stack at run-time only if program and all used shared > > objects, including dlopened ones, are shadow stack enabled, which means > > that they must be compiled with GCC 8 or above and glibc 2.28 or above. > > We need to save and restore shadow stack only if shadow stack is enabled. > > When caller of getcontext, setcontext, swapcontext and makecontext is > > compiled with smaller ucontext_t, shadow stack won't be enabled at > > run-time. We check if shadow stack is enabled before accessing the > > extended field in ucontext_t. > > > > This is the updated patch. The only change is to use > > +oSCRATCH1 mreg (EAX) > +oSCRATCH2 mreg (ECX) > +oSCRATCH3 mreg (EDX) > > to replace oEAX, oECX and -oEDX. > > OK for master? > A small update. The difference between old and new are: --- sysdeps/unix/sysv/linux/i386/setcontext.S 2020-01-22 05:28:24.027273572 -0800 +++ sysdeps/unix/sysv/linux/i386/setcontext.S 2020-02-13 08:48:09.731359073 -0800 @@ -82,11 +82,11 @@ ENTRY(__setcontext) cmpl %gs:SSP_BASE_OFFSET, %ecx je L(unwind_shadow_stack) -L(find_restore_token_loop): /* Align the saved original shadow stack pointer to the next 8 byte aligned boundary. */ andl $-8, %esi +L(find_restore_token_loop): /* Look for a restore token. */ movl -8(%esi), %ebx andl $-8, %ebx --- sysdeps/unix/sysv/linux/i386/swapcontext.S 2020-01-22 05:28:24.028273573 -0800 +++ sysdeps/unix/sysv/linux/i386/swapcontext.S 2020-02-13 08:48:09.731359073 -0800 @@ -135,11 +135,11 @@ L(shadow_stack_bound_recorded): cmpl %gs:SSP_BASE_OFFSET, %ecx je L(unwind_shadow_stack) -L(find_restore_token_loop): /* Align the saved original shadow stack pointer to the next 8 byte aligned boundary. */ andl $-8, %esi +L(find_restore_token_loop): /* Look for a restore token. */ movl -8(%esi), %ebx andl $-8, %ebx We don't need to re-align shadow stack since shadow stack will always be decremented by 8 bytes after initial alignment to 8 bytes. Thanks. -- H.J. --0000000000007c3122059e78152e Content-Type: text/x-patch; charset="US-ASCII"; name="0001-i386-Enable-CET-support-in-ucontext-functions.patch" Content-Disposition: attachment; filename="0001-i386-Enable-CET-support-in-ucontext-functions.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k6kzn80o0 Content-length: 22095 RnJvbSAxYjk1N2VkZDBlZDRlYmVlNWFkNDAxYWMzZjJkZTEzOGQ4NDk1ZTc5 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IEZyaSwgNiBEZWMgMjAxOSAxNjo0 NToxNyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGkzODY6IEVuYWJsZSBDRVQg c3VwcG9ydCBpbiB1Y29udGV4dCBmdW5jdGlvbnMKCjEuIGdldGNvbnRleHQg YW5kIHN3YXBjb250ZXh0IGFyZSB1cGRhdGVkIHRvIHNhdmUgdGhlIGNhbGxl cidzIHNoYWRvdwpzdGFjayBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcy4K Mi4gc2V0Y29udGV4dCBhbmQgc3dhcGNvbnRleHQgYXJlIHVwZGF0ZWQgdG8g cmVzdG9yZSBzaGFkb3cgc3RhY2sgYW5kCmp1bXAgdG8gbmV3IGNvbnRleHQg ZGlyZWN0bHkuCjMuIG1ha2Vjb250ZXh0IGlzIHVwZGF0ZWQgdG8gYWxsb2Nh dGUgYSBuZXcgc2hhZG93IHN0YWNrIGFuZCBzZXQgdGhlCmNhbGxlcidzIHJl dHVybiBhZGRyZXNzIHRvIHRoZSBoZWxwZXIgY29kZSwgTChleGl0Y29kZSku CjQuIFNpbmNlIHdlIG5vIGxvbmdlciBzYXZlIGFuZCByZXN0b3JlIEVBWCwg RUNYIGFuZCBFRFggaW4gZ2V0Y29udGV4dCwKc2V0Y29udGV4dCBhbmQgc3dh cGNvbnRleHQsIHdlIGNhbiB1c2UgdGhlbSBhcyBzY3JhdGNoIHJlZ2lzdGVy IHNsb3RzCnRvIGVuYWJsZSBDRVQgaW4gdWNvbnRleHQgZnVuY3Rpb25zLgoK U2luY2UgbWFrZWNvbnRleHQgYWxsb2NhdGVzIGEgbmV3IHNoYWRvdyBzdGFj ayB3aGVuIG1ha2luZyBhIG5ldwpjb250ZXh0IGFuZCBrZXJuZWwgYWxsb2Nh dGVzIGEgbmV3IHNoYWRvdyBzdGFjayBmb3IgY2xvbmUvZm9yay92Zm9yawpz eXNjYWxscywgd2UgdHJhY2sgdGhlIGN1cnJlbnQgc2hhZG93IHN0YWNrIGJh c2UuICBJbiBzZXRjb250ZXh0IGFuZApzd2FwY29udGV4dCwgaWYgdGhlIHRh cmdldCBzaGFkb3cgc3RhY2sgYmFzZSBpcyB0aGUgc2FtZSBhcyB0aGUgY3Vy cmVudApzaGFkb3cgc3RhY2sgYmFzZSwgd2UgdW53aW5kIHRoZSBzaGFkb3cg c3RhY2suICBPdGhlcndpc2UgaXQgaXMgYSBzdGFjawpzd2l0Y2ggYW5kIHdl IGxvb2sgZm9yIGEgcmVzdG9yZSB0b2tlbi4KCldlIGVuYWJsZSBzaGFkb3cg c3RhY2sgYXQgcnVuLXRpbWUgb25seSBpZiBwcm9ncmFtIGFuZCBhbGwgdXNl ZCBzaGFyZWQKb2JqZWN0cywgaW5jbHVkaW5nIGRsb3BlbmVkIG9uZXMsIGFy ZSBzaGFkb3cgc3RhY2sgZW5hYmxlZCwgd2hpY2ggbWVhbnMKdGhhdCB0aGV5 IG11c3QgYmUgY29tcGlsZWQgd2l0aCBHQ0MgOCBvciBhYm92ZSBhbmQgZ2xp YmMgMi4yOCBvciBhYm92ZS4KV2UgbmVlZCB0byBzYXZlIGFuZCByZXN0b3Jl IHNoYWRvdyBzdGFjayBvbmx5IGlmIHNoYWRvdyBzdGFjayBpcyBlbmFibGVk LgpXaGVuIGNhbGxlciBvZiBnZXRjb250ZXh0LCBzZXRjb250ZXh0LCBzd2Fw Y29udGV4dCBhbmQgbWFrZWNvbnRleHQgaXMKY29tcGlsZWQgd2l0aCBzbWFs bGVyIHVjb250ZXh0X3QsIHNoYWRvdyBzdGFjayB3b24ndCBiZSBlbmFibGVk IGF0CnJ1bi10aW1lLiAgV2UgY2hlY2sgaWYgc2hhZG93IHN0YWNrIGlzIGVu YWJsZWQgYmVmb3JlIGFjY2Vzc2luZyB0aGUKZXh0ZW5kZWQgZmllbGQgaW4g dWNvbnRleHRfdC4KClRlc3RlZCBvbiBpMzg2IENFVC9ub24tQ0VUIG1hY2hp bmVzLgotLS0KIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvZ2V0Y29u dGV4dC5TICAgfCAgNTYgKysrKysrKysKIHN5c2RlcHMvdW5peC9zeXN2L2xp bnV4L2kzODYvbWFrZWNvbnRleHQuUyAgfCAxMjMgKysrKysrKysrKysrKysr KysKIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc2V0Y29udGV4dC5T ICAgfCAxMDEgKysrKysrKysrKysrKy0KIHN5c2RlcHMvdW5peC9zeXN2L2xp bnV4L2kzODYvc3dhcGNvbnRleHQuUyAgfCAxMzkgKysrKysrKysrKysrKysr KysrKysKIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc3lzZGVwLmgg ICAgICAgfCAgIDUgKwogc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni91 Y29udGV4dF9pLnN5bSB8ICAgNCArCiA2IGZpbGVzIGNoYW5nZWQsIDQyNSBp bnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3N5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvZ2V0Y29udGV4dC5TIGIvc3lz ZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9nZXRjb250ZXh0LlMKaW5kZXgg OWMxZGY5YTJhYS4uZDkxY2ZlNGIxZCAxMDA2NDQKLS0tIGEvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvaTM4Ni9nZXRjb250ZXh0LlMKKysrIGIvc3lzZGVw cy91bml4L3N5c3YvbGludXgvaTM4Ni9nZXRjb250ZXh0LlMKQEAgLTE4LDYg KzE4LDcgQEAKICAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwogCiAjaW5jbHVkZSA8c3lzZGVwLmg+CisjaW5jbHVkZSA8YXNtL3By Y3RsLmg+CiAKICNpbmNsdWRlICJ1Y29udGV4dF9pLmgiCiAKQEAgLTQyLDYg KzQzLDYxIEBAIEVOVFJZKF9fZ2V0Y29udGV4dCkKIAltb3Z3CSVmcywgJWR4 CiAJbW92bAklZWR4LCBvRlMoJWVheCkKIAorI2lmIFNIU1RLX0VOQUJMRUQK KwkvKiBDaGVjayBpZiBzaGFkb3cgc3RhY2sgaXMgZW5hYmxlZC4gICovCisJ dGVzdGwJJFg4Nl9GRUFUVVJFXzFfU0hTVEssICVnczpGRUFUVVJFXzFfT0ZG U0VUCisJanoJTChub19zaHN0aykKKworCS8qIFNhdmUgRUFYIGluIEVEWC4g ICovCisJbW92bAklZWF4LCAlZWR4CisKKwl4b3JsCSVlYXgsICVlYXgKKwlj bXBsCSVnczpTU1BfQkFTRV9PRkZTRVQsICVlYXgKKwlqbnoJTChzaGFkb3df c3RhY2tfYm91bmRfcmVjb3JkZWQpCisKKwkvKiBTYXZlIEVCWCBpbiB0aGUg Zmlyc3Qgc2NyYXRjaCByZWdpc3RlciBzbG90LiAgKi8KKwltb3ZsCSVlYngs IG9TQ1JBVENIMSglZWR4KQorCisJLyogR2V0IHRoZSBiYXNlIGFkZHJlc3Mg YW5kIHNpemUgb2YgdGhlIGRlZmF1bHQgc2hhZG93IHN0YWNrCisJICAgd2hp Y2ggbXVzdCBiZSB0aGUgY3VycmVudCBzaGFkb3cgc3RhY2sgc2luY2Ugbm90 aGluZyBoYXMKKwkgICBiZWVuIHJlY29yZGVkIHlldC4gICovCisJc3ViCSQy NCwgJWVzcAorCW1vdgklZXNwLCAlZWN4CisJbW92bAkkQVJDSF9DRVRfU1RB VFVTLCAlZWJ4CisJbW92bAkkX19OUl9hcmNoX3ByY3RsLCAlZWF4CisJRU5U RVJfS0VSTkVMCisJdGVzdGwJJWVheCwgJWVheAorCWp6CUwoY29udGludWVf bm9fZXJyKQorCisJLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgKi8K KwlobHQKKworTChjb250aW51ZV9ub19lcnIpOgorCS8qIFJlc3RvcmUgRUJY IGZyb20gdGhlIGZpcnN0IHNjcmF0Y2ggcmVnaXN0ZXIgc2xvdC4gICovCisJ bW92bAlvU0NSQVRDSDEoJWVkeCksICVlYngKKworCS8qIFJlY29yZCB0aGUg YmFzZSBvZiB0aGUgY3VycmVudCBzaGFkb3cgc3RhY2suICAqLworCW1vdmwJ OCglZXNwKSwgJWVheAorCW1vdmwJJWVheCwgJWdzOlNTUF9CQVNFX09GRlNF VAorCWFkZAkkMjQsICVlc3AKKworTChzaGFkb3dfc3RhY2tfYm91bmRfcmVj b3JkZWQpOgorCS8qIExvYWQgYWRkcmVzcyBvZiB0aGUgY29udGV4dCBkYXRh IHN0cnVjdHVyZS4gICovCisJbW92bAk0KCVlc3ApLCAlZWF4CisKKwkvKiBH ZXQgdGhlIGN1cnJlbnQgc2hhZG93IHN0YWNrIHBvaW50ZXIuICAqLworCXJk c3NwZAklZWR4CisJLyogTkI6IFNhdmUgdGhlIGNhbGxlcidzIHNoYWRvdyBz dGFjayBzbyB0aGF0IHdlIGNhbiBqdW1wIGJhY2sKKwkgICB0byB0aGUgY2Fs bGVyIGRpcmVjdGx5LiAgKi8KKwlhZGRsCSQ0LCAlZWR4CisJbW92bAklZWR4 LCBvU1NQKCVlYXgpCisKKwkvKiBTYXZlIHRoZSBjdXJyZW50IHNoYWRvdyBz dGFjayBiYXNlIGluIHVjb250ZXh0LiAgKi8KKwltb3ZsCSVnczpTU1BfQkFT RV9PRkZTRVQsICVlZHgKKwltb3ZsCSVlZHgsIChvU1NQICsgNCkoJWVheCkK KworTChub19zaHN0ayk6CisjZW5kaWYKIAkvKiBXZSBoYXZlIHNlcGFyYXRl IGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIGNvbnRlbnQgbWVtb3J5IG9uIHRo ZQogCSAgIHN0YWNrLiAgV2UgdXNlIHRoZSBfX2ZwcmVnc19tZW0gYmxvY2sg aW4gdGhlIGNvbnRleHQuICBTZXQgdGhlCiAJICAgbGlua3MgdXAgY29ycmVj dGx5LiAgKi8KZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L2kzODYvbWFrZWNvbnRleHQuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L2kzODYvbWFrZWNvbnRleHQuUwppbmRleCBhZDljZTVmOTc3Li45MTAwOTY3 NWQxIDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2 L21ha2Vjb250ZXh0LlMKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgv aTM4Ni9tYWtlY29udGV4dC5TCkBAIC0xOCw2ICsxOCw3IEBACiAgICA8aHR0 cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KIAogI2luY2x1ZGUg PHN5c2RlcC5oPgorI2luY2x1ZGUgPGFzbS9wcmN0bC5oPgogCiAjaW5jbHVk ZSAidWNvbnRleHRfaS5oIgogCkBAIC02OCw2ICs2OSwxMjcgQEAgRU5UUlko X19tYWtlY29udGV4dCkKIAlqbnoJMWIKIDI6CiAKKyNpZiBTSFNUS19FTkFC TEVECisJLyogQ2hlY2sgaWYgU2hhZG93IFN0YWNrIGlzIGVuYWJsZWQuICAq LworCXRlc3RsCSRYODZfRkVBVFVSRV8xX1NIU1RLLCAlZ3M6RkVBVFVSRV8x X09GRlNFVAorCWp6CUwoc2tpcF9zc3ApCisKKwkvKiBSZWxvYWQgdGhlIHBv aW50ZXIgdG8gdWNvbnRleHQuICAqLworCW1vdmwJNCglZXNwKSwgJWVheAor CisJLyogU2hhZG93IHN0YWNrIGlzIGVuYWJsZWQuICBXZSBuZWVkIHRvIGFs bG9jYXRlIGEgbmV3IHNoYWRvdworCSAgIHN0YWNrLiAgKi8KKwlzdWJsCW9T U19TUCglZWF4KSwgJWVkeAorCXNocmwJJFNUQUNLX1NJWkVfVE9fU0hBRE9X X1NUQUNLX1NJWkVfU0hJRlQsICVlZHgKKworCS8qIEFsaWduIHNoYWRvdyBz dGFjayBzaXplIHRvIDggYnl0ZXMuICAqLworCWFkZGwJJDcsICVlZHgKKwlh bmRsCSQtOCwgJWVkeAorCisJLyogU3RvcmUgc2hhZG93IHN0YWNrIHNpemUg aW4gX19zc3BbMl0uICAqLworCW1vdmwJJWVkeCwgKG9TU1AgKyA4KSglZWF4 KQorCisJLyogU2F2ZSBFU0kgaW4gdGhlIHNlY29uZCBzY3JhdGNoIHJlZ2lz dGVyIHNsb3QuICAqLworCW1vdmwJJWVzaSwgb1NDUkFUQ0gyKCVlYXgpCisJ LyogU2F2ZSBFREkgaW4gdGhlIHRoaXJkIHNjcmF0Y2ggcmVnaXN0ZXIgc2xv dC4gICovCisJbW92bAklZWRpLCBvU0NSQVRDSDMoJWVheCkKKworCS8qIFNh dmUgdGhlIHBvaW50ZXIgdG8gdWNvbnRleHQuICAqLworCW1vdmwJJWVheCwg JWVkaQorCisJLyogR2V0IHRoZSBvcmlnaW5hbCBzaGFkb3cgc3RhY2sgcG9p bnRlci4gICovCisJcmRzc3BkCSVlc2kKKworCS8qIEFsaWduIHRoZSBzYXZl ZCBvcmlnaW5hbCBzaGFkb3cgc3RhY2sgcG9pbnRlciB0byB0aGUgbmV4dAor CSAgIDggYnl0ZSBhbGlnbmVkIGJvdW5kYXJ5LiAgKi8KKwlhbmRsCSQtOCwg JWVzaQorCisJLyogTG9hZCB0aGUgdG9wIG9mIHRoZSBuZXcgc3RhY2sgaW50 byBFRFguICAqLworCW1vdmwJb0VTUCglZWF4KSwgJWVkeAorCisJLyogV2Ug bmVlZCB0byB0ZXJtaW5hdGUgdGhlIEZERSBoZXJlIGJlY2F1c2UgdGhlIHVu d2luZGVyIGxvb2tzCisJICAgYXQgcmEtMSBmb3IgdW53aW5kIGluZm9ybWF0 aW9uLiAgKi8KKwljZmlfZW5kcHJvYworCisJLyogU3dhcCB0aGUgb3JpZ2lu YWwgc3RhY2sgcG9pbnRlciB3aXRoIHRoZSB0b3Agb2YgdGhlIG5ldworCSAg IHN0YWNrLiAgKi8KKwl4Y2hnbAklZXNwLCAlZWR4CisKKwkvKiBBZGQgNCBi eXRlcyBzaW5jZSBDQUxMIHdpbGwgcHVzaCB0aGUgNC1ieXRlIHJldHVybiBh ZGRyZXNzCisJICAgb250byBzdGFjay4gICovCisJYWRkbAkkNCwgJWVzcAor CisJLyogQWxsb2NhdGUgdGhlIG5ldyBzaGFkb3cgc3RhY2suICBTYXZlIEVC WCBpbiB0aGUgZmlyc3Qgc2NyYXRjaAorCSAgIHJlZ2lzdGVyIHNsb3QuICAq LworCW1vdmwJJWVieCwgb1NDUkFUQ0gxKCVlYXgpCisKKwkvKiBDRVQgc3lz Y2FsbCB0YWtlcyA2NC1iaXQgc2l6ZXMuICAqLworCXN1YmwJJDE2LCAlZXNw CisJbW92bAkob1NTUCArIDgpKCVlYXgpLCAlZWN4CisJbW92bAklZWN4LCAo JWVzcCkKKwltb3ZsCSQwLCA0KCVlc3ApCisJbW92bAklZWN4LCA4KCVlc3Ap CisJbW92bAkkMCwgMTIoJWVzcCkKKwltb3ZsCSVlc3AsICVlY3gKKworCW1v dmwJJEFSQ0hfQ0VUX0FMTE9DX1NIU1RLLCAlZWJ4CisJbW92bAkkX19OUl9h cmNoX3ByY3RsLCAlZWF4CisJRU5URVJfS0VSTkVMCisJdGVzdGwJJWVheCwg JWVheAorCWpuZQlMKGhsdCkJCS8qIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBl bi4gICovCisKKwkvKiBDb3B5IHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIG5l dyBzaGFkb3cgc3RhY2sgdG8gX19zc3BbMV0uICAqLworCW1vdmwJKCVlc3Ap LCAlZWF4CisJbW92bAklZWF4LCAob1NTUCArIDQpKCVlZGkpCisKKwlhZGRs CSQxNiwgJWVzcAorCisJLyogUmVzdG9yZSBFQlggZnJvbSB0aGUgZmlyc3Qg c2NyYXRjaCByZWdpc3RlciBzbG90LiAgKi8KKwltb3ZsCW9TQ1JBVENIMSgl ZWRpKSwgJWVieAorCisJLyogR2V0IHRoZSBzaXplIG9mIHRoZSBuZXcgc2hh ZG93IHN0YWNrLiAgKi8KKwltb3ZsCShvU1NQICsgOCkoJWVkaSksICVlY3gK KworCS8qIFVzZSB0aGUgcmVzdG9yZSBzdG9rZW4gdG8gcmVzdG9yZSB0aGUg bmV3IHNoYWRvdyBzdGFjay4gICovCisJcnN0b3Jzc3AgLTgoJWVheCwgJWVj eCkKKworCS8qIFNhdmUgdGhlIHJlc3RvcmUgdG9rZW4gYXQgdGhlIG5leHQg OCBieXRlIGFsaWduZWQgYm91bmRhcnkKKwkgICBvbiB0aGUgb3JpZ2luYWwg c2hhZG93IHN0YWNrLiAgKi8KKwlzYXZlcHJldnNzcAorCisJLyogUHVzaCB0 aGUgYWRkcmVzcyBvZiAiam1wIGV4aXRjb2RlIiBvbnRvIHRoZSBuZXcgc3Rh Y2sgYXMKKwkgICB3ZWxsIGFzIHRoZSBuZXcgc2hhZG93IHN0YWNrLiAgKi8K KwljYWxsCTFmCisJam1wCUwoZXhpdGNvZGUpCisxOgorCisJLyogR2V0IHRo ZSBuZXcgc2hhZG93IHN0YWNrIHBvaW50ZXIuICAqLworCXJkc3NwZAklZWF4 CisKKwkvKiBVc2UgdGhlIHJlc3RvcmUgc3Rva2VuIHRvIHJlc3RvcmUgdGhl IG9yaWdpbmFsIHNoYWRvdyBzdGFjay4gICovCisJcnN0b3Jzc3AgLTgoJWVz aSkKKworCS8qIFNhdmUgdGhlIHJlc3RvcmUgdG9rZW4gb24gdGhlIG5ldyBz aGFkb3cgc3RhY2suICAqLworCXNhdmVwcmV2c3NwCisKKwkvKiBTdG9yZSB0 aGUgbmV3IHNoYWRvdyBzdGFjayBwb2ludGVyIGluIF9fc3NwWzBdLiAgKi8K Kwltb3ZsCSVlYXgsIG9TU1AoJWVkaSkKKworCS8qIFJlc3RvcmUgdGhlIG9y aWdpbmFsIHN0YWNrLiAgKi8KKwltb3YJJWVkeCwgJWVzcAorCisJY2ZpX3N0 YXJ0cHJvYworCisJLyogUmVzdG9yZSBFU0kgZnJvbSB0aGUgc2Vjb25kIHNj cmF0Y2ggcmVnaXN0ZXIgc2xvdC4gICovCisJbW92bAlvU0NSQVRDSDIoJWVk aSksICVlc2kKKwkvKiBSZXN0b3JlIEVESSBmcm9tIHRoZSB0aGlyZCBzY3Jh dGNoIHJlZ2lzdGVyIHNsb3QuICAqLworCW1vdmwJb1NDUkFUQ0gzKCVlZGkp LCAlZWRpCisKKwlyZXQKKworTChza2lwX3NzcCk6CisjZW5kaWYKKwogCS8q IElmIHRoZSBmdW5jdGlvbiB3ZSBjYWxsIHJldHVybnMgd2UgbXVzdCBjb250 aW51ZSB3aXRoIHRoZQogCSAgIGNvbnRleHQgd2hpY2ggaXMgZ2l2ZW4gaW4g dGhlIHVjX2xpbmsgZWxlbWVudC4gIFRvIGRvIHRoaXMKIAkgICBzZXQgdGhl IHJldHVybiBhZGRyZXNzIGZvciB0aGUgZnVuY3Rpb24gdGhlIHVzZXIgcHJv dmlkZXMKQEAgLTEyMyw2ICsyNDUsNyBAQCBMKGNhbGxfZXhpdCk6CiAJY2Fs bAlISURERU5fSlVNUFRBUkdFVChleGl0KQogCS8qIFRoZSAnZXhpdCcgY2Fs bCBzaG91bGQgbmV2ZXIgcmV0dXJuLiAgSW4gY2FzZSBpdCBkb2VzIGNhdXNl CiAJICAgdGhlIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgKi8KK0woaGx0KToK IAlobHQKIAljZmlfc3RhcnRwcm9jCiBFTkQoX19tYWtlY29udGV4dCkKZGlm ZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc2V0Y29u dGV4dC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zZXRjb250 ZXh0LlMKaW5kZXggZjA0MmQ4MGJmNC4uMzMyYjUxNDdiYyAxMDA2NDQKLS0t IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zZXRjb250ZXh0LlMK KysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zZXRjb250ZXh0 LlMKQEAgLTE4LDYgKzE4LDcgQEAKICAgIDxodHRwczovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwogCiAjaW5jbHVkZSA8c3lzZGVwLmg+CisjaW5j bHVkZSA8YXNtL3ByY3RsLmg+CiAKICNpbmNsdWRlICJ1Y29udGV4dF9pLmgi CiAKQEAgLTU2LDkgKzU3LDYgQEAgRU5UUlkoX19zZXRjb250ZXh0KQogCW1v dmwJb0ZTKCVlYXgpLCAlZWN4CiAJbW92dwklY3gsICVmcwogCi0JLyogRmV0 Y2ggdGhlIGFkZHJlc3MgdG8gcmV0dXJuIHRvLiAgKi8KLQltb3ZsCW9FSVAo JWVheCksICVlY3gKLQogCS8qIExvYWQgdGhlIG5ldyBzdGFjayBwb2ludGVy LiAgKi8KIAljZmlfZGVmX2NmYSAoZWF4LCAwKQogCWNmaV9vZmZzZXQgKGVk aSwgb0VESSkKQEAgLTY3LDYgKzY1LDEwMyBAQCBFTlRSWShfX3NldGNvbnRl eHQpCiAJY2ZpX29mZnNldCAoZWJ4LCBvRUJYKQogCW1vdmwJb0VTUCglZWF4 KSwgJWVzcAogCisjaWYgU0hTVEtfRU5BQkxFRAorCS8qIENoZWNrIGlmIFNo YWRvdyBTdGFjayBpcyBlbmFibGVkLiAgKi8KKwl0ZXN0bAkkWDg2X0ZFQVRV UkVfMV9TSFNUSywgJWdzOkZFQVRVUkVfMV9PRkZTRVQKKwlqeglMKG5vX3No c3RrKQorCisJLyogSWYgdGhlIGJhc2Ugb2YgdGhlIHRhcmdldCBzaGFkb3cg c3RhY2sgaXMgdGhlIHNhbWUgYXMgdGhlCisJICAgYmFzZSBvZiB0aGUgY3Vy cmVudCBzaGFkb3cgc3RhY2ssIHdlIHVud2luZCB0aGUgc2hhZG93CisJICAg c3RhY2suICBPdGhlcndpc2UgaXQgaXMgYSBzdGFjayBzd2l0Y2ggYW5kIHdl IGxvb2sgZm9yIGEKKwkgICByZXN0b3JlIHRva2VuLiAgKi8KKwltb3ZsCW9T U1AoJWVheCksICVlc2kKKwltb3ZsCSVlc2ksICVlZGkKKworCS8qIEdldCB0 aGUgYmFzZSBvZiB0aGUgdGFyZ2V0IHNoYWRvdyBzdGFjay4gICovCisJbW92 bAkob1NTUCArIDQpKCVlYXgpLCAlZWN4CisJY21wbAklZ3M6U1NQX0JBU0Vf T0ZGU0VULCAlZWN4CisJamUJTCh1bndpbmRfc2hhZG93X3N0YWNrKQorCisJ LyogQWxpZ24gdGhlIHNhdmVkIG9yaWdpbmFsIHNoYWRvdyBzdGFjayBwb2lu dGVyIHRvIHRoZSBuZXh0CisJICAgOCBieXRlIGFsaWduZWQgYm91bmRhcnku ICAqLworCWFuZGwJJC04LCAlZXNpCisKK0woZmluZF9yZXN0b3JlX3Rva2Vu X2xvb3ApOgorCS8qIExvb2sgZm9yIGEgcmVzdG9yZSB0b2tlbi4gICovCisJ bW92bAktOCglZXNpKSwgJWVieAorCWFuZGwJJC04LCAlZWJ4CisJY21wbAkl ZXNpLCAlZWJ4CisJamUJTChyZXN0b3JlX3NoYWRvd19zdGFjaykKKworCS8q IFRyeSB0aGUgbmV4dCBzbG90LiAgKi8KKwlzdWJsCSQ4LCAlZXNpCisJam1w CUwoZmluZF9yZXN0b3JlX3Rva2VuX2xvb3ApCisKK0wocmVzdG9yZV9zaGFk b3dfc3RhY2spOgorCS8qIFBvcCByZXR1cm4gYWRkcmVzcyBmcm9tIHRoZSBz aGFkb3cgc3RhY2sgc2luY2Ugc2V0Y29udGV4dAorCSAgIHdpbGwgbm90IHJl dHVybi4gICovCisJbW92bAkkMSwgJWVieAorCWluY3NzcGQJJWVieAorCisJ LyogVXNlIHRoZSByZXN0b3JlIHN0b2tlbiB0byByZXN0b3JlIHRoZSB0YXJn ZXQgc2hhZG93IHN0YWNrLiAgKi8KKwlyc3RvcnNzcCAtOCglZXNpKQorCisJ LyogU2F2ZSB0aGUgcmVzdG9yZSB0b2tlbiBvbiB0aGUgb2xkIHNoYWRvdyBz dGFjay4gIE5COiBUaGlzCisJICAgcmVzdG9yZSB0b2tlbiBtYXkgYmUgY2hl Y2tlZCBieSBzZXRjb250ZXh0IG9yIHN3YXBjb250ZXh0CisJICAgbGF0ZXIu ICAqLworCXNhdmVwcmV2c3NwCisKKwkvKiBSZWNvcmQgdGhlIG5ldyBzaGFk b3cgc3RhY2sgYmFzZSB0aGF0IHdhcyBzd2l0Y2hlZCB0by4gICovCisJbW92 bAkob1NTUCArIDQpKCVlYXgpLCAlZWJ4CisJbW92bAklZWJ4LCAlZ3M6U1NQ X0JBU0VfT0ZGU0VUCisKK0wodW53aW5kX3NoYWRvd19zdGFjayk6CisJcmRz c3BkCSVlYngKKwlzdWJsCSVlZGksICVlYngKKwlqZQlMKHNraXBfdW53aW5k X3NoYWRvd19zdGFjaykKKwluZWdsCSVlYngKKwlzaHJsCSQyLCAlZWJ4CisJ bW92bAkkMjU1LCAlZXNpCitMKGxvb3ApOgorCWNtcGwJJWVzaSwgJWVieAor CWNtb3ZiCSVlYngsICVlc2kKKwlpbmNzc3BkCSVlc2kKKwlzdWJsCSVlc2ks ICVlYngKKwlqYQlMKGxvb3ApCisKK0woc2tpcF91bndpbmRfc2hhZG93X3N0 YWNrKToKKworCS8qIExvYWQgdGhlIHZhbHVlcyBvZiBhbGwgdGhlIHByZXNl cnZlZCByZWdpc3RlcnMgKGV4Y2VwdCBFU1ApLiAgKi8KKwltb3ZsCW9FREko JWVheCksICVlZGkKKwltb3ZsCW9FU0koJWVheCksICVlc2kKKwltb3ZsCW9F QlAoJWVheCksICVlYnAKKwltb3ZsCW9FQlgoJWVheCksICVlYngKKworCS8q IEdldCB0aGUgcmV0dXJuIGFkZHJlc3Mgc2V0IHdpdGggZ2V0Y29udGV4dC4g ICovCisJbW92bAlvRUlQKCVlYXgpLCAlZWN4CisKKwkvKiBDaGVjayBpZiBy ZXR1cm4gYWRkcmVzcyBpcyB2YWxpZCBmb3IgdGhlIGNhc2Ugd2hlbiBzZXRj b250ZXh0CisJICAgaXMgaW52b2tlZCBmcm9tIEwoZXhpdGNvZGUpIHdpdGgg bGlua2VkIGNvbnRleHQuICAqLworCXJkc3NwZAklZWF4CisJY21wbAkoJWVh eCksICVlY3gKKwkvKiBDbGVhciBFQVggdG8gaW5kaWNhdGUgc3VjY2Vzcy4g IE5COiBEb24ndCB1c2UgeG9ybCB0byBrZWVwCisJICAgRUZMQUdTIGZvciBq bmUuICAqLworCW1vdmwJJDAsICVlYXgKKwlqbmUJTChqbXApCisJLyogUmV0 dXJuIHRvIHRoZSBuZXcgY29udGV4dCBpZiByZXR1cm4gYWRkcmVzcyB2YWxp ZC4gICovCisJcHVzaGwJJWVjeAorCXJldAorCitMKGptcCk6CisJLyogSnVt cCB0byB0aGUgbmV3IGNvbnRleHQgZGlyZWN0bHkuICAqLworCWptcAkqJWVj eAorCitMKG5vX3Noc3RrKToKKyNlbmRpZgorCisJLyogRmV0Y2ggdGhlIGFk ZHJlc3MgdG8gcmV0dXJuIHRvLiAgKi8KKwltb3ZsCW9FSVAoJWVheCksICVl Y3gKKwogCS8qIFB1c2ggdGhlIHJldHVybiBhZGRyZXNzIG9uIHRoZSBuZXcg c3RhY2sgc28gd2UgY2FuIHJldHVybiB0aGVyZS4gICovCiAJcHVzaGwJJWVj eAogCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2 L3N3YXBjb250ZXh0LlMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2 L3N3YXBjb250ZXh0LlMKaW5kZXggMDkwYzJkOGMzZS4uMjAzZWFmYTJlNyAx MDA2NDQKLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zd2Fw Y29udGV4dC5TCisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYv c3dhcGNvbnRleHQuUwpAQCAtMTgsNiArMTgsNyBAQAogICAgPGh0dHBzOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiAKICNpbmNsdWRlIDxzeXNk ZXAuaD4KKyNpbmNsdWRlIDxhc20vcHJjdGwuaD4KIAogI2luY2x1ZGUgInVj b250ZXh0X2kuaCIKIApAQCAtNzYsNiArNzcsMTQ0IEBAIEVOVFJZKF9fc3dh cGNvbnRleHQpCiAJbW92bAlvRlMoJWVheCksICVlZHgKIAltb3Z3CSVkeCwg JWZzCiAKKyNpZiBTSFNUS19FTkFCTEVECisJLyogQ2hlY2sgaWYgU2hhZG93 IFN0YWNrIGlzIGVuYWJsZWQuICAqLworCXRlc3RsCSRYODZfRkVBVFVSRV8x X1NIU1RLLCAlZ3M6RkVBVFVSRV8xX09GRlNFVAorCWp6CUwobm9fc2hzdGsp CisKKwl4b3JsCSVlYXgsICVlYXgKKwljbXBsCSVnczpTU1BfQkFTRV9PRkZT RVQsICVlYXgKKwlqbnoJTChzaGFkb3dfc3RhY2tfYm91bmRfcmVjb3JkZWQp CisKKwkvKiBHZXQgdGhlIGJhc2UgYWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUg ZGVmYXVsdCBzaGFkb3cgc3RhY2sKKwkgICB3aGljaCBtdXN0IGJlIHRoZSBj dXJyZW50IHNoYWRvdyBzdGFjayBzaW5jZSBub3RoaW5nIGhhcworCSAgIGJl ZW4gcmVjb3JkZWQgeWV0LiAgKi8KKwlzdWIJJDI0LCAlZXNwCisJbW92CSVl c3AsICVlY3gKKwltb3ZsCSRBUkNIX0NFVF9TVEFUVVMsICVlYngKKwltb3Zs CSRfX05SX2FyY2hfcHJjdGwsICVlYXgKKwlFTlRFUl9LRVJORUwKKwl0ZXN0 bAklZWF4LCAlZWF4CisJanoJTChjb250aW51ZV9ub19lcnIpCisKKwkvKiBU aGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLworCWhsdAorCitMKGNvbnRp bnVlX25vX2Vycik6CisJLyogUmVjb3JkIHRoZSBiYXNlIG9mIHRoZSBjdXJy ZW50IHNoYWRvdyBzdGFjay4gICovCisJbW92bAk4KCVlc3ApLCAlZWF4CisJ bW92bAklZWF4LCAlZ3M6U1NQX0JBU0VfT0ZGU0VUCisJYWRkCSQyNCwgJWVz cAorCitMKHNoYWRvd19zdGFja19ib3VuZF9yZWNvcmRlZCk6CisJLyogTG9h ZCBhZGRyZXNzIG9mIHRoZSBjb250ZXh0IGRhdGEgc3RydWN0dXJlIHdlIHNh dmUgaW4uICAqLworCW1vdmwJNCglZXNwKSwgJWVheAorCisJLyogTG9hZCBh ZGRyZXNzIG9mIHRoZSBjb250ZXh0IGRhdGEgc3RydWN0dXJlIHdlIHN3YXAg aW4gICovCisJbW92bAk4KCVlc3ApLCAlZWR4CisKKyAgICAgICAvKiBJZiB3 ZSB1bndpbmQgdGhlIHN0YWNrLCB3ZSBjYW4ndCB1bmRvIHN0YWNrIHVud2lu ZGluZy4gIEp1c3QKKwkgICBzYXZlIHRoZSB0YXJnZXQgc2hhZG93IHN0YWNr IHBvaW50ZXIgYXMgdGhlIGN1cnJlbnQgc2hhZG93CisJICAgc3RhY2sgcG9p bnRlci4gICAqLworCW1vdmwJb1NTUCglZWR4KSwgJWVjeAorCW1vdmwJJWVj eCwgb1NTUCglZWF4KQorCisJLyogU2F2ZSB0aGUgY3VycmVudCBzaGFkb3cg c3RhY2sgYmFzZSBpbiB1Y29udGV4dC4gICovCisJbW92bAklZ3M6U1NQX0JB U0VfT0ZGU0VULCAlZWN4CisJbW92bAklZWN4LCAob1NTUCArIDQpKCVlYXgp CisKKwkvKiBJZiB0aGUgYmFzZSBvZiB0aGUgdGFyZ2V0IHNoYWRvdyBzdGFj ayBpcyB0aGUgc2FtZSBhcyB0aGUKKwkgICBiYXNlIG9mIHRoZSBjdXJyZW50 IHNoYWRvdyBzdGFjaywgd2UgdW53aW5kIHRoZSBzaGFkb3cKKwkgICBzdGFj ay4gIE90aGVyd2lzZSBpdCBpcyBhIHN0YWNrIHN3aXRjaCBhbmQgd2UgbG9v ayBmb3IgYQorCSAgIHJlc3RvcmUgdG9rZW4uICAqLworCW1vdmwJb1NTUCgl ZWR4KSwgJWVzaQorCW1vdmwJJWVzaSwgJWVkaQorCisJLyogR2V0IHRoZSBi YXNlIG9mIHRoZSB0YXJnZXQgc2hhZG93IHN0YWNrLiAgKi8KKwltb3ZsCShv U1NQICsgNCkoJWVkeCksICVlY3gKKwljbXBsCSVnczpTU1BfQkFTRV9PRkZT RVQsICVlY3gKKwlqZQlMKHVud2luZF9zaGFkb3dfc3RhY2spCisKKwkvKiBB bGlnbiB0aGUgc2F2ZWQgb3JpZ2luYWwgc2hhZG93IHN0YWNrIHBvaW50ZXIg dG8gdGhlIG5leHQKKwkgICA4IGJ5dGUgYWxpZ25lZCBib3VuZGFyeS4gICov CisJYW5kbAkkLTgsICVlc2kKKworTChmaW5kX3Jlc3RvcmVfdG9rZW5fbG9v cCk6CisJLyogTG9vayBmb3IgYSByZXN0b3JlIHRva2VuLiAgKi8KKwltb3Zs CS04KCVlc2kpLCAlZWJ4CisJYW5kbAkkLTgsICVlYngKKwljbXBsCSVlc2ks ICVlYngKKwlqZQlMKHJlc3RvcmVfc2hhZG93X3N0YWNrKQorCisJLyogVHJ5 IHRoZSBuZXh0IHNsb3QuICAqLworCXN1YmwJJDgsICVlc2kKKwlqbXAJTChm aW5kX3Jlc3RvcmVfdG9rZW5fbG9vcCkKKworTChyZXN0b3JlX3NoYWRvd19z dGFjayk6CisJLyogVGhlIHRhcmdldCBzaGFkb3cgc3RhY2sgd2lsbCBiZSBy ZXN0b3JlZC4gIFNhdmUgdGhlIGN1cnJlbnQKKwkgICBzaGFkb3cgc3RhY2sg cG9pbnRlci4gICovCisJcmRzc3BkCSVlY3gKKwltb3ZsCSVlY3gsIG9TU1Ao JWVheCkKKworCS8qIFVzZSB0aGUgcmVzdG9yZSBzdG9rZW4gdG8gcmVzdG9y ZSB0aGUgdGFyZ2V0IHNoYWRvdyBzdGFjay4gICovCisJcnN0b3Jzc3AgLTgo JWVzaSkKKworCS8qIFNhdmUgdGhlIHJlc3RvcmUgdG9rZW4gb24gdGhlIG9s ZCBzaGFkb3cgc3RhY2suICBOQjogVGhpcworCSAgIHJlc3RvcmUgdG9rZW4g bWF5IGJlIGNoZWNrZWQgYnkgc2V0Y29udGV4dCBvciBzd2FwY29udGV4dAor CSAgIGxhdGVyLiAgKi8KKwlzYXZlcHJldnNzcAorCisJLyogUmVjb3JkIHRo ZSBuZXcgc2hhZG93IHN0YWNrIGJhc2UgdGhhdCB3YXMgc3dpdGNoZWQgdG8u ICAqLworCW1vdmwJKG9TU1AgKyA0KSglZWR4KSwgJWVieAorCW1vdmwJJWVi eCwgJWdzOlNTUF9CQVNFX09GRlNFVAorCitMKHVud2luZF9zaGFkb3dfc3Rh Y2spOgorCXJkc3NwZAklZWJ4CisJc3VibAklZWRpLCAlZWJ4CisJamUJTChz a2lwX3Vud2luZF9zaGFkb3dfc3RhY2spCisJbmVnbAklZWJ4CisJc2hybAkk MiwgJWVieAorCW1vdmwJJDI1NSwgJWVzaQorTChsb29wKToKKwljbXBsCSVl c2ksICVlYngKKwljbW92YgklZWJ4LCAlZXNpCisJaW5jc3NwZAklZXNpCisJ c3VibAklZXNpLCAlZWJ4CisJamEJTChsb29wKQorCitMKHNraXBfdW53aW5k X3NoYWRvd19zdGFjayk6CisKKwkvKiBMb2FkIHRoZSBuZXcgc3RhY2sgcG9p bnRlci4gICovCisJbW92bAlvRVNQKCVlZHgpLCAlZXNwCisKKwkvKiBMb2Fk IHRoZSB2YWx1ZXMgb2YgYWxsIHRoZSBwcmVzZXJ2ZWQgcmVnaXN0ZXJzIChl eGNlcHQgRVNQKS4gICovCisJbW92bAlvRURJKCVlZHgpLCAlZWRpCisJbW92 bAlvRVNJKCVlZHgpLCAlZXNpCisJbW92bAlvRUJQKCVlZHgpLCAlZWJwCisJ bW92bAlvRUJYKCVlZHgpLCAlZWJ4CisKKwkvKiBHZXQgdGhlIHJldHVybiBh ZGRyZXNzIHNldCB3aXRoIGdldGNvbnRleHQuICAqLworCW1vdmwJb0VJUCgl ZWR4KSwgJWVjeAorCisJLyogQ2hlY2sgaWYgcmV0dXJuIGFkZHJlc3MgaXMg dmFsaWQgZm9yIHRoZSBjYXNlIHdoZW4gc2V0Y29udGV4dAorCSAgIGlzIGlu dm9rZWQgZnJvbSBMKGV4aXRjb2RlKSB3aXRoIGxpbmtlZCBjb250ZXh0LiAg Ki8KKwlyZHNzcGQJJWVheAorCWNtcGwJKCVlYXgpLCAlZWN4CisJLyogQ2xl YXIgRUFYIHRvIGluZGljYXRlIHN1Y2Nlc3MuICBOQjogRG9uJ3QgdXNlIHhv cmwgdG8ga2VlcAorCSAgIEVGTEFHUyBmb3Igam5lLiAgKi8KKwltb3ZsCSQw LCAlZWF4CisJam5lCUwoam1wKQorCS8qIFJldHVybiB0byB0aGUgbmV3IGNv bnRleHQgaWYgcmV0dXJuIGFkZHJlc3MgdmFsaWQuICAqLworCXB1c2hsCSVl Y3gKKwlyZXQKKworTChqbXApOgorCS8qIEp1bXAgdG8gdGhlIG5ldyBjb250 ZXh0IGRpcmVjdGx5LiAgKi8KKwlqbXAJKiVlY3gKKworTChub19zaHN0ayk6 CisjZW5kaWYKKwogCS8qIEZldGNoIHRoZSBhZGRyZXNzIHRvIHJldHVybiB0 by4gICovCiAJbW92bAlvRUlQKCVlYXgpLCAlZWN4CiAKZGlmZiAtLWdpdCBh L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc3lzZGVwLmggYi9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5oCmluZGV4IDRhYTdi YjQ5NmEuLjQyMGI2YTc5MTIgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvdW5peC9z eXN2L2xpbnV4L2kzODYvc3lzZGVwLmgKKysrIGIvc3lzZGVwcy91bml4L3N5 c3YvbGludXgvaTM4Ni9zeXNkZXAuaApAQCAtNjYyLDQgKzY2Miw5IEBAIHN0 cnVjdCBsaWJjX2RvX3N5c2NhbGxfYXJncwogIyBlbmRpZgogI2VuZGlmCiAK Ky8qIEVhY2ggc2hhZG93IHN0YWNrIHNsb3QgdGFrZXMgNCBieXRlcy4gIEFz c3VtaW5nIHRoYXQgZWFjaCBzdGFjaworICAgZnJhbWUgdGFrZXMgMTI4IGJ5 dGVzLCB0aGlzIGlzIHVzZWQgdG8gY29tcHV0ZSBzaGFkb3cgc3RhY2sgc2l6 ZQorICAgZnJvbSBzdGFjayBzaXplLiAgKi8KKyNkZWZpbmUgU1RBQ0tfU0la RV9UT19TSEFET1dfU1RBQ0tfU0laRV9TSElGVCA1CisKICNlbmRpZiAvKiBs aW51eC9pMzg2L3N5c2RlcC5oICovCmRpZmYgLS1naXQgYS9zeXNkZXBzL3Vu aXgvc3lzdi9saW51eC9pMzg2L3Vjb250ZXh0X2kuc3ltIGIvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvaTM4Ni91Y29udGV4dF9pLnN5bQppbmRleCAxZGZl MDNkMmNjLi4xZDg2MDhlYWZjIDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgv c3lzdi9saW51eC9pMzg2L3Vjb250ZXh0X2kuc3ltCisrKyBiL3N5c2RlcHMv dW5peC9zeXN2L2xpbnV4L2kzODYvdWNvbnRleHRfaS5zeW0KQEAgLTIyLDYg KzIyLDEwIEBAIG9FQlAJCW1yZWcgKEVCUCkKIG9FU1AJCW1yZWcgKEVTUCkK IG9FQlgJCW1yZWcgKEVCWCkKIG9FSVAJCW1yZWcgKEVJUCkKK29TQ1JBVENI MQltcmVnIChFQVgpCitvU0NSQVRDSDIJbXJlZyAoRUNYKQorb1NDUkFUQ0gz CW1yZWcgKEVEWCkKIG9GUFJFR1MJCW1jb250ZXh0IChmcHJlZ3MpCiBvU0lH TUFTSwl1Y29udGV4dCAodWNfc2lnbWFzaykKIG9GUFJFR1NNRU0JdWNvbnRl eHQgKF9fZnByZWdzX21lbSkKK29TU1AJCXVjb250ZXh0IChfX3NzcCkKLS0g CjIuMjQuMQoK --0000000000007c3122059e78152e--