From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v9] x86/hvm: Implement hvmemul_write() using real mappings Date: Tue, 10 Oct 2017 15:30:34 +0000 Message-ID: References: <1507546574-8124-1-git-send-email-aisaila@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1507546574-8124-1-git-send-email-aisaila@bitdefender.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: 'Alexandru Isaila' , "xen-devel@lists.xen.org" Cc: Andrew Cooper , "jbeulich@suse.com" List-Id: xen-devel@lists.xenproject.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IEFsZXhhbmRydSBJc2FpbGEgW21h aWx0bzphaXNhaWxhQGJpdGRlZmVuZGVyLmNvbV0KPiBTZW50OiAwOSBPY3RvYmVyIDIwMTcgMTE6 NTYKPiBUbzogeGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKPiBDYzogamJldWxpY2hAc3VzZS5jb207 IEFuZHJldyBDb29wZXIgPEFuZHJldy5Db29wZXIzQGNpdHJpeC5jb20+Owo+IFBhdWwgRHVycmFu dCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+OyBBbGV4YW5kcnUgSXNhaWxhCj4gPGFpc2FpbGFA Yml0ZGVmZW5kZXIuY29tPgo+IFN1YmplY3Q6IFtQQVRDSCB2OV0geDg2L2h2bTogSW1wbGVtZW50 IGh2bWVtdWxfd3JpdGUoKSB1c2luZyByZWFsCj4gbWFwcGluZ3MKPiAKPiBGcm9tOiBBbmRyZXcg Q29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+IAo+IEFuIGFjY2VzcyB3aGljaCBj cm9zc2VzIGEgcGFnZSBib3VuZGFyeSBpcyBwZXJmb3JtZWQgYXRvbWljYWxseSBieSB4ODYKPiBo YXJkd2FyZSwgYWxiZWl0IHdpdGggYSBzZXZlcmUgcGVyZm9ybWFuY2UgcGVuYWx0eS4gIEFuIGlt cG9ydGFudCBjb3JuZXIKPiBjYXNlCj4gaXMgd2hlbiBhIHN0cmFkZGxlZCBhY2Nlc3MgaGl0cyB0 d28gcGFnZXMgd2hpY2ggZGlmZmVyIGluIHdoZXRoZXIgYQo+IHRyYW5zbGF0aW9uIGV4aXN0cywg b3IgaW4gbmV0IGFjY2VzcyByaWdodHMuCj4gCj4gVGhlIHVzZSBvZiBodm1fY29weSooKSBpbiBo dm1lbXVsX3dyaXRlKCkgaXMgcHJvYmxlbWF0aWMsIGJlY2F1c2UgaXQKPiBwZXJmb3Jtcwo+IGEg dHJhbnNsYXRpb24gdGhlbiBjb21wbGV0ZXMgdGhlIHBhcnRpYWwgd3JpdGUsIGJlZm9yZSBtb3Zp bmcgb250byB0aGUgbmV4dAo+IHRyYW5zbGF0aW9uLgo+IAo+IElmIGFuIGluZGl2aWR1YWwgZW11 bGF0ZWQgd3JpdGUgc3RyYWRkbGVzIHR3byBwYWdlcywgdGhlIGZpcnN0IG9mIHdoaWNoIGlzCj4g d3JpdGFibGUsIGFuZCB0aGUgc2Vjb25kIG9mIHdoaWNoIGlzIG5vdCwgdGhlIGZpcnN0IGhhbGYg b2YgdGhlIHdyaXRlIHdpbGwKPiBjb21wbGV0ZSBiZWZvcmUgI1BGIGlzIHJhaXNlZCBmcm9tIHRo ZSBzZWNvbmQgaGFsZi4KPiAKPiBUaGlzIHJlc3VsdHMgaW4gZ3Vlc3Qgc3RhdGUgY29ycnVwdGlv biBhcyBhIHNpZGUgZWZmZWN0IG9mIGVtdWxhdGlvbiwgd2hpY2gKPiBoYXMgYmVlbiBvYnNlcnZl ZCB0byBjYXVzZSB3aW5kb3dzIHRvIGNyYXNoIHdoaWxlIHVuZGVyIGludHJvc3BlY3Rpb24uCj4g Cj4gSW50cm9kdWNlIHRoZSBodm1lbXVsX3ssdW59bWFwX2xpbmVhcl9hZGRyKCkgaGVscGVycywg d2hpY2ggdHJhbnNsYXRlIGFuCj4gZW50aXJlIGNvbnRlbnRzIG9mIGEgbGluZWFyIGFjY2Vzcywg YW5kIHZtYXAoKSB0aGUgdW5kZXJseWluZyBmcmFtZXMgdG8KPiBwcm92aWRlIGEgY29udGlndW91 cyB2aXJ0dWFsIG1hcHBpbmcgZm9yIHRoZSBlbXVsYXRvciB0byB1c2UuICBUaGlzIGlzIHRoZQo+ IHNhbWUgbWVjaGFuaXNtIGFzIHVzZWQgYnkgdGhlIHNoYWRvdyBlbXVsYXRpb24gY29kZS4KPiAK PiBUaGlzIHdpbGwgY2F0Y2ggYW55IHRyYW5zbGF0aW9uIGlzc3VlcyBhbmQgYWJvcnQgdGhlIGVt dWxhdGlvbiBiZWZvcmUgYW55Cj4gbW9kaWZpY2F0aW9ucyBvY2N1ci4KPiAKPiBTaWduZWQtb2Zm LWJ5OiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgo+IFNpZ25lZC1v ZmYtYnk6IEFsZXhhbmRydSBJc2FpbGEgPGFpc2FpbGFAYml0ZGVmZW5kZXIuY29tPgoKUmV2aWV3 ZWQtYnk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cgo+IAo+IC0tLQo+ IENoYW5nZXMgc2luY2UgVjg6Cj4gCS0gUmVtb3ZlZCBjb21tZW50Cj4gCS0gQ2hhbmdlZCB0aGUg YWRkciBmb3JtdWxhCj4gCS0gQWRkZWQgYmxhbmsgc3BhY2UgaW4gdGhlIGZvciBzdGF0ZW1lbnQu Cj4gCj4gTm90ZTogVGVzdGVkIHdpdGggd2luMzIvNjQgYW5kIHVidW50dTY0IGd1ZXN0cy4KPiAt LS0KPiAgeGVuL2FyY2gveDg2L2h2bS9lbXVsYXRlLmMgICAgICAgIHwgMTc5Cj4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgeGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v ZW11bGF0ZS5oIHwgICA3ICsrCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTcwIGluc2VydGlvbnMoKyks IDE2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxh dGUuYyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gaW5kZXggY2M4NzRjZS4uOTU3ZmM0 NiAxMDA2NDQKPiAtLS0gYS94ZW4vYXJjaC94ODYvaHZtL2VtdWxhdGUuYwo+ICsrKyBiL3hlbi9h cmNoL3g4Ni9odm0vZW11bGF0ZS5jCj4gQEAgLTQ5OCw2ICs0OTgsMTYwIEBAIHN0YXRpYyBpbnQg aHZtZW11bF9kb19tbWlvX2FkZHIocGFkZHJfdAo+IG1taW9fZ3BhLAo+ICB9Cj4gCj4gIC8qCj4g KyAqIE1hcCB0aGUgZnJhbWUocykgY292ZXJpbmcgYW4gaW5kaXZpZHVhbCBsaW5lYXIgYWNjZXNz LCBmb3Igd3JpdGVhYmxlCj4gKyAqIGFjY2Vzcy4gIE1heSByZXR1cm4gTlVMTCBmb3IgTU1JTywg b3IgRVJSX1BUUih+WDg2RU1VTF8qKSBmb3Igb3RoZXIKPiBlcnJvcnMKPiArICogaW5jbHVkaW5n IEVSUl9QVFIoflg4NkVNVUxfT0tBWSkgZm9yIHdyaXRlLWRpc2NhcmQgbWFwcGluZ3MuCj4gKyAq Cj4gKyAqIEluIGRlYnVnIGJ1aWxkcywgbWFwKCkgY2hlY2tzIHRoYXQgZWFjaCBzbG90IGluIGh2 bWVtdWxfY3R4dC0+bWZuW10gaXMKPiArICogY2xlYW4gYmVmb3JlIHVzZSwgYW5kIHBvaXNpb25z IHVudXNlZCBzbG90cyB3aXRoIElOVkFMSURfTUZOLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgKmh2 bWVtdWxfbWFwX2xpbmVhcl9hZGRyKAo+ICsgICAgdW5zaWduZWQgbG9uZyBsaW5lYXIsIHVuc2ln bmVkIGludCBieXRlcywgdWludDMyX3QgcGZlYywKPiArICAgIHN0cnVjdCBodm1fZW11bGF0ZV9j dHh0ICpodm1lbXVsX2N0eHQpCj4gK3sKPiArICAgIHN0cnVjdCB2Y3B1ICpjdXJyID0gY3VycmVu dDsKPiArICAgIHZvaWQgKmVyciwgKm1hcHBpbmc7Cj4gKyAgICB1bnNpZ25lZCBpbnQgbnJfZnJh bWVzID0gKChsaW5lYXIgKyBieXRlcyAtICEhYnl0ZXMpID4+IFBBR0VfU0hJRlQpIC0KPiArICAg ICAgICAobGluZWFyID4+IFBBR0VfU0hJRlQpICsgMTsKPiArICAgIHVuc2lnbmVkIGludCBpOwo+ ICsKPiArICAgIC8qCj4gKyAgICAgKiBtZm4gcG9pbnRzIHRvIHRoZSBuZXh0IGZyZWUgc2xvdC4g IEFsbCB1c2VkIHNsb3RzIGhhdmUgYSBwYWdlIHJlZmVyZW5jZQo+ICsgICAgICogaGVsZCBvbiB0 aGVtLgo+ICsgICAgICovCj4gKyAgICBtZm5fdCAqbWZuID0gJmh2bWVtdWxfY3R4dC0+bWZuWzBd Owo+ICsKPiArICAgIC8qCj4gKyAgICAgKiBUaGUgY2FsbGVyIGhhcyBubyBsZWdpdGltYXRlIHJl YXNvbiBmb3IgdHJ5aW5nIGEgemVyby1ieXRlIHdyaXRlLCBidXQKPiArICAgICAqIGZpbmFsIGlz IGNhbGN1bGF0ZSB0byBmYWlsIHNhZmUgaW4gcmVsZWFzZSBidWlsZHMuCj4gKyAgICAgKgo+ICsg ICAgICogVGhlIG1heGltdW0gd3JpdGUgc2l6ZSBkZXBlbmRzIG9uIHRoZSBudW1iZXIgb2YgYWRq YWNlbnQgbWZuc1tdCj4gd2hpY2gKPiArICAgICAqIGNhbiBiZSB2bWFwKCknZCwgYWNjb3V0aW5n IGZvciBwb3NzaWJsZSBtaXNhbGlnbm1lbnQgd2l0aGluIHRoZSByZWdpb24uCj4gKyAgICAgKiBU aGUgaGlnaGVyIGxldmVsIGVtdWxhdGlvbiBjYWxsZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgZW5z dXJpbmcgdGhhdAo+ICsgICAgICogbWZuc1tdIGlzIGxhcmdlIGVub3VnaCBmb3IgdGhlIHJlcXVl c3RlZCB3cml0ZSBzaXplLgo+ICsgICAgICovCj4gKyAgICBpZiAoIGJ5dGVzID09IDAgfHwKPiAr ICAgICAgICAgbnJfZnJhbWVzID4gQVJSQVlfU0laRShodm1lbXVsX2N0eHQtPm1mbikgKQo+ICsg ICAgewo+ICsgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOwo+ICsgICAgICAgIHByaW50aygi Z290byB1bmhhbmRsZSBFUlJPUn4hfn5cbiIpOwo+ICsgICAgICAgIGdvdG8gdW5oYW5kbGVhYmxl Owo+ICsgICAgfQo+ICsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfZnJhbWVzOyBpKysgKQo+ ICsgICAgewo+ICsgICAgICAgIGVudW0gaHZtX3RyYW5zbGF0aW9uX3Jlc3VsdCByZXM7Cj4gKyAg ICAgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKPiArICAgICAgICBwYWdlZmF1bHRfaW5mb190 IHBmaW5mbzsKPiArICAgICAgICBwMm1fdHlwZV90IHAybXQ7Cj4gKyAgICAgICAgdW5zaWduZWQg bG9uZyBhZGRyID0gaSA/IChsaW5lYXIgKyAoaSA8PCBQQUdFX1NISUZUKSkgJiBQQUdFX01BU0sg Ogo+IGxpbmVhcjsKPiArCj4gKyAgICAgICAgaWYgKCBodm1lbXVsX2N0eHQtPmN0eHQuYWRkcl9z aXplIDwgNjQgKQo+ICsgICAgICAgICAgICBhZGRyID0gKHVpbnQzMl90KWFkZHI7Cj4gKwo+ICsg ICAgICAgIC8qIEVycm9yIGNoZWNraW5nLiAgQ29uZmlybSB0aGF0IHRoZSBjdXJyZW50IHNsb3Qg aXMgY2xlYW4uICovCj4gKyAgICAgICAgQVNTRVJUKG1mbl94KCptZm4pID09IDApOwo+ICsKPiAr ICAgICAgICByZXMgPSBodm1fdHJhbnNsYXRlX2dldF9wYWdlKGN1cnIsIGFkZHIsIHRydWUsIHBm ZWMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGZpbmZvLCAmcGFn ZSwgTlVMTCwgJnAybXQpOwo+ICsKPiArICAgICAgICBzd2l0Y2ggKCByZXMgKQo+ICsgICAgICAg IHsKPiArICAgICAgICBjYXNlIEhWTVRSQU5TX29rYXk6Cj4gKyAgICAgICAgICAgIGJyZWFrOwo+ ICsKPiArICAgICAgICBjYXNlIEhWTVRSQU5TX2JhZF9saW5lYXJfdG9fZ2ZuOgo+ICsgICAgICAg ICAgICB4ODZfZW11bF9wYWdlZmF1bHQocGZpbmZvLmVjLCBwZmluZm8ubGluZWFyLCAmaHZtZW11 bF9jdHh0LT5jdHh0KTsKPiArICAgICAgICAgICAgZXJyID0gRVJSX1BUUih+WDg2RU1VTF9FWENF UFRJT04pOwo+ICsgICAgICAgICAgICBnb3RvIG91dDsKPiArCj4gKyAgICAgICAgY2FzZSBIVk1U UkFOU19iYWRfZ2ZuX3RvX21mbjoKPiArICAgICAgICAgICAgZXJyID0gTlVMTDsKPiArICAgICAg ICAgICAgZ290byBvdXQ7Cj4gKwo+ICsgICAgICAgIGNhc2UgSFZNVFJBTlNfZ2ZuX3BhZ2VkX291 dDoKPiArICAgICAgICBjYXNlIEhWTVRSQU5TX2dmbl9zaGFyZWQ6Cj4gKyAgICAgICAgICAgIGVy ciA9IEVSUl9QVFIoflg4NkVNVUxfUkVUUlkpOwo+ICsgICAgICAgICAgICBnb3RvIG91dDsKPiAr Cj4gKyAgICAgICAgZGVmYXVsdDoKPiArICAgICAgICAgICAgZ290byB1bmhhbmRsZWFibGU7Cj4g KyAgICAgICAgfQo+ICsKPiArICAgICAgICAqbWZuKysgPSBfbWZuKHBhZ2VfdG9fbWZuKHBhZ2Up KTsKPiArCj4gKyAgICAgICAgaWYgKCBwMm1faXNfZGlzY2FyZF93cml0ZShwMm10KSApCj4gKyAg ICAgICAgewo+ICsgICAgICAgICAgICBlcnIgPSBFUlJfUFRSKH5YODZFTVVMX09LQVkpOwo+ICsg ICAgICAgICAgICBnb3RvIG91dDsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyog RW50aXJlIGFjY2VzcyB3aXRoaW4gYSBzaW5nbGUgZnJhbWU/ICovCj4gKyAgICBpZiAoIG5yX2Zy YW1lcyA9PSAxICkKPiArICAgICAgICBtYXBwaW5nID0gbWFwX2RvbWFpbl9wYWdlKGh2bWVtdWxf Y3R4dC0+bWZuWzBdKTsKPiArICAgIC8qIE11bHRpcGxlIGZyYW1lcz8gTmVlZCB0byB2bWFwKCku ICovCj4gKyAgICBlbHNlIGlmICggKG1hcHBpbmcgPSB2bWFwKGh2bWVtdWxfY3R4dC0+bWZuLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBucl9mcmFtZXMpKSA9PSBOVUxMICkKPiAr ICAgICAgICBnb3RvIHVuaGFuZGxlYWJsZTsKPiArCj4gKyNpZm5kZWYgTkRFQlVHIC8qIFBvaXNp b24gdW51c2VkIG1mbltdcyB3aXRoIElOVkFMSURfTUZOLiAqLwo+ICsgICAgd2hpbGUgKCBtZm4g PCBodm1lbXVsX2N0eHQtPm1mbiArIEFSUkFZX1NJWkUoaHZtZW11bF9jdHh0LT5tZm4pICkKPiAr ICAgIHsKPiArICAgICAgICBBU1NFUlQobWZuX3goKm1mbikgPT0gMCk7Cj4gKyAgICAgICAgKm1m bisrID0gSU5WQUxJRF9NRk47Cj4gKyAgICB9Cj4gKyNlbmRpZgo+ICsgICAgcmV0dXJuIG1hcHBp bmcgKyAobGluZWFyICYgflBBR0VfTUFTSyk7Cj4gKwo+ICsgdW5oYW5kbGVhYmxlOgo+ICsgICAg ZXJyID0gRVJSX1BUUih+WDg2RU1VTF9VTkhBTkRMRUFCTEUpOwo+ICsKPiArIG91dDoKPiArICAg IC8qIERyb3AgYWxsIGhlbGQgcmVmZXJlbmNlcy4gKi8KPiArICAgIHdoaWxlICggbWZuLS0gPiBo dm1lbXVsX2N0eHQtPm1mbiApCj4gKyAgICAgICAgcHV0X3BhZ2UobWZuX3RvX3BhZ2UobWZuX3go Km1mbikpKTsKPiArCj4gKyAgICByZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBo dm1lbXVsX3VubWFwX2xpbmVhcl9hZGRyKAo+ICsgICAgdm9pZCAqbWFwcGluZywgdW5zaWduZWQg bG9uZyBsaW5lYXIsIHVuc2lnbmVkIGludCBieXRlcywKPiArICAgIHN0cnVjdCBodm1fZW11bGF0 ZV9jdHh0ICpodm1lbXVsX2N0eHQpCj4gK3sKPiArICAgIHN0cnVjdCBkb21haW4gKmN1cnJkID0g Y3VycmVudC0+ZG9tYWluOwo+ICsgICAgdW5zaWduZWQgaW50IG5yX2ZyYW1lcyA9ICgobGluZWFy ICsgYnl0ZXMgLSAhIWJ5dGVzKSA+PiBQQUdFX1NISUZUKSAtCj4gKyAgICAgICAgKGxpbmVhciA+ PiBQQUdFX1NISUZUKSArIDE7Cj4gKyAgICB1bnNpZ25lZCBpbnQgaTsKPiArICAgIG1mbl90ICpt Zm4gPSAmaHZtZW11bF9jdHh0LT5tZm5bMF07Cj4gKwo+ICsgICAgQVNTRVJUKGJ5dGVzID4gMCk7 Cj4gKwo+ICsgICAgaWYgKCBucl9mcmFtZXMgPT0gMSApCj4gKyAgICAgICAgdW5tYXBfZG9tYWlu X3BhZ2UobWFwcGluZyk7Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgdnVubWFwKG1hcHBpbmcpOwo+ ICsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfZnJhbWVzOyBpKysgKQo+ICsgICAgewo+ICsg ICAgICAgIEFTU0VSVChtZm5fdmFsaWQoKm1mbikpOwo+ICsgICAgICAgIHBhZ2luZ19tYXJrX2Rp cnR5KGN1cnJkLCAqbWZuKTsKPiArICAgICAgICBwdXRfcGFnZShtZm5fdG9fcGFnZShtZm5feCgq bWZuKSkpOwo+ICsKPiArICAgICAgICAqbWZuKysgPSBfbWZuKDApOyAvKiBDbGVhbiBzbG90IGZv ciBtYXAoKSdzIGVycm9yIGNoZWNraW5nLiAqLwo+ICsgICAgfQo+ICsKPiArCj4gKyNpZm5kZWYg TkRFQlVHIC8qIENoZWNrIChhbmQgY2xlYW4pIGFsbCB1bnVzZWQgbWZucy4gKi8KPiArICAgIHdo aWxlICggbWZuIDwgaHZtZW11bF9jdHh0LT5tZm4gKyBBUlJBWV9TSVpFKGh2bWVtdWxfY3R4dC0+ bWZuKSApCj4gKyAgICB7Cj4gKyAgICAgICAgQVNTRVJUKG1mbl9lcSgqbWZuLCBJTlZBTElEX01G TikpOwo+ICsgICAgICAgICptZm4rKyA9IF9tZm4oMCk7Cj4gKyAgICB9Cj4gKyNlbmRpZgo+ICt9 Cj4gKwo+ICsvKgo+ICAgKiBDb252ZXJ0IGFkZHIgZnJvbSBsaW5lYXIgdG8gcGh5c2ljYWwgZm9y bSwgdmFsaWQgb3ZlciB0aGUgcmFuZ2UKPiAgICogW2FkZHIsIGFkZHIgKyAqcmVwcyAqIGJ5dGVz X3Blcl9yZXBdLiAqcmVwcyBpcyBhZGp1c3RlZCBhY2NvcmRpbmcgdG8KPiAgICogdGhlIHZhbGlk IGNvbXB1dGVkIHJhbmdlLiBJdCBpcyBhbHdheXMgPjAgd2hlbiBYODZFTVVMX09LQVkgaXMKPiBy ZXR1cm5lZC4KPiBAQCAtOTg4LDExICsxMTQyLDExIEBAIHN0YXRpYyBpbnQgaHZtZW11bF93cml0 ZSgKPiAgICAgIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0ICpodm1lbXVsX2N0eHQgPQo+ICAgICAg ICAgIGNvbnRhaW5lcl9vZihjdHh0LCBzdHJ1Y3QgaHZtX2VtdWxhdGVfY3R4dCwgY3R4dCk7Cj4g ICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJlbnQ7Cj4gLSAgICBwYWdlZmF1bHRfaW5mb190 IHBmaW5mbzsKPiAgICAgIHVuc2lnbmVkIGxvbmcgYWRkciwgcmVwcyA9IDE7Cj4gICAgICB1aW50 MzJfdCBwZmVjID0gUEZFQ19wYWdlX3ByZXNlbnQgfCBQRkVDX3dyaXRlX2FjY2VzczsKPiAgICAg IHN0cnVjdCBodm1fdmNwdV9pbyAqdmlvID0gJmN1cnItPmFyY2guaHZtX3ZjcHUuaHZtX2lvOwo+ ICAgICAgaW50IHJjOwo+ICsgICAgdm9pZCAqbWFwcGluZzsKPiAKPiAgICAgIGlmICggaXNfeDg2 X3N5c3RlbV9zZWdtZW50KHNlZykgKQo+ICAgICAgICAgIHBmZWMgfD0gUEZFQ19pbXBsaWNpdDsK PiBAQCAtMTAwOCwyMyArMTE2MiwxNiBAQCBzdGF0aWMgaW50IGh2bWVtdWxfd3JpdGUoCj4gICAg ICAgICAgICh2aW8tPm1taW9fZ2xhID09IChhZGRyICYgUEFHRV9NQVNLKSkgKQo+ICAgICAgICAg IHJldHVybiBodm1lbXVsX2xpbmVhcl9tbWlvX3dyaXRlKGFkZHIsIGJ5dGVzLCBwX2RhdGEsIHBm ZWMsCj4gaHZtZW11bF9jdHh0LCAxKTsKPiAKPiAtICAgIHJjID0gaHZtX2NvcHlfdG9fZ3Vlc3Rf bGluZWFyKGFkZHIsIHBfZGF0YSwgYnl0ZXMsIHBmZWMsICZwZmluZm8pOwo+ICsgICAgbWFwcGlu ZyA9IGh2bWVtdWxfbWFwX2xpbmVhcl9hZGRyKGFkZHIsIGJ5dGVzLCBwZmVjLAo+IGh2bWVtdWxf Y3R4dCk7Cj4gKyAgICBpZiAoIElTX0VSUihtYXBwaW5nKSApCj4gKyAgICAgICAgcmV0dXJuIH5Q VFJfRVJSKG1hcHBpbmcpOwo+IAo+IC0gICAgc3dpdGNoICggcmMgKQo+IC0gICAgewo+IC0gICAg Y2FzZSBIVk1UUkFOU19va2F5Ogo+IC0gICAgICAgIGJyZWFrOwo+IC0gICAgY2FzZSBIVk1UUkFO U19iYWRfbGluZWFyX3RvX2dmbjoKPiAtICAgICAgICB4ODZfZW11bF9wYWdlZmF1bHQocGZpbmZv LmVjLCBwZmluZm8ubGluZWFyLCAmaHZtZW11bF9jdHh0LT5jdHh0KTsKPiAtICAgICAgICByZXR1 cm4gWDg2RU1VTF9FWENFUFRJT047Cj4gLSAgICBjYXNlIEhWTVRSQU5TX2JhZF9nZm5fdG9fbWZu Ogo+ICsgICAgaWYgKCAhbWFwcGluZyApCj4gICAgICAgICAgcmV0dXJuIGh2bWVtdWxfbGluZWFy X21taW9fd3JpdGUoYWRkciwgYnl0ZXMsIHBfZGF0YSwgcGZlYywKPiBodm1lbXVsX2N0eHQsIDAp Owo+IC0gICAgY2FzZSBIVk1UUkFOU19nZm5fcGFnZWRfb3V0Ogo+IC0gICAgY2FzZSBIVk1UUkFO U19nZm5fc2hhcmVkOgo+IC0gICAgICAgIHJldHVybiBYODZFTVVMX1JFVFJZOwo+IC0gICAgZGVm YXVsdDoKPiAtICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7Cj4gLSAgICB9Cj4g Kwo+ICsgICAgbWVtY3B5KG1hcHBpbmcsIHBfZGF0YSwgYnl0ZXMpOwo+ICsKPiArICAgIGh2bWVt dWxfdW5tYXBfbGluZWFyX2FkZHIobWFwcGluZywgYWRkciwgYnl0ZXMsIGh2bWVtdWxfY3R4dCk7 Cj4gCj4gICAgICByZXR1cm4gWDg2RU1VTF9PS0FZOwo+ICB9Cj4gZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvaHZtL2VtdWxhdGUuaCBiL3hlbi9pbmNsdWRlL2FzbS0KPiB4ODYvaHZt L2VtdWxhdGUuaAo+IGluZGV4IDg4NjQ3NzUuLmQzNzlhNGEgMTAwNjQ0Cj4gLS0tIGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vZW11bGF0ZS5oCj4gKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9o dm0vZW11bGF0ZS5oCj4gQEAgLTM3LDYgKzM3LDEzIEBAIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0 IHsKPiAgICAgIHVuc2lnbmVkIGxvbmcgc2VnX3JlZ19hY2Nlc3NlZDsKPiAgICAgIHVuc2lnbmVk IGxvbmcgc2VnX3JlZ19kaXJ0eTsKPiAKPiArICAgIC8qCj4gKyAgICAgKiBNRk5zIGJlaGluZCB0 ZW1wb3JhcnkgbWFwcGluZ3MgaW4gdGhlIHdyaXRlIGNhbGxiYWNrLiAgVGhlIGxlbmd0aCBpcwo+ ICsgICAgICogYXJiaXRyYXJ5LCBhbmQgY2FuIGJlIGluY3JlYXNlZCBpZiB3cml0ZXMgbG9uZ2Vy IHRoYW4gUEFHRV9TSVpFKzEgYXJlCj4gKyAgICAgKiBuZWVkZWQuCj4gKyAgICAgKi8KPiArICAg IG1mbl90IG1mblsyXTsKPiArCj4gICAgICB1aW50MzJfdCBpbnRyX3NoYWRvdzsKPiAKPiAgICAg IGJvb2xfdCBzZXRfY29udGV4dDsKPiAtLQo+IDIuNy40CgoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2 ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==