From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhang Subject: Re: [PATCH v12 5/6] x86/ioreq server: Asynchronously reset outstanding p2m_ioreq_server entries. Date: Fri, 7 Apr 2017 22:05:06 +0800 Message-ID: <58E79C92.8070703@linux.intel.com> References: <1491494017-30743-1-git-send-email-yu.c.zhang@linux.intel.com> <1491494017-30743-6-git-send-email-yu.c.zhang@linux.intel.com> <58E77AAB020000780014E68E@prv-mh.provo.novell.com> <58E7619F.3020607@linux.intel.com> <58E7856E020000780014E720@prv-mh.provo.novell.com> <58E77034.6050602@linux.intel.com> <58E794C6020000780014E80F@prv-mh.provo.novell.com> <99766d03-7d8f-f9ad-d530-a0db6fe6439f@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <99766d03-7d8f-f9ad-d530-a0db6fe6439f@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: George Dunlap , Jan Beulich Cc: Kevin Tian , George Dunlap , Andrew Cooper , xen-devel@lists.xen.org, Paul Durrant , zhiyuan.lv@intel.com, Jun Nakajima List-Id: xen-devel@lists.xenproject.org CgpPbiA0LzcvMjAxNyA5OjU2IFBNLCBHZW9yZ2UgRHVubGFwIHdyb3RlOgo+IE9uIDA3LzA0LzE3 IDEyOjMxLCBKYW4gQmV1bGljaCB3cm90ZToKPj4+Pj4gT24gMDcuMDQuMTcgYXQgMTI6NTUsIDx5 dS5jLnpoYW5nQGxpbnV4LmludGVsLmNvbT4gd3JvdGU6Cj4+PiBPbiA0LzcvMjAxNyA2OjI2IFBN LCBKYW4gQmV1bGljaCB3cm90ZToKPj4+Pj4+PiBPbiAwNy4wNC4xNyBhdCAxMTo1MywgPHl1LmMu emhhbmdAbGludXguaW50ZWwuY29tPiB3cm90ZToKPj4+Pj4gT24gNC83LzIwMTcgNTo0MCBQTSwg SmFuIEJldWxpY2ggd3JvdGU6Cj4+Pj4+Pj4+PiBPbiAwNi4wNC4xNyBhdCAxNzo1MywgPHl1LmMu emhhbmdAbGludXguaW50ZWwuY29tPiB3cm90ZToKPj4+Pj4+PiBAQCAtOTY1LDcgKzk4Nyw3IEBA IHN0YXRpYyBtZm5fdCBlcHRfZ2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCj4+Pj4+ Pj4gICAgICAgICBpZiAoIGlzX2VwdGVfdmFsaWQoZXB0X2VudHJ5KSApCj4+Pj4+Pj4gICAgICAg ICB7Cj4+Pj4+Pj4gICAgICAgICAgICAgaWYgKCAocmVjYWxjIHx8IGVwdF9lbnRyeS0+cmVjYWxj KSAmJgo+Pj4+Pj4+IC0gICAgICAgICAgICAgcDJtX2lzX2NoYW5nZWFibGUoZXB0X2VudHJ5LT5z YV9wMm10KSApCj4+Pj4+Pj4gKyAgICAgICAgICAgICBwMm1fY2hlY2tfY2hhbmdlYWJsZShlcHRf ZW50cnktPnNhX3AybXQpICkKPj4+Pj4+IEkgdGhpbmsgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4g dGhlc2UgdHdvIGlzIHJhdGhlciBhcmJpdHJhcnksIGFuZCBJCj4+Pj4+PiBhbHNvIHRoaW5rIHRo aXMgaXMgcGFydCBvZiB0aGUgcHJvYmxlbSBhYm92ZTogRGlzdGluZ3Vpc2hpbmcgbG9nLWRpcnR5 Cj4+Pj4+PiBmcm9tIHJhbS1ydyByZXF1aXJlcyBhdXhpbGlhcnkgZGF0YSB0byBiZSBjb25zdWx0 ZWQuIFRoZSBzYW1lCj4+Pj4+PiBvdWdodCB0byBhcHBseSB0byBpb3JlcS1zZXJ2ZXIsIGFuZCB0 aGVuIHRoZXJlIHdvdWxkbid0IGJlIGEgbmVlZAo+Pj4+Pj4gdG8gaGF2ZSB0d28gcDJtXypfY2hh bmdlYWJsZSgpIGZsYXZvcnMuCj4+Pj4+IFdlbGwsIEkgdGhpbmsgd2UgaGF2ZSBhbHNvIGRpc2N1 c3NlZCB0aGlzIHF1aXRlIGxvbmcgYWdvLCBoZXJlIGlzIHRoZSBsaW5rLgo+Pj4+PiBodHRwczov L2xpc3RzLnhlbi5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwvMjAxNi0wOS9tc2cwMTAxNy5o dG1sCj4+Pj4gVGhhdCB3YXMgYSBkaWZmZXJlbnQgZGlzY3Vzc2lvbiwgbmFtZWx5IG5vdCBjb25z aWRlcmluZyB0aGlzIC4uLgo+Pj4+Cj4+Pj4+PiBPZiBjb3Vyc2UgdGhlIHN1YnNlcXVlbnQgdXNl IHAybV9pc19sb2dkaXJ0eV9yYW5nZSgpIG1heSB0aGVuCj4+Pj4+PiBuZWVkIGFtZW5kaW5nLgo+ Pj4+Pj4KPj4+Pj4+IEluIHRoZSBlbmQgaXQgbG9va3MgbGlrZSB5b3UgaGF2ZSB0aGUgaW52ZXJz ZSBwcm9ibGVtIGhlcmUgY29tcGFyZWQKPj4+Pj4+IHRvIGFib3ZlOiBZb3Ugc2hvdWxkIHJldHVy biByYW0tcncgd2hlbiB0aGUgcmVzZXQgd2FzIGFscmVhZHkKPj4+Pj4+IGluaXRpYXRlZC4gQXQg bGVhc3QgdGhhdCdzIGhvdyBJIHdvdWxkIHNlZSB0aGUgbG9naWMgdG8gbWF0Y2ggdXAgd2l0aAo+ Pj4+Pj4gdGhlIGxvZy1kaXJ0eSBoYW5kbGluZyAod2hlcmUgdGhlIF9lZmZlY3RpdmVfIHJhdGhl ciB0aGFuIHRoZSBsYXN0Cj4+Pj4+PiBzdG9yZWQgdHlwZSBpcyBiZWluZyByZXR1cm5lZCkuCj4+ Pj4gLi4uIGF0IGFsbC4KPj4+IFNvcnJ5IEkgc3RpbGwgZG8gbm90IGdldCBpdC4KPj4gTGVhdmlu ZyBpb3JlcS1zZXJ2ZXIgb3V0IG9mIHRoZSBwaWN0dXJlLCB3aGF0IHRoZSBmdW5jdGlvbiByZXR1 cm5zCj4+IHRvIHRoZSBjYWxsZXIgaXMgdGhlIHR5cGUgYXMgaXQgd291bGQgYmUgaWYgYSByZS1j YWxjdWxhdGlvbiB3b3VsZCBoYXZlCj4+IGJlZW4gZG9uZSBvbiB0aGUgZW50cnksIGV2ZW4gaWYg dGhhdCBoYXNuJ3QgaGFwcGVuZWQgeWV0ICh0aGUKPj4gZnVuY3Rpb24gaGVyZSBzaG91bGRuJ3Qg Y2hhbmdlIGFueSBlbnRyaWVzIGFmdGVyIGFsbCkuIEkgdGhpbmsgd2UKPj4gd2FudCB0aGUgc2Ft ZSBiZWhhdmlvciBoZXJlIGZvciB3aGF0IGhhdmUgYmVlbiBpb3JlcS1zZXJ2ZXIKPj4gZW50cmll cyAoYW5kIHdoaWNoIHdvdWxkIGJlY29tZSByYW0tcncgYWZ0ZXIgdGhlIG5leHQgcmUtY2FsYyku Cj4gSG93IGFib3V0IHNvbWV0aGluZyBsaWtlIHRoZSBhdHRhY2hlZD8gKEluLWxpbmVkIGZvciBj b252ZW5pZW5jZS4pCj4KPiAgIC1HZW9yZ2UKPgo+IEFmdGVyIGFuIGlvcmVxIHNlcnZlciBoYXMg dW5tYXBwZWQsIHRoZSByZW1haW5pbmcgcDJtX2lvcmVxX3NlcnZlcgo+IGVudHJpZXMgbmVlZCB0 byBiZSByZXNldCBiYWNrIHRvIHAybV9yYW1fcncuIFRoaXMgcGF0Y2ggZG9lcyB0aGlzCj4gYXN5 bmNocm9ub3VzbHkgd2l0aCB0aGUgY3VycmVudCBwMm1fY2hhbmdlX2VudHJ5X3R5cGVfZ2xvYmFs KCkKPiBpbnRlcmZhY2UuCj4KPiBOZXcgZmllbGQgZW50cnlfY291bnQgaXMgaW50cm9kdWNlZCBp biBzdHJ1Y3QgcDJtX2RvbWFpbiwgdG8gcmVjb3JkCj4gdGhlIG51bWJlciBvZiBwMm1faW9yZXFf c2VydmVyIHAybSBwYWdlIHRhYmxlIGVudHJpZXMuIE9uZSBuYXR1cmUgb2YKPiB0aGVzZSBlbnRy aWVzIGlzIHRoYXQgdGhleSBvbmx5IHBvaW50IHRvIDRLIHNpemVkIHBhZ2UgZnJhbWVzLCBiZWNh dXNlCj4gYWxsIHAybV9pb3JlcV9zZXJ2ZXIgZW50cmllcyBhcmUgb3JpZ2luYXRlZCBmcm9tIHAy bV9yYW1fcncgb25lcyBpbgo+IHAybV9jaGFuZ2VfdHlwZV9vbmUoKS4gV2UgZG8gbm90IG5lZWQg dG8gd29ycnkgYWJvdXQgdGhlIGNvdW50aW5nIGZvcgo+IDJNLzFHIHNpemVkIHBhZ2VzLgo+Cj4g VGhpcyBwYXRjaCBkaXNhbGxvd3MgbWFwcGluZyBvZiBhbiBpb3JlcSBzZXJ2ZXIsIHdoZW4gdGhl cmUncyBzdGlsbAo+IHAybV9pb3JlcV9zZXJ2ZXIgZW50cnkgbGVmdCwgaW4gY2FzZSBhbm90aGVy IG1hcHBpbmcgb2NjdXJzIHJpZ2h0IGFmdGVyCj4gdGhlIGN1cnJlbnQgb25lIGJlaW5nIHVubWFw cGVkLCByZWxlYXNlcyBpdHMgbG9jaywgd2l0aCBwMm0gdGFibGUgbm90Cj4gc3luY2VkIHlldC4K Pgo+IFRoaXMgcGF0Y2ggYWxzbyBkaXNhbGxvd3MgbGl2ZSBtaWdyYXRpb24sIHdoZW4gdGhlcmUn cyByZW1haW5pbmcKPiBwMm1faW9yZXFfc2VydmVyIGVudHJ5IGluIHAybSB0YWJsZS4gVGhlIGNv cmUgcmVhc29uIGlzIG91ciBjdXJyZW50Cj4gaW1wbGVtZW50YXRpb24gb2YgcDJtX2NoYW5nZV9l bnRyeV90eXBlX2dsb2JhbCgpIGxhY2tzIGluZm9ybWF0aW9uCj4gdG8gcmVzeW5jIHAybV9pb3Jl cV9zZXJ2ZXIgZW50cmllcyBjb3JyZWN0bHkgaWYgZ2xvYmFsX2xvZ2RpcnR5IGlzCj4gb24uCj4K PiBXZSBzdGlsbCBuZWVkIHRvIGhhbmRsZSBvdGhlciByZWNhbGN1bGF0aW9ucywgaG93ZXZlcjsg d2hpY2ggbWVhbnMKPiB0aGF0IHdoZW4gZG9pbmcgYSByZWNhbGN1bGF0aW9uLCBpZiB0aGUgY3Vy cmVudCB0eXBlIGlzCj4gcDJtX2lvcmVxX3NlcnZlciwgd2UgY2hlY2sgdG8gc2VlIGlmIHAybS0+ aW9yZXEuc2VydmVyIGlzIHZhbGlkIG9yCj4gbm90LiAgSWYgaXQgaXMsIHdlIGxlYXZlIGl0IGFz IHR5cGUgcDJtX2lvcmVxX3NlcnZlcjsgaWYgbm90LCB3ZSByZXNldAo+IGl0IHRvIHAybV9yYW0g YXMgYXBwcm9wcmlhdGUuCj4KPiBUbyBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLCBsaWZ0IHJlY2Fs Y190eXBlKCkgb3V0IG9mIHAybS1wdC5jIGFuZCB1c2UKPiBpdCBmb3IgYWxsIHR5cGUgcmVjYWxj dWxhdGlvbnMgKGJvdGggaW4gcDJtLXB0LmMgYW5kIHAybS1lcHQuYykuCj4KPiBTaWduZWQtb2Zm LWJ5OiBZdSBaaGFuZyA8eXUuYy56aGFuZ0BsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1i eTogR2VvcmdlIER1bmxhcCA8Z2VvcmdlLmR1bmxhcEBjaXRyaXguY29tPgo+IFJldmlld2VkLWJ5 OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFudEBjaXRyaXguY29tPgo+IC0tLQo+ICAgeGVuL2Fy Y2gveDg2L2h2bS9pb3JlcS5jICB8ICA4ICsrKysrKwo+ICAgeGVuL2FyY2gveDg2L21tL2hhcC9o YXAuYyB8ICA5ICsrKysrKwo+ICAgeGVuL2FyY2gveDg2L21tL3AybS1lcHQuYyB8IDczCj4gKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KPiAgIHhlbi9hcmNo L3g4Ni9tbS9wMm0tcHQuYyAgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tCj4gICB4ZW4vYXJjaC94ODYvbW0vcDJtLmMgICAgIHwgIDkgKysrKysrCj4gICB4ZW4vaW5j bHVkZS9hc20teDg2L3AybS5oIHwgMjYgKysrKysrKysrKysrKysrKy0KPiAgIDYgZmlsZXMgY2hh bmdlZCwgMTM1IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYyBiL3hlbi9hcmNoL3g4Ni9odm0vaW9yZXEuYwo+IGlu ZGV4IDViZjNiNmQuLjA3YTZjMjYgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pb3Jl cS5jCj4gKysrIGIveGVuL2FyY2gveDg2L2h2bS9pb3JlcS5jCj4gQEAgLTk1NSw2ICs5NTUsMTQg QEAgaW50IGh2bV9tYXBfbWVtX3R5cGVfdG9faW9yZXFfc2VydmVyKHN0cnVjdCBkb21haW4KPiAq ZCwgaW9zZXJ2aWRfdCBpZCwKPgo+ICAgICAgIHNwaW5fdW5sb2NrX3JlY3Vyc2l2ZSgmZC0+YXJj aC5odm1fZG9tYWluLmlvcmVxX3NlcnZlci5sb2NrKTsKPgo+ICsgICAgaWYgKCByYyA9PSAwICYm IGZsYWdzID09IDAgKQo+ICsgICAgewo+ICsgICAgICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0g PSBwMm1fZ2V0X2hvc3RwMm0oZCk7Cj4gKwo+ICsgICAgICAgIGlmICggcmVhZF9hdG9taWMoJnAy bS0+aW9yZXEuZW50cnlfY291bnQpICkKPiArICAgICAgICAgICAgcDJtX2NoYW5nZV9lbnRyeV90 eXBlX2dsb2JhbChkLCBwMm1faW9yZXFfc2VydmVyLCBwMm1fcmFtX3J3KTsKPiArICAgIH0KPiAr Cj4gICAgICAgcmV0dXJuIHJjOwo+ICAgfQo+Cj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9t bS9oYXAvaGFwLmMgYi94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCj4gaW5kZXggYTU3YjM4NS4u NGI1OTFmZSAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vaGFwL2hhcC5jCj4gKysrIGIv eGVuL2FyY2gveDg2L21tL2hhcC9oYXAuYwo+IEBAIC0xODcsNiArMTg3LDE1IEBAIG91dDoKPiAg ICAqLwo+ICAgc3RhdGljIGludCBoYXBfZW5hYmxlX2xvZ19kaXJ0eShzdHJ1Y3QgZG9tYWluICpk LCBib29sX3QgbG9nX2dsb2JhbCkKPiAgIHsKPiArICAgIHN0cnVjdCBwMm1fZG9tYWluICpwMm0g PSBwMm1fZ2V0X2hvc3RwMm0oZCk7Cj4gKwo+ICsgICAgLyoKPiArICAgICAqIFJlZnVzZSB0byB0 dXJuIG9uIGdsb2JhbCBsb2ctZGlydHkgbW9kZSBpZgo+ICsgICAgICogdGhlcmUgYXJlIG91dHN0 YW5kaW5nIHAybV9pb3JlcV9zZXJ2ZXIgcGFnZXMuCj4gKyAgICAgKi8KPiArICAgIGlmICggbG9n X2dsb2JhbCAmJiByZWFkX2F0b21pYygmcDJtLT5pb3JlcS5lbnRyeV9jb3VudCkgKQo+ICsgICAg ICAgIHJldHVybiAtRUJVU1k7Cj4gKwo+ICAgICAgIC8qIHR1cm4gb24gUEdfbG9nX2RpcnR5IGJp dCBpbiBwYWdpbmcgbW9kZSAqLwo+ICAgICAgIHBhZ2luZ19sb2NrKGQpOwo+ICAgICAgIGQtPmFy Y2gucGFnaW5nLm1vZGUgfD0gUEdfbG9nX2RpcnR5Owo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvbW0vcDJtLWVwdC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwo+IGluZGV4IGNjMWVi MjEuLjlmNDEwNjcgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gveDg2L21tL3AybS1lcHQuYwo+ICsr KyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0tZXB0LmMKPiBAQCAtNTMzLDYgKzUzMyw3IEBAIHN0YXRp YyBpbnQgcmVzb2x2ZV9taXNjb25maWcoc3RydWN0IHAybV9kb21haW4gKnAybSwKPiB1bnNpZ25l ZCBsb25nIGdmbikKPiAgICAgICAgICAgICAgIHsKPiAgICAgICAgICAgICAgICAgICBmb3IgKCBn Zm4gLT0gaSwgaSA9IDA7IGkgPCBFUFRfUEFHRVRBQkxFX0VOVFJJRVM7ICsraSApCj4gICAgICAg ICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgICAgIHAybV90eXBlX3QgbnQ7Cj4gICAg ICAgICAgICAgICAgICAgICAgIGUgPSBhdG9taWNfcmVhZF9lcHRfZW50cnkoJmVwdGVbaV0pOwo+ ICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGUuZW10ID09IE1UUlJfTlVNX1RZUEVTICkKPiAg ICAgICAgICAgICAgICAgICAgICAgICAgIGUuZW10ID0gMDsKPiBAQCAtNTQyLDEwICs1NDMsMTUg QEAgc3RhdGljIGludCByZXNvbHZlX21pc2NvbmZpZyhzdHJ1Y3QgcDJtX2RvbWFpbgo+ICpwMm0s IHVuc2lnbmVkIGxvbmcgZ2ZuKQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBfbWZuKGUubWZuKSwgMCwgJmlwYXQsCj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2FfcDJtdCA9PQo+IHAybV9tbWlvX2Rp cmVjdCk7Cj4gICAgICAgICAgICAgICAgICAgICAgIGUuaXBhdCA9IGlwYXQ7Cj4gLSAgICAgICAg ICAgICAgICAgICAgaWYgKCBlLnJlY2FsYyAmJiBwMm1faXNfY2hhbmdlYWJsZShlLnNhX3AybXQp ICkKPiAtICAgICAgICAgICAgICAgICAgICB7Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICBl LnNhX3AybXQgPSBwMm1faXNfbG9nZGlydHlfcmFuZ2UocDJtLCBnZm4gKwo+IGksIGdmbiArIGkp Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHAybV9yYW1fbG9nZGly dHkgOiBwMm1fcmFtX3J3Owo+ICsgICAgICAgICAgICAgICAgICAgIG50ID0gcDJtX3JlY2FsY190 eXBlKGUucmVjYWxjLCBlLnNhX3AybXQsIHAybSwgZ2ZuCj4gKyBpKTsKPiArICAgICAgICAgICAg ICAgICAgICBpZiAoIG50ICE9IGUuc2FfcDJtdCApIHsKPiArICAgICAgICAgICAgICAgICAgICAg ICAgIGlmICggZS5zYV9wMm10ID09IHAybV9pb3JlcV9zZXJ2ZXIgKQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwMm0t PmlvcmVxLmVudHJ5X2NvdW50ID4gMCk7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cDJtLT5pb3JlcS5lbnRyeV9jb3VudC0tOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ ICsKPiArICAgICAgICAgICAgICAgICAgICAgICAgIGUuc2FfcDJtdCA9IG50Owo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVwdF9wMm1fdHlwZV90b19mbGFncyhwMm0sICZlLCBlLnNhX3Ay bXQsCj4gZS5hY2Nlc3MpOwo+ICAgICAgICAgICAgICAgICAgICAgICB9Cj4gICAgICAgICAgICAg ICAgICAgICAgIGUucmVjYWxjID0gMDsKPiBAQCAtNTYyLDIzICs1NjgsMjQgQEAgc3RhdGljIGlu dCByZXNvbHZlX21pc2NvbmZpZyhzdHJ1Y3QgcDJtX2RvbWFpbgo+ICpwMm0sIHVuc2lnbmVkIGxv bmcgZ2ZuKQo+Cj4gICAgICAgICAgICAgICAgICAgaWYgKCByZWNhbGMgJiYgcDJtX2lzX2NoYW5n ZWFibGUoZS5zYV9wMm10KSApCj4gICAgICAgICAgICAgICAgICAgewo+IC0gICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBsb25nIG1hc2sgPSB+MFVMIDw8IChsZXZlbCAqCj4gRVBUX1RBQkxF X09SREVSKTsKPiAtCj4gLSAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoIHAybV9pc19sb2dk aXJ0eV9yYW5nZShwMm0sIGdmbiAmIG1hc2ssCj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZm4gfCB+bWFzaykgKQo+IC0gICAgICAgICAgICAg ICAgICAgICB7Cj4gLSAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICBlLnNhX3AybXQgPSBwMm1fcmFtX3J3Owo+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgIGUucmVjYWxjID0gMDsKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsKPiAtICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgIGUuc2FfcDJtdCA9IHAybV9yYW1fbG9nZGlydHk7Cj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgZS5yZWNhbGMgPSAwOwo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr Owo+IC0gICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiAvKiBGb3JjZSBzcGxpdC4gKi8KPiAt ICAgICAgICAgICAgICAgICAgICAgICAgICBlbXQgPSAtMTsKPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsKPiAtICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGxvbmcgbWFzayA9IH4wVUwgPDwgKGxldmVsICogRVBUX1RBQkxFX09S REVSKTsKPiArCj4gKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGUuc2FfcDJtdCAhPSBwMm1f aW9yZXFfc2VydmVyKTsKPiArICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKCBwMm1faXNfbG9n ZGlydHlfcmFuZ2UocDJtLCBnZm4gJiBtYXNrLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnZm4gfCB+bWFzaykgKQo+ICsgICAgICAgICAgICAg ICAgICAgIHsKPiArICAgICAgICAgICAgICAgICAgICBjYXNlIDA6Cj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIGUuc2FfcDJtdCA9IHAybV9yYW1fcnc7Cj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIGUucmVjYWxjID0gMDsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAg ICAgICAgICAgICAgICAgICAgY2FzZSAxOgo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlLnNh X3AybXQgPSBwMm1fcmFtX2xvZ2RpcnR5Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICBlLnJl Y2FsYyA9IDA7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgICAg ICAgICAgICAgIGRlZmF1bHQ6IC8qIEZvcmNlIHNwbGl0LiAqLwo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBlbXQgPSAtMTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAg ICAgICAgICAgICAgICAgICAgfQoKClNvIGhlcmUgSSBndWVzcyBvbmx5IHRoZSAiQVNTRVJUKGUu c2FfcDJtdCAhPSBwMm1faW9yZXFfc2VydmVyKTsiIGlzIApuZXcsIHJpZ2h0PwpUaGFua3MgR2Vv cmdlLCBpdCdzIGdyZWF0IHRvIGtub3cgeW91ciBoZWxwZXIgcm91dGluZSB3b3JrcyBhbHNvIGZv ciB0aGUgCk5QVC4KCll1Cgo+ICAgICAgICAgICAgICAgICAgIH0KPiAgICAgICAgICAgICAgICAg ICBpZiAoIHVubGlrZWx5KGVtdCA8IDApICkKPiAgICAgICAgICAgICAgICAgICB7Cj4gQEAgLTgx Niw2ICs4MjMsMjIgQEAgZXB0X3NldF9lbnRyeShzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLCB1bnNp Z25lZCBsb25nCj4gZ2ZuLCBtZm5fdCBtZm4sCj4gICAgICAgICAgIG5ld19lbnRyeS5zdXBwcmVz c192ZSA9IGlzX2VwdGVfdmFsaWQoJm9sZF9lbnRyeSkgPwo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgb2xkX2VudHJ5LnN1cHByZXNzX3ZlIDogMTsKPgo+ICsgICAgLyoK PiArICAgICAqIHAybV9pb3JlcV9zZXJ2ZXIgaXMgb25seSB1c2VkIGZvciA0SyBwYWdlcywgc28g dGhlCj4gKyAgICAgKiBjb3VudCBzaGFsbCBvbmx5IGhhcHBlbiBvbiBlcHQgcGFnZSB0YWJsZSBl bnRyaWVzLgo+ICsgICAgICovCj4gKyAgICBpZiAoIHAybXQgPT0gcDJtX2lvcmVxX3NlcnZlciAp Cj4gKyAgICB7Cj4gKyAgICAgICAgQVNTRVJUKGkgPT0gMCk7Cj4gKyAgICAgICAgcDJtLT5pb3Jl cS5lbnRyeV9jb3VudCsrOwo+ICsgICAgfQo+ICsKPiArICAgIGlmICggZXB0X2VudHJ5LT5zYV9w Mm10ID09IHAybV9pb3JlcV9zZXJ2ZXIgKQo+ICsgICAgewo+ICsgICAgICAgIEFTU0VSVChwMm0t PmlvcmVxLmVudHJ5X2NvdW50ID4gMCAmJiBpID09IDApOwo+ICsgICAgICAgIHAybS0+aW9yZXEu ZW50cnlfY291bnQtLTsKPiArICAgIH0KPiArCj4gICAgICAgcmMgPSBhdG9taWNfd3JpdGVfZXB0 X2VudHJ5KGVwdF9lbnRyeSwgbmV3X2VudHJ5LCB0YXJnZXQpOwo+ICAgICAgIGlmICggdW5saWtl bHkocmMpICkKPiAgICAgICAgICAgb2xkX2VudHJ5LmVwdGUgPSAwOwo+IEBAIC05NjQsMTIgKzk4 Nyw4IEBAIHN0YXRpYyBtZm5fdCBlcHRfZ2V0X2VudHJ5KHN0cnVjdCBwMm1fZG9tYWluICpwMm0s Cj4KPiAgICAgICBpZiAoIGlzX2VwdGVfdmFsaWQoZXB0X2VudHJ5KSApCj4gICAgICAgewo+IC0g ICAgICAgIGlmICggKHJlY2FsYyB8fCBlcHRfZW50cnktPnJlY2FsYykgJiYKPiAtICAgICAgICAg ICAgIHAybV9pc19jaGFuZ2VhYmxlKGVwdF9lbnRyeS0+c2FfcDJtdCkgKQo+IC0gICAgICAgICAg ICAqdCA9IHAybV9pc19sb2dkaXJ0eV9yYW5nZShwMm0sIGdmbiwgZ2ZuKSA/IHAybV9yYW1fbG9n ZGlydHkKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiBwMm1fcmFtX3J3Owo+IC0gICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgKnQgPSBl cHRfZW50cnktPnNhX3AybXQ7Cj4gKyAgICAgICAgKnQgPSBwMm1fcmVjYWxjX3R5cGUocmVjYWxj IHx8IGVwdF9lbnRyeS0+cmVjYWxjLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVw dF9lbnRyeS0+c2FfcDJtdCwgcDJtLCBnZm4pOwo+ICAgICAgICAgICAqYSA9IGVwdF9lbnRyeS0+ YWNjZXNzOwo+ICAgICAgICAgICBpZiAoIHN2ZSApCj4gICAgICAgICAgICAgICAqc3ZlID0gZXB0 X2VudHJ5LT5zdXBwcmVzc192ZTsKPiBkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L21tL3AybS1w dC5jIGIveGVuL2FyY2gveDg2L21tL3AybS1wdC5jCj4gaW5kZXggYzAwNTVmMy4uZTQ4MWY1MyAx MDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvbW0vcDJtLXB0LmMKPiArKysgYi94ZW4vYXJjaC94 ODYvbW0vcDJtLXB0LmMKPiBAQCAtMzg5LDYgKzM4OSw3IEBAIHN0YXRpYyBpbnQgZG9fcmVjYWxj KHN0cnVjdCBwMm1fZG9tYWluICpwMm0sCj4gdW5zaWduZWQgbG9uZyBnZm4pCj4gICAgICAgICAg IHsKPiAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFzayA9IH4wVUwgPDwgKGxldmVsICog UEFHRVRBQkxFX09SREVSKTsKPgo+ICsgICAgICAgICAgICBBU1NFUlQocDJtX2ZsYWdzX3RvX3R5 cGUobDFlX2dldF9mbGFncygqcGVudCkpICE9Cj4gcDJtX2lvcmVxX3NlcnZlcik7Cj4gICAgICAg ICAgICAgICBpZiAoICFuZWVkc19yZWNhbGMobDEsICpwZW50KSB8fAo+Cj4gIXAybV9pc19jaGFu Z2VhYmxlKHAybV9mbGFnc190b190eXBlKGwxZV9nZXRfZmxhZ3MoKnBlbnQpKSkgfHwKPiAgICAg ICAgICAgICAgICAgICAgcDJtX2lzX2xvZ2RpcnR5X3JhbmdlKHAybSwgZ2ZuICYgbWFzaywgZ2Zu IHwgfm1hc2spID49IDAgKQo+IEBAIC00MzYsMTcgKzQzNywxOCBAQCBzdGF0aWMgaW50IGRvX3Jl Y2FsYyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAo+IHVuc2lnbmVkIGxvbmcgZ2ZuKQo+ICAgICAg ICAgICAgbmVlZHNfcmVjYWxjKGwxLCAqcGVudCkgKQo+ICAgICAgIHsKPiAgICAgICAgICAgbDFf cGdlbnRyeV90IGUgPSAqcGVudDsKPiArICAgICAgICBwMm1fdHlwZV90IG90LCBudDsKPiArICAg ICAgICB1bnNpZ25lZCBsb25nIG1hc2sgPSB+MFVMIDw8IChsZXZlbCAqIFBBR0VUQUJMRV9PUkRF Uik7Cj4KPiAgICAgICAgICAgaWYgKCAhdmFsaWRfcmVjYWxjKGwxLCBlKSApCj4gICAgICAgICAg ICAgICBQMk1fREVCVUcoImJvZ3VzIHJlY2FsYyBsZWFmIGF0IGQlZDolbHg6JXVcbiIsCj4gICAg ICAgICAgICAgICAgICAgICAgICAgcDJtLT5kb21haW4tPmRvbWFpbl9pZCwgZ2ZuLCBsZXZlbCk7 Cj4gLSAgICAgICAgaWYgKCBwMm1faXNfY2hhbmdlYWJsZShwMm1fZmxhZ3NfdG9fdHlwZShsMWVf Z2V0X2ZsYWdzKGUpKSkgKQo+ICsgICAgICAgIG90ID0gcDJtX2ZsYWdzX3RvX3R5cGUobDFlX2dl dF9mbGFncyhlKSk7Cj4gKyAgICAgICAgbnQgPSBwMm1fcmVjYWxjX3R5cGVfcmFuZ2UodHJ1ZSwg b3QsIHAybSwgZ2ZuICYgbWFzaywgZ2ZuIHwgfm1hc2spOwo+ICsgICAgICAgIGlmICggbnQgIT0g b3QgKQo+ICAgICAgICAgICB7Cj4gLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFzayA9IH4w VUwgPDwgKGxldmVsICogUEFHRVRBQkxFX09SREVSKTsKPiAtICAgICAgICAgICAgcDJtX3R5cGVf dCBwMm10ID0gcDJtX2lzX2xvZ2RpcnR5X3JhbmdlKHAybSwgZ2ZuICYgbWFzaywKPiBnZm4gfCB+ bWFzaykKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBwMm1fcmFtX2xvZ2RpcnR5 IDogcDJtX3JhbV9ydzsKPiAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWZuID0gbDFlX2dl dF9wZm4oZSk7Cj4gLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBwMm1fdHlwZV90 b19mbGFncyhwMm0sIHAybXQsCj4gKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MgPSBw Mm1fdHlwZV90b19mbGFncyhwMm0sIG50LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF9tZm4obWZuKSwgbGV2ZWwpOwo+Cj4gICAgICAgICAg ICAgICBpZiAoIGxldmVsICkKPiBAQCAtNDYwLDkgKzQ2MiwxNyBAQCBzdGF0aWMgaW50IGRvX3Jl Y2FsYyhzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAo+IHVuc2lnbmVkIGxvbmcgZ2ZuKQo+ICAgICAg ICAgICAgICAgICAgICAgICAgbWZuICY9IH4oKHVuc2lnbmVkIGxvbmcpX1BBR0VfUFNFX1BBVCA+ PiBQQUdFX1NISUZUKTsKPiAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBfUEFHRV9QU0U7Cj4g ICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAgICAgICAgICBpZiAoIG90ID09IHAybV9pb3JlcV9z ZXJ2ZXIgKQo+ICsgICAgICAgICAgICB7Cj4gKyAgICAgICAgICAgICAgICBBU1NFUlQocDJtLT5p b3JlcS5lbnRyeV9jb3VudCA+IDApOwo+ICsgICAgICAgICAgICAgICAgQVNTRVJUKGxldmVsID09 IDApOwo+ICsgICAgICAgICAgICAgICAgcDJtLT5pb3JlcS5lbnRyeV9jb3VudC0tOwo+ICsgICAg ICAgICAgICB9Cj4gKwo+ICAgICAgICAgICAgICAgZSA9IGwxZV9mcm9tX3BmbihtZm4sIGZsYWdz KTsKPiAgICAgICAgICAgICAgIHAybV9hZGRfaW9tbXVfZmxhZ3MoJmUsIGxldmVsLAo+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwMm10ID09IHAybV9yYW1fcncpCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50ID09IHAybV9yYW1fcncpCj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgID8gSU9NTVVGX3JlYWRhYmxlfElPTU1VRl93cml0YWJs ZSA6IDApOwo+ICAgICAgICAgICAgICAgQVNTRVJUKCFuZWVkc19yZWNhbGMobDEsIGUpKTsKPiAg ICAgICAgICAgfQo+IEBAIC02MDYsNiArNjE2LDggQEAgcDJtX3B0X3NldF9lbnRyeShzdHJ1Y3Qg cDJtX2RvbWFpbiAqcDJtLCB1bnNpZ25lZAo+IGxvbmcgZ2ZuLCBtZm5fdCBtZm4sCj4KPiAgICAg ICBpZiAoIHBhZ2Vfb3JkZXIgPT0gUEFHRV9PUkRFUl80SyApCj4gICAgICAgewo+ICsgICAgICAg IHAybV90eXBlX3QgcDJtdF9vbGQ7Cj4gKwo+ICAgICAgICAgICByYyA9IHAybV9uZXh0X2xldmVs KHAybSwgJnRhYmxlLCAmZ2ZuX3JlbWFpbmRlciwgZ2ZuLAo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEwyX1BBR0VUQUJMRV9TSElGVCAtIFBBR0VfU0hJRlQsCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTDJfUEFHRVRBQkxFX0VOVFJJRVMsIFBHVF9sMV9wYWdlX3RhYmxl LCAxKTsKPiBAQCAtNjI5LDYgKzY0MSwyMSBAQCBwMm1fcHRfc2V0X2VudHJ5KHN0cnVjdCBwMm1f ZG9tYWluICpwMm0sIHVuc2lnbmVkCj4gbG9uZyBnZm4sIG1mbl90IG1mbiwKPiAgICAgICAgICAg aWYgKCBlbnRyeV9jb250ZW50LmwxICE9IDAgKQo+ICAgICAgICAgICAgICAgcDJtX2FkZF9pb21t dV9mbGFncygmZW50cnlfY29udGVudCwgMCwgaW9tbXVfcHRlX2ZsYWdzKTsKPgo+ICsgICAgICAg IHAybXRfb2xkID0gcDJtX2ZsYWdzX3RvX3R5cGUobDFlX2dldF9mbGFncygqcDJtX2VudHJ5KSk7 Cj4gKwo+ICsgICAgICAgIC8qCj4gKyAgICAgICAgICogcDJtX2lvcmVxX3NlcnZlciBpcyBvbmx5 IHVzZWQgZm9yIDRLIHBhZ2VzLCBzbwo+ICsgICAgICAgICAqIHRoZSBjb3VudCBzaGFsbCBvbmx5 IGJlIHBlcmZvcm1lZCBmb3IgbGV2ZWwgMSBlbnRyaWVzLgo+ICsgICAgICAgICAqLwo+ICsgICAg ICAgIGlmICggcDJtdCA9PSBwMm1faW9yZXFfc2VydmVyICkKPiArICAgICAgICAgICAgcDJtLT5p b3JlcS5lbnRyeV9jb3VudCsrOwo+ICsKPiArICAgICAgICBpZiAoIHAybXRfb2xkID09IHAybV9p b3JlcV9zZXJ2ZXIgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgQVNTRVJUKHAybS0+aW9y ZXEuZW50cnlfY291bnQgPiAwKTsKPiArICAgICAgICAgICAgcDJtLT5pb3JlcS5lbnRyeV9jb3Vu dC0tOwo+ICsgICAgICAgIH0KPiArCj4gICAgICAgICAgIC8qIGxldmVsIDEgZW50cnkgKi8KPiAg ICAgICAgICAgcDJtLT53cml0ZV9wMm1fZW50cnkocDJtLCBnZm4sIHAybV9lbnRyeSwgZW50cnlf Y29udGVudCwgMSk7Cj4gICAgICAgICAgIC8qIE5COiBwYWdpbmdfd3JpdGVfcDJtX2VudHJ5KCkg aGFuZGxlcyB0bGIgZmx1c2hlcyBwcm9wZXJseSAqLwo+IEBAIC03MjYsMTUgKzc1Myw2IEBAIHAy bV9wdF9zZXRfZW50cnkoc3RydWN0IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQKPiBsb25nIGdm biwgbWZuX3QgbWZuLAo+ICAgICAgIHJldHVybiByYzsKPiAgIH0KPgo+IC1zdGF0aWMgaW5saW5l IHAybV90eXBlX3QgcmVjYWxjX3R5cGUoYm9vbF90IHJlY2FsYywgcDJtX3R5cGVfdCB0LAo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHAybV9kb21haW4gKnAy bSwgdW5zaWduZWQKPiBsb25nIGdmbikKPiAtewo+IC0gICAgaWYgKCAhcmVjYWxjIHx8ICFwMm1f aXNfY2hhbmdlYWJsZSh0KSApCj4gLSAgICAgICAgcmV0dXJuIHQ7Cj4gLSAgICByZXR1cm4gcDJt X2lzX2xvZ2RpcnR5X3JhbmdlKHAybSwgZ2ZuLCBnZm4pID8gcDJtX3JhbV9sb2dkaXJ0eQo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHAybV9yYW1f cnc7Cj4gLX0KPiAtCj4gICBzdGF0aWMgbWZuX3QKPiAgIHAybV9wdF9nZXRfZW50cnkoc3RydWN0 IHAybV9kb21haW4gKnAybSwgdW5zaWduZWQgbG9uZyBnZm4sCj4gICAgICAgICAgICAgICAgICAg IHAybV90eXBlX3QgKnQsIHAybV9hY2Nlc3NfdCAqYSwgcDJtX3F1ZXJ5X3QgcSwKPiBAQCAtODIw LDggKzgzOCw4IEBAIHBvZF9yZXRyeV9sMzoKPiAgICAgICAgICAgICAgIG1mbiA9IF9tZm4obDNl X2dldF9wZm4oKmwzZSkgKwo+ICAgICAgICAgICAgICAgICAgICAgICAgICBsMl90YWJsZV9vZmZz ZXQoYWRkcikgKiBMMV9QQUdFVEFCTEVfRU5UUklFUyArCj4gICAgICAgICAgICAgICAgICAgICAg ICAgIGwxX3RhYmxlX29mZnNldChhZGRyKSk7Cj4gLSAgICAgICAgICAgICp0ID0gcmVjYWxjX3R5 cGUocmVjYWxjIHx8IF9uZWVkc19yZWNhbGMoZmxhZ3MpLAo+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHAybV9mbGFnc190b190eXBlKGZsYWdzKSwgcDJtLCBnZm4pOwo+ICsgICAgICAg ICAgICAqdCA9IHAybV9yZWNhbGNfdHlwZShyZWNhbGMgfHwgX25lZWRzX3JlY2FsYyhmbGFncyks Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAybV9mbGFnc190b190eXBlKGZs YWdzKSwgcDJtLCBnZm4pOwo+ICAgICAgICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDNlKTsK Pgo+ICAgICAgICAgICAgICAgQVNTRVJUKG1mbl92YWxpZChtZm4pIHx8ICFwMm1faXNfcmFtKCp0 KSk7Cj4gQEAgLTg1OSw4ICs4NzcsOCBAQCBwb2RfcmV0cnlfbDI6Cj4gICAgICAgaWYgKCBmbGFn cyAmIF9QQUdFX1BTRSApCj4gICAgICAgewo+ICAgICAgICAgICBtZm4gPSBfbWZuKGwyZV9nZXRf cGZuKCpsMmUpICsgbDFfdGFibGVfb2Zmc2V0KGFkZHIpKTsKPiAtICAgICAgICAqdCA9IHJlY2Fs Y190eXBlKHJlY2FsYyB8fCBfbmVlZHNfcmVjYWxjKGZsYWdzKSwKPiAtICAgICAgICAgICAgICAg ICAgICAgICAgIHAybV9mbGFnc190b190eXBlKGZsYWdzKSwgcDJtLCBnZm4pOwo+ICsgICAgICAg ICp0ID0gcDJtX3JlY2FsY190eXBlKHJlY2FsYyB8fCBfbmVlZHNfcmVjYWxjKGZsYWdzKSwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMm1fZmxhZ3NfdG9fdHlwZShmbGFncyksIHAy bSwgZ2ZuKTsKPiAgICAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDJlKTsKPgo+ICAgICAgICAg ICBBU1NFUlQobWZuX3ZhbGlkKG1mbikgfHwgIXAybV9pc19yYW0oKnQpKTsKPiBAQCAtODk2LDcg KzkxNCw3IEBAIHBvZF9yZXRyeV9sMToKPiAgICAgICAgICAgcmV0dXJuIElOVkFMSURfTUZOOwo+ ICAgICAgIH0KPiAgICAgICBtZm4gPSBfbWZuKGwxZV9nZXRfcGZuKCpsMWUpKTsKPiAtICAgICp0 ID0gcmVjYWxjX3R5cGUocmVjYWxjIHx8IF9uZWVkc19yZWNhbGMoZmxhZ3MpLCBsMXQsIHAybSwg Z2ZuKTsKPiArICAgICp0ID0gcDJtX3JlY2FsY190eXBlKHJlY2FsYyB8fCBfbmVlZHNfcmVjYWxj KGZsYWdzKSwgbDF0LCBwMm0sIGdmbik7Cj4gICAgICAgdW5tYXBfZG9tYWluX3BhZ2UobDFlKTsK Pgo+ICAgICAgIEFTU0VSVChtZm5fdmFsaWQobWZuKSB8fCAhcDJtX2lzX3JhbSgqdCkgfHwgcDJt X2lzX3BhZ2luZygqdCkpOwo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94 ZW4vYXJjaC94ODYvbW0vcDJtLmMKPiBpbmRleCBiODRhZGQwLi40MTY5ZDE4IDEwMDY0NAo+IC0t LSBhL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+ICsrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwo+ IEBAIC0zMTcsNiArMzE3LDE1IEBAIGludCBwMm1fc2V0X2lvcmVxX3NlcnZlcihzdHJ1Y3QgZG9t YWluICpkLAo+ICAgICAgICAgICBpZiAoIHAybS0+aW9yZXEuc2VydmVyICE9IE5VTEwgKQo+ICAg ICAgICAgICAgICAgZ290byBvdXQ7Cj4KPiArICAgICAgICAvKgo+ICsgICAgICAgICAqIEl0IGlz IHBvc3NpYmxlIHRoYXQgYW4gaW9yZXEgc2VydmVyIGhhcyBqdXN0IGJlZW4gdW5tYXBwZWQsCj4g KyAgICAgICAgICogcmVsZWFzZWQgdGhlIHNwaW4gbG9jaywgd2l0aCBzb21lIHAybV9pb3JlcV9z ZXJ2ZXIgZW50cmllcwo+ICsgICAgICAgICAqIGluIHAybSB0YWJsZSByZW1haW5lZC4gV2Ugc2hh bGwgcmVmdXNlIGFub3RoZXIgaW9yZXEgc2VydmVyCj4gKyAgICAgICAgICogbWFwcGluZyByZXF1 ZXN0IGluIHN1Y2ggY2FzZS4KPiArICAgICAgICAgKi8KPiArICAgICAgICBpZiAoIHJlYWRfYXRv bWljKCZwMm0tPmlvcmVxLmVudHJ5X2NvdW50KSApCj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+ ICsKPiAgICAgICAgICAgcDJtLT5pb3JlcS5zZXJ2ZXIgPSBzOwo+ICAgICAgICAgICBwMm0tPmlv cmVxLmZsYWdzID0gZmxhZ3M7Cj4gICAgICAgfQo+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20teDg2L3AybS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAo+IGluZGV4IDQ1MjE2MjAu LjgwNzdkMGQgMTAwNjQ0Cj4gLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wMm0uaAo+ICsrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvcDJtLmgKPiBAQCAtMTIwLDcgKzEyMCwxMCBAQCB0eXBlZGVm IHVuc2lnbmVkIGludCBwMm1fcXVlcnlfdDsKPgo+ICAgLyogVHlwZXMgdGhhdCBjYW4gYmUgc3Vi amVjdCB0byBidWxrIHRyYW5zaXRpb25zLiAqLwo+ICAgI2RlZmluZSBQMk1fQ0hBTkdFQUJMRV9U WVBFUyAocDJtX3RvX21hc2socDJtX3JhbV9ydykgXAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IHAybV90b19tYXNrKHAybV9yYW1fbG9nZGlydHkpICkKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwMm1fdG9fbWFzayhwMm1fcmFtX2xvZ2RpcnR5KSBcCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcDJtX3RvX21hc2socDJtX2lvcmVxX3NlcnZl cikgKQo+ICsKPiArI2RlZmluZSBQMk1fSU9SRVFfVFlQRVMgKHAybV90b19tYXNrKHAybV9pb3Jl cV9zZXJ2ZXIpKQo+Cj4gICAjZGVmaW5lIFAyTV9QT0RfVFlQRVMgKHAybV90b19tYXNrKHAybV9w b3B1bGF0ZV9vbl9kZW1hbmQpKQo+Cj4gQEAgLTE1Nyw2ICsxNjAsNyBAQCB0eXBlZGVmIHVuc2ln bmVkIGludCBwMm1fcXVlcnlfdDsKPiAgICNkZWZpbmUgcDJtX2lzX3JlYWRvbmx5KF90KSAocDJt X3RvX21hc2soX3QpICYgUDJNX1JPX1RZUEVTKQo+ICAgI2RlZmluZSBwMm1faXNfZGlzY2FyZF93 cml0ZShfdCkgKHAybV90b19tYXNrKF90KSAmCj4gUDJNX0RJU0NBUkRfV1JJVEVfVFlQRVMpCj4g ICAjZGVmaW5lIHAybV9pc19jaGFuZ2VhYmxlKF90KSAocDJtX3RvX21hc2soX3QpICYgUDJNX0NI QU5HRUFCTEVfVFlQRVMpCj4gKyNkZWZpbmUgcDJtX2lzX2lvcmVxKF90KSAocDJtX3RvX21hc2so X3QpICYgUDJNX0lPUkVRX1RZUEVTKQo+ICAgI2RlZmluZSBwMm1faXNfcG9kKF90KSAocDJtX3Rv X21hc2soX3QpICYgUDJNX1BPRF9UWVBFUykKPiAgICNkZWZpbmUgcDJtX2lzX2dyYW50KF90KSAo cDJtX3RvX21hc2soX3QpICYgUDJNX0dSQU5UX1RZUEVTKQo+ICAgLyogR3JhbnQgdHlwZXMgYXJl ICpub3QqIGNvbnNpZGVyZWQgdmFsaWQsIGJlY2F1c2UgdGhleSBjYW4gYmUKPiBAQCAtMzQ5LDYg KzM1Myw3IEBAIHN0cnVjdCBwMm1fZG9tYWluIHsKPiAgICAgICAgICAgICAqIGFyZSB0byBiZSBl bXVsYXRlZCBieSBhbiBpb3JlcSBzZXJ2ZXIuCj4gICAgICAgICAgICAgKi8KPiAgICAgICAgICAg IHVuc2lnbmVkIGludCBmbGFnczsKPiArICAgICAgICAgdW5zaWduZWQgbG9uZyBlbnRyeV9jb3Vu dDsKPiAgICAgICAgfSBpb3JlcTsKPiAgIH07Cj4KPiBAQCAtNzQ0LDYgKzc0OSwyNSBAQCBzdGF0 aWMgaW5saW5lIHAybV90eXBlX3QgcDJtX2ZsYWdzX3RvX3R5cGUodW5zaWduZWQKPiBsb25nIGZs YWdzKQo+ICAgICAgIHJldHVybiAoZmxhZ3MgPj4gMTIpICYgMHg3ZjsKPiAgIH0KPgo+ICtzdGF0 aWMgaW5saW5lIHAybV90eXBlX3QgcDJtX3JlY2FsY190eXBlX3JhbmdlKGJvb2xfdCByZWNhbGMs IHAybV90eXBlX3QgdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2ZuX3N0YXJ0LAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcg Z2ZuX2VuZCkKPiArewo+ICsgICAgaWYgKCAhcmVjYWxjIHx8ICFwMm1faXNfY2hhbmdlYWJsZSh0 KSApCj4gKyAgICAgICAgcmV0dXJuIHQ7Cj4gKyAgICBpZiAoIHQgPT0gcDJtX2lvcmVxX3NlcnZl ciAmJiBwMm0tPmlvcmVxLnNlcnZlciAhPSBOVUxMICkKPiArICAgICAgICByZXR1cm4gdDsKPiAr ICAgIHJldHVybiBwMm1faXNfbG9nZGlydHlfcmFuZ2UocDJtLCBnZm5fc3RhcnQsIGdmbl9lbmQp ID8KPiBwMm1fcmFtX2xvZ2RpcnR5Cj4gKyAgICAgICAgOiBwMm1fcmFtX3J3Owo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIHAybV90eXBlX3QgcDJtX3JlY2FsY190eXBlKGJvb2xfdCByZWNhbGMs IHAybV90eXBlX3QgdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAo+IHVuc2lnbmVkIGxvbmcgZ2ZuKQo+ICt7Cj4gKyAg ICByZXR1cm4gcDJtX3JlY2FsY190eXBlX3JhbmdlKHJlY2FsYywgdCwgcDJtLCBnZm4sIGdmbik7 Cj4gK30KPiArCj4gICBpbnQgcDJtX3B0X2hhbmRsZV9kZWZlcnJlZF9jaGFuZ2VzKHVpbnQ2NF90 IGdwYSk7Cj4KPiAgIC8qCj4KPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gWGVuLWRldmVsIG1haWxpbmcgbGlzdAo+IFhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCj4gaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=