From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v10 06/24] arm/x86/vmap: Add vmalloc_xen and vm_init_type Date: Wed, 27 Apr 2016 15:27:03 -0400 Message-ID: <1461785241-4481-7-git-send-email-konrad.wilk@oracle.com> References: <1461785241-4481-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.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1avV8W-0004ns-D7 for xen-devel@lists.xenproject.org; Wed, 27 Apr 2016 19:28:36 +0000 In-Reply-To: <1461785241-4481-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 dAphcmUgaW4gdGhlIGh5cGVydmlzb3IncyBjb2RlL2RhdGEgcmVnaW9uIGFkZHJlc3Mgc3BhY2Ug LQp0aGVzZSB0aHJlZSBuZXcgZnVuY3Rpb25zIGFsbG93IHRoYXQuCgpJbXBsZW1lbnRhdGlvbiB3 aXNlIHRoZSB2bWFwIEFQSSBrZWVwcyB0cmFjayBvZiB0d28gdmlydHVhbAphZGRyZXNzIHJlZ2lv bnMgbm93OgogYSkgVk1BUF9WSVJUX1NUQVJUCiBiKSBBbnkgcHJvdmlkZWQgdmlydHVhbCBhZGRy ZXNzIHNwYWNlIChuZWVkIHN0YXJ0IGFuZCBlbmQpLgoKVGhlIGEpIG9uZSBpcyB0aGUgZGVmYXVs dCBvbmUgYW5kIHRoZSBleGlzdGluZyBiZWhhdmlvcgpmb3IgdXNlcnMgb2Ygdm1hbGxvYywgdm1h cCwgZXRjIGlzIHRoZSBzYW1lLgoKSWYgaG93ZXZlciBvbmUgd2lzaGVzIHRvIHVzZSB0aGUgYikg b25lIG9ubHkgaGFzIHRvIHVzZQp0aGUgdm1faW5pdF90eXBlIHRvIGluaXRpYWxpemUgYW5kIHRo ZSB2bXphbGxvY194ZW4gdG8gdXRpbGl6ZQppdCAodmZyZWUgYW5kIHZ1bm1hcCBhcmUgY2FwYWJs ZSBvZiBzZWFyY2hpbmcgYm90aCBhZGRyZXNzIHNwYWNlcykuCgpUaGlzIGFsbG93cyB1c2VycyAo c3VjaCBhcyB4U3BsaWNlKSB0byBwcm92aWRlIHRoZWlyIG93bgptZWNoYW5pc20gdG8gY2hhbmdl IHRoZSB0aGUgcGFnZSBmbGFncywgYW5kIGFsc28gdXNlIHZpcnR1YWwKYWRkcmVzc2VzIGNsb3Nl ciB0byB0aGUgaHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJlc3NlcyAoYXQgbGVhc3QKb24geDg2KSB3 aGlsZSBub3QgaGF2aW5nIHRvIGRlYWwgd2l0aCB0aGUgYWxsb2NhdGlvbiBvZgpwYWdlcy4KCkZv ciBleGFtcGxlIG9mIHVzZXJzLCBzZWUgcGF0Y2ggdGl0bGVkICJ4c3BsaWNlOiBJbXBsZW1lbnQg cGF5bG9hZApsb2FkaW5nIiwgd2hlcmUgd2UgcGFyc2UgdGhlIHBheWxvYWQncyBFTEYgcmVsb2Nh dGlvbnMgLSB3aGljaAppcyBkZWZpbmVkIHRvIGJlIHNpZ25lZCAzMi1iaXQgKG9uIHg4NikgKG1h eCBkaXNwbGFjZW1lbnQgaGVuY2UKaXMgMkdCIHZpcnR1YWwgc3BhY2UsIEFSTTMyIGlzIDEyOE1C KS4gVGhlIGRpc3BsYWNlbWVudCBvZiB0aGUKaHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJlc3NlcyB0 byB0aGUgdm1hbGxvYyAob24geDg2KQppcyBtb3JlIHRoYW4gMzItYml0cyAtIHdoaWNoIG1lYW5z IHRoYXQgRUxGIHJlbG9jYXRpb25zIHdvdWxkCnRydW5jYXRlIHRoZSAzNCBhbmQgMzN0aCBiaXQu IEhlbmNlIHRoaXMgYWx0ZXJuYXRlIEFQSS4KCldlIGFsc28gYWRkIGFkZCBleHRyYSBjaGVja3Mg aW4gY2FzZSB0aGUgYikgcmFuZ2UgaGFzIG5vdCBiZWVuCmluaXRpYWxpemVkLgoKUGFydCBvZiB0 aGlzIHBhdGNoIGFsc28gcmVtb3ZlcyAndm1fYWxsb2MnIGFuZCAndm1fZnJlZScKZGVjbGVyYXRp b24gYXMgd2UgZG8gbm90IGhhdmUgYW55IHVzZXJzIG9mIGl0LgoKU2lnbmVkLW9mZi1ieTogS29u cmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUuY29tPgpTdWdnZXN0ZWQtYnk6 IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQWNrZWQtYnk6IEp1bGllbiBHcmFsbCA8 anVsaWVuLmdyYWxsQGFybS5jb20+IFtBUk1dClJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJl dWxpY2hAc3VzZS5jb20+CgotLS0KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRy aXguY29tPgpDYzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogS2VpciBGcmFz ZXIgPGtlaXJAeGVuLm9yZz4KQ2M6IFRpbSBEZWVnYW4gPHRpbUB4ZW4ub3JnPgpDYzogU3RlZmFu byBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgpDYzogSnVsaWVuIEdyYWxsIDxq dWxpZW4uZ3JhbGxAYXJtLmNvbT4KCnY0OiBOZXcgcGF0Y2guCnY1OiBVcGRhdGUgcGVyIEphbidz IGNvbW1lbnRzLgp2NjogRHJvcCB0aGUgc3RyYXkgcGFyZW50aGVzZXMgb24gdHlwZWRlZnMuCiAg ICBEaXRjaCB0aGUgdnVubWFwIGNhbGxiYWNrLiBTdGFzaCBhd2F5IHRoZSB2aXJ0dWFsIGFkZHJl c3NlcyBpbiBsaXN0cy4KICAgIERpdGNoIHRoZSB2bWFwIGNhbGxiYWNrLiBKdXN0IHByb3ZpZGUg dmlydHVhbCBhZGRyZXNzLgogICAgRGl0Y2ggdGhlIHZtYWxsb2NfcmFuZ2UuIFJlcXVpcmUgdXNl cnMgb2YgYWx0ZXJuYXRpdmUgdmlydHVhbCBhZGRyZXNzCiAgICB0byBjYWxsIHZtYXBfaW5pdF90 eXBlIGZpcnN0Lgp2NzogRG9uJ3QgZXhwb3NlIHRoZSB2bWFsbG9jX3R5cGUgYW5kIHN1Y2guIElu c3RlYWQgcHJvdmlkZSBhbiB3cmFwcGVyCiAgICBjYWxsZWQgdm1hbGxvY194ZW4gZm9yIHRob3Nl LgogICAgUmVuYW1lIHRoZSBlbnVtLCBjaGFuZ2Ugb25lIG9mIHRoZSBuYW1lcy4KICAgIE1vdmVk IHRoZSB2dW5tYXBfdHlwZSBhcm91bmQgaW4gYyBmaWxlIHNvIHdlIGRvbid0IGhhdmUgdG8gZGVj bGFyZQogICAgaXQgaW4gdGhlIGhlYWRlci4Kdjk6IFJlbW92ZSB0aGUgdnVubWFwX3hlbiwgcmVt b3ZlZCB2bV9hbGxvYyBmcm9tIGhlYWRlci4KICAgIEFkZCB2emFsbG9jX3hlbgp2MTA6CiAgICBQ cm9wZXJseSBBU1NFUlQgb24gcmFuZ2VzCiAgICBNYWtlIHZtX2ZyZWUgYW5kIHZ1bm1hcCBhdXRv bWF0aWNhbGx5IGRldGVjdCB0aGUgcmlnaHQgdmEgc3BhY2UuCiAgICBSZW1vdmUgZnJvbSBoZWFk ZXIgdm1fZnJlZS4gUmVuYW1lIHZtX2FsbG9jX3R5cGUgYW5kIHZtX2ZyZWVfdHlwZQogICAgdG8g IHZtX2FsbG9jIGFuZCB2bV9mcmVlIHJlc3BlY3RpdmVseS4KdjEwIC0gaW5saW5lIHBhdGNoIHNl dCBpbiB2ODoKICAgIERpdGNoIHRoZSB2emFsbG9jX3hlbgogICAgU3F1YXNoIHZ1bm1hcCBhbmQg dnVubWFwX3BhZ2VzIHRvZ2V0aGVyLiBNb3ZlIGJhY2sgdG8gb3JpZ2luYWwgcG9zaXRpb24uCiAg ICBEcm9wIHZ6YWxsb2NfdHlwZSBhbmQgb25seSBleHBvc2UgdnphbGxvYy4KICAgIERyb3AgI2lm ZGVmIGZvciBhZGRyIGluIHZ1bm1hcC4KLS0tCiB4ZW4vYXJjaC9hcm0va2VybmVsLmMgIHwgICAy ICstCiB4ZW4vYXJjaC9hcm0vbW0uYyAgICAgIHwgICAyICstCiB4ZW4vYXJjaC94ODYvbW0uYyAg ICAgIHwgICAyICstCiB4ZW4vY29tbW9uL3ZtYXAuYyAgICAgIHwgMTY5ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9kcml2ZXJzL2FjcGkvb3Ns LmMgfCAgIDIgKy0KIHhlbi9pbmNsdWRlL3hlbi92bWFwLmggfCAgMjEgKysrKy0tCiA2IGZpbGVz IGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS94ZW4vYXJjaC9hcm0va2VybmVsLmMgYi94ZW4vYXJjaC9hcm0va2VybmVsLmMKaW5kZXggNjE4 MDhhYy4uOTg3MWJkOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL2tlcm5lbC5jCisrKyBiL3hl bi9hcmNoL2FybS9rZXJuZWwuYwpAQCAtMjk5LDcgKzI5OSw3IEBAIHN0YXRpYyBfX2luaXQgaW50 IGtlcm5lbF9kZWNvbXByZXNzKHN0cnVjdCBib290bW9kdWxlICptb2QpCiAgICAgICAgIHJldHVy biAtRU5PTUVNOwogICAgIH0KICAgICBtZm4gPSBfbWZuKHBhZ2VfdG9fbWZuKHBhZ2VzKSk7Ci0g ICAgb3V0cHV0ID0gX192bWFwKCZtZm4sIDEgPDwga2VybmVsX29yZGVyX291dCwgMSwgMSwgUEFH RV9IWVBFUlZJU09SKTsKKyAgICBvdXRwdXQgPSBfX3ZtYXAoJm1mbiwgMSA8PCBrZXJuZWxfb3Jk ZXJfb3V0LCAxLCAxLCBQQUdFX0hZUEVSVklTT1IsIFZNQVBfREVGQVVMVCk7CiAKICAgICByYyA9 IHBlcmZvcm1fZ3VuemlwKG91dHB1dCwgaW5wdXQsIHNpemUpOwogICAgIGNsZWFuX2RjYWNoZV92 YV9yYW5nZShvdXRwdXQsIG91dHB1dF9zaXplKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9t bS5jIGIveGVuL2FyY2gvYXJtL21tLmMKaW5kZXggNzA2NWMzZS4uOTRlYTA1NCAxMDA2NDQKLS0t IGEveGVuL2FyY2gvYXJtL21tLmMKKysrIGIveGVuL2FyY2gvYXJtL21tLmMKQEAgLTgwNyw3ICs4 MDcsNyBAQCB2b2lkICppb3JlbWFwX2F0dHIocGFkZHJfdCBwYSwgc2l6ZV90IGxlbiwgdW5zaWdu ZWQgaW50IGF0dHJpYnV0ZXMpCiAgICAgbWZuX3QgbWZuID0gX21mbihQRk5fRE9XTihwYSkpOwog ICAgIHVuc2lnbmVkIGludCBvZmZzID0gcGEgJiAoUEFHRV9TSVpFIC0gMSk7CiAgICAgdW5zaWdu ZWQgaW50IG5yID0gUEZOX1VQKG9mZnMgKyBsZW4pOwotICAgIHZvaWQgKnB0ciA9IF9fdm1hcCgm bWZuLCBuciwgMSwgMSwgYXR0cmlidXRlcyk7CisgICAgdm9pZCAqcHRyID0gX192bWFwKCZtZm4s IG5yLCAxLCAxLCBhdHRyaWJ1dGVzLCBWTUFQX0RFRkFVTFQpOwogCiAgICAgaWYgKCBwdHIgPT0g TlVMTCApCiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21t LmMgYi94ZW4vYXJjaC94ODYvbW0uYwppbmRleCBhNDIwOTdmLi4yYmI5MjBiIDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvbW0uYworKysgYi94ZW4vYXJjaC94ODYvbW0uYwpAQCAtNjE3OSw3ICs2 MTc5LDcgQEAgdm9pZCBfX2lvbWVtICppb3JlbWFwKHBhZGRyX3QgcGEsIHNpemVfdCBsZW4pCiAg ICAgICAgIHVuc2lnbmVkIGludCBvZmZzID0gcGEgJiAoUEFHRV9TSVpFIC0gMSk7CiAgICAgICAg IHVuc2lnbmVkIGludCBuciA9IFBGTl9VUChvZmZzICsgbGVuKTsKIAotICAgICAgICB2YSA9IF9f dm1hcCgmbWZuLCBuciwgMSwgMSwgUEFHRV9IWVBFUlZJU09SX05PQ0FDSEUpICsgb2ZmczsKKyAg ICAgICAgdmEgPSBfX3ZtYXAoJm1mbiwgbnIsIDEsIDEsIFBBR0VfSFlQRVJWSVNPUl9OT0NBQ0hF LCBWTUFQX0RFRkFVTFQpICsgb2ZmczsKICAgICB9CiAKICAgICByZXR1cm4gKHZvaWQgX19mb3Jj ZSBfX2lvbWVtICopdmE7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL3ZtYXAuYyBiL3hlbi9jb21t b24vdm1hcC5jCmluZGV4IDEzNGVkYTAuLjBiMjNmOGYgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24v dm1hcC5jCisrKyBiL3hlbi9jb21tb24vdm1hcC5jCkBAIC0xMCw0MCArMTAsNDMgQEAKICNpbmNs dWRlIDxhc20vcGFnZS5oPgogCiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKHZtX2xvY2spOwotc3Rh dGljIHZvaWQgKl9fcmVhZF9tb3N0bHkgdm1fYmFzZTsKLSNkZWZpbmUgdm1fYml0bWFwICgodW5z aWduZWQgbG9uZyAqKXZtX2Jhc2UpCitzdGF0aWMgdm9pZCAqX19yZWFkX21vc3RseSB2bV9iYXNl W1ZNQVBfUkVHSU9OX05SXTsKKyNkZWZpbmUgdm1fYml0bWFwKHgpICgodW5zaWduZWQgbG9uZyAq KXZtX2Jhc2VbeF0pCiAvKiBoaWdoZXN0IGFsbG9jYXRlZCBiaXQgaW4gdGhlIGJpdG1hcCAqLwot c3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IHZtX3RvcDsKK3N0YXRpYyB1bnNpZ25l ZCBpbnQgX19yZWFkX21vc3RseSB2bV90b3BbVk1BUF9SRUdJT05fTlJdOwogLyogdG90YWwgbnVt YmVyIG9mIGJpdHMgaW4gdGhlIGJpdG1hcCAqLwotc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRf bW9zdGx5IHZtX2VuZDsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFkX21vc3RseSB2bV9lbmRb Vk1BUF9SRUdJT05fTlJdOwogLyogbG93ZXN0IGtub3duIGNsZWFyIGJpdCBpbiB0aGUgYml0bWFw ICovCi1zdGF0aWMgdW5zaWduZWQgaW50IHZtX2xvdzsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgdm1f bG93W1ZNQVBfUkVHSU9OX05SXTsKIAotdm9pZCBfX2luaXQgdm1faW5pdCh2b2lkKQordm9pZCBf X2luaXQgdm1faW5pdF90eXBlKGVudW0gdm1hcF9yZWdpb24gdHlwZSwgdm9pZCAqc3RhcnQsIHZv aWQgKmVuZCkKIHsKICAgICB1bnNpZ25lZCBpbnQgaSwgbnI7CiAgICAgdW5zaWduZWQgbG9uZyB2 YTsKIAotICAgIHZtX2Jhc2UgPSAodm9pZCAqKVZNQVBfVklSVF9TVEFSVDsKLSAgICB2bV9lbmQg PSBQRk5fRE9XTihhcmNoX3ZtYXBfdmlydF9lbmQoKSAtIHZtX2Jhc2UpOwotICAgIHZtX2xvdyA9 IFBGTl9VUCgodm1fZW5kICsgNykgLyA4KTsKLSAgICBuciA9IFBGTl9VUCgodm1fbG93ICsgNykg LyA4KTsKLSAgICB2bV90b3AgPSBuciAqIFBBR0VfU0laRSAqIDg7CisgICAgQVNTRVJUKCF2bV9i YXNlW3R5cGVdKTsKIAotICAgIGZvciAoIGkgPSAwLCB2YSA9ICh1bnNpZ25lZCBsb25nKXZtX2Jp dG1hcDsgaSA8IG5yOyArK2ksIHZhICs9IFBBR0VfU0laRSApCisgICAgdm1fYmFzZVt0eXBlXSA9 IHN0YXJ0OworICAgIHZtX2VuZFt0eXBlXSA9IFBGTl9ET1dOKGVuZCAtIHN0YXJ0KTsKKyAgICB2 bV9sb3dbdHlwZV09IFBGTl9VUCgodm1fZW5kW3R5cGVdICsgNykgLyA4KTsKKyAgICBuciA9IFBG Tl9VUCgodm1fbG93W3R5cGVdICsgNykgLyA4KTsKKyAgICB2bV90b3BbdHlwZV0gPSBuciAqIFBB R0VfU0laRSAqIDg7CisKKyAgICBmb3IgKCBpID0gMCwgdmEgPSAodW5zaWduZWQgbG9uZyl2bV9i aXRtYXAodHlwZSk7IGkgPCBucjsgKytpLCB2YSArPSBQQUdFX1NJWkUgKQogICAgIHsKICAgICAg ICAgc3RydWN0IHBhZ2VfaW5mbyAqcGcgPSBhbGxvY19kb21oZWFwX3BhZ2UoTlVMTCwgMCk7CiAK ICAgICAgICAgbWFwX3BhZ2VzX3RvX3hlbih2YSwgcGFnZV90b19tZm4ocGcpLCAxLCBQQUdFX0hZ UEVSVklTT1IpOwogICAgICAgICBjbGVhcl9wYWdlKCh2b2lkICopdmEpOwogICAgIH0KLSAgICBi aXRtYXBfZmlsbCh2bV9iaXRtYXAsIHZtX2xvdyk7CisgICAgYml0bWFwX2ZpbGwodm1fYml0bWFw KHR5cGUpLCB2bV9sb3dbdHlwZV0pOwogCiAgICAgLyogUG9wdWxhdGUgcGFnZSB0YWJsZXMgZm9y IHRoZSBiaXRtYXAgaWYgbmVjZXNzYXJ5LiAqLwotICAgIHBvcHVsYXRlX3B0X3JhbmdlKHZhLCAw LCB2bV9sb3cgLSBucik7CisgICAgcG9wdWxhdGVfcHRfcmFuZ2UodmEsIDAsIHZtX2xvd1t0eXBl XSAtIG5yKTsKIH0KIAotdm9pZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBp bnQgYWxpZ24pCitzdGF0aWMgdm9pZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5yLCB1bnNpZ25l ZCBpbnQgYWxpZ24sCisgICAgICAgICAgICAgICAgICAgICAgZW51bSB2bWFwX3JlZ2lvbiB0KQog ewogICAgIHVuc2lnbmVkIGludCBzdGFydCwgYml0OwogCkBAIC01MiwyNyArNTUsMzEgQEAgdm9p ZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCiAgICAgZWxz ZSBpZiAoIGFsaWduICYgKGFsaWduIC0gMSkgKQogICAgICAgICBhbGlnbiAmPSAtYWxpZ247CiAK KyAgICBBU1NFUlQoKHQgPj0gVk1BUF9ERUZBVUxUKSAmJiAodCA8IFZNQVBfUkVHSU9OX05SKSk7 CisgICAgaWYgKCAhdm1fYmFzZVt0XSApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgc3Bp bl9sb2NrKCZ2bV9sb2NrKTsKICAgICBmb3IgKCA7IDsgKQogICAgIHsKICAgICAgICAgc3RydWN0 IHBhZ2VfaW5mbyAqcGc7CiAKLSAgICAgICAgQVNTRVJUKHZtX2xvdyA9PSB2bV90b3AgfHwgIXRl c3RfYml0KHZtX2xvdywgdm1fYml0bWFwKSk7Ci0gICAgICAgIGZvciAoIHN0YXJ0ID0gdm1fbG93 OyBzdGFydCA8IHZtX3RvcDsgKQorICAgICAgICBBU1NFUlQodm1fbG93W3RdID09IHZtX3RvcFt0 XSB8fCAhdGVzdF9iaXQodm1fbG93W3RdLCB2bV9iaXRtYXAodCkpKTsKKyAgICAgICAgZm9yICgg c3RhcnQgPSB2bV9sb3dbdF07IHN0YXJ0IDwgdm1fdG9wW3RdOyApCiAgICAgICAgIHsKLSAgICAg ICAgICAgIGJpdCA9IGZpbmRfbmV4dF9iaXQodm1fYml0bWFwLCB2bV90b3AsIHN0YXJ0ICsgMSk7 Ci0gICAgICAgICAgICBpZiAoIGJpdCA+IHZtX3RvcCApCi0gICAgICAgICAgICAgICAgYml0ID0g dm1fdG9wOworICAgICAgICAgICAgYml0ID0gZmluZF9uZXh0X2JpdCh2bV9iaXRtYXAodCksIHZt X3RvcFt0XSwgc3RhcnQgKyAxKTsKKyAgICAgICAgICAgIGlmICggYml0ID4gdm1fdG9wW3RdICkK KyAgICAgICAgICAgICAgICBiaXQgPSB2bV90b3BbdF07CiAgICAgICAgICAgICAvKgogICAgICAg ICAgICAgICogTm90ZSB0aGF0IHRoaXMgc2tpcHMgdGhlIGZpcnN0IGJpdCwgbWFraW5nIHRoZQog ICAgICAgICAgICAgICogY29ycmVzcG9uZGluZyBwYWdlIGEgZ3VhcmQgb25lLgogICAgICAgICAg ICAgICovCiAgICAgICAgICAgICBzdGFydCA9IChzdGFydCArIGFsaWduKSAmIH4oYWxpZ24gLSAx KTsKLSAgICAgICAgICAgIGlmICggYml0IDwgdm1fdG9wICkKKyAgICAgICAgICAgIGlmICggYml0 IDwgdm1fdG9wW3RdICkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIHN0YXJ0 ICsgbnIgPCBiaXQgKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg ICBzdGFydCA9IGZpbmRfbmV4dF96ZXJvX2JpdCh2bV9iaXRtYXAsIHZtX3RvcCwgYml0ICsgMSk7 CisgICAgICAgICAgICAgICAgc3RhcnQgPSBmaW5kX25leHRfemVyb19iaXQodm1fYml0bWFwKHQp LCB2bV90b3BbdF0sIGJpdCArIDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgewpAQCAtODIsMTIgKzg5LDEyIEBAIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVk IGludCBuciwgdW5zaWduZWQgaW50IGFsaWduKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAK LSAgICAgICAgaWYgKCBzdGFydCA8IHZtX3RvcCApCisgICAgICAgIGlmICggc3RhcnQgPCB2bV90 b3BbdF0gKQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgc3Bpbl91bmxvY2soJnZtX2xv Y2spOwogCi0gICAgICAgIGlmICggdm1fdG9wID49IHZtX2VuZCApCisgICAgICAgIGlmICggdm1f dG9wW3RdID49IHZtX2VuZFt0XSApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAg ICBwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZShOVUxMLCAwKTsKQEAgLTk2LDIzICsxMDMsMjMgQEAg dm9pZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCiAKICAg ICAgICAgc3Bpbl9sb2NrKCZ2bV9sb2NrKTsKIAotICAgICAgICBpZiAoIHN0YXJ0ID49IHZtX3Rv cCApCisgICAgICAgIGlmICggc3RhcnQgPj0gdm1fdG9wW3RdICkKICAgICAgICAgewotICAgICAg ICAgICAgdW5zaWduZWQgbG9uZyB2YSA9ICh1bnNpZ25lZCBsb25nKXZtX2JpdG1hcCArIHZtX3Rv cCAvIDg7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhID0gKHVuc2lnbmVkIGxvbmcpdm1f Yml0bWFwKHQpICsgdm1fdG9wW3RdIC8gODsKIAogICAgICAgICAgICAgaWYgKCAhbWFwX3BhZ2Vz X3RvX3hlbih2YSwgcGFnZV90b19tZm4ocGcpLCAxLCBQQUdFX0hZUEVSVklTT1IpICkKICAgICAg ICAgICAgIHsKICAgICAgICAgICAgICAgICBjbGVhcl9wYWdlKCh2b2lkICopdmEpOwotICAgICAg ICAgICAgICAgIHZtX3RvcCArPSBQQUdFX1NJWkUgKiA4OwotICAgICAgICAgICAgICAgIGlmICgg dm1fdG9wID4gdm1fZW5kICkKLSAgICAgICAgICAgICAgICAgICAgdm1fdG9wID0gdm1fZW5kOwor ICAgICAgICAgICAgICAgIHZtX3RvcFt0XSArPSBQQUdFX1NJWkUgKiA4OworICAgICAgICAgICAg ICAgIGlmICggdm1fdG9wW3RdID4gdm1fZW5kW3RdICkKKyAgICAgICAgICAgICAgICAgICAgdm1f dG9wW3RdID0gdm1fZW5kW3RdOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg ICAgfQogICAgICAgICB9CiAKICAgICAgICAgZnJlZV9kb21oZWFwX3BhZ2UocGcpOwogCi0gICAg ICAgIGlmICggc3RhcnQgPj0gdm1fdG9wICkKKyAgICAgICAgaWYgKCBzdGFydCA+PSB2bV90b3Bb dF0gKQogICAgICAgICB7CiAgICAgICAgICAgICBzcGluX3VubG9jaygmdm1fbG9jayk7CiAgICAg ICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyMCw0NyArMTI3LDU4IEBAIHZvaWQgKnZtX2FsbG9j KHVuc2lnbmVkIGludCBuciwgdW5zaWduZWQgaW50IGFsaWduKQogICAgIH0KIAogICAgIGZvciAo IGJpdCA9IHN0YXJ0OyBiaXQgPCBzdGFydCArIG5yOyArK2JpdCApCi0gICAgICAgIF9fc2V0X2Jp dChiaXQsIHZtX2JpdG1hcCk7Ci0gICAgaWYgKCBiaXQgPCB2bV90b3AgKQotICAgICAgICBBU1NF UlQoIXRlc3RfYml0KGJpdCwgdm1fYml0bWFwKSk7CisgICAgICAgIF9fc2V0X2JpdChiaXQsIHZt X2JpdG1hcCh0KSk7CisgICAgaWYgKCBiaXQgPCB2bV90b3BbdF0gKQorICAgICAgICBBU1NFUlQo IXRlc3RfYml0KGJpdCwgdm1fYml0bWFwKHQpKSk7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlQo Yml0ID09IHZtX3RvcCk7Ci0gICAgaWYgKCBzdGFydCA8PSB2bV9sb3cgKyAyICkKLSAgICAgICAg dm1fbG93ID0gYml0OworICAgICAgICBBU1NFUlQoYml0ID09IHZtX3RvcFt0XSk7CisgICAgaWYg KCBzdGFydCA8PSB2bV9sb3dbdF0gKyAyICkKKyAgICAgICAgdm1fbG93W3RdID0gYml0OwogICAg IHNwaW5fdW5sb2NrKCZ2bV9sb2NrKTsKIAotICAgIHJldHVybiB2bV9iYXNlICsgc3RhcnQgKiBQ QUdFX1NJWkU7CisgICAgcmV0dXJuIHZtX2Jhc2VbdF0gKyBzdGFydCAqIFBBR0VfU0laRTsKIH0K IAotc3RhdGljIHVuc2lnbmVkIGludCB2bV9pbmRleChjb25zdCB2b2lkICp2YSkKK3N0YXRpYyB1 bnNpZ25lZCBpbnQgdm1faW5kZXgoY29uc3Qgdm9pZCAqdmEsIGVudW0gdm1hcF9yZWdpb24gdHlw ZSkKIHsKICAgICB1bnNpZ25lZCBsb25nIGFkZHIgPSAodW5zaWduZWQgbG9uZyl2YSAmIH4oUEFH RV9TSVpFIC0gMSk7CiAgICAgdW5zaWduZWQgaW50IGlkeDsKKyAgICB1bnNpZ25lZCBsb25nIHN0 YXJ0ID0gKHVuc2lnbmVkIGxvbmcpdm1fYmFzZVt0eXBlXTsKKworICAgIGlmICggIXN0YXJ0ICkK KyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoIGFkZHIgPCBWTUFQX1ZJUlRfU1RBUlQgKyAo dm1fZW5kIC8gOCkgfHwKLSAgICAgICAgIGFkZHIgPj0gVk1BUF9WSVJUX1NUQVJUICsgdm1fdG9w ICogUEFHRV9TSVpFICkKKyAgICBpZiAoIGFkZHIgPCBzdGFydCArICh2bV9lbmRbdHlwZV0gLyA4 KSB8fAorICAgICAgICAgYWRkciA+PSBzdGFydCArIHZtX3RvcFt0eXBlXSAqIFBBR0VfU0laRSAp CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWR4ID0gUEZOX0RPV04odmEgLSB2bV9iYXNlKTsK LSAgICByZXR1cm4gIXRlc3RfYml0KGlkeCAtIDEsIHZtX2JpdG1hcCkgJiYKLSAgICAgICAgICAg dGVzdF9iaXQoaWR4LCB2bV9iaXRtYXApID8gaWR4IDogMDsKKyAgICBpZHggPSBQRk5fRE9XTih2 YSAtIHZtX2Jhc2VbdHlwZV0pOworICAgIHJldHVybiAhdGVzdF9iaXQoaWR4IC0gMSwgdm1fYml0 bWFwKHR5cGUpKSAmJgorICAgICAgICAgICB0ZXN0X2JpdChpZHgsIHZtX2JpdG1hcCh0eXBlKSkg PyBpZHggOiAwOwogfQogCi1zdGF0aWMgdW5zaWduZWQgaW50IHZtX3NpemUoY29uc3Qgdm9pZCAq dmEpCitzdGF0aWMgdW5zaWduZWQgaW50IHZtX3NpemUoY29uc3Qgdm9pZCAqdmEsIGVudW0gdm1h cF9yZWdpb24gdHlwZSkKIHsKLSAgICB1bnNpZ25lZCBpbnQgc3RhcnQgPSB2bV9pbmRleCh2YSks IGVuZDsKKyAgICB1bnNpZ25lZCBpbnQgc3RhcnQgPSB2bV9pbmRleCh2YSwgdHlwZSksIGVuZDsK IAogICAgIGlmICggIXN0YXJ0ICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBlbmQgPSBmaW5k X25leHRfemVyb19iaXQodm1fYml0bWFwLCB2bV90b3AsIHN0YXJ0ICsgMSk7CisgICAgZW5kID0g ZmluZF9uZXh0X3plcm9fYml0KHZtX2JpdG1hcCh0eXBlKSwgdm1fdG9wW3R5cGVdLCBzdGFydCAr IDEpOwogCi0gICAgcmV0dXJuIG1pbihlbmQsIHZtX3RvcCkgLSBzdGFydDsKKyAgICByZXR1cm4g bWluKGVuZCwgdm1fdG9wW3R5cGVdKSAtIHN0YXJ0OwogfQogCi12b2lkIHZtX2ZyZWUoY29uc3Qg dm9pZCAqdmEpCitzdGF0aWMgdm9pZCB2bV9mcmVlKGNvbnN0IHZvaWQgKnZhKQogewotICAgIHVu c2lnbmVkIGludCBiaXQgPSB2bV9pbmRleCh2YSk7CisgICAgZW51bSB2bWFwX3JlZ2lvbiB0eXBl ID0gVk1BUF9ERUZBVUxUOworICAgIHVuc2lnbmVkIGludCBiaXQgPSB2bV9pbmRleCh2YSwgdHlw ZSk7CisKKyAgICBpZiAoICFiaXQgKQorICAgIHsKKyAgICAgICAgdHlwZSA9IFZNQVBfWEVOOwor ICAgICAgICBiaXQgPSB2bV9pbmRleCh2YSwgdHlwZSk7CisgICAgfQogCiAgICAgaWYgKCAhYml0 ICkKICAgICB7CkBAIC0xNjksMjIgKzE4NywyMyBAQCB2b2lkIHZtX2ZyZWUoY29uc3Qgdm9pZCAq dmEpCiAgICAgfQogCiAgICAgc3Bpbl9sb2NrKCZ2bV9sb2NrKTsKLSAgICBpZiAoIGJpdCA8IHZt X2xvdyApCisgICAgaWYgKCBiaXQgPCB2bV9sb3dbdHlwZV0gKQogICAgIHsKLSAgICAgICAgdm1f bG93ID0gYml0IC0gMTsKLSAgICAgICAgd2hpbGUgKCAhdGVzdF9iaXQodm1fbG93IC0gMSwgdm1f Yml0bWFwKSApCi0gICAgICAgICAgICAtLXZtX2xvdzsKKyAgICAgICAgdm1fbG93W3R5cGVdID0g Yml0IC0gMTsKKyAgICAgICAgd2hpbGUgKCAhdGVzdF9iaXQodm1fbG93W3R5cGVdIC0gMSwgdm1f Yml0bWFwKHR5cGUpKSApCisgICAgICAgICAgICAtLXZtX2xvd1t0eXBlXTsKICAgICB9Ci0gICAg d2hpbGUgKCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChiaXQsIHZtX2JpdG1hcCkgKQotICAgICAgICBp ZiAoICsrYml0ID09IHZtX3RvcCApCisgICAgd2hpbGUgKCBfX3Rlc3RfYW5kX2NsZWFyX2JpdChi aXQsIHZtX2JpdG1hcCh0eXBlKSkgKQorICAgICAgICBpZiAoICsrYml0ID09IHZtX3RvcFt0eXBl XSApCiAgICAgICAgICAgICBicmVhazsKICAgICBzcGluX3VubG9jaygmdm1fbG9jayk7CiB9CiAK IHZvaWQgKl9fdm1hcChjb25zdCBtZm5fdCAqbWZuLCB1bnNpZ25lZCBpbnQgZ3JhbnVsYXJpdHks Ci0gICAgICAgICAgICAgdW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24sIHVuc2ln bmVkIGludCBmbGFncykKKyAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnIsIHVuc2lnbmVkIGlu dCBhbGlnbiwgdW5zaWduZWQgaW50IGZsYWdzLAorICAgICAgICAgICAgIGVudW0gdm1hcF9yZWdp b24gdHlwZSkKIHsKLSAgICB2b2lkICp2YSA9IHZtX2FsbG9jKG5yICogZ3JhbnVsYXJpdHksIGFs aWduKTsKKyAgICB2b2lkICp2YSA9IHZtX2FsbG9jKG5yICogZ3JhbnVsYXJpdHksIGFsaWduLCB0 eXBlKTsKICAgICB1bnNpZ25lZCBsb25nIGN1ciA9ICh1bnNpZ25lZCBsb25nKXZhOwogCiAgICAg Zm9yICggOyB2YSAmJiBuci0tOyArK21mbiwgY3VyICs9IFBBR0VfU0laRSAqIGdyYW51bGFyaXR5 ICkKQEAgLTIwMSwyMiArMjIwLDI2IEBAIHZvaWQgKl9fdm1hcChjb25zdCBtZm5fdCAqbWZuLCB1 bnNpZ25lZCBpbnQgZ3JhbnVsYXJpdHksCiAKIHZvaWQgKnZtYXAoY29uc3QgbWZuX3QgKm1mbiwg dW5zaWduZWQgaW50IG5yKQogewotICAgIHJldHVybiBfX3ZtYXAobWZuLCAxLCBuciwgMSwgUEFH RV9IWVBFUlZJU09SKTsKKyAgICByZXR1cm4gX192bWFwKG1mbiwgMSwgbnIsIDEsIFBBR0VfSFlQ RVJWSVNPUiwgVk1BUF9ERUZBVUxUKTsKIH0KIAogdm9pZCB2dW5tYXAoY29uc3Qgdm9pZCAqdmEp CiB7Ci0jaWZuZGVmIF9QQUdFX05PTkUKICAgICB1bnNpZ25lZCBsb25nIGFkZHIgPSAodW5zaWdu ZWQgbG9uZyl2YTsKKyAgICB1bnNpZ25lZCBpbnQgcGFnZXMgPSB2bV9zaXplKHZhLCBWTUFQX0RF RkFVTFQpOworCisgICAgaWYgKCAhcGFnZXMgKQorICAgICAgICBwYWdlcyA9IHZtX3NpemUodmEs IFZNQVBfWEVOKTsKIAotICAgIGRlc3Ryb3lfeGVuX21hcHBpbmdzKGFkZHIsIGFkZHIgKyBQQUdF X1NJWkUgKiB2bV9zaXplKHZhKSk7CisjaWZuZGVmIF9QQUdFX05PTkUKKyAgICBkZXN0cm95X3hl bl9tYXBwaW5ncyhhZGRyLCBhZGRyICsgUEFHRV9TSVpFICogcGFnZXMpOwogI2Vsc2UgLyogQXZv aWQgdGVhcmluZyBkb3duIGludGVybWVkaWF0ZSBwYWdlIHRhYmxlcy4gKi8KLSAgICBtYXBfcGFn ZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKXZhLCAwLCB2bV9zaXplKHZhKSwgX1BBR0VfTk9ORSk7 CisgICAgbWFwX3BhZ2VzX3RvX3hlbihhZGRyLCAwLCBwYWdlcywgX1BBR0VfTk9ORSk7CiAjZW5k aWYKICAgICB2bV9mcmVlKHZhKTsKIH0KIAotdm9pZCAqdm1hbGxvYyhzaXplX3Qgc2l6ZSkKK3N0 YXRpYyB2b2lkICp2bWFsbG9jX3R5cGUoc2l6ZV90IHNpemUsIGVudW0gdm1hcF9yZWdpb24gdHlw ZSkKIHsKICAgICBtZm5fdCAqbWZuOwogICAgIHNpemVfdCBwYWdlcywgaTsKQEAgLTIzOCw3ICsy NjEsNyBAQCB2b2lkICp2bWFsbG9jKHNpemVfdCBzaXplKQogICAgICAgICBtZm5baV0gPSBfbWZu KHBhZ2VfdG9fbWZuKHBnKSk7CiAgICAgfQogCi0gICAgdmEgPSB2bWFwKG1mbiwgcGFnZXMpOwor ICAgIHZhID0gX192bWFwKG1mbiwgMSwgcGFnZXMsIDEsIFBBR0VfSFlQRVJWSVNPUiwgdHlwZSk7 CiAgICAgaWYgKCB2YSA9PSBOVUxMICkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMjUyLDkg KzI3NSwxOSBAQCB2b2lkICp2bWFsbG9jKHNpemVfdCBzaXplKQogICAgIHJldHVybiBOVUxMOwog fQogCit2b2lkICp2bWFsbG9jKHNpemVfdCBzaXplKQoreworICAgIHJldHVybiB2bWFsbG9jX3R5 cGUoc2l6ZSwgVk1BUF9ERUZBVUxUKTsKK30KKwordm9pZCAqdm1hbGxvY194ZW4oc2l6ZV90IHNp emUpCit7CisgICAgcmV0dXJuIHZtYWxsb2NfdHlwZShzaXplLCBWTUFQX1hFTik7Cit9CisKIHZv aWQgKnZ6YWxsb2Moc2l6ZV90IHNpemUpCiB7Ci0gICAgdm9pZCAqcCA9IHZtYWxsb2Moc2l6ZSk7 CisgICAgdm9pZCAqcCA9IHZtYWxsb2NfdHlwZShzaXplLCBWTUFQX0RFRkFVTFQpOwogICAgIGlu dCBpOwogCiAgICAgaWYgKCBwID09IE5VTEwgKQpAQCAtMjcxLDExICszMDQsMTcgQEAgdm9pZCB2 ZnJlZSh2b2lkICp2YSkKICAgICB1bnNpZ25lZCBpbnQgaSwgcGFnZXM7CiAgICAgc3RydWN0IHBh Z2VfaW5mbyAqcGc7CiAgICAgUEFHRV9MSVNUX0hFQUQocGdfbGlzdCk7CisgICAgZW51bSB2bWFw X3JlZ2lvbiB0eXBlID0gVk1BUF9ERUZBVUxUOwogCiAgICAgaWYgKCAhdmEgKQogICAgICAgICBy ZXR1cm47CiAKLSAgICBwYWdlcyA9IHZtX3NpemUodmEpOworICAgIHBhZ2VzID0gdm1fc2l6ZSh2 YSwgdHlwZSk7CisgICAgaWYgKCAhcGFnZXMgKQorICAgIHsKKyAgICAgICAgdHlwZSA9IFZNQVBf WEVOOworICAgICAgICBwYWdlcyA9IHZtX3NpemUodmEsIHR5cGUpOworICAgIH0KICAgICBBU1NF UlQocGFnZXMpOwogCiAgICAgZm9yICggaSA9IDA7IGkgPCBwYWdlczsgaSsrICkKZGlmZiAtLWdp dCBhL3hlbi9kcml2ZXJzL2FjcGkvb3NsLmMgYi94ZW4vZHJpdmVycy9hY3BpL29zbC5jCmluZGV4 IDhhMjhkODcuLjlhNDkwMjkgMTAwNjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvb3NsLmMKKysr IGIveGVuL2RyaXZlcnMvYWNwaS9vc2wuYwpAQCAtOTcsNyArOTcsNyBAQCBhY3BpX29zX21hcF9t ZW1vcnkoYWNwaV9waHlzaWNhbF9hZGRyZXNzIHBoeXMsIGFjcGlfc2l6ZSBzaXplKQogCQlpZiAo SVNfRU5BQkxFRChDT05GSUdfWDg2KSAmJiAhKChwaHlzICsgc2l6ZSAtIDEpID4+IDIwKSkKIAkJ CXJldHVybiBfX3ZhKHBoeXMpOwogCQlyZXR1cm4gX192bWFwKCZtZm4sIFBGTl9VUChvZmZzICsg c2l6ZSksIDEsIDEsCi0JCQkgICAgICBBQ1BJX01BUF9NRU1fQVRUUikgKyBvZmZzOworCQkJICAg ICAgQUNQSV9NQVBfTUVNX0FUVFIsIFZNQVBfREVGQVVMVCkgKyBvZmZzOwogCX0KIAlyZXR1cm4g X19hY3BpX21hcF90YWJsZShwaHlzLCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L3hlbi92bWFwLmggYi94ZW4vaW5jbHVkZS94ZW4vdm1hcC5oCmluZGV4IDU2NzFhYzguLjM2OTU2 MGUgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi92bWFwLmgKKysrIGIveGVuL2luY2x1ZGUv eGVuL3ZtYXAuaApAQCAtNCwxNCArNCwyMiBAQAogI2luY2x1ZGUgPHhlbi9tbS5oPgogI2luY2x1 ZGUgPGFzbS9wYWdlLmg+CiAKLXZvaWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwgdW5zaWdu ZWQgaW50IGFsaWduKTsKLXZvaWQgdm1fZnJlZShjb25zdCB2b2lkICopOworZW51bSB2bWFwX3Jl Z2lvbiB7CisgICAgVk1BUF9ERUZBVUxULAorICAgIFZNQVBfWEVOLAorICAgIFZNQVBfUkVHSU9O X05SLAorfTsKIAotdm9pZCAqX192bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2lnbmVkIGludCBn cmFudWxhcml0eSwKLSAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnIsIHVuc2lnbmVkIGludCBh bGlnbiwgdW5zaWduZWQgaW50IGZsYWdzKTsKK3ZvaWQgdm1faW5pdF90eXBlKGVudW0gdm1hcF9y ZWdpb24gdHlwZSwgdm9pZCAqc3RhcnQsIHZvaWQgKmVuZCk7CisKK3ZvaWQgKl9fdm1hcChjb25z dCBtZm5fdCAqbWZuLCB1bnNpZ25lZCBpbnQgZ3JhbnVsYXJpdHksIHVuc2lnbmVkIGludCBuciwK KyAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYWxpZ24sIHVuc2lnbmVkIGludCBmbGFncywgZW51 bSB2bWFwX3JlZ2lvbik7CiB2b2lkICp2bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2lnbmVkIGlu dCBucik7CiB2b2lkIHZ1bm1hcChjb25zdCB2b2lkICopOworCiB2b2lkICp2bWFsbG9jKHNpemVf dCBzaXplKTsKK3ZvaWQgKnZtYWxsb2NfeGVuKHNpemVfdCBzaXplKTsKKwogdm9pZCAqdnphbGxv YyhzaXplX3Qgc2l6ZSk7CiB2b2lkIHZmcmVlKHZvaWQgKnZhKTsKIApAQCAtMjQsNyArMzIsMTAg QEAgc3RhdGljIGlubGluZSB2b2lkIGlvdW5tYXAodm9pZCBfX2lvbWVtICp2YSkKICAgICB2dW5t YXAoKHZvaWQgKikoYWRkciAmIFBBR0VfTUFTSykpOwogfQogCi12b2lkIHZtX2luaXQodm9pZCk7 CiB2b2lkICphcmNoX3ZtYXBfdmlydF9lbmQodm9pZCk7CitzdGF0aWMgaW5saW5lIHZvaWQgdm1f aW5pdCh2b2lkKQoreworICAgIHZtX2luaXRfdHlwZShWTUFQX0RFRkFVTFQsICh2b2lkICopVk1B UF9WSVJUX1NUQVJULCBhcmNoX3ZtYXBfdmlydF9lbmQoKSk7Cit9CiAKICNlbmRpZiAvKiBfX1hF Tl9WTUFQX0hfXyAqLwotLSAKMi41LjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHA6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=