From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [PATCH v2 10/13] optee: add support for RPC commands Date: Mon, 10 Sep 2018 16:34:32 +0100 Message-ID: References: <1535993677-20816-1-git-send-email-volodymyr_babchuk@epam.com> <1535993677-20816-11-git-send-email-volodymyr_babchuk@epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fzOCy-0005Fr-IO for xen-devel@lists.xenproject.org; Mon, 10 Sep 2018 15:34:36 +0000 In-Reply-To: <1535993677-20816-11-git-send-email-volodymyr_babchuk@epam.com> Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Volodymyr Babchuk , xen-devel@lists.xenproject.org, xen-devel@lists.xen.org Cc: tee-dev@lists.linaro.org, Stefano Stabellini List-Id: xen-devel@lists.xenproject.org SGkgVm9sb2R5bXlyLAoKT24gMDMvMDkvMTggMTc6NTQsIFZvbG9keW15ciBCYWJjaHVrIHdyb3Rl Ogo+IE9QLVRFRSBjYW4gaXNzdWUgbXVsdGlwbGUgUlBDIHJlcXVlc3RzLiBXZSBhcmUgaW50ZXJl c3RlZCBtb3N0bHkgaW4KPiByZXF1ZXN0IHRoYXQgYXNrcyBOVyB0byBhbGxvY2F0ZS9mcmVlIHNo YXJlZCBtZW1vcnkgZm9yIE9QLVRFRQo+IG5lZWRzLCBiZWN1YXNlIG1lZGlhdG9yIG5lZWQgdG8g ZG8gYWRkcmVzcyB0cmFuc2xhdGlvbiBpbiB0aGUgc2FtZQoKcy9iZWN1YXNlL2JlY2F1c2UvCnMv bmVlZC9uZWVkcy8KCnRoZSBtZWRpYXRvcgoKCj4gd2F5IGFzIGl0IHdhcyBkb25lIGZvciBzaGFy ZWQgYnVmZmVycyByZWdpc3RlcmVkIGJ5IE5XLgo+IAo+IEFzIG1lZGlhdG9yIG5vdyBhY2Nlc3Nl cyBzaGFyZWQgY29tbWFuZCBidWZmZXIsIHdlIG5lZWQgdG8gc2hhZG93CgoiQXMgdGhlIgoKPiBp dCBpbiB0aGUgc2FtZSB3YXksIGFzIHdlIHNoYWRvdyByZXF1ZXN0IGJ1ZmZlcnMgZm9yIFNURCBj YWxscy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBWb2xvZHlteXIgQmFiY2h1ayA8dm9sb2R5bXlyX2Jh YmNodWtAZXBhbS5jb20+Cj4gLS0tCj4gICB4ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMgfCAxMzcg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgIDEgZmls ZSBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL2FybS90ZWUvb3B0ZWUuYyBiL3hlbi9hcmNoL2FybS90ZWUvb3B0ZWUu Ywo+IGluZGV4IDhiZmNmZGMuLmIyZDc5NWUgMTAwNjQ0Cj4gLS0tIGEveGVuL2FyY2gvYXJtL3Rl ZS9vcHRlZS5jCj4gKysrIGIveGVuL2FyY2gvYXJtL3RlZS9vcHRlZS5jCj4gQEAgLTQ1LDYgKzQ1 LDcgQEAgc3RydWN0IHN0ZF9jYWxsX2N0eCB7Cj4gICBzdHJ1Y3Qgc2htX3JwYyB7Cj4gICAgICAg c3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ICAgICAgIHN0cnVjdCBvcHRlZV9tc2dfYXJnICpndWVz dF9hcmc7Cj4gKyAgICBzdHJ1Y3Qgb3B0ZWVfbXNnX2FyZyAqeGVuX2FyZzsKPiAgICAgICBzdHJ1 Y3QgcGFnZSAqZ3Vlc3RfcGFnZTsKPiAgICAgICBtZm5fdCBndWVzdF9tZm47Cj4gICAgICAgdWlu dDY0X3QgY29va2llOwo+IEBAIC0zMDMsNiArMzA0LDEwIEBAIHN0YXRpYyBzdHJ1Y3Qgc2htX3Jw YyAqYWxsb2NhdGVfYW5kX21hcF9zaG1fcnBjKHN0cnVjdCBkb21haW5fY3R4ICpjdHgsIHBhZGRy X3QKPiAgICAgICBpZiAoICFzaG1fcnBjICkKPiAgICAgICAgICAgZ290byBlcnI7Cj4gICAKPiAr ICAgIHNobV9ycGMtPnhlbl9hcmcgPSBhbGxvY194ZW5oZWFwX3BhZ2UoKTsKPiArICAgIGlmICgg IXNobV9ycGMtPnhlbl9hcmcgKQo+ICsgICAgICAgIGdvdG8gZXJyOwo+ICsKPiAgICAgICBzaG1f cnBjLT5ndWVzdF9tZm4gPSBsb29rdXBfYW5kX3Bpbl9ndWVzdF9yYW1fYWRkcihnYWRkciwgTlVM TCk7Cj4gICAKPiAgICAgICBpZiAoIG1mbl9lcShzaG1fcnBjLT5ndWVzdF9tZm4sIElOVkFMSURf TUZOKSApCj4gQEAgLTMyNCw2ICszMjksMTAgQEAgc3RhdGljIHN0cnVjdCBzaG1fcnBjICphbGxv Y2F0ZV9hbmRfbWFwX3NobV9ycGMoc3RydWN0IGRvbWFpbl9jdHggKmN0eCwgcGFkZHJfdAo+ICAg Cj4gICBlcnI6Cj4gICAgICAgYXRvbWljX2RlYygmY3R4LT5zaG1fcnBjX2NvdW50KTsKPiArCj4g KyAgICBpZiAoIHNobV9ycGMtPnhlbl9hcmcgKQo+ICsgICAgICAgIGZyZWVfeGVuaGVhcF9wYWdl KHNobV9ycGMtPnhlbl9hcmcpOwo+ICsKPiAgICAgICB4ZnJlZShzaG1fcnBjKTsKPiAgICAgICBy ZXR1cm4gTlVMTDsKPiAgIH0KPiBAQCAtMzQ2LDkgKzM1NSwxMCBAQCBzdGF0aWMgdm9pZCBmcmVl X3NobV9ycGMoc3RydWN0IGRvbWFpbl9jdHggKmN0eCwgdWludDY0X3QgY29va2llKQo+ICAgICAg IH0KPiAgICAgICBzcGluX3VubG9jaygmY3R4LT5sb2NrKTsKPiAgIAo+IC0gICAgaWYgKCAhZm91 bmQgKSB7Cj4gKyAgICBpZiAoICFmb3VuZCApCj4gICAgICAgICAgIHJldHVybjsKPiAtICAgIH0K ClRoYXQgY2hhbmdlIHNob3VsZCBiZSBmb2xkZWQgaW50byB0aGUgcGF0Y2ggYWRkaW5nIHRoZSB7 fS4KCj4gKwo+ICsgICAgZnJlZV94ZW5oZWFwX3BhZ2Uoc2htX3JwYy0+eGVuX2FyZyk7Cj4gICAK PiAgICAgICBpZiAoIHNobV9ycGMtPmd1ZXN0X2FyZyApIHsKPiAgICAgICAgICAgdW5waW5fZ3Vl c3RfcmFtX2FkZHIoc2htX3JwYy0+Z3Vlc3RfbWZuKTsKPiBAQCAtMzU4LDYgKzM2OCwyNCBAQCBz dGF0aWMgdm9pZCBmcmVlX3NobV9ycGMoc3RydWN0IGRvbWFpbl9jdHggKmN0eCwgdWludDY0X3Qg Y29va2llKQo+ICAgICAgIHhmcmVlKHNobV9ycGMpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyBzdHJ1 Y3Qgc2htX3JwYyAqZmluZF9zaG1fcnBjKHN0cnVjdCBkb21haW5fY3R4ICpjdHgsIHVpbnQ2NF90 IGNvb2tpZSkKPiArewo+ICsgICAgc3RydWN0IHNobV9ycGMgKnNobV9ycGM7Cj4gKwo+ICsgICAg c3Bpbl9sb2NrKCZjdHgtPmxvY2spOwo+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggc2htX3Jw YywgJmN0eC0+c2htX3JwY19saXN0LCBsaXN0ICkKPiArICAgIHsKPiArICAgICAgICBpZiAoIHNo bV9ycGMtPmNvb2tpZSA9PSBjb29raWUgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgICAg IHNwaW5fdW5sb2NrKCZjdHgtPmxvY2spOwo+ICsgICAgICAgICAgICAgICAgcmV0dXJuIHNobV9y cGM7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgc3Bpbl91bmxvY2soJmN0eC0+bG9jayk7 Cj4gKwo+ICsgICAgcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gICBzdGF0aWMgc3RydWN0IHNobV9i dWYgKmFsbG9jYXRlX3NobV9idWYoc3RydWN0IGRvbWFpbl9jdHggKmN0eCwKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBjb29raWUsCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhZ2VzX2NudCkKPiBAQCAt NzA0LDYgKzczMiwyOCBAQCBzdGF0aWMgYm9vbCBjb3B5X3N0ZF9yZXF1ZXN0X2JhY2soc3RydWN0 IGRvbWFpbl9jdHggKmN0eCwKPiAgICAgICByZXR1cm4gdHJ1ZTsKPiAgIH0KPiAgIAo+ICtzdGF0 aWMgdm9pZCBoYW5kbGVfcnBjX3JldHVybihzdHJ1Y3QgZG9tYWluX2N0eCAqY3R4LAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzLAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGRfY2FsbF9jdHggKmNhbGwpCj4g K3sKPiArICAgIGNhbGwtPm9wdGVlX3RocmVhZF9pZCA9IGdldF91c2VyX3JlZyhyZWdzLCAzKTsK PiArICAgIGNhbGwtPnJwY19vcCA9IE9QVEVFX1NNQ19SRVRVUk5fR0VUX1JQQ19GVU5DKGdldF91 c2VyX3JlZyhyZWdzLCAwKSk7Cj4gKwo+ICsgICAgaWYgKCBjYWxsLT5ycGNfb3AgPT0gT1BURUVf U01DX1JQQ19GVU5DX0NNRCApCj4gKyAgICB7Cj4gKyAgICAgICAgLyogQ29weSBSUEMgcmVxdWVz dCBmcm9tIHNoYWRvd2VkIGJ1ZmZlciB0byBndWVzdCAqLwo+ICsgICAgICAgIHVpbnQ2NF90IGNv b2tpZSA9IGdldF91c2VyX3JlZyhyZWdzLCAxKSA8PCAzMiB8IGdldF91c2VyX3JlZyhyZWdzLCAy KTsKPiArICAgICAgICBzdHJ1Y3Qgc2htX3JwYyAqc2htX3JwYyA9IGZpbmRfc2htX3JwYyhjdHgs IGNvb2tpZSk7CgpOZXdsaW5lIGJldHdlZW4gZGVjbGFyYXRpb24gYW5kIGNvZGUuCgo+ICsgICAg ICAgIGlmICggIXNobV9ycGMgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgZ3ByaW50ayhY RU5MT0dfRVJSLCAiQ2FuJ3QgZmluZCBTSE0tUlBDIHdpdGggY29va2llICVseFxuIiwgY29va2ll KTsKPiArICAgICAgICAgICAgcmV0dXJuOwo+ICsgICAgICAgIH0KPiArICAgICAgICBtZW1jcHko c2htX3JwYy0+Z3Vlc3RfYXJnLCBzaG1fcnBjLT54ZW5fYXJnLAo+ICsgICAgICAgICAgICAgICBP UFRFRV9NU0dfR0VUX0FSR19TSVpFKHNobV9ycGMtPnhlbl9hcmctPm51bV9wYXJhbXMpKTsKPiAr ICAgIH0KPiArfQo+ICsKPiAgIHN0YXRpYyBib29sIGV4ZWN1dGVfc3RkX2NhbGwoc3RydWN0IGRv bWFpbl9jdHggKmN0eCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBzdGRfY2FsbF9jdHggKmNhbGwpCj4gQEAgLTcxNSw4ICs3NjUsNyBAQCBzdGF0aWMgYm9vbCBl eGVjdXRlX3N0ZF9jYWxsKHN0cnVjdCBkb21haW5fY3R4ICpjdHgsCj4gICAgICAgb3B0ZWVfcmV0 ID0gZ2V0X3VzZXJfcmVnKHJlZ3MsIDApOwo+ICAgICAgIGlmICggT1BURUVfU01DX1JFVFVSTl9J U19SUEMob3B0ZWVfcmV0KSApCj4gICAgICAgewo+IC0gICAgICAgIGNhbGwtPm9wdGVlX3RocmVh ZF9pZCA9IGdldF91c2VyX3JlZyhyZWdzLCAzKTsKPiAtICAgICAgICBjYWxsLT5ycGNfb3AgPSBP UFRFRV9TTUNfUkVUVVJOX0dFVF9SUENfRlVOQyhvcHRlZV9yZXQpOwo+ICsgICAgICAgIGhhbmRs ZV9ycGNfcmV0dXJuKGN0eCwgcmVncywgY2FsbCk7CgpJdCB3b3VsZCBtYWtlIHNlbnNlIHRvIGlu dHJvZHVjZSBoYW5kbGVfcnBjX3JldHVybiB3aGVyZSB5b3UgYWN0dWFsbHkgCmFkZCB0aG9zZSAy IGxpbmVzLgoKPiAgICAgICAgICAgcmV0dXJuIHRydWU7Cj4gICAgICAgfQo+ICAgCj4gQEAgLTc4 Myw2ICs4MzIsNzQgQEAgb3V0Ogo+ICAgICAgIHJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiArCj4g K3N0YXRpYyB2b2lkIGhhbmRsZV9ycGNfY21kX2FsbG9jKHN0cnVjdCBkb21haW5fY3R4ICpjdHgs Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdz ICpyZWdzLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RkX2Nh bGxfY3R4ICpjYWxsLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg c2htX3JwYyAqc2htX3JwYykKPiArewo+ICsgICAgaWYgKCBzaG1fcnBjLT54ZW5fYXJnLT5wYXJh bXNbMF0uYXR0ciAhPSAoT1BURUVfTVNHX0FUVFJfVFlQRV9UTUVNX09VVFBVVCB8Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BURUVfTVNHX0FUVFJfTk9O Q09OVElHKSApCj4gKyAgICB7Cj4gKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfV0FSTklORywgIklu dmFsaWQgYXR0cnMgZm9yIHNoYXJlZCBtZW0gYnVmZmVyXG4iKTsKPiArICAgICAgICByZXR1cm47 Cj4gKyAgICB9Cj4gKwo+ICsgICAgLyogTGFzdCBlbnRyeSBpbiBub25fY29udGlnIGFycmF5IGlz IHVzZWQgdG8gaG9sZCBSUEMtYWxsb2NhdGVkIGJ1ZmZlciAqLwo+ICsgICAgaWYgKCBjYWxsLT5u b25fY29udGlnW01BWF9OT05DT05USUdfRU5UUklFUyAtIDFdICkKPiArICAgIHsKPiArICAgICAg ICBmcmVlX3hlbmhlYXBfcGFnZXMoY2FsbC0+bm9uX2NvbnRpZ1tNQVhfTk9OQ09OVElHX0VOVFJJ RVMgLSAxXSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC0+bm9uX2NvbnRpZ19v cmRlcltNQVhfTk9OQ09OVElHX0VOVFJJRVMgLSAxXSk7Cj4gKyAgICAgICAgY2FsbC0+bm9uX2Nv bnRpZ1tNQVhfTk9OQ09OVElHX0VOVFJJRVMgLSAxXSA9IE5VTEw7Cj4gKyAgICB9CgpUaGlzIGlz IHF1aXRlIG9kZC4gV2h5IGRvbid0IHlvdSBqdXN0IGRlbnkgYWxsb2NhdGluZyBpbmZvcm1hdGlv biBpbiB0aGUgCm5vbl9jb25maWcgYXJyYXk/IFRoaXMgd291bGQgYXZvaWQgdG8gc2lsZW50bHkg ZHJvcHBlZCBhbnkgcGFnZSB0aGF0IG1heSAKaGF2ZSBiZWVuIGxpbmtlZCB0b2dldGhlciBhbmQg cG90ZW50aWFsbHkgdXNlZCBzdGlsbCBpbiB1c2UuCgpJIHdvdWxkIGFsc28gcHJlZmVyIGlmIHlv dSBpbnRyb2R1Y2UgYSBkZWZpbmUgZm9yIHRoYXQgUkNQLWFsbG9jYXRlZCBidWZmZXIuCgo+ICsg ICAgdHJhbnNsYXRlX25vbmNvbnRpZyhjdHgsIGNhbGwsIHNobV9ycGMtPnhlbl9hcmctPnBhcmFt cyArIDAsCgpXaGF0IGRvZXMgdGhlICIrIDAiIHN0YW5kIGZvcj8KCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgIE1BWF9OT05DT05USUdfRU5UUklFUyAtIDEpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBoYW5kbGVfcnBjX2NtZChzdHJ1Y3QgZG9tYWluX2N0eCAqY3R4LCBzdHJ1Y3QgY3B1X3Vz ZXJfcmVncyAqcmVncywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0ZF9j YWxsX2N0eCAqY2FsbCkKPiArewo+ICsgICAgc3RydWN0IHNobV9ycGMgKnNobV9ycGM7Cj4gKyAg ICB1aW50NjRfdCBjb29raWU7Cj4gKyAgICBpbnQgbnVtX3BhcmFtczsKPiArCj4gKyAgICBjb29r aWUgPSBnZXRfdXNlcl9yZWcocmVncywgMSkgPDwgMzIgfCBnZXRfdXNlcl9yZWcocmVncywgMik7 Cj4gKwo+ICsgICAgc2htX3JwYyA9IGZpbmRfc2htX3JwYyhjdHgsIGNvb2tpZSk7Cj4gKwo+ICsg ICAgaWYgKCAhc2htX3JwYyApCj4gKyAgICB7Cj4gKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJS LCAiQ2FuJ3QgZmluZCBTSE0tUlBDIHdpdGggY29va2llICVseFxuIiwgY29va2llKTsKPiArICAg ICAgICByZXR1cm47Cj4gKyAgICB9Cj4gKwo+ICsgICAgbnVtX3BhcmFtcyA9IHNobV9ycGMtPmd1 ZXN0X2FyZy0+bnVtX3BhcmFtczsKPiArCj4gKyAgICBiYXJyaWVyKCk7IC8qIEVuc3VyZSB0aGF0 IG51bV9wYXJhbXMgaXMgcmVhZCBvbmNlICovCgpJIHdvdWxkIHVzZToKCm51bV9wYXJhbXMgPSBB Q0NFU1NfT05DRShzaG1fcnBjLT5ndWVzdF9hcmctPm51bV9wYXJhbXMpOwoKPiArICAgIGlmICgg T1BURUVfTVNHX0dFVF9BUkdfU0laRShudW1fcGFyYW1zKSA+IE9QVEVFX01TR19OT05DT05USUdf UEFHRV9TSVpFICkKPiArICAgICAgICByZXR1cm47Cj4gKwo+ICsgICAgbWVtY3B5KHNobV9ycGMt Pnhlbl9hcmcsIHNobV9ycGMtPmd1ZXN0X2FyZywKPiArICAgICAgICAgICBPUFRFRV9NU0dfR0VU X0FSR19TSVpFKG51bV9wYXJhbXMpKTsKPiArCj4gKyAgICBzd2l0Y2ggKHNobV9ycGMtPnhlbl9h cmctPmNtZCkgewo+ICsgICAgY2FzZSBPUFRFRV9NU0dfUlBDX0NNRF9HRVRfVElNRToKPiArICAg ICAgICBicmVhazsKPiArICAgIGNhc2UgT1BURUVfTVNHX1JQQ19DTURfV0FJVF9RVUVVRToKPiAr ICAgICAgICBicmVhazsKPiArICAgIGNhc2UgT1BURUVfTVNHX1JQQ19DTURfU1VTUEVORDoKPiAr ICAgICAgICBicmVhazsKPiArICAgIGNhc2UgT1BURUVfTVNHX1JQQ19DTURfU0hNX0FMTE9DOgo+ ICsgICAgICAgIGhhbmRsZV9ycGNfY21kX2FsbG9jKGN0eCwgcmVncywgY2FsbCwgc2htX3JwYyk7 Cj4gKyAgICAgICAgYnJlYWs7Cj4gKyAgICBjYXNlIE9QVEVFX01TR19SUENfQ01EX1NITV9GUkVF Ogo+ICsgICAgICAgIGZyZWVfc2htX2J1ZihjdHgsIHNobV9ycGMtPnhlbl9hcmctPnBhcmFtc1sw XS51LnZhbHVlLmIpOwo+ICsgICAgICAgIGJyZWFrOwo+ICsgICAgZGVmYXVsdDoKPiArICAgICAg ICBicmVhazsKPiArICAgIH0KPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkIGhhbmRsZV9ycGNfZnVu Y19hbGxvYyhzdHJ1Y3QgZG9tYWluX2N0eCAqY3R4LAo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQo+ICAgewo+IEBAIC03OTYs MTMgKzkxMywxMSBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfcnBjX2Z1bmNfYWxsb2Moc3RydWN0IGRv bWFpbl9jdHggKmN0eCwKPiAgICAgICAgICAgc3RydWN0IHNobV9ycGMgKnNobV9ycGM7Cj4gICAK PiAgICAgICAgICAgc2htX3JwYyA9IGFsbG9jYXRlX2FuZF9tYXBfc2htX3JwYyhjdHgsIHB0ciwg Y29va2llKTsKPiAtICAgICAgICBpZiAoICFzaG1fcnBjICkKPiAtICAgICAgICB7Cj4gKyAgICAg ICAgaWYgKCAhc2htX3JwYyApIHsKClBsZWFzZSB0cnkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGNv ZGluZyBzdHlsZSBpbiBkaWZmZXJlbnQgcGF0Y2guIEJ1dCAKdGhpcyBvbmUgaXMgd3JvbmcuCgo+ ICAgICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfV0FSTklORywgIkZhaWxlZCB0byBhbGxvY2F0 ZSBzaG1fcnBjIG9iamVjdFxuIik7Cj4gLSAgICAgICAgICAgIHB0ciA9IDA7Cj4gLSAgICAgICAg fQo+IC0gICAgICAgIGVsc2UKPiAtICAgICAgICAgICAgcHRyID0gbWZuX3RvX21hZGRyKHNobV9y cGMtPmd1ZXN0X21mbik7Cj4gKyAgICAgICAgICAgIHB0ciA9IH4wOwoKQ2FuIHlvdSBleHBsYWlu IHdoeSB5b3UgY2hhbmdlIGZyb20gMCB0byB+MD8KCj4gKyAgICAgICAgfSBlbHNlCj4gKyAgICAg ICAgICAgIHB0ciA9IHZpcnRfdG9fbWFkZHIoc2htX3JwYy0+eGVuX2FyZyk7Cj4gICAKPiAgICAg ICAgICAgc2V0X3VzZXJfcmVnKHJlZ3MsIDEsIHB0ciA+PiAzMik7Cj4gICAgICAgICAgIHNldF91 c2VyX3JlZyhyZWdzLCAyLCBwdHIgJiAweEZGRkZGRkZGKTsKPiBAQCAtODMzLDcgKzk0OCw3IEBA IHN0YXRpYyBib29sIGhhbmRsZV9ycGMoc3RydWN0IGRvbWFpbl9jdHggKmN0eCwgc3RydWN0IGNw dV91c2VyX3JlZ3MgKnJlZ3MpCj4gICAgICAgY2FzZSBPUFRFRV9TTUNfUlBDX0ZVTkNfRk9SRUlH Tl9JTlRSOgo+ICAgICAgICAgICBicmVhazsKPiAgICAgICBjYXNlIE9QVEVFX1NNQ19SUENfRlVO Q19DTUQ6Cj4gLSAgICAgICAgLyogVE9ETzogQWRkIGhhbmRsaW5nICovCj4gKyAgICAgICAgaGFu ZGxlX3JwY19jbWQoY3R4LCByZWdzLCBjYWxsKTsKPiAgICAgICAgICAgYnJlYWs7Cj4gICAgICAg fQo+ICAgCj4gCgpDaGVlcnMsCgotLSAKSnVsaWVuIEdyYWxsCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs