From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: [PATCH v7 03/14] xen: Use a typesafe to define INVALID_MFN Date: Tue, 12 Jul 2016 14:59:24 +0100 Message-ID: <1468331975-27331-4-git-send-email-julien.grall@arm.com> References: <1468331975-27331-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: <1468331975-27331-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: Elena Ufimtseva , Kevin Tian , sstabellini@kernel.org, Jun Nakajima , George Dunlap , Andrew Cooper , Christoph Egger , Tim Deegan , Julien Grall , Paul Durrant , Jan Beulich , Liu Jinsong List-Id: xen-devel@lists.xenproject.org QWxzbyB0YWtlIHRoZSBvcHBvcnR1bml0eSB0byBjb252ZXJ0IGFyY2gveDg2L2RlYnVnLmMgdG8g dGhlIHR5cGVzYWZlCm1mbiBhbmQgdXNlIHByb3BlciBwcmludGYgZm9ybWF0IGZvciBNRk4vR0ZO IHdoZW4gdGhlIGNvZGUgYXJvdW5kIGlzCm1vZGlmaWVkLgoKU2lnbmVkLW9mZi1ieTogSnVsaWVu IEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJldyBDb29wZXIg PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBTdGVmYW5vIFN0YWJlbGxpbmkg PHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CgotLS0KQ2M6IENocmlzdG9waCBFZ2dlciA8Y2hlZ2dl ckBhbWF6b24uZGU+CkNjOiBMaXUgSmluc29uZyA8amluc29uZy5saXVAYWxpYmFiYS1pbmMuY29t PgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogRWxlbmEgVWZpbXRzZXZh IDxlbGVuYS51ZmltdHNldmFAb3JhY2xlLmNvbT4KQ2M6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJy YW50QGNpdHJpeC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+ CkNjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KQ2M6IEdlb3JnZSBEdW5sYXAg PGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3Jn PgoKICAgIENoYW5nZXMgaW4gdjc6CiAgICAgICAgLSBGb3Jnb3QgdG8gY29udmVydCBiYWNrIG9u ZSBNRk5fSU5WQUxJRF9UIHRvIElOVkFMSURfTUZOCgogICAgQ2hhbmdlcyBpbiB2NjoKICAgICAg ICAtIEFkZCBTdGVmYW5vJ3MgYWNrZWQtYnkgZm9yIEFSTSBiaXRzCiAgICAgICAgLSBVc2UgUFJJ X21mbiBhbmQgUFJJX2dmbgogICAgICAgIC0gUmVtb3ZlIHNldCBvZiBicmFja2V0cyB3aGVuIGl0 IGlzIG5vdCBuZWNlc3NhcnkKICAgICAgICAtIFVzZSBtZm5fYWRkIHdoZW4gcG9zc2libGUKICAg ICAgICAtIEFkZCBBbmRyZXcncyByZXZpZXdlZC1ieQoKICAgIENoYW5nZXMgaW4gdjU6CiAgICAg ICAgLSBQYXRjaCBhZGRlZAotLS0KIHhlbi9hcmNoL2FybS9wMm0uYyAgICAgICAgICAgICAgfCAg NCArLS0KIHhlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jZS5jICAgfCAgMiArLQogeGVuL2FyY2gv eDg2L2RlYnVnLmMgICAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgICAgICAgIHwgIDYgKystLS0K IHhlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYyAgICAgfCAxMiArKysrLS0tLS0KIHhlbi9hcmNo L3g4Ni9odm0vdm14L3ZteC5jICAgICAgfCAgMiArLQogeGVuL2FyY2gveDg2L21tL2d1ZXN0X3dh bGsuYyAgICB8ICA0ICstLQogeGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYyAgICAgICB8ICA0ICst LQogeGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyAgICAgICB8ICA2ICsrLS0tCiB4ZW4vYXJjaC94 ODYvbW0vcDJtLXBvZC5jICAgICAgIHwgMTggKysrKysrLS0tLS0tLQogeGVuL2FyY2gveDg2L21t L3AybS1wdC5jICAgICAgICB8IDE4ICsrKysrKy0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9tbS9wMm0u YyAgICAgICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQog eGVuL2FyY2gveDg2L21tL3BhZ2luZy5jICAgICAgICB8IDEyICsrKystLS0tLQogeGVuL2FyY2gv eDg2L21tL3NoYWRvdy9jb21tb24uYyB8IDQzICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LQogeGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jICB8IDM2ICsrKysrKysrKysrKy0tLS0t LS0tLS0tLS0KIHhlbi9jb21tb24vZG9tYWluLmMgICAgICAgICAgICAgfCAgNiArKy0tLQogeGVu L2NvbW1vbi9ncmFudF90YWJsZS5jICAgICAgICB8ICA2ICsrLS0tCiB4ZW4vaW5jbHVkZS94ZW4v bW0uaCAgICAgICAgICAgIHwgIDIgKy0KIDE4IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25z KCspLCAxNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL3AybS5jIGIv eGVuL2FyY2gvYXJtL3AybS5jCmluZGV4IDM0NTYzYmIuLmQ2OTA2MDIgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL2FybS9wMm0uYworKysgYi94ZW4vYXJjaC9hcm0vcDJtLmMKQEAgLTE0NjEsNyArMTQ2 MSw3IEBAIGludCByZWxpbnF1aXNoX3AybV9tYXBwaW5nKHN0cnVjdCBkb21haW4gKmQpCiAgICAg cmV0dXJuIGFwcGx5X3AybV9jaGFuZ2VzKGQsIFJFTElOUVVJU0gsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIocDJtLT5sb3dlc3RfbWFwcGVkX2dmbiksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIocDJtLT5tYXhfbWFwcGVkX2dm biksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZm5fdG9fcGFkZHIoSU5WQUxJRF9N Rk4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKG1mbl94KElO VkFMSURfTUZOKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVRUUl9NRU0sIDAs IHAybV9pbnZhbGlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC0+YXJjaC5wMm0u ZGVmYXVsdF9hY2Nlc3MpOwogfQpAQCAtMTQ3Niw3ICsxNDc2LDcgQEAgaW50IHAybV9jYWNoZV9m bHVzaChzdHJ1Y3QgZG9tYWluICpkLCB4ZW5fcGZuX3Qgc3RhcnRfbWZuLCB4ZW5fcGZuX3QgZW5k X21mbikKICAgICByZXR1cm4gYXBwbHlfcDJtX2NoYW5nZXMoZCwgQ0FDSEVGTFVTSCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKHN0YXJ0X21mbiksCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBmbl90b19wYWRkcihlbmRfbWZuKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKElOVkFMSURfTUZOKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcGZuX3RvX3BhZGRyKG1mbl94KElOVkFMSURfTUZOKSksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE1BVFRSX01FTSwgMCwgcDJtX2ludmFsaWQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmFyY2gucDJtLmRlZmF1bHRfYWNjZXNzKTsKIH0K ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21jZS5jIGIveGVuL2FyY2gveDg2 L2NwdS9tY2hlY2svbWNlLmMKaW5kZXggZWRjYmU0OC4uMjY5NWIwYyAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2NwdS9tY2hlY2svbWNlLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2sv bWNlLmMKQEAgLTE0NTUsNyArMTQ1NSw3IEBAIGxvbmcgZG9fbWNhKFhFTl9HVUVTVF9IQU5ETEVf UEFSQU0oeGVuX21jX3QpIHVfeGVuX21jKQogICAgICAgICAgICAgICAgIGdmbiA9IFBGTl9ET1dO KGdhZGRyKTsKICAgICAgICAgICAgICAgICBtZm4gPSBtZm5feChnZXRfZ2ZuKGQsIGdmbiwgJnQp KTsKIAotICAgICAgICAgICAgICAgIGlmICggbWZuID09IElOVkFMSURfTUZOICkKKyAgICAgICAg ICAgICAgICBpZiAoIG1mbiA9PSBtZm5feChJTlZBTElEX01GTikgKQogICAgICAgICAgICAgICAg IHsKICAgICAgICAgICAgICAgICAgICAgcHV0X2dmbihkLCBnZm4pOwogICAgICAgICAgICAgICAg ICAgICBwdXRfZG9tYWluKGQpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RlYnVnLmMgYi94 ZW4vYXJjaC94ODYvZGVidWcuYwppbmRleCA1OGNhZTIyLi45MjEzZWE3IDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvZGVidWcuYworKysgYi94ZW4vYXJjaC94ODYvZGVidWcuYwpAQCAtNDMsMTEg KzQzLDExIEBAIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBkYmd2YV90OwogdHlwZWRlZiB1bnNpZ25l ZCBjaGFyIGRiZ2J5dGVfdDsKIAogLyogUmV0dXJuczogbWZuIGZvciB0aGUgZ2l2ZW4gKGh2bSBn dWVzdCkgdmFkZHIgKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nIAorc3RhdGljIG1mbl90CiBkYmdf aHZtX3ZhMm1mbihkYmd2YV90IHZhZGRyLCBzdHJ1Y3QgZG9tYWluICpkcCwgaW50IHRvYWRkciwK ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICpnZm4pCiB7Ci0gICAgdW5zaWduZWQgbG9u ZyBtZm47CisgICAgbWZuX3QgbWZuOwogICAgIHVpbnQzMl90IHBmZWMgPSBQRkVDX3BhZ2VfcHJl c2VudDsKICAgICBwMm1fdHlwZV90IGdmbnR5cGU7CiAKQEAgLTYwLDE2ICs2MCwxNyBAQCBkYmdf aHZtX3ZhMm1mbihkYmd2YV90IHZhZGRyLCBzdHJ1Y3QgZG9tYWluICpkcCwgaW50IHRvYWRkciwK ICAgICAgICAgcmV0dXJuIElOVkFMSURfTUZOOwogICAgIH0KIAotICAgIG1mbiA9IG1mbl94KGdl dF9nZm4oZHAsICpnZm4sICZnZm50eXBlKSk7IAorICAgIG1mbiA9IGdldF9nZm4oZHAsICpnZm4s ICZnZm50eXBlKTsKICAgICBpZiAoIHAybV9pc19yZWFkb25seShnZm50eXBlKSAmJiB0b2FkZHIg KQogICAgIHsKICAgICAgICAgREJHUDIoImtkYjpwMm1faXNfcmVhZG9ubHk6IGdmbnR5cGU6JXhc biIsIGdmbnR5cGUpOwogICAgICAgICBtZm4gPSBJTlZBTElEX01GTjsKICAgICB9CiAgICAgZWxz ZQotICAgICAgICBEQkdQMigiWDogdmFkZHI6JWx4IGRvbWlkOiVkIG1mbjolbHhcbiIsIHZhZGRy LCBkcC0+ZG9tYWluX2lkLCBtZm4pOworICAgICAgICBEQkdQMigiWDogdmFkZHI6JWx4IGRvbWlk OiVkIG1mbjolIyJQUklfbWZuIlxuIiwKKyAgICAgICAgICAgICAgdmFkZHIsIGRwLT5kb21haW5f aWQsIG1mbl94KG1mbikpOwogCi0gICAgaWYgKCBtZm4gPT0gSU5WQUxJRF9NRk4gKQorICAgIGlm ICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAgICB7CiAgICAgICAgIHB1dF9nZm4oZHAs ICpnZm4pOwogICAgICAgICAqZ2ZuID0gSU5WQUxJRF9HRk47CkBAIC05MSw3ICs5Miw3IEBAIGRi Z19odm1fdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVjdCBkb21haW4gKmRwLCBpbnQgdG9hZGRy LAogICogICAgICAgbW9kZS4KICAqIFJldHVybnM6IG1mbiBmb3IgdGhlIGdpdmVuIChwdiBndWVz dCkgdmFkZHIgCiAgKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nIAorc3RhdGljIG1mbl90CiBkYmdf cHZfdmEybWZuKGRiZ3ZhX3QgdmFkZHIsIHN0cnVjdCBkb21haW4gKmRwLCB1aW50NjRfdCBwZ2Qz dmFsKQogewogICAgIGw0X3BnZW50cnlfdCBsNGUsICpsNHQ7CkBAIC05OSwzMSArMTAwLDMxIEBA IGRiZ19wdl92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIHVpbnQ2NF90 IHBnZDN2YWwpCiAgICAgbDJfcGdlbnRyeV90IGwyZSwgKmwydDsKICAgICBsMV9wZ2VudHJ5X3Qg bDFlLCAqbDF0OwogICAgIHVuc2lnbmVkIGxvbmcgY3IzID0gKHBnZDN2YWwgPyBwZ2QzdmFsIDog ZHAtPnZjcHVbMF0tPmFyY2guY3IzKTsKLSAgICB1bnNpZ25lZCBsb25nIG1mbiA9IGNyMyA+PiBQ QUdFX1NISUZUOworICAgIG1mbl90IG1mbiA9IF9tZm4oY3IzID4+IFBBR0VfU0hJRlQpOwogCiAg ICAgREJHUDIoInZhZGRyOiVseCBkb21pZDolZCBjcjM6JWx4IHBnZDM6JWx4XG4iLCB2YWRkciwg ZHAtPmRvbWFpbl9pZCwgCiAgICAgICAgICAgY3IzLCBwZ2QzdmFsKTsKIAogICAgIGlmICggcGdk M3ZhbCA9PSAwICkKICAgICB7Ci0gICAgICAgIGw0dCA9IG1hcF9kb21haW5fcGFnZShfbWZuKG1m bikpOworICAgICAgICBsNHQgPSBtYXBfZG9tYWluX3BhZ2UobWZuKTsKICAgICAgICAgbDRlID0g bDR0W2w0X3RhYmxlX29mZnNldCh2YWRkcildOwogICAgICAgICB1bm1hcF9kb21haW5fcGFnZShs NHQpOwotICAgICAgICBtZm4gPSBsNGVfZ2V0X3BmbihsNGUpOwotICAgICAgICBEQkdQMigibDR0 OiVwIGw0dG86JWx4IGw0ZTolbHggbWZuOiVseFxuIiwgbDR0LCAKLSAgICAgICAgICAgICAgbDRf dGFibGVfb2Zmc2V0KHZhZGRyKSwgbDRlLCBtZm4pOworICAgICAgICBtZm4gPSBfbWZuKGw0ZV9n ZXRfcGZuKGw0ZSkpOworICAgICAgICBEQkdQMigibDR0OiVwIGw0dG86JWx4IGw0ZTolbHggbWZu OiUjIlBSSV9tZm4iXG4iLCBsNHQsCisgICAgICAgICAgICAgIGw0X3RhYmxlX29mZnNldCh2YWRk ciksIGw0ZSwgbWZuX3gobWZuKSk7CiAgICAgICAgIGlmICggIShsNGVfZ2V0X2ZsYWdzKGw0ZSkg JiBfUEFHRV9QUkVTRU5UKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIERCR1AxKCJsNCBQQUdF IG5vdCBwcmVzZW50LiB2YWRkcjolbHggY3IzOiVseFxuIiwgdmFkZHIsIGNyMyk7CiAgICAgICAg ICAgICByZXR1cm4gSU5WQUxJRF9NRk47CiAgICAgICAgIH0KIAotICAgICAgICBsM3QgPSBtYXBf ZG9tYWluX3BhZ2UoX21mbihtZm4pKTsKKyAgICAgICAgbDN0ID0gbWFwX2RvbWFpbl9wYWdlKG1m bik7CiAgICAgICAgIGwzZSA9IGwzdFtsM190YWJsZV9vZmZzZXQodmFkZHIpXTsKICAgICAgICAg dW5tYXBfZG9tYWluX3BhZ2UobDN0KTsKLSAgICAgICAgbWZuID0gbDNlX2dldF9wZm4obDNlKTsK LSAgICAgICAgREJHUDIoImwzdDolcCBsM3RvOiVseCBsM2U6JWx4IG1mbjolbHhcbiIsIGwzdCwg Ci0gICAgICAgICAgICAgIGwzX3RhYmxlX29mZnNldCh2YWRkciksIGwzZSwgbWZuKTsKKyAgICAg ICAgbWZuID0gX21mbihsM2VfZ2V0X3BmbihsM2UpKTsKKyAgICAgICAgREJHUDIoImwzdDolcCBs M3RvOiVseCBsM2U6JWx4IG1mbjolIyJQUklfbWZuIlxuIiwgbDN0LAorICAgICAgICAgICAgICBs M190YWJsZV9vZmZzZXQodmFkZHIpLCBsM2UsIG1mbl94KG1mbikpOwogICAgICAgICBpZiAoICEo bDNlX2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFJFU0VOVCkgfHwKICAgICAgICAgICAgICAobDNl X2dldF9mbGFncyhsM2UpICYgX1BBR0VfUFNFKSApCiAgICAgICAgIHsKQEAgLTEzMiwyNiArMTMz LDI2IEBAIGRiZ19wdl92YTJtZm4oZGJndmFfdCB2YWRkciwgc3RydWN0IGRvbWFpbiAqZHAsIHVp bnQ2NF90IHBnZDN2YWwpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBsMnQgPSBtYXBfZG9tYWlu X3BhZ2UoX21mbihtZm4pKTsKKyAgICBsMnQgPSBtYXBfZG9tYWluX3BhZ2UobWZuKTsKICAgICBs MmUgPSBsMnRbbDJfdGFibGVfb2Zmc2V0KHZhZGRyKV07CiAgICAgdW5tYXBfZG9tYWluX3BhZ2Uo bDJ0KTsKLSAgICBtZm4gPSBsMmVfZ2V0X3BmbihsMmUpOwotICAgIERCR1AyKCJsMnQ6JXAgbDJ0 bzolbHggbDJlOiVseCBtZm46JWx4XG4iLCBsMnQsIGwyX3RhYmxlX29mZnNldCh2YWRkciksCi0g ICAgICAgICAgbDJlLCBtZm4pOworICAgIG1mbiA9IF9tZm4obDJlX2dldF9wZm4obDJlKSk7Cisg ICAgREJHUDIoImwydDolcCBsMnRvOiVseCBsMmU6JWx4IG1mbjolIyJQUklfbWZuIlxuIiwKKyAg ICAgICAgICBsMnQsIGwyX3RhYmxlX29mZnNldCh2YWRkciksIGwyZSwgbWZuX3gobWZuKSk7CiAg ICAgaWYgKCAhKGwyZV9nZXRfZmxhZ3MobDJlKSAmIF9QQUdFX1BSRVNFTlQpIHx8CiAgICAgICAg ICAobDJlX2dldF9mbGFncyhsMmUpICYgX1BBR0VfUFNFKSApCiAgICAgewogICAgICAgICBEQkdQ MSgibDIgUEFHRSBub3QgcHJlc2VudC4gdmFkZHI6JWx4IGNyMzolbHhcbiIsIHZhZGRyLCBjcjMp OwogICAgICAgICByZXR1cm4gSU5WQUxJRF9NRk47CiAgICAgfQotICAgIGwxdCA9IG1hcF9kb21h aW5fcGFnZShfbWZuKG1mbikpOworICAgIGwxdCA9IG1hcF9kb21haW5fcGFnZShtZm4pOwogICAg IGwxZSA9IGwxdFtsMV90YWJsZV9vZmZzZXQodmFkZHIpXTsKICAgICB1bm1hcF9kb21haW5fcGFn ZShsMXQpOwotICAgIG1mbiA9IGwxZV9nZXRfcGZuKGwxZSk7Ci0gICAgREJHUDIoImwxdDolcCBs MXRvOiVseCBsMWU6JWx4IG1mbjolbHhcbiIsIGwxdCwgbDFfdGFibGVfb2Zmc2V0KHZhZGRyKSwK LSAgICAgICAgICBsMWUsIG1mbik7CisgICAgbWZuID0gX21mbihsMWVfZ2V0X3BmbihsMWUpKTsK KyAgICBEQkdQMigibDF0OiVwIGwxdG86JWx4IGwxZTolbHggbWZuOiUjIlBSSV9tZm4iXG4iLCBs MXQsIGwxX3RhYmxlX29mZnNldCh2YWRkciksCisgICAgICAgICAgbDFlLCBtZm5feChtZm4pKTsK IAotICAgIHJldHVybiBtZm5fdmFsaWQobWZuKSA/IG1mbiA6IElOVkFMSURfTUZOOworICAgIHJl dHVybiBtZm5fdmFsaWQobWZuX3gobWZuKSkgPyBtZm4gOiBJTlZBTElEX01GTjsKIH0KIAogLyog UmV0dXJuczogbnVtYmVyIG9mIGJ5dGVzIHJlbWFpbmluZyB0byBiZSBjb3BpZWQgKi8KQEAgLTE2 MywyMyArMTY0LDI0IEBAIHVuc2lnbmVkIGludCBkYmdfcndfZ3Vlc3RfbWVtKHN0cnVjdCBkb21h aW4gKmRwLCB2b2lkICogX191c2VyIGdhZGRyLAogICAgIHsKICAgICAgICAgY2hhciAqdmE7CiAg ICAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciA9ICh1bnNpZ25lZCBsb25nKWdhZGRyOwotICAgICAg ICB1bnNpZ25lZCBsb25nIG1mbiwgZ2ZuID0gSU5WQUxJRF9HRk4sIHBhZ2VjbnQ7CisgICAgICAg IG1mbl90IG1mbjsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBnZm4gPSBJTlZBTElEX0dGTiwgcGFn ZWNudDsKIAogICAgICAgICBwYWdlY250ID0gbWluX3QobG9uZywgUEFHRV9TSVpFIC0gKGFkZHIg JiB+UEFHRV9NQVNLKSwgbGVuKTsKIAogICAgICAgICBtZm4gPSAoaGFzX2h2bV9jb250YWluZXJf ZG9tYWluKGRwKQogICAgICAgICAgICAgICAgPyBkYmdfaHZtX3ZhMm1mbihhZGRyLCBkcCwgdG9h ZGRyLCAmZ2ZuKQogICAgICAgICAgICAgICAgOiBkYmdfcHZfdmEybWZuKGFkZHIsIGRwLCBwZ2Qz KSk7Ci0gICAgICAgIGlmICggbWZuID09IElOVkFMSURfTUZOICkgCisgICAgICAgIGlmICggbWZu X2VxKG1mbiwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIHZh ID0gbWFwX2RvbWFpbl9wYWdlKF9tZm4obWZuKSk7CisgICAgICAgIHZhID0gbWFwX2RvbWFpbl9w YWdlKG1mbik7CiAgICAgICAgIHZhID0gdmEgKyAoYWRkciAmIChQQUdFX1NJWkUtMSkpOwogCiAg ICAgICAgIGlmICggdG9hZGRyICkKICAgICAgICAgewogICAgICAgICAgICAgY29weV9mcm9tX3Vz ZXIodmEsIGJ1ZiwgcGFnZWNudCk7ICAgIC8qIHZhID0gYnVmICovCi0gICAgICAgICAgICBwYWdp bmdfbWFya19kaXJ0eShkcCwgbWZuKTsKKyAgICAgICAgICAgIHBhZ2luZ19tYXJrX2RpcnR5KGRw LCBtZm5feChtZm4pKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKZGlmZiAt LWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCmlu ZGV4IDdmOTkwODcuLjIzNzU3YTQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMK KysrIGIveGVuL2FyY2gveDg2L2h2bS9odm0uYwpAQCAtMTc5NCw3ICsxNzk0LDcgQEAgaW50IGh2 bV9oYXBfbmVzdGVkX3BhZ2VfZmF1bHQocGFkZHJfdCBncGEsIHVuc2lnbmVkIGxvbmcgZ2xhLAog ICAgICAgICBwMm0gPSBob3N0cDJtOwogCiAgICAgLyogQ2hlY2sgYWNjZXNzIHBlcm1pc3Npb25z IGZpcnN0LCB0aGVuIGhhbmRsZSBmYXVsdHMgKi8KLSAgICBpZiAoIG1mbl94KG1mbikgIT0gSU5W QUxJRF9NRk4gKQorICAgIGlmICggIW1mbl9lcShtZm4sIElOVkFMSURfTUZOKSApCiAgICAgewog ICAgICAgICBib29sX3QgdmlvbGF0aW9uOwogCkBAIC01Mjk3LDggKzUyOTcsOCBAQCBzdGF0aWMg aW50IGRvX2FsdHAybV9vcCgKICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKIAogICAgICAgICBp ZiAoIChnZm5feCh2Y3B1X2FsdHAybShjdXJyKS52ZWluZm9fZ2ZuKSAhPSBJTlZBTElEX0dGTikg fHwKLSAgICAgICAgICAgICAobWZuX3goZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChjdXJyLT5kb21h aW4sCi0gICAgICAgICAgICAgICAgICAgIGEudS5lbmFibGVfbm90aWZ5LmdmbiwgJnAybXQpKSA9 PSBJTlZBTElEX01GTikgKQorICAgICAgICAgICAgIG1mbl9lcShnZXRfZ2ZuX3F1ZXJ5X3VubG9j a2VkKGN1cnItPmRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgYS51LmVuYWJsZV9ub3RpZnku Z2ZuLCAmcDJtdCksIElOVkFMSURfTUZOKSApCiAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsK IAogICAgICAgICB2Y3B1X2FsdHAybShjdXJyKS52ZWluZm9fZ2ZuID0gX2dmbihhLnUuZW5hYmxl X25vdGlmeS5nZm4pOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jIGIv eGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jCmluZGV4IDgyNTNmZDAuLjE3MzRiN2UgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYworKysgYi94ZW4vYXJjaC94ODYvaHZt L3ZpcmlkaWFuLmMKQEAgLTE5NSw4ICsxOTUsOCBAQCBzdGF0aWMgdm9pZCBlbmFibGVfaHlwZXJj YWxsX3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCkKICAgICB7CiAgICAgICAgIGlmICggcGFnZSApCiAg ICAgICAgICAgICBwdXRfcGFnZShwYWdlKTsKLSAgICAgICAgZ2RwcmludGsoWEVOTE9HX1dBUk5J TkcsICJCYWQgR01GTiAlbHggKE1GTiAlbHgpXG4iLCBnbWZuLAotICAgICAgICAgICAgICAgICBw YWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBJTlZBTElEX01GTik7CisgICAgICAgIGdkcHJpbnRr KFhFTkxPR19XQVJOSU5HLCAiQmFkIEdNRk4gJSMiUFJJX2dmbiIgKE1GTiAlIyJQUklfbWZuIilc biIsCisgICAgICAgICAgICAgICAgIGdtZm4sIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IG1m bl94KElOVkFMSURfTUZOKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2OCw4ICsy NjgsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplX2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2 KQogICAgIHJldHVybjsKIAogIGZhaWw6Ci0gICAgZ2RwcmludGsoWEVOTE9HX1dBUk5JTkcsICJC YWQgR01GTiAlbHggKE1GTiAlbHgpXG4iLCBnbWZuLAotICAgICAgICAgICAgIHBhZ2UgPyBwYWdl X3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKTsKKyAgICBnZHByaW50ayhYRU5MT0dfV0FSTklO RywgIkJhZCBHTUZOICUjIlBSSV9nZm4iIChNRk4gJSMiUFJJX21mbiIpXG4iLCBnbWZuLAorICAg ICAgICAgICAgIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IG1mbl94KElOVkFMSURfTUZOKSk7 CiB9CiAKIHN0YXRpYyB2b2lkIHRlYXJkb3duX2FwaWNfYXNzaXN0KHN0cnVjdCB2Y3B1ICp2KQpA QCAtMzQ4LDggKzM0OCw4IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9yZWZlcmVuY2VfdHNjKHN0cnVj dCBkb21haW4gKmQsIGJvb2xfdCBpbml0aWFsaXplKQogICAgIHsKICAgICAgICAgaWYgKCBwYWdl ICkKICAgICAgICAgICAgIHB1dF9wYWdlKHBhZ2UpOwotICAgICAgICBnZHByaW50ayhYRU5MT0df V0FSTklORywgIkJhZCBHTUZOICVseCAoTUZOICVseClcbiIsIGdtZm4sCi0gICAgICAgICAgICAg ICAgIHBhZ2UgPyBwYWdlX3RvX21mbihwYWdlKSA6IElOVkFMSURfTUZOKTsKKyAgICAgICAgZ2Rw cmludGsoWEVOTE9HX1dBUk5JTkcsICJCYWQgR01GTiAlIyJQUklfZ2ZuIiAoTUZOICUjIlBSSV9t Zm4iKVxuIiwKKyAgICAgICAgICAgICAgICAgZ21mbiwgcGFnZSA/IHBhZ2VfdG9fbWZuKHBhZ2Up IDogbWZuX3goSU5WQUxJRF9NRk4pKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92 bXguYwppbmRleCAwNzc2ZDEyLi5lMmQ2OWQ4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZt L3ZteC92bXguYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwpAQCAtMjAyNCw3ICsy MDI0LDcgQEAgc3RhdGljIHZvaWQgdm14X3ZjcHVfdXBkYXRlX3ZtZnVuY192ZShzdHJ1Y3QgdmNw dSAqdikKIAogICAgICAgICAgICAgbWZuID0gZ2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBnZm5f eCh2Y3B1X2FsdHAybSh2KS52ZWluZm9fZ2ZuKSwgJnQpOwogCi0gICAgICAgICAgICBpZiAoIG1m bl94KG1mbikgIT0gSU5WQUxJRF9NRk4gKQorICAgICAgICAgICAgaWYgKCAhbWZuX2VxKG1mbiwg SU5WQUxJRF9NRk4pICkKICAgICAgICAgICAgICAgICBfX3Ztd3JpdGUoVklSVF9FWENFUFRJT05f SU5GTywgbWZuX3gobWZuKSA8PCBQQUdFX1NISUZUKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg ICAgICAgICAgICB2LT5hcmNoLmh2bV92bXguc2Vjb25kYXJ5X2V4ZWNfY29udHJvbCAmPQpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL2d1ZXN0X3dhbGsuYyBiL3hlbi9hcmNoL3g4Ni9tbS9n dWVzdF93YWxrLmMKaW5kZXggZTg1MDUwMi4uODY4ZTkwOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L21tL2d1ZXN0X3dhbGsuYworKysgYi94ZW4vYXJjaC94ODYvbW0vZ3Vlc3Rfd2Fsay5jCkBA IC0yODEsNyArMjgxLDcgQEAgZ3Vlc3Rfd2Fsa190YWJsZXMoc3RydWN0IHZjcHUgKnYsIHN0cnVj dCBwMm1fZG9tYWluICpwMm0sCiAgICAgICAgIHN0YXJ0ID0gX2dmbigoZ2ZuX3goc3RhcnQpICYg fkdVRVNUX0wzX0dGTl9NQVNLKSArCiAgICAgICAgICAgICAgICAgICAgICAoKHZhID4+IFBBR0Vf U0hJRlQpICYgR1VFU1RfTDNfR0ZOX01BU0spKTsKICAgICAgICAgZ3ctPmwxZSA9IGd1ZXN0X2wx ZV9mcm9tX2dmbihzdGFydCwgZmxhZ3MpOwotICAgICAgICBndy0+bDJtZm4gPSBndy0+bDFtZm4g PSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgZ3ctPmwybWZuID0gZ3ctPmwxbWZuID0gSU5W QUxJRF9NRk47CiAgICAgICAgIGdvdG8gc2V0X2FkOwogICAgIH0KIApAQCAtMzU2LDcgKzM1Niw3 IEBAIGd1ZXN0X3dhbGtfdGFibGVzKHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgcDJtX2RvbWFpbiAq cDJtLAogICAgICAgICBzdGFydCA9IF9nZm4oKGdmbl94KHN0YXJ0KSAmIH5HVUVTVF9MMl9HRk5f TUFTSykgKwogICAgICAgICAgICAgICAgICAgICAgZ3Vlc3RfbDFfdGFibGVfb2Zmc2V0KHZhKSk7 CiAgICAgICAgIGd3LT5sMWUgPSBndWVzdF9sMWVfZnJvbV9nZm4oc3RhcnQsIGZsYWdzKTsKLSAg ICAgICAgZ3ctPmwxbWZuID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgIGd3LT5sMW1mbiA9 IElOVkFMSURfTUZOOwogICAgIH0gCiAgICAgZWxzZSAKICAgICB7CmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvbW0vaGFwL2hhcC5jIGIveGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYwppbmRleCA5 YzJjZDQ5Li4zMjE4ZmEyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCisr KyBiL3hlbi9hcmNoL3g4Ni9tbS9oYXAvaGFwLmMKQEAgLTQzMCw3ICs0MzAsNyBAQCBzdGF0aWMg bWZuX3QgaGFwX21ha2VfbW9uaXRvcl90YWJsZShzdHJ1Y3QgdmNwdSAqdikKICBvb206CiAgICAg SEFQX0VSUk9SKCJvdXQgb2YgbWVtb3J5IGJ1aWxkaW5nIG1vbml0b3IgcGFnZXRhYmxlXG4iKTsK ICAgICBkb21haW5fY3Jhc2goZCk7Ci0gICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOworICAg IHJldHVybiBJTlZBTElEX01GTjsKIH0KIAogc3RhdGljIHZvaWQgaGFwX2Rlc3Ryb3lfbW9uaXRv cl90YWJsZShzdHJ1Y3QgdmNwdSogdiwgbWZuX3QgbW1mbikKQEAgLTUwOSw3ICs1MDksNyBAQCBp bnQgaGFwX2VuYWJsZShzdHJ1Y3QgZG9tYWluICpkLCB1MzIgbW9kZSkKICAgICAgICAgfQogCiAg ICAgICAgIGZvciAoIGkgPSAwOyBpIDwgTUFYX0VQVFA7IGkrKyApCi0gICAgICAgICAgICBkLT5h cmNoLmFsdHAybV9lcHRwW2ldID0gSU5WQUxJRF9NRk47CisgICAgICAgICAgICBkLT5hcmNoLmFs dHAybV9lcHRwW2ldID0gbWZuX3goSU5WQUxJRF9NRk4pOwogCiAgICAgICAgIGZvciAoIGkgPSAw OyBpIDwgTUFYX0FMVFAyTTsgaSsrICkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEveGVuL2FyY2gv eDg2L21tL3AybS1lcHQuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKaW5kZXggNzE2NmM3 MS4uNmQwMzczNiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYworKysgYi94 ZW4vYXJjaC94ODYvbW0vcDJtLWVwdC5jCkBAIC01MCw3ICs1MCw3IEBAIHN0YXRpYyBpbnQgYXRv bWljX3dyaXRlX2VwdF9lbnRyeShlcHRfZW50cnlfdCAqZW50cnlwdHIsIGVwdF9lbnRyeV90IG5l dywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWwpCiB7CiAgICAg aW50IHJjOwotICAgIHVuc2lnbmVkIGxvbmcgb2xkbWZuID0gSU5WQUxJRF9NRk47CisgICAgdW5z aWduZWQgbG9uZyBvbGRtZm4gPSBtZm5feChJTlZBTElEX01GTik7CiAgICAgYm9vbF90IGNoZWNr X2ZvcmVpZ24gPSAobmV3Lm1mbiAhPSBlbnRyeXB0ci0+bWZuIHx8CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV3LnNhX3AybXQgIT0gZW50cnlwdHItPnNhX3AybXQpOwogCkBAIC05MSw3 ICs5MSw3IEBAIHN0YXRpYyBpbnQgYXRvbWljX3dyaXRlX2VwdF9lbnRyeShlcHRfZW50cnlfdCAq ZW50cnlwdHIsIGVwdF9lbnRyeV90IG5ldywKIAogICAgIHdyaXRlX2F0b21pYygmZW50cnlwdHIt PmVwdGUsIG5ldy5lcHRlKTsKIAotICAgIGlmICggdW5saWtlbHkob2xkbWZuICE9IElOVkFMSURf TUZOKSApCisgICAgaWYgKCB1bmxpa2VseShvbGRtZm4gIT0gbWZuX3goSU5WQUxJRF9NRk4pKSAp CiAgICAgICAgIHB1dF9wYWdlKG1mbl90b19wYWdlKG9sZG1mbikpOwogCiAgICAgcmMgPSAwOwpA QCAtODg3LDcgKzg4Nyw3IEBAIHN0YXRpYyBtZm5fdCBlcHRfZ2V0X2VudHJ5KHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sCiAgICAgaW50IGk7CiAgICAgaW50IHJldCA9IDA7CiAgICAgYm9vbF90IHJl Y2FsYyA9IDA7Ci0gICAgbWZuX3QgbWZuID0gX21mbihJTlZBTElEX01GTik7CisgICAgbWZuX3Qg bWZuID0gSU5WQUxJRF9NRk47CiAgICAgc3RydWN0IGVwdF9kYXRhICplcHQgPSAmcDJtLT5lcHQ7 CiAKICAgICAqdCA9IHAybV9tbWlvX2RtOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3Ay bS1wb2QuYyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcG9kLmMKaW5kZXggYjdhYjE2OS4uZjM4NDU4 OSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1wb2QuYworKysgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLXBvZC5jCkBAIC01NTksNyArNTU5LDcgQEAgcDJtX3BvZF9kZWNyZWFzZV9yZXNl cnZhdGlvbihzdHJ1Y3QgZG9tYWluICpkLAogICAgIHsKICAgICAgICAgLyogQWxsIFBvRDogTWFy ayB0aGUgd2hvbGUgcmVnaW9uIGludmFsaWQgYW5kIHRlbGwgY2FsbGVyCiAgICAgICAgICAqIHdl J3JlIGRvbmUuICovCi0gICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBncGZuLCBfbWZuKElOVkFM SURfTUZOKSwgb3JkZXIsIHAybV9pbnZhbGlkLAorICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwg Z3BmbiwgSU5WQUxJRF9NRk4sIG9yZGVyLCBwMm1faW52YWxpZCwKICAgICAgICAgICAgICAgICAg ICAgICBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKICAgICAgICAgcDJtLT5wb2QuZW50cnlfY291bnQt PSgxPDxvcmRlcik7CiAgICAgICAgIEJVR19PTihwMm0tPnBvZC5lbnRyeV9jb3VudCA8IDApOwpA QCAtNjAyLDcgKzYwMiw3IEBAIHAybV9wb2RfZGVjcmVhc2VfcmVzZXJ2YXRpb24oc3RydWN0IGRv bWFpbiAqZCwKICAgICAgICAgbiA9IDFVTCA8PCBjdXJfb3JkZXI7CiAgICAgICAgIGlmICggdCA9 PSBwMm1fcG9wdWxhdGVfb25fZGVtYW5kICkKICAgICAgICAgewotICAgICAgICAgICAgcDJtX3Nl dF9lbnRyeShwMm0sIGdwZm4gKyBpLCBfbWZuKElOVkFMSURfTUZOKSwgY3VyX29yZGVyLAorICAg ICAgICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBpLCBJTlZBTElEX01GTiwgY3VyX29y ZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJtLT5kZWZhdWx0 X2FjY2Vzcyk7CiAgICAgICAgICAgICBwMm0tPnBvZC5lbnRyeV9jb3VudCAtPSBuOwogICAgICAg ICAgICAgQlVHX09OKHAybS0+cG9kLmVudHJ5X2NvdW50IDwgMCk7CkBAIC02MjQsNyArNjI0LDcg QEAgcDJtX3BvZF9kZWNyZWFzZV9yZXNlcnZhdGlvbihzdHJ1Y3QgZG9tYWluICpkLAogCiAgICAg ICAgICAgICBwYWdlID0gbWZuX3RvX3BhZ2UobWZuKTsKIAotICAgICAgICAgICAgcDJtX3NldF9l bnRyeShwMm0sIGdwZm4gKyBpLCBfbWZuKElOVkFMSURfTUZOKSwgY3VyX29yZGVyLAorICAgICAg ICAgICAgcDJtX3NldF9lbnRyeShwMm0sIGdwZm4gKyBpLCBJTlZBTElEX01GTiwgY3VyX29yZGVy LAogICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJtLT5kZWZhdWx0X2Fj Y2Vzcyk7CiAgICAgICAgICAgICBwMm1fdGxiX2ZsdXNoX3N5bmMocDJtKTsKICAgICAgICAgICAg IGZvciAoIGogPSAwOyBqIDwgbjsgKytqICkKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIHAybV9w b2RfZHVtcF9kYXRhKHN0cnVjdCBkb21haW4gKmQpCiBzdGF0aWMgaW50CiBwMm1fcG9kX3plcm9f Y2hlY2tfc3VwZXJwYWdlKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2Zu KQogewotICAgIG1mbl90IG1mbiwgbWZuMCA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgIG1mbl90 IG1mbiwgbWZuMCA9IElOVkFMSURfTUZOOwogICAgIHAybV90eXBlX3QgdHlwZSwgdHlwZTAgPSAw OwogICAgIHVuc2lnbmVkIGxvbmcgKiBtYXAgPSBOVUxMOwogICAgIGludCByZXQ9MCwgcmVzZXQg PSAwOwpAQCAtNzU0LDcgKzc1NCw3IEBAIHAybV9wb2RfemVyb19jaGVja19zdXBlcnBhZ2Uoc3Ry dWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4pCiAgICAgfQogCiAgICAgLyog VHJ5IHRvIHJlbW92ZSB0aGUgcGFnZSwgcmVzdG9yaW5nIG9sZCBtYXBwaW5nIGlmIGl0IGZhaWxz LiAqLwotICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm4sIF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdF X09SREVSXzJNLAorICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm4sIElOVkFMSURfTUZOLCBQQUdF X09SREVSXzJNLAogICAgICAgICAgICAgICAgICAgcDJtX3BvcHVsYXRlX29uX2RlbWFuZCwgcDJt LT5kZWZhdWx0X2FjY2Vzcyk7CiAgICAgcDJtX3RsYl9mbHVzaF9zeW5jKHAybSk7CiAKQEAgLTg3 MSw3ICs4NzEsNyBAQCBwMm1fcG9kX3plcm9fY2hlY2soc3RydWN0IHAybV9kb21haW4gKnAybSwg dW5zaWduZWQgbG9uZyAqZ2ZucywgaW50IGNvdW50KQogICAgICAgICB9CiAKICAgICAgICAgLyog VHJ5IHRvIHJlbW92ZSB0aGUgcGFnZSwgcmVzdG9yaW5nIG9sZCBtYXBwaW5nIGlmIGl0IGZhaWxz LiAqLwotICAgICAgICBwMm1fc2V0X2VudHJ5KHAybSwgZ2Zuc1tpXSwgX21mbihJTlZBTElEX01G TiksIFBBR0VfT1JERVJfNEssCisgICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5zW2ldLCBJ TlZBTElEX01GTiwgUEFHRV9PUkRFUl80SywKICAgICAgICAgICAgICAgICAgICAgICBwMm1fcG9w dWxhdGVfb25fZGVtYW5kLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKIAogICAgICAgICAvKiBTZWUg aWYgdGhlIHBhZ2Ugd2FzIHN1Y2Nlc3NmdWxseSB1bm1hcHBlZC4gIChBbGxvdyBvbmUgcmVmY291 bnQKQEAgLTEwNzMsNyArMTA3Myw3IEBAIHAybV9wb2RfZGVtYW5kX3BvcHVsYXRlKHN0cnVjdCBw Mm1fZG9tYWluICpwMm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLAogICAgICAgICAgKiBOT1RFOiBJbiBh IGZpbmUtZ3JhaW5lZCBwMm0gbG9ja2luZyBzY2VuYXJpbyB0aGlzIG9wZXJhdGlvbgogICAgICAg ICAgKiBtYXkgbmVlZCB0byBwcm9tb3RlIGl0cyBsb2NraW5nIGZyb20gZ2ZuLT4xZyBzdXBlcnBh Z2UKICAgICAgICAgICovCi0gICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5fYWxpZ25lZCwg X21mbihJTlZBTElEX01GTiksIFBBR0VfT1JERVJfMk0sCisgICAgICAgIHAybV9zZXRfZW50cnko cDJtLCBnZm5fYWxpZ25lZCwgSU5WQUxJRF9NRk4sIFBBR0VfT1JERVJfMk0sCiAgICAgICAgICAg ICAgICAgICAgICAgcDJtX3BvcHVsYXRlX29uX2RlbWFuZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7 CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTExNTcsNyArMTE1Nyw3IEBAIHJlbWFwX2Fu ZF9yZXRyeToKICAgICAgKiBuZWVkIHByb21vdGluZyB0aGUgZ2ZuIGxvY2sgZnJvbSBnZm4tPjJN IHN1cGVycGFnZSAqLwogICAgIGdmbl9hbGlnbmVkID0gKGdmbj4+b3JkZXIpPDxvcmRlcjsKICAg ICBmb3IoaT0wOyBpPCgxPDxvcmRlcik7IGkrKykKLSAgICAgICAgcDJtX3NldF9lbnRyeShwMm0s IGdmbl9hbGlnbmVkICsgaSwgX21mbihJTlZBTElEX01GTiksIFBBR0VfT1JERVJfNEssCisgICAg ICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5fYWxpZ25lZCArIGksIElOVkFMSURfTUZOLCBQQUdF X09SREVSXzRLLAogICAgICAgICAgICAgICAgICAgICAgIHAybV9wb3B1bGF0ZV9vbl9kZW1hbmQs IHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwogICAgIGlmICggdGJfaW5pdF9kb25lICkKICAgICB7CkBA IC0xMjE1LDcgKzEyMTUsNyBAQCBndWVzdF9waHlzbWFwX21hcmtfcG9wdWxhdGVfb25fZGVtYW5k KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLAogICAgIH0KIAogICAgIC8qIE5v dywgYWN0dWFsbHkgZG8gdGhlIHR3by13YXkgbWFwcGluZyAqLwotICAgIHJjID0gcDJtX3NldF9l bnRyeShwMm0sIGdmbiwgX21mbihJTlZBTElEX01GTiksIG9yZGVyLAorICAgIHJjID0gcDJtX3Nl dF9lbnRyeShwMm0sIGdmbiwgSU5WQUxJRF9NRk4sIG9yZGVyLAogICAgICAgICAgICAgICAgICAg ICAgICBwMm1fcG9wdWxhdGVfb25fZGVtYW5kLCBwMm0tPmRlZmF1bHRfYWNjZXNzKTsKICAgICBp ZiAoIHJjID09IDAgKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQu YyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tcHQuYwppbmRleCA0OTgwOTM0Li4yYjZlODllIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKKysrIGIveGVuL2FyY2gveDg2L21tL3Ay bS1wdC5jCkBAIC01MTEsNyArNTExLDcgQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2Rv bWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwgbWZuX3QgbWZuLAogICAgICAqIHRoZSBpbnRl cm1lZGlhdGUgb25lIG1pZ2h0IGJlKS4KICAgICAgKi8KICAgICB1bnNpZ25lZCBpbnQgZmxhZ3Ms IGlvbW11X29sZF9mbGFncyA9IDA7Ci0gICAgdW5zaWduZWQgbG9uZyBvbGRfbWZuID0gSU5WQUxJ RF9NRk47CisgICAgdW5zaWduZWQgbG9uZyBvbGRfbWZuID0gbWZuX3goSU5WQUxJRF9NRk4pOwog CiAgICAgQVNTRVJUKHN2ZSAhPSAwKTsKIApAQCAtNzY0LDcgKzc2NCw3IEBAIHAybV9wdF9nZXRf ZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sCiAgICAgICAg ICAgICAgICAgICAgICBwMm0tPm1heF9tYXBwZWRfcGZuICkKICAgICAgICAgICAgICAgICAgICAg YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOworICAg ICAgICByZXR1cm4gSU5WQUxJRF9NRk47CiAgICAgfQogCiAgICAgbWZuID0gcGFnZXRhYmxlX2dl dF9tZm4ocDJtX2dldF9wYWdldGFibGUocDJtKSk7CkBAIC03NzcsNyArNzc3LDcgQEAgcDJtX3B0 X2dldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwKICAg ICAgICAgaWYgKCAobDRlX2dldF9mbGFncygqbDRlKSAmIF9QQUdFX1BSRVNFTlQpID09IDAgKQog ICAgICAgICB7CiAgICAgICAgICAgICB1bm1hcF9kb21haW5fcGFnZShsNGUpOwotICAgICAgICAg ICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAgcmV0dXJuIElOVkFMSURf TUZOOwogICAgICAgICB9CiAgICAgICAgIG1mbiA9IF9tZm4obDRlX2dldF9wZm4oKmw0ZSkpOwog ICAgICAgICByZWNhbGMgPSBuZWVkc19yZWNhbGMobDQsICpsNGUpOwpAQCAtODA1LDcgKzgwNSw3 IEBAIHBvZF9yZXRyeV9sMzoKICAgICAgICAgICAgICAgICAgICAgKnQgPSBwMm1fcG9wdWxhdGVf b25fZGVtYW5kOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2Uo bDNlKTsKLSAgICAgICAgICAgIHJldHVybiBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgICAg IHJldHVybiBJTlZBTElEX01GTjsKICAgICAgICAgfQogICAgICAgICBpZiAoIGZsYWdzICYgX1BB R0VfUFNFICkKICAgICAgICAgewpAQCAtODE3LDcgKzgxNyw3IEBAIHBvZF9yZXRyeV9sMzoKICAg ICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwzZSk7CiAKICAgICAgICAgICAgIEFTU0VSVCht Zm5fdmFsaWQobWZuKSB8fCAhcDJtX2lzX3JhbSgqdCkpOwotICAgICAgICAgICAgcmV0dXJuIChw Mm1faXNfdmFsaWQoKnQpKSA/IG1mbiA6IF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICAgICAg cmV0dXJuIChwMm1faXNfdmFsaWQoKnQpKSA/IG1mbiA6IElOVkFMSURfTUZOOwogICAgICAgICB9 CiAKICAgICAgICAgbWZuID0gX21mbihsM2VfZ2V0X3BmbigqbDNlKSk7CkBAIC04NDYsNyArODQ2 LDcgQEAgcG9kX3JldHJ5X2wyOgogICAgICAgICB9CiAgICAgCiAgICAgICAgIHVubWFwX2RvbWFp bl9wYWdlKGwyZSk7Ci0gICAgICAgIHJldHVybiBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAg cmV0dXJuIElOVkFMSURfTUZOOwogICAgIH0KICAgICBpZiAoIGZsYWdzICYgX1BBR0VfUFNFICkK ICAgICB7CkBAIC04NTYsNyArODU2LDcgQEAgcG9kX3JldHJ5X2wyOgogICAgICAgICB1bm1hcF9k b21haW5fcGFnZShsMmUpOwogICAgICAgICAKICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm4p IHx8ICFwMm1faXNfcmFtKCp0KSk7Ci0gICAgICAgIHJldHVybiAocDJtX2lzX3ZhbGlkKCp0KSkg PyBtZm4gOiBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgcmV0dXJuIChwMm1faXNfdmFsaWQo KnQpKSA/IG1mbiA6IElOVkFMSURfTUZOOwogICAgIH0KIAogICAgIG1mbiA9IF9tZm4obDJlX2dl dF9wZm4oKmwyZSkpOwpAQCAtODg1LDE0ICs4ODUsMTQgQEAgcG9kX3JldHJ5X2wxOgogICAgICAg ICB9CiAgICAgCiAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwxZSk7Ci0gICAgICAgIHJldHVy biBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfTUZOOwogICAgIH0K ICAgICBtZm4gPSBfbWZuKGwxZV9nZXRfcGZuKCpsMWUpKTsKICAgICAqdCA9IHJlY2FsY190eXBl KHJlY2FsYyB8fCBfbmVlZHNfcmVjYWxjKGZsYWdzKSwgbDF0LCBwMm0sIGdmbik7CiAgICAgdW5t YXBfZG9tYWluX3BhZ2UobDFlKTsKIAogICAgIEFTU0VSVChtZm5fdmFsaWQobWZuKSB8fCAhcDJt X2lzX3JhbSgqdCkgfHwgcDJtX2lzX3BhZ2luZygqdCkpOwotICAgIHJldHVybiAocDJtX2lzX3Zh bGlkKCp0KSB8fCBwMm1faXNfZ3JhbnQoKnQpKSA/IG1mbiA6IF9tZm4oSU5WQUxJRF9NRk4pOwor ICAgIHJldHVybiAocDJtX2lzX3ZhbGlkKCp0KSB8fCBwMm1faXNfZ3JhbnQoKnQpKSA/IG1mbiA6 IElOVkFMSURfTUZOOwogfQogCiBzdGF0aWMgdm9pZCBwMm1fcHRfY2hhbmdlX2VudHJ5X3R5cGVf Z2xvYmFsKHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv bW0vcDJtLmMgYi94ZW4vYXJjaC94ODYvbW0vcDJtLmMKaW5kZXggNjI1OGE1Yi4uYjkzYzhhMiAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9w Mm0uYwpAQCAtMzg4LDcgKzM4OCw3IEBAIG1mbl90IF9fZ2V0X2dmbl90eXBlX2FjY2VzcyhzdHJ1 Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZCBsb25nIGdmbiwKICAgICBpZiAodW5saWtlbHko KHAybV9pc19icm9rZW4oKnQpKSkpCiAgICAgewogICAgICAgICAvKiBSZXR1cm4gaW52YWxpZF9t Zm4gdG8gYXZvaWQgY2FsbGVyJ3MgYWNjZXNzICovCi0gICAgICAgIG1mbiA9IF9tZm4oSU5WQUxJ RF9NRk4pOworICAgICAgICBtZm4gPSBJTlZBTElEX01GTjsKICAgICAgICAgaWYgKCBxICYgUDJN X0FMTE9DICkKICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChwMm0tPmRvbWFpbik7CiAgICAgfQpA QCAtNDkzLDggKzQ5Myw4IEBAIGludCBwMm1fc2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpw Mm0sIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgICAgICAgICByYyA9IHNldF9y YzsKIAogICAgICAgICBnZm4gKz0gMXVsIDw8IG9yZGVyOwotICAgICAgICBpZiAoIG1mbl94KG1m bikgIT0gSU5WQUxJRF9NRk4gKQotICAgICAgICAgICAgbWZuID0gX21mbihtZm5feChtZm4pICsg KDF1bCA8PCBvcmRlcikpOworICAgICAgICBpZiAoICFtZm5fZXEobWZuLCBJTlZBTElEX01GTikg KQorICAgICAgICAgICAgbWZuID0gbWZuX2FkZChtZm4sIDF1bCA8PCBvcmRlcik7CiAgICAgICAg IHRvZG8gLT0gMXVsIDw8IG9yZGVyOwogICAgIH0KIApAQCAtNTgwLDcgKzU4MCw3IEBAIGludCBw Mm1fYWxsb2NfdGFibGUoc3RydWN0IHAybV9kb21haW4gKnAybSkKIAogICAgIC8qIEluaXRpYWxp c2UgcGh5c21hcCB0YWJsZXMgZm9yIHNsb3QgemVyby4gT3RoZXIgY29kZSBhc3N1bWVzIHRoaXMu ICovCiAgICAgcDJtLT5kZWZlcl9uZXN0ZWRfZmx1c2ggPSAxOwotICAgIHJjID0gcDJtX3NldF9l bnRyeShwMm0sIDAsIF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdFX09SREVSXzRLLAorICAgIHJjID0g cDJtX3NldF9lbnRyeShwMm0sIDAsIElOVkFMSURfTUZOLCBQQUdFX09SREVSXzRLLAogICAgICAg ICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CiAgICAg cDJtLT5kZWZlcl9uZXN0ZWRfZmx1c2ggPSAwOwogICAgIHAybV91bmxvY2socDJtKTsKQEAgLTY3 MCw3ICs2NzAsNyBAQCBwMm1fcmVtb3ZlX3BhZ2Uoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5z aWduZWQgbG9uZyBnZm4sIHVuc2lnbmVkIGxvbmcgbWZuLAogICAgICAgICAgICAgQVNTRVJUKCAh cDJtX2lzX3ZhbGlkKHQpIHx8IG1mbiArIGkgPT0gbWZuX3gobWZuX3JldHVybikgKTsKICAgICAg ICAgfQogICAgIH0KLSAgICByZXR1cm4gcDJtX3NldF9lbnRyeShwMm0sIGdmbiwgX21mbihJTlZB TElEX01GTiksIHBhZ2Vfb3JkZXIsIHAybV9pbnZhbGlkLAorICAgIHJldHVybiBwMm1fc2V0X2Vu dHJ5KHAybSwgZ2ZuLCBJTlZBTElEX01GTiwgcGFnZV9vcmRlciwgcDJtX2ludmFsaWQsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgcDJtLT5kZWZhdWx0X2FjY2Vzcyk7CiB9CiAKQEAgLTg0MCw3 ICs4NDAsNyBAQCBndWVzdF9waHlzbWFwX2FkZF9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCBnZm5f dCBnZm4sIG1mbl90IG1mbiwKICAgICB7CiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5H LCAiQWRkaW5nIGJhZCBtZm4gdG8gcDJtIG1hcCAoJSNseCAtPiAlI2x4KVxuIiwKICAgICAgICAg ICAgICAgICAgZ2ZuX3goZ2ZuKSwgbWZuX3gobWZuKSk7Ci0gICAgICAgIHJjID0gcDJtX3NldF9l bnRyeShwMm0sIGdmbl94KGdmbiksIF9tZm4oSU5WQUxJRF9NRk4pLCBwYWdlX29yZGVyLAorICAg ICAgICByYyA9IHAybV9zZXRfZW50cnkocDJtLCBnZm5feChnZm4pLCBJTlZBTElEX01GTiwgcGFn ZV9vcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV9pbnZhbGlkLCBwMm0tPmRl ZmF1bHRfYWNjZXNzKTsKICAgICAgICAgaWYgKCByYyA9PSAwICkKICAgICAgICAgewpAQCAtMTEw Nyw3ICsxMTA3LDcgQEAgaW50IGNsZWFyX21taW9fcDJtX2VudHJ5KHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCiAgICAgfQogCiAgICAgLyogRG8gbm90IHVz ZSBtZm5fdmFsaWQoKSBoZXJlIGFzIGl0IHdpbGwgdXN1YWxseSBmYWlsIGZvciBNTUlPIHBhZ2Vz LiAqLwotICAgIGlmICggKElOVkFMSURfTUZOID09IG1mbl94KGFjdHVhbF9tZm4pKSB8fCAodCAh PSBwMm1fbW1pb19kaXJlY3QpICkKKyAgICBpZiAoIG1mbl9lcShhY3R1YWxfbWZuLCBJTlZBTElE X01GTikgfHwgKHQgIT0gcDJtX21taW9fZGlyZWN0KSApCiAgICAgewogICAgICAgICBnZHByaW50 ayhYRU5MT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZ2ZuX3RvX21mbiBmYWlsZWQhIGdmbj0l MDhseCB0eXBlOiVkXG4iLCBnZm4sIHQpOwpAQCAtMTExNyw3ICsxMTE3LDcgQEAgaW50IGNsZWFy X21taW9fcDJtX2VudHJ5KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGxvbmcgZ2ZuLCBtZm5f dCBtZm4sCiAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLAogICAgICAgICAgICAgICAg ICAibm8gbWFwcGluZyBiZXR3ZWVuIG1mbiAlMDhseCBhbmQgZ2ZuICUwOGx4XG4iLAogICAgICAg ICAgICAgICAgICBtZm5feChtZm4pLCBnZm4pOwotICAgIHJjID0gcDJtX3NldF9lbnRyeShwMm0s IGdmbiwgX21mbihJTlZBTElEX01GTiksIG9yZGVyLCBwMm1faW52YWxpZCwKKyAgICByYyA9IHAy bV9zZXRfZW50cnkocDJtLCBnZm4sIElOVkFMSURfTUZOLCBvcmRlciwgcDJtX2ludmFsaWQsCiAg ICAgICAgICAgICAgICAgICAgICAgIHAybS0+ZGVmYXVsdF9hY2Nlc3MpOwogCiAgb3V0OgpAQCAt MTE0Niw3ICsxMTQ2LDcgQEAgaW50IGNsZWFyX2lkZW50aXR5X3AybV9lbnRyeShzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICBtZm4gPSBwMm0tPmdldF9lbnRyeShwMm0s IGdmbiwgJnAybXQsICZhLCAwLCBOVUxMLCBOVUxMKTsKICAgICBpZiAoIHAybXQgPT0gcDJtX21t aW9fZGlyZWN0ICYmIG1mbl94KG1mbikgPT0gZ2ZuICkKICAgICB7Ci0gICAgICAgIHJldCA9IHAy bV9zZXRfZW50cnkocDJtLCBnZm4sIF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdFX09SREVSXzRLLAor ICAgICAgICByZXQgPSBwMm1fc2V0X2VudHJ5KHAybSwgZ2ZuLCBJTlZBTElEX01GTiwgUEFHRV9P UkRFUl80SywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1faW52YWxpZCwgcDJtLT5k ZWZhdWx0X2FjY2Vzcyk7CiAgICAgICAgIGdmbl91bmxvY2socDJtLCBnZm4sIDApOwogICAgIH0K QEAgLTEzMTYsNyArMTMxNiw3IEBAIGludCBwMm1fbWVtX3BhZ2luZ19ldmljdChzdHJ1Y3QgZG9t YWluICpkLCB1bnNpZ25lZCBsb25nIGdmbikKICAgICAgICAgcHV0X3BhZ2UocGFnZSk7CiAKICAg ICAvKiBSZW1vdmUgbWFwcGluZyBmcm9tIHAybSB0YWJsZSAqLwotICAgIHJldCA9IHAybV9zZXRf ZW50cnkocDJtLCBnZm4sIF9tZm4oSU5WQUxJRF9NRk4pLCBQQUdFX09SREVSXzRLLAorICAgIHJl dCA9IHAybV9zZXRfZW50cnkocDJtLCBnZm4sIElOVkFMSURfTUZOLCBQQUdFX09SREVSXzRLLAog ICAgICAgICAgICAgICAgICAgICAgICAgcDJtX3JhbV9wYWdlZCwgYSk7CiAKICAgICAvKiBDbGVh ciBjb250ZW50IGJlZm9yZSByZXR1cm5pbmcgdGhlIHBhZ2UgdG8gWGVuICovCkBAIC0xODQ0LDcg KzE4NDQsNyBAQCBsb25nIHAybV9zZXRfbWVtX2FjY2VzcyhzdHJ1Y3QgZG9tYWluICpkLCBnZm5f dCBnZm4sIHVpbnQzMl90IG5yLAogICAgIGlmICggYWx0cDJtX2lkeCApCiAgICAgewogICAgICAg ICBpZiAoIGFsdHAybV9pZHggPj0gTUFYX0FMVFAyTSB8fAotICAgICAgICAgICAgIGQtPmFyY2gu YWx0cDJtX2VwdHBbYWx0cDJtX2lkeF0gPT0gSU5WQUxJRF9NRk4gKQorICAgICAgICAgICAgIGQt PmFyY2guYWx0cDJtX2VwdHBbYWx0cDJtX2lkeF0gPT0gbWZuX3goSU5WQUxJRF9NRk4pICkKICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCiAgICAgICAgIGFwMm0gPSBkLT5hcmNoLmFsdHAy bV9wMm1bYWx0cDJtX2lkeF07CkBAIC0xOTQyLDcgKzE5NDIsNyBAQCBpbnQgcDJtX2dldF9tZW1f YWNjZXNzKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgeGVubWVtX2FjY2Vzc190ICphY2Nl c3MpCiAgICAgbWZuID0gcDJtLT5nZXRfZW50cnkocDJtLCBnZm5feChnZm4pLCAmdCwgJmEsIDAs IE5VTEwsIE5VTEwpOwogICAgIGdmbl91bmxvY2socDJtLCBnZm4sIDApOwogCi0gICAgaWYgKCBt Zm5feChtZm4pID09IElOVkFMSURfTUZOICkKKyAgICBpZiAoIG1mbl9lcShtZm4sIElOVkFMSURf TUZOKSApCiAgICAgICAgIHJldHVybiAtRVNSQ0g7CiAgICAgCiAgICAgaWYgKCAodW5zaWduZWQp IGEgPj0gQVJSQVlfU0laRShtZW1hY2Nlc3MpICkKQEAgLTIyODgsNyArMjI4OCw3IEBAIHVuc2ln bmVkIGludCBwMm1fZmluZF9hbHRwMm1fYnlfZXB0cChzdHJ1Y3QgZG9tYWluICpkLCB1aW50NjRf dCBlcHRwKQogCiAgICAgZm9yICggaSA9IDA7IGkgPCBNQVhfQUxUUDJNOyBpKysgKQogICAgIHsK LSAgICAgICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID09IElOVkFMSURfTUZOICkKKyAg ICAgICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID09IG1mbl94KElOVkFMSURfTUZOKSAp CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBwMm0gPSBkLT5hcmNoLmFsdHAybV9w Mm1baV07CkBAIC0yMzE1LDcgKzIzMTUsNyBAQCBib29sX3QgcDJtX3N3aXRjaF92Y3B1X2FsdHAy bV9ieV9pZChzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGlkeCkKIAogICAgIGFsdHAybV9s aXN0X2xvY2soZCk7CiAKLSAgICBpZiAoIGQtPmFyY2guYWx0cDJtX2VwdHBbaWR4XSAhPSBJTlZB TElEX01GTiApCisgICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2lkeF0gIT0gbWZuX3goSU5W QUxJRF9NRk4pICkKICAgICB7CiAgICAgICAgIGlmICggaWR4ICE9IHZjcHVfYWx0cDJtKHYpLnAy bWlkeCApCiAgICAgICAgIHsKQEAgLTIzNTksMTQgKzIzNTksMTQgQEAgYm9vbF90IHAybV9hbHRw Mm1fbGF6eV9jb3B5KHN0cnVjdCB2Y3B1ICp2LCBwYWRkcl90IGdwYSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDAsICZwYWdlX29yZGVyKTsKICAgICBfX3B1dF9nZm4oKmFwMm0sIGdm bl94KGdmbikpOwogCi0gICAgaWYgKCBtZm5feChtZm4pICE9IElOVkFMSURfTUZOICkKKyAgICBp ZiAoICFtZm5fZXEobWZuLCBJTlZBTElEX01GTikgKQogICAgICAgICByZXR1cm4gMDsKIAogICAg IG1mbiA9IGdldF9nZm5fdHlwZV9hY2Nlc3MoaHAybSwgZ2ZuX3goZ2ZuKSwgJnAybXQsICZwMm1h LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUDJNX0FMTE9DIHwgUDJNX1VOU0hBUkUs ICZwYWdlX29yZGVyKTsKICAgICBfX3B1dF9nZm4oaHAybSwgZ2ZuX3goZ2ZuKSk7CiAKLSAgICBp ZiAoIG1mbl94KG1mbikgPT0gSU5WQUxJRF9NRk4gKQorICAgIGlmICggbWZuX2VxKG1mbiwgSU5W QUxJRF9NRk4pICkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBwMm1fbG9jaygqYXAybSk7CkBA IC0yNDA0LDcgKzI0MDQsNyBAQCB2b2lkIHAybV9mbHVzaF9hbHRwMm0oc3RydWN0IGRvbWFpbiAq ZCkKICAgICAgICAgLyogVW5pbml0IGFuZCByZWluaXQgZXB0IHRvIGZvcmNlIFRMQiBzaG9vdGRv d24gKi8KICAgICAgICAgZXB0X3AybV91bmluaXQoZC0+YXJjaC5hbHRwMm1fcDJtW2ldKTsKICAg ICAgICAgZXB0X3AybV9pbml0KGQtPmFyY2guYWx0cDJtX3AybVtpXSk7Ci0gICAgICAgIGQtPmFy Y2guYWx0cDJtX2VwdHBbaV0gPSBJTlZBTElEX01GTjsKKyAgICAgICAgZC0+YXJjaC5hbHRwMm1f ZXB0cFtpXSA9IG1mbl94KElOVkFMSURfTUZOKTsKICAgICB9CiAKICAgICBhbHRwMm1fbGlzdF91 bmxvY2soZCk7CkBAIC0yNDMxLDcgKzI0MzEsNyBAQCBpbnQgcDJtX2luaXRfYWx0cDJtX2J5X2lk KHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgpCiAKICAgICBhbHRwMm1fbGlzdF9s b2NrKGQpOwogCi0gICAgaWYgKCBkLT5hcmNoLmFsdHAybV9lcHRwW2lkeF0gPT0gSU5WQUxJRF9N Rk4gKQorICAgIGlmICggZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdID09IG1mbl94KElOVkFMSURf TUZOKSApCiAgICAgewogICAgICAgICBwMm1faW5pdF9hbHRwMm1faGVscGVyKGQsIGlkeCk7CiAg ICAgICAgIHJjID0gMDsKQEAgLTI0NTAsNyArMjQ1MCw3IEBAIGludCBwMm1faW5pdF9uZXh0X2Fs dHAybShzdHJ1Y3QgZG9tYWluICpkLCB1aW50MTZfdCAqaWR4KQogCiAgICAgZm9yICggaSA9IDA7 IGkgPCBNQVhfQUxUUDJNOyBpKysgKQogICAgIHsKLSAgICAgICAgaWYgKCBkLT5hcmNoLmFsdHAy bV9lcHRwW2ldICE9IElOVkFMSURfTUZOICkKKyAgICAgICAgaWYgKCBkLT5hcmNoLmFsdHAybV9l cHRwW2ldICE9IG1mbl94KElOVkFMSURfTUZOKSApCiAgICAgICAgICAgICBjb250aW51ZTsKIAog ICAgICAgICBwMm1faW5pdF9hbHRwMm1faGVscGVyKGQsIGkpOwpAQCAtMjQ3Niw3ICsyNDc2LDcg QEAgaW50IHAybV9kZXN0cm95X2FsdHAybV9ieV9pZChzdHJ1Y3QgZG9tYWluICpkLCB1bnNpZ25l ZCBpbnQgaWR4KQogCiAgICAgYWx0cDJtX2xpc3RfbG9jayhkKTsKIAotICAgIGlmICggZC0+YXJj aC5hbHRwMm1fZXB0cFtpZHhdICE9IElOVkFMSURfTUZOICkKKyAgICBpZiAoIGQtPmFyY2guYWx0 cDJtX2VwdHBbaWR4XSAhPSBtZm5feChJTlZBTElEX01GTikgKQogICAgIHsKICAgICAgICAgcDJt ID0gZC0+YXJjaC5hbHRwMm1fcDJtW2lkeF07CiAKQEAgLTI0ODYsNyArMjQ4Niw3IEBAIGludCBw Mm1fZGVzdHJveV9hbHRwMm1fYnlfaWQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IGlk eCkKICAgICAgICAgICAgIC8qIFVuaW5pdCBhbmQgcmVpbml0IGVwdCB0byBmb3JjZSBUTEIgc2hv b3Rkb3duICovCiAgICAgICAgICAgICBlcHRfcDJtX3VuaW5pdChkLT5hcmNoLmFsdHAybV9wMm1b aWR4XSk7CiAgICAgICAgICAgICBlcHRfcDJtX2luaXQoZC0+YXJjaC5hbHRwMm1fcDJtW2lkeF0p OwotICAgICAgICAgICAgZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdID0gSU5WQUxJRF9NRk47Cisg ICAgICAgICAgICBkLT5hcmNoLmFsdHAybV9lcHRwW2lkeF0gPSBtZm5feChJTlZBTElEX01GTik7 CiAgICAgICAgICAgICByYyA9IDA7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTEwLDcgKzI1MTAs NyBAQCBpbnQgcDJtX3N3aXRjaF9kb21haW5fYWx0cDJtX2J5X2lkKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGludCBpZHgpCiAKICAgICBhbHRwMm1fbGlzdF9sb2NrKGQpOwogCi0gICAgaWYg KCBkLT5hcmNoLmFsdHAybV9lcHRwW2lkeF0gIT0gSU5WQUxJRF9NRk4gKQorICAgIGlmICggZC0+ YXJjaC5hbHRwMm1fZXB0cFtpZHhdICE9IG1mbl94KElOVkFMSURfTUZOKSApCiAgICAgewogICAg ICAgICBmb3JfZWFjaF92Y3B1KCBkLCB2ICkKICAgICAgICAgICAgIGlmICggaWR4ICE9IHZjcHVf YWx0cDJtKHYpLnAybWlkeCApCkBAIC0yNTQxLDcgKzI1NDEsNyBAQCBpbnQgcDJtX2NoYW5nZV9h bHRwMm1fZ2ZuKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBpZHgsCiAgICAgdW5zaWdu ZWQgaW50IHBhZ2Vfb3JkZXI7CiAgICAgaW50IHJjID0gLUVJTlZBTDsKIAotICAgIGlmICggaWR4 ID49IE1BWF9BTFRQMk0gfHwgZC0+YXJjaC5hbHRwMm1fZXB0cFtpZHhdID09IElOVkFMSURfTUZO ICkKKyAgICBpZiAoIGlkeCA+PSBNQVhfQUxUUDJNIHx8IGQtPmFyY2guYWx0cDJtX2VwdHBbaWR4 XSA9PSBtZm5feChJTlZBTElEX01GTikgKQogICAgICAgICByZXR1cm4gcmM7CiAKICAgICBocDJt ID0gcDJtX2dldF9ob3N0cDJtKGQpOwpAQCAtMjYzNiwxNCArMjYzNiwxNCBAQCB2b2lkIHAybV9h bHRwMm1fcHJvcGFnYXRlX2NoYW5nZShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sCiAKICAg ICBmb3IgKCBpID0gMDsgaSA8IE1BWF9BTFRQMk07IGkrKyApCiAgICAgewotICAgICAgICBpZiAo IGQtPmFyY2guYWx0cDJtX2VwdHBbaV0gPT0gSU5WQUxJRF9NRk4gKQorICAgICAgICBpZiAoIGQt PmFyY2guYWx0cDJtX2VwdHBbaV0gPT0gbWZuX3goSU5WQUxJRF9NRk4pICkKICAgICAgICAgICAg IGNvbnRpbnVlOwogCiAgICAgICAgIHAybSA9IGQtPmFyY2guYWx0cDJtX3AybVtpXTsKICAgICAg ICAgbSA9IGdldF9nZm5fdHlwZV9hY2Nlc3MocDJtLCBnZm5feChnZm4pLCAmdCwgJmEsIDAsIE5V TEwpOwogCiAgICAgICAgIC8qIENoZWNrIGZvciBhIGRyb3BwZWQgcGFnZSB0aGF0IG1heSBpbXBh Y3QgdGhpcyBhbHRwMm0gKi8KLSAgICAgICAgaWYgKCBtZm5feChtZm4pID09IElOVkFMSURfTUZO ICYmCisgICAgICAgIGlmICggbWZuX2VxKG1mbiwgSU5WQUxJRF9NRk4pICYmCiAgICAgICAgICAg ICAgZ2ZuX3goZ2ZuKSA+PSBwMm0tPm1pbl9yZW1hcHBlZF9nZm4gJiYKICAgICAgICAgICAgICBn Zm5feChnZm4pIDw9IHAybS0+bWF4X3JlbWFwcGVkX2dmbiApCiAgICAgICAgIHsKQEAgLTI2NjAs NyArMjY2MCw3IEBAIHZvaWQgcDJtX2FsdHAybV9wcm9wYWdhdGVfY2hhbmdlKHN0cnVjdCBkb21h aW4gKmQsIGdmbl90IGdmbiwKICAgICAgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IE1BWF9B TFRQMk07IGkrKyApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpZiAo IGkgPT0gbGFzdF9yZXNldF9pZHggfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkLT5hcmNo LmFsdHAybV9lcHRwW2ldID09IElOVkFMSURfTUZOICkKKyAgICAgICAgICAgICAgICAgICAgICAg ICBkLT5hcmNoLmFsdHAybV9lcHRwW2ldID09IG1mbl94KElOVkFMSURfTUZOKSApCiAgICAgICAg ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICBwMm0gPSBk LT5hcmNoLmFsdHAybV9wMm1baV07CkBAIC0yNjcyLDcgKzI2NzIsNyBAQCB2b2lkIHAybV9hbHRw Mm1fcHJvcGFnYXRlX2NoYW5nZShzdHJ1Y3QgZG9tYWluICpkLCBnZm5fdCBnZm4sCiAgICAgICAg ICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxz ZSBpZiAoIG1mbl94KG0pICE9IElOVkFMSURfTUZOICkKKyAgICAgICAgZWxzZSBpZiAoICFtZm5f ZXEobSwgSU5WQUxJRF9NRk4pICkKICAgICAgICAgICAgIHAybV9zZXRfZW50cnkocDJtLCBnZm5f eChnZm4pLCBtZm4sIHBhZ2Vfb3JkZXIsIHAybXQsIHAybWEpOwogCiAgICAgICAgIF9fcHV0X2dm bihwMm0sIGdmbl94KGdmbikpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3BhZ2luZy5j IGIveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCmluZGV4IDgyMTliYjYuLjEwN2ZjOGMgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYworKysgYi94ZW4vYXJjaC94ODYvbW0vcGFn aW5nLmMKQEAgLTY3LDcgKzY3LDcgQEAgc3RhdGljIG1mbl90IHBhZ2luZ19uZXdfbG9nX2RpcnR5 X3BhZ2Uoc3RydWN0IGRvbWFpbiAqZCkKICAgICBpZiAoIHVubGlrZWx5KHBhZ2UgPT0gTlVMTCkg KQogICAgIHsKICAgICAgICAgZC0+YXJjaC5wYWdpbmcubG9nX2RpcnR5LmZhaWxlZF9hbGxvY3Mr KzsKLSAgICAgICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOworICAgICAgICByZXR1cm4gSU5W QUxJRF9NRk47CiAgICAgfQogCiAgICAgZC0+YXJjaC5wYWdpbmcubG9nX2RpcnR5LmFsbG9jcysr OwpAQCAtOTUsNyArOTUsNyBAQCBzdGF0aWMgbWZuX3QgcGFnaW5nX25ld19sb2dfZGlydHlfbm9k ZShzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBpbnQgaTsKICAgICAgICAgbWZuX3QgKm5vZGUg PSBtYXBfZG9tYWluX3BhZ2UobWZuKTsKICAgICAgICAgZm9yICggaSA9IDA7IGkgPCBMT0dESVJU WV9OT0RFX0VOVFJJRVM7IGkrKyApCi0gICAgICAgICAgICBub2RlW2ldID0gX21mbihJTlZBTElE X01GTik7CisgICAgICAgICAgICBub2RlW2ldID0gSU5WQUxJRF9NRk47CiAgICAgICAgIHVubWFw X2RvbWFpbl9wYWdlKG5vZGUpOwogICAgIH0KICAgICByZXR1cm4gbWZuOwpAQCAtMTY3LDcgKzE2 Nyw3IEBAIHN0YXRpYyBpbnQgcGFnaW5nX2ZyZWVfbG9nX2RpcnR5X2JpdG1hcChzdHJ1Y3QgZG9t YWluICpkLCBpbnQgcmMpCiAKICAgICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKGwyKTsKICAg ICAgICAgICAgIHBhZ2luZ19mcmVlX2xvZ19kaXJ0eV9wYWdlKGQsIGwzW2kzXSk7Ci0gICAgICAg ICAgICBsM1tpM10gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgICAgIGwzW2kzXSA9IElO VkFMSURfTUZOOwogCiAgICAgICAgICAgICBpZiAoIGkzIDwgTE9HRElSVFlfTk9ERV9FTlRSSUVT IC0gMSAmJiBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygpICkKICAgICAgICAgICAgIHsKQEAgLTE4 Miw3ICsxODIsNyBAQCBzdGF0aWMgaW50IHBhZ2luZ19mcmVlX2xvZ19kaXJ0eV9iaXRtYXAoc3Ry dWN0IGRvbWFpbiAqZCwgaW50IHJjKQogICAgICAgICBpZiAoIHJjICkKICAgICAgICAgICAgIGJy ZWFrOwogICAgICAgICBwYWdpbmdfZnJlZV9sb2dfZGlydHlfcGFnZShkLCBsNFtpNF0pOwotICAg ICAgICBsNFtpNF0gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICAgICAgbDRbaTRdID0gSU5WQUxJ RF9NRk47CiAKICAgICAgICAgaWYgKCBpNCA8IExPR0RJUlRZX05PREVfRU5UUklFUyAtIDEgJiYg aHlwZXJjYWxsX3ByZWVtcHRfY2hlY2soKSApCiAgICAgICAgIHsKQEAgLTE5OCw3ICsxOTgsNyBA QCBzdGF0aWMgaW50IHBhZ2luZ19mcmVlX2xvZ19kaXJ0eV9iaXRtYXAoc3RydWN0IGRvbWFpbiAq ZCwgaW50IHJjKQogICAgIGlmICggIXJjICkKICAgICB7CiAgICAgICAgIHBhZ2luZ19mcmVlX2xv Z19kaXJ0eV9wYWdlKGQsIGQtPmFyY2gucGFnaW5nLmxvZ19kaXJ0eS50b3ApOwotICAgICAgICBk LT5hcmNoLnBhZ2luZy5sb2dfZGlydHkudG9wID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAg IGQtPmFyY2gucGFnaW5nLmxvZ19kaXJ0eS50b3AgPSBJTlZBTElEX01GTjsKIAogICAgICAgICBB U1NFUlQoZC0+YXJjaC5wYWdpbmcubG9nX2RpcnR5LmFsbG9jcyA9PSAwKTsKICAgICAgICAgZC0+ YXJjaC5wYWdpbmcubG9nX2RpcnR5LmZhaWxlZF9hbGxvY3MgPSAwOwpAQCAtNjYwLDcgKzY2MCw3 IEBAIGludCBwYWdpbmdfZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50 IGRvbWNyX2ZsYWdzKQogICAgIC8qIFRoaXMgbXVzdCBiZSBpbml0aWFsaXplZCBzZXBhcmF0ZWx5 IGZyb20gdGhlIHJlc3Qgb2YgdGhlCiAgICAgICogbG9nLWRpcnR5IGluaXQgY29kZSBhcyB0aGF0 IGNhbiBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UgYW5kIHdlCiAgICAgICogZG9uJ3Qgd2FudCB0 byBsZWFrIGFueSBhY3RpdmUgbG9nLWRpcnR5IGJpdG1hcHMgKi8KLSAgICBkLT5hcmNoLnBhZ2lu Zy5sb2dfZGlydHkudG9wID0gX21mbihJTlZBTElEX01GTik7CisgICAgZC0+YXJjaC5wYWdpbmcu bG9nX2RpcnR5LnRvcCA9IElOVkFMSURfTUZOOwogCiAgICAgLyoKICAgICAgKiBTaGFkb3cgcGFn ZXRhYmxlcyBhcmUgdGhlIGRlZmF1bHQsIGJ1dCB3ZSB3aWxsIHVzZQpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L21tL3NoYWRvdy9jb21tb24uYyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvY29t bW9uLmMKaW5kZXggMjI2ZTMyZC4uNDI5MjdlNCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21t L3NoYWRvdy9jb21tb24uYworKysgYi94ZW4vYXJjaC94ODYvbW0vc2hhZG93L2NvbW1vbi5jCkBA IC04OCwxMCArODgsMTAgQEAgdm9pZCBzaGFkb3dfdmNwdV9pbml0KHN0cnVjdCB2Y3B1ICp2KQog CiAgICAgZm9yICggaSA9IDA7IGkgPCBTSEFET1dfT09TX1BBR0VTOyBpKysgKQogICAgIHsKLSAg ICAgICAgdi0+YXJjaC5wYWdpbmcuc2hhZG93Lm9vc1tpXSA9IF9tZm4oSU5WQUxJRF9NRk4pOwot ICAgICAgICB2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zX3NuYXBzaG90W2ldID0gX21mbihJTlZB TElEX01GTik7CisgICAgICAgIHYtPmFyY2gucGFnaW5nLnNoYWRvdy5vb3NbaV0gPSBJTlZBTElE X01GTjsKKyAgICAgICAgdi0+YXJjaC5wYWdpbmcuc2hhZG93Lm9vc19zbmFwc2hvdFtpXSA9IElO VkFMSURfTUZOOwogICAgICAgICBmb3IgKCBqID0gMDsgaiA8IFNIQURPV19PT1NfRklYVVBTOyBq KysgKQotICAgICAgICAgICAgdi0+YXJjaC5wYWdpbmcuc2hhZG93Lm9vc19maXh1cFtpXS5zbWZu W2pdID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgICAgICB2LT5hcmNoLnBhZ2luZy5zaGFk b3cub29zX2ZpeHVwW2ldLnNtZm5bal0gPSBJTlZBTElEX01GTjsKICAgICB9CiAjZW5kaWYKIApA QCAtNTkzLDEyICs1OTMsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgb29zX2ZpeHVwX2ZsdXNoX2dt Zm4oc3RydWN0IHZjcHUgKnYsIG1mbl90IGdtZm4sCiAgICAgaW50IGk7CiAgICAgZm9yICggaSA9 IDA7IGkgPCBTSEFET1dfT09TX0ZJWFVQUzsgaSsrICkKICAgICB7Ci0gICAgICAgIGlmICggbWZu X3goZml4dXAtPnNtZm5baV0pICE9IElOVkFMSURfTUZOICkKKyAgICAgICAgaWYgKCAhbWZuX2Vx KGZpeHVwLT5zbWZuW2ldLCBJTlZBTElEX01GTikgKQogICAgICAgICB7CiAgICAgICAgICAgICBz aF9yZW1vdmVfd3JpdGVfYWNjZXNzX2Zyb21fc2wxcChkLCBnbWZuLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4dXAtPnNtZm5baV0sCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXh1cC0+b2ZmW2ldKTsKLSAgICAg ICAgICAgIGZpeHVwLT5zbWZuW2ldID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgICAgICBm aXh1cC0+c21mbltpXSA9IElOVkFMSURfTUZOOwogICAgICAgICB9CiAgICAgfQogCkBAIC02MzYs NyArNjM2LDcgQEAgdm9pZCBvb3NfZml4dXBfYWRkKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IGdt Zm4sCiAKICAgICAgICAgICAgIG5leHQgPSBvb3NfZml4dXBbaWR4XS5uZXh0OwogCi0gICAgICAg ICAgICBpZiAoIG1mbl94KG9vc19maXh1cFtpZHhdLnNtZm5bbmV4dF0pICE9IElOVkFMSURfTUZO ICkKKyAgICAgICAgICAgIGlmICggIW1mbl9lcShvb3NfZml4dXBbaWR4XS5zbWZuW25leHRdLCBJ TlZBTElEX01GTikgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFRSQUNFX1NIQURP V19QQVRIX0ZMQUcoVFJDRV9TRkxBR19PT1NfRklYVVBfRVZJQ1QpOwogCkBAIC03NTcsNyArNzU3 LDcgQEAgc3RhdGljIHZvaWQgb29zX2hhc2hfYWRkKHN0cnVjdCB2Y3B1ICp2LCBtZm5fdCBnbWZu KQogICAgIHN0cnVjdCBvb3NfZml4dXAgZml4dXAgPSB7IC5uZXh0ID0gMCB9OwogCiAgICAgZm9y IChpID0gMDsgaSA8IFNIQURPV19PT1NfRklYVVBTOyBpKysgKQotICAgICAgICBmaXh1cC5zbWZu W2ldID0gX21mbihJTlZBTElEX01GTik7CisgICAgICAgIGZpeHVwLnNtZm5baV0gPSBJTlZBTElE X01GTjsKIAogICAgIGlkeCA9IG1mbl94KGdtZm4pICUgU0hBRE9XX09PU19QQUdFUzsKICAgICBv aWR4ID0gaWR4OwpAQCAtODA3LDcgKzgwNyw3IEBAIHN0YXRpYyB2b2lkIG9vc19oYXNoX3JlbW92 ZShzdHJ1Y3QgZG9tYWluICpkLCBtZm5fdCBnbWZuKQogICAgICAgICAgICAgaWR4ID0gKGlkeCAr IDEpICUgU0hBRE9XX09PU19QQUdFUzsKICAgICAgICAgaWYgKCBtZm5feChvb3NbaWR4XSkgPT0g bWZuX3goZ21mbikgKQogICAgICAgICB7Ci0gICAgICAgICAgICBvb3NbaWR4XSA9IF9tZm4oSU5W QUxJRF9NRk4pOworICAgICAgICAgICAgb29zW2lkeF0gPSBJTlZBTElEX01GTjsKICAgICAgICAg ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTgzOCw3ICs4MzgsNiBAQCBtZm5fdCBv b3Nfc25hcHNob3RfbG9va3VwKHN0cnVjdCBkb21haW4gKmQsIG1mbl90IGdtZm4pCiAKICAgICBT SEFET1dfRVJST1IoImdtZm4gJWx4IHdhcyBPT1MgYnV0IG5vdCBpbiBoYXNoIHRhYmxlXG4iLCBt Zm5feChnbWZuKSk7CiAgICAgQlVHKCk7Ci0gICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4pOwog fQogCiAvKiBQdWxsIGEgc2luZ2xlIGd1ZXN0IHBhZ2UgYmFjayBpbnRvIHN5bmMgKi8KQEAgLTg2 Miw3ICs4NjEsNyBAQCB2b2lkIHNoX3Jlc3luYyhzdHJ1Y3QgZG9tYWluICpkLCBtZm5fdCBnbWZu KQogICAgICAgICBpZiAoIG1mbl94KG9vc1tpZHhdKSA9PSBtZm5feChnbWZuKSApCiAgICAgICAg IHsKICAgICAgICAgICAgIF9zaF9yZXN5bmModiwgZ21mbiwgJm9vc19maXh1cFtpZHhdLCBvb3Nf c25hcHNob3RbaWR4XSk7Ci0gICAgICAgICAgICBvb3NbaWR4XSA9IF9tZm4oSU5WQUxJRF9NRk4p OworICAgICAgICAgICAgb29zW2lkeF0gPSBJTlZBTElEX01GTjsKICAgICAgICAgICAgIHJldHVy bjsKICAgICAgICAgfQogICAgIH0KQEAgLTkxNCw3ICs5MTMsNyBAQCB2b2lkIHNoX3Jlc3luY19h bGwoc3RydWN0IHZjcHUgKnYsIGludCBza2lwLCBpbnQgdGhpcywgaW50IG90aGVycykKICAgICAg ICAgewogICAgICAgICAgICAgLyogV3JpdGUtcHJvdGVjdCBhbmQgc3luYyBjb250ZW50cyAqLwog ICAgICAgICAgICAgX3NoX3Jlc3luYyh2LCBvb3NbaWR4XSwgJm9vc19maXh1cFtpZHhdLCBvb3Nf c25hcHNob3RbaWR4XSk7Ci0gICAgICAgICAgICBvb3NbaWR4XSA9IF9tZm4oSU5WQUxJRF9NRk4p OworICAgICAgICAgICAgb29zW2lkeF0gPSBJTlZBTElEX01GTjsKICAgICAgICAgfQogCiAgcmVz eW5jX290aGVyczoKQEAgLTk0OCw3ICs5NDcsNyBAQCB2b2lkIHNoX3Jlc3luY19hbGwoc3RydWN0 IHZjcHUgKnYsIGludCBza2lwLCBpbnQgdGhpcywgaW50IG90aGVycykKICAgICAgICAgICAgIHsK ICAgICAgICAgICAgICAgICAvKiBXcml0ZS1wcm90ZWN0IGFuZCBzeW5jIGNvbnRlbnRzICovCiAg ICAgICAgICAgICAgICAgX3NoX3Jlc3luYyhvdGhlciwgb29zW2lkeF0sICZvb3NfZml4dXBbaWR4 XSwgb29zX3NuYXBzaG90W2lkeF0pOwotICAgICAgICAgICAgICAgIG9vc1tpZHhdID0gX21mbihJ TlZBTElEX01GTik7CisgICAgICAgICAgICAgICAgb29zW2lkeF0gPSBJTlZBTElEX01GTjsKICAg ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE3ODQsNyArMTc4Myw3IEBAIHZvaWQg KnNoX2VtdWxhdGVfbWFwX2Rlc3Qoc3RydWN0IHZjcHUgKnYsIHVuc2lnbmVkIGxvbmcgdmFkZHIs CiAgICAgaWYgKCBsaWtlbHkoKCh2YWRkciArIGJ5dGVzIC0gMSkgJiBQQUdFX01BU0spID09ICh2 YWRkciAmIFBBR0VfTUFTSykpICkKICAgICB7CiAgICAgICAgIC8qIFdob2xlIHdyaXRlIGZpdHMg b24gYSBzaW5nbGUgcGFnZS4gKi8KLSAgICAgICAgc2hfY3R4dC0+bWZuWzFdID0gX21mbihJTlZB TElEX01GTik7CisgICAgICAgIHNoX2N0eHQtPm1mblsxXSA9IElOVkFMSURfTUZOOwogICAgICAg ICBtYXAgPSBtYXBfZG9tYWluX3BhZ2Uoc2hfY3R4dC0+bWZuWzBdKSArICh2YWRkciAmIH5QQUdF X01BU0spOwogICAgIH0KICAgICBlbHNlIGlmICggIWlzX2h2bV9kb21haW4oZCkgKQpAQCAtMjA4 Niw3ICsyMDg1LDcgQEAgbWZuX3Qgc2hhZG93X2hhc2hfbG9va3VwKHN0cnVjdCBkb21haW4gKmQs IHVuc2lnbmVkIGxvbmcgbiwgdW5zaWduZWQgaW50IHQpCiAgICAgfQogCiAgICAgcGVyZmNfaW5j cihzaGFkb3dfaGFzaF9sb29rdXBfbWlzcyk7Ci0gICAgcmV0dXJuIF9tZm4oSU5WQUxJRF9NRk4p OworICAgIHJldHVybiBJTlZBTElEX01GTjsKIH0KIAogdm9pZCBzaGFkb3dfaGFzaF9pbnNlcnQo c3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgbG9uZyBuLCB1bnNpZ25lZCBpbnQgdCwKQEAgLTI5 MTAsNyArMjkwOSw3IEBAIHZvaWQgc2hfcmVzZXRfbDNfdXBfcG9pbnRlcnMoc3RydWN0IHZjcHUg KnYpCiAgICAgfTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGNhbGxiYWNrX21hc2sg PSBTSEZfTDNfNjQ7CiAKLSAgICBoYXNoX3ZjcHVfZm9yZWFjaCh2LCBjYWxsYmFja19tYXNrLCBj YWxsYmFja3MsIF9tZm4oSU5WQUxJRF9NRk4pKTsKKyAgICBoYXNoX3ZjcHVfZm9yZWFjaCh2LCBj YWxsYmFja19tYXNrLCBjYWxsYmFja3MsIElOVkFMSURfTUZOKTsKIH0KIAogCkBAIC0yOTQwLDcg KzI5MzksNyBAQCBzdGF0aWMgdm9pZCBzaF91cGRhdGVfcGFnaW5nX21vZGVzKHN0cnVjdCB2Y3B1 ICp2KQogI2VuZGlmIC8qIChTSEFET1dfT1BUSU1JWkFUSU9OUyAmIFNIT1BUX1ZJUlRVQUxfVExC KSAqLwogCiAjaWYgKFNIQURPV19PUFRJTUlaQVRJT05TICYgU0hPUFRfT1VUX09GX1NZTkMpCi0g ICAgaWYgKCBtZm5feCh2LT5hcmNoLnBhZ2luZy5zaGFkb3cub29zX3NuYXBzaG90WzBdKSA9PSBJ TlZBTElEX01GTiApCisgICAgaWYgKCBtZm5fZXEodi0+YXJjaC5wYWdpbmcuc2hhZG93Lm9vc19z bmFwc2hvdFswXSwgSU5WQUxJRF9NRk4pICkKICAgICB7CiAgICAgICAgIGludCBpOwogICAgICAg ICBmb3IoaSA9IDA7IGkgPCBTSEFET1dfT09TX1BBR0VTOyBpKyspCkBAIC0zMjg0LDcgKzMyODMs NyBAQCB2b2lkIHNoYWRvd190ZWFyZG93bihzdHJ1Y3QgZG9tYWluICpkLCBpbnQgKnByZWVtcHRl ZCkKICAgICAgICAgICAgICAgICBpZiAoIG1mbl92YWxpZChvb3Nfc25hcHNob3RbaV0pICkKICAg ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHNoYWRvd19mcmVlKGQsIG9vc19z bmFwc2hvdFtpXSk7Ci0gICAgICAgICAgICAgICAgICAgIG9vc19zbmFwc2hvdFtpXSA9IF9tZm4o SU5WQUxJRF9NRk4pOworICAgICAgICAgICAgICAgICAgICBvb3Nfc25hcHNob3RbaV0gPSBJTlZB TElEX01GTjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgIH0KICNlbmRpZiAvKiBPT1MgKi8K QEAgLTM0NDksNyArMzQ0OCw3IEBAIHN0YXRpYyBpbnQgc2hhZG93X29uZV9iaXRfZGlzYWJsZShz dHJ1Y3QgZG9tYWluICpkLCB1MzIgbW9kZSkKICAgICAgICAgICAgICAgICAgICAgaWYgKCBtZm5f dmFsaWQob29zX3NuYXBzaG90W2ldKSApCiAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAg ICAgICAgICAgICAgICAgIHNoYWRvd19mcmVlKGQsIG9vc19zbmFwc2hvdFtpXSk7Ci0gICAgICAg ICAgICAgICAgICAgICAgICBvb3Nfc25hcHNob3RbaV0gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgIG9vc19zbmFwc2hvdFtpXSA9IElOVkFMSURfTUZOOwogICAg ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAjZW5kaWYgLyogT09TICovCkBAIC0z NzQ0LDcgKzM3NDMsNyBAQCBpbnQgc2hhZG93X3RyYWNrX2RpcnR5X3ZyYW0oc3RydWN0IGRvbWFp biAqZCwKICAgICAgICAgbWVtY3B5KGRpcnR5X2JpdG1hcCwgZGlydHlfdnJhbS0+ZGlydHlfYml0 bWFwLCBkaXJ0eV9zaXplKTsKICAgICBlbHNlCiAgICAgewotICAgICAgICB1bnNpZ25lZCBsb25n IG1hcF9tZm4gPSBJTlZBTElEX01GTjsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtYXBfbWZuID0g bWZuX3goSU5WQUxJRF9NRk4pOwogICAgICAgICB2b2lkICptYXBfc2wxcCA9IE5VTEw7CiAKICAg ICAgICAgLyogSXRlcmF0ZSBvdmVyIFZSQU0gdG8gdHJhY2sgZGlydHkgYml0cy4gKi8KQEAgLTM3 NTQsNyArMzc1Myw3IEBAIGludCBzaGFkb3dfdHJhY2tfZGlydHlfdnJhbShzdHJ1Y3QgZG9tYWlu ICpkLAogICAgICAgICAgICAgaW50IGRpcnR5ID0gMDsKICAgICAgICAgICAgIHBhZGRyX3Qgc2wx bWEgPSBkaXJ0eV92cmFtLT5zbDFtYVtpXTsKIAotICAgICAgICAgICAgaWYgKG1mbl94KG1mbikg PT0gSU5WQUxJRF9NRk4pCisgICAgICAgICAgICBpZiAoICFtZm5fZXEobWZuLCBJTlZBTElEX01G TikgKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGRpcnR5ID0gMTsKICAgICAgICAg ICAgIH0KQEAgLTM4MzAsNyArMzgyOSw3IEBAIGludCBzaGFkb3dfdHJhY2tfZGlydHlfdnJhbShz dHJ1Y3QgZG9tYWluICpkLAogICAgICAgICAgICAgZm9yICggaSA9IGJlZ2luX3BmbjsgaSA8IGVu ZF9wZm47IGkrKyApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbWZuX3QgbWZuID0g Z2V0X2dmbl9xdWVyeV91bmxvY2tlZChkLCBpLCAmdCk7Ci0gICAgICAgICAgICAgICAgaWYgKCBt Zm5feChtZm4pICE9IElOVkFMSURfTUZOICkKKyAgICAgICAgICAgICAgICBpZiAoICFtZm5fZXEo bWZuLCBJTlZBTElEX01GTikgKQogICAgICAgICAgICAgICAgICAgICBmbHVzaF90bGIgfD0gc2hf cmVtb3ZlX3dyaXRlX2FjY2VzcyhkLCBtZm4sIDEsIDApOwogICAgICAgICAgICAgfQogICAgICAg ICAgICAgZGlydHlfdnJhbS0+bGFzdF9kaXJ0eSA9IC0xOwpAQCAtMzk2OCw3ICszOTY3LDcgQEAg dm9pZCBzaGFkb3dfYXVkaXRfdGFibGVzKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICB9CiAgICAg fQogCi0gICAgaGFzaF92Y3B1X2ZvcmVhY2godiwgbWFzaywgY2FsbGJhY2tzLCBfbWZuKElOVkFM SURfTUZOKSk7CisgICAgaGFzaF92Y3B1X2ZvcmVhY2godiwgbWFzaywgY2FsbGJhY2tzLCBJTlZB TElEX01GTik7CiB9CiAKICNlbmRpZiAvKiBTaGFkb3cgYXVkaXQgKi8KZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVsdGkuYyBiL3hlbi9hcmNoL3g4Ni9tbS9zaGFkb3cvbXVs dGkuYwppbmRleCBkZmU1OWEyLi5mODkyZTJmIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0v c2hhZG93L211bHRpLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3NoYWRvdy9tdWx0aS5jCkBAIC0x NzcsNyArMTc3LDcgQEAgc2hfd2Fsa19ndWVzdF90YWJsZXMoc3RydWN0IHZjcHUgKnYsIHVuc2ln bmVkIGxvbmcgdmEsIHdhbGtfdCAqZ3csCiB7CiAgICAgcmV0dXJuIGd1ZXN0X3dhbGtfdGFibGVz KHYsIHAybV9nZXRfaG9zdHAybSh2LT5kb21haW4pLCB2YSwgZ3csIHBmZWMsCiAjaWYgR1VFU1Rf UEFHSU5HX0xFVkVMUyA9PSAzIC8qIFBBRSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBfbWZuKElOVkFMSURfTUZOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJ RF9NRk4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtPmFyY2gucGFnaW5nLnNoYWRv dy5nbDNlCiAjZWxzZSAvKiAzMiBvciA2NCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYWdldGFibGVfZ2V0X21mbih2LT5hcmNoLmd1ZXN0X3RhYmxlKSwKQEAgLTMzNiwzMiArMzM2 LDMyIEBAIHN0YXRpYyB2b2lkIHNoX2F1ZGl0X2d3KHN0cnVjdCB2Y3B1ICp2LCB3YWxrX3QgKmd3 KQogICAgIGlmICggbWZuX3ZhbGlkKGd3LT5sNG1mbikKICAgICAgICAgICYmIG1mbl92YWxpZCgo c21mbiA9IGdldF9zaGFkb3dfc3RhdHVzKGQsIGd3LT5sNG1mbiwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX3R5cGVfbDRfc2hhZG93KSkpICkKLSAg ICAgICAgKHZvaWQpIHNoX2F1ZGl0X2w0X3RhYmxlKHYsIHNtZm4sIF9tZm4oSU5WQUxJRF9NRk4p KTsKKyAgICAgICAgKHZvaWQpIHNoX2F1ZGl0X2w0X3RhYmxlKHYsIHNtZm4sIElOVkFMSURfTUZO KTsKICAgICBpZiAoIG1mbl92YWxpZChndy0+bDNtZm4pCiAgICAgICAgICAmJiBtZm5fdmFsaWQo KHNtZm4gPSBnZXRfc2hhZG93X3N0YXR1cyhkLCBndy0+bDNtZm4sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSF90eXBlX2wzX3NoYWRvdykpKSApCi0g ICAgICAgICh2b2lkKSBzaF9hdWRpdF9sM190YWJsZSh2LCBzbWZuLCBfbWZuKElOVkFMSURfTUZO KSk7CisgICAgICAgICh2b2lkKSBzaF9hdWRpdF9sM190YWJsZSh2LCBzbWZuLCBJTlZBTElEX01G Tik7CiAjZW5kaWYgLyogUEFFIG9yIDY0Li4uICovCiAgICAgaWYgKCBtZm5fdmFsaWQoZ3ctPmwy bWZuKSApCiAgICAgewogICAgICAgICBpZiAoIG1mbl92YWxpZCgoc21mbiA9IGdldF9zaGFkb3df c3RhdHVzKGQsIGd3LT5sMm1mbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTSF90eXBlX2wyX3NoYWRvdykpKSApCi0gICAgICAgICAgICAodm9pZCkg c2hfYXVkaXRfbDJfdGFibGUodiwgc21mbiwgX21mbihJTlZBTElEX01GTikpOworICAgICAgICAg ICAgKHZvaWQpIHNoX2F1ZGl0X2wyX3RhYmxlKHYsIHNtZm4sIElOVkFMSURfTUZOKTsKICNpZiBH VUVTVF9QQUdJTkdfTEVWRUxTID09IDMKICAgICAgICAgaWYgKCBtZm5fdmFsaWQoKHNtZm4gPSBn ZXRfc2hhZG93X3N0YXR1cyhkLCBndy0+bDJtZm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU0hfdHlwZV9sMmhfc2hhZG93KSkpICkKLSAgICAgICAg ICAgICh2b2lkKSBzaF9hdWRpdF9sMl90YWJsZSh2LCBzbWZuLCBfbWZuKElOVkFMSURfTUZOKSk7 CisgICAgICAgICAgICAodm9pZCkgc2hfYXVkaXRfbDJfdGFibGUodiwgc21mbiwgSU5WQUxJRF9N Rk4pOwogI2VuZGlmCiAgICAgfQogICAgIGlmICggbWZuX3ZhbGlkKGd3LT5sMW1mbikKICAgICAg ICAgICYmIG1mbl92YWxpZCgoc21mbiA9IGdldF9zaGFkb3dfc3RhdHVzKGQsIGd3LT5sMW1mbiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX3R5cGVf bDFfc2hhZG93KSkpICkKLSAgICAgICAgKHZvaWQpIHNoX2F1ZGl0X2wxX3RhYmxlKHYsIHNtZm4s IF9tZm4oSU5WQUxJRF9NRk4pKTsKKyAgICAgICAgKHZvaWQpIHNoX2F1ZGl0X2wxX3RhYmxlKHYs IHNtZm4sIElOVkFMSURfTUZOKTsKICAgICBlbHNlIGlmICggKGd1ZXN0X2wyZV9nZXRfZmxhZ3Mo Z3ctPmwyZSkgJiBfUEFHRV9QUkVTRU5UKQogICAgICAgICAgICAgICAmJiAoZ3Vlc3RfbDJlX2dl dF9mbGFncyhndy0+bDJlKSAmIF9QQUdFX1BTRSkKICAgICAgICAgICAgICAgJiYgbWZuX3ZhbGlk KAogICAgICAgICAgICAgICAoc21mbiA9IGdldF9mbDFfc2hhZG93X3N0YXR1cyhkLCBndWVzdF9s MmVfZ2V0X2dmbihndy0+bDJlKSkpKSApCi0gICAgICAgICh2b2lkKSBzaF9hdWRpdF9mbDFfdGFi bGUodiwgc21mbiwgX21mbihJTlZBTElEX01GTikpOworICAgICAgICAodm9pZCkgc2hfYXVkaXRf ZmwxX3RhYmxlKHYsIHNtZm4sIElOVkFMSURfTUZOKTsKIH0KIAogI2Vsc2UKQEAgLTE3NTIsNyAr MTc1Miw3IEBAIHN0YXRpYyBzaGFkb3dfbDJlX3QgKiBzaGFkb3dfZ2V0X2FuZF9jcmVhdGVfbDJl KHN0cnVjdCB2Y3B1ICp2LAogewogI2lmIEdVRVNUX1BBR0lOR19MRVZFTFMgPj0gNCAvKiA2NGJp dC4uLiAqLwogICAgIHN0cnVjdCBkb21haW4gKmQgPSB2LT5kb21haW47Ci0gICAgbWZuX3Qgc2wz bWZuID0gX21mbihJTlZBTElEX01GTik7CisgICAgbWZuX3Qgc2wzbWZuID0gSU5WQUxJRF9NRk47 CiAgICAgc2hhZG93X2wzZV90ICpzbDNlOwogICAgIGlmICggIW1mbl92YWxpZChndy0+bDJtZm4p ICkgcmV0dXJuIE5VTEw7IC8qIE5vIGd1ZXN0IHBhZ2UuICovCiAgICAgLyogR2V0IHRoZSBsM2Ug Ki8KQEAgLTIxNTgsNyArMjE1OCw3IEBAIHN0YXRpYyBpbnQgdmFsaWRhdGVfZ2w0ZShzdHJ1Y3Qg dmNwdSAqdiwgdm9pZCAqbmV3X2dlLCBtZm5fdCBzbDRtZm4sIHZvaWQgKnNlKQogICAgIHNoYWRv d19sNGVfdCBuZXdfc2w0ZTsKICAgICBndWVzdF9sNGVfdCBuZXdfZ2w0ZSA9ICooZ3Vlc3RfbDRl X3QgKiluZXdfZ2U7CiAgICAgc2hhZG93X2w0ZV90ICpzbDRwID0gc2U7Ci0gICAgbWZuX3Qgc2wz bWZuID0gX21mbihJTlZBTElEX01GTik7CisgICAgbWZuX3Qgc2wzbWZuID0gSU5WQUxJRF9NRk47 CiAgICAgc3RydWN0IGRvbWFpbiAqZCA9IHYtPmRvbWFpbjsKICAgICBwMm1fdHlwZV90IHAybXQ7 CiAgICAgaW50IHJlc3VsdCA9IDA7CkBAIC0yMjE3LDcgKzIyMTcsNyBAQCBzdGF0aWMgaW50IHZh bGlkYXRlX2dsM2Uoc3RydWN0IHZjcHUgKnYsIHZvaWQgKm5ld19nZSwgbWZuX3Qgc2wzbWZuLCB2 b2lkICpzZSkKICAgICBzaGFkb3dfbDNlX3QgbmV3X3NsM2U7CiAgICAgZ3Vlc3RfbDNlX3QgbmV3 X2dsM2UgPSAqKGd1ZXN0X2wzZV90ICopbmV3X2dlOwogICAgIHNoYWRvd19sM2VfdCAqc2wzcCA9 IHNlOwotICAgIG1mbl90IHNsMm1mbiA9IF9tZm4oSU5WQUxJRF9NRk4pOworICAgIG1mbl90IHNs Mm1mbiA9IElOVkFMSURfTUZOOwogICAgIHAybV90eXBlX3QgcDJtdDsKICAgICBpbnQgcmVzdWx0 ID0gMDsKIApAQCAtMjI1MCw3ICsyMjUwLDcgQEAgc3RhdGljIGludCB2YWxpZGF0ZV9nbDJlKHN0 cnVjdCB2Y3B1ICp2LCB2b2lkICpuZXdfZ2UsIG1mbl90IHNsMm1mbiwgdm9pZCAqc2UpCiAgICAg c2hhZG93X2wyZV90IG5ld19zbDJlOwogICAgIGd1ZXN0X2wyZV90IG5ld19nbDJlID0gKihndWVz dF9sMmVfdCAqKW5ld19nZTsKICAgICBzaGFkb3dfbDJlX3QgKnNsMnAgPSBzZTsKLSAgICBtZm5f dCBzbDFtZm4gPSBfbWZuKElOVkFMSURfTUZOKTsKKyAgICBtZm5fdCBzbDFtZm4gPSBJTlZBTElE X01GTjsKICAgICBwMm1fdHlwZV90IHAybXQ7CiAgICAgaW50IHJlc3VsdCA9IDA7CiAKQEAgLTI2 MDgsNyArMjYwOCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjaGVja19mb3JfZWFybHlfdW5zaGFk b3coc3RydWN0IHZjcHUgKnYsIG1mbl90IGdtZm4pCiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRf ZWFybHlfdW5zaGFkb3coc3RydWN0IHZjcHUgKnYpCiB7CiAjaWYgU0hBRE9XX09QVElNSVpBVElP TlMgJiBTSE9QVF9FQVJMWV9VTlNIQURPVwotICAgIHYtPmFyY2gucGFnaW5nLnNoYWRvdy5sYXN0 X2VtdWxhdGVkX21mbl9mb3JfdW5zaGFkb3cgPSBJTlZBTElEX01GTjsKKyAgICB2LT5hcmNoLnBh Z2luZy5zaGFkb3cubGFzdF9lbXVsYXRlZF9tZm5fZm9yX3Vuc2hhZG93ID0gbWZuX3goSU5WQUxJ RF9NRk4pOwogI2VuZGlmCiB9CiAKQEAgLTQxMDUsMTAgKzQxMDUsMTAgQEAgc2hfdXBkYXRlX2Ny MyhzdHJ1Y3QgdmNwdSAqdiwgaW50IGRvX2xvY2tpbmcpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPyBTSF90eXBlX2wyaF9zaGFkb3cKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFNIX3R5cGVfbDJfc2hhZG93KTsKICAgICAg ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNoX3NldF90b3BsZXZlbF9zaGFk b3codiwgaSwgX21mbihJTlZBTElEX01GTiksIDApOworICAgICAgICAgICAgICAgICAgICBzaF9z ZXRfdG9wbGV2ZWxfc2hhZG93KHYsIGksIElOVkFMSURfTUZOLCAwKTsKICAgICAgICAgICAgIH0K ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzaF9zZXRfdG9wbGV2ZWxfc2hhZG93 KHYsIGksIF9tZm4oSU5WQUxJRF9NRk4pLCAwKTsKKyAgICAgICAgICAgICAgICBzaF9zZXRfdG9w bGV2ZWxfc2hhZG93KHYsIGksIElOVkFMSURfTUZOLCAwKTsKICAgICAgICAgfQogICAgIH0KICNl bGlmIEdVRVNUX1BBR0lOR19MRVZFTFMgPT0gNApAQCAtNDUzMSw3ICs0NTMxLDcgQEAgc3RhdGlj IHZvaWQgc2hfcGFnZXRhYmxlX2R5aW5nKHN0cnVjdCB2Y3B1ICp2LCBwYWRkcl90IGdwYSkKIAog ICAgICAgICBpZiAoIGZhc3RfcGF0aCApIHsKICAgICAgICAgICAgIGlmICggcGFnZXRhYmxlX2lz X251bGwodi0+YXJjaC5zaGFkb3dfdGFibGVbaV0pICkKLSAgICAgICAgICAgICAgICBzbWZuID0g X21mbihJTlZBTElEX01GTik7CisgICAgICAgICAgICAgICAgc21mbiA9IElOVkFMSURfTUZOOwog ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNtZm4gPSBfbWZuKHBhZ2V0YWJsZV9n ZXRfcGZuKHYtPmFyY2guc2hhZG93X3RhYmxlW2ldKSk7CiAgICAgICAgIH0KQEAgLTQ1NDAsOCAr NDU0MCw4IEBAIHN0YXRpYyB2b2lkIHNoX3BhZ2V0YWJsZV9keWluZyhzdHJ1Y3QgdmNwdSAqdiwg cGFkZHJfdCBncGEpCiAgICAgICAgICAgICAvKiByZXRyaWV2aW5nIHRoZSBsMnMgKi8KICAgICAg ICAgICAgIGdtZm4gPSBnZXRfZ2ZuX3F1ZXJ5X3VubG9ja2VkKGQsIGdmbl94KGd1ZXN0X2wzZV9n ZXRfZ2ZuKGdsM2VbaV0pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZwMm10KTsKLSAgICAgICAgICAgIHNtZm4gPSB1bmxpa2VseShtZm5feChnbWZuKSA9PSBJ TlZBTElEX01GTikKLSAgICAgICAgICAgICAgICAgICA/IF9tZm4oSU5WQUxJRF9NRk4pCisgICAg ICAgICAgICBzbWZuID0gdW5saWtlbHkobWZuX2VxKGdtZm4sIElOVkFMSURfTUZOKSkKKyAgICAg ICAgICAgICAgICAgICA/IElOVkFMSURfTUZOCiAgICAgICAgICAgICAgICAgICAgOiBzaGFkb3df aGFzaF9sb29rdXAoZCwgbWZuX3goZ21mbiksIFNIX3R5cGVfbDJfcGFlX3NoYWRvdyk7CiAgICAg ICAgIH0KIApAQCAtNDg0Niw3ICs0ODQ2LDcgQEAgaW50IHNoX2F1ZGl0X2ZsMV90YWJsZShzdHJ1 Y3QgdmNwdSAqdiwgbWZuX3Qgc2wxbWZuLCBtZm5fdCB4KQogewogICAgIGd1ZXN0X2wxZV90ICpn bDFlLCBlOwogICAgIHNoYWRvd19sMWVfdCAqc2wxZTsKLSAgICBtZm5fdCBnbDFtZm4gPSBfbWZu KElOVkFMSURfTUZOKTsKKyAgICBtZm5fdCBnbDFtZm4gPSBJTlZBTElEX01GTjsKICAgICBpbnQg ZjsKICAgICBpbnQgZG9uZSA9IDA7CiAKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZG9tYWluLmMg Yi94ZW4vY29tbW9uL2RvbWFpbi5jCmluZGV4IDQ1MjczZDQuLjQyYzA3ZWUgMTAwNjQ0Ci0tLSBh L3hlbi9jb21tb24vZG9tYWluLmMKKysrIGIveGVuL2NvbW1vbi9kb21haW4uYwpAQCAtMTE3LDcg KzExNyw3IEBAIHN0YXRpYyB2b2lkIHZjcHVfaW5mb19yZXNldChzdHJ1Y3QgdmNwdSAqdikKICAg ICB2LT52Y3B1X2luZm8gPSAoKHYtPnZjcHVfaWQgPCBYRU5fTEVHQUNZX01BWF9WQ1BVUykKICAg ICAgICAgICAgICAgICAgICAgPyAodmNwdV9pbmZvX3QgKikmc2hhcmVkX2luZm8oZCwgdmNwdV9p bmZvW3YtPnZjcHVfaWRdKQogICAgICAgICAgICAgICAgICAgICA6ICZkdW1teV92Y3B1X2luZm8p OwotICAgIHYtPnZjcHVfaW5mb19tZm4gPSBJTlZBTElEX01GTjsKKyAgICB2LT52Y3B1X2luZm9f bWZuID0gbWZuX3goSU5WQUxJRF9NRk4pOwogfQogCiBzdHJ1Y3QgdmNwdSAqYWxsb2NfdmNwdSgK QEAgLTExNDEsNyArMTE0MSw3IEBAIGludCBtYXBfdmNwdV9pbmZvKHN0cnVjdCB2Y3B1ICp2LCB1 bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgb2Zmc2V0KQogICAgIGlmICggb2Zmc2V0ID4gKFBB R0VfU0laRSAtIHNpemVvZih2Y3B1X2luZm9fdCkpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CiAKLSAgICBpZiAoIHYtPnZjcHVfaW5mb19tZm4gIT0gSU5WQUxJRF9NRk4gKQorICAgIGlmICgg di0+dmNwdV9pbmZvX21mbiAhPSBtZm5feChJTlZBTElEX01GTikgKQogICAgICAgICByZXR1cm4g LUVJTlZBTDsKIAogICAgIC8qIFJ1biB0aGlzIGNvbW1hbmQgb24geW91cnNlbGYgb3Igb24gb3Ro ZXIgb2ZmbGluZSBWQ1BVUy4gKi8KQEAgLTEyMDUsNyArMTIwNSw3IEBAIHZvaWQgdW5tYXBfdmNw dV9pbmZvKHN0cnVjdCB2Y3B1ICp2KQogewogICAgIHVuc2lnbmVkIGxvbmcgbWZuOwogCi0gICAg aWYgKCB2LT52Y3B1X2luZm9fbWZuID09IElOVkFMSURfTUZOICkKKyAgICBpZiAoIHYtPnZjcHVf aW5mb19tZm4gPT0gbWZuX3goSU5WQUxJRF9NRk4pICkKICAgICAgICAgcmV0dXJuOwogCiAgICAg bWZuID0gdi0+dmNwdV9pbmZvX21mbjsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZ3JhbnRfdGFi bGUuYyBiL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwppbmRleCAzZjE1NTQzLi5lY2FjZTA3IDEw MDY0NAotLS0gYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMKKysrIGIveGVuL2NvbW1vbi9ncmFu dF90YWJsZS5jCkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGljIGludCBfX2dldF9wYWdlZF9mcmFt ZSh1bnNpZ25lZCBsb25nIGdmbiwgdW5zaWduZWQgbG9uZyAqZnJhbWUsIHN0cnVjdCBwYWcKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZWFkb25seSkgPyBQMk1fQUxMT0MgOiBQMk1f VU5TSEFSRSk7CiAgICAgaWYgKCAhKCpwYWdlKSApCiAgICAgewotICAgICAgICAqZnJhbWUgPSBJ TlZBTElEX01GTjsKKyAgICAgICAgKmZyYW1lID0gbWZuX3goSU5WQUxJRF9NRk4pOwogICAgICAg ICBpZiAoIHAybV9pc19zaGFyZWQocDJtdCkgKQogICAgICAgICAgICAgcmV0dXJuIEdOVFNUX2Vh Z2FpbjsKICAgICAgICAgaWYgKCBwMm1faXNfcGFnaW5nKHAybXQpICkKQEAgLTI2MCw3ICsyNjAs NyBAQCBzdGF0aWMgaW50IF9fZ2V0X3BhZ2VkX2ZyYW1lKHVuc2lnbmVkIGxvbmcgZ2ZuLCB1bnNp Z25lZCBsb25nICpmcmFtZSwgc3RydWN0IHBhZwogICAgICpwYWdlID0gbWZuX3ZhbGlkKCpmcmFt ZSkgPyBtZm5fdG9fcGFnZSgqZnJhbWUpIDogTlVMTDsKICAgICBpZiAoICghKCpwYWdlKSkgfHwg KCFnZXRfcGFnZSgqcGFnZSwgcmQpKSApCiAgICAgewotICAgICAgICAqZnJhbWUgPSBJTlZBTElE X01GTjsKKyAgICAgICAgKmZyYW1lID0gbWZuX3goSU5WQUxJRF9NRk4pOwogICAgICAgICAqcGFn ZSA9IE5VTEw7CiAgICAgICAgIHJjID0gR05UU1RfYmFkX3BhZ2U7CiAgICAgfQpAQCAtMTc4NSw3 ICsxNzg1LDcgQEAgZ250dGFiX3RyYW5zZmVyKAogICAgICAgICAgICAgcDJtX3R5cGVfdCBfX3Ay bXQ7CiAgICAgICAgICAgICBtZm4gPSBtZm5feChnZXRfZ2ZuX3Vuc2hhcmUoZCwgZ29wLm1mbiwg Jl9fcDJtdCkpOwogICAgICAgICAgICAgaWYgKCBwMm1faXNfc2hhcmVkKF9fcDJtdCkgfHwgIXAy bV9pc192YWxpZChfX3AybXQpICkKLSAgICAgICAgICAgICAgICBtZm4gPSBJTlZBTElEX01GTjsK KyAgICAgICAgICAgICAgICBtZm4gPSBtZm5feChJTlZBTElEX01GTik7CiAgICAgICAgIH0KICNl bHNlCiAgICAgICAgIG1mbiA9IG1mbl94KGdmbl90b19tZm4oZCwgX2dmbihnb3AubWZuKSkpOwpk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGVuL21tLmggYi94ZW4vaW5jbHVkZS94ZW4vbW0uaApp bmRleCBhZmJiMWExLi43ZjIwN2VjIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vbW0uaAor KysgYi94ZW4vaW5jbHVkZS94ZW4vbW0uaApAQCAtNTUsNyArNTUsNyBAQAogCiBUWVBFX1NBRkUo dW5zaWduZWQgbG9uZywgbWZuKTsKICNkZWZpbmUgUFJJX21mbiAgICAgICAgICAiMDVseCIKLSNk ZWZpbmUgSU5WQUxJRF9NRk4gICAgICAofjBVTCkKKyNkZWZpbmUgSU5WQUxJRF9NRk4gICAgICBf bWZuKH4wVUwpCiAKICNpZm5kZWYgbWZuX3QKICNkZWZpbmUgbWZuX3QgLyogR3JlcCBmb2RkZXI6 IG1mbl90LCBfbWZuKCkgYW5kIG1mbl94KCkgYXJlIGRlZmluZWQgYWJvdmUgKi8KLS0gCjEuOS4x CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==