From mboxrd@z Thu Jan 1 00:00:00 1970 From: Volodymyr Babchuk Subject: [PATCH v5 07/10] xen/arm: optee: add support for arbitrary shared memory Date: Tue, 21 May 2019 21:26:10 +0000 Message-ID: <20190521212530.12706-8-volodymyr_babchuk@epam.com> References: <20190521212530.12706-1-volodymyr_babchuk@epam.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hTCH1-0008ME-1t for xen-devel@lists.xenproject.org; Tue, 21 May 2019 21:26:15 +0000 In-Reply-To: <20190521212530.12706-1-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: "xen-devel@lists.xenproject.org" Cc: "tee-dev@lists.linaro.org" , Julien Grall , Stefano Stabellini , Volodymyr Babchuk List-Id: xen-devel@lists.xenproject.org U2hhcmVkIG1lbW9yeSBpcyB3aWRlbHkgdXNlZCBieSBOVyAoTm9ybWFsIFdvcmxkKSB0byBjb21t dW5pY2F0ZSB3aXRoClRBcyAoVHJ1c3RlZCBBcHBsaWNhdGlvbnMpIGluIE9QLVRFRS4gTlcgY2Fu IHNoYXJlIHBhcnQgb2Ygb3duIG1lbW9yeQp3aXRoIFRBIG9yIHdpdGggT1AtVEVFIGNvcmUsIGJ5 IHJlZ2lzdGVyaW5nIGl0IGluIE9QLVRFRSwgb3IgYnkKcHJvdmlkaW5nIGEgdGVtcG9yYWwgcmVm ZXJlbmNlLiBBbnl3YXlzLCBpbmZvcm1hdGlvbiBhYm91dCBzdWNoIG1lbW9yeQpidWZmZXJzIGFy ZSBzZW50IHRvIE9QLVRFRSBhcyBhIGxpc3Qgb2YgcGFnZXMuIFRoaXMgbWVjaGFuaXNtIGlzCmRl c2NyaWJlZCBpbiBvcHRlZV9tc2cuaC4KCk1lZGlhdG9yIHNob3VsZCBzdGVwIGluIHdoZW4gTlcg dHJpZXMgdG8gc2hhcmUgbWVtb3J5IHdpdGgKT1AtVEVFIGZvciB0d28gcmVhc29uczoKCjEuIERv IGFkZHJlc3MgdHJhbnNsYXRpb24gZnJvbSBJUEEgdG8gUEEuCjIuIFBpbiBkb21haW4gcGFnZXMg d2hpbGUgdGhleSBhcmUgbWFwcGVkIGludG8gT1AtVEVFIG9yIFRBCiAgIGFkZHJlc3Mgc3BhY2Us IHNvIGRvbWFpbiBjYW4ndCB0cmFuc2ZlciB0aGlzIHBhZ2VzIHRvCiAgIG90aGVyIGRvbWFpbiBv ciBiYWxsb29uIG91dCB0aGVtLgoKQWRkcmVzcyB0cmFuc2xhdGlvbiBpcyBkb25lIGJ5IHRyYW5z bGF0ZV9ub25jb250aWcoLi4uKSBmdW5jdGlvbi4KSXQgYWxsb2NhdGVzIG5ldyBidWZmZXIgZnJv bSBkb21oZWFwIGFuZCB0aGVuIHdhbGtzIG9uIGd1ZXN0CnByb3ZpZGVkIGxpc3Qgb2YgcGFnZXMs IHRyYW5zbGF0ZXMgYWRkcmVzc2VzIGFuZCBzdG9yZXMgUEFzIGludG8KbmV3bHkgYWxsb2NhdGVk IGJ1ZmZlci4gVGhpcyBidWZmZXIgd2lsbCBiZSBwcm92aWRlZCB0byBPUC1URUUKaW5zdGVhZCBv ZiBvcmlnaW5hbCBidWZmZXIgZnJvbSB0aGUgZ3Vlc3QuIFRoaXMgYnVmZmVyIHdpbGwKYmUgZnJl ZWQgYXQgdGhlIGVuZCBvZiBzdGFuZGFyZCBjYWxsLgoKSW4gdGhlIHNhbWUgdGltZSB0aGlzIGZ1 bmN0aW9uIHBpbnMgcGFnZXMgYW5kIHN0b3JlcyB0aGVtIGluCnN0cnVjdCBvcHRlZV9zaG1fYnVm IG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBsaXZlIGFsbCB0aGUgdGltZSwKd2hlbiBnaXZlbiBT SE0gYnVmZmVyIGlzIGtub3duIHRvIE9QLVRFRS4gSXQgd2lsbCBiZSBmcmVlZAphZnRlciBndWVz dCB1bnJlZ2lzdGVycyBzaGFyZWQgYnVmZmVyLiBBdCB0aGlzIHRpbWUgcGFnZXMKd2lsbCBiZSB1 bnBpbm5lZC4KCkd1ZXN0IGNhbiBzaGFyZSBidWZmZXIgd2l0aCBPUC1URUUgZm9yIGR1cmF0aW9u IGZvciBvbmUgY2FsbCwKb3IgcGVybWFuZW50bHksIHVzaW5nIE9QVEVFX01TR19DTURfUkVHSVNU RVJfU0hNIGNhbGwuIFdlIG5lZWQKdG8gaGFuZGxlIGJvdGggb3B0aW9ucy4KCkFsc28gd2Ugd2Fu dCB0byBsaW1pdCB0b3RhbCBzaXplIG9mIHNoYXJlZCBidWZmZXJzLiBBcyBpdCBpcyBub3QKcG9z c2libGUgdG8gZ2V0IGxpbWl0IGZyb20gT1AtVEVFLCB3ZSBuZWVkIHRvIGNob29zZSBzb21lIGFy Yml0cmFyeQp2YWx1ZS4gQ3VycmVudGx5IGxpbWl0IGlzIDE2Mzg0IG9mIDRLIHBhZ2VzLgoKU2ln bmVkLW9mZi1ieTogVm9sb2R5bXlyIEJhYmNodWsgPHZvbG9keW15cl9iYWJjaHVrQGVwYW0uY29t PgotLS0KIEFsbCB0aGUgcGF0Y2hlcyB0byBvcHRlZS5jIHNob3VsZCBiZSBtZXJnZWQgdG9nZXRo ZXIuIFRoZXkgd2VyZQogc3BsaXQgdG8gZWFzZSB1cCByZXZpZXcuIEJ1dCB0aGV5IGRlcGVuZCBo ZWF2aWx5IG9uIGVhY2ggb3RoZXIuCgogQ2hhbmdlcyBmcm9tIHYzOgogLSBSZXdvcmtlZCBwYWdl bGlzdHMgc3RvcmFnZSAtIHRoZXJlIGlzIG5vIG1vcmUgc3RhdGljIHN0b3JhZ2UgZm9yCiAgIDUg YnVmZmVycywgaW5zdGVhZCBzdHJ1Y3R1cmUgd2l0aCBhbGwgZGF0YSBpcyBhbGxvY2F0ZWQgZHlu YW1pY2FsbHkKIC0gTm93IHRoaXMgY29kZSB1c2VzIGRvbWhlYXAgaW5zdGVhZCBvZiB4ZW5oZWFw CiAtIFZhcmlvdXMgc3R5bGUgZml4ZXMKIC0gZ2RwcmludGsoKSBmaXhlcwoKIENoYW5nZXMgZnJv bSB2MjoKIC0gTWFkZSBzdXJlIHRoYXQgZ3Vlc3QgZG9lcyBub3QgdHJpZXMgdG8gcmVnaXN0ZXIg c2hhcmVkIGJ1ZmZlciB3aXRoCiAgIHRoZSBzYW1lIGNvb2tpZSB0d2ljZQogLSBGaXhlZCBjb2Rp bmcgc3R5bGUKIC0gVXNlIGFjY2Vzc19ndWVzdF9tZW1vcnlfYnlfaXBhKCkgaW5zdGVhZCBvZiBk aXJlY3QgbWVtb3J5IG1hcHBpbmcKLS0tCiB4ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMgfCA0MTMg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwg NDEzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMg Yi94ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMKaW5kZXggMTc1Nzg5ZmIwMC4uNGI0MWJjZGU5ZiAx MDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3RlZS9vcHRlZS5jCisrKyBiL3hlbi9hcmNoL2FybS90 ZWUvb3B0ZWUuYwpAQCAtNTMsOSArNTMsMjEgQEAKICAqLwogI2RlZmluZSBURUVDX0VSUk9SX0JB RF9QQVJBTUVURVJTIDB4RkZGRjAwMDYKIAorLyogIlN5c3RlbSByYW4gb3V0IG9mIHJlc291cmNl cyIgYXMgaW4gR1AgVEVFIENsaWVudCBBUEkgU3BlY2lmaWNhdGlvbiAqLworI2RlZmluZSBURUVD X0VSUk9SX09VVF9PRl9NRU1PUlkgMHhGRkZGMDAwQworCiAvKiBDbGllbnQgSUQgMCBpcyByZXNl cnZlZCBmb3IgdGhlIGh5cGVydmlzb3IgaXRzZWxmICovCiAjZGVmaW5lIE9QVEVFX0NMSUVOVF9J RChkb21haW4pICgoZG9tYWluKS0+ZG9tYWluX2lkICsgMSkKIAorLyoKKyAqIE1heGltdW0gdG90 YWwgbnVtYmVyIG9mIHBhZ2VzIHRoYXQgZ3Vlc3QgY2FuIHNoYXJlIHdpdGgKKyAqIE9QLVRFRS4g Q3VycmVudGx5IHZhbHVlIGlzIHNlbGVjdGVkIGFyYml0cmFyeS4gQWN0dWFsIG51bWJlciBvZgor ICogcGFnZXMgZGVwZW5kcyBvbiBmcmVlIGhlYXAgaW4gT1AtVEVFLiBBcyB3ZSBjYW4ndCBkbyBh bnkKKyAqIGFzc3VtcHRpb25zIGFib3V0IE9QLVRFRSBoZWFwIHVzYWdlLCB3ZSBsaW1pdCBudW1i ZXIgb2YgcGFnZXMKKyAqIGFyYml0cmFyeS4KKyAqLworI2RlZmluZSBNQVhfVE9UQUxfU01IX0JV Rl9QRyAgICAxNjM4NAorCiAjZGVmaW5lIE9QVEVFX0tOT1dOX05TRUNfQ0FQUyBPUFRFRV9TTUNf TlNFQ19DQVBfVU5JUFJPQ0VTU09SCiAjZGVmaW5lIE9QVEVFX0tOT1dOX1NFQ19DQVBTIChPUFRF RV9TTUNfU0VDX0NBUF9IQVZFX1JFU0VSVkVEX1NITSB8IFwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9QVEVFX1NNQ19TRUNfQ0FQX1VOUkVHSVNURVJFRF9TSE0gfCBcCkBAIC04OCwx MSArMTAwLDMxIEBAIHN0cnVjdCBzaG1fcnBjIHsKICAgICB1aW50NjRfdCBjb29raWU7CiB9Owog CisvKiBTaGFyZWQgbWVtb3J5IGJ1ZmZlciBmb3IgYXJiaXRyYXJ5IGRhdGEgKi8KK3N0cnVjdCBv cHRlZV9zaG1fYnVmIHsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisgICAgdWludDY0X3Qg Y29va2llOworICAgIHVuc2lnbmVkIGludCBwYWdlX2NudDsKKyAgICAvKgorICAgICAqIFNoYWRv d2VkIGNvbnRhaW5lciBmb3IgbGlzdCBvZiBwYWdlcyB0aGF0IGd1ZXN0IHRyaWVzIHRvIHNoYXJl CisgICAgICogd2l0aCBPUC1URUUuIFRoaXMgaXMgbm90IHRoZSBsaXN0IG9mIHBhZ2VzIHRoYXQg Z3Vlc3Qgc2hhcmVkCisgICAgICogd2l0aCBPUC1URUUsIGJ1dCBjb250YWluZXIgZm9yIGxpc3Qg b2YgdGhvc2UgcGFnZXMuIENoZWNrCisgICAgICogT1BURUVfTVNHX0FUVFJfTk9OQ09OVElHIGRl ZmluaXRpb24gaW4gb3B0ZWVfbXNnLmggZm9yIG1vcmUKKyAgICAgKiBpbmZvcm1hdGlvbi4KKyAg ICAgKi8KKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZ19saXN0OworICAgIHVuc2lnbmVkIGludCBw Z19saXN0X29yZGVyOworICAgIC8qIFBpbm5lZCBndWVzdCBwYWdlcyB0aGF0IGFyZSBzaGFyZWQg d2l0aCBPUC1URUUgKi8KKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlc1tdOworfTsKKwogLyog RG9tYWluIGNvbnRleHQgKi8KIHN0cnVjdCBvcHRlZV9kb21haW4gewogICAgIHN0cnVjdCBsaXN0 X2hlYWQgY2FsbF9saXN0OwogICAgIHN0cnVjdCBsaXN0X2hlYWQgc2htX3JwY19saXN0OworICAg IHN0cnVjdCBsaXN0X2hlYWQgb3B0ZWVfc2htX2J1Zl9saXN0OwogICAgIGF0b21pY190IGNhbGxf Y291bnQ7CisgICAgYXRvbWljX3Qgb3B0ZWVfc2htX2J1Zl9wYWdlczsKICAgICBzcGlubG9ja190 IGxvY2s7CiB9OwogCkBAIC0xNjcsNyArMTk5LDkgQEAgc3RhdGljIGludCBvcHRlZV9kb21haW5f aW5pdChzdHJ1Y3QgZG9tYWluICpkKQogCiAgICAgSU5JVF9MSVNUX0hFQUQoJmN0eC0+Y2FsbF9s aXN0KTsKICAgICBJTklUX0xJU1RfSEVBRCgmY3R4LT5zaG1fcnBjX2xpc3QpOworICAgIElOSVRf TElTVF9IRUFEKCZjdHgtPm9wdGVlX3NobV9idWZfbGlzdCk7CiAgICAgYXRvbWljX3NldCgmY3R4 LT5jYWxsX2NvdW50LCAwKTsKKyAgICBhdG9taWNfc2V0KCZjdHgtPm9wdGVlX3NobV9idWZfcGFn ZXMsIDApOwogICAgIHNwaW5fbG9ja19pbml0KCZjdHgtPmxvY2spOwogCiAgICAgZC0+YXJjaC50 ZWUgPSBjdHg7CkBAIC0zNzYsMTEgKzQxMCwxNDIgQEAgc3RhdGljIHZvaWQgZnJlZV9zaG1fcnBj KHN0cnVjdCBvcHRlZV9kb21haW4gKmN0eCwgdWludDY0X3QgY29va2llKQogICAgIHhmcmVlKHNo bV9ycGMpOwogfQogCitzdGF0aWMgc3RydWN0IG9wdGVlX3NobV9idWYgKmFsbG9jYXRlX29wdGVl X3NobV9idWYoc3RydWN0IG9wdGVlX2RvbWFpbiAqY3R4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNvb2tpZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg cGFnZXNfY250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBnX2xpc3Rfb3JkZXIp Cit7CisgICAgc3RydWN0IG9wdGVlX3NobV9idWYgKm9wdGVlX3NobV9idWYsICpvcHRlZV9zaG1f YnVmX3RtcDsKKyAgICBpbnQgb2xkLCBuZXc7CisgICAgaW50IGVycl9jb2RlOworCisgICAgZG8K KyAgICB7CisgICAgICAgIG9sZCA9IGF0b21pY19yZWFkKCZjdHgtPm9wdGVlX3NobV9idWZfcGFn ZXMpOworICAgICAgICBuZXcgPSBvbGQgKyBwYWdlc19jbnQ7CisgICAgICAgIGlmICggbmV3ID49 IE1BWF9UT1RBTF9TTUhfQlVGX1BHICkKKyAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9N RU0pOworICAgIH0KKyAgICB3aGlsZSAoIHVubGlrZWx5KG9sZCAhPSBhdG9taWNfY21weGNoZygm Y3R4LT5vcHRlZV9zaG1fYnVmX3BhZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9sZCwgbmV3KSkgKTsKKworICAgIC8qCisgICAgICogVE9ETzogR3Vlc3Qg Y2FuIHRyeSB0byByZWdpc3RlciBtYW55IHNtYWxsIGJ1ZmZlcnMsIHRodXMsIGZvcmNpbmcKKyAg ICAgKiBYRU4gdG8gYWxsb2NhdGUgY29udGV4dCBmb3IgZXZlcnkgYnVmZmVyLiBQcm9iYWJseSB3 ZSBuZWVkIHRvCisgICAgICogbGltaXQgbm90IG9ubHkgdG90YWwgbnVtYmVyIG9mIHBhZ2VzIHBp bm5lZCBidXQgYWxzbyBudW1iZXIKKyAgICAgKiBvZiBidWZmZXIgb2JqZWN0cy4KKyAgICAgKi8K KyAgICBvcHRlZV9zaG1fYnVmID0geHphbGxvY19ieXRlcyhzaXplb2Yoc3RydWN0IG9wdGVlX3No bV9idWYpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlc19jbnQgKiBz aXplb2Yoc3RydWN0IHBhZ2UgKikpOworICAgIGlmICggIW9wdGVlX3NobV9idWYgKQorICAgIHsK KyAgICAgICAgZXJyX2NvZGUgPSAtRU5PTUVNOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisK KyAgICBvcHRlZV9zaG1fYnVmLT5jb29raWUgPSBjb29raWU7CisgICAgb3B0ZWVfc2htX2J1Zi0+ cGdfbGlzdCA9IHBnX2xpc3Q7CisgICAgb3B0ZWVfc2htX2J1Zi0+cGdfbGlzdF9vcmRlciA9IHBn X2xpc3Rfb3JkZXI7CisKKyAgICBzcGluX2xvY2soJmN0eC0+bG9jayk7CisgICAgLyogQ2hlY2sg aWYgdGhlcmUgaXMgYWxyZWFkeSBTSE0gd2l0aCB0aGUgc2FtZSBjb29raWUgKi8KKyAgICBsaXN0 X2Zvcl9lYWNoX2VudHJ5KCBvcHRlZV9zaG1fYnVmX3RtcCwgJmN0eC0+b3B0ZWVfc2htX2J1Zl9s aXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlmICggb3B0ZWVfc2htX2J1Zl90bXAtPmNvb2tp ZSA9PSBjb29raWUgKQorICAgICAgICB7CisgICAgICAgICAgICBzcGluX3VubG9jaygmY3R4LT5s b2NrKTsKKyAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiR3Vlc3QgdHJpZXMg dG8gdXNlIHRoZSBzYW1lIFNITSBidWZmZXIgY29va2llICVseFxuIiwKKyAgICAgICAgICAgICAg ICAgICAgIGNvb2tpZSk7CisgICAgICAgICAgICBlcnJfY29kZSA9IC1FSU5WQUw7CisgICAgICAg ICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxpc3RfYWRkX3RhaWwoJm9w dGVlX3NobV9idWYtPmxpc3QsICZjdHgtPm9wdGVlX3NobV9idWZfbGlzdCk7CisgICAgc3Bpbl91 bmxvY2soJmN0eC0+bG9jayk7CisKKyAgICByZXR1cm4gb3B0ZWVfc2htX2J1ZjsKKworZXJyOgor ICAgIHhmcmVlKG9wdGVlX3NobV9idWYpOworICAgIGF0b21pY19zdWIocGFnZXNfY250LCAmY3R4 LT5vcHRlZV9zaG1fYnVmX3BhZ2VzKTsKKworICAgIHJldHVybiBFUlJfUFRSKGVycl9jb2RlKTsK K30KKworc3RhdGljIHZvaWQgZnJlZV9wZ19saXN0KHN0cnVjdCBvcHRlZV9zaG1fYnVmICpvcHRl ZV9zaG1fYnVmKQoreworICAgIGlmICggb3B0ZWVfc2htX2J1Zi0+cGdfbGlzdCApCisgICAgewor ICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZXMob3B0ZWVfc2htX2J1Zi0+cGdfbGlzdCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9wdGVlX3NobV9idWYtPnBnX2xpc3Rfb3JkZXIpOworICAg ICAgICBvcHRlZV9zaG1fYnVmLT5wZ19saXN0ID0gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyB2 b2lkIGZyZWVfb3B0ZWVfc2htX2J1ZihzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpjdHgsIHVpbnQ2NF90 IGNvb2tpZSkKK3sKKyAgICBzdHJ1Y3Qgb3B0ZWVfc2htX2J1ZiAqb3B0ZWVfc2htX2J1ZjsKKyAg ICB1bnNpZ25lZCBpbnQgaTsKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisKKyAgICBzcGluX2xv Y2soJmN0eC0+bG9jayk7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggb3B0ZWVfc2htX2J1Ziwg JmN0eC0+b3B0ZWVfc2htX2J1Zl9saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlmICggb3B0 ZWVfc2htX2J1Zi0+Y29va2llID09IGNvb2tpZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGxpc3RfZGVsKCZvcHRlZV9zaG1fYnVmLT5saXN0KTsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHNwaW5fdW5sb2NrKCZj dHgtPmxvY2spOworCisgICAgaWYgKCAhZm91bmQgKQorICAgICAgICByZXR1cm47CisKKyAgICBm b3IgKCBpID0gMDsgaSA8IG9wdGVlX3NobV9idWYtPnBhZ2VfY250OyBpKysgKQorICAgICAgICBp ZiAoIG9wdGVlX3NobV9idWYtPnBhZ2VzW2ldICkKKyAgICAgICAgICAgIHB1dF9wYWdlKG9wdGVl X3NobV9idWYtPnBhZ2VzW2ldKTsKKworICAgIGZyZWVfcGdfbGlzdChvcHRlZV9zaG1fYnVmKTsK KworICAgIGF0b21pY19zdWIob3B0ZWVfc2htX2J1Zi0+cGFnZV9jbnQsICZjdHgtPm9wdGVlX3No bV9idWZfcGFnZXMpOworCisgICAgeGZyZWUob3B0ZWVfc2htX2J1Zik7Cit9CisKK3N0YXRpYyB2 b2lkIGZyZWVfb3B0ZWVfc2htX2J1Zl9wZ19saXN0KHN0cnVjdCBvcHRlZV9kb21haW4gKmN0eCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNvb2tpZSkK K3sKKyAgICBzdHJ1Y3Qgb3B0ZWVfc2htX2J1ZiAqb3B0ZWVfc2htX2J1ZjsKKyAgICBib29sIGZv dW5kID0gZmFsc2U7CisKKyAgICBzcGluX2xvY2soJmN0eC0+bG9jayk7CisgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeSggb3B0ZWVfc2htX2J1ZiwgJmN0eC0+b3B0ZWVfc2htX2J1Zl9saXN0LCBsaXN0 ICkKKyAgICB7CisgICAgICAgIGlmICggb3B0ZWVfc2htX2J1Zi0+Y29va2llID09IGNvb2tpZSAp CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr OworICAgICAgICB9CisgICAgfQorICAgIHNwaW5fdW5sb2NrKCZjdHgtPmxvY2spOworCisgICAg aWYgKCBmb3VuZCApCisgICAgICAgIGZyZWVfcGdfbGlzdChvcHRlZV9zaG1fYnVmKTsKKyAgICBl bHNlCisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19FUlIsICJDYW4ndCBmaW5kIHBhZ2VsaXN0IGZv ciBTSE0gYnVmZmVyIHdpdGggY29va2llICVseCB0byBmcmVlIGl0XG4iLAorICAgICAgICAgICAg ICAgICBjb29raWUpOworfQorCiBzdGF0aWMgaW50IG9wdGVlX3JlbGlucXVpc2hfcmVzb3VyY2Vz KHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgc3RydWN0IGFybV9zbWNjY19yZXMgcmVzcDsKICAg ICBzdHJ1Y3Qgb3B0ZWVfc3RkX2NhbGwgKmNhbGwsICpjYWxsX3RtcDsKICAgICBzdHJ1Y3Qgc2ht X3JwYyAqc2htX3JwYywgKnNobV9ycGNfdG1wOworICAgIHN0cnVjdCBvcHRlZV9zaG1fYnVmICpv cHRlZV9zaG1fYnVmLCAqb3B0ZWVfc2htX2J1Zl90bXA7CiAgICAgc3RydWN0IG9wdGVlX2RvbWFp biAqY3R4ID0gZC0+YXJjaC50ZWU7CiAKICAgICBpZiAoICFjdHggKQpAQCAtNDA3LDYgKzU3Miwx NyBAQCBzdGF0aWMgaW50IG9wdGVlX3JlbGlucXVpc2hfcmVzb3VyY2VzKHN0cnVjdCBkb21haW4g KmQpCiAgICAgaWYgKCBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygpICkKICAgICAgICAgcmV0dXJu IC1FUkVTVEFSVDsKIAorICAgIC8qCisgICAgICogVE9ETzogR3Vlc3QgY2FuIHBpbiB1cCB0byBN QVhfVE9UQUxfU01IX0JVRl9QRyBwYWdlcyBhbmQgYWxsIG9mCisgICAgICogdGhlbSB3aWxsIGJl IHB1dCBpbiB0aGlzIGxvb3AuIEl0IGlzIHdvcnRoIGNvbnNpZGVyaW5nIHRvCisgICAgICogY2hl Y2sgZm9yIHByZWVtcHRpb24gaW5zaWRlIHRoZSBsb29wLgorICAgICAqLworICAgIGxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZSggb3B0ZWVfc2htX2J1Ziwgb3B0ZWVfc2htX2J1Zl90bXAsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmY3R4LT5vcHRlZV9zaG1fYnVmX2xpc3QsIGxpc3Qg KQorICAgICAgICBmcmVlX29wdGVlX3NobV9idWYoY3R4LCBvcHRlZV9zaG1fYnVmLT5jb29raWUp OworCisgICAgaWYgKCBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygpICkKKyAgICAgICAgcmV0dXJu IC1FUkVTVEFSVDsKICAgICAvKgogICAgICAqIEluZm9ybSBPUC1URUUgdGhhdCBkb21haW4gaXMg c2h1dHRpbmcgZG93bi4gVGhpcyBpcwogICAgICAqIGFsc28gYSBmYXN0IFNNQyBjYWxsLCBsaWtl IE9QVEVFX1NNQ19WTV9DUkVBVEVELCBzbwpAQCAtNDIxLDYgKzU5Nyw3IEBAIHN0YXRpYyBpbnQg b3B0ZWVfcmVsaW5xdWlzaF9yZXNvdXJjZXMoc3RydWN0IGRvbWFpbiAqZCkKIAogICAgIEFTU0VS VCghc3Bpbl9pc19sb2NrZWQoJmN0eC0+bG9jaykpOwogICAgIEFTU0VSVCghYXRvbWljX3JlYWQo JmN0eC0+Y2FsbF9jb3VudCkpOworICAgIEFTU0VSVCghYXRvbWljX3JlYWQoJmN0eC0+b3B0ZWVf c2htX2J1Zl9wYWdlcykpOwogICAgIEFTU0VSVChsaXN0X2VtcHR5KCZjdHgtPnNobV9ycGNfbGlz dCkpOwogCiAgICAgWEZSRUUoZC0+YXJjaC50ZWUpOwpAQCAtNDI4LDYgKzYwNSwxODYgQEAgc3Rh dGljIGludCBvcHRlZV9yZWxpbnF1aXNoX3Jlc291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQogICAg IHJldHVybiAwOwogfQogCisjZGVmaW5lIFBBR0VMSVNUX0VOVFJJRVNfUEVSX1BBR0UgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAoKE9QVEVFX01TR19OT05DT05USUdfUEFHRV9TSVpFIC8g c2l6ZW9mKHU2NCkpIC0gMSkKKworc3RhdGljIHNpemVfdCBnZXRfcGFnZXNfbGlzdF9zaXplKHNp emVfdCBudW1fZW50cmllcykKK3sKKyAgICBpbnQgcGFnZXMgPSBESVZfUk9VTkRfVVAobnVtX2Vu dHJpZXMsIFBBR0VMSVNUX0VOVFJJRVNfUEVSX1BBR0UpOworCisgICAgcmV0dXJuIHBhZ2VzICog T1BURUVfTVNHX05PTkNPTlRJR19QQUdFX1NJWkU7Cit9CisKK3N0YXRpYyBpbnQgdHJhbnNsYXRl X25vbmNvbnRpZyhzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpjdHgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IG9wdGVlX3N0ZF9jYWxsICpjYWxsLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBvcHRlZV9tc2dfcGFyYW0gKnBhcmFtKQoreworICAgIHVp bnQ2NF90IHNpemU7CisgICAgdW5zaWduZWQgaW50IG9mZnNldDsKKyAgICB1bnNpZ25lZCBpbnQg cGdfY291bnQ7CisgICAgdW5zaWduZWQgaW50IG9yZGVyOworICAgIHVuc2lnbmVkIGludCBpZHgg PSAwOworICAgIGdmbl90IGdmbjsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpndWVzdF9wZywgKnhl bl9wZ3M7CisgICAgc3RydWN0IG9wdGVlX3NobV9idWYgKm9wdGVlX3NobV9idWY7CisgICAgLyoK KyAgICAgKiBUaGlzIGlzIG1lbW9yeSBsYXlvdXQgZm9yIHBhZ2UgbGlzdC4gQmFzaWNhbGx5IGxp c3QgY29uc2lzdHMgb2YgNGsgcGFnZXMsCisgICAgICogZXZlcnkgcGFnZSBzdG9yZSA1MTEgcGFn ZSBhZGRyZXNzZXMgb2YgdXNlciBidWZmZXIgYW5kIHBhZ2UgYWRkcmVzcyBvZgorICAgICAqIHRo ZSBuZXh0IHBhZ2Ugb2YgbGlzdC4KKyAgICAgKgorICAgICAqIFJlZmVyIHRvIE9QVEVFX01TR19B VFRSX05PTkNPTlRJRyBkZXNjcmlwdGlvbiBpbiBvcHRlZV9tc2cuaCBmb3IgZGV0YWlscy4KKyAg ICAgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50NjRfdCBwYWdlc19saXN0W1BBR0VMSVNU X0VOVFJJRVNfUEVSX1BBR0VdOworICAgICAgICB1aW50NjRfdCBuZXh0X3BhZ2VfZGF0YTsKKyAg ICB9ICpndWVzdF9kYXRhLCAqeGVuX2RhdGE7CisKKyAgICAvKiBPZmZzZXQgb2YgdXNlciBidWZm ZXIgd2l0aGluZyBPUFRFRV9NU0dfTk9OQ09OVElHX1BBR0VfU0laRS1zaXplZCBwYWdlICovCisg ICAgb2Zmc2V0ID0gcGFyYW0tPnUudG1lbS5idWZfcHRyICYgKE9QVEVFX01TR19OT05DT05USUdf UEFHRV9TSVpFIC0gMSk7CisKKyAgICAvKiBTaXplIG9mIHRoZSB1c2VyIGJ1ZmZlciBpbiBieXRl cyAqLworICAgIHNpemUgPSBST1VORFVQKHBhcmFtLT51LnRtZW0uc2l6ZSArIG9mZnNldCwgT1BU RUVfTVNHX05PTkNPTlRJR19QQUdFX1NJWkUpOworCisgICAgcGdfY291bnQgPSBESVZfUk9VTkRf VVAoc2l6ZSwgT1BURUVfTVNHX05PTkNPTlRJR19QQUdFX1NJWkUpOworICAgIG9yZGVyID0gZ2V0 X29yZGVyX2Zyb21fYnl0ZXMoZ2V0X3BhZ2VzX2xpc3Rfc2l6ZShwZ19jb3VudCkpOworCisgICAg LyoKKyAgICAgKiBJbiB0aGUgd29yc3QgY2FzZSB3ZSB3aWxsIHdhbnQgdG8gYWxsb2NhdGUgMzMg cGFnZXMsIHdoaWNoIGlzCisgICAgICogTUFYX1RPVEFMX1NNSF9CVUZfUEcvNTExIHJvdW5kZWQg dXAuIFRoaXMgZ2l2ZXMgb3JkZXIgNiBvciBhdAorICAgICAqIG1vc3QgNjQgcGFnZXMgYWxsb2Nh dGVkLiBUaGlzIGJ1ZmZlciB3aWxsIGJlIGZyZWVkIHJpZ2h0IGFmdGVyCisgICAgICogdGhlIGVu ZCBvZiB0aGUgY2FsbCBhbmQgdGhlcmUgY2FuIGJlIG5vIG1vcmUgdGhhbgorICAgICAqIG1heF9v cHRlZV90aHJlYWRzIGNhbGxzIHNpbXVsdGFuZW91c2x5LiBTbyBpbiB0aGUgd29yc3QgY2FzZQor ICAgICAqIGd1ZXN0IGNhbiB0cmljayB1cyB0byBhbGxvY2F0ZSA2NCAqIG1heF9vcHRlZV90aHJl YWRzIHBhZ2VzIGluCisgICAgICogdG90YWwuCisgICAgICovCisgICAgeGVuX3BncyA9IGFsbG9j X2RvbWhlYXBfcGFnZXMoY3VycmVudC0+ZG9tYWluLCBvcmRlciwgMCk7CisgICAgaWYgKCAheGVu X3BncyApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgb3B0ZWVfc2htX2J1ZiA9IGFs bG9jYXRlX29wdGVlX3NobV9idWYoY3R4LCBwYXJhbS0+dS50bWVtLnNobV9yZWYsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfY291bnQsIHhlbl9wZ3MsIG9y ZGVyKTsKKyAgICBpZiAoIElTX0VSUihvcHRlZV9zaG1fYnVmKSApCisgICAgICAgIHJldHVybiBQ VFJfRVJSKG9wdGVlX3NobV9idWYpOworCisgICAgZ2ZuID0gZ2FkZHJfdG9fZ2ZuKHBhcmFtLT51 LnRtZW0uYnVmX3B0ciAmCisgICAgICAgICAgICAgICAgICAgICAgIH4oT1BURUVfTVNHX05PTkNP TlRJR19QQUdFX1NJWkUgLSAxKSk7CisKKyAgICB3aGlsZSAoIHBnX2NvdW50ICkKKyAgICB7Cisg ICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CisKKyAgICAgICAgaWYgKCBpZHggPT0gMCAp CisgICAgICAgIHsKKyAgICAgICAgICAgIGd1ZXN0X3BnID0gZ2V0X2RvbWFpbl9yYW1fcGFnZShn Zm4pOworICAgICAgICAgICAgaWYgKCAhZ3Vlc3RfcGcgKQorICAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOworCisgICAgICAgICAgICBndWVzdF9kYXRhID0gX19tYXBfZG9tYWluX3BhZ2Uo Z3Vlc3RfcGcpOworICAgICAgICAgICAgeGVuX2RhdGEgPSBfX21hcF9kb21haW5fcGFnZSh4ZW5f cGdzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86IFRoYXQgZnVu Y3Rpb24gY2FuIHBpbiB1cCB0byA2NE1CIG9mIGd1ZXN0IG1lbW9yeSBieQorICAgICAgICAgKiBj YWxsaW5nIGxvb2t1cF9hbmRfcGluX2d1ZXN0X3JhbV9hZGRyKCkgMTYzODQgdGltZXMuCisgICAg ICAgICAqIFRoaXMgaXMgY29uc2lkZXJlZCBpbnNlY3VyZSBhbmQgc2hvdWxkIGJlIGZpeGVkIGlu IHRoZSBmdXR1cmUuCisgICAgICAgICAqLworICAgICAgICBwYWdlID0gZ2V0X2RvbWFpbl9yYW1f cGFnZShnYWRkcl90b19nZm4oZ3Vlc3RfZGF0YS0+cGFnZXNfbGlzdFtpZHhdKSk7CisgICAgICAg IGlmICggIXBhZ2UgKQorICAgICAgICAgICAgZ290byBlcnJfdW5tYXA7CisKKyAgICAgICAgb3B0 ZWVfc2htX2J1Zi0+cGFnZXNbb3B0ZWVfc2htX2J1Zi0+cGFnZV9jbnQrK10gPSBwYWdlOworICAg ICAgICB4ZW5fZGF0YS0+cGFnZXNfbGlzdFtpZHhdID0gcGFnZV90b19tYWRkcihwYWdlKTsKKyAg ICAgICAgaWR4Kys7CisKKyAgICAgICAgaWYgKCBpZHggPT0gUEFHRUxJU1RfRU5UUklFU19QRVJf UEFHRSApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIFJvbGwgb3ZlciB0byB0aGUgbmV4dCBw YWdlICovCisgICAgICAgICAgICB4ZW5fZGF0YS0+bmV4dF9wYWdlX2RhdGEgPSBwYWdlX3RvX21h ZGRyKHhlbl9wZ3MgKyAxKTsKKyAgICAgICAgICAgIHhlbl9wZ3MrKzsKKworICAgICAgICAgICAg Z2ZuID0gZ2FkZHJfdG9fZ2ZuKGd1ZXN0X2RhdGEtPm5leHRfcGFnZV9kYXRhKTsKKworICAgICAg ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UoeGVuX2RhdGEpOworICAgICAgICAgICAgdW5tYXBfZG9t YWluX3BhZ2UoZ3Vlc3RfZGF0YSk7CisgICAgICAgICAgICBwdXRfcGFnZShndWVzdF9wZyk7CisK KyAgICAgICAgICAgIGlkeCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcGdfY291bnQtLTsKKyAg ICB9CisKKyAgICBpZiAoIGlkeCApCisgICAgeworICAgICAgICB1bm1hcF9kb21haW5fcGFnZShn dWVzdF9kYXRhKTsKKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UoeGVuX2RhdGEpOworICAgICAg ICBwdXRfcGFnZShndWVzdF9wZyk7CisgICAgfQorICAgIHBhcmFtLT51LnRtZW0uYnVmX3B0ciA9 IHBhZ2VfdG9fbWFkZHIob3B0ZWVfc2htX2J1Zi0+cGdfbGlzdCkgfCBvZmZzZXQ7CisKKyAgICBy ZXR1cm4gMDsKKworZXJyX3VubWFwOgorICAgIHVubWFwX2RvbWFpbl9wYWdlKGd1ZXN0X2RhdGEp OworICAgIHVubWFwX2RvbWFpbl9wYWdlKHhlbl9kYXRhKTsKKyAgICBwdXRfcGFnZShndWVzdF9w Zyk7CisgICAgZnJlZV9vcHRlZV9zaG1fYnVmKGN0eCwgb3B0ZWVfc2htX2J1Zi0+Y29va2llKTsK KworICAgIHJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IHRyYW5zbGF0ZV9wYXJhbXMo c3RydWN0IG9wdGVlX2RvbWFpbiAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBvcHRlZV9zdGRfY2FsbCAqY2FsbCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICB1 aW50MzJfdCBhdHRyOworICAgIGludCByZXQgPSAwOworCisgICAgZm9yICggaSA9IDA7IGkgPCBj YWxsLT54ZW5fYXJnLT5udW1fcGFyYW1zOyBpKysgKQorICAgIHsKKyAgICAgICAgYXR0ciA9IGNh bGwtPnhlbl9hcmctPnBhcmFtc1tpXS5hdHRyOworCisgICAgICAgIHN3aXRjaCAoIGF0dHIgJiBP UFRFRV9NU0dfQVRUUl9UWVBFX01BU0sgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgT1BURUVf TVNHX0FUVFJfVFlQRV9UTUVNX0lOUFVUOgorICAgICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZ UEVfVE1FTV9PVVRQVVQ6CisgICAgICAgIGNhc2UgT1BURUVfTVNHX0FUVFJfVFlQRV9UTUVNX0lO T1VUOgorICAgICAgICAgICAgaWYgKCBhdHRyICYgT1BURUVfTVNHX0FUVFJfTk9OQ09OVElHICkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXQgPSB0cmFuc2xhdGVfbm9uY29udGln KGN0eCwgY2FsbCwgY2FsbC0+eGVuX2FyZy0+cGFyYW1zICsgaSk7CisgICAgICAgICAgICAgICAg aWYgKCByZXQgKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnZHByaW50 ayhYRU5MT0dfV0FSTklORywgIkd1ZXN0IHRyaWVzIHRvIHVzZSBvbGQgdG1lbSBhcmdcbiIpOwor ICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPUFRFRV9N U0dfQVRUUl9UWVBFX05PTkU6CisgICAgICAgIGNhc2UgT1BURUVfTVNHX0FUVFJfVFlQRV9WQUxV RV9JTlBVVDoKKyAgICAgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX09VVFBVVDoK KyAgICAgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX0lOT1VUOgorICAgICAgICBj YXNlIE9QVEVFX01TR19BVFRSX1RZUEVfUk1FTV9JTlBVVDoKKyAgICAgICAgY2FzZSBPUFRFRV9N U0dfQVRUUl9UWVBFX1JNRU1fT1VUUFVUOgorICAgICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZ UEVfUk1FTV9JTk9VVDoKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgfQor CitvdXQ6CisgICAgaWYgKCByZXQgKQorICAgIHsKKyAgICAgICAgY2FsbC0+eGVuX2FyZy0+cmV0 X29yaWdpbiA9IFRFRUNfT1JJR0lOX0NPTU1TOworICAgICAgICBpZiAoIHJldCA9PSAtRU5PTUVN ICkKKyAgICAgICAgICAgIGNhbGwtPnhlbl9hcmctPnJldCA9IFRFRUNfRVJST1JfT1VUX09GX01F TU9SWTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbC0+eGVuX2FyZy0+cmV0ID0gVEVF Q19FUlJPUl9CQURfUEFSQU1FVEVSUzsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCiAv KgogICogQ29weSBjb21tYW5kIGJ1ZmZlciBpbnRvIGRvbWhlYXAgbWVtb3J5IHRvOgogICogMSkg SGlkZSB0cmFuc2xhdGVkIGFkZHJlc3NlcyBmcm9tIGd1ZXN0CkBAIC01NDksNiArOTA2LDI3IEBA IHN0YXRpYyB2b2lkIGNvcHlfc3RkX3JlcXVlc3RfYmFjayhzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpj dHgsCiAgICAgcHV0X3BhZ2UocGFnZSk7CiB9CiAKKworc3RhdGljIHZvaWQgZnJlZV9zaG1fYnVm ZmVycyhzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBvcHRlZV9tc2dfYXJnICphcmcpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisK KyAgICBmb3IgKCBpID0gMDsgaSA8IGFyZy0+bnVtX3BhcmFtczsgaSArKyApCisgICAgeworICAg ICAgICBzd2l0Y2ggKCBhcmctPnBhcmFtc1tpXS5hdHRyICYgT1BURUVfTVNHX0FUVFJfVFlQRV9N QVNLICkKKyAgICAgICAgeworICAgICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfVE1FTV9J TlBVVDoKKyAgICAgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1RNRU1fT1VUUFVUOgorICAg ICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfVE1FTV9JTk9VVDoKKyAgICAgICAgICAgIGZy ZWVfb3B0ZWVfc2htX2J1ZihjdHgsIGFyZy0+cGFyYW1zW2ldLnUudG1lbS5zaG1fcmVmKTsKKyAg ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgIH0KKyAgICB9Cit9CisKIC8qIEhhbmRsZSBSUEMgcmV0dXJuIGZyb20gT1AtVEVFICov CiBzdGF0aWMgdm9pZCBoYW5kbGVfcnBjX3JldHVybihzdHJ1Y3QgYXJtX3NtY2NjX3JlcyAqcmVz LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MsCkBAIC01NzQsNiArOTUyLDggQEAgc3RhdGljIHZvaWQgaGFuZGxlX3JwY19yZXR1cm4oc3Ry dWN0IGFybV9zbWNjY19yZXMgKnJlcywKICAqIElmIHRoaXMgaXMgUlBDIC0gd2UgbmVlZCB0byBz dG9yZSBjYWxsIGNvbnRleHQgYW5kIHJldHVybiBiYWNrIHRvIGd1ZXN0LgogICogSWYgY2FsbCBp cyBjb21wbGV0ZSAtIHdlIG5lZWQgdG8gcmV0dXJuIHJlc3VsdHMgd2l0aCBjb3B5X3N0ZF9yZXF1 ZXN0X2JhY2soKQogICogYW5kIHRoZW4gd2Ugd2lsbCBkZXN0cm95IHRoZSBjYWxsIGNvbnRleHQg YXMgaXQgaXMgbm90IG5lZWRlZCBhbnltb3JlLgorICoKKyAqIFNoYXJlZCBidWZmZXJzIHNob3Vs ZCBiZSBoYW5kbGVkIGluIGEgc3BlY2lhbCB3YXkuCiAgKi8KIHN0YXRpYyB2b2lkIGRvX2NhbGxf d2l0aF9hcmcoc3RydWN0IG9wdGVlX2RvbWFpbiAqY3R4LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3Qgb3B0ZWVfc3RkX2NhbGwgKmNhbGwsCkBAIC01OTcsNiArOTc3LDI3IEBA IHN0YXRpYyB2b2lkIGRvX2NhbGxfd2l0aF9hcmcoc3RydWN0IG9wdGVlX2RvbWFpbiAqY3R4LAog ICAgIGNvcHlfc3RkX3JlcXVlc3RfYmFjayhjdHgsIHJlZ3MsIGNhbGwpOwogICAgIHNldF91c2Vy X3JlZyhyZWdzLCAwLCByZXMuYTApOwogCisgICAgc3dpdGNoICggY2FsbC0+eGVuX2FyZy0+Y21k ICkKKyAgICB7CisgICAgY2FzZSBPUFRFRV9NU0dfQ01EX1JFR0lTVEVSX1NITToKKyAgICAgICAg aWYgKCBjYWxsLT54ZW5fYXJnLT5yZXQgPT0gMCApCisgICAgICAgICAgICAvKiBPUC1URUUgcmVn aXN0ZXJlZCBidWZmZXIsIHdlIGRvbid0IG5lZWQgcGdfbGlzdCBhbnltb3JlICovCisgICAgICAg ICAgICBmcmVlX29wdGVlX3NobV9idWZfcGdfbGlzdChjdHgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYWxsLT54ZW5fYXJnLT5wYXJhbXNbMF0udS50bWVtLnNobV9y ZWYpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAvKiBPUC1URUUgZmFpbGVkIHRvIHJlZ2lz dGVyIGJ1ZmZlciwgd2UgbmVlZCB0byB1bnBpbiBndWVzdCBwYWdlcyAqLworICAgICAgICAgICAg ZnJlZV9vcHRlZV9zaG1fYnVmKGN0eCwgY2FsbC0+eGVuX2FyZy0+cGFyYW1zWzBdLnUudG1lbS5z aG1fcmVmKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPUFRFRV9NU0dfQ01EX1VOUkVHSVNU RVJfU0hNOgorICAgICAgICBpZiAoIGNhbGwtPnhlbl9hcmctPnJldCA9PSAwICkKKyAgICAgICAg ICAgIC8qIE5vdyB3ZSBjYW4gdW5waW4gZ3Vlc3QgcGFnZXMgKi8KKyAgICAgICAgICAgIGZyZWVf b3B0ZWVfc2htX2J1ZihjdHgsIGNhbGwtPnhlbl9hcmctPnBhcmFtc1swXS51LnJtZW0uc2htX3Jl Zik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIEZyZWUgYW55IHRl bXBvcmFyeSBzaGFyZWQgYnVmZmVycyAqLworICAgICAgICBmcmVlX3NobV9idWZmZXJzKGN0eCwg Y2FsbC0+eGVuX2FyZyk7CisgICAgfQorCiAgICAgcHV0X3N0ZF9jYWxsKGN0eCwgY2FsbCk7CiAg ICAgZnJlZV9zdGRfY2FsbChjdHgsIGNhbGwpOwogfQpAQCAtNjU4LDYgKzEwNTksMTggQEAgc3Rh dGljIHZvaWQgaGFuZGxlX3N0ZF9jYWxsKHN0cnVjdCBvcHRlZV9kb21haW4gKmN0eCwKICAgICBj YXNlIE9QVEVFX01TR19DTURfQ0FOQ0VMOgogICAgIGNhc2UgT1BURUVfTVNHX0NNRF9SRUdJU1RF Ul9TSE06CiAgICAgY2FzZSBPUFRFRV9NU0dfQ01EX1VOUkVHSVNURVJfU0hNOgorICAgICAgICBp ZiggdHJhbnNsYXRlX3BhcmFtcyhjdHgsIGNhbGwpICkKKyAgICAgICAgeworICAgICAgICAgICAg LyoKKyAgICAgICAgICAgICAqIHRyYW5zbGF0ZV9wYXJhbXMoKSBzZXRzIHhlbl9hcmctPnJldCB2 YWx1ZSB0byBub24temVyby4KKyAgICAgICAgICAgICAqIFNvLCB0ZWNobmljYWxseSwgU01DIHdh cyBzdWNjZXNzZnVsLCBidXQgdGhlcmUgd2FzIGFuIGVycm9yCisgICAgICAgICAgICAgKiBkdXJp bmcgaGFuZGxpbmcgc3RhbmRhcmQgY2FsbCBlbmNhcHN1bGF0ZWQgaW50byB0aGlzIFNNQy4KKyAg ICAgICAgICAgICAqLworICAgICAgICAgICAgY29weV9zdGRfcmVxdWVzdF9iYWNrKGN0eCwgcmVn cywgY2FsbCk7CisgICAgICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMCwgT1BURUVfU01DX1JF VFVSTl9PSyk7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorCiAgICAgICAgIHhl bl9hZGRyID0gcGFnZV90b19tYWRkcihjYWxsLT54ZW5fYXJnX3BnKTsKICAgICAgICAgdWludDY0 X3RvX3JlZ3BhaXIoJmExLCAmYTIsIHhlbl9hZGRyKTsKIAotLSAKMi4yMS4wCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl Y3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0819DC072B5 for ; Tue, 21 May 2019 21:26:29 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C32562173E for ; Tue, 21 May 2019 21:26:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=epam.com header.i=@epam.com header.b="mIV7r3Ki" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C32562173E Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=epam.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hTCH1-0008Mq-Sn; Tue, 21 May 2019 21:26:15 +0000 Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hTCH1-0008ME-1t for xen-devel@lists.xenproject.org; Tue, 21 May 2019 21:26:15 +0000 X-Inumbo-ID: 0e84ef36-7c0f-11e9-8980-bc764e045a96 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (unknown [2a01:111:f400:fe0d::60e]) by us1-rack-dfw2.inumbo.com (Halon) with ESMTPS id 0e84ef36-7c0f-11e9-8980-bc764e045a96; Tue, 21 May 2019 21:26:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2N3PhEQjURc0T/fi5QCSZjaAk73XadHYCdkMiL4B+X0=; b=mIV7r3Ki7uiorq3dPbjDkA0ugrIIpkGp3cYgTPRBAi6zz49j89+dyGPMLVLds4Y2xGIWJDwDGYLUb0f08p1KWGUw3uAyv4lTCnjqr2Ef5xoFjpdvSk+WL7KJ87JmziYdkvZwOeZ3HixFy0MN5MGMnzLTlSfZcHmT+tgtJOcvqHOhazBSGEsjt+QFsYAbUXPOyl0DUn8lRD7Q8FZRo4zrdM92DpWUx3J3xuCg1hRkmLNL7N4lzjBiJ2JdUrMmmJsM09SVPmo55DmHJQzR87gDhBo5Ra5jZmhgIxvaIxq+bDaj+ThCQ8+IwhmcWkKszlkT1NL8YjrqkMMrjOXp27FD2g== Received: from AM0PR03MB4148.eurprd03.prod.outlook.com (20.176.214.210) by AM0PR03MB5698.eurprd03.prod.outlook.com (20.179.254.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1900.16; Tue, 21 May 2019 21:26:10 +0000 Received: from AM0PR03MB4148.eurprd03.prod.outlook.com ([fe80::55c5:599a:1f80:208a]) by AM0PR03MB4148.eurprd03.prod.outlook.com ([fe80::55c5:599a:1f80:208a%3]) with mapi id 15.20.1900.020; Tue, 21 May 2019 21:26:10 +0000 From: Volodymyr Babchuk To: "xen-devel@lists.xenproject.org" Thread-Topic: [PATCH v5 07/10] xen/arm: optee: add support for arbitrary shared memory Thread-Index: AQHVEBvP1l9ad4tnC0StQ3h8HkCxMQ== Date: Tue, 21 May 2019 21:26:10 +0000 Message-ID: <20190521212530.12706-8-volodymyr_babchuk@epam.com> References: <20190521212530.12706-1-volodymyr_babchuk@epam.com> In-Reply-To: <20190521212530.12706-1-volodymyr_babchuk@epam.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Volodymyr_Babchuk@epam.com; x-originating-ip: [85.223.209.22] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ac4409db-16fb-4874-e7a8-08d6de32f19f x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(2017052603328)(7193020); SRVR:AM0PR03MB5698; x-ms-traffictypediagnostic: AM0PR03MB5698: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-forefront-prvs: 0044C17179 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(376002)(136003)(366004)(346002)(396003)(39860400002)(189003)(199004)(6512007)(6486002)(5640700003)(6436002)(68736007)(3846002)(2616005)(476003)(11346002)(6916009)(486006)(6116002)(76116006)(14444005)(256004)(64756008)(66476007)(478600001)(305945005)(66946007)(54906003)(316002)(7736002)(73956011)(71190400001)(72206003)(2501003)(66556008)(80792005)(71200400001)(66446008)(30864003)(53946003)(26005)(4326008)(14454004)(25786009)(102836004)(2906002)(55236004)(8936002)(81166006)(5660300002)(99286004)(66066001)(1076003)(36756003)(86362001)(53936002)(6506007)(81156014)(446003)(2351001)(186003)(8676002)(76176011); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR03MB5698; H:AM0PR03MB4148.eurprd03.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: epam.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: AWnqoax1KZqFv9pUKugPugCHZgGaulJmXjfNPPVL/32San5MjXHoHBeNoGOUq1xcTPvPtBN9c+l7nXiMfxcS17N8Lgv2Z2T/3c+7q99s/t+R84EzndgejtNcwLUc8cPYIoqdA5ScUptMoRoYZlLXfAT6CSiZqHM0/IGRmfC7kIUiEuvSNZ5JxXUl7tHNEEvI5emnPiBXNp/CL0EP295eKe/CVCxM6aXwQjMLr5kqcQMBPzrjOhG2SDPYV/ROoKOauPBUUyYrPsjjWSM59q7GxaSEHhWrbEe30Vti1fJMYGG+XWKEyo6KMA9SO0x5+Q+xgr7Epk41cWelEk1HvWT5px8lHlrK2wTpi35CZQ2/lBJvo134H3oTr1TcB4c2ashVTMdT+iqdvDSQ+NTpvoZ8BeVs+ViOiV9CX8mkxhJukxw= MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac4409db-16fb-4874-e7a8-08d6de32f19f X-MS-Exchange-CrossTenant-originalarrivaltime: 21 May 2019 21:26:10.2573 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR03MB5698 Subject: [Xen-devel] [PATCH v5 07/10] xen/arm: optee: add support for arbitrary shared memory X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: "tee-dev@lists.linaro.org" , Julien Grall , Stefano Stabellini , Volodymyr Babchuk Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Message-ID: <20190521212610.l2jiOYY1FkwR3ikI20bphtPsv2TKjWYChsua3QEp92I@z> U2hhcmVkIG1lbW9yeSBpcyB3aWRlbHkgdXNlZCBieSBOVyAoTm9ybWFsIFdvcmxkKSB0byBjb21t dW5pY2F0ZSB3aXRoClRBcyAoVHJ1c3RlZCBBcHBsaWNhdGlvbnMpIGluIE9QLVRFRS4gTlcgY2Fu IHNoYXJlIHBhcnQgb2Ygb3duIG1lbW9yeQp3aXRoIFRBIG9yIHdpdGggT1AtVEVFIGNvcmUsIGJ5 IHJlZ2lzdGVyaW5nIGl0IGluIE9QLVRFRSwgb3IgYnkKcHJvdmlkaW5nIGEgdGVtcG9yYWwgcmVm ZXJlbmNlLiBBbnl3YXlzLCBpbmZvcm1hdGlvbiBhYm91dCBzdWNoIG1lbW9yeQpidWZmZXJzIGFy ZSBzZW50IHRvIE9QLVRFRSBhcyBhIGxpc3Qgb2YgcGFnZXMuIFRoaXMgbWVjaGFuaXNtIGlzCmRl c2NyaWJlZCBpbiBvcHRlZV9tc2cuaC4KCk1lZGlhdG9yIHNob3VsZCBzdGVwIGluIHdoZW4gTlcg dHJpZXMgdG8gc2hhcmUgbWVtb3J5IHdpdGgKT1AtVEVFIGZvciB0d28gcmVhc29uczoKCjEuIERv IGFkZHJlc3MgdHJhbnNsYXRpb24gZnJvbSBJUEEgdG8gUEEuCjIuIFBpbiBkb21haW4gcGFnZXMg d2hpbGUgdGhleSBhcmUgbWFwcGVkIGludG8gT1AtVEVFIG9yIFRBCiAgIGFkZHJlc3Mgc3BhY2Us IHNvIGRvbWFpbiBjYW4ndCB0cmFuc2ZlciB0aGlzIHBhZ2VzIHRvCiAgIG90aGVyIGRvbWFpbiBv ciBiYWxsb29uIG91dCB0aGVtLgoKQWRkcmVzcyB0cmFuc2xhdGlvbiBpcyBkb25lIGJ5IHRyYW5z bGF0ZV9ub25jb250aWcoLi4uKSBmdW5jdGlvbi4KSXQgYWxsb2NhdGVzIG5ldyBidWZmZXIgZnJv bSBkb21oZWFwIGFuZCB0aGVuIHdhbGtzIG9uIGd1ZXN0CnByb3ZpZGVkIGxpc3Qgb2YgcGFnZXMs IHRyYW5zbGF0ZXMgYWRkcmVzc2VzIGFuZCBzdG9yZXMgUEFzIGludG8KbmV3bHkgYWxsb2NhdGVk IGJ1ZmZlci4gVGhpcyBidWZmZXIgd2lsbCBiZSBwcm92aWRlZCB0byBPUC1URUUKaW5zdGVhZCBv ZiBvcmlnaW5hbCBidWZmZXIgZnJvbSB0aGUgZ3Vlc3QuIFRoaXMgYnVmZmVyIHdpbGwKYmUgZnJl ZWQgYXQgdGhlIGVuZCBvZiBzdGFuZGFyZCBjYWxsLgoKSW4gdGhlIHNhbWUgdGltZSB0aGlzIGZ1 bmN0aW9uIHBpbnMgcGFnZXMgYW5kIHN0b3JlcyB0aGVtIGluCnN0cnVjdCBvcHRlZV9zaG1fYnVm IG9iamVjdC4gVGhpcyBvYmplY3Qgd2lsbCBsaXZlIGFsbCB0aGUgdGltZSwKd2hlbiBnaXZlbiBT SE0gYnVmZmVyIGlzIGtub3duIHRvIE9QLVRFRS4gSXQgd2lsbCBiZSBmcmVlZAphZnRlciBndWVz dCB1bnJlZ2lzdGVycyBzaGFyZWQgYnVmZmVyLiBBdCB0aGlzIHRpbWUgcGFnZXMKd2lsbCBiZSB1 bnBpbm5lZC4KCkd1ZXN0IGNhbiBzaGFyZSBidWZmZXIgd2l0aCBPUC1URUUgZm9yIGR1cmF0aW9u IGZvciBvbmUgY2FsbCwKb3IgcGVybWFuZW50bHksIHVzaW5nIE9QVEVFX01TR19DTURfUkVHSVNU RVJfU0hNIGNhbGwuIFdlIG5lZWQKdG8gaGFuZGxlIGJvdGggb3B0aW9ucy4KCkFsc28gd2Ugd2Fu dCB0byBsaW1pdCB0b3RhbCBzaXplIG9mIHNoYXJlZCBidWZmZXJzLiBBcyBpdCBpcyBub3QKcG9z c2libGUgdG8gZ2V0IGxpbWl0IGZyb20gT1AtVEVFLCB3ZSBuZWVkIHRvIGNob29zZSBzb21lIGFy Yml0cmFyeQp2YWx1ZS4gQ3VycmVudGx5IGxpbWl0IGlzIDE2Mzg0IG9mIDRLIHBhZ2VzLgoKU2ln bmVkLW9mZi1ieTogVm9sb2R5bXlyIEJhYmNodWsgPHZvbG9keW15cl9iYWJjaHVrQGVwYW0uY29t PgotLS0KIEFsbCB0aGUgcGF0Y2hlcyB0byBvcHRlZS5jIHNob3VsZCBiZSBtZXJnZWQgdG9nZXRo ZXIuIFRoZXkgd2VyZQogc3BsaXQgdG8gZWFzZSB1cCByZXZpZXcuIEJ1dCB0aGV5IGRlcGVuZCBo ZWF2aWx5IG9uIGVhY2ggb3RoZXIuCgogQ2hhbmdlcyBmcm9tIHYzOgogLSBSZXdvcmtlZCBwYWdl bGlzdHMgc3RvcmFnZSAtIHRoZXJlIGlzIG5vIG1vcmUgc3RhdGljIHN0b3JhZ2UgZm9yCiAgIDUg YnVmZmVycywgaW5zdGVhZCBzdHJ1Y3R1cmUgd2l0aCBhbGwgZGF0YSBpcyBhbGxvY2F0ZWQgZHlu YW1pY2FsbHkKIC0gTm93IHRoaXMgY29kZSB1c2VzIGRvbWhlYXAgaW5zdGVhZCBvZiB4ZW5oZWFw CiAtIFZhcmlvdXMgc3R5bGUgZml4ZXMKIC0gZ2RwcmludGsoKSBmaXhlcwoKIENoYW5nZXMgZnJv bSB2MjoKIC0gTWFkZSBzdXJlIHRoYXQgZ3Vlc3QgZG9lcyBub3QgdHJpZXMgdG8gcmVnaXN0ZXIg c2hhcmVkIGJ1ZmZlciB3aXRoCiAgIHRoZSBzYW1lIGNvb2tpZSB0d2ljZQogLSBGaXhlZCBjb2Rp bmcgc3R5bGUKIC0gVXNlIGFjY2Vzc19ndWVzdF9tZW1vcnlfYnlfaXBhKCkgaW5zdGVhZCBvZiBk aXJlY3QgbWVtb3J5IG1hcHBpbmcKLS0tCiB4ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMgfCA0MTMg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwg NDEzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMg Yi94ZW4vYXJjaC9hcm0vdGVlL29wdGVlLmMKaW5kZXggMTc1Nzg5ZmIwMC4uNGI0MWJjZGU5ZiAx MDA2NDQKLS0tIGEveGVuL2FyY2gvYXJtL3RlZS9vcHRlZS5jCisrKyBiL3hlbi9hcmNoL2FybS90 ZWUvb3B0ZWUuYwpAQCAtNTMsOSArNTMsMjEgQEAKICAqLwogI2RlZmluZSBURUVDX0VSUk9SX0JB RF9QQVJBTUVURVJTIDB4RkZGRjAwMDYKIAorLyogIlN5c3RlbSByYW4gb3V0IG9mIHJlc291cmNl cyIgYXMgaW4gR1AgVEVFIENsaWVudCBBUEkgU3BlY2lmaWNhdGlvbiAqLworI2RlZmluZSBURUVD X0VSUk9SX09VVF9PRl9NRU1PUlkgMHhGRkZGMDAwQworCiAvKiBDbGllbnQgSUQgMCBpcyByZXNl cnZlZCBmb3IgdGhlIGh5cGVydmlzb3IgaXRzZWxmICovCiAjZGVmaW5lIE9QVEVFX0NMSUVOVF9J RChkb21haW4pICgoZG9tYWluKS0+ZG9tYWluX2lkICsgMSkKIAorLyoKKyAqIE1heGltdW0gdG90 YWwgbnVtYmVyIG9mIHBhZ2VzIHRoYXQgZ3Vlc3QgY2FuIHNoYXJlIHdpdGgKKyAqIE9QLVRFRS4g Q3VycmVudGx5IHZhbHVlIGlzIHNlbGVjdGVkIGFyYml0cmFyeS4gQWN0dWFsIG51bWJlciBvZgor ICogcGFnZXMgZGVwZW5kcyBvbiBmcmVlIGhlYXAgaW4gT1AtVEVFLiBBcyB3ZSBjYW4ndCBkbyBh bnkKKyAqIGFzc3VtcHRpb25zIGFib3V0IE9QLVRFRSBoZWFwIHVzYWdlLCB3ZSBsaW1pdCBudW1i ZXIgb2YgcGFnZXMKKyAqIGFyYml0cmFyeS4KKyAqLworI2RlZmluZSBNQVhfVE9UQUxfU01IX0JV Rl9QRyAgICAxNjM4NAorCiAjZGVmaW5lIE9QVEVFX0tOT1dOX05TRUNfQ0FQUyBPUFRFRV9TTUNf TlNFQ19DQVBfVU5JUFJPQ0VTU09SCiAjZGVmaW5lIE9QVEVFX0tOT1dOX1NFQ19DQVBTIChPUFRF RV9TTUNfU0VDX0NBUF9IQVZFX1JFU0VSVkVEX1NITSB8IFwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9QVEVFX1NNQ19TRUNfQ0FQX1VOUkVHSVNURVJFRF9TSE0gfCBcCkBAIC04OCwx MSArMTAwLDMxIEBAIHN0cnVjdCBzaG1fcnBjIHsKICAgICB1aW50NjRfdCBjb29raWU7CiB9Owog CisvKiBTaGFyZWQgbWVtb3J5IGJ1ZmZlciBmb3IgYXJiaXRyYXJ5IGRhdGEgKi8KK3N0cnVjdCBv cHRlZV9zaG1fYnVmIHsKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisgICAgdWludDY0X3Qg Y29va2llOworICAgIHVuc2lnbmVkIGludCBwYWdlX2NudDsKKyAgICAvKgorICAgICAqIFNoYWRv d2VkIGNvbnRhaW5lciBmb3IgbGlzdCBvZiBwYWdlcyB0aGF0IGd1ZXN0IHRyaWVzIHRvIHNoYXJl CisgICAgICogd2l0aCBPUC1URUUuIFRoaXMgaXMgbm90IHRoZSBsaXN0IG9mIHBhZ2VzIHRoYXQg Z3Vlc3Qgc2hhcmVkCisgICAgICogd2l0aCBPUC1URUUsIGJ1dCBjb250YWluZXIgZm9yIGxpc3Qg b2YgdGhvc2UgcGFnZXMuIENoZWNrCisgICAgICogT1BURUVfTVNHX0FUVFJfTk9OQ09OVElHIGRl ZmluaXRpb24gaW4gb3B0ZWVfbXNnLmggZm9yIG1vcmUKKyAgICAgKiBpbmZvcm1hdGlvbi4KKyAg ICAgKi8KKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwZ19saXN0OworICAgIHVuc2lnbmVkIGludCBw Z19saXN0X29yZGVyOworICAgIC8qIFBpbm5lZCBndWVzdCBwYWdlcyB0aGF0IGFyZSBzaGFyZWQg d2l0aCBPUC1URUUgKi8KKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpwYWdlc1tdOworfTsKKwogLyog RG9tYWluIGNvbnRleHQgKi8KIHN0cnVjdCBvcHRlZV9kb21haW4gewogICAgIHN0cnVjdCBsaXN0 X2hlYWQgY2FsbF9saXN0OwogICAgIHN0cnVjdCBsaXN0X2hlYWQgc2htX3JwY19saXN0OworICAg IHN0cnVjdCBsaXN0X2hlYWQgb3B0ZWVfc2htX2J1Zl9saXN0OwogICAgIGF0b21pY190IGNhbGxf Y291bnQ7CisgICAgYXRvbWljX3Qgb3B0ZWVfc2htX2J1Zl9wYWdlczsKICAgICBzcGlubG9ja190 IGxvY2s7CiB9OwogCkBAIC0xNjcsNyArMTk5LDkgQEAgc3RhdGljIGludCBvcHRlZV9kb21haW5f aW5pdChzdHJ1Y3QgZG9tYWluICpkKQogCiAgICAgSU5JVF9MSVNUX0hFQUQoJmN0eC0+Y2FsbF9s aXN0KTsKICAgICBJTklUX0xJU1RfSEVBRCgmY3R4LT5zaG1fcnBjX2xpc3QpOworICAgIElOSVRf TElTVF9IRUFEKCZjdHgtPm9wdGVlX3NobV9idWZfbGlzdCk7CiAgICAgYXRvbWljX3NldCgmY3R4 LT5jYWxsX2NvdW50LCAwKTsKKyAgICBhdG9taWNfc2V0KCZjdHgtPm9wdGVlX3NobV9idWZfcGFn ZXMsIDApOwogICAgIHNwaW5fbG9ja19pbml0KCZjdHgtPmxvY2spOwogCiAgICAgZC0+YXJjaC50 ZWUgPSBjdHg7CkBAIC0zNzYsMTEgKzQxMCwxNDIgQEAgc3RhdGljIHZvaWQgZnJlZV9zaG1fcnBj KHN0cnVjdCBvcHRlZV9kb21haW4gKmN0eCwgdWludDY0X3QgY29va2llKQogICAgIHhmcmVlKHNo bV9ycGMpOwogfQogCitzdGF0aWMgc3RydWN0IG9wdGVlX3NobV9idWYgKmFsbG9jYXRlX29wdGVl X3NobV9idWYoc3RydWN0IG9wdGVlX2RvbWFpbiAqY3R4LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNvb2tpZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg cGFnZXNfY250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBnX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHBnX2xpc3Rfb3JkZXIp Cit7CisgICAgc3RydWN0IG9wdGVlX3NobV9idWYgKm9wdGVlX3NobV9idWYsICpvcHRlZV9zaG1f YnVmX3RtcDsKKyAgICBpbnQgb2xkLCBuZXc7CisgICAgaW50IGVycl9jb2RlOworCisgICAgZG8K KyAgICB7CisgICAgICAgIG9sZCA9IGF0b21pY19yZWFkKCZjdHgtPm9wdGVlX3NobV9idWZfcGFn ZXMpOworICAgICAgICBuZXcgPSBvbGQgKyBwYWdlc19jbnQ7CisgICAgICAgIGlmICggbmV3ID49 IE1BWF9UT1RBTF9TTUhfQlVGX1BHICkKKyAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9N RU0pOworICAgIH0KKyAgICB3aGlsZSAoIHVubGlrZWx5KG9sZCAhPSBhdG9taWNfY21weGNoZygm Y3R4LT5vcHRlZV9zaG1fYnVmX3BhZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG9sZCwgbmV3KSkgKTsKKworICAgIC8qCisgICAgICogVE9ETzogR3Vlc3Qg Y2FuIHRyeSB0byByZWdpc3RlciBtYW55IHNtYWxsIGJ1ZmZlcnMsIHRodXMsIGZvcmNpbmcKKyAg ICAgKiBYRU4gdG8gYWxsb2NhdGUgY29udGV4dCBmb3IgZXZlcnkgYnVmZmVyLiBQcm9iYWJseSB3 ZSBuZWVkIHRvCisgICAgICogbGltaXQgbm90IG9ubHkgdG90YWwgbnVtYmVyIG9mIHBhZ2VzIHBp bm5lZCBidXQgYWxzbyBudW1iZXIKKyAgICAgKiBvZiBidWZmZXIgb2JqZWN0cy4KKyAgICAgKi8K KyAgICBvcHRlZV9zaG1fYnVmID0geHphbGxvY19ieXRlcyhzaXplb2Yoc3RydWN0IG9wdGVlX3No bV9idWYpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlc19jbnQgKiBz aXplb2Yoc3RydWN0IHBhZ2UgKikpOworICAgIGlmICggIW9wdGVlX3NobV9idWYgKQorICAgIHsK KyAgICAgICAgZXJyX2NvZGUgPSAtRU5PTUVNOworICAgICAgICBnb3RvIGVycjsKKyAgICB9CisK KyAgICBvcHRlZV9zaG1fYnVmLT5jb29raWUgPSBjb29raWU7CisgICAgb3B0ZWVfc2htX2J1Zi0+ cGdfbGlzdCA9IHBnX2xpc3Q7CisgICAgb3B0ZWVfc2htX2J1Zi0+cGdfbGlzdF9vcmRlciA9IHBn X2xpc3Rfb3JkZXI7CisKKyAgICBzcGluX2xvY2soJmN0eC0+bG9jayk7CisgICAgLyogQ2hlY2sg aWYgdGhlcmUgaXMgYWxyZWFkeSBTSE0gd2l0aCB0aGUgc2FtZSBjb29raWUgKi8KKyAgICBsaXN0 X2Zvcl9lYWNoX2VudHJ5KCBvcHRlZV9zaG1fYnVmX3RtcCwgJmN0eC0+b3B0ZWVfc2htX2J1Zl9s aXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlmICggb3B0ZWVfc2htX2J1Zl90bXAtPmNvb2tp ZSA9PSBjb29raWUgKQorICAgICAgICB7CisgICAgICAgICAgICBzcGluX3VubG9jaygmY3R4LT5s b2NrKTsKKyAgICAgICAgICAgIGdkcHJpbnRrKFhFTkxPR19XQVJOSU5HLCAiR3Vlc3QgdHJpZXMg dG8gdXNlIHRoZSBzYW1lIFNITSBidWZmZXIgY29va2llICVseFxuIiwKKyAgICAgICAgICAgICAg ICAgICAgIGNvb2tpZSk7CisgICAgICAgICAgICBlcnJfY29kZSA9IC1FSU5WQUw7CisgICAgICAg ICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxpc3RfYWRkX3RhaWwoJm9w dGVlX3NobV9idWYtPmxpc3QsICZjdHgtPm9wdGVlX3NobV9idWZfbGlzdCk7CisgICAgc3Bpbl91 bmxvY2soJmN0eC0+bG9jayk7CisKKyAgICByZXR1cm4gb3B0ZWVfc2htX2J1ZjsKKworZXJyOgor ICAgIHhmcmVlKG9wdGVlX3NobV9idWYpOworICAgIGF0b21pY19zdWIocGFnZXNfY250LCAmY3R4 LT5vcHRlZV9zaG1fYnVmX3BhZ2VzKTsKKworICAgIHJldHVybiBFUlJfUFRSKGVycl9jb2RlKTsK K30KKworc3RhdGljIHZvaWQgZnJlZV9wZ19saXN0KHN0cnVjdCBvcHRlZV9zaG1fYnVmICpvcHRl ZV9zaG1fYnVmKQoreworICAgIGlmICggb3B0ZWVfc2htX2J1Zi0+cGdfbGlzdCApCisgICAgewor ICAgICAgICBmcmVlX2RvbWhlYXBfcGFnZXMob3B0ZWVfc2htX2J1Zi0+cGdfbGlzdCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9wdGVlX3NobV9idWYtPnBnX2xpc3Rfb3JkZXIpOworICAg ICAgICBvcHRlZV9zaG1fYnVmLT5wZ19saXN0ID0gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyB2 b2lkIGZyZWVfb3B0ZWVfc2htX2J1ZihzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpjdHgsIHVpbnQ2NF90 IGNvb2tpZSkKK3sKKyAgICBzdHJ1Y3Qgb3B0ZWVfc2htX2J1ZiAqb3B0ZWVfc2htX2J1ZjsKKyAg ICB1bnNpZ25lZCBpbnQgaTsKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisKKyAgICBzcGluX2xv Y2soJmN0eC0+bG9jayk7CisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSggb3B0ZWVfc2htX2J1Ziwg JmN0eC0+b3B0ZWVfc2htX2J1Zl9saXN0LCBsaXN0ICkKKyAgICB7CisgICAgICAgIGlmICggb3B0 ZWVfc2htX2J1Zi0+Y29va2llID09IGNvb2tpZSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv dW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGxpc3RfZGVsKCZvcHRlZV9zaG1fYnVmLT5saXN0KTsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHNwaW5fdW5sb2NrKCZj dHgtPmxvY2spOworCisgICAgaWYgKCAhZm91bmQgKQorICAgICAgICByZXR1cm47CisKKyAgICBm b3IgKCBpID0gMDsgaSA8IG9wdGVlX3NobV9idWYtPnBhZ2VfY250OyBpKysgKQorICAgICAgICBp ZiAoIG9wdGVlX3NobV9idWYtPnBhZ2VzW2ldICkKKyAgICAgICAgICAgIHB1dF9wYWdlKG9wdGVl X3NobV9idWYtPnBhZ2VzW2ldKTsKKworICAgIGZyZWVfcGdfbGlzdChvcHRlZV9zaG1fYnVmKTsK KworICAgIGF0b21pY19zdWIob3B0ZWVfc2htX2J1Zi0+cGFnZV9jbnQsICZjdHgtPm9wdGVlX3No bV9idWZfcGFnZXMpOworCisgICAgeGZyZWUob3B0ZWVfc2htX2J1Zik7Cit9CisKK3N0YXRpYyB2 b2lkIGZyZWVfb3B0ZWVfc2htX2J1Zl9wZ19saXN0KHN0cnVjdCBvcHRlZV9kb21haW4gKmN0eCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IGNvb2tpZSkK K3sKKyAgICBzdHJ1Y3Qgb3B0ZWVfc2htX2J1ZiAqb3B0ZWVfc2htX2J1ZjsKKyAgICBib29sIGZv dW5kID0gZmFsc2U7CisKKyAgICBzcGluX2xvY2soJmN0eC0+bG9jayk7CisgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeSggb3B0ZWVfc2htX2J1ZiwgJmN0eC0+b3B0ZWVfc2htX2J1Zl9saXN0LCBsaXN0 ICkKKyAgICB7CisgICAgICAgIGlmICggb3B0ZWVfc2htX2J1Zi0+Y29va2llID09IGNvb2tpZSAp CisgICAgICAgIHsKKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr OworICAgICAgICB9CisgICAgfQorICAgIHNwaW5fdW5sb2NrKCZjdHgtPmxvY2spOworCisgICAg aWYgKCBmb3VuZCApCisgICAgICAgIGZyZWVfcGdfbGlzdChvcHRlZV9zaG1fYnVmKTsKKyAgICBl bHNlCisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19FUlIsICJDYW4ndCBmaW5kIHBhZ2VsaXN0IGZv ciBTSE0gYnVmZmVyIHdpdGggY29va2llICVseCB0byBmcmVlIGl0XG4iLAorICAgICAgICAgICAg ICAgICBjb29raWUpOworfQorCiBzdGF0aWMgaW50IG9wdGVlX3JlbGlucXVpc2hfcmVzb3VyY2Vz KHN0cnVjdCBkb21haW4gKmQpCiB7CiAgICAgc3RydWN0IGFybV9zbWNjY19yZXMgcmVzcDsKICAg ICBzdHJ1Y3Qgb3B0ZWVfc3RkX2NhbGwgKmNhbGwsICpjYWxsX3RtcDsKICAgICBzdHJ1Y3Qgc2ht X3JwYyAqc2htX3JwYywgKnNobV9ycGNfdG1wOworICAgIHN0cnVjdCBvcHRlZV9zaG1fYnVmICpv cHRlZV9zaG1fYnVmLCAqb3B0ZWVfc2htX2J1Zl90bXA7CiAgICAgc3RydWN0IG9wdGVlX2RvbWFp biAqY3R4ID0gZC0+YXJjaC50ZWU7CiAKICAgICBpZiAoICFjdHggKQpAQCAtNDA3LDYgKzU3Miwx NyBAQCBzdGF0aWMgaW50IG9wdGVlX3JlbGlucXVpc2hfcmVzb3VyY2VzKHN0cnVjdCBkb21haW4g KmQpCiAgICAgaWYgKCBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygpICkKICAgICAgICAgcmV0dXJu IC1FUkVTVEFSVDsKIAorICAgIC8qCisgICAgICogVE9ETzogR3Vlc3QgY2FuIHBpbiB1cCB0byBN QVhfVE9UQUxfU01IX0JVRl9QRyBwYWdlcyBhbmQgYWxsIG9mCisgICAgICogdGhlbSB3aWxsIGJl IHB1dCBpbiB0aGlzIGxvb3AuIEl0IGlzIHdvcnRoIGNvbnNpZGVyaW5nIHRvCisgICAgICogY2hl Y2sgZm9yIHByZWVtcHRpb24gaW5zaWRlIHRoZSBsb29wLgorICAgICAqLworICAgIGxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZSggb3B0ZWVfc2htX2J1Ziwgb3B0ZWVfc2htX2J1Zl90bXAsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmY3R4LT5vcHRlZV9zaG1fYnVmX2xpc3QsIGxpc3Qg KQorICAgICAgICBmcmVlX29wdGVlX3NobV9idWYoY3R4LCBvcHRlZV9zaG1fYnVmLT5jb29raWUp OworCisgICAgaWYgKCBoeXBlcmNhbGxfcHJlZW1wdF9jaGVjaygpICkKKyAgICAgICAgcmV0dXJu IC1FUkVTVEFSVDsKICAgICAvKgogICAgICAqIEluZm9ybSBPUC1URUUgdGhhdCBkb21haW4gaXMg c2h1dHRpbmcgZG93bi4gVGhpcyBpcwogICAgICAqIGFsc28gYSBmYXN0IFNNQyBjYWxsLCBsaWtl IE9QVEVFX1NNQ19WTV9DUkVBVEVELCBzbwpAQCAtNDIxLDYgKzU5Nyw3IEBAIHN0YXRpYyBpbnQg b3B0ZWVfcmVsaW5xdWlzaF9yZXNvdXJjZXMoc3RydWN0IGRvbWFpbiAqZCkKIAogICAgIEFTU0VS VCghc3Bpbl9pc19sb2NrZWQoJmN0eC0+bG9jaykpOwogICAgIEFTU0VSVCghYXRvbWljX3JlYWQo JmN0eC0+Y2FsbF9jb3VudCkpOworICAgIEFTU0VSVCghYXRvbWljX3JlYWQoJmN0eC0+b3B0ZWVf c2htX2J1Zl9wYWdlcykpOwogICAgIEFTU0VSVChsaXN0X2VtcHR5KCZjdHgtPnNobV9ycGNfbGlz dCkpOwogCiAgICAgWEZSRUUoZC0+YXJjaC50ZWUpOwpAQCAtNDI4LDYgKzYwNSwxODYgQEAgc3Rh dGljIGludCBvcHRlZV9yZWxpbnF1aXNoX3Jlc291cmNlcyhzdHJ1Y3QgZG9tYWluICpkKQogICAg IHJldHVybiAwOwogfQogCisjZGVmaW5lIFBBR0VMSVNUX0VOVFJJRVNfUEVSX1BBR0UgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAoKE9QVEVFX01TR19OT05DT05USUdfUEFHRV9TSVpFIC8g c2l6ZW9mKHU2NCkpIC0gMSkKKworc3RhdGljIHNpemVfdCBnZXRfcGFnZXNfbGlzdF9zaXplKHNp emVfdCBudW1fZW50cmllcykKK3sKKyAgICBpbnQgcGFnZXMgPSBESVZfUk9VTkRfVVAobnVtX2Vu dHJpZXMsIFBBR0VMSVNUX0VOVFJJRVNfUEVSX1BBR0UpOworCisgICAgcmV0dXJuIHBhZ2VzICog T1BURUVfTVNHX05PTkNPTlRJR19QQUdFX1NJWkU7Cit9CisKK3N0YXRpYyBpbnQgdHJhbnNsYXRl X25vbmNvbnRpZyhzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpjdHgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IG9wdGVlX3N0ZF9jYWxsICpjYWxsLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBvcHRlZV9tc2dfcGFyYW0gKnBhcmFtKQoreworICAgIHVp bnQ2NF90IHNpemU7CisgICAgdW5zaWduZWQgaW50IG9mZnNldDsKKyAgICB1bnNpZ25lZCBpbnQg cGdfY291bnQ7CisgICAgdW5zaWduZWQgaW50IG9yZGVyOworICAgIHVuc2lnbmVkIGludCBpZHgg PSAwOworICAgIGdmbl90IGdmbjsKKyAgICBzdHJ1Y3QgcGFnZV9pbmZvICpndWVzdF9wZywgKnhl bl9wZ3M7CisgICAgc3RydWN0IG9wdGVlX3NobV9idWYgKm9wdGVlX3NobV9idWY7CisgICAgLyoK KyAgICAgKiBUaGlzIGlzIG1lbW9yeSBsYXlvdXQgZm9yIHBhZ2UgbGlzdC4gQmFzaWNhbGx5IGxp c3QgY29uc2lzdHMgb2YgNGsgcGFnZXMsCisgICAgICogZXZlcnkgcGFnZSBzdG9yZSA1MTEgcGFn ZSBhZGRyZXNzZXMgb2YgdXNlciBidWZmZXIgYW5kIHBhZ2UgYWRkcmVzcyBvZgorICAgICAqIHRo ZSBuZXh0IHBhZ2Ugb2YgbGlzdC4KKyAgICAgKgorICAgICAqIFJlZmVyIHRvIE9QVEVFX01TR19B VFRSX05PTkNPTlRJRyBkZXNjcmlwdGlvbiBpbiBvcHRlZV9tc2cuaCBmb3IgZGV0YWlscy4KKyAg ICAgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50NjRfdCBwYWdlc19saXN0W1BBR0VMSVNU X0VOVFJJRVNfUEVSX1BBR0VdOworICAgICAgICB1aW50NjRfdCBuZXh0X3BhZ2VfZGF0YTsKKyAg ICB9ICpndWVzdF9kYXRhLCAqeGVuX2RhdGE7CisKKyAgICAvKiBPZmZzZXQgb2YgdXNlciBidWZm ZXIgd2l0aGluZyBPUFRFRV9NU0dfTk9OQ09OVElHX1BBR0VfU0laRS1zaXplZCBwYWdlICovCisg ICAgb2Zmc2V0ID0gcGFyYW0tPnUudG1lbS5idWZfcHRyICYgKE9QVEVFX01TR19OT05DT05USUdf UEFHRV9TSVpFIC0gMSk7CisKKyAgICAvKiBTaXplIG9mIHRoZSB1c2VyIGJ1ZmZlciBpbiBieXRl cyAqLworICAgIHNpemUgPSBST1VORFVQKHBhcmFtLT51LnRtZW0uc2l6ZSArIG9mZnNldCwgT1BU RUVfTVNHX05PTkNPTlRJR19QQUdFX1NJWkUpOworCisgICAgcGdfY291bnQgPSBESVZfUk9VTkRf VVAoc2l6ZSwgT1BURUVfTVNHX05PTkNPTlRJR19QQUdFX1NJWkUpOworICAgIG9yZGVyID0gZ2V0 X29yZGVyX2Zyb21fYnl0ZXMoZ2V0X3BhZ2VzX2xpc3Rfc2l6ZShwZ19jb3VudCkpOworCisgICAg LyoKKyAgICAgKiBJbiB0aGUgd29yc3QgY2FzZSB3ZSB3aWxsIHdhbnQgdG8gYWxsb2NhdGUgMzMg cGFnZXMsIHdoaWNoIGlzCisgICAgICogTUFYX1RPVEFMX1NNSF9CVUZfUEcvNTExIHJvdW5kZWQg dXAuIFRoaXMgZ2l2ZXMgb3JkZXIgNiBvciBhdAorICAgICAqIG1vc3QgNjQgcGFnZXMgYWxsb2Nh dGVkLiBUaGlzIGJ1ZmZlciB3aWxsIGJlIGZyZWVkIHJpZ2h0IGFmdGVyCisgICAgICogdGhlIGVu ZCBvZiB0aGUgY2FsbCBhbmQgdGhlcmUgY2FuIGJlIG5vIG1vcmUgdGhhbgorICAgICAqIG1heF9v cHRlZV90aHJlYWRzIGNhbGxzIHNpbXVsdGFuZW91c2x5LiBTbyBpbiB0aGUgd29yc3QgY2FzZQor ICAgICAqIGd1ZXN0IGNhbiB0cmljayB1cyB0byBhbGxvY2F0ZSA2NCAqIG1heF9vcHRlZV90aHJl YWRzIHBhZ2VzIGluCisgICAgICogdG90YWwuCisgICAgICovCisgICAgeGVuX3BncyA9IGFsbG9j X2RvbWhlYXBfcGFnZXMoY3VycmVudC0+ZG9tYWluLCBvcmRlciwgMCk7CisgICAgaWYgKCAheGVu X3BncyApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCisgICAgb3B0ZWVfc2htX2J1ZiA9IGFs bG9jYXRlX29wdGVlX3NobV9idWYoY3R4LCBwYXJhbS0+dS50bWVtLnNobV9yZWYsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfY291bnQsIHhlbl9wZ3MsIG9y ZGVyKTsKKyAgICBpZiAoIElTX0VSUihvcHRlZV9zaG1fYnVmKSApCisgICAgICAgIHJldHVybiBQ VFJfRVJSKG9wdGVlX3NobV9idWYpOworCisgICAgZ2ZuID0gZ2FkZHJfdG9fZ2ZuKHBhcmFtLT51 LnRtZW0uYnVmX3B0ciAmCisgICAgICAgICAgICAgICAgICAgICAgIH4oT1BURUVfTVNHX05PTkNP TlRJR19QQUdFX1NJWkUgLSAxKSk7CisKKyAgICB3aGlsZSAoIHBnX2NvdW50ICkKKyAgICB7Cisg ICAgICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7CisKKyAgICAgICAgaWYgKCBpZHggPT0gMCAp CisgICAgICAgIHsKKyAgICAgICAgICAgIGd1ZXN0X3BnID0gZ2V0X2RvbWFpbl9yYW1fcGFnZShn Zm4pOworICAgICAgICAgICAgaWYgKCAhZ3Vlc3RfcGcgKQorICAgICAgICAgICAgICAgIHJldHVy biAtRUlOVkFMOworCisgICAgICAgICAgICBndWVzdF9kYXRhID0gX19tYXBfZG9tYWluX3BhZ2Uo Z3Vlc3RfcGcpOworICAgICAgICAgICAgeGVuX2RhdGEgPSBfX21hcF9kb21haW5fcGFnZSh4ZW5f cGdzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86IFRoYXQgZnVu Y3Rpb24gY2FuIHBpbiB1cCB0byA2NE1CIG9mIGd1ZXN0IG1lbW9yeSBieQorICAgICAgICAgKiBj YWxsaW5nIGxvb2t1cF9hbmRfcGluX2d1ZXN0X3JhbV9hZGRyKCkgMTYzODQgdGltZXMuCisgICAg ICAgICAqIFRoaXMgaXMgY29uc2lkZXJlZCBpbnNlY3VyZSBhbmQgc2hvdWxkIGJlIGZpeGVkIGlu IHRoZSBmdXR1cmUuCisgICAgICAgICAqLworICAgICAgICBwYWdlID0gZ2V0X2RvbWFpbl9yYW1f cGFnZShnYWRkcl90b19nZm4oZ3Vlc3RfZGF0YS0+cGFnZXNfbGlzdFtpZHhdKSk7CisgICAgICAg IGlmICggIXBhZ2UgKQorICAgICAgICAgICAgZ290byBlcnJfdW5tYXA7CisKKyAgICAgICAgb3B0 ZWVfc2htX2J1Zi0+cGFnZXNbb3B0ZWVfc2htX2J1Zi0+cGFnZV9jbnQrK10gPSBwYWdlOworICAg ICAgICB4ZW5fZGF0YS0+cGFnZXNfbGlzdFtpZHhdID0gcGFnZV90b19tYWRkcihwYWdlKTsKKyAg ICAgICAgaWR4Kys7CisKKyAgICAgICAgaWYgKCBpZHggPT0gUEFHRUxJU1RfRU5UUklFU19QRVJf UEFHRSApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIFJvbGwgb3ZlciB0byB0aGUgbmV4dCBw YWdlICovCisgICAgICAgICAgICB4ZW5fZGF0YS0+bmV4dF9wYWdlX2RhdGEgPSBwYWdlX3RvX21h ZGRyKHhlbl9wZ3MgKyAxKTsKKyAgICAgICAgICAgIHhlbl9wZ3MrKzsKKworICAgICAgICAgICAg Z2ZuID0gZ2FkZHJfdG9fZ2ZuKGd1ZXN0X2RhdGEtPm5leHRfcGFnZV9kYXRhKTsKKworICAgICAg ICAgICAgdW5tYXBfZG9tYWluX3BhZ2UoeGVuX2RhdGEpOworICAgICAgICAgICAgdW5tYXBfZG9t YWluX3BhZ2UoZ3Vlc3RfZGF0YSk7CisgICAgICAgICAgICBwdXRfcGFnZShndWVzdF9wZyk7CisK KyAgICAgICAgICAgIGlkeCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcGdfY291bnQtLTsKKyAg ICB9CisKKyAgICBpZiAoIGlkeCApCisgICAgeworICAgICAgICB1bm1hcF9kb21haW5fcGFnZShn dWVzdF9kYXRhKTsKKyAgICAgICAgdW5tYXBfZG9tYWluX3BhZ2UoeGVuX2RhdGEpOworICAgICAg ICBwdXRfcGFnZShndWVzdF9wZyk7CisgICAgfQorICAgIHBhcmFtLT51LnRtZW0uYnVmX3B0ciA9 IHBhZ2VfdG9fbWFkZHIob3B0ZWVfc2htX2J1Zi0+cGdfbGlzdCkgfCBvZmZzZXQ7CisKKyAgICBy ZXR1cm4gMDsKKworZXJyX3VubWFwOgorICAgIHVubWFwX2RvbWFpbl9wYWdlKGd1ZXN0X2RhdGEp OworICAgIHVubWFwX2RvbWFpbl9wYWdlKHhlbl9kYXRhKTsKKyAgICBwdXRfcGFnZShndWVzdF9w Zyk7CisgICAgZnJlZV9vcHRlZV9zaG1fYnVmKGN0eCwgb3B0ZWVfc2htX2J1Zi0+Y29va2llKTsK KworICAgIHJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW50IHRyYW5zbGF0ZV9wYXJhbXMo c3RydWN0IG9wdGVlX2RvbWFpbiAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBvcHRlZV9zdGRfY2FsbCAqY2FsbCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICB1 aW50MzJfdCBhdHRyOworICAgIGludCByZXQgPSAwOworCisgICAgZm9yICggaSA9IDA7IGkgPCBj YWxsLT54ZW5fYXJnLT5udW1fcGFyYW1zOyBpKysgKQorICAgIHsKKyAgICAgICAgYXR0ciA9IGNh bGwtPnhlbl9hcmctPnBhcmFtc1tpXS5hdHRyOworCisgICAgICAgIHN3aXRjaCAoIGF0dHIgJiBP UFRFRV9NU0dfQVRUUl9UWVBFX01BU0sgKQorICAgICAgICB7CisgICAgICAgIGNhc2UgT1BURUVf TVNHX0FUVFJfVFlQRV9UTUVNX0lOUFVUOgorICAgICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZ UEVfVE1FTV9PVVRQVVQ6CisgICAgICAgIGNhc2UgT1BURUVfTVNHX0FUVFJfVFlQRV9UTUVNX0lO T1VUOgorICAgICAgICAgICAgaWYgKCBhdHRyICYgT1BURUVfTVNHX0FUVFJfTk9OQ09OVElHICkK KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXQgPSB0cmFuc2xhdGVfbm9uY29udGln KGN0eCwgY2FsbCwgY2FsbC0+eGVuX2FyZy0+cGFyYW1zICsgaSk7CisgICAgICAgICAgICAgICAg aWYgKCByZXQgKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnZHByaW50 ayhYRU5MT0dfV0FSTklORywgIkd1ZXN0IHRyaWVzIHRvIHVzZSBvbGQgdG1lbSBhcmdcbiIpOwor ICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7 CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBPUFRFRV9N U0dfQVRUUl9UWVBFX05PTkU6CisgICAgICAgIGNhc2UgT1BURUVfTVNHX0FUVFJfVFlQRV9WQUxV RV9JTlBVVDoKKyAgICAgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX09VVFBVVDoK KyAgICAgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1ZBTFVFX0lOT1VUOgorICAgICAgICBj YXNlIE9QVEVFX01TR19BVFRSX1RZUEVfUk1FTV9JTlBVVDoKKyAgICAgICAgY2FzZSBPUFRFRV9N U0dfQVRUUl9UWVBFX1JNRU1fT1VUUFVUOgorICAgICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZ UEVfUk1FTV9JTk9VVDoKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgfQor CitvdXQ6CisgICAgaWYgKCByZXQgKQorICAgIHsKKyAgICAgICAgY2FsbC0+eGVuX2FyZy0+cmV0 X29yaWdpbiA9IFRFRUNfT1JJR0lOX0NPTU1TOworICAgICAgICBpZiAoIHJldCA9PSAtRU5PTUVN ICkKKyAgICAgICAgICAgIGNhbGwtPnhlbl9hcmctPnJldCA9IFRFRUNfRVJST1JfT1VUX09GX01F TU9SWTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2FsbC0+eGVuX2FyZy0+cmV0ID0gVEVF Q19FUlJPUl9CQURfUEFSQU1FVEVSUzsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCiAv KgogICogQ29weSBjb21tYW5kIGJ1ZmZlciBpbnRvIGRvbWhlYXAgbWVtb3J5IHRvOgogICogMSkg SGlkZSB0cmFuc2xhdGVkIGFkZHJlc3NlcyBmcm9tIGd1ZXN0CkBAIC01NDksNiArOTA2LDI3IEBA IHN0YXRpYyB2b2lkIGNvcHlfc3RkX3JlcXVlc3RfYmFjayhzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpj dHgsCiAgICAgcHV0X3BhZ2UocGFnZSk7CiB9CiAKKworc3RhdGljIHZvaWQgZnJlZV9zaG1fYnVm ZmVycyhzdHJ1Y3Qgb3B0ZWVfZG9tYWluICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBvcHRlZV9tc2dfYXJnICphcmcpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisK KyAgICBmb3IgKCBpID0gMDsgaSA8IGFyZy0+bnVtX3BhcmFtczsgaSArKyApCisgICAgeworICAg ICAgICBzd2l0Y2ggKCBhcmctPnBhcmFtc1tpXS5hdHRyICYgT1BURUVfTVNHX0FUVFJfVFlQRV9N QVNLICkKKyAgICAgICAgeworICAgICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfVE1FTV9J TlBVVDoKKyAgICAgICAgY2FzZSBPUFRFRV9NU0dfQVRUUl9UWVBFX1RNRU1fT1VUUFVUOgorICAg ICAgICBjYXNlIE9QVEVFX01TR19BVFRSX1RZUEVfVE1FTV9JTk9VVDoKKyAgICAgICAgICAgIGZy ZWVfb3B0ZWVfc2htX2J1ZihjdHgsIGFyZy0+cGFyYW1zW2ldLnUudG1lbS5zaG1fcmVmKTsKKyAg ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7Cisg ICAgICAgIH0KKyAgICB9Cit9CisKIC8qIEhhbmRsZSBSUEMgcmV0dXJuIGZyb20gT1AtVEVFICov CiBzdGF0aWMgdm9pZCBoYW5kbGVfcnBjX3JldHVybihzdHJ1Y3QgYXJtX3NtY2NjX3JlcyAqcmVz LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNwdV91c2VyX3JlZ3MgKnJl Z3MsCkBAIC01NzQsNiArOTUyLDggQEAgc3RhdGljIHZvaWQgaGFuZGxlX3JwY19yZXR1cm4oc3Ry dWN0IGFybV9zbWNjY19yZXMgKnJlcywKICAqIElmIHRoaXMgaXMgUlBDIC0gd2UgbmVlZCB0byBz dG9yZSBjYWxsIGNvbnRleHQgYW5kIHJldHVybiBiYWNrIHRvIGd1ZXN0LgogICogSWYgY2FsbCBp cyBjb21wbGV0ZSAtIHdlIG5lZWQgdG8gcmV0dXJuIHJlc3VsdHMgd2l0aCBjb3B5X3N0ZF9yZXF1 ZXN0X2JhY2soKQogICogYW5kIHRoZW4gd2Ugd2lsbCBkZXN0cm95IHRoZSBjYWxsIGNvbnRleHQg YXMgaXQgaXMgbm90IG5lZWRlZCBhbnltb3JlLgorICoKKyAqIFNoYXJlZCBidWZmZXJzIHNob3Vs ZCBiZSBoYW5kbGVkIGluIGEgc3BlY2lhbCB3YXkuCiAgKi8KIHN0YXRpYyB2b2lkIGRvX2NhbGxf d2l0aF9hcmcoc3RydWN0IG9wdGVlX2RvbWFpbiAqY3R4LAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3Qgb3B0ZWVfc3RkX2NhbGwgKmNhbGwsCkBAIC01OTcsNiArOTc3LDI3IEBA IHN0YXRpYyB2b2lkIGRvX2NhbGxfd2l0aF9hcmcoc3RydWN0IG9wdGVlX2RvbWFpbiAqY3R4LAog ICAgIGNvcHlfc3RkX3JlcXVlc3RfYmFjayhjdHgsIHJlZ3MsIGNhbGwpOwogICAgIHNldF91c2Vy X3JlZyhyZWdzLCAwLCByZXMuYTApOwogCisgICAgc3dpdGNoICggY2FsbC0+eGVuX2FyZy0+Y21k ICkKKyAgICB7CisgICAgY2FzZSBPUFRFRV9NU0dfQ01EX1JFR0lTVEVSX1NITToKKyAgICAgICAg aWYgKCBjYWxsLT54ZW5fYXJnLT5yZXQgPT0gMCApCisgICAgICAgICAgICAvKiBPUC1URUUgcmVn aXN0ZXJlZCBidWZmZXIsIHdlIGRvbid0IG5lZWQgcGdfbGlzdCBhbnltb3JlICovCisgICAgICAg ICAgICBmcmVlX29wdGVlX3NobV9idWZfcGdfbGlzdChjdHgsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYWxsLT54ZW5fYXJnLT5wYXJhbXNbMF0udS50bWVtLnNobV9y ZWYpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAvKiBPUC1URUUgZmFpbGVkIHRvIHJlZ2lz dGVyIGJ1ZmZlciwgd2UgbmVlZCB0byB1bnBpbiBndWVzdCBwYWdlcyAqLworICAgICAgICAgICAg ZnJlZV9vcHRlZV9zaG1fYnVmKGN0eCwgY2FsbC0+eGVuX2FyZy0+cGFyYW1zWzBdLnUudG1lbS5z aG1fcmVmKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBPUFRFRV9NU0dfQ01EX1VOUkVHSVNU RVJfU0hNOgorICAgICAgICBpZiAoIGNhbGwtPnhlbl9hcmctPnJldCA9PSAwICkKKyAgICAgICAg ICAgIC8qIE5vdyB3ZSBjYW4gdW5waW4gZ3Vlc3QgcGFnZXMgKi8KKyAgICAgICAgICAgIGZyZWVf b3B0ZWVfc2htX2J1ZihjdHgsIGNhbGwtPnhlbl9hcmctPnBhcmFtc1swXS51LnJtZW0uc2htX3Jl Zik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qIEZyZWUgYW55IHRl bXBvcmFyeSBzaGFyZWQgYnVmZmVycyAqLworICAgICAgICBmcmVlX3NobV9idWZmZXJzKGN0eCwg Y2FsbC0+eGVuX2FyZyk7CisgICAgfQorCiAgICAgcHV0X3N0ZF9jYWxsKGN0eCwgY2FsbCk7CiAg ICAgZnJlZV9zdGRfY2FsbChjdHgsIGNhbGwpOwogfQpAQCAtNjU4LDYgKzEwNTksMTggQEAgc3Rh dGljIHZvaWQgaGFuZGxlX3N0ZF9jYWxsKHN0cnVjdCBvcHRlZV9kb21haW4gKmN0eCwKICAgICBj YXNlIE9QVEVFX01TR19DTURfQ0FOQ0VMOgogICAgIGNhc2UgT1BURUVfTVNHX0NNRF9SRUdJU1RF Ul9TSE06CiAgICAgY2FzZSBPUFRFRV9NU0dfQ01EX1VOUkVHSVNURVJfU0hNOgorICAgICAgICBp ZiggdHJhbnNsYXRlX3BhcmFtcyhjdHgsIGNhbGwpICkKKyAgICAgICAgeworICAgICAgICAgICAg LyoKKyAgICAgICAgICAgICAqIHRyYW5zbGF0ZV9wYXJhbXMoKSBzZXRzIHhlbl9hcmctPnJldCB2 YWx1ZSB0byBub24temVyby4KKyAgICAgICAgICAgICAqIFNvLCB0ZWNobmljYWxseSwgU01DIHdh cyBzdWNjZXNzZnVsLCBidXQgdGhlcmUgd2FzIGFuIGVycm9yCisgICAgICAgICAgICAgKiBkdXJp bmcgaGFuZGxpbmcgc3RhbmRhcmQgY2FsbCBlbmNhcHN1bGF0ZWQgaW50byB0aGlzIFNNQy4KKyAg ICAgICAgICAgICAqLworICAgICAgICAgICAgY29weV9zdGRfcmVxdWVzdF9iYWNrKGN0eCwgcmVn cywgY2FsbCk7CisgICAgICAgICAgICBzZXRfdXNlcl9yZWcocmVncywgMCwgT1BURUVfU01DX1JF VFVSTl9PSyk7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorCiAgICAgICAgIHhl bl9hZGRyID0gcGFnZV90b19tYWRkcihjYWxsLT54ZW5fYXJnX3BnKTsKICAgICAgICAgdWludDY0 X3RvX3JlZ3BhaXIoJmExLCAmYTIsIHhlbl9hZGRyKTsKIAotLSAKMi4yMS4wCgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2pl Y3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs