From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: [PATCH v4 17/34] xsplice: Implement support for applying/reverting/replacing patches. Date: Tue, 15 Mar 2016 13:56:39 -0400 Message-ID: <1458064616-23101-18-git-send-email-konrad.wilk@oracle.com> References: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1aftGp-0001ag-2T for xen-devel@lists.xenproject.org; Tue, 15 Mar 2016 18:00:39 +0000 In-Reply-To: <1458064616-23101-1-git-send-email-konrad.wilk@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org, ross.lagerwall@citrix.com, konrad@kernel.org, andrew.cooper3@citrix.com, mpohlack@amazon.de, sasha.levin@oracle.com Cc: Kevin Tian , Keir Fraser , Suravee Suthikulpanit , Konrad Rzeszutek Wilk , Jun Nakajima , Julien Grall , Stefano Stabellini , Jan Beulich , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org RnJvbTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+CgpJbXBsZW1l bnQgc3VwcG9ydCBmb3IgdGhlIGFwcGx5LCByZXZlcnQgYW5kIHJlcGxhY2UgYWN0aW9ucy4KClRv IHBlcmZvcm0gYW5kIGFjdGlvbiBvbiBhIHBheWxvYWQsIHRoZSBoeXBlcmNhbGwgc2V0cyB1cCBh IGRhdGEKc3RydWN0dXJlIHRvIHNjaGVkdWxlIHRoZSB3b3JrLiAgQSBob29rIGlzIGFkZGVkIGlu IGFsbCB0aGUKcmV0dXJuLXRvLWd1ZXN0IHBhdGhzIHRvIGNoZWNrIGZvciB3b3JrIHRvIGRvIGFu ZCBleGVjdXRlIGl0IGlmIG5lZWRlZC4KSW4gdGhpcyB3YXksIHBhdGNoZXMgY2FuIGJlIGFwcGxp ZWQgd2l0aCBhbGwgQ1BVcyBpZGxlIGFuZCB3aXRob3V0CnN0YWNrcy4gIFRoZSBmaXJzdCBDUFUg dG8gZG9feHNwbGljZSgpIGJlY29tZXMgdGhlIG1hc3RlciBhbmQgdHJpZ2dlcnMgYQpyZXNjaGVk dWxlIHNvZnRpcnEgdG8gdHJpZ2dlciBhbGwgdGhlIG90aGVyIENQVXMgdG8gZW50ZXIgZG9feHNw bGljZSgpCndpdGggbm8gc3RhY2suICBPbmNlIGFsbCBDUFVzIGhhdmUgcmVuZGV6dm91c2VkLCBh bGwgQ1BVcyBkaXNhYmxlIElSUXMKYW5kIE5NSXMgYXJlIGlnbm9yZWQuIFRoZSBzeXN0ZW0gaXMg dGhlbiBxdWlzY2llbnQgYW5kIHRoZSBtYXN0ZXIKcGVyZm9ybXMgdGhlIGFjdGlvbi4gIEFmdGVy IHRoaXMsIGFsbCBDUFVzIGVuYWJsZSBJUlFzIGFuZCBOTUlzIGFyZQpyZS1lbmFibGVkLgoKTm90 ZSB0aGF0IGl0IGlzIHVuc2FmZSB0byBwYXRjaCBkb19ubWkgYW5kIHRoZSB4U3BsaWNlIGludGVy bmFsIGZ1bmN0aW9ucy4KUGF0Y2hpbmcgZnVuY3Rpb25zIG9uIE5NSS9NQ0UgcGF0aCBpcyBsaWFi bGUgdG8gZW5kIGluIGRpc2FzdGVyLgoKVGhlIGFjdGlvbiB0byBwZXJmb3JtIGlzIG9uZSBvZjoK LSBBUFBMWTogRm9yIGVhY2ggZnVuY3Rpb24gaW4gdGhlIG1vZHVsZSwgc3RvcmUgdGhlIGZpcnN0 IDUgYnl0ZXMgb2YgdGhlCiAgb2xkIGZ1bmN0aW9uIGFuZCByZXBsYWNlIGl0IHdpdGggYSBqdW1w IHRvIHRoZSBuZXcgZnVuY3Rpb24uCi0gUkVWRVJUOiBDb3B5IHRoZSBwcmV2aW91c2x5IHN0b3Jl ZCBieXRlcyBpbnRvIHRoZSBmaXJzdCA1IGJ5dGVzIG9mIHRoZQogIG9sZCBmdW5jdGlvbi4KLSBS RVBMQUNFOiBSZXZlcnQgZWFjaCBhcHBsaWVkIG1vZHVsZSBhbmQgdGhlbiBhcHBseSB0aGUgbmV3 IG1vZHVsZS4KClRvIHByZXZlbnQgYSBkZWFkbG9jayB3aXRoIGFueSBvdGhlciBiYXJyaWVyIGlu IHRoZSBzeXN0ZW0sIHRoZSBtYXN0ZXIKd2lsbCB3YWl0IGZvciB1cCB0byAzMG1zIGJlZm9yZSB0 aW1pbmcgb3V0LgpNZWFzdXJlbWVudHMgZm91bmQgdGhhdCB0aGUgcGF0Y2ggYXBwbGljYXRpb24g dG8gdGFrZSBhYm91dCAxMDAgzrxzIG9uIGEKNzIgQ1BVIHN5c3RlbSwgd2hldGhlciBpZGxlIG9y IGZ1bGx5IGxvYWRlZC4KCldlIGFsc28gYWRkIGFuIEJVSUxEX09OIHRvIG1ha2Ugc3VyZSB0aGF0 IHRoZSBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUKb2YgdGhlIHBheWxvYWQgaXMgbm90IGluYWR2ZXJ0 bHkgY2hhbmdlZC4KCkxhc3RseSB3ZSB1bnJvbGwgdGhlICd2bWFwX3RvX3BhZ2UnIG9uIHg4NiBh cyBpbnNpZGUgdGhlIG1hY3JvIHRoZXJlCmlzIGEgcG9zaWJpbGl0eSBvZiBhIE5VTEwgcG9pbnRl ci4gSGVuY2Ugd2UgdW5yb2xsIGl0IHdpdGggZXh0cmEKQVNTRVJUUy4gTm90ZSB0aGF0IGFzc2Vy dHMgb24gbm9uLWRlYnVnIGJ1aWxkcyBhcmUgY29tcGlsZWQgb3V0IGhlbmNlCnRoZSBleHRyYSBj aGVja3MgdGhhdCB3aWxsIGp1c3QgcmV0dXJuIChhbmQgbGVhayBtZW1vcnkpLgoKU2lnbmVkLW9m Zi1ieTogUm9zcyBMYWdlcndhbGwgPHJvc3MubGFnZXJ3YWxsQGNpdHJpeC5jb20+ClNpZ25lZC1v ZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KCi0t CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHN0ZWZhbm8uc3RhYmVsbGluaUBjaXRyaXguY29tPgpD YzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAYXJtLmNvbT4KQ2M6IEtlaXIgRnJhc2VyIDxr ZWlyQHhlbi5vcmc+CkNjOiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBBbmRy ZXcgQ29vcGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgpDYzogQm9yaXMgT3N0cm92c2t5 IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KQ2M6IFN1cmF2ZWUgU3V0aGlrdWxwYW5pdCA8 c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5jb20+CkNjOiBKdW4gTmFrYWppbWEgPGp1bi5uYWth amltYUBpbnRlbC5jb20+CkNjOiBLZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KCnYy OiAtIFBsdWNrIHRoZSAnc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYycgaW4gdGhpcyBwYXRjaC4K ICAgIC0gTW9kaWZ5IGNvZGUgcGVyIHJldmlldyBjb21tZW50cy4KICAgIC0gQWRkIG1vcmUgZGF0 YSBpbiB0aGUga2V5Ym9hcmQgaGFuZGxlci4KICAgIC0gUmVkbyB0aGUgcGF0Y2hpbmcgY29kZSwg c3BsaXQgaXQgaW4gZnVuY3Rpb25zLgp2MzogLSBBZGQgcmV0dXJuXyBtYWNybyBmb3IgZGVidWcg YnVpbGRzLgogICAgLSBNb3ZlIHMvcGF5bG9hZF9saXN0X2xvY2svcGF5bG9hZF9saXN0LyB0byBl YXJsaWVyIHBhdGNoCiAgICAtIFJlbW92ZSBjb25zdCBhbmQgdXNlIEVMRiB0eXBlcyBmb3IgeHNw bGljZV9wYXRjaF9mdW5jCnY0OiAtIEFkZCBjaGVjayByb3V0aW5lIHRvIGRvIHNpbXBsZSBzYW5p dHkgY2hlY2tzIGZvciB2YXJpb3VzCiAgICAgIHNlY3Rpb25zLgp2NTogLSBzLyVwL1BSSXg2NC8g YXMgQVJNIGJ1aWxkcyBjb21wbGFpbi4KdjY6IC0gTW92ZSBjb2RlIGFyb3VuZC4gQWRkIG1vcmUg ZHByaW50ay4gQWRkIFhTUExJQ0UgaW4gZnJvbnQgb2YgYWxsCiAgICAgIHByaW50a3MvZHByaW50 ay4KICAgICAgUHV0IHRoZSBOTUlzIGJhY2sgaWYgd2UgZmFpbCBwYXRjaGluZy4KICAgICAgQWRk IHBlci1jcHUgdG8gbGVzc2VuIGNvbnRlbnRpb24gZm9yIGdsb2JhbCBzdHJ1Y3R1cmUuCiAgICAg IEV4dHJhY3QgZnJvbSB4c3BsaWNlX2RvX3NpbmdsZSBwYXRjaGluZyBjb2RlIGludG8geHNwbGlj ZV9kb19hY3Rpb24KICAgICAgU3F1YXNoIHhzcGxpY2VfZG9fc2luZ2xlIGFuZCBjaGVja19mb3Jf eHNwbGljZV93b3JrIHRvZ2V0aGVyIHRvCiAgICAgIGhhdmUgYWxsIHJlbmRlenZvdXMgaW4gb25l IHBsYWNlLgogICAgICBNYWRlIFhTUExJQ0VfQUNUSU9OX1JFUExBQ0Ugd29yayBhZ2FpbiAod3Jv bmcgbGlzdCBpdGVyYXRvcikKICAgICAgcy9maW5kX3NwZWNpYWxfc2VjdGlvbnMvcHJlcGFyZV9w YXlsb2FkLwogICAgICBVc2UgbGlzdF9kZWxfaW5pdCBhbmQgSU5JVF9MSVNUX0hFQUQgZm9yIGFw cGxpZWRfbGlzdAp2NzogLSBBZGQgY29tbWVudCwgYWRqdXN0IHNwYWNpbmcgZm9yICJUaW1lZCBv dXQgb24gQ1BVIHNlbWFwaG9yZSIKdjg6IC0gQWRkZWQgQ1IwLldQIG1hbmlwdWxhdGlvbnMgd2hl biBhbHRlcmluZyB0aGUgLnRleHQgb2YgaHlwZXJ2aXNvci4Kdjk6IC0gQWRkZWQgZml4IGZyb20g QW5kcmV3IGZvciBDUjAuV1AgbWFuaXB1bGF0aW9uLgotLS0KLS0tCiBkb2NzL21pc2MveHNwbGlj ZS5tYXJrZG93biAgfCAgIDMgKy0KIHhlbi9hcmNoL2FybS94c3BsaWNlLmMgICAgICB8ICAyMCAr KwogeGVuL2FyY2gveDg2L2RvbWFpbi5jICAgICAgIHwgICA0ICsKIHhlbi9hcmNoL3g4Ni9odm0v c3ZtL3N2bS5jICB8ICAgMiArCiB4ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMgfCAgIDIgKwog eGVuL2FyY2gveDg2L3hzcGxpY2UuYyAgICAgIHwgIDM5ICsrKysKIHhlbi9jb21tb24veHNwbGlj ZS5jICAgICAgICB8IDQ1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLQogeGVuL2luY2x1ZGUvYXNtLWFybS9ubWkuaCAgIHwgIDEzICsrCiB4ZW4vaW5jbHVkZS94 ZW4veHNwbGljZS5oICAgfCAgMzEgKystCiA5IGZpbGVzIGNoYW5nZWQsIDU1MSBpbnNlcnRpb25z KCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2NzL21pc2MveHNwbGljZS5tYXJr ZG93biBiL2RvY3MvbWlzYy94c3BsaWNlLm1hcmtkb3duCmluZGV4IGNiM2FmNmUuLjE5NDBlMjkg MTAwNjQ0Ci0tLSBhL2RvY3MvbWlzYy94c3BsaWNlLm1hcmtkb3duCisrKyBiL2RvY3MvbWlzYy94 c3BsaWNlLm1hcmtkb3duCkBAIC04MjksNyArODI5LDggQEAgVGhlIGltcGxlbWVudGF0aW9uIG11 c3QgYWxzbyBoYXZlIGEgbWVjaGFuaXNtIGZvcjoKICAqIEJlIGFibGUgdG8gbG9va3VwIGluIHRo ZSBYZW4gaHlwZXJ2aXNvciB0aGUgc3ltYm9sIG5hbWVzIG9mIGZ1bmN0aW9ucyBmcm9tIHRoZSBF TEYgcGF5bG9hZC4KICAqIEJlIGFibGUgdG8gcGF0Y2ggLnJvZGF0YSwgLmJzcywgYW5kIC5kYXRh IHNlY3Rpb25zLgogICogRnVydGhlciBzYWZldHkgY2hlY2tzIChibGFja2xpc3Qgb2Ygd2hpY2gg ZnVuY3Rpb25zIGNhbm5vdCBiZSBwYXRjaGVkLCBjaGVjawotICAgdGhlIHN0YWNrLCBtYWtlIHN1 cmUgdGhlIHBheWxvYWQgaXMgYnVpbHQgd2l0aCBzYW1lIGNvbXBpbGVyIGFzIGh5cGVydmlzb3Ip LgorICAgdGhlIHN0YWNrLCBtYWtlIHN1cmUgdGhlIHBheWxvYWQgaXMgYnVpbHQgd2l0aCBzYW1l IGNvbXBpbGVyIGFzIGh5cGVydmlzb3IsCisgICBhbmQgTk1JL01DRSBoYW5kbGVycyBhbmQgZG9f bm1pIGZvciByaWdodCBub3cgLSB1bnRpbCBhbiBzYWZlIHNvbHV0aW9uIGlzIGZvdW5kKS4KICAq IE5PUCBvdXQgdGhlIGNvZGUgc2VxdWVuY2UgaWYgYG5ld19zaXplYCBpcyB6ZXJvLgogICogRGVh bCB3aXRoIG90aGVyIHJlbG9jYXRpb24gdHlwZXM6ICBSX1g4Nl82NF9bOCwxNiwzMiwzMlNdLCBS X1g4Nl82NF9QQ1s4LDE2LDY0XSBpbiBwYXlsb2FkIGZpbGUuCiAKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL2FybS94c3BsaWNlLmMgYi94ZW4vYXJjaC9hcm0veHNwbGljZS5jCmluZGV4IGIyMDM2NWMu LjhmOTk3YjAgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL2FybS94c3BsaWNlLmMKKysrIGIveGVuL2Fy Y2gvYXJtL3hzcGxpY2UuYwpAQCAtNiw2ICs2LDI2IEBACiAjaW5jbHVkZSA8eGVuL3hzcGxpY2Vf ZWxmLmg+CiAjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KIAordm9pZCBhcmNoX3hzcGxpY2VfcGF0 Y2hpbmdfZW50ZXIodm9pZCkKK3sKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVh dmUodm9pZCkKK3sKK30KKwordm9pZCBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKHN0cnVjdCB4c3Bs aWNlX3BhdGNoX2Z1bmMgKmZ1bmMpCit7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3JldmVydF9q bXAoc3RydWN0IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZnVuYykKK3sKK30KKwordm9pZCBhcmNoX3hz cGxpY2VfcG9zdF9hY3Rpb24odm9pZCkKK3sKK30KKwogaW50IGFyY2hfeHNwbGljZV92ZXJpZnlf ZWxmKGNvbnN0IHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmLCB2b2lkICpkYXRhKQogewogICAgIHJl dHVybiAtRU5PU1lTOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWFpbi5jIGIveGVuL2Fy Y2gveDg2L2RvbWFpbi5jCmluZGV4IGE2ZDcyMWIuLmVjZWE2OTQgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9kb21haW4uYworKysgYi94ZW4vYXJjaC94ODYvZG9tYWluLmMKQEAgLTM2LDYgKzM2 LDcgQEAKICNpbmNsdWRlIDx4ZW4vY3B1Lmg+CiAjaW5jbHVkZSA8eGVuL3dhaXQuaD4KICNpbmNs dWRlIDx4ZW4vZ3Vlc3RfYWNjZXNzLmg+CisjaW5jbHVkZSA8eGVuL3hzcGxpY2UuaD4KICNpbmNs dWRlIDxwdWJsaWMvc3lzY3RsLmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9odm1fdmNwdS5oPgog I2luY2x1ZGUgPGFzbS9yZWdzLmg+CkBAIC0xMjEsNiArMTIyLDcgQEAgc3RhdGljIHZvaWQgaWRs ZV9sb29wKHZvaWQpCiAgICAgICAgICgqcG1faWRsZSkoKTsKICAgICAgICAgZG9fdGFza2xldCgp OwogICAgICAgICBkb19zb2Z0aXJxKCk7CisgICAgICAgIGNoZWNrX2Zvcl94c3BsaWNlX3dvcmso KTsgLyogTXVzdCBiZSBsYXN0LiAqLwogICAgIH0KIH0KIApAQCAtMTM3LDYgKzEzOSw3IEBAIHZv aWQgc3RhcnR1cF9jcHVfaWRsZV9sb29wKHZvaWQpCiAKIHN0YXRpYyB2b2lkIG5vcmV0dXJuIGNv bnRpbnVlX2lkbGVfZG9tYWluKHN0cnVjdCB2Y3B1ICp2KQogeworICAgIGNoZWNrX2Zvcl94c3Bs aWNlX3dvcmsoKTsKICAgICByZXNldF9zdGFja19hbmRfanVtcChpZGxlX2xvb3ApOwogfQogCkBA IC0xNDQsNiArMTQ3LDcgQEAgc3RhdGljIHZvaWQgbm9yZXR1cm4gY29udGludWVfbm9uaWRsZV9k b21haW4oc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgY2hlY2tfd2FrZXVwX2Zyb21fd2FpdCgpOwog ICAgIG1hcmtfcmVnc19kaXJ0eShndWVzdF9jcHVfdXNlcl9yZWdzKCkpOworICAgIGNoZWNrX2Zv cl94c3BsaWNlX3dvcmsoKTsKICAgICByZXNldF9zdGFja19hbmRfanVtcChyZXRfZnJvbV9pbnRy KTsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgYi94ZW4vYXJj aC94ODYvaHZtL3N2bS9zdm0uYwppbmRleCA3NjM0YzNmLi5iYmIwYTczIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0u YwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHhlbi9oeXBlcmNhbGwuaD4KICNpbmNsdWRl IDx4ZW4vZG9tYWluX3BhZ2UuaD4KICNpbmNsdWRlIDx4ZW4veGVub3Byb2YuaD4KKyNpbmNsdWRl IDx4ZW4veHNwbGljZS5oPgogI2luY2x1ZGUgPGFzbS9jdXJyZW50Lmg+CiAjaW5jbHVkZSA8YXNt L2lvLmg+CiAjaW5jbHVkZSA8YXNtL3BhZ2luZy5oPgpAQCAtMTA5Niw2ICsxMDk3LDcgQEAgc3Rh dGljIHZvaWQgbm9yZXR1cm4gc3ZtX2RvX3Jlc3VtZShzdHJ1Y3QgdmNwdSAqdikKIAogICAgIGh2 bV9kb19yZXN1bWUodik7CiAKKyAgICBjaGVja19mb3JfeHNwbGljZV93b3JrKCk7CiAgICAgcmVz ZXRfc3RhY2tfYW5kX2p1bXAoc3ZtX2FzbV9kb19yZXN1bWUpOwogfQogCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMK aW5kZXggZmQ0ZDg3Ni4uZDMxZjJhNCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgv dm1jcy5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYwpAQCAtMjUsNiArMjUsNyBA QAogI2luY2x1ZGUgPHhlbi9rZXJuZWwuaD4KICNpbmNsdWRlIDx4ZW4va2V5aGFuZGxlci5oPgog I2luY2x1ZGUgPHhlbi92bV9ldmVudC5oPgorI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAjaW5j bHVkZSA8YXNtL2N1cnJlbnQuaD4KICNpbmNsdWRlIDxhc20vY3B1ZmVhdHVyZS5oPgogI2luY2x1 ZGUgPGFzbS9wcm9jZXNzb3IuaD4KQEAgLTE3MjIsNiArMTcyMyw3IEBAIHZvaWQgdm14X2RvX3Jl c3VtZShzdHJ1Y3QgdmNwdSAqdikKICAgICB9CiAKICAgICBodm1fZG9fcmVzdW1lKHYpOworICAg IGNoZWNrX2Zvcl94c3BsaWNlX3dvcmsoKTsKICAgICByZXNldF9zdGFja19hbmRfanVtcCh2bXhf YXNtX2RvX3ZtZW50cnkpOwogfQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveHNwbGljZS5j IGIveGVuL2FyY2gveDg2L3hzcGxpY2UuYwppbmRleCA0OGEzNjQ1Li5mNGQyNjEwIDEwMDY0NAot LS0gYS94ZW4vYXJjaC94ODYveHNwbGljZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni94c3BsaWNlLmMK QEAgLTEwLDYgKzEwLDQ1IEBACiAjaW5jbHVkZSA8eGVuL3hzcGxpY2VfZWxmLmg+CiAjaW5jbHVk ZSA8eGVuL3hzcGxpY2UuaD4KIAorI2RlZmluZSBQQVRDSF9JTlNOX1NJWkUgNQorCit2b2lkIGFy Y2hfeHNwbGljZV9wYXRjaGluZ19lbnRlcih2b2lkKQoreworICAgIC8qIERpc2FibGUgV1AgdG8g YWxsb3cgY2hhbmdlcyB0byByZWFkLW9ubHkgcGFnZXMuICovCisgICAgd3JpdGVfY3IwKHJlYWRf Y3IwKCkgJiB+WDg2X0NSMF9XUCk7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2xl YXZlKHZvaWQpCit7CisgICAgLyogUmVpbnN0YXRlIFdQLiAqLworICAgIHdyaXRlX2NyMChyZWFk X2NyMCgpIHwgWDg2X0NSMF9XUCk7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX2FwcGx5X2ptcChz dHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jICpmdW5jKQoreworICAgIHVpbnQzMl90IHZhbDsKKyAg ICB1aW50OF90ICpvbGRfcHRyOworCisgICAgQlVJTERfQlVHX09OKFBBVENIX0lOU05fU0laRSA8 IHNpemVvZigqZnVuYy0+dW5kbykpOworCisgICAgb2xkX3B0ciA9ICh1aW50OF90ICopZnVuYy0+ b2xkX2FkZHI7CisgICAgbWVtY3B5KGZ1bmMtPnVuZG8sIG9sZF9wdHIsIFBBVENIX0lOU05fU0la RSk7CisKKyAgICAqb2xkX3B0cisrID0gMHhlOTsgLyogUmVsYXRpdmUganVtcCAqLworICAgIHZh bCA9IGZ1bmMtPm5ld19hZGRyIC0gZnVuYy0+b2xkX2FkZHIgLSBQQVRDSF9JTlNOX1NJWkU7Cisg ICAgbWVtY3B5KG9sZF9wdHIsICZ2YWwsIHNpemVvZiB2YWwpOworfQorCit2b2lkIGFyY2hfeHNw bGljZV9yZXZlcnRfam1wKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKmZ1bmMpCit7CisgICAg bWVtY3B5KCh2b2lkICopZnVuYy0+b2xkX2FkZHIsIGZ1bmMtPnVuZG8sIFBBVENIX0lOU05fU0la RSk7Cit9CisKK3ZvaWQgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKHZvaWQpCit7CisgICAgY3B1 aWRfZWF4KDApOworfQorCiBpbnQgYXJjaF94c3BsaWNlX3ZlcmlmeV9lbGYoY29uc3Qgc3RydWN0 IHhzcGxpY2VfZWxmICplbGYsIHZvaWQgKmRhdGEpCiB7CiAKZGlmZiAtLWdpdCBhL3hlbi9jb21t b24veHNwbGljZS5jIGIveGVuL2NvbW1vbi94c3BsaWNlLmMKaW5kZXggNWJiYjViYi4uZDQ1NjY3 MSAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi94c3BsaWNlLmMKKysrIGIveGVuL2NvbW1vbi94c3Bs aWNlLmMKQEAgLTMsNiArMyw3IEBACiAgKgogICovCiAKKyNpbmNsdWRlIDx4ZW4vY3B1Lmg+CiAj aW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgogI2luY2x1ZGUgPHhlbi9rZXloYW5kbGVyLmg+ CiAjaW5jbHVkZSA8eGVuL2xpYi5oPgpAQCAtMTAsMTcgKzExLDI5IEBACiAjaW5jbHVkZSA8eGVu L21tLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8eGVuL3NtcC5oPgorI2lu Y2x1ZGUgPHhlbi9zb2Z0aXJxLmg+CiAjaW5jbHVkZSA8eGVuL3NwaW5sb2NrLmg+CiAjaW5jbHVk ZSA8eGVuL3ZtYXAuaD4KKyNpbmNsdWRlIDx4ZW4vd2FpdC5oPgogI2luY2x1ZGUgPHhlbi94c3Bs aWNlX2VsZi5oPgogI2luY2x1ZGUgPHhlbi94c3BsaWNlLmg+CiAKICNpbmNsdWRlIDxhc20vZXZl bnQuaD4KKyNpbmNsdWRlIDxhc20vbm1pLmg+CiAjaW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPgog CisvKgorICogUHJvdGVjdHMgYWdhaW5zdCBwYXlsb2FkX2xpc3Qgb3BlcmF0aW9ucyBhbmQgYWxz byBhbGxvd3Mgb25seSBvbmUKKyAqIGNhbGxlciBpbiBzY2hlZHVsZV93b3JrLgorICovCiBzdGF0 aWMgREVGSU5FX1NQSU5MT0NLKHBheWxvYWRfbG9jayk7CiBzdGF0aWMgTElTVF9IRUFEKHBheWxv YWRfbGlzdCk7CiAKKy8qCisgKiBQYXRjaGVzIHdoaWNoIGhhdmUgYmVlbiBhcHBsaWVkLgorICov CitzdGF0aWMgTElTVF9IRUFEKGFwcGxpZWRfbGlzdCk7CisKIHN0YXRpYyB1bnNpZ25lZCBpbnQg cGF5bG9hZF9jbnQ7CiBzdGF0aWMgdW5zaWduZWQgaW50IHBheWxvYWRfdmVyc2lvbiA9IDE7CiAK QEAgLTMxLDkgKzQ0LDMxIEBAIHN0cnVjdCBwYXlsb2FkIHsKICAgICB2b2lkICpwYXlsb2FkX2Fk ZHJlc3M7ICAgICAgICAgICAgICAgLyogVmlydHVhbCBhZGRyZXNzIG1hcHBlZC4gKi8KICAgICBz aXplX3QgcGF5bG9hZF9wYWdlczsgICAgICAgICAgICAgICAgLyogTnIgb2YgdGhlIHBhZ2VzLiAq LwogICAgIG1mbl90ICptZm47ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBcnJheSBvZiBN Rk5zIG9mIHRoZSBwYWdlcy4gKi8KKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGFwcGxpZWRfbGlzdDsg ICAgICAgLyogTGlua2VkIHRvICdhcHBsaWVkX2xpc3QnLiAqLworICAgIHN0cnVjdCB4c3BsaWNl X3BhdGNoX2Z1bmMgKmZ1bmNzOyAgICAvKiBUaGUgYXJyYXkgb2YgZnVuY3Rpb25zIHRvIHBhdGNo LiAqLworICAgIHVuc2lnbmVkIGludCBuZnVuY3M7ICAgICAgICAgICAgICAgICAvKiBOciBvZiBm dW5jdGlvbnMgdG8gcGF0Y2guICovCiAgICAgY2hhciBuYW1lW1hFTl9YU1BMSUNFX05BTUVfU0la RSArIDFdOy8qIE5hbWUgb2YgaXQuICovCiB9OwogCisvKiBEZWZpbmVzIGFuIG91dHN0YW5kaW5n IHBhdGNoaW5nIGFjdGlvbi4gKi8KK3N0cnVjdCB4c3BsaWNlX3dvcmsKK3sKKyAgICBhdG9taWNf dCBzZW1hcGhvcmU7ICAgICAgICAgIC8qIFVzZWQgZm9yIHJlbmRlenZvdXMuIEZpcnN0IHRvIGdy YWIgaXQgd2lsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gdGhlIHBh dGNoaW5nLiAqLworICAgIGF0b21pY190IGlycV9zZW1hcGhvcmU7ICAgICAgLyogVXNlZCB0byBz aWduYWwgYWxsIElSUXMgZGlzYWJsZWQuICovCisgICAgdWludDMyX3QgdGltZW91dDsgICAgICAg ICAgICAgICAgICAgIC8qIFRpbWVvdXQgdG8gZG8gdGhlIG9wZXJhdGlvbi4gKi8KKyAgICBzdHJ1 Y3QgcGF5bG9hZCAqZGF0YTsgICAgICAgIC8qIFRoZSBwYXlsb2FkIG9uIHdoaWNoIHRvIGFjdC4g Ki8KKyAgICB2b2xhdGlsZSBib29sX3QgZG9fd29yazsgICAgIC8qIFNpZ25hbHMgd29yayB0byBk by4gKi8KKyAgICB2b2xhdGlsZSBib29sX3QgcmVhZHk7ICAgICAgIC8qIFNpZ25hbHMgYWxsIENQ VXMgc3luY2hyb25pemVkLiAqLworICAgIHVpbnQzMl90IGNtZDsgICAgICAgICAgICAgICAgLyog QWN0aW9uIHJlcXVlc3Q6IFhTUExJQ0VfQUNUSU9OXyogKi8KK307CisKKy8qIFRoZXJlIGNhbiBi ZSBvbmx5IG9uZSBvdXRzdGFuZGluZyBwYXRjaGluZyBhY3Rpb24uICovCitzdGF0aWMgc3RydWN0 IHhzcGxpY2Vfd29yayB4c3BsaWNlX3dvcms7CisKKy8qIEluZGljYXRlIHdoZXRoZXIgdGhlIENQ VSBuZWVkcyB0byBjb25zdWx0IHhzcGxpY2Vfd29yayBzdHJ1Y3R1cmUuICovCitzdGF0aWMgREVG SU5FX1BFUl9DUFUoYm9vbF90LCB3b3JrX3RvX2RvKTsKKwogc3RhdGljIGludCB2ZXJpZnlfbmFt ZShjb25zdCB4ZW5feHNwbGljZV9uYW1lX3QgKm5hbWUpCiB7CiAgICAgaWYgKCBuYW1lLT5zaXpl ID09IDAgfHwgbmFtZS0+c2l6ZSA+IFhFTl9YU1BMSUNFX05BTUVfU0laRSApCkBAIC0yMjUsNiAr MjYwLDcyIEBAIHN0YXRpYyBpbnQgc2VjdXJlX3BheWxvYWQoc3RydWN0IHBheWxvYWQgKnBheWxv YWQsIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQogICAgIHJldHVybiByYzsKIH0KIAorc3RhdGlj IGludCBjaGVja19zcGVjaWFsX3NlY3Rpb25zKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4c3BsaWNlX2VsZiAqZWxmKQor eworICAgIHVuc2lnbmVkIGludCBpOworICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBuYW1l c1tdID0geyAiLnhzcGxpY2UuZnVuY3MiIH07CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZ X1NJWkUobmFtZXMpOyBpKysgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHhzcGxpY2VfZWxmX3Nl YyAqc2VjOworCisgICAgICAgIHNlYyA9IHhzcGxpY2VfZWxmX3NlY19ieV9uYW1lKGVsZiwgbmFt ZXNbaV0pOworICAgICAgICBpZiAoICFzZWMgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmlu dGsoWEVOTE9HX0VSUiAiJXMlczogJXMgaXMgbWlzc2luZyFcbiIsCisgICAgICAgICAgICAgICAg ICAgWFNQTElDRSwgZWxmLT5uYW1lLCBuYW1lc1tpXSk7CisgICAgICAgICAgICByZXR1cm4gLUVJ TlZBTDsKKyAgICAgICAgfQorICAgICAgICBpZiAoICFzZWMtPnNlYy0+c2hfc2l6ZSApCisgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgcHJlcGFyZV9wYXlsb2FkKHN0cnVjdCBwYXlsb2FkICpwYXlsb2FkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IHhzcGxpY2VfZWxmICplbGYpCit7CisgICAgc3RydWN0 IHhzcGxpY2VfZWxmX3NlYyAqc2VjOworICAgIHVuc2lnbmVkIGludCBpOworICAgIHN0cnVjdCB4 c3BsaWNlX3BhdGNoX2Z1bmMgKmY7CisKKyAgICBzZWMgPSB4c3BsaWNlX2VsZl9zZWNfYnlfbmFt ZShlbGYsICIueHNwbGljZS5mdW5jcyIpOworICAgIGlmICggc2VjICkKKyAgICB7CisgICAgICAg IGlmICggc2VjLT5zZWMtPnNoX3NpemUgJSBzaXplb2YgKnBheWxvYWQtPmZ1bmNzICkKKyAgICAg ICAgeworICAgICAgICAgICAgZHByaW50ayhYRU5MT0dfREVCVUcsICIlcyVzOiBXcm9uZyBzaXpl IG9mIC54c3BsaWNlLmZ1bmNzIVxuIiwKKyAgICAgICAgICAgICAgICAgICAgWFNQTElDRSwgZWxm LT5uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAg IHBheWxvYWQtPmZ1bmNzID0gKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgKilzZWMtPmxvYWRf YWRkcjsKKyAgICAgICAgcGF5bG9hZC0+bmZ1bmNzID0gc2VjLT5zZWMtPnNoX3NpemUgLyAoc2l6 ZW9mICpwYXlsb2FkLT5mdW5jcyk7CisgICAgfQorCisgICAgZm9yICggaSA9IDA7IGkgPCBwYXls b2FkLT5uZnVuY3M7IGkrKyApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgajsKKworICAg ICAgICBmID0gJihwYXlsb2FkLT5mdW5jc1tpXSk7CisKKyAgICAgICAgaWYgKCAhZi0+bmV3X2Fk ZHIgfHwgIWYtPm9sZF9hZGRyIHx8ICFmLT5vbGRfc2l6ZSB8fCAhZi0+bmV3X3NpemUgKQorICAg ICAgICB7CisgICAgICAgICAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IEFkZHJlc3Mg b3Igc2l6ZSBmaWVsZHMgYXJlIHplcm8hXG4iLAorICAgICAgICAgICAgICAgICAgICBYU1BMSUNF LCBlbGYtPm5hbWUpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAg ICAgICAgZm9yICggaiA9IDA7IGogPCA4OyBqKysgKQorICAgICAgICAgICAgaWYgKCBmLT51bmRv W2pdICkKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICBmb3IgKCBq ID0gMDsgaiA8IDI0OyBqKysgKQorICAgICAgICAgICAgaWYgKCBmLT5wYWRbal0gKQorICAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogLyoK ICAqIFdlIE1VU1QgYmUgaG9sZGluZyB0aGUgcGF5bG9hZF9sb2NrIHNwaW5sb2NrLgogICovCkBA IC0yNjcsOCArMzY4LDE1IEBAIHN0YXRpYyBpbnQgbG9hZF9wYXlsb2FkX2RhdGEoc3RydWN0IHBh eWxvYWQgKnBheWxvYWQsIHZvaWQgKnJhdywgc3NpemVfdCBsZW4pCiAgICAgaWYgKCByYyApCiAg ICAgICAgIGdvdG8gb3V0OwogCi0gICAgcmMgPSBzZWN1cmVfcGF5bG9hZChwYXlsb2FkLCAmZWxm KTsKKyAgICByYyA9IGNoZWNrX3NwZWNpYWxfc2VjdGlvbnMocGF5bG9hZCwgJmVsZik7CisgICAg aWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OwogCisgICAgcmMgPSBwcmVwYXJlX3BheWxvYWQo cGF5bG9hZCwgJmVsZik7CisgICAgaWYgKCByYyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAg cmMgPSBzZWN1cmVfcGF5bG9hZChwYXlsb2FkLCAmZWxmKTsKICBvdXQ6CiAgICAgaWYgKCByYyAp CiAgICAgICAgIGZyZWVfcGF5bG9hZF9kYXRhKHBheWxvYWQpOwpAQCAtMzIwLDYgKzQyOCw3IEBA IHN0YXRpYyBpbnQgeHNwbGljZV91cGxvYWQoeGVuX3N5c2N0bF94c3BsaWNlX3VwbG9hZF90ICp1 cGxvYWQpCiAgICAgZGF0YS0+c3RhdGUgPSBYU1BMSUNFX1NUQVRFX0NIRUNLRUQ7CiAgICAgZGF0 YS0+cmMgPSAwOwogICAgIElOSVRfTElTVF9IRUFEKCZkYXRhLT5saXN0KTsKKyAgICBJTklUX0xJ U1RfSEVBRCgmZGF0YS0+YXBwbGllZF9saXN0KTsKIAogICAgIHNwaW5fbG9ja19yZWN1cnNpdmUo JnBheWxvYWRfbG9jayk7CiAgICAgbGlzdF9hZGRfdGFpbCgmZGF0YS0+bGlzdCwgJnBheWxvYWRf bGlzdCk7CkBAIC00MTQsNiArNTIzLDMxNSBAQCBzdGF0aWMgaW50IHhzcGxpY2VfbGlzdCh4ZW5f c3lzY3RsX3hzcGxpY2VfbGlzdF90ICpsaXN0KQogICAgIHJldHVybiByYyA/IDogaWR4OwogfQog CisvKgorICogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZ2V0IHRoZSBDUFVzIGludG8gYW4gYXBw cm9wcmlhdGUgc3RhdGUgYW5kCisgKiBhcHBseSAob3IgcmV2ZXJ0KSBlYWNoIG9mIHRoZSBwYXls b2FkJ3MgZnVuY3Rpb25zLiBUaGlzIGlzIG5lZWRlZAorICogZm9yIFhFTl9TWVNDVExfWFNQTElD RV9BQ1RJT04gb3BlcmF0aW9uIChzZWUgeHNwbGljZV9hY3Rpb24pLgorICovCisKK3N0YXRpYyBp bnQgYXBwbHlfcGF5bG9hZChzdHJ1Y3QgcGF5bG9hZCAqZGF0YSkKK3sKKyAgICB1bnNpZ25lZCBp bnQgaTsKKworICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCAiJXMlczogQXBwbHlpbmcgJXUgZnVu Y3Rpb25zLlxuIiwgWFNQTElDRSwKKyAgICAgICAgICAgIGRhdGEtPm5hbWUsIGRhdGEtPm5mdW5j cyk7CisKKyAgICBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfZW50ZXIoKTsKKworICAgIGZvciAoIGkg PSAwOyBpIDwgZGF0YS0+bmZ1bmNzOyBpKysgKQorICAgICAgICBhcmNoX3hzcGxpY2VfYXBwbHlf am1wKCZkYXRhLT5mdW5jc1tpXSk7CisKKyAgICBhcmNoX3hzcGxpY2VfcGF0Y2hpbmdfbGVhdmUo KTsKKworICAgIGxpc3RfYWRkX3RhaWwoJmRhdGEtPmFwcGxpZWRfbGlzdCwgJmFwcGxpZWRfbGlz dCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgZXhlY3V0 ZWQgaGF2aW5nIGFsbCBvdGhlciBDUFVzIHdpdGggbm8gc3RhY2sgKHdlIG1heQorICogaGF2ZSBj cHVfaWRsZSBvbiBpdCkgYW5kIElSUXMgZGlzYWJsZWQuCisgKi8KK3N0YXRpYyBpbnQgcmV2ZXJ0 X3BheWxvYWQoc3RydWN0IHBheWxvYWQgKmRhdGEpCit7CisgICAgdW5zaWduZWQgaW50IGk7CisK KyAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IFJldmVydGluZy5cbiIsIFhTUExJQ0Us IGRhdGEtPm5hbWUpOworCisgICAgYXJjaF94c3BsaWNlX3BhdGNoaW5nX2VudGVyKCk7CisKKyAg ICBmb3IgKCBpID0gMDsgaSA8IGRhdGEtPm5mdW5jczsgaSsrICkKKyAgICAgICAgYXJjaF94c3Bs aWNlX3JldmVydF9qbXAoJmRhdGEtPmZ1bmNzW2ldKTsKKworICAgIGFyY2hfeHNwbGljZV9wYXRj aGluZ19sZWF2ZSgpOworCisgICAgbGlzdF9kZWxfaW5pdCgmZGF0YS0+YXBwbGllZF9saXN0KTsK KworICAgIHJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBo YXZpbmcgYWxsIG90aGVyIENQVXMgd2l0aCBubyBzdGFjayAod2UgbWF5CisgKiBoYXZlIGNwdV9p ZGxlIG9uIGl0KSBhbmQgSVJRcyBkaXNhYmxlZC4gV2UgZ3VhcmQgYWdhaW5zdCBOTUkgYnkgdGVt cG9yYXJpbHkKKyAqIGluc3RhbGxpbmcgb3VyIE5PUCBOTUkgaGFuZGxlci4KKyAqLworc3RhdGlj IHZvaWQgeHNwbGljZV9kb19hY3Rpb24odm9pZCkKK3sKKyAgICBpbnQgcmM7CisgICAgc3RydWN0 IHBheWxvYWQgKmRhdGEsICpvdGhlciwgKnRtcDsKKworICAgIGRhdGEgPSB4c3BsaWNlX3dvcmsu ZGF0YTsKKyAgICAvKiBOb3cgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgdGhlIG9ubHkgb25lIG9u IGFueSBzdGFjay4KKyAgICAgKiBObyBuZWVkIHRvIGxvY2sgdGhlIHBheWxvYWQgbGlzdCBvciBh cHBsaWVkIGxpc3QuICovCisgICAgc3dpdGNoICggeHNwbGljZV93b3JrLmNtZCApCisgICAgewor ICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fQVBQTFk6CisgICAgICAgIHJjID0gYXBwbHlfcGF5bG9h ZChkYXRhKTsKKyAgICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAgICAgICAgIGRhdGEtPnN0YXRl ID0gWFNQTElDRV9TVEFURV9BUFBMSUVEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFhTUExJ Q0VfQUNUSU9OX1JFVkVSVDoKKyAgICAgICAgcmMgPSByZXZlcnRfcGF5bG9hZChkYXRhKTsKKyAg ICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAgICAgICAgIGRhdGEtPnN0YXRlID0gWFNQTElDRV9T VEFURV9DSEVDS0VEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFhTUExJQ0VfQUNUSU9OX1JF UExBQ0U6CisgICAgICAgIHJjID0gMDsKKyAgICAgICAgLyogTi5COiBVc2UgJ2FwcGxpZWRfbGlz dCcgbWVtYmVyLCBub3QgJ2xpc3QnLiAqLworICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmVfcmV2ZXJzZSAoIG90aGVyLCB0bXAsICZhcHBsaWVkX2xpc3QsIGFwcGxpZWRfbGlzdCApCisg ICAgICAgIHsKKyAgICAgICAgICAgIG90aGVyLT5yYyA9IHJldmVydF9wYXlsb2FkKG90aGVyKTsK KyAgICAgICAgICAgIGlmICggb3RoZXItPnJjID09IDAgKQorICAgICAgICAgICAgICAgIG90aGVy LT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCByYyAhPSAtRUlO VkFMICkKKyAgICAgICAgeworICAgICAgICAgICAgcmMgPSBhcHBseV9wYXlsb2FkKGRhdGEpOwor ICAgICAgICAgICAgaWYgKCByYyA9PSAwICkKKyAgICAgICAgICAgICAgICBkYXRhLT5zdGF0ZSA9 IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBk ZWZhdWx0OgorICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgIGJyZWFrOworICAgIH0KKwor ICAgIGRhdGEtPnJjID0gcmM7Cit9CisKKy8qCisgKiBNVVNUIGJlIGhvbGRpbmcgdGhlIHBheWxv YWRfbG9jay4KKyAqLworc3RhdGljIGludCBzY2hlZHVsZV93b3JrKHN0cnVjdCBwYXlsb2FkICpk YXRhLCB1aW50MzJfdCBjbWQsIHVpbnQzMl90IHRpbWVvdXQpCit7CisgICAgdW5zaWduZWQgaW50 IGNwdTsKKworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcGF5bG9hZF9sb2NrKSk7CisKKyAg ICAvKiBGYWlsIGlmIGFuIG9wZXJhdGlvbiBpcyBhbHJlYWR5IHNjaGVkdWxlZC4gKi8KKyAgICBp ZiAoIHhzcGxpY2Vfd29yay5kb193b3JrICkKKyAgICAgICAgcmV0dXJuIC1FQlVTWTsKKworICAg IGlmICggIWdldF9jcHVfbWFwcygpICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfRVJS ICIlcyVzOiB1bmFibGUgdG8gZ2V0IGNwdV9tYXBzIGxvY2shXG4iLAorICAgICAgICAgICAgICAg WFNQTElDRSwgZGF0YS0+bmFtZSk7CisgICAgICAgIHJldHVybiAtRUJVU1k7CisgICAgfQorCisg ICAgeHNwbGljZV93b3JrLmNtZCA9IGNtZDsKKyAgICB4c3BsaWNlX3dvcmsuZGF0YSA9IGRhdGE7 CisgICAgeHNwbGljZV93b3JrLnRpbWVvdXQgPSB0aW1lb3V0ID86IE1JTExJU0VDUygzMCk7CisK KyAgICBkcHJpbnRrKFhFTkxPR19ERUJVRywgIiVzJXM6IHRpbWVvdXQgaXMgJSJQUklfc3RpbWUi bXNcbiIsCisgICAgICAgICAgICBYU1BMSUNFLCBkYXRhLT5uYW1lLCB4c3BsaWNlX3dvcmsudGlt ZW91dCAvIE1JTExJU0VDUygxKSk7CisKKyAgICAvKgorICAgICAqIE9uY2UgdGhlIHBhdGNoaW5n IGhhcyBiZWVuIGNvbXBsZXRlZCwgdGhlIHNlbWFwaG9yZSB2YWx1ZSB3aWxsCisgICAgICogYmUg bnVtX29ubGluZV9jcHVzKCktMS4KKyAgICAgKi8KKyAgICBhdG9taWNfc2V0KCZ4c3BsaWNlX3dv cmsuc2VtYXBob3JlLCAtMSk7CisgICAgYXRvbWljX3NldCgmeHNwbGljZV93b3JrLmlycV9zZW1h cGhvcmUsIC0xKTsKKworICAgIHhzcGxpY2Vfd29yay5yZWFkeSA9IDA7CisgICAgc21wX3dtYigp OworICAgIHhzcGxpY2Vfd29yay5kb193b3JrID0gMTsKKyAgICBzbXBfd21iKCk7CisgICAgLyoK KyAgICAgKiBBYm92ZSBzbXBfd21iKCkgZ2l2ZXMgdXMgYW4gY29tcGlsZXIgYmFycmllciwgYXMg d2UgTVVTVCBkbyB0aGlzCisgICAgICogYWZ0ZXIgc2V0dGluZyB0aGUgZ2xvYmFsIHN0cnVjdHVy ZS4KKyAgICAgKi8KKyAgICBmb3JfZWFjaF9vbmxpbmVfY3B1ICggY3B1ICkKKyAgICAgICAgcGVy X2NwdSh3b3JrX3RvX2RvLCBjcHUpID0gMTsKKworICAgIHB1dF9jcHVfbWFwcygpOworCisgICAg cmV0dXJuIDA7Cit9CisKKy8qCisgKiBOb3RlIHRoYXQgYmVjYXVzZSBvZiB0aGlzIE5PUCBjb2Rl IHRoZSBkb19ubWkgaXMgbm90IHNhZmVseSBwYXRjaGFibGUuCisgKiBBbHNvIGlmIHdlIGRvIHJl Y2VpdmUgJ3JlYWwnIE5NSXMgd2UgaGF2ZSBsb3N0IHRoZW0uIERpdHRvIGZvciBNQ0UuCisgKi8K K3N0YXRpYyBpbnQgbWFza19ubWlfY2FsbGJhY2soY29uc3Qgc3RydWN0IGNwdV91c2VyX3JlZ3Mg KnJlZ3MsIGludCBjcHUpCit7CisgICAgLyogVE9ETzogSGFuZGxlIG1pc3NpbmcgTk1JL01DRS4q LworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgdm9pZCByZXNjaGVkdWxlX2ZuKHZvaWQgKnVu dXNlZCkKK3sKKyAgICBzbXBfbWIoKTsgLyogU3luY2hyb25pemUgd2l0aCBzZXR0aW5nIGRvX3dv cmsgKi8KKyAgICByYWlzZV9zb2Z0aXJxKFNDSEVEVUxFX1NPRlRJUlEpOworfQorCitzdGF0aWMg aW50IHhzcGxpY2VfZG9fd2FpdChhdG9taWNfdCAqY291bnRlciwgc190aW1lX3QgdGltZW91dCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB0b3RhbF9jcHVzLCBjb25z dCBjaGFyICpzKQoreworICAgIGludCByYyA9IDA7CisKKyAgICB3aGlsZSAoIGF0b21pY19yZWFk KGNvdW50ZXIpICE9IHRvdGFsX2NwdXMgJiYgTk9XKCkgPCB0aW1lb3V0ICkKKyAgICAgICAgY3B1 X3JlbGF4KCk7CisKKyAgICAvKiBMb2cgJiBhYm9ydC4gKi8KKyAgICBpZiAoIGF0b21pY19yZWFk KGNvdW50ZXIpICE9IHRvdGFsX2NwdXMgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19F UlIgIiVzJXM6ICVzICV1LyV1XG4iLCBYU1BMSUNFLAorICAgICAgICAgICAgICAgeHNwbGljZV93 b3JrLmRhdGEtPm5hbWUsIHMsIGF0b21pY19yZWFkKGNvdW50ZXIpLCB0b3RhbF9jcHVzKTsKKyAg ICAgICAgcmMgPSAtRUJVU1k7CisgICAgICAgIHhzcGxpY2Vfd29yay5kYXRhLT5yYyA9IHJjOwor ICAgICAgICB4c3BsaWNlX3dvcmsuZG9fd29yayA9IDA7CisgICAgICAgIHNtcF93bWIoKTsKKyAg ICB9CisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogVGhlIG1haW4gZnVuY3Rpb24gd2hpY2gg bWFuYWdlcyB0aGUgd29yayBvZiBxdWllc2NpbmcgdGhlIHN5c3RlbSBhbmQKKyAqIHBhdGNoaW5n IGNvZGUuCisgKi8KK3ZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKQoreworICAgIHVu c2lnbmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisgICAgbm1pX2NhbGxiYWNrX3Qg c2F2ZWRfbm1pX2NhbGxiYWNrOworICAgIHNfdGltZV90IHRpbWVvdXQ7CisgICAgdW5zaWduZWQg bG9uZyBmbGFnczsKKworICAgIC8qIEZhc3QgcGF0aDogbm8gd29yayB0byBkby4gKi8KKyAgICBp ZiAoICFwZXJfY3B1KHdvcmtfdG9fZG8sIGNwdSApICkKKyAgICAgICAgcmV0dXJuOworCisgICAg LyogSW4gY2FzZSB3ZSBhYm9ydGVkLCBvdGhlciBDUFVzIGNhbiBza2lwIHJpZ2h0IGF3YXkuICov CisgICAgaWYgKCAoIXhzcGxpY2Vfd29yay5kb193b3JrKSApCisgICAgeworICAgICAgICBwZXJf Y3B1KHdvcmtfdG9fZG8sIGNwdSkgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg QVNTRVJUKGxvY2FsX2lycV9pc19lbmFibGVkKCkpOworCisgICAgLyogU2V0IGF0IC0xLCBzbyB3 aWxsIGdvIHVwIHRvIG51bV9vbmxpbmVfY3B1cyAtIDEuICovCisgICAgaWYgKCBhdG9taWNfaW5j X2FuZF90ZXN0KCZ4c3BsaWNlX3dvcmsuc2VtYXBob3JlKSApCisgICAgeworICAgICAgICBzdHJ1 Y3QgcGF5bG9hZCAqcDsKKyAgICAgICAgdW5zaWduZWQgaW50IHRvdGFsX2NwdXM7CisKKyAgICAg ICAgcCA9IHhzcGxpY2Vfd29yay5kYXRhOworICAgICAgICBpZiAoICFnZXRfY3B1X21hcHMoKSAp CisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICIlcyVzOiBDUFUldSAt IHVuYWJsZSB0byBnZXQgY3B1X21hcHMgbG9jayFcbiIsCisgICAgICAgICAgICAgICAgICAgWFNQ TElDRSwgcC0+bmFtZSwgY3B1KTsKKyAgICAgICAgICAgIHBlcl9jcHUod29ya190b19kbywgY3B1 KSA9IDA7CisgICAgICAgICAgICB4c3BsaWNlX3dvcmsuZGF0YS0+cmMgPSAtRUJVU1k7CisgICAg ICAgICAgICB4c3BsaWNlX3dvcmsuZG9fd29yayA9IDA7CisgICAgICAgICAgICAvKgorICAgICAg ICAgICAgICogRG8gTk9UIGRlY3JlbWVudCBzZW1hcGhvcmUgZG93biAtIGFzIHRoYXQgbWF5IGNh dXNlIHRoZSBvdGhlcgorICAgICAgICAgICAgICogQ1BVICh3aGljaCBtYXkgYmUgYXQgdGhpcyBl eGFjdCBtb21lbnQgY2hlY2tpbmcgdGhlIEFTU0VSVCkKKyAgICAgICAgICAgICAqIHRvIGFzc3Vt ZSB0aGUgcm9sZSBvZiBtYXN0ZXIgYW5kIHRoZW4gbmVlZGxlc3NseSB0aW1lIG91dAorICAgICAg ICAgICAgICogb3V0IChhcyBkb193b3JrIGlzIHplcm8pLgorICAgICAgICAgICAgICovCisgICAg ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBiYXJyaWVyKCk7IC8qIE1VU1Qg ZG8gaXQgYWZ0ZXIgZ2V0X2NwdV9tYXBzLiAqLworICAgICAgICB0b3RhbF9jcHVzID0gbnVtX29u bGluZV9jcHVzKCkgLSAxOworCisgICAgICAgIGlmICggdG90YWxfY3B1cyApCisgICAgICAgIHsK KyAgICAgICAgICAgIGRwcmludGsoWEVOTE9HX0RFQlVHLCAiJXMlczogQ1BVJXUgLSBJUElpbmcg dGhlICV1IENQVXNcbiIsCisgICAgICAgICAgICAgICAgICAgIFhTUExJQ0UsIHAtPm5hbWUsIGNw dSwgdG90YWxfY3B1cyk7CisgICAgICAgICAgICBzbXBfY2FsbF9mdW5jdGlvbihyZXNjaGVkdWxl X2ZuLCBOVUxMLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHRpbWVvdXQgPSB4c3BsaWNlX3dv cmsudGltZW91dCArIE5PVygpOworICAgICAgICBpZiAoIHhzcGxpY2VfZG9fd2FpdCgmeHNwbGlj ZV93b3JrLnNlbWFwaG9yZSwgdGltZW91dCwgdG90YWxfY3B1cywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIlRpbWVkIG91dCBvbiBDUFUgc2VtYXBob3JlIikgKQorICAgICAgICAgICAg Z290byBhYm9ydDsKKworICAgICAgICAvKiAiTWFzayIgTk1Jcy4gKi8KKyAgICAgICAgc2F2ZWRf bm1pX2NhbGxiYWNrID0gc2V0X25taV9jYWxsYmFjayhtYXNrX25taV9jYWxsYmFjayk7CisKKyAg ICAgICAgLyogQWxsIENQVXMgYXJlIHdhaXRpbmcsIG5vdyBzaWduYWwgdG8gZGlzYWJsZSBJUlFz LiAqLworICAgICAgICB4c3BsaWNlX3dvcmsucmVhZHkgPSAxOworICAgICAgICBzbXBfd21iKCk7 CisKKyAgICAgICAgYXRvbWljX2luYygmeHNwbGljZV93b3JrLmlycV9zZW1hcGhvcmUpOworICAg ICAgICBpZiAoICF4c3BsaWNlX2RvX3dhaXQoJnhzcGxpY2Vfd29yay5pcnFfc2VtYXBob3JlLCB0 aW1lb3V0LCB0b3RhbF9jcHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRpbWVk IG91dCBvbiBJUlEgc2VtYXBob3JlIikgKQorICAgICAgICB7CisgICAgICAgICAgICBsb2NhbF9p cnFfc2F2ZShmbGFncyk7CisgICAgICAgICAgICAvKiBEbyB0aGUgcGF0Y2hpbmcuICovCisgICAg ICAgICAgICB4c3BsaWNlX2RvX2FjdGlvbigpOworICAgICAgICAgICAgLyogVG8gZmx1c2ggb3V0 IHBpcGVsaW5lLiAqLworICAgICAgICAgICAgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKCk7Cisg ICAgICAgICAgICBsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisgICAgICAgIH0KKyAgICAgICAg c2V0X25taV9jYWxsYmFjayhzYXZlZF9ubWlfY2FsbGJhY2spOworCisgYWJvcnQ6CisgICAgICAg IHBlcl9jcHUod29ya190b19kbywgY3B1KSA9IDA7CisgICAgICAgIHhzcGxpY2Vfd29yay5kb193 b3JrID0gMDsKKworICAgICAgICBzbXBfd21iKCk7IC8qIFN5bmNocm9uaXplIHdpdGggd2FpdGlu ZyBDUFVzLiAqLworICAgICAgICBBU1NFUlQobG9jYWxfaXJxX2lzX2VuYWJsZWQoKSk7CisKKyAg ICAgICAgcHV0X2NwdV9tYXBzKCk7CisKKyAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPICIlcyVz IGZpbmlzaGVkIHdpdGggcmM9JWRcbiIsIFhTUExJQ0UsCisgICAgICAgICAgICAgICBwLT5uYW1l LCBwLT5yYyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8qIFdhaXQgZm9yIGFs bCBDUFVzIHRvIHJlbmRlenZvdXMuICovCisgICAgICAgIHdoaWxlICggeHNwbGljZV93b3JrLmRv X3dvcmsgJiYgIXhzcGxpY2Vfd29yay5yZWFkeSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNw dV9yZWxheCgpOworICAgICAgICAgICAgc21wX3JtYigpOworICAgICAgICB9CisKKyAgICAgICAg LyogRGlzYWJsZSBJUlFzIGFuZCBzaWduYWwuICovCisgICAgICAgIGxvY2FsX2lycV9zYXZlKGZs YWdzKTsKKyAgICAgICAgYXRvbWljX2luYygmeHNwbGljZV93b3JrLmlycV9zZW1hcGhvcmUpOwor CisgICAgICAgIC8qIFdhaXQgZm9yIHBhdGNoaW5nIHRvIGNvbXBsZXRlLiAqLworICAgICAgICB3 aGlsZSAoIHhzcGxpY2Vfd29yay5kb193b3JrICkKKyAgICAgICAgeworICAgICAgICAgICAgY3B1 X3JlbGF4KCk7CisgICAgICAgICAgICBzbXBfcm1iKCk7CisgICAgICAgIH0KKyAgICAgICAgLyog VG8gZmx1c2ggb3V0IHBpcGVsaW5lLiAqLworICAgICAgICBhcmNoX3hzcGxpY2VfcG9zdF9hY3Rp b24oKTsKKyAgICAgICAgbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOworCisgICAgICAgIHBlcl9j cHUod29ya190b19kbywgY3B1KSA9IDA7CisgICAgfQorfQorCiBzdGF0aWMgaW50IHhzcGxpY2Vf YWN0aW9uKHhlbl9zeXNjdGxfeHNwbGljZV9hY3Rpb25fdCAqYWN0aW9uKQogewogICAgIHN0cnVj dCBwYXlsb2FkICpkYXRhOwpAQCAtNDUyLDMwICs4NzAsMjQgQEAgc3RhdGljIGludCB4c3BsaWNl X2FjdGlvbih4ZW5fc3lzY3RsX3hzcGxpY2VfYWN0aW9uX3QgKmFjdGlvbikKICAgICBjYXNlIFhT UExJQ0VfQUNUSU9OX1JFVkVSVDoKICAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNF X1NUQVRFX0FQUExJRUQgKQogICAgICAgICB7Ci0gICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRh dGlvbiB5ZXQuICovCi0gICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hF Q0tFRDsKLSAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKLSAgICAgICAgICAgIHJjID0gMDsKKyAg ICAgICAgICAgIGRhdGEtPnJjID0gLUVBR0FJTjsKKyAgICAgICAgICAgIHJjID0gc2NoZWR1bGVf d29yayhkYXRhLCBhY3Rpb24tPmNtZCwgYWN0aW9uLT50aW1lb3V0KTsKICAgICAgICAgfQogICAg ICAgICBicmVhazsKIAogICAgIGNhc2UgWFNQTElDRV9BQ1RJT05fQVBQTFk6CiAgICAgICAgIGlm ICggKGRhdGEtPnN0YXRlID09IFhTUExJQ0VfU1RBVEVfQ0hFQ0tFRCkgKQogICAgICAgICB7Ci0g ICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlvbiB5ZXQuICovCi0gICAgICAgICAgICBkYXRh LT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQVBQTElFRDsKLSAgICAgICAgICAgIGRhdGEtPnJjID0g MDsKLSAgICAgICAgICAgIHJjID0gMDsKKyAgICAgICAgICAgIGRhdGEtPnJjID0gLUVBR0FJTjsK KyAgICAgICAgICAgIHJjID0gc2NoZWR1bGVfd29yayhkYXRhLCBhY3Rpb24tPmNtZCwgYWN0aW9u LT50aW1lb3V0KTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgWFNQTElD RV9BQ1RJT05fUkVQTEFDRToKICAgICAgICAgaWYgKCBkYXRhLT5zdGF0ZSA9PSBYU1BMSUNFX1NU QVRFX0NIRUNLRUQgKQogICAgICAgICB7Ci0gICAgICAgICAgICAvKiBObyBpbXBsZW1lbnRhdGlv biB5ZXQuICovCi0gICAgICAgICAgICBkYXRhLT5zdGF0ZSA9IFhTUExJQ0VfU1RBVEVfQ0hFQ0tF RDsKLSAgICAgICAgICAgIGRhdGEtPnJjID0gMDsKLSAgICAgICAgICAgIHJjID0gMDsKKyAgICAg ICAgICAgIGRhdGEtPnJjID0gLUVBR0FJTjsKKyAgICAgICAgICAgIHJjID0gc2NoZWR1bGVfd29y ayhkYXRhLCBhY3Rpb24tPmNtZCwgYWN0aW9uLT50aW1lb3V0KTsKICAgICAgICAgfQogICAgICAg ICBicmVhazsKIApAQCAtNTQxLDE5ICs5NTMsMzIgQEAgc3RhdGljIGNvbnN0IGNoYXIgKnN0YXRl MnN0cih1aW50MzJfdCBzdGF0ZSkKIHN0YXRpYyB2b2lkIHhzcGxpY2VfcHJpbnRhbGwodW5zaWdu ZWQgY2hhciBrZXkpCiB7CiAgICAgc3RydWN0IHBheWxvYWQgKmRhdGE7CisgICAgdW5zaWduZWQg aW50IGk7CiAKICAgICBzcGluX2xvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spOwogCiAgICAg bGlzdF9mb3JfZWFjaF9lbnRyeSAoIGRhdGEsICZwYXlsb2FkX2xpc3QsIGxpc3QgKQotICAgICAg ICBwcmludGsoIiBuYW1lPSVzIHN0YXRlPSVzKCVkKSAlcCB1c2luZyAlenUgcGFnZXMuXG4iLCBk YXRhLT5uYW1lLAorICAgIHsKKyAgICAgICAgcHJpbnRrKCIgbmFtZT0lcyBzdGF0ZT0lcyglZCkg JXAgdXNpbmcgJXp1IHBhZ2VzOlxuIiwgZGF0YS0+bmFtZSwKICAgICAgICAgICAgICAgIHN0YXRl MnN0cihkYXRhLT5zdGF0ZSksIGRhdGEtPnN0YXRlLCBkYXRhLT5wYXlsb2FkX2FkZHJlc3MsCiAg ICAgICAgICAgICAgICBkYXRhLT5wYXlsb2FkX3BhZ2VzKTsKIAorICAgICAgICBmb3IgKCBpID0g MDsgaSA8IGRhdGEtPm5mdW5jczsgaSsrICkKKyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0 IHhzcGxpY2VfcGF0Y2hfZnVuYyAqZiA9ICYoZGF0YS0+ZnVuY3NbaV0pOworICAgICAgICAgICAg cHJpbnRrKCIgICAgJXMgcGF0Y2ggMHglIlBSSXg2NCIoJXUpIHdpdGggMHglIlBSSXg2NCIoJXUp XG4iLAorICAgICAgICAgICAgICAgICAgIGYtPm5hbWUsIGYtPm9sZF9hZGRyLCBmLT5vbGRfc2l6 ZSwgZi0+bmV3X2FkZHIsIGYtPm5ld19zaXplKTsKKyAgICAgICAgICAgIGlmICggIShpICUgMTAw KSApCisgICAgICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3NvZnRpcnFzKCk7CisgICAgICAg IH0KKyAgICB9CiAgICAgc3Bpbl91bmxvY2tfcmVjdXJzaXZlKCZwYXlsb2FkX2xvY2spOwogfQog CiBzdGF0aWMgaW50IF9faW5pdCB4c3BsaWNlX2luaXQodm9pZCkKIHsKKyAgICBCVUlMRF9CVUdf T04oIHNpemVvZihzdHJ1Y3QgeHNwbGljZV9wYXRjaF9mdW5jKSAhPSA2NCApOworCiAgICAgcmVn aXN0ZXJfa2V5aGFuZGxlcigneCcsIHhzcGxpY2VfcHJpbnRhbGwsICJwcmludCB4c3BsaWNpbmcg aW5mbyIsIDEpOwogICAgIGFyY2hfeHNwbGljZV9yZWdpc3Rlcl9maW5kX3NwYWNlKCZmaW5kX2hv bGUpOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLWFybS9ubWku aCBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vbm1pLmgKaW5kZXggYTYwNTg3ZS4uODJhZmYzNSAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLWFybS9ubWkuaAorKysgYi94ZW4vaW5jbHVkZS9hc20t YXJtL25taS5oCkBAIC00LDYgKzQsMTkgQEAKICNkZWZpbmUgcmVnaXN0ZXJfZ3Vlc3Rfbm1pX2Nh bGxiYWNrKGEpICAoLUVOT1NZUykKICNkZWZpbmUgdW5yZWdpc3Rlcl9ndWVzdF9ubWlfY2FsbGJh Y2soKSAoLUVOT1NZUykKIAordHlwZWRlZiBpbnQgKCpubWlfY2FsbGJhY2tfdCkoY29uc3Qgc3Ry dWN0IGNwdV91c2VyX3JlZ3MgKnJlZ3MsIGludCBjcHUpOworCisvKioKKyAqIHNldF9ubWlfY2Fs bGJhY2sKKyAqCisgKiBTZXQgYSBoYW5kbGVyIGZvciBhbiBOTUkuIE9ubHkgb25lIGhhbmRsZXIg bWF5IGJlCisgKiBzZXQuIFJldHVybiB0aGUgb2xkIG5taSBjYWxsYmFjayBoYW5kbGVyLgorICov CitzdGF0aWMgaW5saW5lIG5taV9jYWxsYmFja190IHNldF9ubWlfY2FsbGJhY2sobm1pX2NhbGxi YWNrX3QgY2FsbGJhY2spCit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKICNlbmRpZiAvKiBBU01f Tk1JX0ggKi8KIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS94ZW4veHNwbGljZS5oIGIveGVuL2luY2x1ZGUveGVuL3hzcGxpY2UuaAppbmRleCAzNDNlNTlm Li5iNDhhODExIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4veHNwbGljZS5oCisrKyBiL3hl bi9pbmNsdWRlL3hlbi94c3BsaWNlLmgKQEAgLTExLDEyICsxMSwzMCBAQCBzdHJ1Y3QgeHNwbGlj ZV9lbGZfc2VjOwogc3RydWN0IHhzcGxpY2VfZWxmX3N5bTsKIHN0cnVjdCB4ZW5fc3lzY3RsX3hz cGxpY2Vfb3A7CiAKKyNpbmNsdWRlIDx4ZW4vZWxmc3RydWN0cy5oPgorLyoKKyAqIFRoZSBzdHJ1 Y3R1cmUgd2hpY2ggZGVmaW5lcyB0aGUgcGF0Y2hpbmcuIFRoaXMgaXMgd2hhdCB0aGUgaHlwZXJ2 aXNvcgorICogZXhwZWN0cyBpbiB0aGUgJy54c3BsaWNlLmZ1bmMnIHNlY3Rpb24gb2YgdGhlIEVM RiBmaWxlLgorICoKKyAqIFRoaXMgTVVTVCBiZSBpbiBzeW5jIHdpdGggd2hhdCB0aGUgdG9vbHMg Z2VuZXJhdGUuCisgKi8KK3N0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1bmMgeworICAgIGNvbnN0IGNo YXIgKm5hbWU7CisgICAgRWxmNjRfWHdvcmQgbmV3X2FkZHI7CisgICAgRWxmNjRfWHdvcmQgb2xk X2FkZHI7CisgICAgRWxmNjRfV29yZCBuZXdfc2l6ZTsKKyAgICBFbGY2NF9Xb3JkIG9sZF9zaXpl OworICAgIHVpbnQ4X3QgdW5kb1s4XTsKKyAgICB1aW50OF90IHBhZFsyNF07Cit9OworCiAjaWZk ZWYgQ09ORklHX1hTUExJQ0UKIAogLyogQ29udmVuaWVuY2UgZGVmaW5lIGZvciBwcmludGsuICov CiAjZGVmaW5lIFhTUExJQ0UgInhzcGxpY2U6ICIKIAogaW50IHhzcGxpY2Vfb3Aoc3RydWN0IHhl bl9zeXNjdGxfeHNwbGljZV9vcCAqKTsKK3ZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vfd29yayh2b2lk KTsKIAogLyogQXJjaCBob29rcy4gKi8KIGludCBhcmNoX3hzcGxpY2VfdmVyaWZ5X2VsZihjb25z dCBzdHJ1Y3QgeHNwbGljZV9lbGYgKmVsZiwgdm9pZCAqZGF0YSk7CkBAIC01OSw2ICs3NywxNyBA QCB2b2lkIGFyY2hfeHNwbGljZV9mcmVlX3BheWxvYWQodm9pZCAqdmEsIHVuc2lnbmVkIGludCBw YWdlcywgZW51bSB2YV90eXBlKTsKICAqLwogdHlwZWRlZiBpbnQgKCpmaW5kX3NwYWNlX3QpKHNz aXplX3QsIHVuc2lnbmVkIGxvbmcgKiwgdW5zaWduZWQgbG9uZyAqKTsKIHZvaWQgYXJjaF94c3Bs aWNlX3JlZ2lzdGVyX2ZpbmRfc3BhY2UoZmluZF9zcGFjZV90IGNiKTsKKworLyoKKyAqIFRoZXNl IGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGFyb3VuZCB0aGUgY3JpdGljYWwgcmVnaW9uIHBhdGNoaW5n IGxpdmUgY29kZSwKKyAqIGZvciBhbiBhcmNoaXRlY3R1cmUgdG8gdGFrZSBtYWtlIGFwcHJvcHJh dGllIGdsb2JhbCBzdGF0ZSBhZGp1c3RtZW50cy4KKyAqLwordm9pZCBhcmNoX3hzcGxpY2VfcGF0 Y2hpbmdfZW50ZXIodm9pZCk7Cit2b2lkIGFyY2hfeHNwbGljZV9wYXRjaGluZ19sZWF2ZSh2b2lk KTsKKwordm9pZCBhcmNoX3hzcGxpY2VfYXBwbHlfam1wKHN0cnVjdCB4c3BsaWNlX3BhdGNoX2Z1 bmMgKmZ1bmMpOwordm9pZCBhcmNoX3hzcGxpY2VfcmV2ZXJ0X2ptcChzdHJ1Y3QgeHNwbGljZV9w YXRjaF9mdW5jICpmdW5jKTsKK3ZvaWQgYXJjaF94c3BsaWNlX3Bvc3RfYWN0aW9uKHZvaWQpOwog I2Vsc2UKIAogI2luY2x1ZGUgPHhlbi9lcnJuby5oPiAvKiBGb3IgLUVOT1NZUyAqLwpAQCAtNjYs NyArOTUsNyBAQCBzdGF0aWMgaW5saW5lIGludCB4c3BsaWNlX29wKHN0cnVjdCB4ZW5fc3lzY3Rs X3hzcGxpY2Vfb3AgKm9wKQogewogICAgIHJldHVybiAtRU5PU1lTOwogfQotCitzdGF0aWMgaW5s aW5lIHZvaWQgY2hlY2tfZm9yX3hzcGxpY2Vfd29yayh2b2lkKSB7IH07CiAjZW5kaWYgLyogQ09O RklHX1hTUExJQ0UgKi8KIAogI2VuZGlmIC8qIF9fWEVOX1hTUExJQ0VfSF9fICovCi0tIAoyLjUu MAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhl bi5vcmcveGVuLWRldmVsCg==