From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ot1-x330.google.com (mail-ot1-x330.google.com [IPv6:2607:f8b0:4864:20::330]) by sourceware.org (Postfix) with ESMTPS id B00B13AAA052 for ; Thu, 4 Mar 2021 18:51:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org B00B13AAA052 Received: by mail-ot1-x330.google.com with SMTP id d9so28245566ote.12 for ; Thu, 04 Mar 2021 10:51:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Z8oz4l+pfIh/i/8rjX3YzKpkgCXpvzpVOlwgI/sN1Gs=; b=GwwPokxsJ81NMSodb7lRTr4yXWwmRtrs4BgbZGo6D/puTtxb/9kDNNeOA71kwWkYRb rq9z3K23+TNCEw5QP8L95UPVV8OS+JPdVyeFtwRc/iKSdyvpaCnO6NesWl0G3tvsVaZB IWwiSM7ClZtCusKDhFziIfqsxBBlQCCtAiqw8jiFWKNy9mQpy25BV7B8MT1s0W5sEVYD FU2nFKD3dVhXRz/aNRNHZcYaftidGWlGcXW2GdkOLLD8kVe68DLGX3se3IyYS2/fF9w2 pTvk82FeqO0qZ3T2VULCFB3zSPYDdWiH+EG6IgIrVuU2r9DCVMVpQRJA4A5DktXuwtpZ B3Dg== X-Gm-Message-State: AOAM530tqAywY2II2tqLXe1GAhqC0EtVAF7LoBn4/yHg6XUMzs3meSvu ofQpL+1+PVFy+QSMk+8zglgEDlVEEq2jNq7mhDI= X-Google-Smtp-Source: ABdhPJxHyQvM+V+f0iRNmid59ss0XIzCQr2wOddHQDVJQ1mq5FR+l8B1AGp3ju8XPc0/rn/Ws7x3UD3cOvjZeB9Pr9o= X-Received: by 2002:a9d:7512:: with SMTP id r18mr4622825otk.90.1614883866117; Thu, 04 Mar 2021 10:51:06 -0800 (PST) MIME-Version: 1.0 References: <20210214224505.4448-1-hjl.tools@gmail.com> <87r1lhehkw.fsf@oldenburg.str.redhat.com> <7e132276-269f-b9c6-72fe-9d771e023d29@linaro.org> In-Reply-To: From: "H.J. Lu" Date: Thu, 4 Mar 2021 10:50:29 -0800 Message-ID: Subject: Re: [PATCH v2] Add an internal wrapper for clone, clone2 and clone3 To: Adhemerval Zanella Cc: Florian Weimer , "H.J. Lu via Libc-alpha" Content-Type: multipart/mixed; boundary="00000000000031e4e605bcba73e6" X-Spam-Status: No, score=-3035.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Mar 2021 18:51:10 -0000 --00000000000031e4e605bcba73e6 Content-Type: text/plain; charset="UTF-8" On Thu, Mar 4, 2021 at 10:40 AM H.J. Lu wrote: > > On Mon, Feb 15, 2021 at 6:56 AM Adhemerval Zanella via Libc-alpha > wrote: > > > > > > > > On 15/02/2021 07:44, Florian Weimer via Libc-alpha wrote: > > > * H. J. Lu via Libc-alpha: > > > > > >> The clone3 system call provides a superset of the functionality of clone > > >> and clone2. It also provides a number of API improve ments, including > > >> the ability to specify the size of the child's stack area which can be > > >> used by kernel to compute the shadow stack size when allocating the > > >> shadow stack. Add: > > >> > > >> extern int __clone_internal (struct clone_args *cl_args, size_t size, > > >> int (*__fn) (void *__arg), void *__arg); > > >> > > >> to provide an abstract interface for clone, clone2 and clone3. > > >> > > >> 1. Simplify stack management for clone by passing stack base and size > > >> to __clone_internal. > > >> 2. Consolidate clone vs clone2 differences into a single file. > > >> 3. Use only __clone_internal to clone a thread. If clone3 returns -1 > > >> with ENOSYS, __clone_internal will fall back to clone or clone2. > > >> 4. Add the x86-64 clone3 wrapper. > > >> 5. Enable the public clone3 wrapper in the future after it has been > > >> added to add targets. > > > > > > What do you think about providing a clone wrapper which reuses the > > > caller's stack? That would be useful for a (v)fork-style clone. This > > > variant could also be exported because the callback inherits a > > > semi-valid TCB in this case. > > I have this one as a TODO to improve the posix_spawn. > > Here is the v2 patch: > > 1. Update the stack size field, instead of the stack field, passed to > clone3. > > OK for master? Really add the patch this time :-). -- H.J. --00000000000031e4e605bcba73e6 Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-Add-an-internal-wrapper-for-clone-clone2-and-clon.patch" Content-Disposition: attachment; filename="v2-0001-Add-an-internal-wrapper-for-clone-clone2-and-clon.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_klv8457u0 RnJvbSAyZDQ4YjQwNzY2YmM4NzBkNDRlZTMxZGIyZTI3ODQzYmIyMzc2MzMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFNhdCwgMTMgRmViIDIwMjEgMTE6NDc6NDYgLTA4MDAKU3ViamVjdDogW1BBVENIIHYyXSBBZGQg YW4gaW50ZXJuYWwgd3JhcHBlciBmb3IgY2xvbmUsIGNsb25lMiBhbmQgY2xvbmUzCgpUaGUgY2xv bmUzIHN5c3RlbSBjYWxsIHByb3ZpZGVzIGEgc3VwZXJzZXQgb2YgdGhlIGZ1bmN0aW9uYWxpdHkg b2YgY2xvbmUKYW5kIGNsb25lMi4gIEl0IGFsc28gcHJvdmlkZXMgYSBudW1iZXIgb2YgQVBJIGlt cHJvdmUgbWVudHMsIGluY2x1ZGluZwp0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IHRoZSBzaXplIG9m IHRoZSBjaGlsZCdzIHN0YWNrIGFyZWEgd2hpY2ggY2FuIGJlCnVzZWQgYnkga2VybmVsIHRvIGNv bXB1dGUgdGhlIHNoYWRvdyBzdGFjayBzaXplIHdoZW4gYWxsb2NhdGluZyB0aGUKc2hhZG93IHN0 YWNrLiAgQWRkOgoKZXh0ZXJuIGludCBfX2Nsb25lX2ludGVybmFsIChzdHJ1Y3QgY2xvbmVfYXJn cyAqY2xfYXJncywgc2l6ZV90IHNpemUsCgkJCSAgICAgaW50ICgqX19mbikgKHZvaWQgKl9fYXJn KSwgdm9pZCAqX19hcmcpOwoKdG8gcHJvdmlkZSBhbiBhYnN0cmFjdCBpbnRlcmZhY2UgZm9yIGNs b25lLCBjbG9uZTIgYW5kIGNsb25lMy4KCjEuIFNpbXBsaWZ5IHN0YWNrIG1hbmFnZW1lbnQgZm9y IGNsb25lIGJ5IHBhc3Npbmcgc3RhY2sgYmFzZSBhbmQgc2l6ZQp0byBfX2Nsb25lX2ludGVybmFs LgoyLiBDb25zb2xpZGF0ZSBjbG9uZSB2cyBjbG9uZTIgZGlmZmVyZW5jZXMgaW50byBhIHNpbmds ZSBmaWxlLgozLiBVc2Ugb25seSBfX2Nsb25lX2ludGVybmFsIHRvIGNsb25lIGEgdGhyZWFkLiAg SWYgY2xvbmUzIHJldHVybnMgLTEKd2l0aCBFTk9TWVMsIF9fY2xvbmVfaW50ZXJuYWwgd2lsbCBm YWxsIGJhY2sgdG8gY2xvbmUgb3IgY2xvbmUyLgo0LiBBZGQgdGhlIHg4Ni02NCBjbG9uZTMgd3Jh cHBlci4KNS4gRW5hYmxlIHRoZSBwdWJsaWMgY2xvbmUzIHdyYXBwZXIgaW4gdGhlIGZ1dHVyZSBh ZnRlciBpdCBoYXMgYmVlbgphZGRlZCB0byBhbGwgdGFyZ2V0cy4KClRlc3RlZCB3aXRoIGJ1aWxk LW1hbnktZ2xpYmNzLnB5LiAgVGhlIHg4Ni02NCBjbG9uZTMgd3JhcHBlciBhbmQgdGhlCmk2ODYg Y2xvbmUgZmFsbGJhY2sgYXJlIHRlc3RlZCB1bmRlciA1LjEwLjE1IGtlcm5lbC4KCkNoYW5nZXMg aW4gdjI6CgoxLiBVcGRhdGUgdGhlIHN0YWNrIHNpemUgZmllbGQsIGluc3RlYWQgb2YgdGhlIHN0 YWNrIGZpZWxkLCBwYXNzZWQgdG8KY2xvbmUzLgotLS0KIGluY2x1ZGUvc2NoZWQuaCAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAzICsKIG5wdGwvYWxsb2NhdGVzdGFjay5jICAgICAgICAg ICAgICAgICAgICAgIHwgIDU5ICsrLS0tLS0tLS0tLQogbnB0bC9jcmVhdGV0aHJlYWQuYyAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIG5wdGwvcHRocmVhZF9jcmVhdGUuYyAgICAgICAg ICAgICAgICAgICAgIHwgIDE3ICsrLS0KIHN5c2RlcHMvZ2VuZXJpYy9jbG9uZS1pbnRlcm5hbC5o ICAgICAgICAgIHwgIDQ5ICsrKysrKysrKysKIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L01ha2Vm aWxlICAgICAgICAgIHwgICA0ICstCiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9WZXJzaW9ucyAg ICAgICAgICB8ICAgMSArCiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9jbG9uZS1pbnRlcm5hbC5j ICB8ICA2MSArKysrKysrKysrKysrCiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9jbG9uZS1vZmZz ZXRzLnN5bSB8ICAgOSArKwogc3lzZGVwcy91bml4L3N5c3YvbGludXgvY2xvbmUzLmMgICAgICAg ICAgfCAgMzEgKysrKysrKwogc3lzZGVwcy91bml4L3N5c3YvbGludXgvY3JlYXRldGhyZWFkLmMg ICAgfCAgMjQgKystLS0KIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NwYXduaS5jICAgICAgICAg IHwgIDI2ICsrLS0tLQogc3lzZGVwcy91bml4L3N5c3YvbGludXgvdHN0LWFsaWduLWNsb25lLmMg fCAgMjMgKysrLS0KIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3RzdC1jbG9uZS5jICAgICAgIHwg IDEyICstLQogc3lzZGVwcy91bml4L3N5c3YvbGludXgvdHN0LWNsb25lMi5jICAgICAgfCAgMjUg KysrLS0tCiBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC90c3QtY2xvbmUzLmMgICAgICB8ICAyOCAr KystLS0KIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3RzdC1nZXRwaWQxLmMgICAgIHwgIDI1ICsr Ky0tLQogc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L2Nsb25lMy5TICAgfCAxMDUgKysr KysrKysrKysrKysrKysrKysrKwogMTggZmlsZXMgY2hhbmdlZCwgMzQ3IGluc2VydGlvbnMoKyks IDE1OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL2dlbmVyaWMvY2xv bmUtaW50ZXJuYWwuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L2Nsb25lLWludGVybmFsLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9s aW51eC9jbG9uZS1vZmZzZXRzLnN5bQogY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9z eXN2L2xpbnV4L2Nsb25lMy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3Yv bGludXgveDg2XzY0L2Nsb25lMy5TCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY2hlZC5oIGIvaW5j bHVkZS9zY2hlZC5oCmluZGV4IGIwYmY5NzFjOTMuLjI4ZGQ5OWE1NzEgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvc2NoZWQuaAorKysgYi9pbmNsdWRlL3NjaGVkLmgKQEAgLTMyLDUgKzMyLDggQEAgbGli Y19oaWRkZW5fcHJvdG8gKF9fY2xvbmUyKQogICAgYW5kIEh1cmQgZG9lc24ndCBoYXZlIGl0LiAg Ki8KIGV4dGVybiBpbnQgX19nZXRjcHUgKHVuc2lnbmVkIGludCAqLCB1bnNpZ25lZCBpbnQgKik7 CiBsaWJjX2hpZGRlbl9wcm90byAoX19nZXRjcHUpCisKKyMgaW5jbHVkZSA8Y2xvbmUtaW50ZXJu YWwuaD4KK2xpYmNfaGlkZGVuX3Byb3RvIChfX2Nsb25lX2ludGVybmFsKQogI2VuZGlmCiAjZW5k aWYKZGlmZiAtLWdpdCBhL25wdGwvYWxsb2NhdGVzdGFjay5jIGIvbnB0bC9hbGxvY2F0ZXN0YWNr LmMKaW5kZXggMTQ5Yjk5OTYwMy4uNzNjN2YzM2EwMCAxMDA2NDQKLS0tIGEvbnB0bC9hbGxvY2F0 ZXN0YWNrLmMKKysrIGIvbnB0bC9hbGxvY2F0ZXN0YWNrLmMKQEAgLTM0LDQ3ICszNCw2IEBACiAj aW5jbHVkZSA8c3RhY2stYWxpYXNpbmcuaD4KIAogCi0jaWZuZGVmIE5FRURfU0VQQVJBVEVfUkVH SVNURVJfU1RBQ0sKLQotLyogTW9zdCBhcmNoaXRlY3R1cmVzIGhhdmUgZXhhY3RseSBvbmUgc3Rh Y2sgcG9pbnRlci4gIFNvbWUgaGF2ZSBtb3JlLiAgKi8KLSMgZGVmaW5lIFNUQUNLX1ZBUklBQkxF UyB2b2lkICpzdGFja2FkZHIgPSBOVUxMCi0KLS8qIEhvdyB0byBwYXNzIHRoZSB2YWx1ZXMgdG8g dGhlICdjcmVhdGVfdGhyZWFkJyBmdW5jdGlvbi4gICovCi0jIGRlZmluZSBTVEFDS19WQVJJQUJM RVNfQVJHUyBzdGFja2FkZHIKLQotLyogSG93IHRvIGRlY2xhcmUgZnVuY3Rpb24gd2hpY2ggZ2V0 cyB0aGVyZSBwYXJhbWV0ZXJzLiAgKi8KLSMgZGVmaW5lIFNUQUNLX1ZBUklBQkxFU19QQVJNUyB2 b2lkICpzdGFja2FkZHIKLQotLyogSG93IHRvIGRlY2xhcmUgYWxsb2NhdGVfc3RhY2suICAqLwot IyBkZWZpbmUgQUxMT0NBVEVfU1RBQ0tfUEFSTVMgdm9pZCAqKnN0YWNrCi0KLS8qIFRoaXMgaXMg aG93IHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuICBXZSBkbyBpdCB0aGlzIHdheSB0byBhbGxvdwot ICAgb3RoZXIgdmFyaWFudHMgb2YgdGhlIGZ1bmN0aW9uIHRvIGhhdmUgbW9yZSBwYXJhbWV0ZXJz LiAgKi8KLSMgZGVmaW5lIEFMTE9DQVRFX1NUQUNLKGF0dHIsIHBkKSBhbGxvY2F0ZV9zdGFjayAo YXR0ciwgcGQsICZzdGFja2FkZHIpCi0KLSNlbHNlCi0KLS8qIFdlIG5lZWQgdHdvIHN0YWNrcy4g IFRoZSBrZXJuZWwgd2lsbCBwbGFjZSB0aGVtIGJ1dCB3ZSBoYXZlIHRvIHRlbGwKLSAgIHRoZSBr ZXJuZWwgYWJvdXQgdGhlIHNpemUgb2YgdGhlIHJlc2VydmVkIGFkZHJlc3Mgc3BhY2UuICAqLwot IyBkZWZpbmUgU1RBQ0tfVkFSSUFCTEVTIHZvaWQgKnN0YWNrYWRkciA9IE5VTEw7IHNpemVfdCBz dGFja3NpemUgPSAwCi0KLS8qIEhvdyB0byBwYXNzIHRoZSB2YWx1ZXMgdG8gdGhlICdjcmVhdGVf dGhyZWFkJyBmdW5jdGlvbi4gICovCi0jIGRlZmluZSBTVEFDS19WQVJJQUJMRVNfQVJHUyBzdGFj a2FkZHIsIHN0YWNrc2l6ZQotCi0vKiBIb3cgdG8gZGVjbGFyZSBmdW5jdGlvbiB3aGljaCBnZXRz IHRoZXJlIHBhcmFtZXRlcnMuICAqLwotIyBkZWZpbmUgU1RBQ0tfVkFSSUFCTEVTX1BBUk1TIHZv aWQgKnN0YWNrYWRkciwgc2l6ZV90IHN0YWNrc2l6ZQotCi0vKiBIb3cgdG8gZGVjbGFyZSBhbGxv Y2F0ZV9zdGFjay4gICovCi0jIGRlZmluZSBBTExPQ0FURV9TVEFDS19QQVJNUyB2b2lkICoqc3Rh Y2ssIHNpemVfdCAqc3RhY2tzaXplCi0KLS8qIFRoaXMgaXMgaG93IHRoZSBmdW5jdGlvbiBpcyBj YWxsZWQuICBXZSBkbyBpdCB0aGlzIHdheSB0byBhbGxvdwotICAgb3RoZXIgdmFyaWFudHMgb2Yg dGhlIGZ1bmN0aW9uIHRvIGhhdmUgbW9yZSBwYXJhbWV0ZXJzLiAgKi8KLSMgZGVmaW5lIEFMTE9D QVRFX1NUQUNLKGF0dHIsIHBkKSBcCi0gIGFsbG9jYXRlX3N0YWNrIChhdHRyLCBwZCwgJnN0YWNr YWRkciwgJnN0YWNrc2l6ZSkKLQotI2VuZGlmCi0KLQogLyogRGVmYXVsdCBhbGlnbm1lbnQgb2Yg c3RhY2suICAqLwogI2lmbmRlZiBTVEFDS19BTElHTgogIyBkZWZpbmUgU1RBQ0tfQUxJR04gX19h bGlnbm9mX18gKGxvbmcgZG91YmxlKQpAQCAtMzk5LDcgKzM1OCw3IEBAIGFkdmlzZV9zdGFja19y YW5nZSAodm9pZCAqbWVtLCBzaXplX3Qgc2l6ZSwgdWludHB0cl90IHBkLCBzaXplX3QgZ3VhcmRz aXplKQogICAgUERQIG11c3QgYmUgbm9uLU5VTEwuICAqLwogc3RhdGljIGludAogYWxsb2NhdGVf c3RhY2sgKGNvbnN0IHN0cnVjdCBwdGhyZWFkX2F0dHIgKmF0dHIsIHN0cnVjdCBwdGhyZWFkICoq cGRwLAotCQlBTExPQ0FURV9TVEFDS19QQVJNUykKKwkJdm9pZCAqKnN0YWNrLCBzaXplX3QgKnN0 YWNrc2l6ZSkKIHsKICAgc3RydWN0IHB0aHJlYWQgKnBkOwogICBzaXplX3Qgc2l6ZTsKQEAgLTc2 MCwyNSArNzE5LDE3IEBAIGFsbG9jYXRlX3N0YWNrIChjb25zdCBzdHJ1Y3QgcHRocmVhZF9hdHRy ICphdHRyLCBzdHJ1Y3QgcHRocmVhZCAqKnBkcCwKICAgLyogV2UgcGxhY2UgdGhlIHRocmVhZCBk ZXNjcmlwdG9yIGF0IHRoZSBlbmQgb2YgdGhlIHN0YWNrLiAgKi8KICAgKnBkcCA9IHBkOwogCi0j aWYgX1NUQUNLX0dST1dTX0RPV04KICAgdm9pZCAqc3RhY2t0b3A7CiAKLSMgaWYgVExTX1RDQl9B VF9UUAorI2lmIFRMU19UQ0JfQVRfVFAKICAgLyogVGhlIHN0YWNrIGJlZ2lucyBiZWZvcmUgdGhl IFRDQiBhbmQgdGhlIHN0YXRpYyBUTFMgYmxvY2suICAqLwogICBzdGFja3RvcCA9ICgoY2hhciAq KSAocGQgKyAxKSAtIF9fc3RhdGljX3Rsc19zaXplKTsKLSMgZWxpZiBUTFNfRFRWX0FUX1RQCisj ZWxpZiBUTFNfRFRWX0FUX1RQCiAgIHN0YWNrdG9wID0gKGNoYXIgKikgKHBkIC0gMSk7Ci0jIGVu ZGlmCisjZW5kaWYKIAotIyBpZmRlZiBORUVEX1NFUEFSQVRFX1JFR0lTVEVSX1NUQUNLCi0gICpz dGFjayA9IHBkLT5zdGFja2Jsb2NrOwotICAqc3RhY2tzaXplID0gc3RhY2t0b3AgLSAqc3RhY2s7 Ci0jIGVsc2UKLSAgKnN0YWNrID0gc3RhY2t0b3A7Ci0jIGVuZGlmCi0jZWxzZQorICAqc3RhY2tz aXplID0gc3RhY2t0b3AgLSBwZC0+c3RhY2tibG9jazsKICAgKnN0YWNrID0gcGQtPnN0YWNrYmxv Y2s7Ci0jZW5kaWYKIAogICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL25wdGwvY3JlYXRldGhy ZWFkLmMgYi9ucHRsL2NyZWF0ZXRocmVhZC5jCmluZGV4IDQ2OTQzYjMzZmUuLjJhYzgzMTExZWMg MTAwNjQ0Ci0tLSBhL25wdGwvY3JlYXRldGhyZWFkLmMKKysrIGIvbnB0bC9jcmVhdGV0aHJlYWQu YwpAQCAtMjUsNyArMjUsOCBAQAogCiBzdGF0aWMgaW50CiBjcmVhdGVfdGhyZWFkIChzdHJ1Y3Qg cHRocmVhZCAqcGQsIGNvbnN0IHN0cnVjdCBwdGhyZWFkX2F0dHIgKmF0dHIsCi0JICAgICAgIGJv b2wgKnN0b3BwZWRfc3RhcnQsIFNUQUNLX1ZBUklBQkxFU19QQVJNUywgYm9vbCAqdGhyZWFkX3Jh bikKKwkgICAgICAgYm9vbCAqc3RvcHBlZF9zdGFydCwgdm9pZCAqc3RhY2thZGRyLCBzaXplX3Qg c3RhY2tzaXplLAorCSAgICAgICBib29sICp0aHJlYWRfcmFuKQogewogICAvKiBJZiB0aGUgaW1w bGVtZW50YXRpb24gbmVlZHMgdG8gZG8gc29tZSB0d2Vha3MgdG8gdGhlIHRocmVhZCBhZnRlcgog ICAgICBpdCBoYXMgYmVlbiBjcmVhdGVkIGF0IHRoZSBPUyBsZXZlbCwgaXQgY2FuIHNldCBTVE9Q UEVEX1NUQVJUIGhlcmUuICAqLwpkaWZmIC0tZ2l0IGEvbnB0bC9wdGhyZWFkX2NyZWF0ZS5jIGIv bnB0bC9wdGhyZWFkX2NyZWF0ZS5jCmluZGV4IDZjNjQ1YWZmNDguLjJjYzNkMjU2OTcgMTAwNjQ0 Ci0tLSBhL25wdGwvcHRocmVhZF9jcmVhdGUuYworKysgYi9ucHRsL3B0aHJlYWRfY3JlYXRlLmMK QEAgLTIwMSw4ICsyMDEsOCBAQCB1bnNpZ25lZCBpbnQgX19ucHRsX250aHJlYWRzID0gMTsKICAg IGJlIHNldCB0byB0cnVlIGlmZiB0aGUgdGhyZWFkIGFjdHVhbGx5IHN0YXJ0ZWQgdXAgYW5kIHRo ZW4gZ290CiAgICBjYW5jZWxlZCBiZWZvcmUgY2FsbGluZyB1c2VyIGNvZGUgKCpQRC0+c3RhcnRf cm91dGluZSkuICAqLwogc3RhdGljIGludCBjcmVhdGVfdGhyZWFkIChzdHJ1Y3QgcHRocmVhZCAq cGQsIGNvbnN0IHN0cnVjdCBwdGhyZWFkX2F0dHIgKmF0dHIsCi0JCQkgIGJvb2wgKnN0b3BwZWRf c3RhcnQsIFNUQUNLX1ZBUklBQkxFU19QQVJNUywKLQkJCSAgYm9vbCAqdGhyZWFkX3Jhbik7CisJ CQkgIGJvb2wgKnN0b3BwZWRfc3RhcnQsIHZvaWQgKnN0YWNrYWRkciwKKwkJCSAgc2l6ZV90IHN0 YWNrc2l6ZSwgYm9vbCAqdGhyZWFkX3Jhbik7CiAKICNpbmNsdWRlIDxjcmVhdGV0aHJlYWQuYz4K IApAQCAtNjIxLDcgKzYyMSw4IEBAIGludAogX19wdGhyZWFkX2NyZWF0ZV8yXzEgKHB0aHJlYWRf dCAqbmV3dGhyZWFkLCBjb25zdCBwdGhyZWFkX2F0dHJfdCAqYXR0ciwKIAkJICAgICAgdm9pZCAq KCpzdGFydF9yb3V0aW5lKSAodm9pZCAqKSwgdm9pZCAqYXJnKQogewotICBTVEFDS19WQVJJQUJM RVM7CisgIHZvaWQgKnN0YWNrYWRkciA9IE5VTEw7CisgIHNpemVfdCBzdGFja3NpemUgPSAwOwog CiAgIC8qIEF2b2lkIGEgZGF0YSByYWNlIGluIHRoZSBtdWx0aS10aHJlYWRlZCBjYXNlLiAgKi8K ICAgaWYgKF9fbGliY19zaW5nbGVfdGhyZWFkZWQpCkBAIC02NDEsNyArNjQyLDcgQEAgX19wdGhy ZWFkX2NyZWF0ZV8yXzEgKHB0aHJlYWRfdCAqbmV3dGhyZWFkLCBjb25zdCBwdGhyZWFkX2F0dHJf dCAqYXR0ciwKICAgICB9CiAKICAgc3RydWN0IHB0aHJlYWQgKnBkID0gTlVMTDsKLSAgaW50IGVy ciA9IEFMTE9DQVRFX1NUQUNLIChpYXR0ciwgJnBkKTsKKyAgaW50IGVyciA9IGFsbG9jYXRlX3N0 YWNrIChpYXR0ciwgJnBkLCAmc3RhY2thZGRyLCAmc3RhY2tzaXplKTsKICAgaW50IHJldHZhbCA9 IDA7CiAKICAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKGVyciAhPSAwKSkKQEAgLTc4Niw4ICs3ODcs OCBAQCBfX3B0aHJlYWRfY3JlYXRlXzJfMSAocHRocmVhZF90ICpuZXd0aHJlYWQsIGNvbnN0IHB0 aHJlYWRfYXR0cl90ICphdHRyLAogCiAgICAgICAvKiBXZSBhbHdheXMgY3JlYXRlIHRoZSB0aHJl YWQgc3RvcHBlZCBhdCBzdGFydHVwIHNvIHdlIGNhbgogCSBub3RpZnkgdGhlIGRlYnVnZ2VyLiAg Ki8KLSAgICAgIHJldHZhbCA9IGNyZWF0ZV90aHJlYWQgKHBkLCBpYXR0ciwgJnN0b3BwZWRfc3Rh cnQsCi0JCQkgICAgICBTVEFDS19WQVJJQUJMRVNfQVJHUywgJnRocmVhZF9yYW4pOworICAgICAg cmV0dmFsID0gY3JlYXRlX3RocmVhZCAocGQsIGlhdHRyLCAmc3RvcHBlZF9zdGFydCwgc3RhY2th ZGRyLAorCQkJICAgICAgc3RhY2tzaXplLCAmdGhyZWFkX3Jhbik7CiAgICAgICBpZiAocmV0dmFs ID09IDApCiAJewogCSAgLyogV2UgcmV0YWluIG93bmVyc2hpcCBvZiBQRCB1bnRpbCAoYSkgKHNl ZSBDT05DVVJSRU5DWSBOT1RFUwpAQCAtODE4LDggKzgxOSw4IEBAIF9fcHRocmVhZF9jcmVhdGVf Ml8xIChwdGhyZWFkX3QgKm5ld3RocmVhZCwgY29uc3QgcHRocmVhZF9hdHRyX3QgKmF0dHIsCiAJ fQogICAgIH0KICAgZWxzZQotICAgIHJldHZhbCA9IGNyZWF0ZV90aHJlYWQgKHBkLCBpYXR0ciwg JnN0b3BwZWRfc3RhcnQsCi0JCQkgICAgU1RBQ0tfVkFSSUFCTEVTX0FSR1MsICZ0aHJlYWRfcmFu KTsKKyAgICByZXR2YWwgPSBjcmVhdGVfdGhyZWFkIChwZCwgaWF0dHIsICZzdG9wcGVkX3N0YXJ0 LCBzdGFja2FkZHIsCisJCQkgICAgc3RhY2tzaXplLCAmdGhyZWFkX3Jhbik7CiAKICAgLyogUmV0 dXJuIHRvIHRoZSBwcmV2aW91cyBzaWduYWwgbWFzaywgYWZ0ZXIgY3JlYXRpbmcgdGhlIG5ldwog ICAgICB0aHJlYWQuICAqLwpkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nZW5lcmljL2Nsb25lLWludGVy bmFsLmggYi9zeXNkZXBzL2dlbmVyaWMvY2xvbmUtaW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi4xYzFmOTk3Y2E1Ci0tLSAvZGV2L251bGwKKysrIGIvc3lz ZGVwcy9nZW5lcmljL2Nsb25lLWludGVybmFsLmgKQEAgLTAsMCArMSw0OSBAQAorLyogVGhlIGlu dGVybmFsIHdyYXBwZXIgb2YgY2xvbmUgYW5kIGNsb25lMy4KKyAgIENvcHlyaWdodCAoQykgMjAy MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBHTlUgQyBMaWJyYXJ5LgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisKKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK KyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeS4gIElmIG5vdCwgc2VlCisg ICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPHN0ZGlu dC5oPgorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCitzdHJ1Y3QgY2xvbmVfYXJncworeworICB1aW50 NjRfdCBmbGFnczsJIC8qIEZsYWdzIGJpdCBtYXNrLiAgKi8KKyAgdWludDY0X3QgcGlkZmQ7CSAv KiBXaGVyZSB0byBzdG9yZSBQSUQgZmlsZSBkZXNjcmlwdG9yCisJCQkgICAgKHBpZF90ICopLiAg Ki8KKyAgdWludDY0X3QgY2hpbGRfdGlkOwkgLyogV2hlcmUgdG8gc3RvcmUgY2hpbGQgVElELCBp biBjaGlsZCdzIG1lbW9yeQorCQkJICAgIChwaWRfdCAqKS4gICovCisgIHVpbnQ2NF90IHBhcmVu dF90aWQ7CSAvKiBXaGVyZSB0byBzdG9yZSBjaGlsZCBUSUQsIGluIHBhcmVudCdzIG1lbW9yeQor CQkJICAgIChpbnQgKikuICovCisgIHVpbnQ2NF90IGV4aXRfc2lnbmFsOwkgLyogU2lnbmFsIHRv IGRlbGl2ZXIgdG8gcGFyZW50IG9uIGNoaWxkCisJCQkgICAgdGVybWluYXRpb24gKi8KKyAgdWlu dDY0X3Qgc3RhY2s7CSAvKiBUaGUgbG93ZXN0IGFkZHJlc3Mgb2Ygc3RhY2suICAqLworICB1aW50 NjRfdCBzdGFja19zaXplOwkgLyogU2l6ZSBvZiBzdGFjay4gICovCisgIHVpbnQ2NF90IHRsczsJ CSAvKiBMb2NhdGlvbiBvZiBuZXcgVExTLiAgKi8KKyAgdWludDY0X3Qgc2V0X3RpZDsJIC8qIFBv aW50ZXIgdG8gYSBwaWRfdCBhcnJheQorCQkJICAgIChzaW5jZSBMaW51eCA1LjUpLiAgKi8KKyAg dWludDY0X3Qgc2V0X3RpZF9zaXplOyAvKiBOdW1iZXIgb2YgZWxlbWVudHMgaW4gc2V0X3RpZAor CQkJICAgIChzaW5jZSBMaW51eCA1LjUpLiAqLworICB1aW50NjRfdCBjZ3JvdXA7CSAvKiBGaWxl IGRlc2NyaXB0b3IgZm9yIHRhcmdldCBjZ3JvdXAKKwkJCSAgICBvZiBjaGlsZCAoc2luY2UgTGlu dXggNS43KS4gICovCit9OworCitleHRlcm4gaW50IF9fY2xvbmUzIChzdHJ1Y3QgY2xvbmVfYXJn cyAqY2xfYXJncywgc2l6ZV90IHNpemUsCisJCSAgICAgaW50ICgqX19mbikgKHZvaWQgKl9fYXJn KSwgdm9pZCAqX19hcmcpCisgIF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikp KTsKKworLyogVGhlIGludGVybmFsIHdyYXBwZXIgb2YgY2xvbmUgYW5kIGNsb25lMy4gICovCitl eHRlcm4gX190eXBlb2YgKF9fY2xvbmUzKSBfX2Nsb25lX2ludGVybmFsOwpkaWZmIC0tZ2l0IGEv c3lzZGVwcy91bml4L3N5c3YvbGludXgvTWFrZWZpbGUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51 eC9NYWtlZmlsZQppbmRleCA1MWUyOGI5N2FjLi40OTlmMjQzNWViIDEwMDY0NAotLS0gYS9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9NYWtlZmlsZQorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51 eC9NYWtlZmlsZQpAQCAtNTQsNiArNTQsOCBAQCBDRkxBR1MtbWFsbG9jLmMgKz0gLURNT1JFQ09S RV9DTEVBUlM9MgogZW5kaWYKIAogaWZlcSAoJChzdWJkaXIpLG1pc2MpCitnZW4tYXMtY29uc3Qt aGVhZGVycyArPSBjbG9uZS1vZmZzZXRzLnN5bQorCiBzeXNkZXBfcm91dGluZXMgKz0gYWRqdGlt ZXggY2xvbmUgdW1vdW50IHVtb3VudDIgcmVhZGFoZWFkIHN5c2N0bCBcCiAJCSAgIHNldGZzdWlk IHNldGZzZ2lkIGVwb2xsX3B3YWl0IHNpZ25hbGZkIFwKIAkJICAgZXZlbnRmZCBldmVudGZkX3Jl YWQgZXZlbnRmZF93cml0ZSBwcmxpbWl0IFwKQEAgLTY0LDcgKzY2LDcgQEAgc3lzZGVwX3JvdXRp bmVzICs9IGFkanRpbWV4IGNsb25lIHVtb3VudCB1bW91bnQyIHJlYWRhaGVhZCBzeXNjdGwgXAog CQkgICB0aW1lNjQtc3VwcG9ydCBwc2VsZWN0MzIgXAogCQkgICB4c3RhdCBmeHN0YXQgbHhzdGF0 IHhzdGF0NjQgZnhzdGF0NjQgbHhzdGF0NjQgXAogCQkgICBmeHN0YXRhdCBmeHN0YXRhdDY0IFwK LQkJICAgeG1rbm9kIHhta25vZGF0CisJCSAgIHhta25vZCB4bWtub2RhdCBjbG9uZTMgY2xvbmUt aW50ZXJuYWwKIAogQ0ZMQUdTLWdldGhvc3RpZC5jID0gLWZleGNlcHRpb25zCiBDRkxBR1MtdGVl LmMgPSAtZmV4Y2VwdGlvbnMgLWZhc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcwpkaWZmIC0tZ2l0 IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvVmVyc2lvbnMgYi9zeXNkZXBzL3VuaXgvc3lzdi9s aW51eC9WZXJzaW9ucwppbmRleCBjMzVmNzgzZTJhLi45YmIxM2Q1OTNmIDEwMDY0NAotLS0gYS9z eXNkZXBzL3VuaXgvc3lzdi9saW51eC9WZXJzaW9ucworKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9s aW51eC9WZXJzaW9ucwpAQCAtMTc5LDUgKzE3OSw2IEBAIGxpYmMgewogICAgIF9fc2lndGltZWR3 YWl0OwogICAgICMgZnVuY3Rpb25zIHVzZWQgYnkgbnNjZAogICAgIF9fbmV0bGlua19hc3NlcnRf cmVzcG9uc2U7CisgICAgX19jbG9uZV9pbnRlcm5hbDsKICAgfQogfQpkaWZmIC0tZ2l0IGEvc3lz ZGVwcy91bml4L3N5c3YvbGludXgvY2xvbmUtaW50ZXJuYWwuYyBiL3N5c2RlcHMvdW5peC9zeXN2 L2xpbnV4L2Nsb25lLWludGVybmFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMC4uN2Q3NTVjZDk3ZgotLS0gL2Rldi9udWxsCisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xp bnV4L2Nsb25lLWludGVybmFsLmMKQEAgLTAsMCArMSw2MSBAQAorLyogVGhlIGludGVybmFsIHdy YXBwZXIgb2YgY2xvbmUgYW5kIGNsb25lMy4gIExpbnV4IHZlcnNpb24uCisgICBDb3B5cmlnaHQg KEMpIDIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBUaGlzIGZpbGUgaXMg cGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK KyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg ICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljCisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnkuICBJZiBub3Qs IHNlZQorICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRl IDxlcnJuby5oPgorI2luY2x1ZGUgPHNjaGVkLmg+CisjaW5jbHVkZSA8c3RhY2tpbmZvLmg+ICAv KiBGb3IgX1NUQUNLX0dST1dTX3tVUCxET1dOfS4gICovCisKK2ludAorX19jbG9uZV9pbnRlcm5h bCAoc3RydWN0IGNsb25lX2FyZ3MgKmNsX2FyZ3MsIHNpemVfdCBzaXplLAorCQkgIGludCAoKmZu KSh2b2lkICphcmcpLCB2b2lkICphcmcpCit7CisgIC8qIFRyeSBjbG9uZTMgZmlyc3QuICAqLwor ICBpbnQgcmV0ID0gX19jbG9uZTMgKGNsX2FyZ3MsIHNpemUsIGZuLCBhcmcpOworICBpZiAocmV0 ID09IC0xICYmIGVycm5vID09IEVOT1NZUykKKyAgICB7CisgICAgICAvKiBOQjogTXVzdCBjbGVh ciBlcnJubyBzaW5jZSBlcnJubyBtYXkgYmUgY2hlY2tlZCBhZ2FpbnN0IG5vbi16ZXJvCisgICAg ICAgICByZXR1cm4gdmFsdWUuICAqLworICAgICAgX19zZXRfZXJybm8gKDApOworICAgICAgLyog TWFwIGNsb25lMyBhcmd1bWVudHMgdG8gY2xvbmUgYXJndW1lbnRzLiAgKi8KKyAgICAgIGludCBm bGFncyA9IGNsX2FyZ3MtPmZsYWdzIHwgY2xfYXJncy0+ZXhpdF9zaWduYWw7CisgICAgICB2b2lk ICpzdGFjayA9ICh2b2lkICopICh1aW50cHRyX3QpIGNsX2FyZ3MtPnN0YWNrOworCisjaWZkZWYg X19pYTY0X18KKyAgICAgIHJldCA9IF9fY2xvbmUyIChmbiwgc3RhY2ssIChzaXplX3QpIGNsX2Fy Z3MtPnN0YWNrX3NpemUsCisJCSAgICAgIGZsYWdzLCBhcmcsCisJCSAgICAgICh2b2lkICopICh1 aW50cHRyX3QpIGNsX2FyZ3MtPnBhcmVudF90aWQsCisJCSAgICAgICh2b2lkICopICh1aW50cHRy X3QpIGNsX2FyZ3MtPnRscywKKwkJICAgICAgKHZvaWQgKikgKHVpbnRwdHJfdCkgY2xfYXJncy0+ Y2hpbGRfdGlkKTsKKyNlbHNlCisjIGlmICFfU1RBQ0tfR1JPV1NfRE9XTiAmJiAhX1NUQUNLX0dS T1dTX1VQCisjICBlcnJvciAiRGVmaW5lIGVpdGhlciBfU1RBQ0tfR1JPV1NfRE9XTiBvciBfU1RB Q0tfR1JPV1NfVVAiCisjIGVuZGlmCisKKyMgaWYgX1NUQUNLX0dST1dTX0RPV04KKyAgICAgIHN0 YWNrICs9IGNsX2FyZ3MtPnN0YWNrX3NpemU7CisjIGVuZGlmCisgICAgICByZXQgPSBfX2Nsb25l IChmbiwgc3RhY2ssIGZsYWdzLCBhcmcsCisJCSAgICAgKHZvaWQgKikgKHVpbnRwdHJfdCkgY2xf YXJncy0+cGFyZW50X3RpZCwKKwkJICAgICAodm9pZCAqKSAodWludHB0cl90KSBjbF9hcmdzLT50 bHMsCisJCSAgICAgKHZvaWQgKikgKHVpbnRwdHJfdCkgY2xfYXJncy0+Y2hpbGRfdGlkKTsKKyNl bmRpZgorICAgIH0KKyAgcmV0dXJuIHJldDsKK30KKworbGliY19oaWRkZW5fZGVmIChfX2Nsb25l X2ludGVybmFsKQpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvY2xvbmUtb2Zm c2V0cy5zeW0gYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9jbG9uZS1vZmZzZXRzLnN5bQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zOGQ0NDdiY2YzCi0tLSAvZGV2L251 bGwKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvY2xvbmUtb2Zmc2V0cy5zeW0KQEAgLTAs MCArMSw5IEBACisjaW5jbHVkZSA8c3RkZGVmLmg+CisjaW5jbHVkZSA8c2NoZWQuaD4KKworLS0K KworI2RlZmluZSBjbG9uZV9hcmdzX29mZnNldChtZW1iZXIpIG9mZnNldG9mIChzdHJ1Y3QgY2xv bmVfYXJncywgbWVtYmVyKQorCitDTE9ORV9BUkdTX1NUQUNLX09GRlNFVAkJY2xvbmVfYXJnc19v ZmZzZXQoc3RhY2spCitDTE9ORV9BUkdTX1NUQUNLX1NJWkVfT0ZGU0VUCWNsb25lX2FyZ3Nfb2Zm c2V0KHN0YWNrX3NpemUpCmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9jbG9u ZTMuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2Nsb25lMy5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLmM3ZDg4ZTdhZjcKLS0tIC9kZXYvbnVsbAorKysgYi9zeXNk ZXBzL3VuaXgvc3lzdi9saW51eC9jbG9uZTMuYwpAQCAtMCwwICsxLDMxIEBACisvKiBUaGUgY2xv bmUzIHN5c2NhbGwgd3JhcHBlci4gIExpbnV4IHZlcnNpb24uCisgICBDb3B5cmlnaHQgKEMpIDIw MjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgICBUaGlzIGZpbGUgaXMgcGFydCBv ZiB0aGUgR05VIEMgTGlicmFyeS4KKworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgIHZl cnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorCisgICBUaGUgR05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj CisgICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnkuICBJZiBub3QsIHNlZQor ICAgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlIDxlcnJu by5oPgorI2luY2x1ZGUgPHNjaGVkLmg+CisKK2ludAorX19jbG9uZTMgKHN0cnVjdCBjbG9uZV9h cmdzICpjbF9hcmdzLCBzaXplX3Qgc2l6ZSwKKwkgIGludCAoKmZuKSh2b2lkICphcmcpLCB2b2lk ICphcmcpCit7CisgIGlmIChjbF9hcmdzID09IE5VTEwgfHwgZm4gPT0gTlVMTCkKKyAgICBfX3Nl dF9lcnJubyAoRUlOVkFMKTsKKyAgZWxzZQorICAgIF9fc2V0X2Vycm5vIChFTk9TWVMpOworICBy ZXR1cm4gLTE7Cit9CmRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9jcmVhdGV0 aHJlYWQuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2NyZWF0ZXRocmVhZC5jCmluZGV4IGJj MzQwOWIzMjYuLjU5OWMxNzJkZTggMTAwNjQ0Ci0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4 L2NyZWF0ZXRocmVhZC5jCisrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2NyZWF0ZXRocmVh ZC5jCkBAIC0yOCwxMiArMjgsNiBAQAogCiAjaW5jbHVkZSA8YXJjaC1mb3JrLmg+CiAKLSNpZmRl ZiBfX05SX2Nsb25lMgotIyBkZWZpbmUgQVJDSF9DTE9ORSBfX2Nsb25lMgotI2Vsc2UKLSMgZGVm aW5lIEFSQ0hfQ0xPTkUgX19jbG9uZQotI2VuZGlmCi0KIC8qIFNlZSB0aGUgY29tbWVudHMgaW4g cHRocmVhZF9jcmVhdGUuYyBmb3IgdGhlIHJlcXVpcmVtZW50cyBmb3IgdGhlc2UKICAgIHR3byBt YWNyb3MgYW5kIHRoZSBjcmVhdGVfdGhyZWFkIGZ1bmN0aW9uLiAgKi8KIApAQCAtNDcsNyArNDEs OCBAQCBzdGF0aWMgaW50IHN0YXJ0X3RocmVhZCAodm9pZCAqYXJnKSBfX2F0dHJpYnV0ZV9fICgo bm9yZXR1cm4pKTsKIAogc3RhdGljIGludAogY3JlYXRlX3RocmVhZCAoc3RydWN0IHB0aHJlYWQg KnBkLCBjb25zdCBzdHJ1Y3QgcHRocmVhZF9hdHRyICphdHRyLAotCSAgICAgICBib29sICpzdG9w cGVkX3N0YXJ0LCBTVEFDS19WQVJJQUJMRVNfUEFSTVMsIGJvb2wgKnRocmVhZF9yYW4pCisJICAg ICAgIGJvb2wgKnN0b3BwZWRfc3RhcnQsIHZvaWQgKnN0YWNrYWRkciwgc2l6ZV90IHN0YWNrc2l6 ZSwKKwkgICAgICAgYm9vbCAqdGhyZWFkX3JhbikKIHsKICAgLyogRGV0ZXJtaW5lIHdoZXRoZXIg dGhlIG5ld2x5IGNyZWF0ZWQgdGhyZWFkcyBoYXMgdG8gYmUgc3RhcnRlZAogICAgICBzdG9wcGVk IHNpbmNlIHdlIGhhdmUgdG8gc2V0IHRoZSBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgb3Igc2V0IHRo ZQpAQCAtMTAwLDkgKzk1LDE4IEBAIGNyZWF0ZV90aHJlYWQgKHN0cnVjdCBwdGhyZWFkICpwZCwg Y29uc3Qgc3RydWN0IHB0aHJlYWRfYXR0ciAqYXR0ciwKIAogICBUTFNfREVGSU5FX0lOSVRfVFAg KHRwLCBwZCk7CiAKLSAgaWYgKF9fZ2xpYmNfdW5saWtlbHkgKEFSQ0hfQ0xPTkUgKCZzdGFydF90 aHJlYWQsIFNUQUNLX1ZBUklBQkxFU19BUkdTLAotCQkJCSAgICBjbG9uZV9mbGFncywgcGQsICZw ZC0+dGlkLCB0cCwgJnBkLT50aWQpCi0JCQk9PSAtMSkpCisgIHN0cnVjdCBjbG9uZV9hcmdzIGFy Z3MgPQorICAgIHsKKyAgICAgIC5mbGFncyA9IGNsb25lX2ZsYWdzLAorICAgICAgLnBpZGZkID0g KHVpbnRwdHJfdCkgJnBkLT50aWQsCisgICAgICAucGFyZW50X3RpZCA9ICh1aW50cHRyX3QpICZw ZC0+dGlkLAorICAgICAgLmNoaWxkX3RpZCA9ICh1aW50cHRyX3QpICZwZC0+dGlkLAorICAgICAg LnN0YWNrID0gKHVpbnRwdHJfdCkgc3RhY2thZGRyLAorICAgICAgLnN0YWNrX3NpemUgPSBzdGFj a3NpemUsCisgICAgICAudGxzID0gKHVpbnRwdHJfdCkgdHAsCisgICAgfTsKKyAgaW50IHJldCA9 IF9fY2xvbmVfaW50ZXJuYWwgKCZhcmdzLCBzaXplb2YgKGFyZ3MpLCAmc3RhcnRfdGhyZWFkLCBw ZCk7CisgIGlmIChfX2dsaWJjX3VubGlrZWx5IChyZXQgPT0gLTEpKQogICAgIHJldHVybiBlcnJu bzsKIAogICAvKiBJdCdzIHN0YXJ0ZWQgbm93LCBzbyBpZiB3ZSBmYWlsIGJlbG93LCB3ZSdsbCBo YXZlIHRvIGNhbmNlbCBpdApkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc3Bh d25pLmMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zcGF3bmkuYwppbmRleCBiNTNiODFiOGZj Li5jNjNlMmI2NWYxIDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zcGF3bmku YworKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zcGF3bmkuYwpAQCAtNTksMjEgKzU5LDYg QEAKICAgIG5vcm1hbCBwcm9ncmFtIGV4aXQgd2l0aCB0aGUgZXhpdCBjb2RlIDEyNy4gICovCiAj ZGVmaW5lIFNQQVdOX0VSUk9SCTEyNwogCi0jaWZkZWYgX19pYTY0X18KLSMgZGVmaW5lIENMT05F KF9fZm4sIF9fc3RhY2tiYXNlLCBfX3N0YWNrc2l6ZSwgX19mbGFncywgX19hcmdzKSBcCi0gIF9f Y2xvbmUyIChfX2ZuLCBfX3N0YWNrYmFzZSwgX19zdGFja3NpemUsIF9fZmxhZ3MsIF9fYXJncywg MCwgMCwgMCkKLSNlbHNlCi0jIGRlZmluZSBDTE9ORShfX2ZuLCBfX3N0YWNrLCBfX3N0YWNrc2l6 ZSwgX19mbGFncywgX19hcmdzKSBcCi0gIF9fY2xvbmUgKF9fZm4sIF9fc3RhY2ssIF9fZmxhZ3Ms IF9fYXJncykKLSNlbmRpZgotCi0vKiBTaW5jZSBpYTY0IHdhbnRzIHRoZSBzdGFja2Jhc2Ugdy9j bG9uZTIsIHJlLXVzZSB0aGUgZ3Jvd3MtdXAgbWFjcm8uICAqLwotI2lmIF9TVEFDS19HUk9XU19V UCB8fCBkZWZpbmVkIChfX2lhNjRfXykKLSMgZGVmaW5lIFNUQUNLKF9fc3RhY2ssIF9fc3RhY2tf c2l6ZSkgKF9fc3RhY2spCi0jZWxpZiBfU1RBQ0tfR1JPV1NfRE9XTgotIyBkZWZpbmUgU1RBQ0so X19zdGFjaywgX19zdGFja19zaXplKSAoX19zdGFjayArIF9fc3RhY2tfc2l6ZSkKLSNlbmRpZgot CiAKIHN0cnVjdCBwb3NpeF9zcGF3bl9hcmdzCiB7CkBAIC0zNzksOCArMzY0LDE1IEBAIF9fc3Bh d25peCAocGlkX3QgKiBwaWQsIGNvbnN0IGNoYXIgKmZpbGUsCiAgICAgIG5lZWQgZm9yIENMT05F X1NFVFRMUy4gIEFsdGhvdWdoIHBhcmVudCBhbmQgY2hpbGQgc2hhcmUgdGhlIHNhbWUgVExTCiAg ICAgIG5hbWVzcGFjZSwgdGhlcmUgd2lsbCBiZSBubyBjb25jdXJyZW50IGFjY2VzcyBmb3IgVExT IHZhcmlhYmxlcyAoZXJybm8KICAgICAgZm9yIGluc3RhbmNlKS4gICovCi0gIG5ld19waWQgPSBD TE9ORSAoX19zcGF3bmlfY2hpbGQsIFNUQUNLIChzdGFjaywgc3RhY2tfc2l6ZSksIHN0YWNrX3Np emUsCi0JCSAgIENMT05FX1ZNIHwgQ0xPTkVfVkZPUksgfCBTSUdDSExELCAmYXJncyk7CisgIHN0 cnVjdCBjbG9uZV9hcmdzIGNsb25lX2FyZ3MgPQorICAgIHsKKyAgICAgIC5mbGFncyA9IENMT05F X1ZNIHwgQ0xPTkVfVkZPUkssCisgICAgICAuZXhpdF9zaWduYWwgPSBTSUdDSExELAorICAgICAg LnN0YWNrID0gKHVpbnRwdHJfdCkgc3RhY2ssCisgICAgICAuc3RhY2tfc2l6ZSA9IHN0YWNrX3Np emUsCisgICAgfTsKKyAgbmV3X3BpZCA9IF9fY2xvbmVfaW50ZXJuYWwgKCZjbG9uZV9hcmdzLCBz aXplb2YgKGNsb25lX2FyZ3MpLAorCQkJICAgICAgX19zcGF3bmlfY2hpbGQsICZhcmdzKTsKIAog ICAvKiBJdCBuZWVkcyB0byBjb2xsZWN0IHRoZSBjYXNlIHdoZXJlIHRoZSBhdXhpbGlhcnkgcHJv Y2VzcyB3YXMgY3JlYXRlZAogICAgICBidXQgZmFpbGVkIHRvIGV4ZWN1dGUgdGhlIGZpbGUgKGR1 ZSBlaXRoZXIgYW55IHByZXBhcmF0aW9uIHN0ZXAgb3IKZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5p eC9zeXN2L2xpbnV4L3RzdC1hbGlnbi1jbG9uZS5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgv dHN0LWFsaWduLWNsb25lLmMKaW5kZXggNmFjZTYxYmFjMy4uNWYwMGI4ZWU0YSAxMDA2NDQKLS0t IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvdHN0LWFsaWduLWNsb25lLmMKKysrIGIvc3lzZGVw cy91bml4L3N5c3YvbGludXgvdHN0LWFsaWduLWNsb25lLmMKQEAgLTIzLDYgKzIzLDcgQEAKICNp bmNsdWRlIDxzeXMvd2FpdC5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHRzdC1z dGFjay1hbGlnbi5oPgorI2luY2x1ZGUgPGNsb25lLWludGVybmFsLmg+CiAjaW5jbHVkZSA8c3Rh Y2tpbmZvLmg+CiAKIHN0YXRpYyBpbnQKQEAgLTQ5LDIxICs1MCwxNyBAQCBkb190ZXN0ICh2b2lk KQogICAgIG9rID0gZmFsc2U7CiAKICNpZmRlZiBfX2lhNjRfXwotICBleHRlcm4gaW50IF9fY2xv bmUyIChpbnQgKCpfX2ZuKSAodm9pZCAqX19hcmcpLCB2b2lkICpfX2NoaWxkX3N0YWNrX2Jhc2Us Ci0JCSAgICAgICBzaXplX3QgX19jaGlsZF9zdGFja19zaXplLCBpbnQgX19mbGFncywKLQkJICAg ICAgIHZvaWQgKl9fYXJnLCAuLi4pOwotICBjaGFyIHN0WzI1NiAqIDEwMjRdOwotICBwaWRfdCBw ID0gX19jbG9uZTIgKGYsIHN0LCBzaXplb2YgKHN0KSwgMCwgMCk7CisjIGRlZmluZSBTVEFDS19T SVpFIDI1NiAqIDEwMjQKICNlbHNlCi0gIGNoYXIgc3RbMTI4ICogMTAyNF0gX19hdHRyaWJ1dGVf XyAoKGFsaWduZWQpKTsKLSMgaWYgX1NUQUNLX0dST1dTX0RPV04KLSAgcGlkX3QgcCA9IGNsb25l IChmLCBzdCArIHNpemVvZiAoc3QpLCAwLCAwKTsKLSMgZWxpZiBfU1RBQ0tfR1JPV1NfVVAKLSAg cGlkX3QgcCA9IGNsb25lIChmLCBzdCwgMCwgMCk7Ci0jIGVsc2UKLSMgIGVycm9yICJEZWZpbmUg ZWl0aGVyIF9TVEFDS19HUk9XU19ET1dOIG9yIF9TVEFDS19HUk9XU19VUCIKLSMgZW5kaWYKKyMg ZGVmaW5lIFNUQUNLX1NJWkUgMTI4ICogMTAyNAogI2VuZGlmCisgIGNoYXIgc3RbU1RBQ0tfU0la RV0gX19hdHRyaWJ1dGVfXyAoKGFsaWduZWQpKTsKKyAgc3RydWN0IGNsb25lX2FyZ3MgY2xvbmVf YXJncyA9CisgICAgeworICAgICAgLnN0YWNrID0gKHVpbnRwdHJfdCkgc3QsCisgICAgICAuc3Rh Y2tfc2l6ZSA9IHNpemVvZiAoc3QpLAorICAgIH07CisgIHBpZF90IHAgPSBfX2Nsb25lX2ludGVy bmFsICgmY2xvbmVfYXJncywgc2l6ZW9mIChjbG9uZV9hcmdzKSwgZiwgMCk7CiAgIGlmIChwID09 IC0xKQogICAgIHsKICAgICAgIHByaW50ZigiY2xvbmUgZmFpbGVkOiAlbVxuIik7CmRpZmYgLS1n aXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC90c3QtY2xvbmUuYyBiL3N5c2RlcHMvdW5peC9z eXN2L2xpbnV4L3RzdC1jbG9uZS5jCmluZGV4IGU2YWUwMTA2ZWYuLjI4NjUxODJmMDUgMTAwNjQ0 Ci0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3RzdC1jbG9uZS5jCisrKyBiL3N5c2RlcHMv dW5peC9zeXN2L2xpbnV4L3RzdC1jbG9uZS5jCkBAIC0yMiwxMSArMjIsNyBAQAogI2luY2x1ZGUg PHN0ZGxpYi5oPgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHNjaGVkLmg+Ci0KLSNp ZmRlZiBfX2lhNjRfXwotZXh0ZXJuIGludCBfX2Nsb25lMiAoaW50ICgqX19mbikgKHZvaWQgKl9f YXJnKSwgdm9pZCAqX19jaGlsZF9zdGFja19iYXNlLAotCQkgICAgIHNpemVfdCBfX2NoaWxkX3N0 YWNrX3NpemUsIGludCBfX2ZsYWdzLCB2b2lkICpfX2FyZywgLi4uKTsKLSNlbmRpZgorI2luY2x1 ZGUgPGNsb25lLWludGVybmFsLmg+CiAKIGludCBjaGlsZF9mbih2b2lkICphcmcpCiB7CkBAIC0z OSwxMSArMzUsNyBAQCBkb190ZXN0ICh2b2lkKQogewogICBpbnQgcmVzdWx0OwogCi0jaWZkZWYg X19pYTY0X18KLSAgcmVzdWx0ID0gX19jbG9uZTIgKGNoaWxkX2ZuLCBOVUxMLCAwLCAwLCBOVUxM LCBOVUxMLCBOVUxMKTsKLSNlbHNlCi0gIHJlc3VsdCA9IGNsb25lIChjaGlsZF9mbiwgTlVMTCwg MCwgTlVMTCk7Ci0jZW5kaWYKKyAgcmVzdWx0ID0gX19jbG9uZV9pbnRlcm5hbCAoTlVMTCwgMCwg Y2hpbGRfZm4sIE5VTEwpOwogCiAgIGlmIChlcnJubyAhPSBFSU5WQUwgfHwgcmVzdWx0ICE9IC0x KQogICAgIHsKZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3RzdC1jbG9uZTIu YyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3RzdC1jbG9uZTIuYwppbmRleCBjZTM2YzcwYzBk Li5mZGE3N2FjNDhiIDEwMDY0NAotLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC90c3QtY2xv bmUyLmMKKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvdHN0LWNsb25lMi5jCkBAIC0yNiw5 ICsyNiwxMSBAQAogI2luY2x1ZGUgPHN0ZGJvb2wuaD4KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNp bmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN5cy90eXBl cy5oPgogI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNp bmNsdWRlIDxjbG9uZS1pbnRlcm5hbC5oPgogCiAjaW5jbHVkZSA8c3RhY2tpbmZvLmg+ICAvKiBG b3IgX1NUQUNLX0dST1dTX3tVUCxET1dOfS4gICovCiAKQEAgLTcwLDIzICs3MiwxOCBAQCBkb190 ZXN0ICh2b2lkKQogICBpZiAocGlwZTIgKHBpcGVmZCwgT19DTE9FWEVDKSkKICAgICBGQUlMX0VY SVQxICgicGlwZSBmYWlsZWQ6ICVtIik7CiAKLSAgaW50IGNsb25lX2ZsYWdzID0gMDsKICNpZmRl ZiBfX2lhNjRfXwotICBleHRlcm4gaW50IF9fY2xvbmUyIChpbnQgKCpfX2ZuKSAodm9pZCAqX19h cmcpLCB2b2lkICpfX2NoaWxkX3N0YWNrX2Jhc2UsCi0JCSAgICAgICBzaXplX3QgX19jaGlsZF9z dGFja19zaXplLCBpbnQgX19mbGFncywKLQkJICAgICAgIHZvaWQgKl9fYXJnLCAuLi4pOwotICBj aGFyIHN0WzI1NiAqIDEwMjRdIF9fYXR0cmlidXRlX18gKChhbGlnbmVkKSk7Ci0gIHBpZF90IHAg PSBfX2Nsb25lMiAoZiwgc3QsIHNpemVvZiAoc3QpLCBjbG9uZV9mbGFncywgMCk7CisjIGRlZmlu ZSBTVEFDS19TSVpFIDI1NiAqIDEwMjQKICNlbHNlCi0gIGNoYXIgc3RbMTI4ICogMTAyNF0gX19h dHRyaWJ1dGVfXyAoKGFsaWduZWQpKTsKLSNpZiBfU1RBQ0tfR1JPV1NfRE9XTgotICBwaWRfdCBw ID0gY2xvbmUgKGYsIHN0ICsgc2l6ZW9mIChzdCksIGNsb25lX2ZsYWdzLCAwKTsKLSNlbGlmIF9T VEFDS19HUk9XU19VUAotICBwaWRfdCBwID0gY2xvbmUgKGYsIHN0LCBjbG9uZV9mbGFncywgMCk7 Ci0jZWxzZQotI2Vycm9yICJEZWZpbmUgZWl0aGVyIF9TVEFDS19HUk9XU19ET1dOIG9yIF9TVEFD S19HUk9XU19VUCIKLSNlbmRpZgorIyBkZWZpbmUgU1RBQ0tfU0laRSAxMjggKiAxMDI0CiAjZW5k aWYKKyAgY2hhciBzdFtTVEFDS19TSVpFXSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCkpOworICBz dHJ1Y3QgY2xvbmVfYXJncyBjbG9uZV9hcmdzID0KKyAgICB7CisgICAgICAuc3RhY2sgPSAodWlu dHB0cl90KSBzdCwKKyAgICAgIC5zdGFja19zaXplID0gc2l6ZW9mIChzdCksCisgICAgfTsKKyAg cGlkX3QgcCA9IF9fY2xvbmVfaW50ZXJuYWwgKCZjbG9uZV9hcmdzLCBzaXplb2YgKGNsb25lX2Fy Z3MpLCBmLCAwKTsKIAogICBjbG9zZSAocGlwZWZkWzFdKTsKIApkaWZmIC0tZ2l0IGEvc3lzZGVw cy91bml4L3N5c3YvbGludXgvdHN0LWNsb25lMy5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgv dHN0LWNsb25lMy5jCmluZGV4IDFhMWJmZDQ1ODYuLjNlNTA1ODA3YjYgMTAwNjQ0Ci0tLSBhL3N5 c2RlcHMvdW5peC9zeXN2L2xpbnV4L3RzdC1jbG9uZTMuYworKysgYi9zeXNkZXBzL3VuaXgvc3lz di9saW51eC90c3QtY2xvbmUzLmMKQEAgLTIwLDEwICsyMCwxMiBAQAogI2luY2x1ZGUgPHNjaGVk Lmg+CiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8 ZXJybm8uaD4KICNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgogI2luY2x1ZGUgPHN5cy93YWl0Lmg+ CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8bGludXgvZnV0ZXguaD4KKyNpbmNs dWRlIDxjbG9uZS1pbnRlcm5hbC5oPgogCiAjaW5jbHVkZSA8c3RhY2tpbmZvLmg+ICAvKiBGb3Ig X1NUQUNLX0dST1dTX3tVUCxET1dOfS4gICovCiAjaW5jbHVkZSA8c3VwcG9ydC9jaGVjay5oPgpA QCAtNzgsMjMgKzgwLDE1IEBAIGRvX3Rlc3QgKHZvaWQpCiAgIHBpZF90IGN0aWQgPSBDVElEX0lO SVRfVkFMOwogICBwaWRfdCB0aWQ7CiAKLSNpZmRlZiBfX2lhNjRfXwotICBleHRlcm4gaW50IF9f Y2xvbmUyIChpbnQgKCpfX2ZuKSAodm9pZCAqX19hcmcpLCB2b2lkICpfX2NoaWxkX3N0YWNrX2Jh c2UsCi0JCSAgICAgICBzaXplX3QgX19jaGlsZF9zdGFja19zaXplLCBpbnQgX19mbGFncywKLQkJ ICAgICAgIHZvaWQgKl9fYXJnLCAuLi4pOwotICB0aWQgPSBfX2Nsb25lMiAoZiwgc3QsIHNpemVv ZiAoc3QpLCBjbG9uZV9mbGFncywgTlVMTCwgLyogcHRpZCAqLyBOVUxMLAotCQkgIC8qIHRscyAq LyBOVUxMLCAmY3RpZCk7Ci0jZWxzZQotI2lmIF9TVEFDS19HUk9XU19ET1dOCi0gIHRpZCA9IGNs b25lIChmLCBzdCArIHNpemVvZiAoc3QpLCBjbG9uZV9mbGFncywgTlVMTCwgLyogcHRpZCAqLyBO VUxMLAotCSAgICAgICAvKiB0bHMgKi8gTlVMTCwgJmN0aWQpOwotI2VsaWYgX1NUQUNLX0dST1dT X1VQCi0gIHRpZCA9IGNsb25lIChmLCBzdCwgY2xvbmVfZmxhZ3MsIE5VTEwsIC8qIHB0aWQgKi8g TlVMTCwgLyogdGxzICovIE5VTEwsCi0JICAgICAgICZjdGlkKTsKLSNlbHNlCi0jZXJyb3IgIkRl ZmluZSBlaXRoZXIgX1NUQUNLX0dST1dTX0RPV04gb3IgX1NUQUNLX0dST1dTX1VQIgotI2VuZGlm Ci0jZW5kaWYKKyAgc3RydWN0IGNsb25lX2FyZ3MgY2xvbmVfYXJncyA9CisgICAgeworICAgICAg LmZsYWdzID0gY2xvbmVfZmxhZ3MgJiB+Q1NJR05BTCwKKyAgICAgIC5leGl0X3NpZ25hbCA9IGNs b25lX2ZsYWdzICYgQ1NJR05BTCwKKyAgICAgIC5zdGFjayA9ICh1aW50cHRyX3QpIHN0LAorICAg ICAgLnN0YWNrX3NpemUgPSBzaXplb2YgKHN0KSwKKyAgICAgIC5jaGlsZF90aWQgPSAodWludHB0 cl90KSAmY3RpZCwKKyAgICB9OworICB0aWQgPSBfX2Nsb25lX2ludGVybmFsICgmY2xvbmVfYXJn cywgc2l6ZW9mIChjbG9uZV9hcmdzKSwgZiwgTlVMTCk7CiAgIGlmICh0aWQgPT0gLTEpCiAgICAg RkFJTF9FWElUMSAoImNsb25lIGZhaWxlZDogJW0iKTsKIApkaWZmIC0tZ2l0IGEvc3lzZGVwcy91 bml4L3N5c3YvbGludXgvdHN0LWdldHBpZDEuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Rz dC1nZXRwaWQxLmMKaW5kZXggMjUzZWJmMmUxNS4uYjc4ZjU2ZGY0ZiAxMDA2NDQKLS0tIGEvc3lz ZGVwcy91bml4L3N5c3YvbGludXgvdHN0LWdldHBpZDEuYworKysgYi9zeXNkZXBzL3VuaXgvc3lz di9saW51eC90c3QtZ2V0cGlkMS5jCkBAIC01LDYgKzUsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5o PgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy93YWl0Lmg+CisjaW5jbHVk ZSA8Y2xvbmUtaW50ZXJuYWwuaD4KICNpbmNsdWRlIDxzdGFja2luZm8uaD4KIAogI2lmbmRlZiBU RVNUX0NMT05FX0ZMQUdTCkBAIC00MiwyMSArNDMsMTkgQEAgZG9fdGVzdCAodm9pZCkKICAgICB9 CiAKICNpZmRlZiBfX2lhNjRfXwotICBleHRlcm4gaW50IF9fY2xvbmUyIChpbnQgKCpfX2ZuKSAo dm9pZCAqX19hcmcpLCB2b2lkICpfX2NoaWxkX3N0YWNrX2Jhc2UsCi0JCSAgICAgICBzaXplX3Qg X19jaGlsZF9zdGFja19zaXplLCBpbnQgX19mbGFncywKLQkJICAgICAgIHZvaWQgKl9fYXJnLCAu Li4pOwotICBjaGFyIHN0WzI1NiAqIDEwMjRdIF9fYXR0cmlidXRlX18gKChhbGlnbmVkKSk7Ci0g IHBpZF90IHAgPSBfX2Nsb25lMiAoZiwgc3QsIHNpemVvZiAoc3QpLCBURVNUX0NMT05FX0ZMQUdT LCAwKTsKKyMgZGVmaW5lIFNUQUNLX1NJWkUgMjU2ICogMTAyNAogI2Vsc2UKLSAgY2hhciBzdFsx MjggKiAxMDI0XSBfX2F0dHJpYnV0ZV9fICgoYWxpZ25lZCkpOwotIyBpZiBfU1RBQ0tfR1JPV1Nf RE9XTgotICBwaWRfdCBwID0gY2xvbmUgKGYsIHN0ICsgc2l6ZW9mIChzdCksIFRFU1RfQ0xPTkVf RkxBR1MsIDApOwotIyBlbGlmIF9TVEFDS19HUk9XU19VUAotICBwaWRfdCBwID0gY2xvbmUgKGYs IHN0LCBURVNUX0NMT05FX0ZMQUdTLCAwKTsKLSMgZWxzZQotIyAgZXJyb3IgIkRlZmluZSBlaXRo ZXIgX1NUQUNLX0dST1dTX0RPV04gb3IgX1NUQUNLX0dST1dTX1VQIgotIyBlbmRpZgorIyBkZWZp bmUgU1RBQ0tfU0laRSAxMjggKiAxMDI0CiAjZW5kaWYKKyAgY2hhciBzdFtTVEFDS19TSVpFXSBf X2F0dHJpYnV0ZV9fICgoYWxpZ25lZCkpOworICBzdHJ1Y3QgY2xvbmVfYXJncyBjbG9uZV9hcmdz ID0KKyAgICB7CisgICAgICAuZmxhZ3MgPSBURVNUX0NMT05FX0ZMQUdTICYgfkNTSUdOQUwsCisg ICAgICAuZXhpdF9zaWduYWwgPSBURVNUX0NMT05FX0ZMQUdTICYgQ1NJR05BTCwKKyAgICAgIC5z dGFjayA9ICh1aW50cHRyX3QpIHN0LAorICAgICAgLnN0YWNrX3NpemUgPSBzaXplb2YgKHN0KSwK KyAgICB9OworICBwaWRfdCBwID0gX19jbG9uZV9pbnRlcm5hbCAoJmNsb25lX2FyZ3MsIHNpemVv ZiAoY2xvbmVfYXJncyksIGYsIDApOwogICBpZiAocCA9PSAtMSkKICAgICB7CiAgICAgICBwcmlu dGYoImNsb25lIGZhaWxlZDogJW1cbiIpOwpkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3Yv bGludXgveDg2XzY0L2Nsb25lMy5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgveDg2XzY0L2Ns b25lMy5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjRkOTliNGI4ODEK LS0tIC9kZXYvbnVsbAorKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC94ODZfNjQvY2xvbmUz LlMKQEAgLTAsMCArMSwxMDUgQEAKKy8qIFRoZSBjbG9uZTMgc3lzY2FsbCB3cmFwcGVyLiAgTGlu dXgveDg2LTY0IHZlcnNpb24uCisgICBDb3B5cmlnaHQgKEMpIDIwMjEgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFy eS4KKworICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCisgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGUg R05VIEMgTGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgICBMaWNlbnNlIGFsb25n IHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IGlmIG5vdCwgc2VlCisgICA8aHR0cHM6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworLyogY2xvbmUzKCkgaXMgZXZlbiBtb3JlIHNwZWNpYWwg dGhhbiBmb3JrKCkgYXMgaXQgbXVja3Mgd2l0aCBzdGFja3MKKyAgIGFuZCBpbnZva2VzIGEgZnVu Y3Rpb24gaW4gdGhlIHJpZ2h0IGNvbnRleHQgYWZ0ZXIgaXRzIGFsbCBvdmVyLiAgKi8KKworI2lu Y2x1ZGUgPHN5c2RlcC5oPgorI2luY2x1ZGUgPGNsb25lLW9mZnNldHMuaD4KKworLyogVGhlIHVz ZXJsYW5kIGltcGxlbWVudGF0aW9uIGlzOgorICAgaW50IGNsb25lMyAoc3RydWN0IGNsb25lX2Fy Z3MgKmNsX2FyZ3MsIHNpemVfdCBzaXplLAorCSAgICAgICBpbnQgKCpmbikodm9pZCAqYXJnKSwg dm9pZCAqYXJnKTsKKyAgIHRoZSBrZXJuZWwgZW50cnkgaXM6CisgICBpbnQgY2xvbmUzIChzdHJ1 Y3QgY2xvbmVfYXJncyAqY2xfYXJncywgc2l6ZV90IHNpemUpOworCisgICBUaGUgcGFyYW1ldGVy cyBhcmUgcGFzc2VkIGluIHJlZ2lzdGVycyBmcm9tIHVzZXJsYW5kOgorICAgcmRpOiBjbF9hcmdz CisgICByc2k6IHNpemUKKyAgIHJkeDogZm4KKyAgIHJjeDogYXJnCisKKyAgIFRoZSBrZXJuZWwg ZXhwZWN0czoKKyAgIHJheDogc3lzdGVtIGNhbGwgbnVtYmVyCisgICByZGk6IGNsX2FyZ3MKKyAg IHJzaTogc2l6ZSAgKi8KKworICAgICAgICAudGV4dAorRU5UUlkgKF9fY2xvbmUzKQorCS8qIFNh bml0eSBjaGVjayBhcmd1bWVudHMuICAqLworCW1vdnEJJC1FSU5WQUwsICVyYXgKKwl0ZXN0cQkl cmRpLCAlcmRpCQkvKiBObyBOVUxMIGNsX2FyZ3MgcG9pbnRlci4gICovCisJanoJU1lTQ0FMTF9F UlJPUl9MQUJFTAorCXRlc3RxCSVyZHgsICVyZHgJCS8qIE5vIE5VTEwgZnVuY3Rpb24gcG9pbnRl ci4gICovCisJanoJU1lTQ0FMTF9FUlJPUl9MQUJFTAorCisJLyogTG9hZCB0aGUgbmV3IHN0YWNr IHNpemUgaW50byBSOS4gICovCisJbW92cQlDTE9ORV9BUkdTX1NUQUNLX1NJWkVfT0ZGU0VUKCVy ZGkpLCAlcjkKKworCS8qIExvYWQgdGhlIG5ldyBzdGFjayBib3R0b20gaW50byBSOC4gICovCisJ bW92cQlDTE9ORV9BUkdTX1NUQUNLX09GRlNFVCglcmRpKSwgJXI4CisKKwkvKiBNYWtlIHJvb20g Zm9yIDIgOC1ieXRlIHNsb3RzIG9uIHRoZSBuZXcgc3RhY2suICAqLworCXN1YnEJJDE2LCAlcjkK KworCS8qIEluc2VydCB0aGUgYXJndW1lbnQgb250byB0aGUgbmV3IHN0YWNrLiAgKi8KKwltb3Zx CSVyY3gsIDgoJXI4LCAlcjkpCisKKwkvKiBTYXZlIHRoZSBmdW5jdGlvbiBwb2ludGVyLiAgSXQg d2lsbCBiZSBwb3BwZWQgb2ZmIGluIHRoZQorCSAgIGNoaWxkLiAgKi8KKwltb3ZxCSVyZHgsICgl cjgsICVyOSkKKworCS8qIFVwZGF0ZSB0aGUgc3RhY2sgc2l6ZSBmaWVsZCBwYXNzZWQgdG8gY2xv bmUzLiAgKi8KKwltb3ZxCSVyOSwgQ0xPTkVfQVJHU19TVEFDS19TSVpFX09GRlNFVCglcmRpKQor CisJLyogRG8gdGhlIHN5c3RlbSBjYWxsLiAgKi8KKwltb3ZsCSRTWVNfaWZ5KGNsb25lMyksICVl YXgKKworCS8qIEVuZCBGREUgbm93LCBiZWNhdXNlIGluIHRoZSBjaGlsZCB0aGUgdW53aW5kIGlu Zm8gd2lsbCBiZQorCSAgIHdyb25nLiAgKi8KKwljZmlfZW5kcHJvYzsKKwlzeXNjYWxsCisKKwl0 ZXN0CSVSQVhfTFAsICVSQVhfTFAKKwlqbAlTWVNDQUxMX0VSUk9SX0xBQkVMCisJanoJTCh0aHJl YWRfc3RhcnQpCisKKwlyZXQKKworTCh0aHJlYWRfc3RhcnQpOgorCWNmaV9zdGFydHByb2M7CisJ LyogQ2xlYXJpbmcgZnJhbWUgcG9pbnRlciBpcyBpbnN1ZmZpY2llbnQsIHVzZSBDRkkuICAqLwor CWNmaV91bmRlZmluZWQgKHJpcCk7CisJLyogQ2xlYXIgdGhlIGZyYW1lIHBvaW50ZXIuICBUaGUg QUJJIHN1Z2dlc3RzIHRoaXMgYmUgZG9uZSwgdG8gbWFyaworCSAgIHRoZSBvdXRlcm1vc3QgZnJh bWUgb2J2aW91c2x5LiAgKi8KKwl4b3JsCSVlYnAsICVlYnAKKworCS8qIFNldCB1cCBhcmd1bWVu dHMgZm9yIHRoZSBmdW5jdGlvbiBjYWxsLiAgKi8KKwlwb3BxCSVyYXgJCS8qIEZ1bmN0aW9uIHRv IGNhbGwuICAqLworCXBvcHEJJXJkaQkJLyogQXJndW1lbnQuICAqLworCWNhbGwJKiVyYXgKKwkv KiBDYWxsIGV4aXQgd2l0aCByZXR1cm4gdmFsdWUgZnJvbSBmdW5jdGlvbiBjYWxsLiAqLworCW1v dnEJJXJheCwgJXJkaQorCW1vdmwJJFNZU19pZnkoZXhpdCksICVlYXgKKwlzeXNjYWxsCisJY2Zp X2VuZHByb2M7CisKKwljZmlfc3RhcnRwcm9jOworUFNFVURPX0VORCAoX19jbG9uZTMpCisKK2xp YmNfaGlkZGVuX2RlZiAoX19jbG9uZTMpCi0tIAoyLjI5LjIKCg== --00000000000031e4e605bcba73e6--