From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v6 03/14] xen: Use a typesafe to define INVALID_MFN Date: Wed, 6 Jul 2016 14:01:02 +0100 Message-ID: <1467810073-27971-4-git-send-email-julien.grall@arm.com> References: <1467810073-27971-1-git-send-email-julien.grall@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1467810073-27971-1-git-send-email-julien.grall@arm.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Kevin Tian , sstabellini@kernel.org, Jun Nakajima , George Dunlap , Andrew Cooper , Christoph Egger , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich , Liu Jinsong , Mukesh Rathor List-Id: xen-devel@lists.xenproject.org QWxzbyB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBjb252ZXJ0IGFyY2gveDg2L2RlYnVnLmMgdG8g dGhlIHR5cGVzYWZlCm1mbiBhbmQgdXNlIHByb3BlciBwcmludGYgZm9ybWF0IGZvciBNRk4vR0ZO IHdoZW4gdGhlIGNvZGUgYXJvdW5kIGlzCm1vZGlmaWVkLgoKU2lnbmVkLW9mZi1ieTogSnVsaWVu IEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBDb29wZXIg PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkg PHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CgotLS0KQ2M6IENocmlzdG9waCBFZ2dlciA8Y2hlZ2dl ckBhbWF6b24uZGU+CkNjOiBMaXUgSmluc29uZyA8amluc29uZy5saXVAYWxpYmFiYS1pbmMuY29t PgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogTXVrZXNoIFJhdGhvciA8 bXVrZXNoLnJhdGhvckBvcmFjbGUuY29tPgpDYzogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRA Y2l0cml4LmNvbT4KQ2M6IEp1biBOYWthamltYSA8anVuLm5ha2FqaW1hQGludGVsLmNvbT4KQ2M6 IEtldmluIFRpYW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpDYzogR2VvcmdlIER1bmxhcCA8Z2Vv cmdlLmR1bmxhcEBldS5jaXRyaXguY29tPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+Cgog ICAgQ2hhbmdlcyBpbiB2NjoKICAgICAgICAtIEFkZCBTdGVmYW5vJ3MgYWNrZWQtYnkgZm9yIEFS TSBiaXRzCiAgICAgICAgLSBVc2UgUFJJX21mbiBhbmQgUFJJX2dmbgogICAgICAgIC0gUmVtb3Zl IHNldCBvZiBicmFja2V0cyB3aGVuIGl0IGlzIG5vdCBuZWNlc3NhcnkKICAgICAgICAtIFVzZSBt Zm5fYWRkIHdoZW4gcG9zc2libGUKICAgICAgICAtIEFkZCBBbmRyZXcncyByZXZpZXdlZC1ieQoK ICAgIENoYW5nZXMgaW4gdjU6CiAgICAgICAgLSBQYXRjaCBhZGRlZAotLS0KIHhlbi9hcmNoL2Fy bS9wMm0uYyAgICAgICAgICAgICAgfCAgNCArLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21j ZS5jICAgfCAgMiArLQogeGVuL2FyY2gveDg2L2RlYnVnLmMgICAgICAgICAgICB8IDU4ICsrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL2h2 bS5jICAgICAgICAgIHwgIDYgKystLS0KIHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYyAgICAg fCAxMiArKysrLS0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jICAgICAgfCAgMiArLQog eGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYyAgICB8ICA0ICstLQogeGVuL2FyY2gveDg2L21t L2hhcC9oYXAuYyAgICAgICB8ICA0ICstLQogeGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyAgICAg ICB8ICA2ICsrLS0tCiB4ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jICAgICAgIHwgMTggKysrKysr LS0tLS0tLQogeGVuL2FyY2gveDg2L21tL3AybS1wdC5jICAgICAgICB8IDE4ICsrKysrKy0tLS0t LS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0uYyAgICAgICAgICAgfCA1NCArKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L21tL3BhZ2luZy5jICAgICAgICB8 IDEyICsrKystLS0tLQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyB8IDQzICsrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5j ICB8IDM2ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIHhlbi9jb21tb24vZG9tYWluLmMgICAg ICAgICAgICAgfCAgNiArKy0tLQogeGVuL2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgICB8ICA2 ICsrLS0tCiB4ZW4vaW5jbHVkZS94ZW4vbW0uaCAgICAgICAgICAgIHwgIDIgKy0KIDE4IGZpbGVz IGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCAxNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gvYXJtL3AybS5jIGIveGVuL2FyY2gvYXJtL3AybS5jCmluZGV4IDM0NTYzYmIu LmQ2OTA2MDIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS9wMm0uYworKysgYi94ZW4vYXJjaC9h cm0vcDJtLmMKQEAgLTE0NjEsNyArMTQ2MSw3IEBAIGludCByZWxpbnF1aXNoX3AybV9tYXBwaW5n KHN0cnVjdCBkb21haW4gKmQpCiAgICAgcmV0dXJuIGFwcGx5X3AybV9jaGFuZ2VzKGQsIFJFTElO UVVJU0gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIocDJtLT5s b3dlc3RfbWFwcGVkX2dmbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9f cGFkZHIocDJtLT5tYXhfbWFwcGVkX2dmbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwZm5fdG9fcGFkZHIoSU5WQUxJRF9NRk4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGZuX3RvX3BhZGRyKG1mbl94KElOVkFMSURfTUZOKSksCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNQVRUUl9NRU0sIDAsIHAybV9pbnZhbGlkLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZC0+YXJjaC5wMm0uZGVmYXVsdF9hY2Nlc3MpOwogfQpAQCAtMTQ3Niw3ICsx NDc2LDcgQEAgaW50IHAybV9jYWNoZV9mbHVzaChzdHJ1Y3QgZG9tYWluICpkLCB4ZW5fcGZuX3Qg c3RhcnRfbWZuLCB4ZW5fcGZuX3QgZW5kX21mbikKICAgICByZXR1cm4gYXBwbHlfcDJtX2NoYW5n ZXMoZCwgQ0FDSEVGTFVTSCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3Bh ZGRyKHN0YXJ0X21mbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRk cihlbmRfbWZuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKElO VkFMSURfTUZOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKG1m bl94KElOVkFMSURfTUZOKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BVFRSX01F TSwgMCwgcDJtX2ludmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmFyY2gu cDJtLmRlZmF1bHRfYWNjZXNzKTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNo ZWNrL21jZS5jIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMKaW5kZXggZWRjYmU0OC4u MjY5NWIwYyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMKKysrIGIv eGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMKQEAgLTE0NTUsNyArMTQ1NSw3IEBAIGxvbmcg ZG9fbWNhKFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX21jX3QpIHVfeGVuX21jKQogICAgICAg ICAgICAgICAgIGdmbiA9IFBGTl9ET1dOKGdhZGRyKTsKICAgICAgICAgICAgICAgICBtZm4gPSBt Zm5feChnZXRfZ2ZuKGQsIGdmbiwgJnQpKTsKIAotICAgICAgICAgICAgICAgIGlmICggbWZuID09 IElOVkFMSURfTUZOICkKKyAgICAgICAgICAgICAgICBpZiAoIG1mbiA9PSBtZm5feChJTlZBTElE X01GTikgKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcHV0X2dmbihk LCBnZm4pOwogICAgICAgICAgICAgICAgICAgICBwdXRfZG9tYWluKGQpOwpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2RlYnVnLmMgYi94ZW4vYXJjaC94ODYvZGVidWcuYwppbmRleCA1OGNhZTIy Li45MjEzZWE3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZGVidWcuYworKysgYi94ZW4vYXJj aC94ODYvZGVidWcuYwpAQCAtNDMsMTEgKzQzLDExIEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBk Ymd2YV90OwogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIGRiZ2J5dGVfdDsKIAogLyogUmV0dXJuczog bWZuIGZvciB0aGUgZ2l2ZW4gKGh2bSBndWVzdCkgdmFkZHIgKi8KLXN0YXRpYyB1bnNpZ25lZCBs b25nIAorc3RhdGljIG1mbl90CiBkYmdfaHZtX3ZhMm1mbihkYmd2YV90IHZhZGRyLCBzdHJ1Y3Qg ZG9tYWluICpkcCwgaW50IHRvYWRkciwKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpn Zm4pCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBtZm47CisgICAgbWZuX3QgbWZuOwogICAgIHVpbnQz Ml90IHBmZWMgPSBQRkVDX3BhZ2VfcHJlc2VudDsKICAgICBwMm1fdHlwZV90IGdmbnR5cGU7CiAK QEAgLTYwLDE2ICs2MCwxNyBAQCBkYmdfaHZtX3ZhMm1mbihkYmd2YV90IHZhZGRyLCBzdHJ1Y3Qg ZG9tYWluICpkcCwgaW50IHRvYWRkciwKICAgICAgICAgcmV0dXJuIElOVkFMSURfTUZOOwogICAg IH0KIAotICAgIG1mbiA9IG1mbl94KGdldF9nZm4oZHAsICpnZm4sICZnZm50eXBlKSk7IAorICAg IG1mbiA9IGdldF9nZm4oZHAsICpnZm4sICZnZm50eXBlKTsKICAgICBpZiAoIHAybV9pc19yZWFk b25seShnZm50eXBlKSAmJiB0b2FkZHIgKQogICAgIHsKICAgICAgICAgREJHUDIoImtkYjpwMm1f aXNfcmVhZG9ubHk6IGdmbnR5cGU6JXhcbiIsIGdmbnR5cGUpOwogICAgICAgICBtZm4gPSBJTlZB TElEX01GTjsKICAgICB9CiAgICAgZWxzZQotICAgICAgICBEQkdQMigiWDogdmFkZHI6JWx4IGRv bWlkOiVkIG1mbjolbHhcbiIsIHZhZGRyLCBkcC0+ZG9tYWluX2lkLCBtZm4pOworICAgICAgICBE QkdQMigiWDogdmFkZHI6JWx4IGRvbWlkOiVkIG1mbjolIyJQUklfbWZuIlxuIiwKKyAgICAgICAg ICAgICAgdmFkZHIsIGRwLT5kb21haW5faWQsIG1mbl94KG1mbikpOwogCi0gICAgaWYgKCBtZm4g PT0gSU5WQUxJRF9NRk4gKQorICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAg ICB7CiAgICAgICAgIHB1dF9nZm4oZHAsICpnZm4pOwogICAgICAgICAqZ2ZuID0gSU5WQUxJRF9H Rk47CkBAIC05MSw3ICs5Miw3IEBAIGRiZ19odm1fdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVj dCBkb21haW4gKmRwLCBpbnQgdG9hZGRyLAogICogICAgICAgbW9kZS4KICAqIFJldHVybnM6IG1m biBmb3IgdGhlIGdpdmVuIChwdiBndWVzdCkgdmFkZHIgCiAgKi8KLXN0YXRpYyB1bnNpZ25lZCBs b25nIAorc3RhdGljIG1mbl90CiBkYmdfcHZfdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVjdCBk b21haW4gKmRwLCB1aW50NjRfdCBwZ2QzdmFsKQogewogICAgIGw0X3BnZW50cnlfdCBsNGUsICps NHQ7CkBAIC05OSwzMSArMTAwLDMxIEBAIGRiZ19wdl92YTJtZm4oZGJndmFfdCB2YWRkciwgc3Ry dWN0IGRvbWFpbiAqZHAsIHVpbnQ2NF90IHBnZDN2YWwpCiAgICAgbDJfcGdlbnRyeV90IGwyZSwg KmwydDsKICAgICBsMV9wZ2VudHJ5X3QgbDFlLCAqbDF0OwogICAgIHVuc2lnbmVkIGxvbmcgY3Iz ID0gKHBnZDN2YWwgPyBwZ2QzdmFsIDogZHAtPnZjcHVbMF0tPmFyY2guY3IzKTsKLSAgICB1bnNp Z25lZCBsb25nIG1mbiA9IGNyMyA+PiBQQUdFX1NISUZUOworICAgIG1mbl90IG1mbiA9IF9tZm4o Y3IzID4+IFBBR0VfU0hJRlQpOwogCiAgICAgREJHUDIoInZhZGRyOiVseCBkb21pZDolZCBjcjM6 JWx4IHBnZDM6JWx4XG4iLCB2YWRkciwgZHAtPmRvbWFpbl9pZCwgCiAgICAgICAgICAgY3IzLCBw Z2QzdmFsKTsKIAogICAgIGlmICggcGdkM3ZhbCA9PSAwICkKICAgICB7Ci0gICAgICAgIGw0dCA9 IG1hcF9kb21haW5fcGFnZShfbWZuKG1mbikpOworICAgICAgICBsNHQgPSBtYXBfZG9tYWluX3Bh Z2UobWZuKTsKICAgICAgICAgbDRlID0gbDR0W2w0X3RhYmxlX29mZnNldCh2YWRkcildOwogICAg ICAgICB1bm1hcF9kb21haW5fcGFnZShsNHQpOwotICAgICAgICBtZm4gPSBsNGVfZ2V0X3Bmbihs NGUpOwotICAgICAgICBEQkdQMigibDR0OiVwIGw0dG86JWx4IGw0ZTolbHggbWZuOiVseFxuIiwg bDR0LCAKLSAgICAgICAgICAgICAgbDRfdGFibGVfb2Zmc2V0KHZhZGRyKSwgbDRlLCBtZm4pOwor ICAgICAgICBtZm4gPSBfbWZuKGw0ZV9nZXRfcGZuKGw0ZSkpOworICAgICAgICBEQkdQMigibDR0 OiVwIGw0dG86JWx4IGw0ZTolbHggbWZuOiUjIlBSSV9tZm4iXG4iLCBsNHQsCisgICAgICAgICAg ICAgIGw0X3RhYmxlX29mZnNldCh2YWRkciksIGw0ZSwgbWZuX3gobWZuKSk7CiAgICAgICAgIGlm ICggIShsNGVfZ2V0X2ZsYWdzKGw0ZSkgJiBfUEFHRV9QUkVTRU5UKSApCiAgICAgICAgIHsKICAg ICAgICAgICAgIERCR1AxKCJsNCBQQUdFIG5vdCBwcmVzZW50LiB2YWRkcjolbHggY3IzOiVseFxu IiwgdmFkZHIsIGNyMyk7CiAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9NRk47CiAgICAgICAg IH0KIAotICAgICAgICBsM3QgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKKyAgICAgICAg bDN0ID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7CiAgICAgICAgIGwzZSA9IGwzdFtsM190YWJsZV9v ZmZzZXQodmFkZHIpXTsKICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDN0KTsKLSAgICAgICAg bWZuID0gbDNlX2dldF9wZm4obDNlKTsKLSAgICAgICAgREJHUDIoImwzdDolcCBsM3RvOiVseCBs M2U6JWx4IG1mbjolbHhcbiIsIGwzdCwgCi0gICAgICAgICAgICAgIGwzX3RhYmxlX29mZnNldCh2 YWRkciksIGwzZSwgbWZuKTsKKyAgICAgICAgbWZuID0gX21mbihsM2VfZ2V0X3BmbihsM2UpKTsK KyAgICAgICAgREJHUDIoImwzdDolcCBsM3RvOiVseCBsM2U6JWx4IG1mbjolIyJQUklfbWZuIlxu IiwgbDN0LAorICAgICAgICAgICAgICBsM190YWJsZV9vZmZzZXQodmFkZHIpLCBsM2UsIG1mbl94 KG1mbikpOwogICAgICAgICBpZiAoICEobDNlX2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFJFU0VO VCkgfHwKICAgICAgICAgICAgICAobDNlX2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFNFKSApCiAg ICAgICAgIHsKQEAgLTEzMiwyNiArMTMzLDI2IEBAIGRiZ19wdl92YTJtZm4oZGJndmFfdCB2YWRk ciwgc3RydWN0IGRvbWFpbiAqZHAsIHVpbnQ2NF90IHBnZDN2YWwpCiAgICAgICAgIH0KICAgICB9 CiAKLSAgICBsMnQgPSBtYXBfZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKKyAgICBsMnQgPSBtYXBf ZG9tYWluX3BhZ2UobWZuKTsKICAgICBsMmUgPSBsMnRbbDJfdGFibGVfb2Zmc2V0KHZhZGRyKV07 CiAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDJ0KTsKLSAgICBtZm4gPSBsMmVfZ2V0X3BmbihsMmUp OwotICAgIERCR1AyKCJsMnQ6JXAgbDJ0bzolbHggbDJlOiVseCBtZm46JWx4XG4iLCBsMnQsIGwy X3RhYmxlX29mZnNldCh2YWRkciksCi0gICAgICAgICAgbDJlLCBtZm4pOworICAgIG1mbiA9IF9t Zm4obDJlX2dldF9wZm4obDJlKSk7CisgICAgREJHUDIoImwydDolcCBsMnRvOiVseCBsMmU6JWx4 IG1mbjolIyJQUklfbWZuIlxuIiwKKyAgICAgICAgICBsMnQsIGwyX3RhYmxlX29mZnNldCh2YWRk ciksIGwyZSwgbWZuX3gobWZuKSk7CiAgICAgaWYgKCAhKGwyZV9nZXRfZmxhZ3MobDJlKSAmIF9Q QUdFX1BSRVNFTlQpIHx8CiAgICAgICAgICAobDJlX2dldF9mbGFncyhsMmUpICYgX1BBR0VfUFNF KSApCiAgICAgewogICAgICAgICBEQkdQMSgibDIgUEFHRSBub3QgcHJlc2VudC4gdmFkZHI6JWx4 IGNyMzolbHhcbiIsIHZhZGRyLCBjcjMpOwogICAgICAgICByZXR1cm4gSU5WQUxJRF9NRk47CiAg ICAgfQotICAgIGwxdCA9IG1hcF9kb21haW5fcGFnZShfbWZuKG1mbikpOworICAgIGwxdCA9IG1h cF9kb21haW5fcGFnZShtZm4pOwogICAgIGwxZSA9IGwxdFtsMV90YWJsZV9vZmZzZXQodmFkZHIp XTsKICAgICB1bm1hcF9kb21haW5fcGFnZShsMXQpOwotICAgIG1mbiA9IGwxZV9nZXRfcGZuKGwx ZSk7Ci0gICAgREJHUDIoImwxdDolcCBsMXRvOiVseCBsMWU6JWx4IG1mbjolbHhcbiIsIGwxdCwg bDFfdGFibGVfb2Zmc2V0KHZhZGRyKSwKLSAgICAgICAgICBsMWUsIG1mbik7CisgICAgbWZuID0g X21mbihsMWVfZ2V0X3BmbihsMWUpKTsKKyAgICBEQkdQMigibDF0OiVwIGwxdG86JWx4IGwxZTol bHggbWZuOiUjIlBSSV9tZm4iXG4iLCBsMXQsIGwxX3RhYmxlX29mZnNldCh2YWRkciksCisgICAg ICAgICAgbDFlLCBtZm5feChtZm4pKTsKIAotICAgIHJldHVybiBtZm5fdmFsaWQobWZuKSA/IG1m biA6IElOVkFMSURfTUZOOworICAgIHJldHVybiBtZm5fdmFsaWQobWZuX3gobWZuKSkgPyBtZm4g OiBJTlZBTElEX01GTjsKIH0KIAogLyogUmV0dXJuczogbnVtYmVyIG9mIGJ5dGVzIHJlbWFpbmlu ZyB0byBiZSBjb3BpZWQgKi8KQEAgLTE2MywyMyArMTY0LDI0IEBAIHVuc2lnbmVkIGludCBkYmdf cndfZ3Vlc3RfbWVtKHN0cnVjdCBkb21haW4gKmRwLCB2b2lkICogX191c2VyIGdhZGRyLAogICAg IHsKICAgICAgICAgY2hhciAqdmE7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciA9ICh1bnNp Z25lZCBsb25nKWdhZGRyOwotICAgICAgICB1bnNpZ25lZCBsb25nIG1mbiwgZ2ZuID0gSU5WQUxJ RF9HRk4sIHBhZ2VjbnQ7CisgICAgICAgIG1mbl90IG1mbjsKKyAgICAgICAgdW5zaWduZWQgbG9u ZyBnZm4gPSBJTlZBTElEX0dGTiwgcGFnZWNudDsKIAogICAgICAgICBwYWdlY250ID0gbWluX3Qo bG9uZywgUEFHRV9TSVpFIC0gKGFkZHIgJiB+UEFHRV9NQVNLKSwgbGVuKTsKIAogICAgICAgICBt Zm4gPSAoaGFzX2h2bV9jb250YWluZXJfZG9tYWluKGRwKQogICAgICAgICAgICAgICAgPyBkYmdf aHZtX3ZhMm1mbihhZGRyLCBkcCwgdG9hZGRyLCAmZ2ZuKQogICAgICAgICAgICAgICAgOiBkYmdf cHZfdmEybWZuKGFkZHIsIGRwLCBwZ2QzKSk7Ci0gICAgICAgIGlmICggbWZuID09IElOVkFMSURf TUZOICkgCisgICAgICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAgICAgICAg ICAgIGJyZWFrOwogCi0gICAgICAgIHZhID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4obWZuKSk7Cisg ICAgICAgIHZhID0gbWFwX2RvbWFpbl9wYWdlKG1mbik7CiAgICAgICAgIHZhID0gdmEgKyAoYWRk ciAmIChQQUdFX1NJWkUtMSkpOwogCiAgICAgICAgIGlmICggdG9hZGRyICkKICAgICAgICAgewog ICAgICAgICAgICAgY29weV9mcm9tX3VzZXIodmEsIGJ1ZiwgcGFnZWNudCk7ICAgIC8qIHZhID0g YnVmICovCi0gICAgICAgICAgICBwYWdpbmdfbWFya19kaXJ0eShkcCwgbWZuKTsKKyAgICAgICAg ICAgIHBhZ2luZ19tYXJrX2RpcnR5KGRwLCBtZm5feChtZm4pKTsKICAgICAgICAgfQogICAgICAg ICBlbHNlCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94 ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmluZGV4IGM4OWFiNmUuLmYzZmFmMmUgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwpAQCAt MTc5Niw3ICsxNzk2LDcgQEAgaW50IGh2bV9oYXBfbmVzdGVkX3BhZ2VfZmF1bHQocGFkZHJfdCBn cGEsIHVuc2lnbmVkIGxvbmcgZ2xhLAogICAgICAgICBwMm0gPSBob3N0cDJtOwogCiAgICAgLyog Q2hlY2sgYWNjZXNzIHBlcm1pc3Npb25zIGZpcnN0LCB0aGVuIGhhbmRsZSBmYXVsdHMgKi8KLSAg ICBpZiAoIG1mbl94KG1mbikgIT0gSU5WQUxJRF9NRk4gKQorICAgIGlmICggIW1mbl9lcShtZm4s IElOVkFMSURfTUZOKSApCiAgICAgewogICAgICAgICBib29sX3QgdmlvbGF0aW9uOwogCkBAIC01 Mjk5LDggKzUyOTksOCBAQCBzdGF0aWMgaW50IGRvX2FsdHAybV9vcCgKICAgICAgICAgICAgIHJj ID0gLUVJTlZBTDsKIAogICAgICAgICBpZiAoIChnZm5feCh2Y3B1X2FsdHAybShjdXJyKS52ZWlu Zm9fZ2ZuKSAhPSBJTlZBTElEX0dGTikgfHwKLSAgICAgICAgICAgICAobWZuX3goZ2V0X2dmbl9x dWVyeV91bmxvY2tlZChjdXJyLT5kb21haW4sCi0gICAgICAgICAgICAgICAgICAgIGEudS5lbmFi bGVfbm90aWZ5LmdmbiwgJnAybXQpKSA9PSBJTlZBTElEX01GTikgKQorICAgICAgICAgICAgIG1m bl9lcShnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGN1cnItPmRvbWFpbiwKKyAgICAgICAgICAgICAg ICAgICAgYS51LmVuYWJsZV9ub3RpZnkuZ2ZuLCAmcDJtdCksIElOVkFMSURfTUZOKSApCiAgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAogICAgICAgICB2Y3B1X2FsdHAybShjdXJyKS52ZWlu Zm9fZ2ZuID0gX2dmbihhLnUuZW5hYmxlX25vdGlmeS5nZm4pOwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2h2bS92aXJpZGlhbi5jIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jCmluZGV4 IDgyNTNmZDAuLjE3MzRiN2UgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4u YworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMKQEAgLTE5NSw4ICsxOTUsOCBAQCBz dGF0aWMgdm9pZCBlbmFibGVfaHlwZXJjYWxsX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCkKICAgICB7 CiAgICAgICAgIGlmICggcGFnZSApCiAgICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKLSAgICAg ICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgR01GTiAlbHggKE1GTiAlbHgpXG4iLCBn bWZuLAotICAgICAgICAgICAgICAgICBwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBJTlZBTElE X01GTik7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiQmFkIEdNRk4gJSMiUFJJ X2dmbiIgKE1GTiAlIyJQUklfbWZuIilcbiIsCisgICAgICAgICAgICAgICAgIGdtZm4sIHBhZ2Ug PyBwYWdlX3RvX21mbihwYWdlKSA6IG1mbl94KElOVkFMSURfTUZOKSk7CiAgICAgICAgIHJldHVy bjsKICAgICB9CiAKQEAgLTI2OCw4ICsyNjgsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplX2Fw aWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2KQogICAgIHJldHVybjsKIAogIGZhaWw6Ci0gICAgZ2Rw cmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgR01GTiAlbHggKE1GTiAlbHgpXG4iLCBnbWZuLAot ICAgICAgICAgICAgIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKTsKKyAg ICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkJhZCBHTUZOICUjIlBSSV9nZm4iIChNRk4gJSMi UFJJX21mbiIpXG4iLCBnbWZuLAorICAgICAgICAgICAgIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdl KSA6IG1mbl94KElOVkFMSURfTUZOKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlYXJkb3duX2FwaWNf YXNzaXN0KHN0cnVjdCB2Y3B1ICp2KQpAQCAtMzQ4LDggKzM0OCw4IEBAIHN0YXRpYyB2b2lkIHVw ZGF0ZV9yZWZlcmVuY2VfdHNjKHN0cnVjdCBkb21haW4gKmQsIGJvb2xfdCBpbml0aWFsaXplKQog ICAgIHsKICAgICAgICAgaWYgKCBwYWdlICkKICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwot ICAgICAgICBnZHByaW50ayhYRU5MT0dfV0FSTklORywgIkJhZCBHTUZOICVseCAoTUZOICVseClc biIsIGdtZm4sCi0gICAgICAgICAgICAgICAgIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IElO VkFMSURfTUZOKTsKKyAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgR01GTiAl IyJQUklfZ2ZuIiAoTUZOICUjIlBSSV9tZm4iKVxuIiwKKyAgICAgICAgICAgICAgICAgZ21mbiwg cGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2UpIDogbWZuX3goSU5WQUxJRF9NRk4pKTsKICAgICAgICAg cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMg Yi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwppbmRleCBkZjE5NTc5Li5hMDYxNDIwIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYworKysgYi94ZW4vYXJjaC94ODYvaHZt L3ZteC92bXguYwpAQCAtMjAyNSw3ICsyMDI1LDcgQEAgc3RhdGljIHZvaWQgdm14X3ZjcHVfdXBk YXRlX3ZtZnVuY192ZShzdHJ1Y3QgdmNwdSAqdikKIAogICAgICAgICAgICAgbWZuID0gZ2V0X2dm bl9xdWVyeV91bmxvY2tlZChkLCBnZm5feCh2Y3B1X2FsdHAybSh2KS52ZWluZm9fZ2ZuKSwgJnQp OwogCi0gICAgICAgICAgICBpZiAoIG1mbl94KG1mbikgIT0gSU5WQUxJRF9NRk4gKQorICAgICAg ICAgICAgaWYgKCAhbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgICAgICAgICBf X3Ztd3JpdGUoVklSVF9FWENFUFRJT05fSU5GTywgbWZuX3gobWZuKSA8PCBQQUdFX1NISUZUKTsK ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB2LT5hcmNoLmh2bV92bXguc2Vjb25k YXJ5X2V4ZWNfY29udHJvbCAmPQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dh bGsuYyBiL3hlbi9hcmNoL3g4Ni9tbS9ndWVzdF93YWxrLmMKaW5kZXggZTg1MDUwMi4uODY4ZTkw OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYworKysgYi94ZW4vYXJj aC94ODYvbW0vZ3Vlc3Rfd2Fsay5jCkBAIC0yODEsNyArMjgxLDcgQEAgZ3Vlc3Rfd2Fsa190YWJs ZXMoc3RydWN0IHZjcHUgKnYsIHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAgICAgIHN0YXJ0 ID0gX2dmbigoZ2ZuX3goc3RhcnQpICYgfkdVRVNUX0wzX0dGTl9NQVNLKSArCiAgICAgICAgICAg ICAgICAgICAgICAoKHZhID4+IFBBR0VfU0hJRlQpICYgR1VFU1RfTDNfR0ZOX01BU0spKTsKICAg ICAgICAgZ3ctPmwxZSA9IGd1ZXN0X2wxZV9mcm9tX2dmbihzdGFydCwgZmxhZ3MpOwotICAgICAg ICBndy0+bDJtZm4gPSBndy0+bDFtZm4gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgZ3ct PmwybWZuID0gZ3ctPmwxbWZuID0gSU5WQUxJRF9NRk47CiAgICAgICAgIGdvdG8gc2V0X2FkOwog ICAgIH0KIApAQCAtMzU2LDcgKzM1Niw3IEBAIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1 ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAgICAgICBzdGFydCA9IF9nZm4oKGdmbl94 KHN0YXJ0KSAmIH5HVUVTVF9MMl9HRk5fTUFTSykgKwogICAgICAgICAgICAgICAgICAgICAgZ3Vl c3RfbDFfdGFibGVfb2Zmc2V0KHZhKSk7CiAgICAgICAgIGd3LT5sMWUgPSBndWVzdF9sMWVfZnJv bV9nZm4oc3RhcnQsIGZsYWdzKTsKLSAgICAgICAgZ3ctPmwxbWZuID0gX21mbihJTlZBTElEX01G Tik7CisgICAgICAgIGd3LT5sMW1mbiA9IElOVkFMSURfTUZOOwogICAgIH0gCiAgICAgZWxzZSAK ICAgICB7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jIGIveGVuL2FyY2gv eDg2L21tL2hhcC9oYXAuYwppbmRleCA5YzJjZDQ5Li4zMjE4ZmEyIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvbW0vaGFwL2hhcC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKQEAg LTQzMCw3ICs0MzAsNyBAQCBzdGF0aWMgbWZuX3QgaGFwX21ha2VfbW9uaXRvcl90YWJsZShzdHJ1 Y3QgdmNwdSAqdikKICBvb206CiAgICAgSEFQX0VSUk9SKCJvdXQgb2YgbWVtb3J5IGJ1aWxkaW5n IG1vbml0b3IgcGFnZXRhYmxlXG4iKTsKICAgICBkb21haW5fY3Jhc2goZCk7Ci0gICAgcmV0dXJu IF9tZm4oSU5WQUxJRF9NRk4pOworICAgIHJldHVybiBJTlZBTElEX01GTjsKIH0KIAogc3RhdGlj IHZvaWQgaGFwX2Rlc3Ryb3lfbW9uaXRvcl90YWJsZShzdHJ1Y3QgdmNwdSogdiwgbWZuX3QgbW1m bikKQEAgLTUwOSw3ICs1MDksNyBAQCBpbnQgaGFwX2VuYWJsZShzdHJ1Y3QgZG9tYWluICpkLCB1 MzIgbW9kZSkKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTUFYX0VQVFA7 IGkrKyApCi0gICAgICAgICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID0gSU5WQUxJRF9NRk47 CisgICAgICAgICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID0gbWZuX3goSU5WQUxJRF9NRk4p OwogCiAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTUFYX0FMVFAyTTsgaSsrICkKICAgICAgICAg ewpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyBiL3hlbi9hcmNoL3g4Ni9t bS9wMm0tZXB0LmMKaW5kZXggNzE2NmM3MS4uNmQwMzczNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L21tL3AybS1lcHQuYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCkBAIC01MCw3 ICs1MCw3IEBAIHN0YXRpYyBpbnQgYXRvbWljX3dyaXRlX2VwdF9lbnRyeShlcHRfZW50cnlfdCAq ZW50cnlwdHIsIGVwdF9lbnRyeV90IG5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgbGV2ZWwpCiB7CiAgICAgaW50IHJjOwotICAgIHVuc2lnbmVkIGxvbmcgb2xkbWZu ID0gSU5WQUxJRF9NRk47CisgICAgdW5zaWduZWQgbG9uZyBvbGRtZm4gPSBtZm5feChJTlZBTElE X01GTik7CiAgICAgYm9vbF90IGNoZWNrX2ZvcmVpZ24gPSAobmV3Lm1mbiAhPSBlbnRyeXB0ci0+ bWZuIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3LnNhX3AybXQgIT0gZW50cnlw dHItPnNhX3AybXQpOwogCkBAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBpbnQgYXRvbWljX3dyaXRl X2VwdF9lbnRyeShlcHRfZW50cnlfdCAqZW50cnlwdHIsIGVwdF9lbnRyeV90IG5ldywKIAogICAg IHdyaXRlX2F0b21pYygmZW50cnlwdHItPmVwdGUsIG5ldy5lcHRlKTsKIAotICAgIGlmICggdW5s aWtlbHkob2xkbWZuICE9IElOVkFMSURfTUZOKSApCisgICAgaWYgKCB1bmxpa2VseShvbGRtZm4g IT0gbWZuX3goSU5WQUxJRF9NRk4pKSApCiAgICAgICAgIHB1dF9wYWdlKG1mbl90b19wYWdlKG9s ZG1mbikpOwogCiAgICAgcmMgPSAwOwpAQCAtODg3LDcgKzg4Nyw3IEBAIHN0YXRpYyBtZm5fdCBl cHRfZ2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCiAgICAgaW50IGk7CiAgICAgaW50 IHJldCA9IDA7CiAgICAgYm9vbF90IHJlY2FsYyA9IDA7Ci0gICAgbWZuX3QgbWZuID0gX21mbihJ TlZBTElEX01GTik7CisgICAgbWZuX3QgbWZuID0gSU5WQUxJRF9NRk47CiAgICAgc3RydWN0IGVw dF9kYXRhICplcHQgPSAmcDJtLT5lcHQ7CiAKICAgICAqdCA9IHAybV9tbWlvX2RtOwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9k LmMKaW5kZXggYjdhYjE2OS4uZjM4NDU4OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3Ay bS1wb2QuYworKysgYi94ZW4vYXJjaC94ODYvbW0vcDJtLXBvZC5jCkBAIC01NTksNyArNTU5LDcg QEAgcDJtX3BvZF9kZWNyZWFzZV9yZXNlcnZhdGlvbihzdHJ1Y3QgZG9tYWluICpkLAogICAgIHsK ICAgICAgICAgLyogQWxsIFBvRDogTWFyayB0aGUgd2hvbGUgcmVnaW9uIGludmFsaWQgYW5kIHRl bGwgY2FsbGVyCiAgICAgICAgICAqIHdlJ3JlIGRvbmUuICovCi0gICAgICAgIHAybV9zZXRfZW50 cnkocDJtLCBncGZuLCBfbWZuKElOVkFMSURfTUZOKSwgb3JkZXIsIHAybV9pbnZhbGlkLAorICAg ICAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ3BmbiwgSU5WQUxJRF9NRk4sIG9yZGVyLCBwMm1faW52 YWxpZCwKICAgICAgICAgICAgICAgICAgICAgICBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKICAgICAg ICAgcDJtLT5wb2QuZW50cnlfY291bnQtPSgxPDxvcmRlcik7CiAgICAgICAgIEJVR19PTihwMm0t PnBvZC5lbnRyeV9jb3VudCA8IDApOwpAQCAtNjAyLDcgKzYwMiw3IEBAIHAybV9wb2RfZGVjcmVh c2VfcmVzZXJ2YXRpb24oc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgbiA9IDFVTCA8PCBjdXJf b3JkZXI7CiAgICAgICAgIGlmICggdCA9PSBwMm1fcG9wdWxhdGVfb25fZGVtYW5kICkKICAgICAg ICAgewotICAgICAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBpLCBfbWZuKElOVkFM SURfTUZOKSwgY3VyX29yZGVyLAorICAgICAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4g KyBpLCBJTlZBTElEX01GTiwgY3VyX29yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBw Mm1faW52YWxpZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CiAgICAgICAgICAgICBwMm0tPnBvZC5l bnRyeV9jb3VudCAtPSBuOwogICAgICAgICAgICAgQlVHX09OKHAybS0+cG9kLmVudHJ5X2NvdW50 IDwgMCk7CkBAIC02MjQsNyArNjI0LDcgQEAgcDJtX3BvZF9kZWNyZWFzZV9yZXNlcnZhdGlvbihz dHJ1Y3QgZG9tYWluICpkLAogCiAgICAgICAgICAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuKTsK IAotICAgICAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBpLCBfbWZuKElOVkFMSURf TUZOKSwgY3VyX29yZGVyLAorICAgICAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBp LCBJTlZBTElEX01GTiwgY3VyX29yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1f aW52YWxpZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CiAgICAgICAgICAgICBwMm1fdGxiX2ZsdXNo X3N5bmMocDJtKTsKICAgICAgICAgICAgIGZvciAoIGogPSAwOyBqIDwgbjsgKytqICkKQEAgLTY3 MSw3ICs2NzEsNyBAQCB2b2lkIHAybV9wb2RfZHVtcF9kYXRhKHN0cnVjdCBkb21haW4gKmQpCiBz dGF0aWMgaW50CiBwMm1fcG9kX3plcm9fY2hlY2tfc3VwZXJwYWdlKHN0cnVjdCBwMm1fZG9tYWlu ICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuKQogewotICAgIG1mbl90IG1mbiwgbWZuMCA9IF9tZm4o SU5WQUxJRF9NRk4pOworICAgIG1mbl90IG1mbiwgbWZuMCA9IElOVkFMSURfTUZOOwogICAgIHAy bV90eXBlX3QgdHlwZSwgdHlwZTAgPSAwOwogICAgIHVuc2lnbmVkIGxvbmcgKiBtYXAgPSBOVUxM OwogICAgIGludCByZXQ9MCwgcmVzZXQgPSAwOwpAQCAtNzU0LDcgKzc1NCw3IEBAIHAybV9wb2Rf emVyb19jaGVja19zdXBlcnBhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9u ZyBnZm4pCiAgICAgfQogCiAgICAgLyogVHJ5IHRvIHJlbW92ZSB0aGUgcGFnZSwgcmVzdG9yaW5n IG9sZCBtYXBwaW5nIGlmIGl0IGZhaWxzLiAqLwotICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm4s IF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdFX09SREVSXzJNLAorICAgIHAybV9zZXRfZW50cnkocDJt LCBnZm4sIElOVkFMSURfTUZOLCBQQUdFX09SREVSXzJNLAogICAgICAgICAgICAgICAgICAgcDJt X3BvcHVsYXRlX29uX2RlbWFuZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CiAgICAgcDJtX3RsYl9m bHVzaF9zeW5jKHAybSk7CiAKQEAgLTg3MSw3ICs4NzEsNyBAQCBwMm1fcG9kX3plcm9fY2hlY2so c3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyAqZ2ZucywgaW50IGNvdW50KQog ICAgICAgICB9CiAKICAgICAgICAgLyogVHJ5IHRvIHJlbW92ZSB0aGUgcGFnZSwgcmVzdG9yaW5n IG9sZCBtYXBwaW5nIGlmIGl0IGZhaWxzLiAqLwotICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwg Z2Zuc1tpXSwgX21mbihJTlZBTElEX01GTiksIFBBR0VfT1JERVJfNEssCisgICAgICAgIHAybV9z ZXRfZW50cnkocDJtLCBnZm5zW2ldLCBJTlZBTElEX01GTiwgUEFHRV9PUkRFUl80SywKICAgICAg ICAgICAgICAgICAgICAgICBwMm1fcG9wdWxhdGVfb25fZGVtYW5kLCBwMm0tPmRlZmF1bHRfYWNj ZXNzKTsKIAogICAgICAgICAvKiBTZWUgaWYgdGhlIHBhZ2Ugd2FzIHN1Y2Nlc3NmdWxseSB1bm1h cHBlZC4gIChBbGxvdyBvbmUgcmVmY291bnQKQEAgLTEwNzMsNyArMTA3Myw3IEBAIHAybV9wb2Rf ZGVtYW5kX3BvcHVsYXRlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2Zu LAogICAgICAgICAgKiBOT1RFOiBJbiBhIGZpbmUtZ3JhaW5lZCBwMm0gbG9ja2luZyBzY2VuYXJp byB0aGlzIG9wZXJhdGlvbgogICAgICAgICAgKiBtYXkgbmVlZCB0byBwcm9tb3RlIGl0cyBsb2Nr aW5nIGZyb20gZ2ZuLT4xZyBzdXBlcnBhZ2UKICAgICAgICAgICovCi0gICAgICAgIHAybV9zZXRf ZW50cnkocDJtLCBnZm5fYWxpZ25lZCwgX21mbihJTlZBTElEX01GTiksIFBBR0VfT1JERVJfMk0s CisgICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5fYWxpZ25lZCwgSU5WQUxJRF9NRk4sIFBB R0VfT1JERVJfMk0sCiAgICAgICAgICAgICAgICAgICAgICAgcDJtX3BvcHVsYXRlX29uX2RlbWFu ZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTEx NTcsNyArMTE1Nyw3IEBAIHJlbWFwX2FuZF9yZXRyeToKICAgICAgKiBuZWVkIHByb21vdGluZyB0 aGUgZ2ZuIGxvY2sgZnJvbSBnZm4tPjJNIHN1cGVycGFnZSAqLwogICAgIGdmbl9hbGlnbmVkID0g KGdmbj4+b3JkZXIpPDxvcmRlcjsKICAgICBmb3IoaT0wOyBpPCgxPDxvcmRlcik7IGkrKykKLSAg ICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdmbl9hbGlnbmVkICsgaSwgX21mbihJTlZBTElEX01G TiksIFBBR0VfT1JERVJfNEssCisgICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5fYWxpZ25l ZCArIGksIElOVkFMSURfTUZOLCBQQUdFX09SREVSXzRLLAogICAgICAgICAgICAgICAgICAgICAg IHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQsIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwogICAgIGlmICgg dGJfaW5pdF9kb25lICkKICAgICB7CkBAIC0xMjE1LDcgKzEyMTUsNyBAQCBndWVzdF9waHlzbWFw X21hcmtfcG9wdWxhdGVfb25fZGVtYW5kKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcg Z2ZuLAogICAgIH0KIAogICAgIC8qIE5vdywgYWN0dWFsbHkgZG8gdGhlIHR3by13YXkgbWFwcGlu ZyAqLwotICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgX21mbihJTlZBTElEX01GTiks IG9yZGVyLAorICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgSU5WQUxJRF9NRk4sIG9y ZGVyLAogICAgICAgICAgICAgICAgICAgICAgICBwMm1fcG9wdWxhdGVfb25fZGVtYW5kLCBwMm0t PmRlZmF1bHRfYWNjZXNzKTsKICAgICBpZiAoIHJjID09IDAgKQogICAgIHsKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwppbmRl eCA0OTgwOTM0Li4yYjZlODllIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMK KysrIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCkBAIC01MTEsNyArNTExLDcgQEAgcDJtX3B0 X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZu X3QgbWZuLAogICAgICAqIHRoZSBpbnRlcm1lZGlhdGUgb25lIG1pZ2h0IGJlKS4KICAgICAgKi8K ICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MsIGlvbW11X29sZF9mbGFncyA9IDA7Ci0gICAgdW5zaWdu ZWQgbG9uZyBvbGRfbWZuID0gSU5WQUxJRF9NRk47CisgICAgdW5zaWduZWQgbG9uZyBvbGRfbWZu ID0gbWZuX3goSU5WQUxJRF9NRk4pOwogCiAgICAgQVNTRVJUKHN2ZSAhPSAwKTsKIApAQCAtNzY0 LDcgKzc2NCw3IEBAIHAybV9wdF9nZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5z aWduZWQgbG9uZyBnZm4sCiAgICAgICAgICAgICAgICAgICAgICBwMm0tPm1heF9tYXBwZWRfcGZu ICkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICByZXR1cm4gSU5WQUxJRF9NRk47CiAgICAgfQog CiAgICAgbWZuID0gcGFnZXRhYmxlX2dldF9tZm4ocDJtX2dldF9wYWdldGFibGUocDJtKSk7CkBA IC03NzcsNyArNzc3LDcgQEAgcDJtX3B0X2dldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJt LCB1bnNpZ25lZCBsb25nIGdmbiwKICAgICAgICAgaWYgKCAobDRlX2dldF9mbGFncygqbDRlKSAm IF9QQUdFX1BSRVNFTlQpID09IDAgKQogICAgICAgICB7CiAgICAgICAgICAgICB1bm1hcF9kb21h aW5fcGFnZShsNGUpOwotICAgICAgICAgICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOworICAg ICAgICAgICAgcmV0dXJuIElOVkFMSURfTUZOOwogICAgICAgICB9CiAgICAgICAgIG1mbiA9IF9t Zm4obDRlX2dldF9wZm4oKmw0ZSkpOwogICAgICAgICByZWNhbGMgPSBuZWVkc19yZWNhbGMobDQs ICpsNGUpOwpAQCAtODA1LDcgKzgwNSw3IEBAIHBvZF9yZXRyeV9sMzoKICAgICAgICAgICAgICAg ICAgICAgKnQgPSBwMm1fcG9wdWxhdGVfb25fZGVtYW5kOwogICAgICAgICAgICAgfQogICAgICAg ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDNlKTsKLSAgICAgICAgICAgIHJldHVybiBfbWZuKElO VkFMSURfTUZOKTsKKyAgICAgICAgICAgIHJldHVybiBJTlZBTElEX01GTjsKICAgICAgICAgfQog ICAgICAgICBpZiAoIGZsYWdzICYgX1BBR0VfUFNFICkKICAgICAgICAgewpAQCAtODE3LDcgKzgx Nyw3IEBAIHBvZF9yZXRyeV9sMzoKICAgICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwzZSk7 CiAKICAgICAgICAgICAgIEFTU0VSVChtZm5fdmFsaWQobWZuKSB8fCAhcDJtX2lzX3JhbSgqdCkp OwotICAgICAgICAgICAgcmV0dXJuIChwMm1faXNfdmFsaWQoKnQpKSA/IG1mbiA6IF9tZm4oSU5W QUxJRF9NRk4pOworICAgICAgICAgICAgcmV0dXJuIChwMm1faXNfdmFsaWQoKnQpKSA/IG1mbiA6 IElOVkFMSURfTUZOOwogICAgICAgICB9CiAKICAgICAgICAgbWZuID0gX21mbihsM2VfZ2V0X3Bm bigqbDNlKSk7CkBAIC04NDYsNyArODQ2LDcgQEAgcG9kX3JldHJ5X2wyOgogICAgICAgICB9CiAg ICAgCiAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwyZSk7Ci0gICAgICAgIHJldHVybiBfbWZu KElOVkFMSURfTUZOKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfTUZOOwogICAgIH0KICAgICBp ZiAoIGZsYWdzICYgX1BBR0VfUFNFICkKICAgICB7CkBAIC04NTYsNyArODU2LDcgQEAgcG9kX3Jl dHJ5X2wyOgogICAgICAgICB1bm1hcF9kb21haW5fcGFnZShsMmUpOwogICAgICAgICAKICAgICAg ICAgQVNTRVJUKG1mbl92YWxpZChtZm4pIHx8ICFwMm1faXNfcmFtKCp0KSk7Ci0gICAgICAgIHJl dHVybiAocDJtX2lzX3ZhbGlkKCp0KSkgPyBtZm4gOiBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAg ICAgcmV0dXJuIChwMm1faXNfdmFsaWQoKnQpKSA/IG1mbiA6IElOVkFMSURfTUZOOwogICAgIH0K IAogICAgIG1mbiA9IF9tZm4obDJlX2dldF9wZm4oKmwyZSkpOwpAQCAtODg1LDE0ICs4ODUsMTQg QEAgcG9kX3JldHJ5X2wxOgogICAgICAgICB9CiAgICAgCiAgICAgICAgIHVubWFwX2RvbWFpbl9w YWdlKGwxZSk7Ci0gICAgICAgIHJldHVybiBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgcmV0 dXJuIElOVkFMSURfTUZOOwogICAgIH0KICAgICBtZm4gPSBfbWZuKGwxZV9nZXRfcGZuKCpsMWUp KTsKICAgICAqdCA9IHJlY2FsY190eXBlKHJlY2FsYyB8fCBfbmVlZHNfcmVjYWxjKGZsYWdzKSwg bDF0LCBwMm0sIGdmbik7CiAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDFlKTsKIAogICAgIEFTU0VS VChtZm5fdmFsaWQobWZuKSB8fCAhcDJtX2lzX3JhbSgqdCkgfHwgcDJtX2lzX3BhZ2luZygqdCkp OwotICAgIHJldHVybiAocDJtX2lzX3ZhbGlkKCp0KSB8fCBwMm1faXNfZ3JhbnQoKnQpKSA/IG1m biA6IF9tZm4oSU5WQUxJRF9NRk4pOworICAgIHJldHVybiAocDJtX2lzX3ZhbGlkKCp0KSB8fCBw Mm1faXNfZ3JhbnQoKnQpKSA/IG1mbiA6IElOVkFMSURfTUZOOwogfQogCiBzdGF0aWMgdm9pZCBw Mm1fcHRfY2hhbmdlX2VudHJ5X3R5cGVfZ2xvYmFsKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMK aW5kZXggNjI1OGE1Yi4uYjkzYzhhMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5j CisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpAQCAtMzg4LDcgKzM4OCw3IEBAIG1mbl90IF9f Z2V0X2dmbl90eXBlX2FjY2VzcyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25n IGdmbiwKICAgICBpZiAodW5saWtlbHkoKHAybV9pc19icm9rZW4oKnQpKSkpCiAgICAgewogICAg ICAgICAvKiBSZXR1cm4gaW52YWxpZF9tZm4gdG8gYXZvaWQgY2FsbGVyJ3MgYWNjZXNzICovCi0g ICAgICAgIG1mbiA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICBtZm4gPSBJTlZBTElEX01G TjsKICAgICAgICAgaWYgKCBxICYgUDJNX0FMTE9DICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFz aChwMm0tPmRvbWFpbik7CiAgICAgfQpAQCAtNDkzLDggKzQ5Myw4IEBAIGludCBwMm1fc2V0X2Vu dHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4s CiAgICAgICAgICAgICByYyA9IHNldF9yYzsKIAogICAgICAgICBnZm4gKz0gMXVsIDw8IG9yZGVy OwotICAgICAgICBpZiAoIG1mbl94KG1mbikgIT0gSU5WQUxJRF9NRk4gKQotICAgICAgICAgICAg bWZuID0gX21mbihtZm5feChtZm4pICsgKDF1bCA8PCBvcmRlcikpOworICAgICAgICBpZiAoICFt Zm5fZXEobWZuLCBJTlZBTElEX01GTikgKQorICAgICAgICAgICAgbWZuID0gbWZuX2FkZChtZm4s IDF1bCA8PCBvcmRlcik7CiAgICAgICAgIHRvZG8gLT0gMXVsIDw8IG9yZGVyOwogICAgIH0KIApA QCAtNTgwLDcgKzU4MCw3IEBAIGludCBwMm1fYWxsb2NfdGFibGUoc3RydWN0IHAybV9kb21haW4g KnAybSkKIAogICAgIC8qIEluaXRpYWxpc2UgcGh5c21hcCB0YWJsZXMgZm9yIHNsb3QgemVyby4g T3RoZXIgY29kZSBhc3N1bWVzIHRoaXMuICovCiAgICAgcDJtLT5kZWZlcl9uZXN0ZWRfZmx1c2gg PSAxOwotICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIDAsIF9tZm4oSU5WQUxJRF9NRk4pLCBQ QUdFX09SREVSXzRLLAorICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIDAsIElOVkFMSURfTUZO LCBQQUdFX09SREVSXzRLLAogICAgICAgICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJt LT5kZWZhdWx0X2FjY2Vzcyk7CiAgICAgcDJtLT5kZWZlcl9uZXN0ZWRfZmx1c2ggPSAwOwogICAg IHAybV91bmxvY2socDJtKTsKQEAgLTY3MCw3ICs2NzAsNyBAQCBwMm1fcmVtb3ZlX3BhZ2Uoc3Ry dWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZu LAogICAgICAgICAgICAgQVNTRVJUKCAhcDJtX2lzX3ZhbGlkKHQpIHx8IG1mbiArIGkgPT0gbWZu X3gobWZuX3JldHVybikgKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcDJtX3NldF9l bnRyeShwMm0sIGdmbiwgX21mbihJTlZBTElEX01GTiksIHBhZ2Vfb3JkZXIsIHAybV9pbnZhbGlk LAorICAgIHJldHVybiBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBJTlZBTElEX01GTiwgcGFnZV9v cmRlciwgcDJtX2ludmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcDJtLT5kZWZhdWx0 X2FjY2Vzcyk7CiB9CiAKQEAgLTg0MCw3ICs4NDAsNyBAQCBndWVzdF9waHlzbWFwX2FkZF9lbnRy eShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIG1mbl90IG1mbiwKICAgICB7CiAgICAgICAg IGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiQWRkaW5nIGJhZCBtZm4gdG8gcDJtIG1hcCAoJSNs eCAtPiAlI2x4KVxuIiwKICAgICAgICAgICAgICAgICAgZ2ZuX3goZ2ZuKSwgbWZuX3gobWZuKSk7 Ci0gICAgICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbl94KGdmbiksIF9tZm4oSU5WQUxJ RF9NRk4pLCBwYWdlX29yZGVyLAorICAgICAgICByYyA9IHAybV9zZXRfZW50cnkocDJtLCBnZm5f eChnZm4pLCBJTlZBTElEX01GTiwgcGFnZV9vcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHAybV9pbnZhbGlkLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKICAgICAgICAgaWYgKCByYyA9 PSAwICkKICAgICAgICAgewpAQCAtMTEwNyw3ICsxMTA3LDcgQEAgaW50IGNsZWFyX21taW9fcDJt X2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAg ICAgfQogCiAgICAgLyogRG8gbm90IHVzZSBtZm5fdmFsaWQoKSBoZXJlIGFzIGl0IHdpbGwgdXN1 YWxseSBmYWlsIGZvciBNTUlPIHBhZ2VzLiAqLwotICAgIGlmICggKElOVkFMSURfTUZOID09IG1m bl94KGFjdHVhbF9tZm4pKSB8fCAodCAhPSBwMm1fbW1pb19kaXJlY3QpICkKKyAgICBpZiAoIG1m bl9lcShhY3R1YWxfbWZuLCBJTlZBTElEX01GTikgfHwgKHQgIT0gcDJtX21taW9fZGlyZWN0KSAp CiAgICAgewogICAgICAgICBnZHByaW50ayhYRU5MT0dfRVJSLAogICAgICAgICAgICAgICAgICAi Z2ZuX3RvX21mbiBmYWlsZWQhIGdmbj0lMDhseCB0eXBlOiVkXG4iLCBnZm4sIHQpOwpAQCAtMTEx Nyw3ICsxMTE3LDcgQEAgaW50IGNsZWFyX21taW9fcDJtX2VudHJ5KHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19X QVJOSU5HLAogICAgICAgICAgICAgICAgICAibm8gbWFwcGluZyBiZXR3ZWVuIG1mbiAlMDhseCBh bmQgZ2ZuICUwOGx4XG4iLAogICAgICAgICAgICAgICAgICBtZm5feChtZm4pLCBnZm4pOwotICAg IHJjID0gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgX21mbihJTlZBTElEX01GTiksIG9yZGVyLCBw Mm1faW52YWxpZCwKKyAgICByYyA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIElOVkFMSURfTUZO LCBvcmRlciwgcDJtX2ludmFsaWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHAybS0+ZGVmYXVs dF9hY2Nlc3MpOwogCiAgb3V0OgpAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgaW50IGNsZWFyX2lkZW50 aXR5X3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICBt Zm4gPSBwMm0tPmdldF9lbnRyeShwMm0sIGdmbiwgJnAybXQsICZhLCAwLCBOVUxMLCBOVUxMKTsK ICAgICBpZiAoIHAybXQgPT0gcDJtX21taW9fZGlyZWN0ICYmIG1mbl94KG1mbikgPT0gZ2ZuICkK ICAgICB7Ci0gICAgICAgIHJldCA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIF9tZm4oSU5WQUxJ RF9NRk4pLCBQQUdFX09SREVSXzRLLAorICAgICAgICByZXQgPSBwMm1fc2V0X2VudHJ5KHAybSwg Z2ZuLCBJTlZBTElEX01GTiwgUEFHRV9PUkRFUl80SywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwMm1faW52YWxpZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CiAgICAgICAgIGdmbl91bmxv Y2socDJtLCBnZm4sIDApOwogICAgIH0KQEAgLTEzMTYsNyArMTMxNiw3IEBAIGludCBwMm1fbWVt X3BhZ2luZ19ldmljdChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICAg ICAgcHV0X3BhZ2UocGFnZSk7CiAKICAgICAvKiBSZW1vdmUgbWFwcGluZyBmcm9tIHAybSB0YWJs ZSAqLwotICAgIHJldCA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIF9tZm4oSU5WQUxJRF9NRk4p LCBQQUdFX09SREVSXzRLLAorICAgIHJldCA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIElOVkFM SURfTUZOLCBQQUdFX09SREVSXzRLLAogICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3JhbV9w YWdlZCwgYSk7CiAKICAgICAvKiBDbGVhciBjb250ZW50IGJlZm9yZSByZXR1cm5pbmcgdGhlIHBh Z2UgdG8gWGVuICovCkBAIC0xODQ0LDcgKzE4NDQsNyBAQCBsb25nIHAybV9zZXRfbWVtX2FjY2Vz cyhzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sIHVpbnQzMl90IG5yLAogICAgIGlmICggYWx0 cDJtX2lkeCApCiAgICAgewogICAgICAgICBpZiAoIGFsdHAybV9pZHggPj0gTUFYX0FMVFAyTSB8 fAotICAgICAgICAgICAgIGQtPmFyY2guYWx0cDJtX2VwdHBbYWx0cDJtX2lkeF0gPT0gSU5WQUxJ RF9NRk4gKQorICAgICAgICAgICAgIGQtPmFyY2guYWx0cDJtX2VwdHBbYWx0cDJtX2lkeF0gPT0g bWZuX3goSU5WQUxJRF9NRk4pICkKICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCiAgICAg ICAgIGFwMm0gPSBkLT5hcmNoLmFsdHAybV9wMm1bYWx0cDJtX2lkeF07CkBAIC0xOTQyLDcgKzE5 NDIsNyBAQCBpbnQgcDJtX2dldF9tZW1fYWNjZXNzKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdm biwgeGVubWVtX2FjY2Vzc190ICphY2Nlc3MpCiAgICAgbWZuID0gcDJtLT5nZXRfZW50cnkocDJt LCBnZm5feChnZm4pLCAmdCwgJmEsIDAsIE5VTEwsIE5VTEwpOwogICAgIGdmbl91bmxvY2socDJt LCBnZm4sIDApOwogCi0gICAgaWYgKCBtZm5feChtZm4pID09IElOVkFMSURfTUZOICkKKyAgICBp ZiAoIG1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCiAgICAgICAgIHJldHVybiAtRVNSQ0g7CiAg ICAgCiAgICAgaWYgKCAodW5zaWduZWQpIGEgPj0gQVJSQVlfU0laRShtZW1hY2Nlc3MpICkKQEAg LTIyODgsNyArMjI4OCw3IEBAIHVuc2lnbmVkIGludCBwMm1fZmluZF9hbHRwMm1fYnlfZXB0cChz dHJ1Y3QgZG9tYWluICpkLCB1aW50NjRfdCBlcHRwKQogCiAgICAgZm9yICggaSA9IDA7IGkgPCBN QVhfQUxUUDJNOyBpKysgKQogICAgIHsKLSAgICAgICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRw W2ldID09IElOVkFMSURfTUZOICkKKyAgICAgICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2ld ID09IG1mbl94KElOVkFMSURfTUZOKSApCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg ICBwMm0gPSBkLT5hcmNoLmFsdHAybV9wMm1baV07CkBAIC0yMzE1LDcgKzIzMTUsNyBAQCBib29s X3QgcDJtX3N3aXRjaF92Y3B1X2FsdHAybV9ieV9pZChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQg aW50IGlkeCkKIAogICAgIGFsdHAybV9saXN0X2xvY2soZCk7CiAKLSAgICBpZiAoIGQtPmFyY2gu YWx0cDJtX2VwdHBbaWR4XSAhPSBJTlZBTElEX01GTiApCisgICAgaWYgKCBkLT5hcmNoLmFsdHAy bV9lcHRwW2lkeF0gIT0gbWZuX3goSU5WQUxJRF9NRk4pICkKICAgICB7CiAgICAgICAgIGlmICgg aWR4ICE9IHZjcHVfYWx0cDJtKHYpLnAybWlkeCApCiAgICAgICAgIHsKQEAgLTIzNTksMTQgKzIz NTksMTQgQEAgYm9vbF90IHAybV9hbHRwMm1fbGF6eV9jb3B5KHN0cnVjdCB2Y3B1ICp2LCBwYWRk cl90IGdwYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICZwYWdlX29yZGVyKTsK ICAgICBfX3B1dF9nZm4oKmFwMm0sIGdmbl94KGdmbikpOwogCi0gICAgaWYgKCBtZm5feChtZm4p ICE9IElOVkFMSURfTUZOICkKKyAgICBpZiAoICFtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQog ICAgICAgICByZXR1cm4gMDsKIAogICAgIG1mbiA9IGdldF9nZm5fdHlwZV9hY2Nlc3MoaHAybSwg Z2ZuX3goZ2ZuKSwgJnAybXQsICZwMm1hLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UDJNX0FMTE9DIHwgUDJNX1VOU0hBUkUsICZwYWdlX29yZGVyKTsKICAgICBfX3B1dF9nZm4oaHAy bSwgZ2ZuX3goZ2ZuKSk7CiAKLSAgICBpZiAoIG1mbl94KG1mbikgPT0gSU5WQUxJRF9NRk4gKQor ICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgcmV0dXJuIDA7CiAK ICAgICBwMm1fbG9jaygqYXAybSk7CkBAIC0yNDA0LDcgKzI0MDQsNyBAQCB2b2lkIHAybV9mbHVz aF9hbHRwMm0oc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgLyogVW5pbml0IGFuZCByZWluaXQg ZXB0IHRvIGZvcmNlIFRMQiBzaG9vdGRvd24gKi8KICAgICAgICAgZXB0X3AybV91bmluaXQoZC0+ YXJjaC5hbHRwMm1fcDJtW2ldKTsKICAgICAgICAgZXB0X3AybV9pbml0KGQtPmFyY2guYWx0cDJt X3AybVtpXSk7Ci0gICAgICAgIGQtPmFyY2guYWx0cDJtX2VwdHBbaV0gPSBJTlZBTElEX01GTjsK KyAgICAgICAgZC0+YXJjaC5hbHRwMm1fZXB0cFtpXSA9IG1mbl94KElOVkFMSURfTUZOKTsKICAg ICB9CiAKICAgICBhbHRwMm1fbGlzdF91bmxvY2soZCk7CkBAIC0yNDMxLDcgKzI0MzEsNyBAQCBp bnQgcDJtX2luaXRfYWx0cDJtX2J5X2lkKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBp ZHgpCiAKICAgICBhbHRwMm1fbGlzdF9sb2NrKGQpOwogCi0gICAgaWYgKCBkLT5hcmNoLmFsdHAy bV9lcHRwW2lkeF0gPT0gSU5WQUxJRF9NRk4gKQorICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0 cFtpZHhdID09IG1mbl94KElOVkFMSURfTUZOKSApCiAgICAgewogICAgICAgICBwMm1faW5pdF9h bHRwMm1faGVscGVyKGQsIGlkeCk7CiAgICAgICAgIHJjID0gMDsKQEAgLTI0NTAsNyArMjQ1MCw3 IEBAIGludCBwMm1faW5pdF9uZXh0X2FsdHAybShzdHJ1Y3QgZG9tYWluICpkLCB1aW50MTZfdCAq aWR4KQogCiAgICAgZm9yICggaSA9IDA7IGkgPCBNQVhfQUxUUDJNOyBpKysgKQogICAgIHsKLSAg ICAgICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2ldICE9IElOVkFMSURfTUZOICkKKyAgICAg ICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2ldICE9IG1mbl94KElOVkFMSURfTUZOKSApCiAg ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBwMm1faW5pdF9hbHRwMm1faGVscGVyKGQs IGkpOwpAQCAtMjQ3Niw3ICsyNDc2LDcgQEAgaW50IHAybV9kZXN0cm95X2FsdHAybV9ieV9pZChz dHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25lZCBpbnQgaWR4KQogCiAgICAgYWx0cDJtX2xpc3RfbG9j ayhkKTsKIAotICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdICE9IElOVkFMSURfTUZO ICkKKyAgICBpZiAoIGQtPmFyY2guYWx0cDJtX2VwdHBbaWR4XSAhPSBtZm5feChJTlZBTElEX01G TikgKQogICAgIHsKICAgICAgICAgcDJtID0gZC0+YXJjaC5hbHRwMm1fcDJtW2lkeF07CiAKQEAg LTI0ODYsNyArMjQ4Niw3IEBAIGludCBwMm1fZGVzdHJveV9hbHRwMm1fYnlfaWQoc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgaW50IGlkeCkKICAgICAgICAgICAgIC8qIFVuaW5pdCBhbmQgcmVp bml0IGVwdCB0byBmb3JjZSBUTEIgc2hvb3Rkb3duICovCiAgICAgICAgICAgICBlcHRfcDJtX3Vu aW5pdChkLT5hcmNoLmFsdHAybV9wMm1baWR4XSk7CiAgICAgICAgICAgICBlcHRfcDJtX2luaXQo ZC0+YXJjaC5hbHRwMm1fcDJtW2lkeF0pOwotICAgICAgICAgICAgZC0+YXJjaC5hbHRwMm1fZXB0 cFtpZHhdID0gSU5WQUxJRF9NRk47CisgICAgICAgICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2lk eF0gPSBtZm5feChJTlZBTElEX01GTik7CiAgICAgICAgICAgICByYyA9IDA7CiAgICAgICAgIH0K ICAgICB9CkBAIC0yNTEwLDcgKzI1MTAsNyBAQCBpbnQgcDJtX3N3aXRjaF9kb21haW5fYWx0cDJt X2J5X2lkKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgpCiAKICAgICBhbHRwMm1f bGlzdF9sb2NrKGQpOwogCi0gICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2lkeF0gIT0gSU5W QUxJRF9NRk4gKQorICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdICE9IG1mbl94KElO VkFMSURfTUZOKSApCiAgICAgewogICAgICAgICBmb3JfZWFjaF92Y3B1KCBkLCB2ICkKICAgICAg ICAgICAgIGlmICggaWR4ICE9IHZjcHVfYWx0cDJtKHYpLnAybWlkeCApCkBAIC0yNTQxLDcgKzI1 NDEsNyBAQCBpbnQgcDJtX2NoYW5nZV9hbHRwMm1fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2ln bmVkIGludCBpZHgsCiAgICAgdW5zaWduZWQgaW50IHBhZ2Vfb3JkZXI7CiAgICAgaW50IHJjID0g LUVJTlZBTDsKIAotICAgIGlmICggaWR4ID49IE1BWF9BTFRQMk0gfHwgZC0+YXJjaC5hbHRwMm1f ZXB0cFtpZHhdID09IElOVkFMSURfTUZOICkKKyAgICBpZiAoIGlkeCA+PSBNQVhfQUxUUDJNIHx8 IGQtPmFyY2guYWx0cDJtX2VwdHBbaWR4XSA9PSBtZm5feChJTlZBTElEX01GTikgKQogICAgICAg ICByZXR1cm4gcmM7CiAKICAgICBocDJtID0gcDJtX2dldF9ob3N0cDJtKGQpOwpAQCAtMjYzNiwx NCArMjYzNiwxNCBAQCB2b2lkIHAybV9hbHRwMm1fcHJvcGFnYXRlX2NoYW5nZShzdHJ1Y3QgZG9t YWluICpkLCBnZm5fdCBnZm4sCiAKICAgICBmb3IgKCBpID0gMDsgaSA8IE1BWF9BTFRQMk07IGkr KyApCiAgICAgewotICAgICAgICBpZiAoIGQtPmFyY2guYWx0cDJtX2VwdHBbaV0gPT0gSU5WQUxJ RF9NRk4gKQorICAgICAgICBpZiAoIGQtPmFyY2guYWx0cDJtX2VwdHBbaV0gPT0gbWZuX3goSU5W QUxJRF9NRk4pICkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHAybSA9IGQtPmFy Y2guYWx0cDJtX3AybVtpXTsKICAgICAgICAgbSA9IGdldF9nZm5fdHlwZV9hY2Nlc3MocDJtLCBn Zm5feChnZm4pLCAmdCwgJmEsIDAsIE5VTEwpOwogCiAgICAgICAgIC8qIENoZWNrIGZvciBhIGRy b3BwZWQgcGFnZSB0aGF0IG1heSBpbXBhY3QgdGhpcyBhbHRwMm0gKi8KLSAgICAgICAgaWYgKCBt Zm5feChtZm4pID09IElOVkFMSURfTUZOICYmCisgICAgICAgIGlmICggbWZuX2VxKG1mbiwgSU5W QUxJRF9NRk4pICYmCiAgICAgICAgICAgICAgZ2ZuX3goZ2ZuKSA+PSBwMm0tPm1pbl9yZW1hcHBl ZF9nZm4gJiYKICAgICAgICAgICAgICBnZm5feChnZm4pIDw9IHAybS0+bWF4X3JlbWFwcGVkX2dm biApCiAgICAgICAgIHsKQEAgLTI2NjAsNyArMjY2MCw3IEBAIHZvaWQgcDJtX2FsdHAybV9wcm9w YWdhdGVfY2hhbmdlKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwKICAgICAgICAgICAgICAg ICBmb3IgKCBpID0gMDsgaSA8IE1BWF9BTFRQMk07IGkrKyApCiAgICAgICAgICAgICAgICAgewog ICAgICAgICAgICAgICAgICAgICBpZiAoIGkgPT0gbGFzdF9yZXNldF9pZHggfHwKLSAgICAgICAg ICAgICAgICAgICAgICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID09IElOVkFMSURfTUZOICkK KyAgICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID09IG1mbl94 KElOVkFMSURfTUZOKSApCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg ICAgICAgICAgICAgICAgICBwMm0gPSBkLT5hcmNoLmFsdHAybV9wMm1baV07CkBAIC0yNjcyLDcg KzI2NzIsNyBAQCB2b2lkIHAybV9hbHRwMm1fcHJvcGFnYXRlX2NoYW5nZShzdHJ1Y3QgZG9tYWlu ICpkLCBnZm5fdCBnZm4sCiAgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICB9 CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIG1mbl94KG0pICE9IElOVkFMSURfTUZOICkK KyAgICAgICAgZWxzZSBpZiAoICFtZm5fZXEobSwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgICAg IHAybV9zZXRfZW50cnkocDJtLCBnZm5feChnZm4pLCBtZm4sIHBhZ2Vfb3JkZXIsIHAybXQsIHAy bWEpOwogCiAgICAgICAgIF9fcHV0X2dmbihwMm0sIGdmbl94KGdmbikpOwpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L21tL3BhZ2luZy5jIGIveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCmluZGV4 IDgyMTliYjYuLjEwN2ZjOGMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYwor KysgYi94ZW4vYXJjaC94ODYvbW0vcGFnaW5nLmMKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIG1m bl90IHBhZ2luZ19uZXdfbG9nX2RpcnR5X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCkKICAgICBpZiAo IHVubGlrZWx5KHBhZ2UgPT0gTlVMTCkgKQogICAgIHsKICAgICAgICAgZC0+YXJjaC5wYWdpbmcu bG9nX2RpcnR5LmZhaWxlZF9hbGxvY3MrKzsKLSAgICAgICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9N Rk4pOworICAgICAgICByZXR1cm4gSU5WQUxJRF9NRk47CiAgICAgfQogCiAgICAgZC0+YXJjaC5w YWdpbmcubG9nX2RpcnR5LmFsbG9jcysrOwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgbWZuX3Qg cGFnaW5nX25ld19sb2dfZGlydHlfbm9kZShzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBpbnQg aTsKICAgICAgICAgbWZuX3QgKm5vZGUgPSBtYXBfZG9tYWluX3BhZ2UobWZuKTsKICAgICAgICAg Zm9yICggaSA9IDA7IGkgPCBMT0dESVJUWV9OT0RFX0VOVFJJRVM7IGkrKyApCi0gICAgICAgICAg ICBub2RlW2ldID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgICAgICBub2RlW2ldID0gSU5W QUxJRF9NRk47CiAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKG5vZGUpOwogICAgIH0KICAgICBy ZXR1cm4gbWZuOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBpbnQgcGFnaW5nX2ZyZWVfbG9n X2RpcnR5X2JpdG1hcChzdHJ1Y3QgZG9tYWluICpkLCBpbnQgcmMpCiAKICAgICAgICAgICAgIHVu bWFwX2RvbWFpbl9wYWdlKGwyKTsKICAgICAgICAgICAgIHBhZ2luZ19mcmVlX2xvZ19kaXJ0eV9w YWdlKGQsIGwzW2kzXSk7Ci0gICAgICAgICAgICBsM1tpM10gPSBfbWZuKElOVkFMSURfTUZOKTsK KyAgICAgICAgICAgIGwzW2kzXSA9IElOVkFMSURfTUZOOwogCiAgICAgICAgICAgICBpZiAoIGkz IDwgTE9HRElSVFlfTk9ERV9FTlRSSUVTIC0gMSAmJiBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygp ICkKICAgICAgICAgICAgIHsKQEAgLTE4Miw3ICsxODIsNyBAQCBzdGF0aWMgaW50IHBhZ2luZ19m cmVlX2xvZ19kaXJ0eV9iaXRtYXAoc3RydWN0IGRvbWFpbiAqZCwgaW50IHJjKQogICAgICAgICBp ZiAoIHJjICkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBwYWdpbmdfZnJlZV9sb2dfZGly dHlfcGFnZShkLCBsNFtpNF0pOwotICAgICAgICBsNFtpNF0gPSBfbWZuKElOVkFMSURfTUZOKTsK KyAgICAgICAgbDRbaTRdID0gSU5WQUxJRF9NRk47CiAKICAgICAgICAgaWYgKCBpNCA8IExPR0RJ UlRZX05PREVfRU5UUklFUyAtIDEgJiYgaHlwZXJjYWxsX3ByZWVtcHRfY2hlY2soKSApCiAgICAg ICAgIHsKQEAgLTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMgaW50IHBhZ2luZ19mcmVlX2xvZ19kaXJ0 eV9iaXRtYXAoc3RydWN0IGRvbWFpbiAqZCwgaW50IHJjKQogICAgIGlmICggIXJjICkKICAgICB7 CiAgICAgICAgIHBhZ2luZ19mcmVlX2xvZ19kaXJ0eV9wYWdlKGQsIGQtPmFyY2gucGFnaW5nLmxv Z19kaXJ0eS50b3ApOwotICAgICAgICBkLT5hcmNoLnBhZ2luZy5sb2dfZGlydHkudG9wID0gX21m bihJTlZBTElEX01GTik7CisgICAgICAgIGQtPmFyY2gucGFnaW5nLmxvZ19kaXJ0eS50b3AgPSBJ TlZBTElEX01GTjsKIAogICAgICAgICBBU1NFUlQoZC0+YXJjaC5wYWdpbmcubG9nX2RpcnR5LmFs bG9jcyA9PSAwKTsKICAgICAgICAgZC0+YXJjaC5wYWdpbmcubG9nX2RpcnR5LmZhaWxlZF9hbGxv Y3MgPSAwOwpAQCAtNjYwLDcgKzY2MCw3IEBAIGludCBwYWdpbmdfZG9tYWluX2luaXQoc3RydWN0 IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGRvbWNyX2ZsYWdzKQogICAgIC8qIFRoaXMgbXVzdCBi ZSBpbml0aWFsaXplZCBzZXBhcmF0ZWx5IGZyb20gdGhlIHJlc3Qgb2YgdGhlCiAgICAgICogbG9n LWRpcnR5IGluaXQgY29kZSBhcyB0aGF0IGNhbiBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgYW5k IHdlCiAgICAgICogZG9uJ3Qgd2FudCB0byBsZWFrIGFueSBhY3RpdmUgbG9nLWRpcnR5IGJpdG1h cHMgKi8KLSAgICBkLT5hcmNoLnBhZ2luZy5sb2dfZGlydHkudG9wID0gX21mbihJTlZBTElEX01G Tik7CisgICAgZC0+YXJjaC5wYWdpbmcubG9nX2RpcnR5LnRvcCA9IElOVkFMSURfTUZOOwogCiAg ICAgLyoKICAgICAgKiBTaGFkb3cgcGFnZXRhYmxlcyBhcmUgdGhlIGRlZmF1bHQsIGJ1dCB3ZSB3 aWxsIHVzZQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyBiL3hl bi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29tbW9uLmMKaW5kZXggMjI2ZTMyZC4uMWMwYjZjZCAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYworKysgYi94ZW4vYXJjaC94 ODYvbW0vc2hhZG93L2NvbW1vbi5jCkBAIC04OCwxMCArODgsMTAgQEAgdm9pZCBzaGFkb3dfdmNw dV9pbml0KHN0cnVjdCB2Y3B1ICp2KQogCiAgICAgZm9yICggaSA9IDA7IGkgPCBTSEFET1dfT09T X1BBR0VTOyBpKysgKQogICAgIHsKLSAgICAgICAgdi0+YXJjaC5wYWdpbmcuc2hhZG93Lm9vc1tp XSA9IF9tZm4oSU5WQUxJRF9NRk4pOwotICAgICAgICB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29z X3NuYXBzaG90W2ldID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgIHYtPmFyY2gucGFnaW5n LnNoYWRvdy5vb3NbaV0gPSBJTlZBTElEX01GTjsKKyAgICAgICAgdi0+YXJjaC5wYWdpbmcuc2hh ZG93Lm9vc19zbmFwc2hvdFtpXSA9IElOVkFMSURfTUZOOwogICAgICAgICBmb3IgKCBqID0gMDsg aiA8IFNIQURPV19PT1NfRklYVVBTOyBqKysgKQotICAgICAgICAgICAgdi0+YXJjaC5wYWdpbmcu c2hhZG93Lm9vc19maXh1cFtpXS5zbWZuW2pdID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAg ICAgICB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zX2ZpeHVwW2ldLnNtZm5bal0gPSBJTlZBTElE X01GTjsKICAgICB9CiAjZW5kaWYKIApAQCAtNTkzLDEyICs1OTMsMTIgQEAgc3RhdGljIGlubGlu ZSBpbnQgb29zX2ZpeHVwX2ZsdXNoX2dtZm4oc3RydWN0IHZjcHUgKnYsIG1mbl90IGdtZm4sCiAg ICAgaW50IGk7CiAgICAgZm9yICggaSA9IDA7IGkgPCBTSEFET1dfT09TX0ZJWFVQUzsgaSsrICkK ICAgICB7Ci0gICAgICAgIGlmICggbWZuX3goZml4dXAtPnNtZm5baV0pICE9IElOVkFMSURfTUZO ICkKKyAgICAgICAgaWYgKCAhbWZuX2VxKGZpeHVwLT5zbWZuW2ldLCBJTlZBTElEX01GTikgKQog ICAgICAgICB7CiAgICAgICAgICAgICBzaF9yZW1vdmVfd3JpdGVfYWNjZXNzX2Zyb21fc2wxcChk LCBnbWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4 dXAtPnNtZm5baV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmaXh1cC0+b2ZmW2ldKTsKLSAgICAgICAgICAgIGZpeHVwLT5zbWZuW2ldID0gX21mbihJTlZB TElEX01GTik7CisgICAgICAgICAgICBmaXh1cC0+c21mbltpXSA9IElOVkFMSURfTUZOOwogICAg ICAgICB9CiAgICAgfQogCkBAIC02MzYsNyArNjM2LDcgQEAgdm9pZCBvb3NfZml4dXBfYWRkKHN0 cnVjdCBkb21haW4gKmQsIG1mbl90IGdtZm4sCiAKICAgICAgICAgICAgIG5leHQgPSBvb3NfZml4 dXBbaWR4XS5uZXh0OwogCi0gICAgICAgICAgICBpZiAoIG1mbl94KG9vc19maXh1cFtpZHhdLnNt Zm5bbmV4dF0pICE9IElOVkFMSURfTUZOICkKKyAgICAgICAgICAgIGlmICggIW1mbl9lcShvb3Nf Zml4dXBbaWR4XS5zbWZuW25leHRdLCBJTlZBTElEX01GTikgKQogICAgICAgICAgICAgewogICAg ICAgICAgICAgICAgIFRSQUNFX1NIQURPV19QQVRIX0ZMQUcoVFJDRV9TRkxBR19PT1NfRklYVVBf RVZJQ1QpOwogCkBAIC03NTcsNyArNzU3LDcgQEAgc3RhdGljIHZvaWQgb29zX2hhc2hfYWRkKHN0 cnVjdCB2Y3B1ICp2LCBtZm5fdCBnbWZuKQogICAgIHN0cnVjdCBvb3NfZml4dXAgZml4dXAgPSB7 IC5uZXh0ID0gMCB9OwogCiAgICAgZm9yIChpID0gMDsgaSA8IFNIQURPV19PT1NfRklYVVBTOyBp KysgKQotICAgICAgICBmaXh1cC5zbWZuW2ldID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAg IGZpeHVwLnNtZm5baV0gPSBJTlZBTElEX01GTjsKIAogICAgIGlkeCA9IG1mbl94KGdtZm4pICUg U0hBRE9XX09PU19QQUdFUzsKICAgICBvaWR4ID0gaWR4OwpAQCAtODA3LDcgKzgwNyw3IEBAIHN0 YXRpYyB2b2lkIG9vc19oYXNoX3JlbW92ZShzdHJ1Y3QgZG9tYWluICpkLCBtZm5fdCBnbWZuKQog ICAgICAgICAgICAgaWR4ID0gKGlkeCArIDEpICUgU0hBRE9XX09PU19QQUdFUzsKICAgICAgICAg aWYgKCBtZm5feChvb3NbaWR4XSkgPT0gbWZuX3goZ21mbikgKQogICAgICAgICB7Ci0gICAgICAg ICAgICBvb3NbaWR4XSA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgb29zW2lkeF0g PSBJTlZBTElEX01GTjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAg LTgzOCw3ICs4MzgsNiBAQCBtZm5fdCBvb3Nfc25hcHNob3RfbG9va3VwKHN0cnVjdCBkb21haW4g KmQsIG1mbl90IGdtZm4pCiAKICAgICBTSEFET1dfRVJST1IoImdtZm4gJWx4IHdhcyBPT1MgYnV0 IG5vdCBpbiBoYXNoIHRhYmxlXG4iLCBtZm5feChnbWZuKSk7CiAgICAgQlVHKCk7Ci0gICAgcmV0 dXJuIF9tZm4oSU5WQUxJRF9NRk4pOwogfQogCiAvKiBQdWxsIGEgc2luZ2xlIGd1ZXN0IHBhZ2Ug YmFjayBpbnRvIHN5bmMgKi8KQEAgLTg2Miw3ICs4NjEsNyBAQCB2b2lkIHNoX3Jlc3luYyhzdHJ1 Y3QgZG9tYWluICpkLCBtZm5fdCBnbWZuKQogICAgICAgICBpZiAoIG1mbl94KG9vc1tpZHhdKSA9 PSBtZm5feChnbWZuKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIF9zaF9yZXN5bmModiwgZ21m biwgJm9vc19maXh1cFtpZHhdLCBvb3Nfc25hcHNob3RbaWR4XSk7Ci0gICAgICAgICAgICBvb3Nb aWR4XSA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgb29zW2lkeF0gPSBJTlZBTElE X01GTjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTkxNCw3ICs5 MTMsNyBAQCB2b2lkIHNoX3Jlc3luY19hbGwoc3RydWN0IHZjcHUgKnYsIGludCBza2lwLCBpbnQg dGhpcywgaW50IG90aGVycykKICAgICAgICAgewogICAgICAgICAgICAgLyogV3JpdGUtcHJvdGVj dCBhbmQgc3luYyBjb250ZW50cyAqLwogICAgICAgICAgICAgX3NoX3Jlc3luYyh2LCBvb3NbaWR4 XSwgJm9vc19maXh1cFtpZHhdLCBvb3Nfc25hcHNob3RbaWR4XSk7Ci0gICAgICAgICAgICBvb3Nb aWR4XSA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgb29zW2lkeF0gPSBJTlZBTElE X01GTjsKICAgICAgICAgfQogCiAgcmVzeW5jX290aGVyczoKQEAgLTk0OCw3ICs5NDcsNyBAQCB2 b2lkIHNoX3Jlc3luY19hbGwoc3RydWN0IHZjcHUgKnYsIGludCBza2lwLCBpbnQgdGhpcywgaW50 IG90aGVycykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvKiBXcml0ZS1wcm90ZWN0 IGFuZCBzeW5jIGNvbnRlbnRzICovCiAgICAgICAgICAgICAgICAgX3NoX3Jlc3luYyhvdGhlciwg b29zW2lkeF0sICZvb3NfZml4dXBbaWR4XSwgb29zX3NuYXBzaG90W2lkeF0pOwotICAgICAgICAg ICAgICAgIG9vc1tpZHhdID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgICAgICAgICAgb29z W2lkeF0gPSBJTlZBTElEX01GTjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAg LTE3ODQsNyArMTc4Myw3IEBAIHZvaWQgKnNoX2VtdWxhdGVfbWFwX2Rlc3Qoc3RydWN0IHZjcHUg KnYsIHVuc2lnbmVkIGxvbmcgdmFkZHIsCiAgICAgaWYgKCBsaWtlbHkoKCh2YWRkciArIGJ5dGVz IC0gMSkgJiBQQUdFX01BU0spID09ICh2YWRkciAmIFBBR0VfTUFTSykpICkKICAgICB7CiAgICAg ICAgIC8qIFdob2xlIHdyaXRlIGZpdHMgb24gYSBzaW5nbGUgcGFnZS4gKi8KLSAgICAgICAgc2hf Y3R4dC0+bWZuWzFdID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgIHNoX2N0eHQtPm1mblsx XSA9IElOVkFMSURfTUZOOwogICAgICAgICBtYXAgPSBtYXBfZG9tYWluX3BhZ2Uoc2hfY3R4dC0+ bWZuWzBdKSArICh2YWRkciAmIH5QQUdFX01BU0spOwogICAgIH0KICAgICBlbHNlIGlmICggIWlz X2h2bV9kb21haW4oZCkgKQpAQCAtMjA4Niw3ICsyMDg1LDcgQEAgbWZuX3Qgc2hhZG93X2hhc2hf bG9va3VwKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgbiwgdW5zaWduZWQgaW50IHQp CiAgICAgfQogCiAgICAgcGVyZmNfaW5jcihzaGFkb3dfaGFzaF9sb29rdXBfbWlzcyk7Ci0gICAg cmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOworICAgIHJldHVybiBJTlZBTElEX01GTjsKIH0KIAog dm9pZCBzaGFkb3dfaGFzaF9pbnNlcnQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBu LCB1bnNpZ25lZCBpbnQgdCwKQEAgLTI5MTAsNyArMjkwOSw3IEBAIHZvaWQgc2hfcmVzZXRfbDNf dXBfcG9pbnRlcnMoc3RydWN0IHZjcHUgKnYpCiAgICAgfTsKICAgICBzdGF0aWMgY29uc3QgdW5z aWduZWQgaW50IGNhbGxiYWNrX21hc2sgPSBTSEZfTDNfNjQ7CiAKLSAgICBoYXNoX3ZjcHVfZm9y ZWFjaCh2LCBjYWxsYmFja19tYXNrLCBjYWxsYmFja3MsIF9tZm4oSU5WQUxJRF9NRk4pKTsKKyAg ICBoYXNoX3ZjcHVfZm9yZWFjaCh2LCBjYWxsYmFja19tYXNrLCBjYWxsYmFja3MsIElOVkFMSURf TUZOKTsKIH0KIAogCkBAIC0yOTQwLDcgKzI5MzksNyBAQCBzdGF0aWMgdm9pZCBzaF91cGRhdGVf cGFnaW5nX21vZGVzKHN0cnVjdCB2Y3B1ICp2KQogI2VuZGlmIC8qIChTSEFET1dfT1BUSU1JWkFU SU9OUyAmIFNIT1BUX1ZJUlRVQUxfVExCKSAqLwogCiAjaWYgKFNIQURPV19PUFRJTUlaQVRJT05T ICYgU0hPUFRfT1VUX09GX1NZTkMpCi0gICAgaWYgKCBtZm5feCh2LT5hcmNoLnBhZ2luZy5zaGFk b3cub29zX3NuYXBzaG90WzBdKSA9PSBJTlZBTElEX01GTiApCisgICAgaWYgKCBtZm5fZXEodi0+ YXJjaC5wYWdpbmcuc2hhZG93Lm9vc19zbmFwc2hvdFswXSwgSU5WQUxJRF9NRk4pICkKICAgICB7 CiAgICAgICAgIGludCBpOwogICAgICAgICBmb3IoaSA9IDA7IGkgPCBTSEFET1dfT09TX1BBR0VT OyBpKyspCkBAIC0zMjg0LDcgKzMyODMsNyBAQCB2b2lkIHNoYWRvd190ZWFyZG93bihzdHJ1Y3Qg ZG9tYWluICpkLCBpbnQgKnByZWVtcHRlZCkKICAgICAgICAgICAgICAgICBpZiAoIG1mbl92YWxp ZChvb3Nfc25hcHNob3RbaV0pICkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg ICAgIHNoYWRvd19mcmVlKGQsIG9vc19zbmFwc2hvdFtpXSk7Ci0gICAgICAgICAgICAgICAgICAg IG9vc19zbmFwc2hvdFtpXSA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgICAgICAg ICBvb3Nfc25hcHNob3RbaV0gPSBJTlZBTElEX01GTjsKICAgICAgICAgICAgICAgICB9CiAgICAg ICAgIH0KICNlbmRpZiAvKiBPT1MgKi8KQEAgLTM0NDksNyArMzQ0OCw3IEBAIHN0YXRpYyBpbnQg c2hhZG93X29uZV9iaXRfZGlzYWJsZShzdHJ1Y3QgZG9tYWluICpkLCB1MzIgbW9kZSkKICAgICAg ICAgICAgICAgICAgICAgaWYgKCBtZm5fdmFsaWQob29zX3NuYXBzaG90W2ldKSApCiAgICAgICAg ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd19mcmVlKGQsIG9v c19zbmFwc2hvdFtpXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvb3Nfc25hcHNob3RbaV0g PSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9vc19zbmFwc2hv dFtpXSA9IElOVkFMSURfTUZOOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9 CiAjZW5kaWYgLyogT09TICovCkBAIC0zNzQ0LDcgKzM3NDMsNyBAQCBpbnQgc2hhZG93X3RyYWNr X2RpcnR5X3ZyYW0oc3RydWN0IGRvbWFpbiAqZCwKICAgICAgICAgbWVtY3B5KGRpcnR5X2JpdG1h cCwgZGlydHlfdnJhbS0+ZGlydHlfYml0bWFwLCBkaXJ0eV9zaXplKTsKICAgICBlbHNlCiAgICAg ewotICAgICAgICB1bnNpZ25lZCBsb25nIG1hcF9tZm4gPSBJTlZBTElEX01GTjsKKyAgICAgICAg dW5zaWduZWQgbG9uZyBtYXBfbWZuID0gbWZuX3goSU5WQUxJRF9NRk4pOwogICAgICAgICB2b2lk ICptYXBfc2wxcCA9IE5VTEw7CiAKICAgICAgICAgLyogSXRlcmF0ZSBvdmVyIFZSQU0gdG8gdHJh Y2sgZGlydHkgYml0cy4gKi8KQEAgLTM3NTQsNyArMzc1Myw3IEBAIGludCBzaGFkb3dfdHJhY2tf ZGlydHlfdnJhbShzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICAgICAgaW50IGRpcnR5ID0gMDsK ICAgICAgICAgICAgIHBhZGRyX3Qgc2wxbWEgPSBkaXJ0eV92cmFtLT5zbDFtYVtpXTsKIAotICAg ICAgICAgICAgaWYgKG1mbl94KG1mbikgPT0gSU5WQUxJRF9NRk4pCisgICAgICAgICAgICBpZiAo ICFtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQogICAgICAgICAgICAgewogICAgICAgICAgICAg ICAgIGRpcnR5ID0gMTsKICAgICAgICAgICAgIH0KQEAgLTM4MzAsNyArMzgyOSw3IEBAIGludCBz aGFkb3dfdHJhY2tfZGlydHlfdnJhbShzdHJ1Y3QgZG9tYWluICpkLAogICAgICAgICAgICAgZm9y ICggaSA9IGJlZ2luX3BmbjsgaSA8IGVuZF9wZm47IGkrKyApCiAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgbWZuX3QgbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBpLCAmdCk7 Ci0gICAgICAgICAgICAgICAgaWYgKCBtZm5feChtZm4pICE9IElOVkFMSURfTUZOICkKKyAgICAg ICAgICAgICAgICBpZiAoICFtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQogICAgICAgICAgICAg ICAgICAgICBmbHVzaF90bGIgfD0gc2hfcmVtb3ZlX3dyaXRlX2FjY2VzcyhkLCBtZm4sIDEsIDAp OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZGlydHlfdnJhbS0+bGFzdF9kaXJ0eSA9IC0x OwpAQCAtMzk2OCw3ICszOTY3LDcgQEAgdm9pZCBzaGFkb3dfYXVkaXRfdGFibGVzKHN0cnVjdCB2 Y3B1ICp2KQogICAgICAgICB9CiAgICAgfQogCi0gICAgaGFzaF92Y3B1X2ZvcmVhY2godiwgbWFz aywgY2FsbGJhY2tzLCBfbWZuKElOVkFMSURfTUZOKSk7CisgICAgaGFzaF92Y3B1X2ZvcmVhY2go diwgbWFzaywgY2FsbGJhY2tzLCBJTlZBTElEX01GTl9UKTsKIH0KIAogI2VuZGlmIC8qIFNoYWRv dyBhdWRpdCAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jIGIv eGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCmluZGV4IGRmZTU5YTIuLmY4OTJlMmYgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYworKysgYi94ZW4vYXJjaC94 ODYvbW0vc2hhZG93L211bHRpLmMKQEAgLTE3Nyw3ICsxNzcsNyBAQCBzaF93YWxrX2d1ZXN0X3Rh YmxlcyhzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgbG9uZyB2YSwgd2Fsa190ICpndywKIHsKICAg ICByZXR1cm4gZ3Vlc3Rfd2Fsa190YWJsZXModiwgcDJtX2dldF9ob3N0cDJtKHYtPmRvbWFpbiks IHZhLCBndywgcGZlYywKICNpZiBHVUVTVF9QQUdJTkdfTEVWRUxTID09IDMgLyogUEFFICovCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9tZm4oSU5WQUxJRF9NRk4pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJTlZBTElEX01GTiwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdi0+YXJjaC5wYWdpbmcuc2hhZG93LmdsM2UKICNlbHNlIC8qIDMyIG9yIDY0ICovCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2V0YWJsZV9nZXRfbWZuKHYtPmFyY2guZ3Vl c3RfdGFibGUpLApAQCAtMzM2LDMyICszMzYsMzIgQEAgc3RhdGljIHZvaWQgc2hfYXVkaXRfZ3co c3RydWN0IHZjcHUgKnYsIHdhbGtfdCAqZ3cpCiAgICAgaWYgKCBtZm5fdmFsaWQoZ3ctPmw0bWZu KQogICAgICAgICAgJiYgbWZuX3ZhbGlkKChzbWZuID0gZ2V0X3NoYWRvd19zdGF0dXMoZCwgZ3ct Pmw0bWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg U0hfdHlwZV9sNF9zaGFkb3cpKSkgKQotICAgICAgICAodm9pZCkgc2hfYXVkaXRfbDRfdGFibGUo diwgc21mbiwgX21mbihJTlZBTElEX01GTikpOworICAgICAgICAodm9pZCkgc2hfYXVkaXRfbDRf dGFibGUodiwgc21mbiwgSU5WQUxJRF9NRk4pOwogICAgIGlmICggbWZuX3ZhbGlkKGd3LT5sM21m bikKICAgICAgICAgICYmIG1mbl92YWxpZCgoc21mbiA9IGdldF9zaGFkb3dfc3RhdHVzKGQsIGd3 LT5sM21mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNIX3R5cGVfbDNfc2hhZG93KSkpICkKLSAgICAgICAgKHZvaWQpIHNoX2F1ZGl0X2wzX3RhYmxl KHYsIHNtZm4sIF9tZm4oSU5WQUxJRF9NRk4pKTsKKyAgICAgICAgKHZvaWQpIHNoX2F1ZGl0X2wz X3RhYmxlKHYsIHNtZm4sIElOVkFMSURfTUZOKTsKICNlbmRpZiAvKiBQQUUgb3IgNjQuLi4gKi8K ICAgICBpZiAoIG1mbl92YWxpZChndy0+bDJtZm4pICkKICAgICB7CiAgICAgICAgIGlmICggbWZu X3ZhbGlkKChzbWZuID0gZ2V0X3NoYWRvd19zdGF0dXMoZCwgZ3ctPmwybWZuLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX3R5cGVfbDJfc2hhZG93 KSkpICkKLSAgICAgICAgICAgICh2b2lkKSBzaF9hdWRpdF9sMl90YWJsZSh2LCBzbWZuLCBfbWZu KElOVkFMSURfTUZOKSk7CisgICAgICAgICAgICAodm9pZCkgc2hfYXVkaXRfbDJfdGFibGUodiwg c21mbiwgSU5WQUxJRF9NRk4pOwogI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPT0gMwogICAgICAg ICBpZiAoIG1mbl92YWxpZCgoc21mbiA9IGdldF9zaGFkb3dfc3RhdHVzKGQsIGd3LT5sMm1mbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSF90eXBl X2wyaF9zaGFkb3cpKSkgKQotICAgICAgICAgICAgKHZvaWQpIHNoX2F1ZGl0X2wyX3RhYmxlKHYs IHNtZm4sIF9tZm4oSU5WQUxJRF9NRk4pKTsKKyAgICAgICAgICAgICh2b2lkKSBzaF9hdWRpdF9s Ml90YWJsZSh2LCBzbWZuLCBJTlZBTElEX01GTik7CiAjZW5kaWYKICAgICB9CiAgICAgaWYgKCBt Zm5fdmFsaWQoZ3ctPmwxbWZuKQogICAgICAgICAgJiYgbWZuX3ZhbGlkKChzbWZuID0gZ2V0X3No YWRvd19zdGF0dXMoZCwgZ3ctPmwxbWZuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU0hfdHlwZV9sMV9zaGFkb3cpKSkgKQotICAgICAgICAodm9pZCkg c2hfYXVkaXRfbDFfdGFibGUodiwgc21mbiwgX21mbihJTlZBTElEX01GTikpOworICAgICAgICAo dm9pZCkgc2hfYXVkaXRfbDFfdGFibGUodiwgc21mbiwgSU5WQUxJRF9NRk4pOwogICAgIGVsc2Ug aWYgKCAoZ3Vlc3RfbDJlX2dldF9mbGFncyhndy0+bDJlKSAmIF9QQUdFX1BSRVNFTlQpCiAgICAg ICAgICAgICAgICYmIChndWVzdF9sMmVfZ2V0X2ZsYWdzKGd3LT5sMmUpICYgX1BBR0VfUFNFKQog ICAgICAgICAgICAgICAmJiBtZm5fdmFsaWQoCiAgICAgICAgICAgICAgIChzbWZuID0gZ2V0X2Zs MV9zaGFkb3dfc3RhdHVzKGQsIGd1ZXN0X2wyZV9nZXRfZ2ZuKGd3LT5sMmUpKSkpICkKLSAgICAg ICAgKHZvaWQpIHNoX2F1ZGl0X2ZsMV90YWJsZSh2LCBzbWZuLCBfbWZuKElOVkFMSURfTUZOKSk7 CisgICAgICAgICh2b2lkKSBzaF9hdWRpdF9mbDFfdGFibGUodiwgc21mbiwgSU5WQUxJRF9NRk4p OwogfQogCiAjZWxzZQpAQCAtMTc1Miw3ICsxNzUyLDcgQEAgc3RhdGljIHNoYWRvd19sMmVfdCAq IHNoYWRvd19nZXRfYW5kX2NyZWF0ZV9sMmUoc3RydWN0IHZjcHUgKnYsCiB7CiAjaWYgR1VFU1Rf UEFHSU5HX0xFVkVMUyA+PSA0IC8qIDY0Yml0Li4uICovCiAgICAgc3RydWN0IGRvbWFpbiAqZCA9 IHYtPmRvbWFpbjsKLSAgICBtZm5fdCBzbDNtZm4gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICBt Zm5fdCBzbDNtZm4gPSBJTlZBTElEX01GTjsKICAgICBzaGFkb3dfbDNlX3QgKnNsM2U7CiAgICAg aWYgKCAhbWZuX3ZhbGlkKGd3LT5sMm1mbikgKSByZXR1cm4gTlVMTDsgLyogTm8gZ3Vlc3QgcGFn ZS4gKi8KICAgICAvKiBHZXQgdGhlIGwzZSAqLwpAQCAtMjE1OCw3ICsyMTU4LDcgQEAgc3RhdGlj IGludCB2YWxpZGF0ZV9nbDRlKHN0cnVjdCB2Y3B1ICp2LCB2b2lkICpuZXdfZ2UsIG1mbl90IHNs NG1mbiwgdm9pZCAqc2UpCiAgICAgc2hhZG93X2w0ZV90IG5ld19zbDRlOwogICAgIGd1ZXN0X2w0 ZV90IG5ld19nbDRlID0gKihndWVzdF9sNGVfdCAqKW5ld19nZTsKICAgICBzaGFkb3dfbDRlX3Qg KnNsNHAgPSBzZTsKLSAgICBtZm5fdCBzbDNtZm4gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICBt Zm5fdCBzbDNtZm4gPSBJTlZBTElEX01GTjsKICAgICBzdHJ1Y3QgZG9tYWluICpkID0gdi0+ZG9t YWluOwogICAgIHAybV90eXBlX3QgcDJtdDsKICAgICBpbnQgcmVzdWx0ID0gMDsKQEAgLTIyMTcs NyArMjIxNyw3IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfZ2wzZShzdHJ1Y3QgdmNwdSAqdiwgdm9p ZCAqbmV3X2dlLCBtZm5fdCBzbDNtZm4sIHZvaWQgKnNlKQogICAgIHNoYWRvd19sM2VfdCBuZXdf c2wzZTsKICAgICBndWVzdF9sM2VfdCBuZXdfZ2wzZSA9ICooZ3Vlc3RfbDNlX3QgKiluZXdfZ2U7 CiAgICAgc2hhZG93X2wzZV90ICpzbDNwID0gc2U7Ci0gICAgbWZuX3Qgc2wybWZuID0gX21mbihJ TlZBTElEX01GTik7CisgICAgbWZuX3Qgc2wybWZuID0gSU5WQUxJRF9NRk47CiAgICAgcDJtX3R5 cGVfdCBwMm10OwogICAgIGludCByZXN1bHQgPSAwOwogCkBAIC0yMjUwLDcgKzIyNTAsNyBAQCBz dGF0aWMgaW50IHZhbGlkYXRlX2dsMmUoc3RydWN0IHZjcHUgKnYsIHZvaWQgKm5ld19nZSwgbWZu X3Qgc2wybWZuLCB2b2lkICpzZSkKICAgICBzaGFkb3dfbDJlX3QgbmV3X3NsMmU7CiAgICAgZ3Vl c3RfbDJlX3QgbmV3X2dsMmUgPSAqKGd1ZXN0X2wyZV90ICopbmV3X2dlOwogICAgIHNoYWRvd19s MmVfdCAqc2wycCA9IHNlOwotICAgIG1mbl90IHNsMW1mbiA9IF9tZm4oSU5WQUxJRF9NRk4pOwor ICAgIG1mbl90IHNsMW1mbiA9IElOVkFMSURfTUZOOwogICAgIHAybV90eXBlX3QgcDJtdDsKICAg ICBpbnQgcmVzdWx0ID0gMDsKIApAQCAtMjYwOCw3ICsyNjA4LDcgQEAgc3RhdGljIGlubGluZSB2 b2lkIGNoZWNrX2Zvcl9lYXJseV91bnNoYWRvdyhzdHJ1Y3QgdmNwdSAqdiwgbWZuX3QgZ21mbikK IHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9lYXJseV91bnNoYWRvdyhzdHJ1Y3QgdmNwdSAqdikK IHsKICNpZiBTSEFET1dfT1BUSU1JWkFUSU9OUyAmIFNIT1BUX0VBUkxZX1VOU0hBRE9XCi0gICAg di0+YXJjaC5wYWdpbmcuc2hhZG93Lmxhc3RfZW11bGF0ZWRfbWZuX2Zvcl91bnNoYWRvdyA9IElO VkFMSURfTUZOOworICAgIHYtPmFyY2gucGFnaW5nLnNoYWRvdy5sYXN0X2VtdWxhdGVkX21mbl9m b3JfdW5zaGFkb3cgPSBtZm5feChJTlZBTElEX01GTik7CiAjZW5kaWYKIH0KIApAQCAtNDEwNSwx MCArNDEwNSwxMCBAQCBzaF91cGRhdGVfY3IzKHN0cnVjdCB2Y3B1ICp2LCBpbnQgZG9fbG9ja2lu ZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFNIX3R5cGVf bDJoX3NoYWRvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDog U0hfdHlwZV9sMl9zaGFkb3cpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg ICAgICAgc2hfc2V0X3RvcGxldmVsX3NoYWRvdyh2LCBpLCBfbWZuKElOVkFMSURfTUZOKSwgMCk7 CisgICAgICAgICAgICAgICAgICAgIHNoX3NldF90b3BsZXZlbF9zaGFkb3codiwgaSwgSU5WQUxJ RF9NRk4sIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg ICAgIHNoX3NldF90b3BsZXZlbF9zaGFkb3codiwgaSwgX21mbihJTlZBTElEX01GTiksIDApOwor ICAgICAgICAgICAgICAgIHNoX3NldF90b3BsZXZlbF9zaGFkb3codiwgaSwgSU5WQUxJRF9NRk4s IDApOwogICAgICAgICB9CiAgICAgfQogI2VsaWYgR1VFU1RfUEFHSU5HX0xFVkVMUyA9PSA0CkBA IC00NTMxLDcgKzQ1MzEsNyBAQCBzdGF0aWMgdm9pZCBzaF9wYWdldGFibGVfZHlpbmcoc3RydWN0 IHZjcHUgKnYsIHBhZGRyX3QgZ3BhKQogCiAgICAgICAgIGlmICggZmFzdF9wYXRoICkgewogICAg ICAgICAgICAgaWYgKCBwYWdldGFibGVfaXNfbnVsbCh2LT5hcmNoLnNoYWRvd190YWJsZVtpXSkg KQotICAgICAgICAgICAgICAgIHNtZm4gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgICAg ICAgICBzbWZuID0gSU5WQUxJRF9NRk47CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg ICAgc21mbiA9IF9tZm4ocGFnZXRhYmxlX2dldF9wZm4odi0+YXJjaC5zaGFkb3dfdGFibGVbaV0p KTsKICAgICAgICAgfQpAQCAtNDU0MCw4ICs0NTQwLDggQEAgc3RhdGljIHZvaWQgc2hfcGFnZXRh YmxlX2R5aW5nKHN0cnVjdCB2Y3B1ICp2LCBwYWRkcl90IGdwYSkKICAgICAgICAgICAgIC8qIHJl dHJpZXZpbmcgdGhlIGwycyAqLwogICAgICAgICAgICAgZ21mbiA9IGdldF9nZm5fcXVlcnlfdW5s b2NrZWQoZCwgZ2ZuX3goZ3Vlc3RfbDNlX2dldF9nZm4oZ2wzZVtpXSkpLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnAybXQpOwotICAgICAgICAgICAgc21mbiA9 IHVubGlrZWx5KG1mbl94KGdtZm4pID09IElOVkFMSURfTUZOKQotICAgICAgICAgICAgICAgICAg ID8gX21mbihJTlZBTElEX01GTikKKyAgICAgICAgICAgIHNtZm4gPSB1bmxpa2VseShtZm5fZXEo Z21mbiwgSU5WQUxJRF9NRk4pKQorICAgICAgICAgICAgICAgICAgID8gSU5WQUxJRF9NRk4KICAg ICAgICAgICAgICAgICAgICA6IHNoYWRvd19oYXNoX2xvb2t1cChkLCBtZm5feChnbWZuKSwgU0hf dHlwZV9sMl9wYWVfc2hhZG93KTsKICAgICAgICAgfQogCkBAIC00ODQ2LDcgKzQ4NDYsNyBAQCBp bnQgc2hfYXVkaXRfZmwxX3RhYmxlKHN0cnVjdCB2Y3B1ICp2LCBtZm5fdCBzbDFtZm4sIG1mbl90 IHgpCiB7CiAgICAgZ3Vlc3RfbDFlX3QgKmdsMWUsIGU7CiAgICAgc2hhZG93X2wxZV90ICpzbDFl OwotICAgIG1mbl90IGdsMW1mbiA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgIG1mbl90IGdsMW1m biA9IElOVkFMSURfTUZOOwogICAgIGludCBmOwogICAgIGludCBkb25lID0gMDsKIApkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi9kb21haW4uYyBiL3hlbi9jb21tb24vZG9tYWluLmMKaW5kZXggNDUy NzNkNC4uNDJjMDdlZSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9kb21haW4uYworKysgYi94ZW4v Y29tbW9uL2RvbWFpbi5jCkBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIHZvaWQgdmNwdV9pbmZv X3Jlc2V0KHN0cnVjdCB2Y3B1ICp2KQogICAgIHYtPnZjcHVfaW5mbyA9ICgodi0+dmNwdV9pZCA8 IFhFTl9MRUdBQ1lfTUFYX1ZDUFVTKQogICAgICAgICAgICAgICAgICAgICA/ICh2Y3B1X2luZm9f dCAqKSZzaGFyZWRfaW5mbyhkLCB2Y3B1X2luZm9bdi0+dmNwdV9pZF0pCiAgICAgICAgICAgICAg ICAgICAgIDogJmR1bW15X3ZjcHVfaW5mbyk7Ci0gICAgdi0+dmNwdV9pbmZvX21mbiA9IElOVkFM SURfTUZOOworICAgIHYtPnZjcHVfaW5mb19tZm4gPSBtZm5feChJTlZBTElEX01GTik7CiB9CiAK IHN0cnVjdCB2Y3B1ICphbGxvY192Y3B1KApAQCAtMTE0MSw3ICsxMTQxLDcgQEAgaW50IG1hcF92 Y3B1X2luZm8oc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBvZmZz ZXQpCiAgICAgaWYgKCBvZmZzZXQgPiAoUEFHRV9TSVpFIC0gc2l6ZW9mKHZjcHVfaW5mb190KSkg KQogICAgICAgICByZXR1cm4gLUVJTlZBTDsKIAotICAgIGlmICggdi0+dmNwdV9pbmZvX21mbiAh PSBJTlZBTElEX01GTiApCisgICAgaWYgKCB2LT52Y3B1X2luZm9fbWZuICE9IG1mbl94KElOVkFM SURfTUZOKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCiAgICAgLyogUnVuIHRoaXMgY29t bWFuZCBvbiB5b3Vyc2VsZiBvciBvbiBvdGhlciBvZmZsaW5lIFZDUFVTLiAqLwpAQCAtMTIwNSw3 ICsxMjA1LDcgQEAgdm9pZCB1bm1hcF92Y3B1X2luZm8oc3RydWN0IHZjcHUgKnYpCiB7CiAgICAg dW5zaWduZWQgbG9uZyBtZm47CiAKLSAgICBpZiAoIHYtPnZjcHVfaW5mb19tZm4gPT0gSU5WQUxJ RF9NRk4gKQorICAgIGlmICggdi0+dmNwdV9pbmZvX21mbiA9PSBtZm5feChJTlZBTElEX01GTikg KQogICAgICAgICByZXR1cm47CiAKICAgICBtZm4gPSB2LT52Y3B1X2luZm9fbWZuOwpkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5j CmluZGV4IDNmMTU1NDMuLmVjYWNlMDcgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vZ3JhbnRfdGFi bGUuYworKysgYi94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKQEAgLTI0NCw3ICsyNDQsNyBAQCBz dGF0aWMgaW50IF9fZ2V0X3BhZ2VkX2ZyYW1lKHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNpZ25lZCBs b25nICpmcmFtZSwgc3RydWN0IHBhZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJl YWRvbmx5KSA/IFAyTV9BTExPQyA6IFAyTV9VTlNIQVJFKTsKICAgICBpZiAoICEoKnBhZ2UpICkK ICAgICB7Ci0gICAgICAgICpmcmFtZSA9IElOVkFMSURfTUZOOworICAgICAgICAqZnJhbWUgPSBt Zm5feChJTlZBTElEX01GTik7CiAgICAgICAgIGlmICggcDJtX2lzX3NoYXJlZChwMm10KSApCiAg ICAgICAgICAgICByZXR1cm4gR05UU1RfZWFnYWluOwogICAgICAgICBpZiAoIHAybV9pc19wYWdp bmcocDJtdCkgKQpAQCAtMjYwLDcgKzI2MCw3IEBAIHN0YXRpYyBpbnQgX19nZXRfcGFnZWRfZnJh bWUodW5zaWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgKmZyYW1lLCBzdHJ1Y3QgcGFnCiAg ICAgKnBhZ2UgPSBtZm5fdmFsaWQoKmZyYW1lKSA/IG1mbl90b19wYWdlKCpmcmFtZSkgOiBOVUxM OwogICAgIGlmICggKCEoKnBhZ2UpKSB8fCAoIWdldF9wYWdlKCpwYWdlLCByZCkpICkKICAgICB7 Ci0gICAgICAgICpmcmFtZSA9IElOVkFMSURfTUZOOworICAgICAgICAqZnJhbWUgPSBtZm5feChJ TlZBTElEX01GTik7CiAgICAgICAgICpwYWdlID0gTlVMTDsKICAgICAgICAgcmMgPSBHTlRTVF9i YWRfcGFnZTsKICAgICB9CkBAIC0xNzg1LDcgKzE3ODUsNyBAQCBnbnR0YWJfdHJhbnNmZXIoCiAg ICAgICAgICAgICBwMm1fdHlwZV90IF9fcDJtdDsKICAgICAgICAgICAgIG1mbiA9IG1mbl94KGdl dF9nZm5fdW5zaGFyZShkLCBnb3AubWZuLCAmX19wMm10KSk7CiAgICAgICAgICAgICBpZiAoIHAy bV9pc19zaGFyZWQoX19wMm10KSB8fCAhcDJtX2lzX3ZhbGlkKF9fcDJtdCkgKQotICAgICAgICAg ICAgICAgIG1mbiA9IElOVkFMSURfTUZOOworICAgICAgICAgICAgICAgIG1mbiA9IG1mbl94KElO VkFMSURfTUZOKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgbWZuID0gbWZuX3goZ2ZuX3Rv X21mbihkLCBfZ2ZuKGdvcC5tZm4pKSk7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vbW0u aCBiL3hlbi9pbmNsdWRlL3hlbi9tbS5oCmluZGV4IGFmYmIxYTEuLjdmMjA3ZWMgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL3hlbi9tbS5oCisrKyBiL3hlbi9pbmNsdWRlL3hlbi9tbS5oCkBAIC01 NSw3ICs1NSw3IEBACiAKIFRZUEVfU0FGRSh1bnNpZ25lZCBsb25nLCBtZm4pOwogI2RlZmluZSBQ UklfbWZuICAgICAgICAgICIwNWx4IgotI2RlZmluZSBJTlZBTElEX01GTiAgICAgICh+MFVMKQor I2RlZmluZSBJTlZBTElEX01GTiAgICAgIF9tZm4ofjBVTCkKIAogI2lmbmRlZiBtZm5fdAogI2Rl ZmluZSBtZm5fdCAvKiBHcmVwIGZvZGRlcjogbWZuX3QsIF9tZm4oKSBhbmQgbWZuX3goKSBhcmUg ZGVmaW5lZCBhYm92ZSAqLwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0 cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK