From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS31976 209.132.180.0/23 X-Spam-Status: No, score=-3.0 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_GMAIL_RCVD, FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 25D471F45E for ; Thu, 13 Feb 2020 17:04:46 +0000 (UTC) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-type; q=dns; s=default; b=PDcRolG OAM1Bdi2myJFO7wP2MsO2152jxZ8tQxtDS/5NzUqLc3r5p073Q+KxRZwAjvyxd+Y afGCjX3BblSydXddUK60zVQBp1/k+GH1wOLJYqxlHZQSP6fSP9AWnVFkXDwRZ8Bp huQ0Q1ebUwn5EJXXmWPJbO4AL8plFwOfQ5J4= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-type; s=default; bh=Umbjd7wPsPjTh kE7vNrvBazppYo=; b=j7TpV4kQmeiPg9ZseZfgZ+PfdTzvEDzC/1SSRFHpHILsq 6dGaJpzuy2rbnapGPzvXWAMCKtoIcRdYXZDbm2VoT8Mz6/eeOSSQdjgb8EgfbN/o 1hgLLMDk8GjYHkdrb+rzO9f2vaRGvb/mIBNpIkyEpsd2jfYSXji9/Lw1pp6sH4= 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-Unsubscribe: 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-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 09:04:01 -0800 Message-ID: Subject: V4 [PATCH] i386: Enable CET support in ucontext functions To: GNU C Library Content-Type: multipart/mixed; boundary="0000000000007c3122059e78152e" --0000000000007c3122059e78152e Content-Type: text/plain; charset="UTF-8" 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 RnJvbSAxYjk1N2VkZDBlZDRlYmVlNWFkNDAxYWMzZjJkZTEzOGQ4NDk1ZTc5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IEZyaSwgNiBEZWMgMjAxOSAxNjo0NToxNyAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIGkzODY6IEVu YWJsZSBDRVQgc3VwcG9ydCBpbiB1Y29udGV4dCBmdW5jdGlvbnMKCjEuIGdldGNvbnRleHQgYW5k IHN3YXBjb250ZXh0IGFyZSB1cGRhdGVkIHRvIHNhdmUgdGhlIGNhbGxlcidzIHNoYWRvdwpzdGFj ayBwb2ludGVyIGFuZCByZXR1cm4gYWRkcmVzcy4KMi4gc2V0Y29udGV4dCBhbmQgc3dhcGNvbnRl eHQgYXJlIHVwZGF0ZWQgdG8gcmVzdG9yZSBzaGFkb3cgc3RhY2sgYW5kCmp1bXAgdG8gbmV3IGNv bnRleHQgZGlyZWN0bHkuCjMuIG1ha2Vjb250ZXh0IGlzIHVwZGF0ZWQgdG8gYWxsb2NhdGUgYSBu ZXcgc2hhZG93IHN0YWNrIGFuZCBzZXQgdGhlCmNhbGxlcidzIHJldHVybiBhZGRyZXNzIHRvIHRo ZSBoZWxwZXIgY29kZSwgTChleGl0Y29kZSkuCjQuIFNpbmNlIHdlIG5vIGxvbmdlciBzYXZlIGFu ZCByZXN0b3JlIEVBWCwgRUNYIGFuZCBFRFggaW4gZ2V0Y29udGV4dCwKc2V0Y29udGV4dCBhbmQg c3dhcGNvbnRleHQsIHdlIGNhbiB1c2UgdGhlbSBhcyBzY3JhdGNoIHJlZ2lzdGVyIHNsb3RzCnRv IGVuYWJsZSBDRVQgaW4gdWNvbnRleHQgZnVuY3Rpb25zLgoKU2luY2UgbWFrZWNvbnRleHQgYWxs b2NhdGVzIGEgbmV3IHNoYWRvdyBzdGFjayB3aGVuIG1ha2luZyBhIG5ldwpjb250ZXh0IGFuZCBr ZXJuZWwgYWxsb2NhdGVzIGEgbmV3IHNoYWRvdyBzdGFjayBmb3IgY2xvbmUvZm9yay92Zm9yawpz eXNjYWxscywgd2UgdHJhY2sgdGhlIGN1cnJlbnQgc2hhZG93IHN0YWNrIGJhc2UuICBJbiBzZXRj b250ZXh0IGFuZApzd2FwY29udGV4dCwgaWYgdGhlIHRhcmdldCBzaGFkb3cgc3RhY2sgYmFzZSBp cyB0aGUgc2FtZSBhcyB0aGUgY3VycmVudApzaGFkb3cgc3RhY2sgYmFzZSwgd2UgdW53aW5kIHRo ZSBzaGFkb3cgc3RhY2suICBPdGhlcndpc2UgaXQgaXMgYSBzdGFjawpzd2l0Y2ggYW5kIHdlIGxv b2sgZm9yIGEgcmVzdG9yZSB0b2tlbi4KCldlIGVuYWJsZSBzaGFkb3cgc3RhY2sgYXQgcnVuLXRp bWUgb25seSBpZiBwcm9ncmFtIGFuZCBhbGwgdXNlZCBzaGFyZWQKb2JqZWN0cywgaW5jbHVkaW5n IGRsb3BlbmVkIG9uZXMsIGFyZSBzaGFkb3cgc3RhY2sgZW5hYmxlZCwgd2hpY2ggbWVhbnMKdGhh dCB0aGV5IG11c3QgYmUgY29tcGlsZWQgd2l0aCBHQ0MgOCBvciBhYm92ZSBhbmQgZ2xpYmMgMi4y OCBvciBhYm92ZS4KV2UgbmVlZCB0byBzYXZlIGFuZCByZXN0b3JlIHNoYWRvdyBzdGFjayBvbmx5 IGlmIHNoYWRvdyBzdGFjayBpcyBlbmFibGVkLgpXaGVuIGNhbGxlciBvZiBnZXRjb250ZXh0LCBz ZXRjb250ZXh0LCBzd2FwY29udGV4dCBhbmQgbWFrZWNvbnRleHQgaXMKY29tcGlsZWQgd2l0aCBz bWFsbGVyIHVjb250ZXh0X3QsIHNoYWRvdyBzdGFjayB3b24ndCBiZSBlbmFibGVkIGF0CnJ1bi10 aW1lLiAgV2UgY2hlY2sgaWYgc2hhZG93IHN0YWNrIGlzIGVuYWJsZWQgYmVmb3JlIGFjY2Vzc2lu ZyB0aGUKZXh0ZW5kZWQgZmllbGQgaW4gdWNvbnRleHRfdC4KClRlc3RlZCBvbiBpMzg2IENFVC9u b24tQ0VUIG1hY2hpbmVzLgotLS0KIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvZ2V0Y29u dGV4dC5TICAgfCAgNTYgKysrKysrKysKIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvbWFr ZWNvbnRleHQuUyAgfCAxMjMgKysrKysrKysrKysrKysrKysKIHN5c2RlcHMvdW5peC9zeXN2L2xp bnV4L2kzODYvc2V0Y29udGV4dC5TICAgfCAxMDEgKysrKysrKysrKysrKy0KIHN5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L2kzODYvc3dhcGNvbnRleHQuUyAgfCAxMzkgKysrKysrKysrKysrKysrKysr KysKIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc3lzZGVwLmggICAgICAgfCAgIDUgKwog c3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni91Y29udGV4dF9pLnN5bSB8ICAgNCArCiA2IGZp bGVzIGNoYW5nZWQsIDQyNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvZ2V0Y29udGV4dC5TIGIvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvaTM4Ni9nZXRjb250ZXh0LlMKaW5kZXggOWMxZGY5YTJhYS4uZDkxY2Zl NGIxZCAxMDA2NDQKLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9nZXRjb250ZXh0 LlMKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9nZXRjb250ZXh0LlMKQEAgLTE4 LDYgKzE4LDcgQEAKICAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAj aW5jbHVkZSA8c3lzZGVwLmg+CisjaW5jbHVkZSA8YXNtL3ByY3RsLmg+CiAKICNpbmNsdWRlICJ1 Y29udGV4dF9pLmgiCiAKQEAgLTQyLDYgKzQzLDYxIEBAIEVOVFJZKF9fZ2V0Y29udGV4dCkKIAlt b3Z3CSVmcywgJWR4CiAJbW92bAklZWR4LCBvRlMoJWVheCkKIAorI2lmIFNIU1RLX0VOQUJMRUQK KwkvKiBDaGVjayBpZiBzaGFkb3cgc3RhY2sgaXMgZW5hYmxlZC4gICovCisJdGVzdGwJJFg4Nl9G RUFUVVJFXzFfU0hTVEssICVnczpGRUFUVVJFXzFfT0ZGU0VUCisJanoJTChub19zaHN0aykKKwor CS8qIFNhdmUgRUFYIGluIEVEWC4gICovCisJbW92bAklZWF4LCAlZWR4CisKKwl4b3JsCSVlYXgs ICVlYXgKKwljbXBsCSVnczpTU1BfQkFTRV9PRkZTRVQsICVlYXgKKwlqbnoJTChzaGFkb3dfc3Rh Y2tfYm91bmRfcmVjb3JkZWQpCisKKwkvKiBTYXZlIEVCWCBpbiB0aGUgZmlyc3Qgc2NyYXRjaCBy ZWdpc3RlciBzbG90LiAgKi8KKwltb3ZsCSVlYngsIG9TQ1JBVENIMSglZWR4KQorCisJLyogR2V0 IHRoZSBiYXNlIGFkZHJlc3MgYW5kIHNpemUgb2YgdGhlIGRlZmF1bHQgc2hhZG93IHN0YWNrCisJ ICAgd2hpY2ggbXVzdCBiZSB0aGUgY3VycmVudCBzaGFkb3cgc3RhY2sgc2luY2Ugbm90aGluZyBo YXMKKwkgICBiZWVuIHJlY29yZGVkIHlldC4gICovCisJc3ViCSQyNCwgJWVzcAorCW1vdgklZXNw LCAlZWN4CisJbW92bAkkQVJDSF9DRVRfU1RBVFVTLCAlZWJ4CisJbW92bAkkX19OUl9hcmNoX3By Y3RsLCAlZWF4CisJRU5URVJfS0VSTkVMCisJdGVzdGwJJWVheCwgJWVheAorCWp6CUwoY29udGlu dWVfbm9fZXJyKQorCisJLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgKi8KKwlobHQKKwor TChjb250aW51ZV9ub19lcnIpOgorCS8qIFJlc3RvcmUgRUJYIGZyb20gdGhlIGZpcnN0IHNjcmF0 Y2ggcmVnaXN0ZXIgc2xvdC4gICovCisJbW92bAlvU0NSQVRDSDEoJWVkeCksICVlYngKKworCS8q IFJlY29yZCB0aGUgYmFzZSBvZiB0aGUgY3VycmVudCBzaGFkb3cgc3RhY2suICAqLworCW1vdmwJ OCglZXNwKSwgJWVheAorCW1vdmwJJWVheCwgJWdzOlNTUF9CQVNFX09GRlNFVAorCWFkZAkkMjQs ICVlc3AKKworTChzaGFkb3dfc3RhY2tfYm91bmRfcmVjb3JkZWQpOgorCS8qIExvYWQgYWRkcmVz cyBvZiB0aGUgY29udGV4dCBkYXRhIHN0cnVjdHVyZS4gICovCisJbW92bAk0KCVlc3ApLCAlZWF4 CisKKwkvKiBHZXQgdGhlIGN1cnJlbnQgc2hhZG93IHN0YWNrIHBvaW50ZXIuICAqLworCXJkc3Nw ZAklZWR4CisJLyogTkI6IFNhdmUgdGhlIGNhbGxlcidzIHNoYWRvdyBzdGFjayBzbyB0aGF0IHdl IGNhbiBqdW1wIGJhY2sKKwkgICB0byB0aGUgY2FsbGVyIGRpcmVjdGx5LiAgKi8KKwlhZGRsCSQ0 LCAlZWR4CisJbW92bAklZWR4LCBvU1NQKCVlYXgpCisKKwkvKiBTYXZlIHRoZSBjdXJyZW50IHNo YWRvdyBzdGFjayBiYXNlIGluIHVjb250ZXh0LiAgKi8KKwltb3ZsCSVnczpTU1BfQkFTRV9PRkZT RVQsICVlZHgKKwltb3ZsCSVlZHgsIChvU1NQICsgNCkoJWVheCkKKworTChub19zaHN0ayk6Cisj ZW5kaWYKIAkvKiBXZSBoYXZlIHNlcGFyYXRlIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIGNvbnRl bnQgbWVtb3J5IG9uIHRoZQogCSAgIHN0YWNrLiAgV2UgdXNlIHRoZSBfX2ZwcmVnc19tZW0gYmxv Y2sgaW4gdGhlIGNvbnRleHQuICBTZXQgdGhlCiAJICAgbGlua3MgdXAgY29ycmVjdGx5LiAgKi8K ZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvbWFrZWNvbnRleHQuUyBi L3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvbWFrZWNvbnRleHQuUwppbmRleCBhZDljZTVm OTc3Li45MTAwOTY3NWQxIDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2 L21ha2Vjb250ZXh0LlMKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9tYWtlY29u dGV4dC5TCkBAIC0xOCw2ICsxOCw3IEBACiAgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KIAogI2luY2x1ZGUgPHN5c2RlcC5oPgorI2luY2x1ZGUgPGFzbS9wcmN0bC5oPgog CiAjaW5jbHVkZSAidWNvbnRleHRfaS5oIgogCkBAIC02OCw2ICs2OSwxMjcgQEAgRU5UUlkoX19t YWtlY29udGV4dCkKIAlqbnoJMWIKIDI6CiAKKyNpZiBTSFNUS19FTkFCTEVECisJLyogQ2hlY2sg aWYgU2hhZG93IFN0YWNrIGlzIGVuYWJsZWQuICAqLworCXRlc3RsCSRYODZfRkVBVFVSRV8xX1NI U1RLLCAlZ3M6RkVBVFVSRV8xX09GRlNFVAorCWp6CUwoc2tpcF9zc3ApCisKKwkvKiBSZWxvYWQg dGhlIHBvaW50ZXIgdG8gdWNvbnRleHQuICAqLworCW1vdmwJNCglZXNwKSwgJWVheAorCisJLyog U2hhZG93IHN0YWNrIGlzIGVuYWJsZWQuICBXZSBuZWVkIHRvIGFsbG9jYXRlIGEgbmV3IHNoYWRv dworCSAgIHN0YWNrLiAgKi8KKwlzdWJsCW9TU19TUCglZWF4KSwgJWVkeAorCXNocmwJJFNUQUNL X1NJWkVfVE9fU0hBRE9XX1NUQUNLX1NJWkVfU0hJRlQsICVlZHgKKworCS8qIEFsaWduIHNoYWRv dyBzdGFjayBzaXplIHRvIDggYnl0ZXMuICAqLworCWFkZGwJJDcsICVlZHgKKwlhbmRsCSQtOCwg JWVkeAorCisJLyogU3RvcmUgc2hhZG93IHN0YWNrIHNpemUgaW4gX19zc3BbMl0uICAqLworCW1v dmwJJWVkeCwgKG9TU1AgKyA4KSglZWF4KQorCisJLyogU2F2ZSBFU0kgaW4gdGhlIHNlY29uZCBz Y3JhdGNoIHJlZ2lzdGVyIHNsb3QuICAqLworCW1vdmwJJWVzaSwgb1NDUkFUQ0gyKCVlYXgpCisJ LyogU2F2ZSBFREkgaW4gdGhlIHRoaXJkIHNjcmF0Y2ggcmVnaXN0ZXIgc2xvdC4gICovCisJbW92 bAklZWRpLCBvU0NSQVRDSDMoJWVheCkKKworCS8qIFNhdmUgdGhlIHBvaW50ZXIgdG8gdWNvbnRl eHQuICAqLworCW1vdmwJJWVheCwgJWVkaQorCisJLyogR2V0IHRoZSBvcmlnaW5hbCBzaGFkb3cg c3RhY2sgcG9pbnRlci4gICovCisJcmRzc3BkCSVlc2kKKworCS8qIEFsaWduIHRoZSBzYXZlZCBv cmlnaW5hbCBzaGFkb3cgc3RhY2sgcG9pbnRlciB0byB0aGUgbmV4dAorCSAgIDggYnl0ZSBhbGln bmVkIGJvdW5kYXJ5LiAgKi8KKwlhbmRsCSQtOCwgJWVzaQorCisJLyogTG9hZCB0aGUgdG9wIG9m IHRoZSBuZXcgc3RhY2sgaW50byBFRFguICAqLworCW1vdmwJb0VTUCglZWF4KSwgJWVkeAorCisJ LyogV2UgbmVlZCB0byB0ZXJtaW5hdGUgdGhlIEZERSBoZXJlIGJlY2F1c2UgdGhlIHVud2luZGVy IGxvb2tzCisJICAgYXQgcmEtMSBmb3IgdW53aW5kIGluZm9ybWF0aW9uLiAgKi8KKwljZmlfZW5k cHJvYworCisJLyogU3dhcCB0aGUgb3JpZ2luYWwgc3RhY2sgcG9pbnRlciB3aXRoIHRoZSB0b3Ag b2YgdGhlIG5ldworCSAgIHN0YWNrLiAgKi8KKwl4Y2hnbAklZXNwLCAlZWR4CisKKwkvKiBBZGQg NCBieXRlcyBzaW5jZSBDQUxMIHdpbGwgcHVzaCB0aGUgNC1ieXRlIHJldHVybiBhZGRyZXNzCisJ ICAgb250byBzdGFjay4gICovCisJYWRkbAkkNCwgJWVzcAorCisJLyogQWxsb2NhdGUgdGhlIG5l dyBzaGFkb3cgc3RhY2suICBTYXZlIEVCWCBpbiB0aGUgZmlyc3Qgc2NyYXRjaAorCSAgIHJlZ2lz dGVyIHNsb3QuICAqLworCW1vdmwJJWVieCwgb1NDUkFUQ0gxKCVlYXgpCisKKwkvKiBDRVQgc3lz Y2FsbCB0YWtlcyA2NC1iaXQgc2l6ZXMuICAqLworCXN1YmwJJDE2LCAlZXNwCisJbW92bAkob1NT UCArIDgpKCVlYXgpLCAlZWN4CisJbW92bAklZWN4LCAoJWVzcCkKKwltb3ZsCSQwLCA0KCVlc3Ap CisJbW92bAklZWN4LCA4KCVlc3ApCisJbW92bAkkMCwgMTIoJWVzcCkKKwltb3ZsCSVlc3AsICVl Y3gKKworCW1vdmwJJEFSQ0hfQ0VUX0FMTE9DX1NIU1RLLCAlZWJ4CisJbW92bAkkX19OUl9hcmNo X3ByY3RsLCAlZWF4CisJRU5URVJfS0VSTkVMCisJdGVzdGwJJWVheCwgJWVheAorCWpuZQlMKGhs dCkJCS8qIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4gICovCisKKwkvKiBDb3B5IHRoZSBiYXNl IGFkZHJlc3Mgb2YgdGhlIG5ldyBzaGFkb3cgc3RhY2sgdG8gX19zc3BbMV0uICAqLworCW1vdmwJ KCVlc3ApLCAlZWF4CisJbW92bAklZWF4LCAob1NTUCArIDQpKCVlZGkpCisKKwlhZGRsCSQxNiwg JWVzcAorCisJLyogUmVzdG9yZSBFQlggZnJvbSB0aGUgZmlyc3Qgc2NyYXRjaCByZWdpc3RlciBz bG90LiAgKi8KKwltb3ZsCW9TQ1JBVENIMSglZWRpKSwgJWVieAorCisJLyogR2V0IHRoZSBzaXpl IG9mIHRoZSBuZXcgc2hhZG93IHN0YWNrLiAgKi8KKwltb3ZsCShvU1NQICsgOCkoJWVkaSksICVl Y3gKKworCS8qIFVzZSB0aGUgcmVzdG9yZSBzdG9rZW4gdG8gcmVzdG9yZSB0aGUgbmV3IHNoYWRv dyBzdGFjay4gICovCisJcnN0b3Jzc3AgLTgoJWVheCwgJWVjeCkKKworCS8qIFNhdmUgdGhlIHJl c3RvcmUgdG9rZW4gYXQgdGhlIG5leHQgOCBieXRlIGFsaWduZWQgYm91bmRhcnkKKwkgICBvbiB0 aGUgb3JpZ2luYWwgc2hhZG93IHN0YWNrLiAgKi8KKwlzYXZlcHJldnNzcAorCisJLyogUHVzaCB0 aGUgYWRkcmVzcyBvZiAiam1wIGV4aXRjb2RlIiBvbnRvIHRoZSBuZXcgc3RhY2sgYXMKKwkgICB3 ZWxsIGFzIHRoZSBuZXcgc2hhZG93IHN0YWNrLiAgKi8KKwljYWxsCTFmCisJam1wCUwoZXhpdGNv ZGUpCisxOgorCisJLyogR2V0IHRoZSBuZXcgc2hhZG93IHN0YWNrIHBvaW50ZXIuICAqLworCXJk c3NwZAklZWF4CisKKwkvKiBVc2UgdGhlIHJlc3RvcmUgc3Rva2VuIHRvIHJlc3RvcmUgdGhlIG9y aWdpbmFsIHNoYWRvdyBzdGFjay4gICovCisJcnN0b3Jzc3AgLTgoJWVzaSkKKworCS8qIFNhdmUg dGhlIHJlc3RvcmUgdG9rZW4gb24gdGhlIG5ldyBzaGFkb3cgc3RhY2suICAqLworCXNhdmVwcmV2 c3NwCisKKwkvKiBTdG9yZSB0aGUgbmV3IHNoYWRvdyBzdGFjayBwb2ludGVyIGluIF9fc3NwWzBd LiAgKi8KKwltb3ZsCSVlYXgsIG9TU1AoJWVkaSkKKworCS8qIFJlc3RvcmUgdGhlIG9yaWdpbmFs IHN0YWNrLiAgKi8KKwltb3YJJWVkeCwgJWVzcAorCisJY2ZpX3N0YXJ0cHJvYworCisJLyogUmVz dG9yZSBFU0kgZnJvbSB0aGUgc2Vjb25kIHNjcmF0Y2ggcmVnaXN0ZXIgc2xvdC4gICovCisJbW92 bAlvU0NSQVRDSDIoJWVkaSksICVlc2kKKwkvKiBSZXN0b3JlIEVESSBmcm9tIHRoZSB0aGlyZCBz Y3JhdGNoIHJlZ2lzdGVyIHNsb3QuICAqLworCW1vdmwJb1NDUkFUQ0gzKCVlZGkpLCAlZWRpCisK KwlyZXQKKworTChza2lwX3NzcCk6CisjZW5kaWYKKwogCS8qIElmIHRoZSBmdW5jdGlvbiB3ZSBj YWxsIHJldHVybnMgd2UgbXVzdCBjb250aW51ZSB3aXRoIHRoZQogCSAgIGNvbnRleHQgd2hpY2gg aXMgZ2l2ZW4gaW4gdGhlIHVjX2xpbmsgZWxlbWVudC4gIFRvIGRvIHRoaXMKIAkgICBzZXQgdGhl IHJldHVybiBhZGRyZXNzIGZvciB0aGUgZnVuY3Rpb24gdGhlIHVzZXIgcHJvdmlkZXMKQEAgLTEy Myw2ICsyNDUsNyBAQCBMKGNhbGxfZXhpdCk6CiAJY2FsbAlISURERU5fSlVNUFRBUkdFVChleGl0 KQogCS8qIFRoZSAnZXhpdCcgY2FsbCBzaG91bGQgbmV2ZXIgcmV0dXJuLiAgSW4gY2FzZSBpdCBk b2VzIGNhdXNlCiAJICAgdGhlIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgKi8KK0woaGx0KToKIAlo bHQKIAljZmlfc3RhcnRwcm9jCiBFTkQoX19tYWtlY29udGV4dCkKZGlmZiAtLWdpdCBhL3N5c2Rl cHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc2V0Y29udGV4dC5TIGIvc3lzZGVwcy91bml4L3N5c3Yv bGludXgvaTM4Ni9zZXRjb250ZXh0LlMKaW5kZXggZjA0MmQ4MGJmNC4uMzMyYjUxNDdiYyAxMDA2 NDQKLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zZXRjb250ZXh0LlMKKysrIGIv c3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zZXRjb250ZXh0LlMKQEAgLTE4LDYgKzE4LDcg QEAKICAgIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogCiAjaW5jbHVkZSA8 c3lzZGVwLmg+CisjaW5jbHVkZSA8YXNtL3ByY3RsLmg+CiAKICNpbmNsdWRlICJ1Y29udGV4dF9p LmgiCiAKQEAgLTU2LDkgKzU3LDYgQEAgRU5UUlkoX19zZXRjb250ZXh0KQogCW1vdmwJb0ZTKCVl YXgpLCAlZWN4CiAJbW92dwklY3gsICVmcwogCi0JLyogRmV0Y2ggdGhlIGFkZHJlc3MgdG8gcmV0 dXJuIHRvLiAgKi8KLQltb3ZsCW9FSVAoJWVheCksICVlY3gKLQogCS8qIExvYWQgdGhlIG5ldyBz dGFjayBwb2ludGVyLiAgKi8KIAljZmlfZGVmX2NmYSAoZWF4LCAwKQogCWNmaV9vZmZzZXQgKGVk aSwgb0VESSkKQEAgLTY3LDYgKzY1LDEwMyBAQCBFTlRSWShfX3NldGNvbnRleHQpCiAJY2ZpX29m ZnNldCAoZWJ4LCBvRUJYKQogCW1vdmwJb0VTUCglZWF4KSwgJWVzcAogCisjaWYgU0hTVEtfRU5B QkxFRAorCS8qIENoZWNrIGlmIFNoYWRvdyBTdGFjayBpcyBlbmFibGVkLiAgKi8KKwl0ZXN0bAkk WDg2X0ZFQVRVUkVfMV9TSFNUSywgJWdzOkZFQVRVUkVfMV9PRkZTRVQKKwlqeglMKG5vX3Noc3Rr KQorCisJLyogSWYgdGhlIGJhc2Ugb2YgdGhlIHRhcmdldCBzaGFkb3cgc3RhY2sgaXMgdGhlIHNh bWUgYXMgdGhlCisJICAgYmFzZSBvZiB0aGUgY3VycmVudCBzaGFkb3cgc3RhY2ssIHdlIHVud2lu ZCB0aGUgc2hhZG93CisJICAgc3RhY2suICBPdGhlcndpc2UgaXQgaXMgYSBzdGFjayBzd2l0Y2gg YW5kIHdlIGxvb2sgZm9yIGEKKwkgICByZXN0b3JlIHRva2VuLiAgKi8KKwltb3ZsCW9TU1AoJWVh eCksICVlc2kKKwltb3ZsCSVlc2ksICVlZGkKKworCS8qIEdldCB0aGUgYmFzZSBvZiB0aGUgdGFy Z2V0IHNoYWRvdyBzdGFjay4gICovCisJbW92bAkob1NTUCArIDQpKCVlYXgpLCAlZWN4CisJY21w bAklZ3M6U1NQX0JBU0VfT0ZGU0VULCAlZWN4CisJamUJTCh1bndpbmRfc2hhZG93X3N0YWNrKQor CisJLyogQWxpZ24gdGhlIHNhdmVkIG9yaWdpbmFsIHNoYWRvdyBzdGFjayBwb2ludGVyIHRvIHRo ZSBuZXh0CisJICAgOCBieXRlIGFsaWduZWQgYm91bmRhcnkuICAqLworCWFuZGwJJC04LCAlZXNp CisKK0woZmluZF9yZXN0b3JlX3Rva2VuX2xvb3ApOgorCS8qIExvb2sgZm9yIGEgcmVzdG9yZSB0 b2tlbi4gICovCisJbW92bAktOCglZXNpKSwgJWVieAorCWFuZGwJJC04LCAlZWJ4CisJY21wbAkl ZXNpLCAlZWJ4CisJamUJTChyZXN0b3JlX3NoYWRvd19zdGFjaykKKworCS8qIFRyeSB0aGUgbmV4 dCBzbG90LiAgKi8KKwlzdWJsCSQ4LCAlZXNpCisJam1wCUwoZmluZF9yZXN0b3JlX3Rva2VuX2xv b3ApCisKK0wocmVzdG9yZV9zaGFkb3dfc3RhY2spOgorCS8qIFBvcCByZXR1cm4gYWRkcmVzcyBm cm9tIHRoZSBzaGFkb3cgc3RhY2sgc2luY2Ugc2V0Y29udGV4dAorCSAgIHdpbGwgbm90IHJldHVy bi4gICovCisJbW92bAkkMSwgJWVieAorCWluY3NzcGQJJWVieAorCisJLyogVXNlIHRoZSByZXN0 b3JlIHN0b2tlbiB0byByZXN0b3JlIHRoZSB0YXJnZXQgc2hhZG93IHN0YWNrLiAgKi8KKwlyc3Rv cnNzcCAtOCglZXNpKQorCisJLyogU2F2ZSB0aGUgcmVzdG9yZSB0b2tlbiBvbiB0aGUgb2xkIHNo YWRvdyBzdGFjay4gIE5COiBUaGlzCisJICAgcmVzdG9yZSB0b2tlbiBtYXkgYmUgY2hlY2tlZCBi eSBzZXRjb250ZXh0IG9yIHN3YXBjb250ZXh0CisJICAgbGF0ZXIuICAqLworCXNhdmVwcmV2c3Nw CisKKwkvKiBSZWNvcmQgdGhlIG5ldyBzaGFkb3cgc3RhY2sgYmFzZSB0aGF0IHdhcyBzd2l0Y2hl ZCB0by4gICovCisJbW92bAkob1NTUCArIDQpKCVlYXgpLCAlZWJ4CisJbW92bAklZWJ4LCAlZ3M6 U1NQX0JBU0VfT0ZGU0VUCisKK0wodW53aW5kX3NoYWRvd19zdGFjayk6CisJcmRzc3BkCSVlYngK KwlzdWJsCSVlZGksICVlYngKKwlqZQlMKHNraXBfdW53aW5kX3NoYWRvd19zdGFjaykKKwluZWds CSVlYngKKwlzaHJsCSQyLCAlZWJ4CisJbW92bAkkMjU1LCAlZXNpCitMKGxvb3ApOgorCWNtcGwJ JWVzaSwgJWVieAorCWNtb3ZiCSVlYngsICVlc2kKKwlpbmNzc3BkCSVlc2kKKwlzdWJsCSVlc2ks ICVlYngKKwlqYQlMKGxvb3ApCisKK0woc2tpcF91bndpbmRfc2hhZG93X3N0YWNrKToKKworCS8q IExvYWQgdGhlIHZhbHVlcyBvZiBhbGwgdGhlIHByZXNlcnZlZCByZWdpc3RlcnMgKGV4Y2VwdCBF U1ApLiAgKi8KKwltb3ZsCW9FREkoJWVheCksICVlZGkKKwltb3ZsCW9FU0koJWVheCksICVlc2kK Kwltb3ZsCW9FQlAoJWVheCksICVlYnAKKwltb3ZsCW9FQlgoJWVheCksICVlYngKKworCS8qIEdl dCB0aGUgcmV0dXJuIGFkZHJlc3Mgc2V0IHdpdGggZ2V0Y29udGV4dC4gICovCisJbW92bAlvRUlQ KCVlYXgpLCAlZWN4CisKKwkvKiBDaGVjayBpZiByZXR1cm4gYWRkcmVzcyBpcyB2YWxpZCBmb3Ig dGhlIGNhc2Ugd2hlbiBzZXRjb250ZXh0CisJICAgaXMgaW52b2tlZCBmcm9tIEwoZXhpdGNvZGUp IHdpdGggbGlua2VkIGNvbnRleHQuICAqLworCXJkc3NwZAklZWF4CisJY21wbAkoJWVheCksICVl Y3gKKwkvKiBDbGVhciBFQVggdG8gaW5kaWNhdGUgc3VjY2Vzcy4gIE5COiBEb24ndCB1c2UgeG9y bCB0byBrZWVwCisJICAgRUZMQUdTIGZvciBqbmUuICAqLworCW1vdmwJJDAsICVlYXgKKwlqbmUJ TChqbXApCisJLyogUmV0dXJuIHRvIHRoZSBuZXcgY29udGV4dCBpZiByZXR1cm4gYWRkcmVzcyB2 YWxpZC4gICovCisJcHVzaGwJJWVjeAorCXJldAorCitMKGptcCk6CisJLyogSnVtcCB0byB0aGUg bmV3IGNvbnRleHQgZGlyZWN0bHkuICAqLworCWptcAkqJWVjeAorCitMKG5vX3Noc3RrKToKKyNl bmRpZgorCisJLyogRmV0Y2ggdGhlIGFkZHJlc3MgdG8gcmV0dXJuIHRvLiAgKi8KKwltb3ZsCW9F SVAoJWVheCksICVlY3gKKwogCS8qIFB1c2ggdGhlIHJldHVybiBhZGRyZXNzIG9uIHRoZSBuZXcg c3RhY2sgc28gd2UgY2FuIHJldHVybiB0aGVyZS4gICovCiAJcHVzaGwJJWVjeAogCmRpZmYgLS1n aXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N3YXBjb250ZXh0LlMgYi9zeXNkZXBz L3VuaXgvc3lzdi9saW51eC9pMzg2L3N3YXBjb250ZXh0LlMKaW5kZXggMDkwYzJkOGMzZS4uMjAz ZWFmYTJlNyAxMDA2NDQKLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4Ni9zd2FwY29u dGV4dC5TCisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvc3dhcGNvbnRleHQuUwpA QCAtMTgsNiArMTgsNyBAQAogICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CiAKICNpbmNsdWRlIDxzeXNkZXAuaD4KKyNpbmNsdWRlIDxhc20vcHJjdGwuaD4KIAogI2luY2x1 ZGUgInVjb250ZXh0X2kuaCIKIApAQCAtNzYsNiArNzcsMTQ0IEBAIEVOVFJZKF9fc3dhcGNvbnRl eHQpCiAJbW92bAlvRlMoJWVheCksICVlZHgKIAltb3Z3CSVkeCwgJWZzCiAKKyNpZiBTSFNUS19F TkFCTEVECisJLyogQ2hlY2sgaWYgU2hhZG93IFN0YWNrIGlzIGVuYWJsZWQuICAqLworCXRlc3Rs CSRYODZfRkVBVFVSRV8xX1NIU1RLLCAlZ3M6RkVBVFVSRV8xX09GRlNFVAorCWp6CUwobm9fc2hz dGspCisKKwl4b3JsCSVlYXgsICVlYXgKKwljbXBsCSVnczpTU1BfQkFTRV9PRkZTRVQsICVlYXgK KwlqbnoJTChzaGFkb3dfc3RhY2tfYm91bmRfcmVjb3JkZWQpCisKKwkvKiBHZXQgdGhlIGJhc2Ug YWRkcmVzcyBhbmQgc2l6ZSBvZiB0aGUgZGVmYXVsdCBzaGFkb3cgc3RhY2sKKwkgICB3aGljaCBt dXN0IGJlIHRoZSBjdXJyZW50IHNoYWRvdyBzdGFjayBzaW5jZSBub3RoaW5nIGhhcworCSAgIGJl ZW4gcmVjb3JkZWQgeWV0LiAgKi8KKwlzdWIJJDI0LCAlZXNwCisJbW92CSVlc3AsICVlY3gKKwlt b3ZsCSRBUkNIX0NFVF9TVEFUVVMsICVlYngKKwltb3ZsCSRfX05SX2FyY2hfcHJjdGwsICVlYXgK KwlFTlRFUl9LRVJORUwKKwl0ZXN0bAklZWF4LCAlZWF4CisJanoJTChjb250aW51ZV9ub19lcnIp CisKKwkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uICAqLworCWhsdAorCitMKGNvbnRpbnVl X25vX2Vycik6CisJLyogUmVjb3JkIHRoZSBiYXNlIG9mIHRoZSBjdXJyZW50IHNoYWRvdyBzdGFj ay4gICovCisJbW92bAk4KCVlc3ApLCAlZWF4CisJbW92bAklZWF4LCAlZ3M6U1NQX0JBU0VfT0ZG U0VUCisJYWRkCSQyNCwgJWVzcAorCitMKHNoYWRvd19zdGFja19ib3VuZF9yZWNvcmRlZCk6CisJ LyogTG9hZCBhZGRyZXNzIG9mIHRoZSBjb250ZXh0IGRhdGEgc3RydWN0dXJlIHdlIHNhdmUgaW4u ICAqLworCW1vdmwJNCglZXNwKSwgJWVheAorCisJLyogTG9hZCBhZGRyZXNzIG9mIHRoZSBjb250 ZXh0IGRhdGEgc3RydWN0dXJlIHdlIHN3YXAgaW4gICovCisJbW92bAk4KCVlc3ApLCAlZWR4CisK KyAgICAgICAvKiBJZiB3ZSB1bndpbmQgdGhlIHN0YWNrLCB3ZSBjYW4ndCB1bmRvIHN0YWNrIHVu d2luZGluZy4gIEp1c3QKKwkgICBzYXZlIHRoZSB0YXJnZXQgc2hhZG93IHN0YWNrIHBvaW50ZXIg YXMgdGhlIGN1cnJlbnQgc2hhZG93CisJICAgc3RhY2sgcG9pbnRlci4gICAqLworCW1vdmwJb1NT UCglZWR4KSwgJWVjeAorCW1vdmwJJWVjeCwgb1NTUCglZWF4KQorCisJLyogU2F2ZSB0aGUgY3Vy cmVudCBzaGFkb3cgc3RhY2sgYmFzZSBpbiB1Y29udGV4dC4gICovCisJbW92bAklZ3M6U1NQX0JB U0VfT0ZGU0VULCAlZWN4CisJbW92bAklZWN4LCAob1NTUCArIDQpKCVlYXgpCisKKwkvKiBJZiB0 aGUgYmFzZSBvZiB0aGUgdGFyZ2V0IHNoYWRvdyBzdGFjayBpcyB0aGUgc2FtZSBhcyB0aGUKKwkg ICBiYXNlIG9mIHRoZSBjdXJyZW50IHNoYWRvdyBzdGFjaywgd2UgdW53aW5kIHRoZSBzaGFkb3cK KwkgICBzdGFjay4gIE90aGVyd2lzZSBpdCBpcyBhIHN0YWNrIHN3aXRjaCBhbmQgd2UgbG9vayBm b3IgYQorCSAgIHJlc3RvcmUgdG9rZW4uICAqLworCW1vdmwJb1NTUCglZWR4KSwgJWVzaQorCW1v dmwJJWVzaSwgJWVkaQorCisJLyogR2V0IHRoZSBiYXNlIG9mIHRoZSB0YXJnZXQgc2hhZG93IHN0 YWNrLiAgKi8KKwltb3ZsCShvU1NQICsgNCkoJWVkeCksICVlY3gKKwljbXBsCSVnczpTU1BfQkFT RV9PRkZTRVQsICVlY3gKKwlqZQlMKHVud2luZF9zaGFkb3dfc3RhY2spCisKKwkvKiBBbGlnbiB0 aGUgc2F2ZWQgb3JpZ2luYWwgc2hhZG93IHN0YWNrIHBvaW50ZXIgdG8gdGhlIG5leHQKKwkgICA4 IGJ5dGUgYWxpZ25lZCBib3VuZGFyeS4gICovCisJYW5kbAkkLTgsICVlc2kKKworTChmaW5kX3Jl c3RvcmVfdG9rZW5fbG9vcCk6CisJLyogTG9vayBmb3IgYSByZXN0b3JlIHRva2VuLiAgKi8KKwlt b3ZsCS04KCVlc2kpLCAlZWJ4CisJYW5kbAkkLTgsICVlYngKKwljbXBsCSVlc2ksICVlYngKKwlq ZQlMKHJlc3RvcmVfc2hhZG93X3N0YWNrKQorCisJLyogVHJ5IHRoZSBuZXh0IHNsb3QuICAqLwor CXN1YmwJJDgsICVlc2kKKwlqbXAJTChmaW5kX3Jlc3RvcmVfdG9rZW5fbG9vcCkKKworTChyZXN0 b3JlX3NoYWRvd19zdGFjayk6CisJLyogVGhlIHRhcmdldCBzaGFkb3cgc3RhY2sgd2lsbCBiZSBy ZXN0b3JlZC4gIFNhdmUgdGhlIGN1cnJlbnQKKwkgICBzaGFkb3cgc3RhY2sgcG9pbnRlci4gICov CisJcmRzc3BkCSVlY3gKKwltb3ZsCSVlY3gsIG9TU1AoJWVheCkKKworCS8qIFVzZSB0aGUgcmVz dG9yZSBzdG9rZW4gdG8gcmVzdG9yZSB0aGUgdGFyZ2V0IHNoYWRvdyBzdGFjay4gICovCisJcnN0 b3Jzc3AgLTgoJWVzaSkKKworCS8qIFNhdmUgdGhlIHJlc3RvcmUgdG9rZW4gb24gdGhlIG9sZCBz aGFkb3cgc3RhY2suICBOQjogVGhpcworCSAgIHJlc3RvcmUgdG9rZW4gbWF5IGJlIGNoZWNrZWQg Ynkgc2V0Y29udGV4dCBvciBzd2FwY29udGV4dAorCSAgIGxhdGVyLiAgKi8KKwlzYXZlcHJldnNz cAorCisJLyogUmVjb3JkIHRoZSBuZXcgc2hhZG93IHN0YWNrIGJhc2UgdGhhdCB3YXMgc3dpdGNo ZWQgdG8uICAqLworCW1vdmwJKG9TU1AgKyA0KSglZWR4KSwgJWVieAorCW1vdmwJJWVieCwgJWdz OlNTUF9CQVNFX09GRlNFVAorCitMKHVud2luZF9zaGFkb3dfc3RhY2spOgorCXJkc3NwZAklZWJ4 CisJc3VibAklZWRpLCAlZWJ4CisJamUJTChza2lwX3Vud2luZF9zaGFkb3dfc3RhY2spCisJbmVn bAklZWJ4CisJc2hybAkkMiwgJWVieAorCW1vdmwJJDI1NSwgJWVzaQorTChsb29wKToKKwljbXBs CSVlc2ksICVlYngKKwljbW92YgklZWJ4LCAlZXNpCisJaW5jc3NwZAklZXNpCisJc3VibAklZXNp LCAlZWJ4CisJamEJTChsb29wKQorCitMKHNraXBfdW53aW5kX3NoYWRvd19zdGFjayk6CisKKwkv KiBMb2FkIHRoZSBuZXcgc3RhY2sgcG9pbnRlci4gICovCisJbW92bAlvRVNQKCVlZHgpLCAlZXNw CisKKwkvKiBMb2FkIHRoZSB2YWx1ZXMgb2YgYWxsIHRoZSBwcmVzZXJ2ZWQgcmVnaXN0ZXJzIChl eGNlcHQgRVNQKS4gICovCisJbW92bAlvRURJKCVlZHgpLCAlZWRpCisJbW92bAlvRVNJKCVlZHgp LCAlZXNpCisJbW92bAlvRUJQKCVlZHgpLCAlZWJwCisJbW92bAlvRUJYKCVlZHgpLCAlZWJ4CisK KwkvKiBHZXQgdGhlIHJldHVybiBhZGRyZXNzIHNldCB3aXRoIGdldGNvbnRleHQuICAqLworCW1v dmwJb0VJUCglZWR4KSwgJWVjeAorCisJLyogQ2hlY2sgaWYgcmV0dXJuIGFkZHJlc3MgaXMgdmFs aWQgZm9yIHRoZSBjYXNlIHdoZW4gc2V0Y29udGV4dAorCSAgIGlzIGludm9rZWQgZnJvbSBMKGV4 aXRjb2RlKSB3aXRoIGxpbmtlZCBjb250ZXh0LiAgKi8KKwlyZHNzcGQJJWVheAorCWNtcGwJKCVl YXgpLCAlZWN4CisJLyogQ2xlYXIgRUFYIHRvIGluZGljYXRlIHN1Y2Nlc3MuICBOQjogRG9uJ3Qg dXNlIHhvcmwgdG8ga2VlcAorCSAgIEVGTEFHUyBmb3Igam5lLiAgKi8KKwltb3ZsCSQwLCAlZWF4 CisJam5lCUwoam1wKQorCS8qIFJldHVybiB0byB0aGUgbmV3IGNvbnRleHQgaWYgcmV0dXJuIGFk ZHJlc3MgdmFsaWQuICAqLworCXB1c2hsCSVlY3gKKwlyZXQKKworTChqbXApOgorCS8qIEp1bXAg dG8gdGhlIG5ldyBjb250ZXh0IGRpcmVjdGx5LiAgKi8KKwlqbXAJKiVlY3gKKworTChub19zaHN0 ayk6CisjZW5kaWYKKwogCS8qIEZldGNoIHRoZSBhZGRyZXNzIHRvIHJldHVybiB0by4gICovCiAJ bW92bAlvRUlQKCVlYXgpLCAlZWN4CiAKZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xp bnV4L2kzODYvc3lzZGVwLmggYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3N5c2RlcC5o CmluZGV4IDRhYTdiYjQ5NmEuLjQyMGI2YTc5MTIgMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvdW5peC9z eXN2L2xpbnV4L2kzODYvc3lzZGVwLmgKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvaTM4 Ni9zeXNkZXAuaApAQCAtNjYyLDQgKzY2Miw5IEBAIHN0cnVjdCBsaWJjX2RvX3N5c2NhbGxfYXJn cwogIyBlbmRpZgogI2VuZGlmCiAKKy8qIEVhY2ggc2hhZG93IHN0YWNrIHNsb3QgdGFrZXMgNCBi eXRlcy4gIEFzc3VtaW5nIHRoYXQgZWFjaCBzdGFjaworICAgZnJhbWUgdGFrZXMgMTI4IGJ5dGVz LCB0aGlzIGlzIHVzZWQgdG8gY29tcHV0ZSBzaGFkb3cgc3RhY2sgc2l6ZQorICAgZnJvbSBzdGFj ayBzaXplLiAgKi8KKyNkZWZpbmUgU1RBQ0tfU0laRV9UT19TSEFET1dfU1RBQ0tfU0laRV9TSElG VCA1CisKICNlbmRpZiAvKiBsaW51eC9pMzg2L3N5c2RlcC5oICovCmRpZmYgLS1naXQgYS9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3Vjb250ZXh0X2kuc3ltIGIvc3lzZGVwcy91bml4L3N5 c3YvbGludXgvaTM4Ni91Y29udGV4dF9pLnN5bQppbmRleCAxZGZlMDNkMmNjLi4xZDg2MDhlYWZj IDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9pMzg2L3Vjb250ZXh0X2kuc3lt CisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2kzODYvdWNvbnRleHRfaS5zeW0KQEAgLTIy LDYgKzIyLDEwIEBAIG9FQlAJCW1yZWcgKEVCUCkKIG9FU1AJCW1yZWcgKEVTUCkKIG9FQlgJCW1y ZWcgKEVCWCkKIG9FSVAJCW1yZWcgKEVJUCkKK29TQ1JBVENIMQltcmVnIChFQVgpCitvU0NSQVRD SDIJbXJlZyAoRUNYKQorb1NDUkFUQ0gzCW1yZWcgKEVEWCkKIG9GUFJFR1MJCW1jb250ZXh0IChm cHJlZ3MpCiBvU0lHTUFTSwl1Y29udGV4dCAodWNfc2lnbWFzaykKIG9GUFJFR1NNRU0JdWNvbnRl eHQgKF9fZnByZWdzX21lbSkKK29TU1AJCXVjb250ZXh0IChfX3NzcCkKLS0gCjIuMjQuMQoK --0000000000007c3122059e78152e--