From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v9 08/27] arm/x86/vmap: Add v[z|m]alloc_xen and vm_init_type Date: Mon, 25 Apr 2016 11:34:55 -0400 Message-ID: <1461598514-5440-9-git-send-email-konrad.wilk@oracle.com> References: <1461598514-5440-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 1auiYs-0004yT-Qx for xen-devel@lists.xenproject.org; Mon, 25 Apr 2016 15:36:35 +0000 In-Reply-To: <1461598514-5440-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 ZSB2W218el1hbGxvY194ZW4gdG8gdXRpbGl6ZQppdCAodmZyZWUgaXMgY2FwYWJsZSBvZiBzZWFy Y2hpbmcgYm90aCBhZGRyZXNzIHNwYWNlcykuCgpUaGlzIGFsbG93cyB1c2VycyAoc3VjaCBhcyB4 U3BsaWNlKSB0byBwcm92aWRlIHRoZWlyIG93bgptZWNoYW5pc20gdG8gY2hhbmdlIHRoZSB0aGUg cGFnZSBmbGFncywgYW5kIGFsc28gdXNlIHZpcnR1YWwKYWRkcmVzc2VzIGNsb3NlciB0byB0aGUg aHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJlc3NlcyAoYXQgbGVhc3QKb24geDg2KSB3aGlsZSBub3Qg aGF2aW5nIHRvIGRlYWwgd2l0aCB0aGUgYWxsb2NhdGlvbiBvZgpwYWdlcy4KCkZvciBleGFtcGxl IG9mIHVzZXJzLCBzZWUgcGF0Y2ggdGl0bGVkICJ4c3BsaWNlOiBJbXBsZW1lbnQgcGF5bG9hZAps b2FkaW5nIiwgd2hlcmUgd2UgcGFyc2UgdGhlIHBheWxvYWQncyBFTEYgcmVsb2NhdGlvbnMgLSB3 aGljaAppcyBkZWZpbmVkIHRvIGJlIHNpZ25lZCAzMi1iaXQgKG9uIHg4NikgKG1heCBkaXNwbGFj ZW1lbnQgaGVuY2UKaXMgMkdCIHZpcnR1YWwgc3BhY2UsIEFSTTMyIGlzIDEyOE1CKS4gVGhlIGRp c3BsYWNlbWVudCBvZiB0aGUKaHlwZXJ2aXNvciB2aXJ0dWFsIGFkZHJlc3NlcyB0byB0aGUgdm1h bGxvYyAob24geDg2KQppcyBtb3JlIHRoYW4gMzItYml0cyAtIHdoaWNoIG1lYW5zIHRoYXQgRUxG IHJlbG9jYXRpb25zIHdvdWxkCnRydW5jYXRlIHRoZSAzNCBhbmQgMzN0aCBiaXQuIEhlbmNlIHRo aXMgYWx0ZXJuYXRlIEFQSS4KCldlIGFsc28gYWRkIGFkZCBleHRyYSBjaGVja3MgaW4gY2FzZSB0 aGUgYikgcmFuZ2UgaGFzIG5vdCBiZWVuCmluaXRpYWxpemVkLgoKUGFydCBvZiB0aGlzIHBhdGNo IGFsc28gcmVtb3ZlcyAndm1fYWxsb2MnIGRlY2xlcmF0aW9uIGFzCndlIGRvIG5vdCBoYXZlIGFu eSB1c2VycyBvZiBpdCAtIGFuZCBpZiB0aGVyZSBldmVyIHdpbGwgYmUgLSB3ZQp3aWxsIGhhdmUg dG8gZXhwb3NlIGFuZCB2bV9hbGxvY194ZW4gdmFyaWFudC4KClNpZ25lZC1vZmYtYnk6IEtvbnJh ZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KU3VnZ2VzdGVkLWJ5OiBK YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkFja2VkLWJ5OiBKdWxpZW4gR3JhbGwgPGp1 bGllbi5ncmFsbEBhcm0uY29tPiBbQVJNXQpSZXZpZXdlZC1ieTogQW5kcmV3IENvb3BlciA8YW5k cmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBz dXNlLmNvbT4KCi0tLQpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+ CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLZWlyIEZyYXNlciA8a2Vp ckB4ZW4ub3JnPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNjOiBTdGVmYW5vIFN0YWJl bGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBKdWxpZW4gR3JhbGwgPGp1bGllbi5n cmFsbEBhcm0uY29tPgoKdjQ6IE5ldyBwYXRjaC4KdjU6IFVwZGF0ZSBwZXIgSmFuJ3MgY29tbWVu dHMuCnY2OiBEcm9wIHRoZSBzdHJheSBwYXJlbnRoZXNlcyBvbiB0eXBlZGVmcy4KICAgIERpdGNo IHRoZSB2dW5tYXAgY2FsbGJhY2suIFN0YXNoIGF3YXkgdGhlIHZpcnR1YWwgYWRkcmVzc2VzIGlu IGxpc3RzLgogICAgRGl0Y2ggdGhlIHZtYXAgY2FsbGJhY2suIEp1c3QgcHJvdmlkZSB2aXJ0dWFs IGFkZHJlc3MuCiAgICBEaXRjaCB0aGUgdm1hbGxvY19yYW5nZS4gUmVxdWlyZSB1c2VycyBvZiBh bHRlcm5hdGl2ZSB2aXJ0dWFsIGFkZHJlc3MKICAgIHRvIGNhbGwgdm1hcF9pbml0X3R5cGUgZmly c3QuCnY3OiBEb24ndCBleHBvc2UgdGhlIHZtYWxsb2NfdHlwZSBhbmQgc3VjaC4gSW5zdGVhZCBw cm92aWRlIGFuIHdyYXBwZXIKICAgIGNhbGxlZCB2bWFsbG9jX3hlbiBmb3IgdGhvc2UuCiAgICBS ZW5hbWUgdGhlIGVudW0sIGNoYW5nZSBvbmUgb2YgdGhlIG5hbWVzLgogICAgTW92ZWQgdGhlIHZ1 bm1hcF90eXBlIGFyb3VuZCBpbiBjIGZpbGUgc28gd2UgZG9uJ3QgaGF2ZSB0byBkZWNsYXJlCiAg ICBpdCBpbiB0aGUgaGVhZGVyLgp2OTogUmVtb3ZlIHRoZSB2dW5tYXBfeGVuLCByZW1vdmVkIHZt X2FsbG9jIGZyb20gaGVhZGVyLgogICAgQWRkIHZ6YWxsb2NfeGVuCi0tLQogeGVuL2FyY2gvYXJt L2tlcm5lbC5jICAgICAgIHwgICAyICstCiB4ZW4vYXJjaC9hcm0vbW0uYyAgICAgICAgICAgfCAg IDIgKy0KIHhlbi9hcmNoL3g4Ni9tbS5jICAgICAgICAgICB8ICAgMiArLQogeGVuL2NvbW1vbi92 aXJ0dWFsX3JlZ2lvbi5jIHwgICAxIC0KIHhlbi9jb21tb24vdm1hcC5jICAgICAgICAgICB8IDIw NSArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogeGVuL2RyaXZl cnMvYWNwaS9vc2wuYyAgICAgIHwgICAyICstCiB4ZW4vaW5jbHVkZS94ZW4vdm1hcC5oICAgICAg fCAgMjIgKysrKy0KIDcgZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDg2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9rZXJuZWwuYyBiL3hlbi9hcmNoL2Fy bS9rZXJuZWwuYwppbmRleCA2MTgwOGFjLi45ODcxYmQ5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9h cm0va2VybmVsLmMKKysrIGIveGVuL2FyY2gvYXJtL2tlcm5lbC5jCkBAIC0yOTksNyArMjk5LDcg QEAgc3RhdGljIF9faW5pdCBpbnQga2VybmVsX2RlY29tcHJlc3Moc3RydWN0IGJvb3Rtb2R1bGUg Km1vZCkKICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAgICAgfQogICAgIG1mbiA9IF9tZm4ocGFn ZV90b19tZm4ocGFnZXMpKTsKLSAgICBvdXRwdXQgPSBfX3ZtYXAoJm1mbiwgMSA8PCBrZXJuZWxf b3JkZXJfb3V0LCAxLCAxLCBQQUdFX0hZUEVSVklTT1IpOworICAgIG91dHB1dCA9IF9fdm1hcCgm bWZuLCAxIDw8IGtlcm5lbF9vcmRlcl9vdXQsIDEsIDEsIFBBR0VfSFlQRVJWSVNPUiwgVk1BUF9E RUZBVUxUKTsKIAogICAgIHJjID0gcGVyZm9ybV9ndW56aXAob3V0cHV0LCBpbnB1dCwgc2l6ZSk7 CiAgICAgY2xlYW5fZGNhY2hlX3ZhX3JhbmdlKG91dHB1dCwgb3V0cHV0X3NpemUpOwpkaWZmIC0t Z2l0IGEveGVuL2FyY2gvYXJtL21tLmMgYi94ZW4vYXJjaC9hcm0vbW0uYwppbmRleCA3MDY1YzNl Li45NGVhMDU0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vbW0uYworKysgYi94ZW4vYXJjaC9h cm0vbW0uYwpAQCAtODA3LDcgKzgwNyw3IEBAIHZvaWQgKmlvcmVtYXBfYXR0cihwYWRkcl90IHBh LCBzaXplX3QgbGVuLCB1bnNpZ25lZCBpbnQgYXR0cmlidXRlcykKICAgICBtZm5fdCBtZm4gPSBf bWZuKFBGTl9ET1dOKHBhKSk7CiAgICAgdW5zaWduZWQgaW50IG9mZnMgPSBwYSAmIChQQUdFX1NJ WkUgLSAxKTsKICAgICB1bnNpZ25lZCBpbnQgbnIgPSBQRk5fVVAob2ZmcyArIGxlbik7Ci0gICAg dm9pZCAqcHRyID0gX192bWFwKCZtZm4sIG5yLCAxLCAxLCBhdHRyaWJ1dGVzKTsKKyAgICB2b2lk ICpwdHIgPSBfX3ZtYXAoJm1mbiwgbnIsIDEsIDEsIGF0dHJpYnV0ZXMsIFZNQVBfREVGQVVMVCk7 CiAKICAgICBpZiAoIHB0ciA9PSBOVUxMICkKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1n aXQgYS94ZW4vYXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jCmluZGV4IGNhMjZmNDku LjYzM2YwZGMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9tbS5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9tbS5jCkBAIC02MTI0LDcgKzYxMjQsNyBAQCB2b2lkIF9faW9tZW0gKmlvcmVtYXAocGFkZHJf dCBwYSwgc2l6ZV90IGxlbikKICAgICAgICAgdW5zaWduZWQgaW50IG9mZnMgPSBwYSAmIChQQUdF X1NJWkUgLSAxKTsKICAgICAgICAgdW5zaWduZWQgaW50IG5yID0gUEZOX1VQKG9mZnMgKyBsZW4p OwogCi0gICAgICAgIHZhID0gX192bWFwKCZtZm4sIG5yLCAxLCAxLCBQQUdFX0hZUEVSVklTT1Jf Tk9DQUNIRSkgKyBvZmZzOworICAgICAgICB2YSA9IF9fdm1hcCgmbWZuLCBuciwgMSwgMSwgUEFH RV9IWVBFUlZJU09SX05PQ0FDSEUsIFZNQVBfREVGQVVMVCkgKyBvZmZzOwogICAgIH0KIAogICAg IHJldHVybiAodm9pZCBfX2ZvcmNlIF9faW9tZW0gKil2YTsKZGlmZiAtLWdpdCBhL3hlbi9jb21t b24vdmlydHVhbF9yZWdpb24uYyBiL3hlbi9jb21tb24vdmlydHVhbF9yZWdpb24uYwppbmRleCBk NzViNzVkLi40MWY4YzI4IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3ZpcnR1YWxfcmVnaW9uLmMK KysrIGIveGVuL2NvbW1vbi92aXJ0dWFsX3JlZ2lvbi5jCkBAIC0zMyw3ICszMyw2IEBAIHN0YXRp YyBzdHJ1Y3QgdmlydHVhbF9yZWdpb24gY29yZV9pbml0IF9faW5pdGRhdGEgPSB7CiAgKiBvbiBk ZWxldGlvbi4KICAqCiAgKiBBbGwgcmVhZGVycyBvZiB2aXJ0dWFsX3JlZ2lvbl9saXN0IE1VU1Qg dXNlIGxpc3QgbGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UuCi0gKgogICovCiBzdGF0aWMgTElTVF9I RUFEKHZpcnR1YWxfcmVnaW9uX2xpc3QpOwogc3RhdGljIERFRklORV9TUElOTE9DSyh2aXJ0dWFs X3JlZ2lvbl9sb2NrKTsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdm1hcC5jIGIveGVuL2NvbW1v bi92bWFwLmMKaW5kZXggMTM0ZWRhMC4uOTkzMTQ4MiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi92 bWFwLmMKKysrIGIveGVuL2NvbW1vbi92bWFwLmMKQEAgLTEwLDQwICsxMCw0MyBAQAogI2luY2x1 ZGUgPGFzbS9wYWdlLmg+CiAKIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sodm1fbG9jayk7Ci1zdGF0 aWMgdm9pZCAqX19yZWFkX21vc3RseSB2bV9iYXNlOwotI2RlZmluZSB2bV9iaXRtYXAgKCh1bnNp Z25lZCBsb25nICopdm1fYmFzZSkKK3N0YXRpYyB2b2lkICpfX3JlYWRfbW9zdGx5IHZtX2Jhc2Vb Vk1BUF9SRUdJT05fTlJdOworI2RlZmluZSB2bV9iaXRtYXAoeCkgKCh1bnNpZ25lZCBsb25nICop dm1fYmFzZVt4XSkKIC8qIGhpZ2hlc3QgYWxsb2NhdGVkIGJpdCBpbiB0aGUgYml0bWFwICovCi1z dGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgdm1fdG9wOworc3RhdGljIHVuc2lnbmVk IGludCBfX3JlYWRfbW9zdGx5IHZtX3RvcFtWTUFQX1JFR0lPTl9OUl07CiAvKiB0b3RhbCBudW1i ZXIgb2YgYml0cyBpbiB0aGUgYml0bWFwICovCi1zdGF0aWMgdW5zaWduZWQgaW50IF9fcmVhZF9t b3N0bHkgdm1fZW5kOworc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IHZtX2VuZFtW TUFQX1JFR0lPTl9OUl07CiAvKiBsb3dlc3Qga25vd24gY2xlYXIgYml0IGluIHRoZSBiaXRtYXAg Ki8KLXN0YXRpYyB1bnNpZ25lZCBpbnQgdm1fbG93Oworc3RhdGljIHVuc2lnbmVkIGludCB2bV9s b3dbVk1BUF9SRUdJT05fTlJdOwogCi12b2lkIF9faW5pdCB2bV9pbml0KHZvaWQpCit2b2lkIF9f aW5pdCB2bV9pbml0X3R5cGUoZW51bSB2bWFwX3JlZ2lvbiB0eXBlLCB2b2lkICpzdGFydCwgdm9p ZCAqZW5kKQogewogICAgIHVuc2lnbmVkIGludCBpLCBucjsKICAgICB1bnNpZ25lZCBsb25nIHZh OwogCi0gICAgdm1fYmFzZSA9ICh2b2lkICopVk1BUF9WSVJUX1NUQVJUOwotICAgIHZtX2VuZCA9 IFBGTl9ET1dOKGFyY2hfdm1hcF92aXJ0X2VuZCgpIC0gdm1fYmFzZSk7Ci0gICAgdm1fbG93ID0g UEZOX1VQKCh2bV9lbmQgKyA3KSAvIDgpOwotICAgIG5yID0gUEZOX1VQKCh2bV9sb3cgKyA3KSAv IDgpOwotICAgIHZtX3RvcCA9IG5yICogUEFHRV9TSVpFICogODsKKyAgICBBU1NFUlQoIXZtX2Jh c2VbdHlwZV0pOwogCi0gICAgZm9yICggaSA9IDAsIHZhID0gKHVuc2lnbmVkIGxvbmcpdm1fYml0 bWFwOyBpIDwgbnI7ICsraSwgdmEgKz0gUEFHRV9TSVpFICkKKyAgICB2bV9iYXNlW3R5cGVdID0g c3RhcnQ7CisgICAgdm1fZW5kW3R5cGVdID0gUEZOX0RPV04oZW5kIC0gc3RhcnQpOworICAgIHZt X2xvd1t0eXBlXT0gUEZOX1VQKCh2bV9lbmRbdHlwZV0gKyA3KSAvIDgpOworICAgIG5yID0gUEZO X1VQKCh2bV9sb3dbdHlwZV0gKyA3KSAvIDgpOworICAgIHZtX3RvcFt0eXBlXSA9IG5yICogUEFH RV9TSVpFICogODsKKworICAgIGZvciAoIGkgPSAwLCB2YSA9ICh1bnNpZ25lZCBsb25nKXZtX2Jp dG1hcCh0eXBlKTsgaSA8IG5yOyArK2ksIHZhICs9IFBBR0VfU0laRSApCiAgICAgewogICAgICAg ICBzdHJ1Y3QgcGFnZV9pbmZvICpwZyA9IGFsbG9jX2RvbWhlYXBfcGFnZShOVUxMLCAwKTsKIAog ICAgICAgICBtYXBfcGFnZXNfdG9feGVuKHZhLCBwYWdlX3RvX21mbihwZyksIDEsIFBBR0VfSFlQ RVJWSVNPUik7CiAgICAgICAgIGNsZWFyX3BhZ2UoKHZvaWQgKil2YSk7CiAgICAgfQotICAgIGJp dG1hcF9maWxsKHZtX2JpdG1hcCwgdm1fbG93KTsKKyAgICBiaXRtYXBfZmlsbCh2bV9iaXRtYXAo dHlwZSksIHZtX2xvd1t0eXBlXSk7CiAKICAgICAvKiBQb3B1bGF0ZSBwYWdlIHRhYmxlcyBmb3Ig dGhlIGJpdG1hcCBpZiBuZWNlc3NhcnkuICovCi0gICAgcG9wdWxhdGVfcHRfcmFuZ2UodmEsIDAs IHZtX2xvdyAtIG5yKTsKKyAgICBwb3B1bGF0ZV9wdF9yYW5nZSh2YSwgMCwgdm1fbG93W3R5cGVd IC0gbnIpOwogfQogCi12b2lkICp2bV9hbGxvYyh1bnNpZ25lZCBpbnQgbnIsIHVuc2lnbmVkIGlu dCBhbGlnbikKK3N0YXRpYyB2b2lkICp2bV9hbGxvY190eXBlKHVuc2lnbmVkIGludCBuciwgdW5z aWduZWQgaW50IGFsaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSB2bWFwX3Jl Z2lvbiB0KQogewogICAgIHVuc2lnbmVkIGludCBzdGFydCwgYml0OwogCkBAIC01MiwyNyArNTUs MzEgQEAgdm9pZCAqdm1fYWxsb2ModW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24p CiAgICAgZWxzZSBpZiAoIGFsaWduICYgKGFsaWduIC0gMSkgKQogICAgICAgICBhbGlnbiAmPSAt YWxpZ247CiAKKyAgICBBU1NFUlQodCAhPSBWTUFQX1JFR0lPTl9OUik7CisgICAgaWYgKCAhdm1f YmFzZVt0XSApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgc3Bpbl9sb2NrKCZ2bV9sb2Nr KTsKICAgICBmb3IgKCA7IDsgKQogICAgIHsKICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7 CiAKLSAgICAgICAgQVNTRVJUKHZtX2xvdyA9PSB2bV90b3AgfHwgIXRlc3RfYml0KHZtX2xvdywg dm1fYml0bWFwKSk7Ci0gICAgICAgIGZvciAoIHN0YXJ0ID0gdm1fbG93OyBzdGFydCA8IHZtX3Rv cDsgKQorICAgICAgICBBU1NFUlQodm1fbG93W3RdID09IHZtX3RvcFt0XSB8fCAhdGVzdF9iaXQo dm1fbG93W3RdLCB2bV9iaXRtYXAodCkpKTsKKyAgICAgICAgZm9yICggc3RhcnQgPSB2bV9sb3db dF07IHN0YXJ0IDwgdm1fdG9wW3RdOyApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGJpdCA9IGZp bmRfbmV4dF9iaXQodm1fYml0bWFwLCB2bV90b3AsIHN0YXJ0ICsgMSk7Ci0gICAgICAgICAgICBp ZiAoIGJpdCA+IHZtX3RvcCApCi0gICAgICAgICAgICAgICAgYml0ID0gdm1fdG9wOworICAgICAg ICAgICAgYml0ID0gZmluZF9uZXh0X2JpdCh2bV9iaXRtYXAodCksIHZtX3RvcFt0XSwgc3RhcnQg KyAxKTsKKyAgICAgICAgICAgIGlmICggYml0ID4gdm1fdG9wW3RdICkKKyAgICAgICAgICAgICAg ICBiaXQgPSB2bV90b3BbdF07CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogTm90ZSB0 aGF0IHRoaXMgc2tpcHMgdGhlIGZpcnN0IGJpdCwgbWFraW5nIHRoZQogICAgICAgICAgICAgICog Y29ycmVzcG9uZGluZyBwYWdlIGEgZ3VhcmQgb25lLgogICAgICAgICAgICAgICovCiAgICAgICAg ICAgICBzdGFydCA9IChzdGFydCArIGFsaWduKSAmIH4oYWxpZ24gLSAxKTsKLSAgICAgICAgICAg IGlmICggYml0IDwgdm1fdG9wICkKKyAgICAgICAgICAgIGlmICggYml0IDwgdm1fdG9wW3RdICkK ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoIHN0YXJ0ICsgbnIgPCBiaXQgKQog ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBzdGFydCA9IGZpbmRf bmV4dF96ZXJvX2JpdCh2bV9iaXRtYXAsIHZtX3RvcCwgYml0ICsgMSk7CisgICAgICAgICAgICAg ICAgc3RhcnQgPSBmaW5kX25leHRfemVyb19iaXQodm1fYml0bWFwKHQpLCB2bV90b3BbdF0sIGJp dCArIDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewpA QCAtODIsMTIgKzg5LDEyIEBAIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwgdW5zaWdu ZWQgaW50IGFsaWduKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCBz dGFydCA8IHZtX3RvcCApCisgICAgICAgIGlmICggc3RhcnQgPCB2bV90b3BbdF0gKQogICAgICAg ICAgICAgYnJlYWs7CiAKICAgICAgICAgc3Bpbl91bmxvY2soJnZtX2xvY2spOwogCi0gICAgICAg IGlmICggdm1fdG9wID49IHZtX2VuZCApCisgICAgICAgIGlmICggdm1fdG9wW3RdID49IHZtX2Vu ZFt0XSApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgICAgICBwZyA9IGFsbG9jX2Rv bWhlYXBfcGFnZShOVUxMLCAwKTsKQEAgLTk2LDIzICsxMDMsMjMgQEAgdm9pZCAqdm1fYWxsb2Mo dW5zaWduZWQgaW50IG5yLCB1bnNpZ25lZCBpbnQgYWxpZ24pCiAKICAgICAgICAgc3Bpbl9sb2Nr KCZ2bV9sb2NrKTsKIAotICAgICAgICBpZiAoIHN0YXJ0ID49IHZtX3RvcCApCisgICAgICAgIGlm ICggc3RhcnQgPj0gdm1fdG9wW3RdICkKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQg bG9uZyB2YSA9ICh1bnNpZ25lZCBsb25nKXZtX2JpdG1hcCArIHZtX3RvcCAvIDg7CisgICAgICAg ICAgICB1bnNpZ25lZCBsb25nIHZhID0gKHVuc2lnbmVkIGxvbmcpdm1fYml0bWFwKHQpICsgdm1f dG9wW3RdIC8gODsKIAogICAgICAgICAgICAgaWYgKCAhbWFwX3BhZ2VzX3RvX3hlbih2YSwgcGFn ZV90b19tZm4ocGcpLCAxLCBQQUdFX0hZUEVSVklTT1IpICkKICAgICAgICAgICAgIHsKICAgICAg ICAgICAgICAgICBjbGVhcl9wYWdlKCh2b2lkICopdmEpOwotICAgICAgICAgICAgICAgIHZtX3Rv cCArPSBQQUdFX1NJWkUgKiA4OwotICAgICAgICAgICAgICAgIGlmICggdm1fdG9wID4gdm1fZW5k ICkKLSAgICAgICAgICAgICAgICAgICAgdm1fdG9wID0gdm1fZW5kOworICAgICAgICAgICAgICAg IHZtX3RvcFt0XSArPSBQQUdFX1NJWkUgKiA4OworICAgICAgICAgICAgICAgIGlmICggdm1fdG9w W3RdID4gdm1fZW5kW3RdICkKKyAgICAgICAgICAgICAgICAgICAgdm1fdG9wW3RdID0gdm1fZW5k W3RdOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9 CiAKICAgICAgICAgZnJlZV9kb21oZWFwX3BhZ2UocGcpOwogCi0gICAgICAgIGlmICggc3RhcnQg Pj0gdm1fdG9wICkKKyAgICAgICAgaWYgKCBzdGFydCA+PSB2bV90b3BbdF0gKQogICAgICAgICB7 CiAgICAgICAgICAgICBzcGluX3VubG9jaygmdm1fbG9jayk7CiAgICAgICAgICAgICByZXR1cm4g TlVMTDsKQEAgLTEyMCw0NyArMTI3LDUxIEBAIHZvaWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBu ciwgdW5zaWduZWQgaW50IGFsaWduKQogICAgIH0KIAogICAgIGZvciAoIGJpdCA9IHN0YXJ0OyBi aXQgPCBzdGFydCArIG5yOyArK2JpdCApCi0gICAgICAgIF9fc2V0X2JpdChiaXQsIHZtX2JpdG1h cCk7Ci0gICAgaWYgKCBiaXQgPCB2bV90b3AgKQotICAgICAgICBBU1NFUlQoIXRlc3RfYml0KGJp dCwgdm1fYml0bWFwKSk7CisgICAgICAgIF9fc2V0X2JpdChiaXQsIHZtX2JpdG1hcCh0KSk7Cisg ICAgaWYgKCBiaXQgPCB2bV90b3BbdF0gKQorICAgICAgICBBU1NFUlQoIXRlc3RfYml0KGJpdCwg dm1fYml0bWFwKHQpKSk7CiAgICAgZWxzZQotICAgICAgICBBU1NFUlQoYml0ID09IHZtX3RvcCk7 Ci0gICAgaWYgKCBzdGFydCA8PSB2bV9sb3cgKyAyICkKLSAgICAgICAgdm1fbG93ID0gYml0Owor ICAgICAgICBBU1NFUlQoYml0ID09IHZtX3RvcFt0XSk7CisgICAgaWYgKCBzdGFydCA8PSB2bV9s b3dbdF0gKyAyICkKKyAgICAgICAgdm1fbG93W3RdID0gYml0OwogICAgIHNwaW5fdW5sb2NrKCZ2 bV9sb2NrKTsKIAotICAgIHJldHVybiB2bV9iYXNlICsgc3RhcnQgKiBQQUdFX1NJWkU7CisgICAg cmV0dXJuIHZtX2Jhc2VbdF0gKyBzdGFydCAqIFBBR0VfU0laRTsKIH0KIAotc3RhdGljIHVuc2ln bmVkIGludCB2bV9pbmRleChjb25zdCB2b2lkICp2YSkKK3N0YXRpYyB1bnNpZ25lZCBpbnQgdm1f aW5kZXgoY29uc3Qgdm9pZCAqdmEsIGVudW0gdm1hcF9yZWdpb24gdHlwZSkKIHsKICAgICB1bnNp Z25lZCBsb25nIGFkZHIgPSAodW5zaWduZWQgbG9uZyl2YSAmIH4oUEFHRV9TSVpFIC0gMSk7CiAg ICAgdW5zaWduZWQgaW50IGlkeDsKKyAgICB1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2lnbmVk IGxvbmcpdm1fYmFzZVt0eXBlXTsKIAotICAgIGlmICggYWRkciA8IFZNQVBfVklSVF9TVEFSVCAr ICh2bV9lbmQgLyA4KSB8fAotICAgICAgICAgYWRkciA+PSBWTUFQX1ZJUlRfU1RBUlQgKyB2bV90 b3AgKiBQQUdFX1NJWkUgKQorICAgIGlmICggIXN0YXJ0ICkKICAgICAgICAgcmV0dXJuIDA7CiAK LSAgICBpZHggPSBQRk5fRE9XTih2YSAtIHZtX2Jhc2UpOwotICAgIHJldHVybiAhdGVzdF9iaXQo aWR4IC0gMSwgdm1fYml0bWFwKSAmJgotICAgICAgICAgICB0ZXN0X2JpdChpZHgsIHZtX2JpdG1h cCkgPyBpZHggOiAwOworICAgIGlmICggYWRkciA8IHN0YXJ0ICsgKHZtX2VuZFt0eXBlXSAvIDgp IHx8CisgICAgICAgICBhZGRyID49IHN0YXJ0ICsgdm1fdG9wW3R5cGVdICogUEFHRV9TSVpFICkK KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZHggPSBQRk5fRE9XTih2YSAtIHZtX2Jhc2VbdHlw ZV0pOworICAgIHJldHVybiAhdGVzdF9iaXQoaWR4IC0gMSwgdm1fYml0bWFwKHR5cGUpKSAmJgor ICAgICAgICAgICB0ZXN0X2JpdChpZHgsIHZtX2JpdG1hcCh0eXBlKSkgPyBpZHggOiAwOwogfQog Ci1zdGF0aWMgdW5zaWduZWQgaW50IHZtX3NpemUoY29uc3Qgdm9pZCAqdmEpCitzdGF0aWMgdW5z aWduZWQgaW50IHZtX3NpemUoY29uc3Qgdm9pZCAqdmEsIGVudW0gdm1hcF9yZWdpb24gdHlwZSkK IHsKLSAgICB1bnNpZ25lZCBpbnQgc3RhcnQgPSB2bV9pbmRleCh2YSksIGVuZDsKKyAgICB1bnNp Z25lZCBpbnQgc3RhcnQgPSB2bV9pbmRleCh2YSwgdHlwZSksIGVuZDsKIAogICAgIGlmICggIXN0 YXJ0ICkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBlbmQgPSBmaW5kX25leHRfemVyb19iaXQo dm1fYml0bWFwLCB2bV90b3AsIHN0YXJ0ICsgMSk7CisgICAgZW5kID0gZmluZF9uZXh0X3plcm9f Yml0KHZtX2JpdG1hcCh0eXBlKSwgdm1fdG9wW3R5cGVdLCBzdGFydCArIDEpOwogCi0gICAgcmV0 dXJuIG1pbihlbmQsIHZtX3RvcCkgLSBzdGFydDsKKyAgICByZXR1cm4gbWluKGVuZCwgdm1fdG9w W3R5cGVdKSAtIHN0YXJ0OwogfQogCi12b2lkIHZtX2ZyZWUoY29uc3Qgdm9pZCAqdmEpCitzdGF0 aWMgdm9pZCB2bV9mcmVlX3R5cGUoY29uc3Qgdm9pZCAqdmEsIGVudW0gdm1hcF9yZWdpb24gdHlw ZSkKIHsKLSAgICB1bnNpZ25lZCBpbnQgYml0ID0gdm1faW5kZXgodmEpOworICAgIHVuc2lnbmVk IGludCBiaXQgPSB2bV9pbmRleCh2YSwgdHlwZSk7CiAKICAgICBpZiAoICFiaXQgKQogICAgIHsK QEAgLTE2OSwyOSArMTgwLDU0IEBAIHZvaWQgdm1fZnJlZShjb25zdCB2b2lkICp2YSkKICAgICB9 CiAKICAgICBzcGluX2xvY2soJnZtX2xvY2spOwotICAgIGlmICggYml0IDwgdm1fbG93ICkKKyAg ICBpZiAoIGJpdCA8IHZtX2xvd1t0eXBlXSApCiAgICAgewotICAgICAgICB2bV9sb3cgPSBiaXQg LSAxOwotICAgICAgICB3aGlsZSAoICF0ZXN0X2JpdCh2bV9sb3cgLSAxLCB2bV9iaXRtYXApICkK LSAgICAgICAgICAgIC0tdm1fbG93OworICAgICAgICB2bV9sb3dbdHlwZV0gPSBiaXQgLSAxOwor ICAgICAgICB3aGlsZSAoICF0ZXN0X2JpdCh2bV9sb3dbdHlwZV0gLSAxLCB2bV9iaXRtYXAodHlw ZSkpICkKKyAgICAgICAgICAgIC0tdm1fbG93W3R5cGVdOwogICAgIH0KLSAgICB3aGlsZSAoIF9f dGVzdF9hbmRfY2xlYXJfYml0KGJpdCwgdm1fYml0bWFwKSApCi0gICAgICAgIGlmICggKytiaXQg PT0gdm1fdG9wICkKKyAgICB3aGlsZSAoIF9fdGVzdF9hbmRfY2xlYXJfYml0KGJpdCwgdm1fYml0 bWFwKHR5cGUpKSApCisgICAgICAgIGlmICggKytiaXQgPT0gdm1fdG9wW3R5cGVdICkKICAgICAg ICAgICAgIGJyZWFrOwogICAgIHNwaW5fdW5sb2NrKCZ2bV9sb2NrKTsKIH0KIAordm9pZCB2bV9m cmVlKGNvbnN0IHZvaWQgKnZhKQoreworICAgIHZtX2ZyZWVfdHlwZSh2YSwgVk1BUF9ERUZBVUxU KTsKK30KKworc3RhdGljIHZvaWQgdnVubWFwX3R5cGUoY29uc3Qgdm9pZCAqdmEsIGVudW0gdm1h cF9yZWdpb24gdHlwZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgc2l6ZSA9IHZtX3NpemUodmEsIHR5 cGUpOworI2lmbmRlZiBfUEFHRV9OT05FCisgICAgdW5zaWduZWQgbG9uZyBhZGRyID0gKHVuc2ln bmVkIGxvbmcpdmE7CisKKyAgICBkZXN0cm95X3hlbl9tYXBwaW5ncyhhZGRyLCBhZGRyICsgUEFH RV9TSVpFICogc2l6ZSk7CisjZWxzZSAvKiBBdm9pZCB0ZWFyaW5nIGRvd24gaW50ZXJtZWRpYXRl IHBhZ2UgdGFibGVzLiAqLworICAgIG1hcF9wYWdlc190b194ZW4oKHVuc2lnbmVkIGxvbmcpdmEs IDAsIHNpemUsIF9QQUdFX05PTkUpOworI2VuZGlmCisgICAgdm1fZnJlZV90eXBlKHZhLCB0eXBl KTsKK30KKwordm9pZCB2dW5tYXAoY29uc3Qgdm9pZCAqdmEpCit7CisgICAgdnVubWFwX3R5cGUo dmEsIFZNQVBfREVGQVVMVCk7Cit9CisKKwogdm9pZCAqX192bWFwKGNvbnN0IG1mbl90ICptZm4s IHVuc2lnbmVkIGludCBncmFudWxhcml0eSwKLSAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbnIs IHVuc2lnbmVkIGludCBhbGlnbiwgdW5zaWduZWQgaW50IGZsYWdzKQorICAgICAgICAgICAgIHVu c2lnbmVkIGludCBuciwgdW5zaWduZWQgaW50IGFsaWduLCB1bnNpZ25lZCBpbnQgZmxhZ3MsCisg ICAgICAgICAgICAgZW51bSB2bWFwX3JlZ2lvbiB0eXBlKQogewotICAgIHZvaWQgKnZhID0gdm1f YWxsb2MobnIgKiBncmFudWxhcml0eSwgYWxpZ24pOworICAgIHZvaWQgKnZhID0gdm1fYWxsb2Nf dHlwZShuciAqIGdyYW51bGFyaXR5LCBhbGlnbiwgdHlwZSk7CiAgICAgdW5zaWduZWQgbG9uZyBj dXIgPSAodW5zaWduZWQgbG9uZyl2YTsKIAogICAgIGZvciAoIDsgdmEgJiYgbnItLTsgKyttZm4s IGN1ciArPSBQQUdFX1NJWkUgKiBncmFudWxhcml0eSApCiAgICAgewogICAgICAgICBpZiAoIG1h cF9wYWdlc190b194ZW4oY3VyLCBtZm5feCgqbWZuKSwgZ3JhbnVsYXJpdHksIGZsYWdzKSApCiAg ICAgICAgIHsKLSAgICAgICAgICAgIHZ1bm1hcCh2YSk7CisgICAgICAgICAgICB2dW5tYXBfdHlw ZSh2YSwgdHlwZSk7CiAgICAgICAgICAgICB2YSA9IE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBA IC0yMDEsMjIgKzIzNywxMCBAQCB2b2lkICpfX3ZtYXAoY29uc3QgbWZuX3QgKm1mbiwgdW5zaWdu ZWQgaW50IGdyYW51bGFyaXR5LAogCiB2b2lkICp2bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2ln bmVkIGludCBucikKIHsKLSAgICByZXR1cm4gX192bWFwKG1mbiwgMSwgbnIsIDEsIFBBR0VfSFlQ RVJWSVNPUik7Ci19Ci0KLXZvaWQgdnVubWFwKGNvbnN0IHZvaWQgKnZhKQotewotI2lmbmRlZiBf UEFHRV9OT05FCi0gICAgdW5zaWduZWQgbG9uZyBhZGRyID0gKHVuc2lnbmVkIGxvbmcpdmE7Ci0K LSAgICBkZXN0cm95X3hlbl9tYXBwaW5ncyhhZGRyLCBhZGRyICsgUEFHRV9TSVpFICogdm1fc2l6 ZSh2YSkpOwotI2Vsc2UgLyogQXZvaWQgdGVhcmluZyBkb3duIGludGVybWVkaWF0ZSBwYWdlIHRh Ymxlcy4gKi8KLSAgICBtYXBfcGFnZXNfdG9feGVuKCh1bnNpZ25lZCBsb25nKXZhLCAwLCB2bV9z aXplKHZhKSwgX1BBR0VfTk9ORSk7Ci0jZW5kaWYKLSAgICB2bV9mcmVlKHZhKTsKKyAgICByZXR1 cm4gX192bWFwKG1mbiwgMSwgbnIsIDEsIFBBR0VfSFlQRVJWSVNPUiwgVk1BUF9ERUZBVUxUKTsK IH0KIAotdm9pZCAqdm1hbGxvYyhzaXplX3Qgc2l6ZSkKK3N0YXRpYyB2b2lkICp2bWFsbG9jX3R5 cGUoc2l6ZV90IHNpemUsIGVudW0gdm1hcF9yZWdpb24gdHlwZSkKIHsKICAgICBtZm5fdCAqbWZu OwogICAgIHNpemVfdCBwYWdlcywgaTsKQEAgLTIzOCwxMSArMjYyLDEyIEBAIHZvaWQgKnZtYWxs b2Moc2l6ZV90IHNpemUpCiAgICAgICAgIG1mbltpXSA9IF9tZm4ocGFnZV90b19tZm4ocGcpKTsK ICAgICB9CiAKLSAgICB2YSA9IHZtYXAobWZuLCBwYWdlcyk7CisgICAgdmEgPSBfX3ZtYXAobWZu LCAxLCBwYWdlcywgMSwgUEFHRV9IWVBFUlZJU09SLCB0eXBlKTsKICAgICBpZiAoIHZhID09IE5V TEwgKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgeGZyZWUobWZuKTsKKwogICAgIHJldHVy biB2YTsKIAogIGVycm9yOgpAQCAtMjUyLDkgKzI3NywxOSBAQCB2b2lkICp2bWFsbG9jKHNpemVf dCBzaXplKQogICAgIHJldHVybiBOVUxMOwogfQogCi12b2lkICp2emFsbG9jKHNpemVfdCBzaXpl KQordm9pZCAqdm1hbGxvYyhzaXplX3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gdm1hbGxvY190eXBl KHNpemUsIFZNQVBfREVGQVVMVCk7Cit9CisKK3ZvaWQgKnZtYWxsb2NfeGVuKHNpemVfdCBzaXpl KQoreworICAgIHJldHVybiB2bWFsbG9jX3R5cGUoc2l6ZSwgVk1BUF9YRU4pOworfQorCitzdGF0 aWMgdm9pZCAqdnphbGxvY190eXBlKHNpemVfdCBzaXplLCBlbnVtIHZtYXBfcmVnaW9uIHR5cGUp CiB7Ci0gICAgdm9pZCAqcCA9IHZtYWxsb2Moc2l6ZSk7CisgICAgdm9pZCAqcCA9IHZtYWxsb2Nf dHlwZShzaXplLCB0eXBlKTsKICAgICBpbnQgaTsKIAogICAgIGlmICggcCA9PSBOVUxMICkKQEAg LTI2NiwxNiArMzAxLDMyIEBAIHZvaWQgKnZ6YWxsb2Moc2l6ZV90IHNpemUpCiAgICAgcmV0dXJu IHA7CiB9CiAKK3ZvaWQgKnZ6YWxsb2Moc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIHZ6YWxs b2NfdHlwZShzaXplLCBWTUFQX0RFRkFVTFQpOworfQorCit2b2lkICp2emFsbG9jX3hlbihzaXpl X3Qgc2l6ZSkKK3sKKyAgICByZXR1cm4gdnphbGxvY190eXBlKHNpemUsIFZNQVBfWEVOKTsKK30K Kwogdm9pZCB2ZnJlZSh2b2lkICp2YSkKIHsKICAgICB1bnNpZ25lZCBpbnQgaSwgcGFnZXM7CiAg ICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CiAgICAgUEFHRV9MSVNUX0hFQUQocGdfbGlzdCk7Cisg ICAgZW51bSB2bWFwX3JlZ2lvbiB0eXBlID0gVk1BUF9ERUZBVUxUOwogCiAgICAgaWYgKCAhdmEg KQogICAgICAgICByZXR1cm47CiAKLSAgICBwYWdlcyA9IHZtX3NpemUodmEpOworICAgIHBhZ2Vz ID0gdm1fc2l6ZSh2YSwgdHlwZSk7CisgICAgaWYgKCAhcGFnZXMgKQorICAgIHsKKyAgICAgICAg dHlwZSA9IFZNQVBfWEVOOworICAgICAgICBwYWdlcyA9IHZtX3NpemUodmEsIHR5cGUpOworICAg IH0KICAgICBBU1NFUlQocGFnZXMpOwogCiAgICAgZm9yICggaSA9IDA7IGkgPCBwYWdlczsgaSsr ICkKQEAgLTI4NSw3ICszMzYsNyBAQCB2b2lkIHZmcmVlKHZvaWQgKnZhKQogICAgICAgICBBU1NF UlQocGFnZSk7CiAgICAgICAgIHBhZ2VfbGlzdF9hZGQocGFnZSwgJnBnX2xpc3QpOwogICAgIH0K LSAgICB2dW5tYXAodmEpOworICAgIHZ1bm1hcF90eXBlKHZhLCB0eXBlKTsKIAogICAgIHdoaWxl ICggKHBnID0gcGFnZV9saXN0X3JlbW92ZV9oZWFkKCZwZ19saXN0KSkgIT0gTlVMTCApCiAgICAg ICAgIGZyZWVfZG9taGVhcF9wYWdlKHBnKTsKZGlmZiAtLWdpdCBhL3hlbi9kcml2ZXJzL2FjcGkv b3NsLmMgYi94ZW4vZHJpdmVycy9hY3BpL29zbC5jCmluZGV4IDhhMjhkODcuLjlhNDkwMjkgMTAw NjQ0Ci0tLSBhL3hlbi9kcml2ZXJzL2FjcGkvb3NsLmMKKysrIGIveGVuL2RyaXZlcnMvYWNwaS9v c2wuYwpAQCAtOTcsNyArOTcsNyBAQCBhY3BpX29zX21hcF9tZW1vcnkoYWNwaV9waHlzaWNhbF9h ZGRyZXNzIHBoeXMsIGFjcGlfc2l6ZSBzaXplKQogCQlpZiAoSVNfRU5BQkxFRChDT05GSUdfWDg2 KSAmJiAhKChwaHlzICsgc2l6ZSAtIDEpID4+IDIwKSkKIAkJCXJldHVybiBfX3ZhKHBoeXMpOwog CQlyZXR1cm4gX192bWFwKCZtZm4sIFBGTl9VUChvZmZzICsgc2l6ZSksIDEsIDEsCi0JCQkgICAg ICBBQ1BJX01BUF9NRU1fQVRUUikgKyBvZmZzOworCQkJICAgICAgQUNQSV9NQVBfTUVNX0FUVFIs IFZNQVBfREVGQVVMVCkgKyBvZmZzOwogCX0KIAlyZXR1cm4gX19hY3BpX21hcF90YWJsZShwaHlz LCBzaXplKTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi92bWFwLmggYi94ZW4vaW5j bHVkZS94ZW4vdm1hcC5oCmluZGV4IDU2NzFhYzguLjc2NWMwNmUgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL3hlbi92bWFwLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3ZtYXAuaApAQCAtNCwxNSAr NCwyNiBAQAogI2luY2x1ZGUgPHhlbi9tbS5oPgogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CiAKLXZv aWQgKnZtX2FsbG9jKHVuc2lnbmVkIGludCBuciwgdW5zaWduZWQgaW50IGFsaWduKTsKK2VudW0g dm1hcF9yZWdpb24geworICAgIFZNQVBfREVGQVVMVCwKKyAgICBWTUFQX1hFTiwKKyAgICBWTUFQ X1JFR0lPTl9OUiwKK307CisKK3ZvaWQgdm1faW5pdF90eXBlKGVudW0gdm1hcF9yZWdpb24gdHlw ZSwgdm9pZCAqc3RhcnQsIHZvaWQgKmVuZCk7CisKIHZvaWQgdm1fZnJlZShjb25zdCB2b2lkICop OwogCi12b2lkICpfX3ZtYXAoY29uc3QgbWZuX3QgKm1mbiwgdW5zaWduZWQgaW50IGdyYW51bGFy aXR5LAotICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuciwgdW5zaWduZWQgaW50IGFsaWduLCB1 bnNpZ25lZCBpbnQgZmxhZ3MpOwordm9pZCAqX192bWFwKGNvbnN0IG1mbl90ICptZm4sIHVuc2ln bmVkIGludCBncmFudWxhcml0eSwgdW5zaWduZWQgaW50IG5yLAorICAgICAgICAgICAgIHVuc2ln bmVkIGludCBhbGlnbiwgdW5zaWduZWQgaW50IGZsYWdzLCBlbnVtIHZtYXBfcmVnaW9uKTsKIHZv aWQgKnZtYXAoY29uc3QgbWZuX3QgKm1mbiwgdW5zaWduZWQgaW50IG5yKTsKIHZvaWQgdnVubWFw KGNvbnN0IHZvaWQgKik7CisKIHZvaWQgKnZtYWxsb2Moc2l6ZV90IHNpemUpOwordm9pZCAqdm1h bGxvY194ZW4oc2l6ZV90IHNpemUpOworCiB2b2lkICp2emFsbG9jKHNpemVfdCBzaXplKTsKK3Zv aWQgKnZ6YWxsb2NfeGVuKHNpemVfdCBzaXplKTsKIHZvaWQgdmZyZWUodm9pZCAqdmEpOwogCiB2 b2lkIF9faW9tZW0gKmlvcmVtYXAocGFkZHJfdCwgc2l6ZV90KTsKQEAgLTI0LDcgKzM1LDEwIEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBpb3VubWFwKHZvaWQgX19pb21lbSAqdmEpCiAgICAgdnVubWFw KCh2b2lkICopKGFkZHIgJiBQQUdFX01BU0spKTsKIH0KIAotdm9pZCB2bV9pbml0KHZvaWQpOwog dm9pZCAqYXJjaF92bWFwX3ZpcnRfZW5kKHZvaWQpOworc3RhdGljIGlubGluZSB2b2lkIHZtX2lu aXQodm9pZCkKK3sKKyAgICB2bV9pbml0X3R5cGUoVk1BUF9ERUZBVUxULCAodm9pZCAqKVZNQVBf VklSVF9TVEFSVCwgYXJjaF92bWFwX3ZpcnRfZW5kKCkpOworfQogCiAjZW5kaWYgLyogX19YRU5f Vk1BUF9IX18gKi8KLS0gCjIuNS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVu Lm9yZwpodHRwOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK