From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v8 06/25] arm/x86/vmap: Add vmalloc_xen, vfree_xen and vm_init_type Date: Wed, 13 Apr 2016 17:09:37 -0400 Message-ID: <1460581796-30071-7-git-send-email-konrad.wilk@oracle.com> References: <1460581796-30071-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aqS3N-0006Ex-7p for xen-devel@lists.xenproject.org; Wed, 13 Apr 2016 21:10:25 +0000 In-Reply-To: <1460581796-30071-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: konrad@kernel.org, xen-devel@lists.xenproject.org, sasha.levin@oracle.com, andrew.cooper3@citrix.com, ross.lagerwall@citrix.com, mpohlack@amazon.de Cc: Stefano Stabellini , Keir Fraser , Konrad Rzeszutek Wilk , Ian Jackson , Tim Deegan , Julien Grall , Jan Beulich List-Id: xen-devel@lists.xenproject.org Rm9yIHRob3NlIHVzZXJzIHdobyB3YW50IHRvIHVzZSB0aGUgdmlydHVhbCBhZGRyZXNzZXMgdGhh dAphcmUgaW4gdGhlIGh5cGVydmlzb3IncyBjb2RlL2RhdGEvIHJlZ2lvbiBhZGRyZXNzIHNwYWNl IC0KdGhlc2UgdGhyZWUgbmV3IGZ1bmN0aW9ucyBhbGxvdyB0aGF0LgoKSW1wbGVtZW50YXRpb24g d2lzZSB0aGUgdm1hcCBBUEkga2VlcHMgdHJhY2sgb2YgdHdvIHZpcnR1YWwKYWRkcmVzcyByZWdp b25zIG5vdzoKIGEpIFZNQVBfVklSVF9TVEFSVAogYikgQW55IHByb3ZpZGVkIHZpcnR1YWwgYWRk cmVzcyBzcGFjZSAobmVlZCBzdGFydCBhbmQgZW5kKS4KClRoZSBhKSBvbmUgaXMgdGhlIGRlZmF1 bHQgb25lIGFuZCB0aGUgZXhpc3RpbmcgYmVoYXZpb3IKZm9yIHVzZXJzIG9mIHZtYWxsb2MsIHZt YXAsIGV0YyBpcyB0aGUgc2FtZS4KCklmIGhvd2V2ZXIgb25lIHdpc2hlcyB0byB1c2UgdGhlIGIp IG9uZSBvbmx5IGhhcyB0byB1c2UKdGhlIHZtX2luaXRfdHlwZSB0byBpbml0aWFsaXplIGFuZCB0 aGUgdm1hbGxvY190eXBlIHRvIHV0aWxpemUgaXQuCgpUaGlzIGFsbG93cyB1c2VycyAoc3VjaCBh cyB4U3BsaWNlKSB0byBwcm92aWRlIHRoZWlyIG93bgptZWNoYW5pc20gdG8gY2hhbmdlIHRoZSB0 aGUgcGFnZSBmbGFncywgYW5kIGFsc28gdXNlIHZpcnR1YWwKYWRkcmVzc2VzIGNsb3NlciB0byB0 aGUgaHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJlc3NlcyAoYXQgbGVhc3QKb24geDg2KSB3aGlsZSBu b3QgaGF2aW5nIHRvIGRlYWwgd2l0aCB0aGUgYWxsb2NhdGlvbiBvZgpwYWdlcy4KCkZvciBleGFt cGxlIG9mIHVzZXJzLCBzZWUgcGF0Y2ggdGl0bGVkICJ4c3BsaWNlOiBJbXBsZW1lbnQgcGF5bG9h ZApsb2FkaW5nIiwgd2hlcmUgd2UgcGFyc2UgdGhlIHBheWxvYWQncyBFTEYgcmVsb2NhdGlvbnMg LSB3aGljaAppcyBkZWZpbmVkIHRvIGJlIHNpZ25lZCAzMi1iaXQgKHNvIG1heCBkaXNwbGFjZW1l bnQgaXMgMkdCIHZpcnR1YWwKc3BhY0UpLiBUaGUgZGlzcGxhY2VtZW50IG9mIHRoZSBoeXBlcnZp c29yIHZpcnR1YWwgYWRkcmVzc2VzIHRvIHRoZQp2bWFsbG9jIChvbiB4ODYpIGlzIG1vcmUgdGhh biAzMi1iaXRzIC0gd2hpY2ggbWVhbnMgdGhhdCBFTEYgcmVsb2NhdGlvbnMKd291bGQgdHJ1bmNh dGUgdGhlIDM0IGFuZCAzM3RoIGJpdC4gSGVuY2UgdGhpcyBhbHRlcm5hdGUgQVBJLgoKV2UgYWxz byBhZGQgYWRkIGV4dHJhIGNoZWNrcyBpbiBjYXNlIHRoZSBiKSByYW5nZSBoYXMgbm90IGJlZW4g aW5pdGlhbGl6ZWQuCgpTaWduZWQtb2ZmLWJ5OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJh ZC53aWxrQG9yYWNsZS5jb20+ClN1Z2dlc3RlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1 c2UuY29tPgpBY2tlZC1ieTogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4gW0FS TV0KUmV2aWV3ZWQtYnk6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+ CgotLS0KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogSmFu IEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9y Zz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxz c3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJt LmNvbT4KCnY0OiBOZXcgcGF0Y2guCnY1OiBVcGRhdGUgcGVyIEphbidzIGNvbW1lbnRzLgp2Njog RHJvcCB0aGUgc3RyYXkgcGFyZW50aGVzZXMgb24gdHlwZWRlZnMuCiAgICBEaXRjaCB0aGUgdnVu bWFwIGNhbGxiYWNrLiBTdGFzaCBhd2F5IHRoZSB2aXJ0dWFsIGFkZHJlc3NlcyBpbiBsaXN0cy4K ICAgIERpdGNoIHRoZSB2bWFwIGNhbGxiYWNrLiBKdXN0IHByb3ZpZGUgdmlydHVhbCBhZGRyZXNz LgogICAgRGl0Y2ggdGhlIHZtYWxsb2NfcmFuZ2UuIFJlcXVpcmUgdXNlcnMgb2YgYWx0ZXJuYXRp dmUgdmlydHVhbCBhZGRyZXNzCiAgICB0byBjYWxsIHZtYXBfaW5pdF90eXBlIGZpcnN0Lgp2Nzog RG9uJ3QgZXhwb3NlIHRoZSB2bWFsbG9jX3R5cGUgYW5kIHN1Y2guIEluc3RlYWQgcHJvdmlkZSBh biB3cmFwcGVyCiAgICBjYWxsZWQgdm1hbGxvY194ZW4gZm9yIHRob3NlLgogICAgUmVuYW1lIHRo ZSBlbnVtLCBjaGFuZ2Ugb25lIG9mIHRoZSBuYW1lcy4KICAgIE1vdmVkIHRoZSB2dW5tYXBfdHlw ZSBhcm91bmQgaW4gYyBmaWxlIHNvIHdlIGRvbid0IGhhdmUgdG8gZGVjbGFyZQogICAgaXQgaW4g dGhlIGhlYWRlci4KLS0tCi0tLQogeGVuL2FyY2gvYXJtL2tlcm5lbC5jICB8ICAgMiArLQogeGVu L2FyY2gvYXJtL21tLmMgICAgICB8ICAgMiArLQogeGVuL2FyY2gveDg2L21tLmMgICAgICB8ICAg MiArLQogeGVuL2NvbW1vbi92bWFwLmMgICAgICB8IDIwMiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiB4ZW4vZHJpdmVycy9hY3BpL29zbC5jIHwgICAy ICstCiB4ZW4vaW5jbHVkZS94ZW4vdm1hcC5oIHwgIDIxICsrKystCiA2IGZpbGVzIGNoYW5nZWQs IDE0OCBpbnNlcnRpb25zKCspLCA4MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0va2VybmVsLmMgYi94ZW4vYXJjaC9hcm0va2VybmVsLmMKaW5kZXggNjE4MDhhYy4uOTg3 MWJkOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2tlcm5lbC5jCisrKyBiL3hlbi9hcmNoL2Fy bS9rZXJuZWwuYwpAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyBfX2luaXQgaW50IGtlcm5lbF9k ZWNvbXByZXNzKHN0cnVjdCBib290bW9kdWxlICptb2QpCiAgICAgICAgIHJldHVybiAtRU5PTUVN OwogICAgIH0KICAgICBtZm4gPSBfbWZuKHBhZ2VfdG9fbWZuKHBhZ2VzKSk7Ci0gICAgb3V0cHV0 ID0gX192bWFwKCZtZm4sIDEgPDwga2VybmVsX29yZGVyX291dCwgMSwgMSwgUEFHRV9IWVBFUlZJ U09SKTsKKyAgICBvdXRwdXQgPSBfX3ZtYXAoJm1mbiwgMSA8PCBrZXJuZWxfb3JkZXJfb3V0LCAx LCAxLCBQQUdFX0hZUEVSVklTT1IsIFZNQVBfREVGQVVMVCk7CiAKICAgICByYyA9IHBlcmZvcm1f Z3VuemlwKG91dHB1dCwgaW5wdXQsIHNpemUpOwogICAgIGNsZWFuX2RjYWNoZV92YV9yYW5nZShv dXRwdXQsIG91dHB1dF9zaXplKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9tbS5jIGIveGVu L2FyY2gvYXJtL21tLmMKaW5kZXggNzA2NWMzZS4uOTRlYTA1NCAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gvYXJtL21tLmMKKysrIGIveGVuL2FyY2gvYXJtL21tLmMKQEAgLTgwNyw3ICs4MDcsNyBAQCB2 b2lkICppb3JlbWFwX2F0dHIocGFkZHJfdCBwYSwgc2l6ZV90IGxlbiwgdW5zaWduZWQgaW50IGF0 dHJpYnV0ZXMpCiAgICAgbWZuX3QgbWZuID0gX21mbihQRk5fRE9XTihwYSkpOwogICAgIHVuc2ln bmVkIGludCBvZmZzID0gcGEgJiAoUEFHRV9TSVpFIC0gMSk7CiAgICAgdW5zaWduZWQgaW50IG5y ID0gUEZOX1VQKG9mZnMgKyBsZW4pOwotICAgIHZvaWQgKnB0ciA9IF9fdm1hcCgmbWZuLCBuciwg MSwgMSwgYXR0cmlidXRlcyk7CisgICAgdm9pZCAqcHRyID0gX192bWFwKCZtZm4sIG5yLCAxLCAx LCBhdHRyaWJ1dGVzLCBWTUFQX0RFRkFVTFQpOwogCiAgICAgaWYgKCBwdHIgPT0gTlVMTCApCiAg ICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4v YXJjaC94ODYvbW0uYwppbmRleCBiY2E3NTMyLi5jYTJkMGJiIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtNjEyNCw3ICs2MTI0LDcgQEAg dm9pZCBfX2lvbWVtICppb3JlbWFwKHBhZGRyX3QgcGEsIHNpemVfdCBsZW4pCiAgICAgICAgIHVu c2lnbmVkIGludCBvZmZzID0gcGEgJiAoUEFHRV9TSVpFIC0gMSk7CiAgICAgICAgIHVuc2lnbmVk IGludCBuciA9IFBGTl9VUChvZmZzICsgbGVuKTsKIAotICAgICAgICB2YSA9IF9fdm1hcCgmbWZu LCBuciwgMSwgMSwgUEFHRV9IWVBFUlZJU09SX05PQ0FDSEUpICsgb2ZmczsKKyAgICAgICAgdmEg PSBfX3ZtYXAoJm1mbiwgbnIsIDEsIDEsIFBBR0VfSFlQRVJWSVNPUl9OT0NBQ0hFLCBWTUFQX0RF RkFVTFQpICsgb2ZmczsKICAgICB9CiAKICAgICByZXR1cm4gKHZvaWQgX19mb3JjZSBfX2lvbWVt ICopdmE7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZtYXAuYyBiL3hlbi9jb21tb24vdm1hcC5j CmluZGV4IDEzNGVkYTAuLmViNDc3YTQgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vdm1hcC5jCisr KyBiL3hlbi9jb21tb24vdm1hcC5jCkBAIC0xMCw0MCArMTAsNDMgQEAKICNpbmNsdWRlIDxhc20v cGFnZS5oPgogCiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHZtX2xvY2spOwotc3RhdGljIHZvaWQg Kl9fcmVhZF9tb3N0bHkgdm1fYmFzZTsKLSNkZWZpbmUgdm1fYml0bWFwICgodW5zaWduZWQgbG9u ZyAqKXZtX2Jhc2UpCitzdGF0aWMgdm9pZCAqX19yZWFkX21vc3RseSB2bV9iYXNlW1ZNQVBfUkVH SU9OX05SXTsKKyNkZWZpbmUgdm1fYml0bWFwKHgpICgodW5zaWduZWQgbG9uZyAqKXZtX2Jhc2Vb eF0pCiAvKiBoaWdoZXN0IGFsbG9jYXRlZCBiaXQgaW4gdGhlIGJpdG1hcCAqLwotc3RhdGljIHVu c2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IHZtX3RvcDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19y ZWFkX21vc3RseSB2bV90b3BbVk1BUF9SRUdJT05fTlJdOwogLyogdG90YWwgbnVtYmVyIG9mIGJp dHMgaW4gdGhlIGJpdG1hcCAqLwotc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IHZt X2VuZDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSB2bV9lbmRbVk1BUF9SRUdJ T05fTlJdOwogLyogbG93ZXN0IGtub3duIGNsZWFyIGJpdCBpbiB0aGUgYml0bWFwICovCi1zdGF0 aWMgdW5zaWduZWQgaW50IHZtX2xvdzsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgdm1fbG93W1ZNQVBf UkVHSU9OX05SXTsKIAotdm9pZCBfX2luaXQgdm1faW5pdCh2b2lkKQordm9pZCBfX2luaXQgdm1f aW5pdF90eXBlKGVudW0gdm1hcF9yZWdpb24gdHlwZSwgdm9pZCAqc3RhcnQsIHZvaWQgKmVuZCkK IHsKICAgICB1bnNpZ25lZCBpbnQgaSwgbnI7CiAgICAgdW5zaWduZWQgbG9uZyB2YTsKIAotICAg IHZtX2Jhc2UgPSAodm9pZCAqKVZNQVBfVklSVF9TVEFSVDsKLSAgICB2bV9lbmQgPSBQRk5fRE9X TihhcmNoX3ZtYXBfdmlydF9lbmQoKSAtIHZtX2Jhc2UpOwotICAgIHZtX2xvdyA9IFBGTl9VUCgo dm1fZW5kICsgNykgLyA4KTsKLSAgICBuciA9IFBGTl9VUCgodm1fbG93ICsgNykgLyA4KTsKLSAg ICB2bV90b3AgPSBuciAqIFBBR0VfU0laRSAqIDg7CisgICAgQVNTRVJUKCF2bV9iYXNlW3R5cGVd KTsKIAotICAgIGZvciAoIGkgPSAwLCB2YSA9ICh1bnNpZ25lZCBsb25nKXZtX2JpdG1hcDsgaSA8 IG5yOyArK2ksIHZhICs9IFBBR0VfU0laRSApCisgICAgdm1fYmFzZVt0eXBlXSA9IHN0YXJ0Owor ICAgIHZtX2VuZFt0eXBlXSA9IFBGTl9ET1dOKGVuZCAtIHN0YXJ0KTsKKyAgICB2bV9sb3dbdHlw ZV09IFBGTl9VUCgodm1fZW5kW3R5cGVdICsgNykgLyA4KTsKKyAgICBuciA9IFBGTl9VUCgodm1f bG93W3R5cGVdICsgNykgLyA4KTsKKyAgICB2bV90b3BbdHlwZV0gPSBuciAqIFBBR0VfU0laRSAq IDg7CisKKyAgICBmb3IgKCBpID0gMCwgdmEgPSAodW5zaWduZWQgbG9uZyl2bV9iaXRtYXAodHlw ZSk7IGkgPCBucjsgKytpLCB2YSArPSBQQUdFX1NJWkUgKQogICAgIHsKICAgICAgICAgc3RydWN0 IHBhZ2VfaW5mbyAqcGcgPSBhbGxvY19kb21oZWFwX3BhZ2UoTlVMTCwgMCk7CiAKICAgICAgICAg bWFwX3BhZ2VzX3RvX3hlbih2YSwgcGFnZV90b19tZm4ocGcpLCAxLCBQQUdFX0hZUEVSVklTT1Ip OwogICAgICAgICBjbGVhcl9wYWdlKCh2b2lkICopdmEpOwogICAgIH0KLSAgICBiaXRtYXBfZmls bCh2bV9iaXRtYXAsIHZtX2xvdyk7CisgICAgYml0bWFwX2ZpbGwodm1fYml0bWFwKHR5cGUpLCB2 bV9sb3dbdHlwZV0pOwogCiAgICAgLyogUG9wdWxhdGUgcGFnZSB0YWJsZXMgZm9yIHRoZSBiaXRt YXAgaWYgbmVjZXNzYXJ5LiAqLwotICAgIHBvcHVsYXRlX3B0X3JhbmdlKHZhLCAwLCB2bV9sb3cg LSBucik7CisgICAgcG9wdWxhdGVfcHRfcmFuZ2UodmEsIDAsIHZtX2xvd1t0eXBlXSAtIG5yKTsK IH0KIAotdm9pZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24p CitzdGF0aWMgdm9pZCAqdm1fYWxsb2NfdHlwZSh1bnNpZ25lZCBpbnQgbnIsIHVuc2lnbmVkIGlu dCBhbGlnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gdm1hcF9yZWdpb24gdCkK IHsKICAgICB1bnNpZ25lZCBpbnQgc3RhcnQsIGJpdDsKIApAQCAtNTIsMjcgKzU1LDMwIEBAIHZv aWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwgdW5zaWduZWQgaW50IGFsaWduKQogICAgIGVs c2UgaWYgKCBhbGlnbiAmIChhbGlnbiAtIDEpICkKICAgICAgICAgYWxpZ24gJj0gLWFsaWduOwog CisgICAgaWYgKCAhdm1fYmFzZVt0XSApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgc3Bp bl9sb2NrKCZ2bV9sb2NrKTsKICAgICBmb3IgKCA7IDsgKQogICAgIHsKICAgICAgICAgc3RydWN0 IHBhZ2VfaW5mbyAqcGc7CiAKLSAgICAgICAgQVNTRVJUKHZtX2xvdyA9PSB2bV90b3AgfHwgIXRl c3RfYml0KHZtX2xvdywgdm1fYml0bWFwKSk7Ci0gICAgICAgIGZvciAoIHN0YXJ0ID0gdm1fbG93 OyBzdGFydCA8IHZtX3RvcDsgKQorICAgICAgICBBU1NFUlQodm1fbG93W3RdID09IHZtX3RvcFt0 XSB8fCAhdGVzdF9iaXQodm1fbG93W3RdLCB2bV9iaXRtYXAodCkpKTsKKyAgICAgICAgZm9yICgg c3RhcnQgPSB2bV9sb3dbdF07IHN0YXJ0IDwgdm1fdG9wW3RdOyApCiAgICAgICAgIHsKLSAgICAg ICAgICAgIGJpdCA9IGZpbmRfbmV4dF9iaXQodm1fYml0bWFwLCB2bV90b3AsIHN0YXJ0ICsgMSk7 Ci0gICAgICAgICAgICBpZiAoIGJpdCA+IHZtX3RvcCApCi0gICAgICAgICAgICAgICAgYml0ID0g dm1fdG9wOworICAgICAgICAgICAgYml0ID0gZmluZF9uZXh0X2JpdCh2bV9iaXRtYXAodCksIHZt X3RvcFt0XSwgc3RhcnQgKyAxKTsKKyAgICAgICAgICAgIGlmICggYml0ID4gdm1fdG9wW3RdICkK KyAgICAgICAgICAgICAgICBiaXQgPSB2bV90b3BbdF07CiAgICAgICAgICAgICAvKgogICAgICAg ICAgICAgICogTm90ZSB0aGF0IHRoaXMgc2tpcHMgdGhlIGZpcnN0IGJpdCwgbWFraW5nIHRoZQog ICAgICAgICAgICAgICogY29ycmVzcG9uZGluZyBwYWdlIGEgZ3VhcmQgb25lLgogICAgICAgICAg ICAgICovCiAgICAgICAgICAgICBzdGFydCA9IChzdGFydCArIGFsaWduKSAmIH4oYWxpZ24gLSAx KTsKLSAgICAgICAgICAgIGlmICggYml0IDwgdm1fdG9wICkKKyAgICAgICAgICAgIGlmICggYml0 IDwgdm1fdG9wW3RdICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIHN0YXJ0 ICsgbnIgPCBiaXQgKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg ICBzdGFydCA9IGZpbmRfbmV4dF96ZXJvX2JpdCh2bV9iaXRtYXAsIHZtX3RvcCwgYml0ICsgMSk7 CisgICAgICAgICAgICAgICAgc3RhcnQgPSBmaW5kX25leHRfemVyb19iaXQodm1fYml0bWFwKHQp LCB2bV90b3BbdF0sIGJpdCArIDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgewpAQCAtODIsMTIgKzg4LDEyIEBAIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVk IGludCBuciwgdW5zaWduZWQgaW50IGFsaWduKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAK LSAgICAgICAgaWYgKCBzdGFydCA8IHZtX3RvcCApCisgICAgICAgIGlmICggc3RhcnQgPCB2bV90 b3BbdF0gKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgc3Bpbl91bmxvY2soJnZtX2xv Y2spOwogCi0gICAgICAgIGlmICggdm1fdG9wID49IHZtX2VuZCApCisgICAgICAgIGlmICggdm1f dG9wW3RdID49IHZtX2VuZFt0XSApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAg ICBwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZShOVUxMLCAwKTsKQEAgLTk2LDIzICsxMDIsMjMgQEAg dm9pZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCiAKICAg ICAgICAgc3Bpbl9sb2NrKCZ2bV9sb2NrKTsKIAotICAgICAgICBpZiAoIHN0YXJ0ID49IHZtX3Rv cCApCisgICAgICAgIGlmICggc3RhcnQgPj0gdm1fdG9wW3RdICkKICAgICAgICAgewotICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyB2YSA9ICh1bnNpZ25lZCBsb25nKXZtX2JpdG1hcCArIHZtX3Rv cCAvIDg7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhID0gKHVuc2lnbmVkIGxvbmcpdm1f Yml0bWFwKHQpICsgdm1fdG9wW3RdIC8gODsKIAogICAgICAgICAgICAgaWYgKCAhbWFwX3BhZ2Vz X3RvX3hlbih2YSwgcGFnZV90b19tZm4ocGcpLCAxLCBQQUdFX0hZUEVSVklTT1IpICkKICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICBjbGVhcl9wYWdlKCh2b2lkICopdmEpOwotICAgICAg ICAgICAgICAgIHZtX3RvcCArPSBQQUdFX1NJWkUgKiA4OwotICAgICAgICAgICAgICAgIGlmICgg dm1fdG9wID4gdm1fZW5kICkKLSAgICAgICAgICAgICAgICAgICAgdm1fdG9wID0gdm1fZW5kOwor ICAgICAgICAgICAgICAgIHZtX3RvcFt0XSArPSBQQUdFX1NJWkUgKiA4OworICAgICAgICAgICAg ICAgIGlmICggdm1fdG9wW3RdID4gdm1fZW5kW3RdICkKKyAgICAgICAgICAgICAgICAgICAgdm1f dG9wW3RdID0gdm1fZW5kW3RdOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg ICAgfQogICAgICAgICB9CiAKICAgICAgICAgZnJlZV9kb21oZWFwX3BhZ2UocGcpOwogCi0gICAg ICAgIGlmICggc3RhcnQgPj0gdm1fdG9wICkKKyAgICAgICAgaWYgKCBzdGFydCA+PSB2bV90b3Bb dF0gKQogICAgICAgICB7CiAgICAgICAgICAgICBzcGluX3VubG9jaygmdm1fbG9jayk7CiAgICAg ICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyMCw0NyArMTI2LDU2IEBAIHZvaWQgKnZtX2FsbG9j KHVuc2lnbmVkIGludCBuciwgdW5zaWduZWQgaW50IGFsaWduKQogICAgIH0KIAogICAgIGZvciAo IGJpdCA9IHN0YXJ0OyBiaXQgPCBzdGFydCArIG5yOyArK2JpdCApCi0gICAgICAgIF9fc2V0X2Jp dChiaXQsIHZtX2JpdG1hcCk7Ci0gICAgaWYgKCBiaXQgPCB2bV90b3AgKQotICAgICAgICBBU1NF UlQoIXRlc3RfYml0KGJpdCwgdm1fYml0bWFwKSk7CisgICAgICAgIF9fc2V0X2JpdChiaXQsIHZt X2JpdG1hcCh0KSk7CisgICAgaWYgKCBiaXQgPCB2bV90b3BbdF0gKQorICAgICAgICBBU1NFUlQo IXRlc3RfYml0KGJpdCwgdm1fYml0bWFwKHQpKSk7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlQo Yml0ID09IHZtX3RvcCk7Ci0gICAgaWYgKCBzdGFydCA8PSB2bV9sb3cgKyAyICkKLSAgICAgICAg dm1fbG93ID0gYml0OworICAgICAgICBBU1NFUlQoYml0ID09IHZtX3RvcFt0XSk7CisgICAgaWYg KCBzdGFydCA8PSB2bV9sb3dbdF0gKyAyICkKKyAgICAgICAgdm1fbG93W3RdID0gYml0OwogICAg IHNwaW5fdW5sb2NrKCZ2bV9sb2NrKTsKIAotICAgIHJldHVybiB2bV9iYXNlICsgc3RhcnQgKiBQ QUdFX1NJWkU7CisgICAgcmV0dXJuIHZtX2Jhc2VbdF0gKyBzdGFydCAqIFBBR0VfU0laRTsKK30K Kwordm9pZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCit7 CisgICAgcmV0dXJuIHZtX2FsbG9jX3R5cGUobnIsIGFsaWduLCBWTUFQX0RFRkFVTFQpOwogfQog Ci1zdGF0aWMgdW5zaWduZWQgaW50IHZtX2luZGV4KGNvbnN0IHZvaWQgKnZhKQorc3RhdGljIHVu c2lnbmVkIGludCB2bV9pbmRleChjb25zdCB2b2lkICp2YSwgZW51bSB2bWFwX3JlZ2lvbiB0eXBl KQogewogICAgIHVuc2lnbmVkIGxvbmcgYWRkciA9ICh1bnNpZ25lZCBsb25nKXZhICYgfihQQUdF X1NJWkUgLSAxKTsKICAgICB1bnNpZ25lZCBpbnQgaWR4OworICAgIHVuc2lnbmVkIGxvbmcgc3Rh cnQgPSAodW5zaWduZWQgbG9uZyl2bV9iYXNlW3R5cGVdOworCisgICAgaWYgKCAhc3RhcnQpCisg ICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKCBhZGRyIDwgVk1BUF9WSVJUX1NUQVJUICsgKHZt X2VuZCAvIDgpIHx8Ci0gICAgICAgICBhZGRyID49IFZNQVBfVklSVF9TVEFSVCArIHZtX3RvcCAq IFBBR0VfU0laRSApCisgICAgaWYgKCBhZGRyIDwgc3RhcnQgKyAodm1fZW5kW3R5cGVdIC8gOCkg fHwKKyAgICAgICAgIGFkZHIgPj0gc3RhcnQgKyB2bV90b3BbdHlwZV0gKiBQQUdFX1NJWkUgKQog ICAgICAgICByZXR1cm4gMDsKIAotICAgIGlkeCA9IFBGTl9ET1dOKHZhIC0gdm1fYmFzZSk7Ci0g ICAgcmV0dXJuICF0ZXN0X2JpdChpZHggLSAxLCB2bV9iaXRtYXApICYmCi0gICAgICAgICAgIHRl c3RfYml0KGlkeCwgdm1fYml0bWFwKSA/IGlkeCA6IDA7CisgICAgaWR4ID0gUEZOX0RPV04odmEg LSB2bV9iYXNlW3R5cGVdKTsKKyAgICByZXR1cm4gIXRlc3RfYml0KGlkeCAtIDEsIHZtX2JpdG1h cCh0eXBlKSkgJiYKKyAgICAgICAgICAgdGVzdF9iaXQoaWR4LCB2bV9iaXRtYXAodHlwZSkpID8g aWR4IDogMDsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGludCB2bV9zaXplKGNvbnN0IHZvaWQgKnZh KQorc3RhdGljIHVuc2lnbmVkIGludCB2bV9zaXplKGNvbnN0IHZvaWQgKnZhLCBlbnVtIHZtYXBf cmVnaW9uIHR5cGUpCiB7Ci0gICAgdW5zaWduZWQgaW50IHN0YXJ0ID0gdm1faW5kZXgodmEpLCBl bmQ7CisgICAgdW5zaWduZWQgaW50IHN0YXJ0ID0gdm1faW5kZXgodmEsIHR5cGUpLCBlbmQ7CiAK ICAgICBpZiAoICFzdGFydCApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZW5kID0gZmluZF9u ZXh0X3plcm9fYml0KHZtX2JpdG1hcCwgdm1fdG9wLCBzdGFydCArIDEpOworICAgIGVuZCA9IGZp bmRfbmV4dF96ZXJvX2JpdCh2bV9iaXRtYXAodHlwZSksIHZtX3RvcFt0eXBlXSwgc3RhcnQgKyAx KTsKIAotICAgIHJldHVybiBtaW4oZW5kLCB2bV90b3ApIC0gc3RhcnQ7CisgICAgcmV0dXJuIG1p bihlbmQsIHZtX3RvcFt0eXBlXSkgLSBzdGFydDsKIH0KIAotdm9pZCB2bV9mcmVlKGNvbnN0IHZv aWQgKnZhKQorc3RhdGljIHZvaWQgdm1fZnJlZV90eXBlKGNvbnN0IHZvaWQgKnZhLCBlbnVtIHZt YXBfcmVnaW9uIHR5cGUpCiB7Ci0gICAgdW5zaWduZWQgaW50IGJpdCA9IHZtX2luZGV4KHZhKTsK KyAgICB1bnNpZ25lZCBpbnQgYml0ID0gdm1faW5kZXgodmEsIHR5cGUpOwogCiAgICAgaWYgKCAh Yml0ICkKICAgICB7CkBAIC0xNjksMjkgKzE4NCw1NCBAQCB2b2lkIHZtX2ZyZWUoY29uc3Qgdm9p ZCAqdmEpCiAgICAgfQogCiAgICAgc3Bpbl9sb2NrKCZ2bV9sb2NrKTsKLSAgICBpZiAoIGJpdCA8 IHZtX2xvdyApCisgICAgaWYgKCBiaXQgPCB2bV9sb3dbdHlwZV0gKQogICAgIHsKLSAgICAgICAg dm1fbG93ID0gYml0IC0gMTsKLSAgICAgICAgd2hpbGUgKCAhdGVzdF9iaXQodm1fbG93IC0gMSwg dm1fYml0bWFwKSApCi0gICAgICAgICAgICAtLXZtX2xvdzsKKyAgICAgICAgdm1fbG93W3R5cGVd ID0gYml0IC0gMTsKKyAgICAgICAgd2hpbGUgKCAhdGVzdF9iaXQodm1fbG93W3R5cGVdIC0gMSwg dm1fYml0bWFwKHR5cGUpKSApCisgICAgICAgICAgICAtLXZtX2xvd1t0eXBlXTsKICAgICB9Ci0g ICAgd2hpbGUgKCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChiaXQsIHZtX2JpdG1hcCkgKQotICAgICAg ICBpZiAoICsrYml0ID09IHZtX3RvcCApCisgICAgd2hpbGUgKCBfX3Rlc3RfYW5kX2NsZWFyX2Jp dChiaXQsIHZtX2JpdG1hcCh0eXBlKSkgKQorICAgICAgICBpZiAoICsrYml0ID09IHZtX3RvcFt0 eXBlXSApCiAgICAgICAgICAgICBicmVhazsKICAgICBzcGluX3VubG9jaygmdm1fbG9jayk7CiB9 CiAKK3ZvaWQgdm1fZnJlZShjb25zdCB2b2lkICp2YSkKK3sKKyAgICB2bV9mcmVlX3R5cGUodmEs IFZNQVBfREVGQVVMVCk7Cit9CisKK3N0YXRpYyB2b2lkIHZ1bm1hcF90eXBlKGNvbnN0IHZvaWQg KnZhLCBlbnVtIHZtYXBfcmVnaW9uIHR5cGUpCit7CisgICAgdW5zaWduZWQgaW50IHNpemUgPSB2 bV9zaXplKHZhLCB0eXBlKTsKKyNpZm5kZWYgX1BBR0VfTk9ORQorICAgIHVuc2lnbmVkIGxvbmcg YWRkciA9ICh1bnNpZ25lZCBsb25nKXZhOworCisgICAgZGVzdHJveV94ZW5fbWFwcGluZ3MoYWRk ciwgYWRkciArIFBBR0VfU0laRSAqIHNpemUpOworI2Vsc2UgLyogQXZvaWQgdGVhcmluZyBkb3du IGludGVybWVkaWF0ZSBwYWdlIHRhYmxlcy4gKi8KKyAgICBtYXBfcGFnZXNfdG9feGVuKCh1bnNp Z25lZCBsb25nKXZhLCAwLCBzaXplLCBfUEFHRV9OT05FKTsKKyNlbmRpZgorICAgIHZtX2ZyZWVf dHlwZSh2YSwgdHlwZSk7Cit9CisKK3ZvaWQgdnVubWFwKGNvbnN0IHZvaWQgKnZhKQoreworICAg IHZ1bm1hcF90eXBlKHZhLCBWTUFQX0RFRkFVTFQpOworfQorCisKIHZvaWQgKl9fdm1hcChjb25z dCBtZm5fdCAqbWZuLCB1bnNpZ25lZCBpbnQgZ3JhbnVsYXJpdHksCi0gICAgICAgICAgICAgdW5z aWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24sIHVuc2lnbmVkIGludCBmbGFncykKKyAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnIsIHVuc2lnbmVkIGludCBhbGlnbiwgdW5zaWduZWQg aW50IGZsYWdzLAorICAgICAgICAgICAgIGVudW0gdm1hcF9yZWdpb24gdHlwZSkKIHsKLSAgICB2 b2lkICp2YSA9IHZtX2FsbG9jKG5yICogZ3JhbnVsYXJpdHksIGFsaWduKTsKKyAgICB2b2lkICp2 YSA9IHZtX2FsbG9jX3R5cGUobnIgKiBncmFudWxhcml0eSwgYWxpZ24sIHR5cGUpOwogICAgIHVu c2lnbmVkIGxvbmcgY3VyID0gKHVuc2lnbmVkIGxvbmcpdmE7CiAKICAgICBmb3IgKCA7IHZhICYm IG5yLS07ICsrbWZuLCBjdXIgKz0gUEFHRV9TSVpFICogZ3JhbnVsYXJpdHkgKQogICAgIHsKICAg ICAgICAgaWYgKCBtYXBfcGFnZXNfdG9feGVuKGN1ciwgbWZuX3goKm1mbiksIGdyYW51bGFyaXR5 LCBmbGFncykgKQogICAgICAgICB7Ci0gICAgICAgICAgICB2dW5tYXAodmEpOworICAgICAgICAg ICAgdnVubWFwX3R5cGUodmEsIHR5cGUpOwogICAgICAgICAgICAgdmEgPSBOVUxMOwogICAgICAg ICB9CiAgICAgfQpAQCAtMjAxLDIyICsyNDEsMTAgQEAgdm9pZCAqX192bWFwKGNvbnN0IG1mbl90 ICptZm4sIHVuc2lnbmVkIGludCBncmFudWxhcml0eSwKIAogdm9pZCAqdm1hcChjb25zdCBtZm5f dCAqbWZuLCB1bnNpZ25lZCBpbnQgbnIpCiB7Ci0gICAgcmV0dXJuIF9fdm1hcChtZm4sIDEsIG5y LCAxLCBQQUdFX0hZUEVSVklTT1IpOworICAgIHJldHVybiBfX3ZtYXAobWZuLCAxLCBuciwgMSwg UEFHRV9IWVBFUlZJU09SLCBWTUFQX0RFRkFVTFQpOwogfQogCi12b2lkIHZ1bm1hcChjb25zdCB2 b2lkICp2YSkKLXsKLSNpZm5kZWYgX1BBR0VfTk9ORQotICAgIHVuc2lnbmVkIGxvbmcgYWRkciA9 ICh1bnNpZ25lZCBsb25nKXZhOwotCi0gICAgZGVzdHJveV94ZW5fbWFwcGluZ3MoYWRkciwgYWRk ciArIFBBR0VfU0laRSAqIHZtX3NpemUodmEpKTsKLSNlbHNlIC8qIEF2b2lkIHRlYXJpbmcgZG93 biBpbnRlcm1lZGlhdGUgcGFnZSB0YWJsZXMuICovCi0gICAgbWFwX3BhZ2VzX3RvX3hlbigodW5z aWduZWQgbG9uZyl2YSwgMCwgdm1fc2l6ZSh2YSksIF9QQUdFX05PTkUpOwotI2VuZGlmCi0gICAg dm1fZnJlZSh2YSk7Ci19Ci0KLXZvaWQgKnZtYWxsb2Moc2l6ZV90IHNpemUpCitzdGF0aWMgdm9p ZCAqdm1hbGxvY190eXBlKHNpemVfdCBzaXplLCBlbnVtIHZtYXBfcmVnaW9uIHR5cGUpCiB7CiAg ICAgbWZuX3QgKm1mbjsKICAgICBzaXplX3QgcGFnZXMsIGk7CkBAIC0yMzgsMTEgKzI2NiwxMiBA QCB2b2lkICp2bWFsbG9jKHNpemVfdCBzaXplKQogICAgICAgICBtZm5baV0gPSBfbWZuKHBhZ2Vf dG9fbWZuKHBnKSk7CiAgICAgfQogCi0gICAgdmEgPSB2bWFwKG1mbiwgcGFnZXMpOworICAgIHZh ID0gX192bWFwKG1mbiwgMSwgcGFnZXMsIDEsIFBBR0VfSFlQRVJWSVNPUiwgdHlwZSk7CiAgICAg aWYgKCB2YSA9PSBOVUxMICkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIHhmcmVlKG1mbik7 CisKICAgICByZXR1cm4gdmE7CiAKICBlcnJvcjoKQEAgLTI1Miw2ICsyODEsMTYgQEAgdm9pZCAq dm1hbGxvYyhzaXplX3Qgc2l6ZSkKICAgICByZXR1cm4gTlVMTDsKIH0KIAordm9pZCAqdm1hbGxv YyhzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gdm1hbGxvY190eXBlKHNpemUsIFZNQVBfREVG QVVMVCk7Cit9CisKK3ZvaWQgKnZtYWxsb2NfeGVuKHNpemVfdCBzaXplKQoreworICAgIHJldHVy biB2bWFsbG9jX3R5cGUoc2l6ZSwgVk1BUF9YRU4pOworfQorCiB2b2lkICp2emFsbG9jKHNpemVf dCBzaXplKQogewogICAgIHZvaWQgKnAgPSB2bWFsbG9jKHNpemUpOwpAQCAtMjY2LDcgKzMwNSw3 IEBAIHZvaWQgKnZ6YWxsb2Moc2l6ZV90IHNpemUpCiAgICAgcmV0dXJuIHA7CiB9CiAKLXZvaWQg dmZyZWUodm9pZCAqdmEpCit2b2lkIHZmcmVlX3R5cGUodm9pZCAqdmEsIGVudW0gdm1hcF9yZWdp b24gdHlwZSkKIHsKICAgICB1bnNpZ25lZCBpbnQgaSwgcGFnZXM7CiAgICAgc3RydWN0IHBhZ2Vf aW5mbyAqcGc7CkBAIC0yNzUsNyArMzE0LDggQEAgdm9pZCB2ZnJlZSh2b2lkICp2YSkKICAgICBp ZiAoICF2YSApCiAgICAgICAgIHJldHVybjsKIAotICAgIHBhZ2VzID0gdm1fc2l6ZSh2YSk7Cisg ICAgcGFnZXMgPSB2bV9zaXplKHZhLCB0eXBlKTsKKwogICAgIEFTU0VSVChwYWdlcyk7CiAKICAg ICBmb3IgKCBpID0gMDsgaSA8IHBhZ2VzOyBpKysgKQpAQCAtMjg1LDkgKzMyNSwxOSBAQCB2b2lk IHZmcmVlKHZvaWQgKnZhKQogICAgICAgICBBU1NFUlQocGFnZSk7CiAgICAgICAgIHBhZ2VfbGlz dF9hZGQocGFnZSwgJnBnX2xpc3QpOwogICAgIH0KLSAgICB2dW5tYXAodmEpOworICAgIHZ1bm1h cF90eXBlKHZhLCB0eXBlKTsKIAogICAgIHdoaWxlICggKHBnID0gcGFnZV9saXN0X3JlbW92ZV9o ZWFkKCZwZ19saXN0KSkgIT0gTlVMTCApCiAgICAgICAgIGZyZWVfZG9taGVhcF9wYWdlKHBnKTsK IH0KKwordm9pZCB2ZnJlZSh2b2lkICp2YSkKK3sKKyAgICB2ZnJlZV90eXBlKHZhLCBWTUFQX0RF RkFVTFQpOworfQorCit2b2lkIHZmcmVlX3hlbih2b2lkICp2YSkKK3sKKyAgICB2ZnJlZV90eXBl KHZhLCBWTUFQX1hFTik7Cit9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2FjcGkv b3NsLmMgYi94ZW4vZHJpdmVycy9hY3BpL29zbC5jCmluZGV4IDhhMjhkODcuLjlhNDkwMjkgMTAw NjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvb3NsLmMKKysrIGIveGVuL2RyaXZlcnMvYWNwaS9v c2wuYwpAQCAtOTcsNyArOTcsNyBAQCBhY3BpX29zX21hcF9tZW1vcnkoYWNwaV9waHlzaWNhbF9h ZGRyZXNzIHBoeXMsIGFjcGlfc2l6ZSBzaXplKQogCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2 KSAmJiAhKChwaHlzICsgc2l6ZSAtIDEpID4+IDIwKSkKIAkJCXJldHVybiBfX3ZhKHBoeXMpOwog CQlyZXR1cm4gX192bWFwKCZtZm4sIFBGTl9VUChvZmZzICsgc2l6ZSksIDEsIDEsCi0JCQkgICAg ICBBQ1BJX01BUF9NRU1fQVRUUikgKyBvZmZzOworCQkJICAgICAgQUNQSV9NQVBfTUVNX0FUVFIs IFZNQVBfREVGQVVMVCkgKyBvZmZzOwogCX0KIAlyZXR1cm4gX19hY3BpX21hcF90YWJsZShwaHlz LCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi92bWFwLmggYi94ZW4vaW5j bHVkZS94ZW4vdm1hcC5oCmluZGV4IDU2NzFhYzguLjBmYjc4YTIgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL3hlbi92bWFwLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3ZtYXAuaApAQCAtNCwxNiAr NCwyOCBAQAogI2luY2x1ZGUgPHhlbi9tbS5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAKK2Vu dW0gdm1hcF9yZWdpb24geworICAgIFZNQVBfREVGQVVMVCwKKyAgICBWTUFQX1hFTiwKKyAgICBW TUFQX1JFR0lPTl9OUiwKK307CisKK3ZvaWQgdm1faW5pdF90eXBlKGVudW0gdm1hcF9yZWdpb24g dHlwZSwgdm9pZCAqc3RhcnQsIHZvaWQgKmVuZCk7CisKIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVk IGludCBuciwgdW5zaWduZWQgaW50IGFsaWduKTsKIHZvaWQgdm1fZnJlZShjb25zdCB2b2lkICop OwogCi12b2lkICpfX3ZtYXAoY29uc3QgbWZuX3QgKm1mbiwgdW5zaWduZWQgaW50IGdyYW51bGFy aXR5LAotICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuciwgdW5zaWduZWQgaW50IGFsaWduLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpOwordm9pZCAqX192bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2ln bmVkIGludCBncmFudWxhcml0eSwgdW5zaWduZWQgaW50IG5yLAorICAgICAgICAgICAgIHVuc2ln bmVkIGludCBhbGlnbiwgdW5zaWduZWQgaW50IGZsYWdzLCBlbnVtIHZtYXBfcmVnaW9uKTsKIHZv aWQgKnZtYXAoY29uc3QgbWZuX3QgKm1mbiwgdW5zaWduZWQgaW50IG5yKTsKIHZvaWQgdnVubWFw KGNvbnN0IHZvaWQgKik7CisKIHZvaWQgKnZtYWxsb2Moc2l6ZV90IHNpemUpOwordm9pZCAqdm1h bGxvY194ZW4oc2l6ZV90IHNpemUpOworCiB2b2lkICp2emFsbG9jKHNpemVfdCBzaXplKTsKIHZv aWQgdmZyZWUodm9pZCAqdmEpOwordm9pZCB2ZnJlZV94ZW4odm9pZCAqdmEpOwogCiB2b2lkIF9f aW9tZW0gKmlvcmVtYXAocGFkZHJfdCwgc2l6ZV90KTsKIApAQCAtMjQsNyArMzYsMTAgQEAgc3Rh dGljIGlubGluZSB2b2lkIGlvdW5tYXAodm9pZCBfX2lvbWVtICp2YSkKICAgICB2dW5tYXAoKHZv aWQgKikoYWRkciAmIFBBR0VfTUFTSykpOwogfQogCi12b2lkIHZtX2luaXQodm9pZCk7CiB2b2lk ICphcmNoX3ZtYXBfdmlydF9lbmQodm9pZCk7CitzdGF0aWMgaW5saW5lIHZvaWQgdm1faW5pdCh2 b2lkKQoreworICAgIHZtX2luaXRfdHlwZShWTUFQX0RFRkFVTFQsICh2b2lkICopVk1BUF9WSVJU X1NUQVJULCBhcmNoX3ZtYXBfdmlydF9lbmQoKSk7Cit9CiAKICNlbmRpZiAvKiBfX1hFTl9WTUFQ X0hfXyAqLwotLSAKMi41LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3Jn Cmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=