From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v7 06/24] arm/x86/vmap: Add vmalloc_xen, vfree_xen and vm_init_type Date: Sun, 10 Apr 2016 17:14:38 -0400 Message-ID: <1460322896-1115-7-git-send-email-konrad.wilk@oracle.com> References: <1460322896-1115-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 1apMhV-00084u-Jv for xen-devel@lists.xenproject.org; Sun, 10 Apr 2016 21:15:21 +0000 In-Reply-To: <1460322896-1115-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: xen-devel@lists.xenproject.org, konrad@kernel.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 dAphcmUgaW4gdGhlIGh5cGVydmlzb3IncyB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgLSB0aGVzZSB0 aHJlZWogbmV3CmZ1bmN0aW9ucyBhbGxvdyB0aGF0LiBBbG9uZyB3aXRoIHByb3ZpZGluZyB0aGUg dW5kZXJsYXlpbmcKTUZOcyBmb3IgdGhlIHVzZXIncyAoc3VjaCBhcyBjaGFuZ2luZyBwYWdlIHRh YmxlIHBlcm1pc3Npb25zKS4KCkltcGxlbWVudGF0aW9uIHdpc2UgdGhlIHZtYXAgQVBJIGtlZXBz IHRyYWNrIG9mIHR3byB2aXJ0dWFsCmFkZHJlc3MgcmVnaW9ucyBub3c6CiBhKSBWTUFQX1ZJUlRf U1RBUlQKIGIpIEFueSBwcm92aWRlZCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UgKG5lZWQgc3RhcnQg YW5kIGVuZCkuCgpUaGUgYSkgb25lIGlzIHRoZSBkZWZhdWx0IG9uZSBhbmQgdGhlIGV4aXN0aW5n IGJlaGF2aW9yCmZvciB1c2VycyBvZiB2bWFsbG9jLCB2bWFwLCBldGMgaXMgdGhlIHNhbWUuCgpJ ZiBob3dldmVyIG9uZSB3aXNoZXMgdG8gdXNlIHRoZSBiKSBvbmUgb25seSBoYXMgdG8gdXNlCnRo ZSB2bV9pbml0X3R5cGUgdG8gaW5pdGlhbGl6ZSBhbmQgdGhlIHZtYWxsb2NfdHlwZSB0byB1dGls aXplIGl0LgoKVGhpcyBhbGxvd3MgdXNlcnMgKHN1Y2ggYXMgeFNwbGljZSkgdG8gcHJvdmlkZSB0 aGVpciBvd24KbWVjaGFuaXNtIHRvIGNoYW5nZSB0aGUgdGhlIHBhZ2UgZmxhZ3MsIGFuZCBhbHNv IHVzZSB2aXJ0dWFsCmFkZHJlc3NlcyBjbG9zZXIgdG8gdGhlIGh5cGVydmlzb3IgdmlydHVhbCBh ZGRyZXNzZXMgKGF0IGxlYXN0Cm9uIHg4Nikgd2hpbGUgbm90IGhhdmluZyB0byBkZWFsIHdpdGgg dGhlIGFsbG9jYXRpb24gb2YKcGFnZXMuCgpGb3IgZXhhbXBsZSBvZiB1c2Vycywgc2VlIHBhdGNo IHRpdGxlZCAieHNwbGljZTogSW1wbGVtZW50IHBheWxvYWQKbG9hZGluZyIsIHdoZXJlIHdlIHBh cnNlIHRoZSBwYXlsb2FkJ3MgRUxGIHJlbG9jYXRpb25zIC0gd2hpY2gKaXMgZGVmaW5lZCB0byBi ZSBzaWduZWQgMzItYml0IChzbyBtYXggZGlzcGxhY2VtZW50IGlzIDJHQiB2aXJ0dWFsCnNwYWNF KS4gVGhlIGRpc3BsYWNlbWVudCBvZiB0aGUgaHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJlc3NlcyB0 byB0aGUKdm1hbGxvYyAob24geDg2KSBpcyBtb3JlIHRoYW4gMzItYml0cyAtIHdoaWNoIG1lYW5z IHRoYXQgRUxGIHJlbG9jYXRpb25zCndvdWxkIHRydW5jYXRlIHRoZSAzNCBhbmQgMzN0aCBiaXQu IEhlbmNlIHRoaXMgYWx0ZXJuYXRlIEFQSS4KCldlIGFsc28gYWRkIGFkZCBleHRyYSBjaGVja3Mg aW4gY2FzZSB0aGUgYikgcmFuZ2UgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLgoKU2lnbmVkLW9m Zi1ieTogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpTdWdn ZXN0ZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQWNrZWQtYnk6IEp1bGll biBHcmFsbCA8anVsaWVuLmdyYWxsQGFybS5jb20+IFtBUk1dCgotLS0KQ2M6IElhbiBKYWNrc29u IDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1 c2UuY29tPgpDYzogS2VpciBGcmFzZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRp bUB4ZW4ub3JnPgpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3Jn PgpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KCnY0OiBOZXcgcGF0Y2gu CnY1OiBVcGRhdGUgcGVyIEphbidzIGNvbW1lbnRzLgp2NjogRHJvcCB0aGUgc3RyYXkgcGFyZW50 aGVzZXMgb24gdHlwZWRlZnMuCiAgICBEaXRjaCB0aGUgdnVubWFwIGNhbGxiYWNrLiBTdGFzaCBh d2F5IHRoZSB2aXJ0dWFsIGFkZHJlc3NlcyBpbiBsaXN0cy4KICAgIERpdGNoIHRoZSB2bWFwIGNh bGxiYWNrLiBKdXN0IHByb3ZpZGUgdmlydHVhbCBhZGRyZXNzLgogICAgRGl0Y2ggdGhlIHZtYWxs b2NfcmFuZ2UuIFJlcXVpcmUgdXNlcnMgb2YgYWx0ZXJuYXRpdmUgdmlydHVhbCBhZGRyZXNzCiAg ICB0byBjYWxsIHZtYXBfaW5pdF90eXBlIGZpcnN0Lgp2NzogRG9uJ3QgZXhwb3NlIHRoZSB2bWFs bG9jX3R5cGUgYW5kIHN1Y2guIEluc3RlYWQgcHJvdmlkZSBhbiB3cmFwcGVyCiAgICBjYWxsZWQg dm1hbGxvY194ZW4gZm9yIHRob3NlLgogICAgUmVuYW1lIHRoZSBlbnVtLCBjaGFuZ2Ugb25lIG9m IHRoZSBuYW1lcy4KICAgIE1vdmVkIHRoZSB2dW5tYXBfdHlwZSBhcm91bmQgaW4gYyBmaWxlIHNv IHdlIGRvbid0IGhhdmUgdG8gZGVjbGFyZQogICAgaXQgaW4gdGhlIGhlYWRlci4KLS0tCi0tLQog eGVuL2FyY2gvYXJtL2tlcm5lbC5jICB8ICAgMiArLQogeGVuL2FyY2gvYXJtL21tLmMgICAgICB8 ICAgMiArLQogeGVuL2FyY2gveDg2L21tLmMgICAgICB8ICAgMiArLQogeGVuL2NvbW1vbi92bWFw LmMgICAgICB8IDIwMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0t LS0tLS0tCiB4ZW4vZHJpdmVycy9hY3BpL29zbC5jIHwgICAyICstCiB4ZW4vaW5jbHVkZS94ZW4v dm1hcC5oIHwgIDIxICsrKystCiA2IGZpbGVzIGNoYW5nZWQsIDE0OCBpbnNlcnRpb25zKCspLCA4 MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0va2VybmVsLmMgYi94ZW4v YXJjaC9hcm0va2VybmVsLmMKaW5kZXggNjE4MDhhYy4uOTg3MWJkOSAxMDA2NDQKLS0tIGEveGVu L2FyY2gvYXJtL2tlcm5lbC5jCisrKyBiL3hlbi9hcmNoL2FybS9rZXJuZWwuYwpAQCAtMjk5LDcg KzI5OSw3IEBAIHN0YXRpYyBfX2luaXQgaW50IGtlcm5lbF9kZWNvbXByZXNzKHN0cnVjdCBib290 bW9kdWxlICptb2QpCiAgICAgICAgIHJldHVybiAtRU5PTUVNOwogICAgIH0KICAgICBtZm4gPSBf bWZuKHBhZ2VfdG9fbWZuKHBhZ2VzKSk7Ci0gICAgb3V0cHV0ID0gX192bWFwKCZtZm4sIDEgPDwg a2VybmVsX29yZGVyX291dCwgMSwgMSwgUEFHRV9IWVBFUlZJU09SKTsKKyAgICBvdXRwdXQgPSBf X3ZtYXAoJm1mbiwgMSA8PCBrZXJuZWxfb3JkZXJfb3V0LCAxLCAxLCBQQUdFX0hZUEVSVklTT1Is IFZNQVBfREVGQVVMVCk7CiAKICAgICByYyA9IHBlcmZvcm1fZ3VuemlwKG91dHB1dCwgaW5wdXQs IHNpemUpOwogICAgIGNsZWFuX2RjYWNoZV92YV9yYW5nZShvdXRwdXQsIG91dHB1dF9zaXplKTsK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9tbS5jIGIveGVuL2FyY2gvYXJtL21tLmMKaW5kZXgg NzA2NWMzZS4uOTRlYTA1NCAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL21tLmMKKysrIGIveGVu L2FyY2gvYXJtL21tLmMKQEAgLTgwNyw3ICs4MDcsNyBAQCB2b2lkICppb3JlbWFwX2F0dHIocGFk ZHJfdCBwYSwgc2l6ZV90IGxlbiwgdW5zaWduZWQgaW50IGF0dHJpYnV0ZXMpCiAgICAgbWZuX3Qg bWZuID0gX21mbihQRk5fRE9XTihwYSkpOwogICAgIHVuc2lnbmVkIGludCBvZmZzID0gcGEgJiAo UEFHRV9TSVpFIC0gMSk7CiAgICAgdW5zaWduZWQgaW50IG5yID0gUEZOX1VQKG9mZnMgKyBsZW4p OwotICAgIHZvaWQgKnB0ciA9IF9fdm1hcCgmbWZuLCBuciwgMSwgMSwgYXR0cmlidXRlcyk7Cisg ICAgdm9pZCAqcHRyID0gX192bWFwKCZtZm4sIG5yLCAxLCAxLCBhdHRyaWJ1dGVzLCBWTUFQX0RF RkFVTFQpOwogCiAgICAgaWYgKCBwdHIgPT0gTlVMTCApCiAgICAgICAgIHJldHVybiBOVUxMOwpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tLmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCBi Y2E3NTMyLi5jYTJkMGJiIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4v YXJjaC94ODYvbW0uYwpAQCAtNjEyNCw3ICs2MTI0LDcgQEAgdm9pZCBfX2lvbWVtICppb3JlbWFw KHBhZGRyX3QgcGEsIHNpemVfdCBsZW4pCiAgICAgICAgIHVuc2lnbmVkIGludCBvZmZzID0gcGEg JiAoUEFHRV9TSVpFIC0gMSk7CiAgICAgICAgIHVuc2lnbmVkIGludCBuciA9IFBGTl9VUChvZmZz ICsgbGVuKTsKIAotICAgICAgICB2YSA9IF9fdm1hcCgmbWZuLCBuciwgMSwgMSwgUEFHRV9IWVBF UlZJU09SX05PQ0FDSEUpICsgb2ZmczsKKyAgICAgICAgdmEgPSBfX3ZtYXAoJm1mbiwgbnIsIDEs IDEsIFBBR0VfSFlQRVJWSVNPUl9OT0NBQ0hFLCBWTUFQX0RFRkFVTFQpICsgb2ZmczsKICAgICB9 CiAKICAgICByZXR1cm4gKHZvaWQgX19mb3JjZSBfX2lvbWVtICopdmE7CmRpZmYgLS1naXQgYS94 ZW4vY29tbW9uL3ZtYXAuYyBiL3hlbi9jb21tb24vdm1hcC5jCmluZGV4IDEzNGVkYTAuLmViNDc3 YTQgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vdm1hcC5jCisrKyBiL3hlbi9jb21tb24vdm1hcC5j CkBAIC0xMCw0MCArMTAsNDMgQEAKICNpbmNsdWRlIDxhc20vcGFnZS5oPgogCiBzdGF0aWMgREVG SU5FX1NQSU5MT0NLKHZtX2xvY2spOwotc3RhdGljIHZvaWQgKl9fcmVhZF9tb3N0bHkgdm1fYmFz ZTsKLSNkZWZpbmUgdm1fYml0bWFwICgodW5zaWduZWQgbG9uZyAqKXZtX2Jhc2UpCitzdGF0aWMg dm9pZCAqX19yZWFkX21vc3RseSB2bV9iYXNlW1ZNQVBfUkVHSU9OX05SXTsKKyNkZWZpbmUgdm1f Yml0bWFwKHgpICgodW5zaWduZWQgbG9uZyAqKXZtX2Jhc2VbeF0pCiAvKiBoaWdoZXN0IGFsbG9j YXRlZCBiaXQgaW4gdGhlIGJpdG1hcCAqLwotc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9z dGx5IHZtX3RvcDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSB2bV90b3BbVk1B UF9SRUdJT05fTlJdOwogLyogdG90YWwgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIGJpdG1hcCAqLwot c3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IHZtX2VuZDsKK3N0YXRpYyB1bnNpZ25l ZCBpbnQgX19yZWFkX21vc3RseSB2bV9lbmRbVk1BUF9SRUdJT05fTlJdOwogLyogbG93ZXN0IGtu b3duIGNsZWFyIGJpdCBpbiB0aGUgYml0bWFwICovCi1zdGF0aWMgdW5zaWduZWQgaW50IHZtX2xv dzsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgdm1fbG93W1ZNQVBfUkVHSU9OX05SXTsKIAotdm9pZCBf X2luaXQgdm1faW5pdCh2b2lkKQordm9pZCBfX2luaXQgdm1faW5pdF90eXBlKGVudW0gdm1hcF9y ZWdpb24gdHlwZSwgdm9pZCAqc3RhcnQsIHZvaWQgKmVuZCkKIHsKICAgICB1bnNpZ25lZCBpbnQg aSwgbnI7CiAgICAgdW5zaWduZWQgbG9uZyB2YTsKIAotICAgIHZtX2Jhc2UgPSAodm9pZCAqKVZN QVBfVklSVF9TVEFSVDsKLSAgICB2bV9lbmQgPSBQRk5fRE9XTihhcmNoX3ZtYXBfdmlydF9lbmQo KSAtIHZtX2Jhc2UpOwotICAgIHZtX2xvdyA9IFBGTl9VUCgodm1fZW5kICsgNykgLyA4KTsKLSAg ICBuciA9IFBGTl9VUCgodm1fbG93ICsgNykgLyA4KTsKLSAgICB2bV90b3AgPSBuciAqIFBBR0Vf U0laRSAqIDg7CisgICAgQVNTRVJUKCF2bV9iYXNlW3R5cGVdKTsKIAotICAgIGZvciAoIGkgPSAw LCB2YSA9ICh1bnNpZ25lZCBsb25nKXZtX2JpdG1hcDsgaSA8IG5yOyArK2ksIHZhICs9IFBBR0Vf U0laRSApCisgICAgdm1fYmFzZVt0eXBlXSA9IHN0YXJ0OworICAgIHZtX2VuZFt0eXBlXSA9IFBG Tl9ET1dOKGVuZCAtIHN0YXJ0KTsKKyAgICB2bV9sb3dbdHlwZV09IFBGTl9VUCgodm1fZW5kW3R5 cGVdICsgNykgLyA4KTsKKyAgICBuciA9IFBGTl9VUCgodm1fbG93W3R5cGVdICsgNykgLyA4KTsK KyAgICB2bV90b3BbdHlwZV0gPSBuciAqIFBBR0VfU0laRSAqIDg7CisKKyAgICBmb3IgKCBpID0g MCwgdmEgPSAodW5zaWduZWQgbG9uZyl2bV9iaXRtYXAodHlwZSk7IGkgPCBucjsgKytpLCB2YSAr PSBQQUdFX1NJWkUgKQogICAgIHsKICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGcgPSBhbGxv Y19kb21oZWFwX3BhZ2UoTlVMTCwgMCk7CiAKICAgICAgICAgbWFwX3BhZ2VzX3RvX3hlbih2YSwg cGFnZV90b19tZm4ocGcpLCAxLCBQQUdFX0hZUEVSVklTT1IpOwogICAgICAgICBjbGVhcl9wYWdl KCh2b2lkICopdmEpOwogICAgIH0KLSAgICBiaXRtYXBfZmlsbCh2bV9iaXRtYXAsIHZtX2xvdyk7 CisgICAgYml0bWFwX2ZpbGwodm1fYml0bWFwKHR5cGUpLCB2bV9sb3dbdHlwZV0pOwogCiAgICAg LyogUG9wdWxhdGUgcGFnZSB0YWJsZXMgZm9yIHRoZSBiaXRtYXAgaWYgbmVjZXNzYXJ5LiAqLwot ICAgIHBvcHVsYXRlX3B0X3JhbmdlKHZhLCAwLCB2bV9sb3cgLSBucik7CisgICAgcG9wdWxhdGVf cHRfcmFuZ2UodmEsIDAsIHZtX2xvd1t0eXBlXSAtIG5yKTsKIH0KIAotdm9pZCAqdm1fYWxsb2Mo dW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCitzdGF0aWMgdm9pZCAqdm1fYWxs b2NfdHlwZSh1bnNpZ25lZCBpbnQgbnIsIHVuc2lnbmVkIGludCBhbGlnbiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudW0gdm1hcF9yZWdpb24gdCkKIHsKICAgICB1bnNpZ25lZCBpbnQg c3RhcnQsIGJpdDsKIApAQCAtNTIsMjcgKzU1LDMwIEBAIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVk IGludCBuciwgdW5zaWduZWQgaW50IGFsaWduKQogICAgIGVsc2UgaWYgKCBhbGlnbiAmIChhbGln biAtIDEpICkKICAgICAgICAgYWxpZ24gJj0gLWFsaWduOwogCisgICAgaWYgKCAhdm1fYmFzZVt0 XSApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgc3Bpbl9sb2NrKCZ2bV9sb2NrKTsKICAg ICBmb3IgKCA7IDsgKQogICAgIHsKICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CiAKLSAg ICAgICAgQVNTRVJUKHZtX2xvdyA9PSB2bV90b3AgfHwgIXRlc3RfYml0KHZtX2xvdywgdm1fYml0 bWFwKSk7Ci0gICAgICAgIGZvciAoIHN0YXJ0ID0gdm1fbG93OyBzdGFydCA8IHZtX3RvcDsgKQor ICAgICAgICBBU1NFUlQodm1fbG93W3RdID09IHZtX3RvcFt0XSB8fCAhdGVzdF9iaXQodm1fbG93 W3RdLCB2bV9iaXRtYXAodCkpKTsKKyAgICAgICAgZm9yICggc3RhcnQgPSB2bV9sb3dbdF07IHN0 YXJ0IDwgdm1fdG9wW3RdOyApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGJpdCA9IGZpbmRfbmV4 dF9iaXQodm1fYml0bWFwLCB2bV90b3AsIHN0YXJ0ICsgMSk7Ci0gICAgICAgICAgICBpZiAoIGJp dCA+IHZtX3RvcCApCi0gICAgICAgICAgICAgICAgYml0ID0gdm1fdG9wOworICAgICAgICAgICAg Yml0ID0gZmluZF9uZXh0X2JpdCh2bV9iaXRtYXAodCksIHZtX3RvcFt0XSwgc3RhcnQgKyAxKTsK KyAgICAgICAgICAgIGlmICggYml0ID4gdm1fdG9wW3RdICkKKyAgICAgICAgICAgICAgICBiaXQg PSB2bV90b3BbdF07CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogTm90ZSB0aGF0IHRo aXMgc2tpcHMgdGhlIGZpcnN0IGJpdCwgbWFraW5nIHRoZQogICAgICAgICAgICAgICogY29ycmVz cG9uZGluZyBwYWdlIGEgZ3VhcmQgb25lLgogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBz dGFydCA9IChzdGFydCArIGFsaWduKSAmIH4oYWxpZ24gLSAxKTsKLSAgICAgICAgICAgIGlmICgg Yml0IDwgdm1fdG9wICkKKyAgICAgICAgICAgIGlmICggYml0IDwgdm1fdG9wW3RdICkKICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIHN0YXJ0ICsgbnIgPCBiaXQgKQogICAgICAg ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBzdGFydCA9IGZpbmRfbmV4dF96 ZXJvX2JpdCh2bV9iaXRtYXAsIHZtX3RvcCwgYml0ICsgMSk7CisgICAgICAgICAgICAgICAgc3Rh cnQgPSBmaW5kX25leHRfemVyb19iaXQodm1fYml0bWFwKHQpLCB2bV90b3BbdF0sIGJpdCArIDEp OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewpAQCAtODIs MTIgKzg4LDEyIEBAIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwgdW5zaWduZWQgaW50 IGFsaWduKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCBzdGFydCA8 IHZtX3RvcCApCisgICAgICAgIGlmICggc3RhcnQgPCB2bV90b3BbdF0gKQogICAgICAgICAgICAg YnJlYWs7CiAKICAgICAgICAgc3Bpbl91bmxvY2soJnZtX2xvY2spOwogCi0gICAgICAgIGlmICgg dm1fdG9wID49IHZtX2VuZCApCisgICAgICAgIGlmICggdm1fdG9wW3RdID49IHZtX2VuZFt0XSAp CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICBwZyA9IGFsbG9jX2RvbWhlYXBf cGFnZShOVUxMLCAwKTsKQEAgLTk2LDIzICsxMDIsMjMgQEAgdm9pZCAqdm1fYWxsb2ModW5zaWdu ZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCiAKICAgICAgICAgc3Bpbl9sb2NrKCZ2bV9s b2NrKTsKIAotICAgICAgICBpZiAoIHN0YXJ0ID49IHZtX3RvcCApCisgICAgICAgIGlmICggc3Rh cnQgPj0gdm1fdG9wW3RdICkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2 YSA9ICh1bnNpZ25lZCBsb25nKXZtX2JpdG1hcCArIHZtX3RvcCAvIDg7CisgICAgICAgICAgICB1 bnNpZ25lZCBsb25nIHZhID0gKHVuc2lnbmVkIGxvbmcpdm1fYml0bWFwKHQpICsgdm1fdG9wW3Rd IC8gODsKIAogICAgICAgICAgICAgaWYgKCAhbWFwX3BhZ2VzX3RvX3hlbih2YSwgcGFnZV90b19t Zm4ocGcpLCAxLCBQQUdFX0hZUEVSVklTT1IpICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg ICAgICBjbGVhcl9wYWdlKCh2b2lkICopdmEpOwotICAgICAgICAgICAgICAgIHZtX3RvcCArPSBQ QUdFX1NJWkUgKiA4OwotICAgICAgICAgICAgICAgIGlmICggdm1fdG9wID4gdm1fZW5kICkKLSAg ICAgICAgICAgICAgICAgICAgdm1fdG9wID0gdm1fZW5kOworICAgICAgICAgICAgICAgIHZtX3Rv cFt0XSArPSBQQUdFX1NJWkUgKiA4OworICAgICAgICAgICAgICAgIGlmICggdm1fdG9wW3RdID4g dm1fZW5kW3RdICkKKyAgICAgICAgICAgICAgICAgICAgdm1fdG9wW3RdID0gdm1fZW5kW3RdOwog ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAg ICAgICAgZnJlZV9kb21oZWFwX3BhZ2UocGcpOwogCi0gICAgICAgIGlmICggc3RhcnQgPj0gdm1f dG9wICkKKyAgICAgICAgaWYgKCBzdGFydCA+PSB2bV90b3BbdF0gKQogICAgICAgICB7CiAgICAg ICAgICAgICBzcGluX3VubG9jaygmdm1fbG9jayk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsK QEAgLTEyMCw0NyArMTI2LDU2IEBAIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwgdW5z aWduZWQgaW50IGFsaWduKQogICAgIH0KIAogICAgIGZvciAoIGJpdCA9IHN0YXJ0OyBiaXQgPCBz dGFydCArIG5yOyArK2JpdCApCi0gICAgICAgIF9fc2V0X2JpdChiaXQsIHZtX2JpdG1hcCk7Ci0g ICAgaWYgKCBiaXQgPCB2bV90b3AgKQotICAgICAgICBBU1NFUlQoIXRlc3RfYml0KGJpdCwgdm1f Yml0bWFwKSk7CisgICAgICAgIF9fc2V0X2JpdChiaXQsIHZtX2JpdG1hcCh0KSk7CisgICAgaWYg KCBiaXQgPCB2bV90b3BbdF0gKQorICAgICAgICBBU1NFUlQoIXRlc3RfYml0KGJpdCwgdm1fYml0 bWFwKHQpKSk7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlQoYml0ID09IHZtX3RvcCk7Ci0gICAg aWYgKCBzdGFydCA8PSB2bV9sb3cgKyAyICkKLSAgICAgICAgdm1fbG93ID0gYml0OworICAgICAg ICBBU1NFUlQoYml0ID09IHZtX3RvcFt0XSk7CisgICAgaWYgKCBzdGFydCA8PSB2bV9sb3dbdF0g KyAyICkKKyAgICAgICAgdm1fbG93W3RdID0gYml0OwogICAgIHNwaW5fdW5sb2NrKCZ2bV9sb2Nr KTsKIAotICAgIHJldHVybiB2bV9iYXNlICsgc3RhcnQgKiBQQUdFX1NJWkU7CisgICAgcmV0dXJu IHZtX2Jhc2VbdF0gKyBzdGFydCAqIFBBR0VfU0laRTsKK30KKwordm9pZCAqdm1fYWxsb2ModW5z aWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCit7CisgICAgcmV0dXJuIHZtX2FsbG9j X3R5cGUobnIsIGFsaWduLCBWTUFQX0RFRkFVTFQpOwogfQogCi1zdGF0aWMgdW5zaWduZWQgaW50 IHZtX2luZGV4KGNvbnN0IHZvaWQgKnZhKQorc3RhdGljIHVuc2lnbmVkIGludCB2bV9pbmRleChj b25zdCB2b2lkICp2YSwgZW51bSB2bWFwX3JlZ2lvbiB0eXBlKQogewogICAgIHVuc2lnbmVkIGxv bmcgYWRkciA9ICh1bnNpZ25lZCBsb25nKXZhICYgfihQQUdFX1NJWkUgLSAxKTsKICAgICB1bnNp Z25lZCBpbnQgaWR4OworICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQgPSAodW5zaWduZWQgbG9uZyl2 bV9iYXNlW3R5cGVdOworCisgICAgaWYgKCAhc3RhcnQpCisgICAgICAgIHJldHVybiAwOwogCi0g ICAgaWYgKCBhZGRyIDwgVk1BUF9WSVJUX1NUQVJUICsgKHZtX2VuZCAvIDgpIHx8Ci0gICAgICAg ICBhZGRyID49IFZNQVBfVklSVF9TVEFSVCArIHZtX3RvcCAqIFBBR0VfU0laRSApCisgICAgaWYg KCBhZGRyIDwgc3RhcnQgKyAodm1fZW5kW3R5cGVdIC8gOCkgfHwKKyAgICAgICAgIGFkZHIgPj0g c3RhcnQgKyB2bV90b3BbdHlwZV0gKiBQQUdFX1NJWkUgKQogICAgICAgICByZXR1cm4gMDsKIAot ICAgIGlkeCA9IFBGTl9ET1dOKHZhIC0gdm1fYmFzZSk7Ci0gICAgcmV0dXJuICF0ZXN0X2JpdChp ZHggLSAxLCB2bV9iaXRtYXApICYmCi0gICAgICAgICAgIHRlc3RfYml0KGlkeCwgdm1fYml0bWFw KSA/IGlkeCA6IDA7CisgICAgaWR4ID0gUEZOX0RPV04odmEgLSB2bV9iYXNlW3R5cGVdKTsKKyAg ICByZXR1cm4gIXRlc3RfYml0KGlkeCAtIDEsIHZtX2JpdG1hcCh0eXBlKSkgJiYKKyAgICAgICAg ICAgdGVzdF9iaXQoaWR4LCB2bV9iaXRtYXAodHlwZSkpID8gaWR4IDogMDsKIH0KIAotc3RhdGlj IHVuc2lnbmVkIGludCB2bV9zaXplKGNvbnN0IHZvaWQgKnZhKQorc3RhdGljIHVuc2lnbmVkIGlu dCB2bV9zaXplKGNvbnN0IHZvaWQgKnZhLCBlbnVtIHZtYXBfcmVnaW9uIHR5cGUpCiB7Ci0gICAg dW5zaWduZWQgaW50IHN0YXJ0ID0gdm1faW5kZXgodmEpLCBlbmQ7CisgICAgdW5zaWduZWQgaW50 IHN0YXJ0ID0gdm1faW5kZXgodmEsIHR5cGUpLCBlbmQ7CiAKICAgICBpZiAoICFzdGFydCApCiAg ICAgICAgIHJldHVybiAwOwogCi0gICAgZW5kID0gZmluZF9uZXh0X3plcm9fYml0KHZtX2JpdG1h cCwgdm1fdG9wLCBzdGFydCArIDEpOworICAgIGVuZCA9IGZpbmRfbmV4dF96ZXJvX2JpdCh2bV9i aXRtYXAodHlwZSksIHZtX3RvcFt0eXBlXSwgc3RhcnQgKyAxKTsKIAotICAgIHJldHVybiBtaW4o ZW5kLCB2bV90b3ApIC0gc3RhcnQ7CisgICAgcmV0dXJuIG1pbihlbmQsIHZtX3RvcFt0eXBlXSkg LSBzdGFydDsKIH0KIAotdm9pZCB2bV9mcmVlKGNvbnN0IHZvaWQgKnZhKQorc3RhdGljIHZvaWQg dm1fZnJlZV90eXBlKGNvbnN0IHZvaWQgKnZhLCBlbnVtIHZtYXBfcmVnaW9uIHR5cGUpCiB7Ci0g ICAgdW5zaWduZWQgaW50IGJpdCA9IHZtX2luZGV4KHZhKTsKKyAgICB1bnNpZ25lZCBpbnQgYml0 ID0gdm1faW5kZXgodmEsIHR5cGUpOwogCiAgICAgaWYgKCAhYml0ICkKICAgICB7CkBAIC0xNjks MjkgKzE4NCw1NCBAQCB2b2lkIHZtX2ZyZWUoY29uc3Qgdm9pZCAqdmEpCiAgICAgfQogCiAgICAg c3Bpbl9sb2NrKCZ2bV9sb2NrKTsKLSAgICBpZiAoIGJpdCA8IHZtX2xvdyApCisgICAgaWYgKCBi aXQgPCB2bV9sb3dbdHlwZV0gKQogICAgIHsKLSAgICAgICAgdm1fbG93ID0gYml0IC0gMTsKLSAg ICAgICAgd2hpbGUgKCAhdGVzdF9iaXQodm1fbG93IC0gMSwgdm1fYml0bWFwKSApCi0gICAgICAg ICAgICAtLXZtX2xvdzsKKyAgICAgICAgdm1fbG93W3R5cGVdID0gYml0IC0gMTsKKyAgICAgICAg d2hpbGUgKCAhdGVzdF9iaXQodm1fbG93W3R5cGVdIC0gMSwgdm1fYml0bWFwKHR5cGUpKSApCisg ICAgICAgICAgICAtLXZtX2xvd1t0eXBlXTsKICAgICB9Ci0gICAgd2hpbGUgKCBfX3Rlc3RfYW5k X2NsZWFyX2JpdChiaXQsIHZtX2JpdG1hcCkgKQotICAgICAgICBpZiAoICsrYml0ID09IHZtX3Rv cCApCisgICAgd2hpbGUgKCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChiaXQsIHZtX2JpdG1hcCh0eXBl KSkgKQorICAgICAgICBpZiAoICsrYml0ID09IHZtX3RvcFt0eXBlXSApCiAgICAgICAgICAgICBi cmVhazsKICAgICBzcGluX3VubG9jaygmdm1fbG9jayk7CiB9CiAKK3ZvaWQgdm1fZnJlZShjb25z dCB2b2lkICp2YSkKK3sKKyAgICB2bV9mcmVlX3R5cGUodmEsIFZNQVBfREVGQVVMVCk7Cit9CisK K3N0YXRpYyB2b2lkIHZ1bm1hcF90eXBlKGNvbnN0IHZvaWQgKnZhLCBlbnVtIHZtYXBfcmVnaW9u IHR5cGUpCit7CisgICAgdW5zaWduZWQgaW50IHNpemUgPSB2bV9zaXplKHZhLCB0eXBlKTsKKyNp Zm5kZWYgX1BBR0VfTk9ORQorICAgIHVuc2lnbmVkIGxvbmcgYWRkciA9ICh1bnNpZ25lZCBsb25n KXZhOworCisgICAgZGVzdHJveV94ZW5fbWFwcGluZ3MoYWRkciwgYWRkciArIFBBR0VfU0laRSAq IHNpemUpOworI2Vsc2UgLyogQXZvaWQgdGVhcmluZyBkb3duIGludGVybWVkaWF0ZSBwYWdlIHRh Ymxlcy4gKi8KKyAgICBtYXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKXZhLCAwLCBzaXpl LCBfUEFHRV9OT05FKTsKKyNlbmRpZgorICAgIHZtX2ZyZWVfdHlwZSh2YSwgdHlwZSk7Cit9CisK K3ZvaWQgdnVubWFwKGNvbnN0IHZvaWQgKnZhKQoreworICAgIHZ1bm1hcF90eXBlKHZhLCBWTUFQ X0RFRkFVTFQpOworfQorCisKIHZvaWQgKl9fdm1hcChjb25zdCBtZm5fdCAqbWZuLCB1bnNpZ25l ZCBpbnQgZ3JhbnVsYXJpdHksCi0gICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yLCB1bnNpZ25l ZCBpbnQgYWxpZ24sIHVuc2lnbmVkIGludCBmbGFncykKKyAgICAgICAgICAgICB1bnNpZ25lZCBp bnQgbnIsIHVuc2lnbmVkIGludCBhbGlnbiwgdW5zaWduZWQgaW50IGZsYWdzLAorICAgICAgICAg ICAgIGVudW0gdm1hcF9yZWdpb24gdHlwZSkKIHsKLSAgICB2b2lkICp2YSA9IHZtX2FsbG9jKG5y ICogZ3JhbnVsYXJpdHksIGFsaWduKTsKKyAgICB2b2lkICp2YSA9IHZtX2FsbG9jX3R5cGUobnIg KiBncmFudWxhcml0eSwgYWxpZ24sIHR5cGUpOwogICAgIHVuc2lnbmVkIGxvbmcgY3VyID0gKHVu c2lnbmVkIGxvbmcpdmE7CiAKICAgICBmb3IgKCA7IHZhICYmIG5yLS07ICsrbWZuLCBjdXIgKz0g UEFHRV9TSVpFICogZ3JhbnVsYXJpdHkgKQogICAgIHsKICAgICAgICAgaWYgKCBtYXBfcGFnZXNf dG9feGVuKGN1ciwgbWZuX3goKm1mbiksIGdyYW51bGFyaXR5LCBmbGFncykgKQogICAgICAgICB7 Ci0gICAgICAgICAgICB2dW5tYXAodmEpOworICAgICAgICAgICAgdnVubWFwX3R5cGUodmEsIHR5 cGUpOwogICAgICAgICAgICAgdmEgPSBOVUxMOwogICAgICAgICB9CiAgICAgfQpAQCAtMjAxLDIy ICsyNDEsMTAgQEAgdm9pZCAqX192bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2lnbmVkIGludCBn cmFudWxhcml0eSwKIAogdm9pZCAqdm1hcChjb25zdCBtZm5fdCAqbWZuLCB1bnNpZ25lZCBpbnQg bnIpCiB7Ci0gICAgcmV0dXJuIF9fdm1hcChtZm4sIDEsIG5yLCAxLCBQQUdFX0hZUEVSVklTT1Ip OworICAgIHJldHVybiBfX3ZtYXAobWZuLCAxLCBuciwgMSwgUEFHRV9IWVBFUlZJU09SLCBWTUFQ X0RFRkFVTFQpOwogfQogCi12b2lkIHZ1bm1hcChjb25zdCB2b2lkICp2YSkKLXsKLSNpZm5kZWYg X1BBR0VfTk9ORQotICAgIHVuc2lnbmVkIGxvbmcgYWRkciA9ICh1bnNpZ25lZCBsb25nKXZhOwot Ci0gICAgZGVzdHJveV94ZW5fbWFwcGluZ3MoYWRkciwgYWRkciArIFBBR0VfU0laRSAqIHZtX3Np emUodmEpKTsKLSNlbHNlIC8qIEF2b2lkIHRlYXJpbmcgZG93biBpbnRlcm1lZGlhdGUgcGFnZSB0 YWJsZXMuICovCi0gICAgbWFwX3BhZ2VzX3RvX3hlbigodW5zaWduZWQgbG9uZyl2YSwgMCwgdm1f c2l6ZSh2YSksIF9QQUdFX05PTkUpOwotI2VuZGlmCi0gICAgdm1fZnJlZSh2YSk7Ci19Ci0KLXZv aWQgKnZtYWxsb2Moc2l6ZV90IHNpemUpCitzdGF0aWMgdm9pZCAqdm1hbGxvY190eXBlKHNpemVf dCBzaXplLCBlbnVtIHZtYXBfcmVnaW9uIHR5cGUpCiB7CiAgICAgbWZuX3QgKm1mbjsKICAgICBz aXplX3QgcGFnZXMsIGk7CkBAIC0yMzgsMTEgKzI2NiwxMiBAQCB2b2lkICp2bWFsbG9jKHNpemVf dCBzaXplKQogICAgICAgICBtZm5baV0gPSBfbWZuKHBhZ2VfdG9fbWZuKHBnKSk7CiAgICAgfQog Ci0gICAgdmEgPSB2bWFwKG1mbiwgcGFnZXMpOworICAgIHZhID0gX192bWFwKG1mbiwgMSwgcGFn ZXMsIDEsIFBBR0VfSFlQRVJWSVNPUiwgdHlwZSk7CiAgICAgaWYgKCB2YSA9PSBOVUxMICkKICAg ICAgICAgZ290byBlcnJvcjsKIAogICAgIHhmcmVlKG1mbik7CisKICAgICByZXR1cm4gdmE7CiAK ICBlcnJvcjoKQEAgLTI1Miw2ICsyODEsMTYgQEAgdm9pZCAqdm1hbGxvYyhzaXplX3Qgc2l6ZSkK ICAgICByZXR1cm4gTlVMTDsKIH0KIAordm9pZCAqdm1hbGxvYyhzaXplX3Qgc2l6ZSkKK3sKKyAg ICByZXR1cm4gdm1hbGxvY190eXBlKHNpemUsIFZNQVBfREVGQVVMVCk7Cit9CisKK3ZvaWQgKnZt YWxsb2NfeGVuKHNpemVfdCBzaXplKQoreworICAgIHJldHVybiB2bWFsbG9jX3R5cGUoc2l6ZSwg Vk1BUF9YRU4pOworfQorCiB2b2lkICp2emFsbG9jKHNpemVfdCBzaXplKQogewogICAgIHZvaWQg KnAgPSB2bWFsbG9jKHNpemUpOwpAQCAtMjY2LDcgKzMwNSw3IEBAIHZvaWQgKnZ6YWxsb2Moc2l6 ZV90IHNpemUpCiAgICAgcmV0dXJuIHA7CiB9CiAKLXZvaWQgdmZyZWUodm9pZCAqdmEpCit2b2lk IHZmcmVlX3R5cGUodm9pZCAqdmEsIGVudW0gdm1hcF9yZWdpb24gdHlwZSkKIHsKICAgICB1bnNp Z25lZCBpbnQgaSwgcGFnZXM7CiAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CkBAIC0yNzUsNyAr MzE0LDggQEAgdm9pZCB2ZnJlZSh2b2lkICp2YSkKICAgICBpZiAoICF2YSApCiAgICAgICAgIHJl dHVybjsKIAotICAgIHBhZ2VzID0gdm1fc2l6ZSh2YSk7CisgICAgcGFnZXMgPSB2bV9zaXplKHZh LCB0eXBlKTsKKwogICAgIEFTU0VSVChwYWdlcyk7CiAKICAgICBmb3IgKCBpID0gMDsgaSA8IHBh Z2VzOyBpKysgKQpAQCAtMjg1LDkgKzMyNSwxOSBAQCB2b2lkIHZmcmVlKHZvaWQgKnZhKQogICAg ICAgICBBU1NFUlQocGFnZSk7CiAgICAgICAgIHBhZ2VfbGlzdF9hZGQocGFnZSwgJnBnX2xpc3Qp OwogICAgIH0KLSAgICB2dW5tYXAodmEpOworICAgIHZ1bm1hcF90eXBlKHZhLCB0eXBlKTsKIAog ICAgIHdoaWxlICggKHBnID0gcGFnZV9saXN0X3JlbW92ZV9oZWFkKCZwZ19saXN0KSkgIT0gTlVM TCApCiAgICAgICAgIGZyZWVfZG9taGVhcF9wYWdlKHBnKTsKIH0KKwordm9pZCB2ZnJlZSh2b2lk ICp2YSkKK3sKKyAgICB2ZnJlZV90eXBlKHZhLCBWTUFQX0RFRkFVTFQpOworfQorCit2b2lkIHZm cmVlX3hlbih2b2lkICp2YSkKK3sKKyAgICB2ZnJlZV90eXBlKHZhLCBWTUFQX1hFTik7Cit9CiAj ZW5kaWYKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2FjcGkvb3NsLmMgYi94ZW4vZHJpdmVycy9h Y3BpL29zbC5jCmluZGV4IDhhMjhkODcuLjlhNDkwMjkgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJz L2FjcGkvb3NsLmMKKysrIGIveGVuL2RyaXZlcnMvYWNwaS9vc2wuYwpAQCAtOTcsNyArOTcsNyBA QCBhY3BpX29zX21hcF9tZW1vcnkoYWNwaV9waHlzaWNhbF9hZGRyZXNzIHBoeXMsIGFjcGlfc2l6 ZSBzaXplKQogCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2KSAmJiAhKChwaHlzICsgc2l6ZSAt IDEpID4+IDIwKSkKIAkJCXJldHVybiBfX3ZhKHBoeXMpOwogCQlyZXR1cm4gX192bWFwKCZtZm4s IFBGTl9VUChvZmZzICsgc2l6ZSksIDEsIDEsCi0JCQkgICAgICBBQ1BJX01BUF9NRU1fQVRUUikg KyBvZmZzOworCQkJICAgICAgQUNQSV9NQVBfTUVNX0FUVFIsIFZNQVBfREVGQVVMVCkgKyBvZmZz OwogCX0KIAlyZXR1cm4gX19hY3BpX21hcF90YWJsZShwaHlzLCBzaXplKTsKIH0KZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL3hlbi92bWFwLmggYi94ZW4vaW5jbHVkZS94ZW4vdm1hcC5oCmluZGV4 IDU2NzFhYzguLjBmYjc4YTIgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi92bWFwLmgKKysr IGIveGVuL2luY2x1ZGUveGVuL3ZtYXAuaApAQCAtNCwxNiArNCwyOCBAQAogI2luY2x1ZGUgPHhl bi9tbS5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAKK2VudW0gdm1hcF9yZWdpb24geworICAg IFZNQVBfREVGQVVMVCwKKyAgICBWTUFQX1hFTiwKKyAgICBWTUFQX1JFR0lPTl9OUiwKK307CisK K3ZvaWQgdm1faW5pdF90eXBlKGVudW0gdm1hcF9yZWdpb24gdHlwZSwgdm9pZCAqc3RhcnQsIHZv aWQgKmVuZCk7CisKIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwgdW5zaWduZWQgaW50 IGFsaWduKTsKIHZvaWQgdm1fZnJlZShjb25zdCB2b2lkICopOwogCi12b2lkICpfX3ZtYXAoY29u c3QgbWZuX3QgKm1mbiwgdW5zaWduZWQgaW50IGdyYW51bGFyaXR5LAotICAgICAgICAgICAgIHVu c2lnbmVkIGludCBuciwgdW5zaWduZWQgaW50IGFsaWduLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwor dm9pZCAqX192bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2lnbmVkIGludCBncmFudWxhcml0eSwg dW5zaWduZWQgaW50IG5yLAorICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhbGlnbiwgdW5zaWdu ZWQgaW50IGZsYWdzLCBlbnVtIHZtYXBfcmVnaW9uKTsKIHZvaWQgKnZtYXAoY29uc3QgbWZuX3Qg Km1mbiwgdW5zaWduZWQgaW50IG5yKTsKIHZvaWQgdnVubWFwKGNvbnN0IHZvaWQgKik7CisKIHZv aWQgKnZtYWxsb2Moc2l6ZV90IHNpemUpOwordm9pZCAqdm1hbGxvY194ZW4oc2l6ZV90IHNpemUp OworCiB2b2lkICp2emFsbG9jKHNpemVfdCBzaXplKTsKIHZvaWQgdmZyZWUodm9pZCAqdmEpOwor dm9pZCB2ZnJlZV94ZW4odm9pZCAqdmEpOwogCiB2b2lkIF9faW9tZW0gKmlvcmVtYXAocGFkZHJf dCwgc2l6ZV90KTsKIApAQCAtMjQsNyArMzYsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGlvdW5t YXAodm9pZCBfX2lvbWVtICp2YSkKICAgICB2dW5tYXAoKHZvaWQgKikoYWRkciAmIFBBR0VfTUFT SykpOwogfQogCi12b2lkIHZtX2luaXQodm9pZCk7CiB2b2lkICphcmNoX3ZtYXBfdmlydF9lbmQo dm9pZCk7CitzdGF0aWMgaW5saW5lIHZvaWQgdm1faW5pdCh2b2lkKQoreworICAgIHZtX2luaXRf dHlwZShWTUFQX0RFRkFVTFQsICh2b2lkICopVk1BUF9WSVJUX1NUQVJULCBhcmNoX3ZtYXBfdmly dF9lbmQoKSk7Cit9CiAKICNlbmRpZiAvKiBfX1hFTl9WTUFQX0hfXyAqLwotLSAKMi41LjAKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwg bWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=