From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v2 11/18] argo: implement the register op Date: Wed, 19 Dec 2018 22:39:08 -0800 Message-ID: <1545287955-27684-12-git-send-email-christopher.w.clark@gmail.com> References: <1545287955-27684-1-git-send-email-christopher.w.clark@gmail.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 1gZrzy-00064T-Eh for xen-devel@lists.xenproject.org; Thu, 20 Dec 2018 06:39:58 +0000 Received: by mail-it1-x141.google.com with SMTP id c9so1317533itj.1 for ; Wed, 19 Dec 2018 22:39:57 -0800 (PST) In-Reply-To: <1545287955-27684-1-git-send-email-christopher.w.clark@gmail.com> 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: Stefano Stabellini , Wei Liu , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , James McKenzie , Eric Chanudet , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VXNlZCBieSBhIGRvbWFpbiB0byByZWdpc3RlciBhIHJlZ2lvbiBvZiBtZW1vcnkgZm9yIHJlY2Vp dmluZyBtZXNzYWdlcyBmcm9tCmVpdGhlciBhIHNwZWNpZmllZCBvdGhlciBkb21haW4sIG9yLCBp ZiBzcGVjaWZ5aW5nIGEgd2lsZGNhcmQsIGFueSBkb21haW4uCgpUaGlzIG9wZXJhdGlvbiBjcmVh dGVzIGEgbWFwcGluZyB3aXRoaW4gWGVuJ3MgcHJpdmF0ZSBhZGRyZXNzIHNwYWNlIHRoYXQKd2ls bCByZW1haW4gcmVzaWRlbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgcmluZy4gSW4gc3Vic2Vx dWVudCBjb21taXRzLAp0aGUgaHlwZXJ2aXNvciB3aWxsIHVzZSB0aGlzIG1hcHBpbmcgdG8gY29w eSBkYXRhIGZyb20gYSBzZW5kaW5nIGRvbWFpbiBpbnRvCnRoaXMgcmVnaXN0ZXJlZCByaW5nLCBt YWtpbmcgaXQgYWNjZXNzaWJsZSB0byB0aGUgZG9tYWluIHRoYXQgcmVnaXN0ZXJlZCB0aGUKcmlu ZyB0byByZWNlaXZlIGRhdGEuCgpJbiB0aGlzIGNvZGUsIHRoZSBwMm0gdHlwZSBvZiB0aGUgbWVt b3J5IHN1cHBsaWVkIGJ5IHRoZSBndWVzdCBmb3IgdGhlIHJpbmcKbXVzdCBiZSBwMm1fcmFtX3J3 LCB3aGljaCBpcyBhIGNvbnNlcnZhdGl2ZSBjaG9pY2UgbWFkZSB0byBkZWZlciB0aGUgbmVlZCB0 bwpyZWFzb24gYWJvdXQgdGhlIG90aGVyIHAybSB0eXBlcyB3aXRoIHRoaXMgY29tbWl0LgoKeGVu X2FyZ29fcGFnZV9kZXNjcl90IHR5cGUgaXMgaW50cm9kdWNlZCBhcyBhIHBhZ2UgZGVzY3JpcHRv ciwgdG8gY29udmV5CmJvdGggdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIHN0YXJ0IG9mIHRo ZSBwYWdlIGFuZCBpdHMgZ3JhbnVsYXJpdHkuIFRoZQpzbWFsbGVzdCBncmFudWxhcml0eSBwYWdl IGlzIGFzc3VtZWQgdG8gYmUgNDA5NiBieXRlcyBhbmQgdGhlIGxvd2VyIHR3ZWx2ZQpiaXRzIG9m IHRoZSB0eXBlIGFyZSB1c2VkIGZvciBpbmRpY2F0ZSBhbiBlbnVtZXJhdGVkIHBhZ2Ugc2l6ZS4K eGVuX2FyZ29fcGZuX3QgdHlwZSBpcyBpbnRyb2R1Y2VkIGhlcmUgdG8gY3JlYXRlIGEgcGZuX3Qg dHlwZSB0aGF0IGlzIDY0LWJpdApvbiBhbGwgYXJjaGl0ZWN0dXJlcywgdG8gYXNzaXN0IHdpdGgg YXZvaWRpbmcgdGhlIG5lZWQgdG8gYWRkIGEgY29tcGF0IEFCSS4KCmNvcHlfZmllbGRfdG9fZ3Vl c3RfZXJybm8gaXMgYWRkZWQgZm9yIGd1ZXN0IGFjY2VzcywgcGVyZm9ybWluZyB0aGUgc2FtZQpv cGVyYXRpb24gYXMgY29weV9maWVsZF90b19ndWVzdCwgYnV0IHJldHVybmluZyAtRUZBVUxUIGlm IHRoZSBjb3B5IGlzCmluY29tcGxldGUuIEFkZGVkIHRvIGNvbW1vbiBjb2RlIHRvIHNpbXBsaWZ5 IGNvZGUgYXQgY2FsbCBzaXRlcy4KClVzZXMgYXJyYXlfaW5kZXhfbm9zcGVjIHRvIGd1YXJkIHRo ZSByZXN1bHQgb2YgdGhlIGhhc2ggZnVuY3Rpb24uClRoaXMgaXMgb3V0IG9mIGFuIGFidW5kYW5j ZSBvZiBjYXV0aW9uLCBzaW5jZSB0aGlzIGlzIGEgdmVyeSBiYXNpYyBoYXNoCmZ1bmN0aW9uLCBj aG9zZW4gbW9yZSBmb3IgaXRzIGJ1Y2tldCBkaXN0cmlidXRpb24gcHJvcGVydGllcyB0byBjbHVz dGVyCnJlbGF0ZWQgcmluZ3MgcmF0aGVyIHRoYW4gZm9yIGNyeXB0b2dyYXBoaWMgc3RyZW5ndGgg b3IgYW55IHVuaWZvcm1uZXNzIG9mCm91dHB1dCwgYW5kIGl0IG9wZXJhdGVzIHVwb24gdmFsdWVz IHN1cHBsaWVkIGJ5IHRoZSBndWVzdCBqdXN0IGJlZm9yZSBiZWluZwp1c2VkIGFzIGFuIGFycmF5 IGluZGV4LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgQ2xhcmsgPGNocmlzdG9waGVyLmNs YXJrNkBiYWVzeXN0ZW1zLmNvbT4KLS0tCkNoYW5nZXMgc2luY2UgdjE6Cgp2MSAjMTMgZmVlZGJh Y2ssIEphbjogcmVnaXN0ZXIgb3AgOiBzL0VDT05OUkVGVVNFRC9FU1JDSC8KdjEgIzUgKCMxMykg ZmVlZGJhY2sgUGF1bDogcmVnaXN0ZXIgb3A6IHVzZSBjdXJyZCBpbiBkb19tZXNzYWdlX29wCnYx ICMxMyBmZWVkYmFjaywgUGF1bDogcmVnaXN0ZXIgb3A6IHVzZSBtZm5fZXEgY29tcGFyYXRvcgp2 MSAjNSAoIzEzKSBmZWVkYmFjayBQYXVsOiByZWdpc3RlciBvcDogdXNlIGN1cnJkIGluIGFyZ29f cmVnaXN0ZXJfcmluZwp2MSAjMTMgZmVlZGJhY2sgUGF1bDogcmVnaXN0ZXIgb3A6IHdoaXRlc3Bh Y2UsIHVuc2lnbmVkLCBib3VuZHMgY2hlY2sKdjEgIzEzIGZlZWRiYWNrIFBhdWw6IHVzZSBvZiBo ZXggaW4gbGltaXQgY29uc3RhbnQgZGVmaW5pdGlvbgp2MSAjMTMgZmVlZGJhY2sgUGF1bCwgcmVn aXN0ZXIgb3A6IHNldCBubWZucyBvbiBsb29wIHRlcm1pbmF0aW9uCnYxICMxMyBmZWVkYmFjayBQ YXVsOiByZWdpc3RlciBvcDogZG8vd2hpbGUgLT4gZ290b3MsIHJlaW5kZW50CnYxIGFyZ29fcmlu Z19tYXBfcGFnZTogZHJvcCB1aW50MzJfdCBmb3IgdW5zaWduZWQgaW50CnYxLiAjMTMgZmVlZGJh Y2sgSnVsaWVuOiB1c2UgcGFnZSBkZXNjcmlwdG9ycyBpbnN0ZWFkIG9mIGdwZm5zLgogICAtIGFk ZHMgQUJJIHN1cHBvcnQgZm9yIHBhZ2VzIHdpdGggZGlmZmVyZW50IGdyYW51bGFyaXR5Lgp2MSBm ZWVkYmFjayAjMTMsIFBhdWw6IGFkanVzdCBsb2cgbGV2ZWwgb2YgbWVzc2FnZQp2MSBmZWVkYmFj ayAjMTMsIFBhdWw6IHVzZSBncHJpbnRrIGZvciBndWVzdC10cmlnZ2VyZWQgd2FybmluZwp2MSBm ZWVkYmFjayAjMTMsIFBhdWw6IGdwcmludGsgYW5kIFhFTkxPR19ERUJVRyBmb3IgcmluZyByZWdp c3RyYXRpb24KdjEgZmVlZGJhY2sgIzEzLCBQYXVsOiB1c2UgZ3ByaW50ayBmb3IgZXJycyBpbiBh cmdvX3JpbmdfbWFwX3BhZ2UKdjEgZmVlZGJhY2sgIzEzLCBQYXVsOiB1c2UgRU5PTUVNIGlmIGds b2JhbCBtYXBwaW5nIGZhaWxzCnYxIGZlZWRiYWNrIFBhdWw6IG92ZXJmbG93IGNoZWNrIGJlZm9y ZSBzaGlmdAp2MTogYWRkIGRlZmluZSBmb3IgY29weV9maWVsZF90b19ndWVzdF9lcnJubwp2MTog Zml4IGdwcmludGsgdXNlIGZvciBBUk0gYXMgaXRzIGRlZm4gZGlzbGlrZXMgc3BsaXQgZm9ybWF0 IHN0cmluZ3MKdjE6IHVzZSBjb3B5X2ZpZWxkX3RvX2d1ZXN0X2Vycm5vCnYxIGZlZWRiYWNrICMx MywgSmFuOiBhcmdvX2hhc2hfZm46IG5vIGlubGluZSwgcmVuYW1lLCBjaGFuZ2UgdHlwZQp2MSBm ZWVkYmFjayAjMTMsIFBhdWwsIEphbjogRUZBVUxUIC0+IEVOT01FTSBpbiBhcmdvX3JpbmdfbWFw X3BhZ2UKdjEgZmVlZGJhY2sgIzEzLCBKYW46IHJlbmFtZSBwYWdlIHZhciBpbiBhcmdvX3Jpbmdf bWFwX3BhZ2UKdjEgZmVlZGJhY2sgIzEzLCBKYW46IHN3aXRjaCB1aW50OF90KiB0byB2b2lkKiBh bmQgZHJvcCBjYXN0CnYxIGZlZWRiYWNrICMxMywgSmFuOiBzd2l0Y2ggbWVtb3J5IGJhcnJpZXIg dG8gc21wX3dtYgp2MSBmZWVkYmFjayAjMTMsIEphbjogbWFrZSAncmluZycgY29tbWVudCBjb21w bHkgd2l0aCBzaW5nbGUtbGluZSBzdHlsZQp2MSBmZWVkYmFjayAjMTMsIEphbjogdXNlIHh6YWxs b2NfYXJyYXksIGRyb3AgbG9vcCBOVUxMIGluaXQKdjEgZmVlZGJhY2sgIzEzLCBKYW46IGluaXQg Ym9vbCB3aXRoIGZhbHNlIHJhdGhlciB0aGFuIDAKdjEgZmVlZGJhY2sgIzEzIEphbjogdXNlIF9f Y29weTsgZGVmaW5lIGFuZCB1c2UgX19jb3B5X2ZpZWxkX3RvX2d1ZXN0X2Vycm5vCnYxIGZlZWRi YWNrICMxMywgSmFuOiB1c2UgeHphbGxvYywgZHJvcCBpbmRpdmlkdWFsIGluaXQgemVyb2VzCnYx IGZlZWRiYWNrICMxMywgSmFuOiBwcmVmaXggcHVibGljIG5hbWVzcGFjZSB3aXRoIHhlbgp2MSBm ZWVkYmFjayAjMTMsIEphbjogYmxhbmsgbGluZSBhZnRlciBvcCBjYXNlIGluIGRvX2FyZ29fbWVz c2FnZV9vcAp2MSBzZWxmOiByZWZsb3cgY29tbWVudCBpbiBhcmdvX3JpbmdfbWFwX3BhZ2UgdG8g d2l0aGluIDgwIGNoYXIgbGVuCnYxIGZlZWRiYWNrICMxMywgUm9nZXI6IHVzZSB0cnVlIG5vdCAx IGluIGFzc2lnbiB0byB1cGRhdGVfdHhfcHRyIGJvb2wKdjEgZmVlZGJhY2sgIzIxLCBKYW46IGZv bGQgaW4gdGhlIGFycmF5X2luZGV4X25vc3BlYyBoYXNoIGZ1bmN0aW9uIGd1YXJkcwp2MSBmZWVk YmFjayAjMTgsIEphbjogZm9sZCB0aGUgbWF4IHJpbmcgY291bnQgbGltaXQgaW50byB0aGUgc2Vy aWVzCnYxIHNlbGY6IHVzZSB1bnNpZ25lZCBsb25nIHR5cGUgZm9yIFhFTl9BUkdPX1JFR0lTVEVS X0ZMQUdfTUFTSwp2MTogZmVlZGJhY2sgIzE1IEphbjogaGFuZGxlIHVwcGVyLWhhbHZlcyBvZiBo eXBlcmNhbGwgYXJncwp2MS4gZmVlZGJhY2sgIzEzIEphbjogYWRkIGNvbW1lbnQgcmU6IHBhZ2Ug YWxpZ25tZW50CnYxLiBzZWxmOiBjb25maXJtIHJpbmcgbWFnaWMgcHJlc2VuY2UgaW4gc3VwcGxp ZWQgcGFnZSBhcnJheQp2MS4gZmVlZGJhY2sgIzEzIEphbjogYWRkIGNvbW1lbnQgcmU6IG1pbmlt dW0gcmluZyBzaXplCnYxLiBmZWVkYmFjayAjMTMgUm9nZXI6IHVzZSBBU1NFUlRfVU5SRUFDSEFC TEUKdjEuIGZlZWRiYWNrIFJvZ2VyOiBhZGQgY29tbWVudCB0byBoYXNoIGZ1bmN0aW9uCgogeGVu L2NvbW1vbi9hcmdvLmMgICAgICAgICAgICAgICAgICB8IDYyMSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiB4ZW4vaW5jbHVkZS9hc20tYXJtL2d1ZXN0X2FjY2Vzcy5oIHwg IDEyICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfYWNjZXNzLmggfCAgMTIgKwogeGVuL2lu Y2x1ZGUvcHVibGljL2FyZ28uaCAgICAgICAgICB8ICA3MSArKysrKwogNCBmaWxlcyBjaGFuZ2Vk LCA3MTYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vYXJnby5jIGIveGVu L2NvbW1vbi9hcmdvLmMKaW5kZXggYWJmYzFmMC4uODFmODM0MSAxMDA2NDQKLS0tIGEveGVuL2Nv bW1vbi9hcmdvLmMKKysrIGIveGVuL2NvbW1vbi9hcmdvLmMKQEAgLTIzLDE0ICsyMywxOSBAQAog I2luY2x1ZGUgPHhlbi9ldmVudC5oPgogI2luY2x1ZGUgPHhlbi9kb21haW5fcGFnZS5oPgogI2lu Y2x1ZGUgPHhlbi9ndWVzdF9hY2Nlc3MuaD4KKyNpbmNsdWRlIDx4ZW4vbm9zcGVjLmg+CiAjaW5j bHVkZSA8eGVuL3RpbWUuaD4KICNpbmNsdWRlIDxwdWJsaWMvYXJnby5oPgogCiAjZGVmaW5lIEFS R09fTUFYX1JJTkdTX1BFUl9ET01BSU4gICAgICAgMTI4VQogCitERUZJTkVfWEVOX0dVRVNUX0hB TkRMRSh4ZW5fYXJnb19wYWdlX2Rlc2NyX3QpOwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVu X2FyZ29fYWRkcl90KTsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3JpbmdfdCk7 CiAKKy8qIHBmbiB0eXBlOiA2NC1iaXQgb24gYWxsIGFyY2hpdGVjdHVyZXMgKi8KK3R5cGVkZWYg dWludDY0X3QgYXJnb19wZm5fdDsKKwogLyogWGVuIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gZW5h YmxlIGFyZ28gKi8KIHN0YXRpYyBib29sIF9fcmVhZF9tb3N0bHkgb3B0X2FyZ29fZW5hYmxlZDsK IGJvb2xlYW5fcGFyYW0oImFyZ28iLCBvcHRfYXJnb19lbmFibGVkKTsKQEAgLTEwNCw2ICsxMDks MzEgQEAgc3RydWN0IGFyZ29fZG9tYWluCiB9OwogCiAvKgorICogVGhpcyBoYXNoIGZ1bmN0aW9u IGlzIHVzZWQgdG8gZGlzdHJpYnV0ZSByaW5ncyB3aXRoaW4gdGhlIHBlci1kb21haW4KKyAqIGhh c2ggdGFibGUgKGQtPmFyZ28tPnJpbmdfaGFzaCkuIFRoZSBoYXNoIHRhYmxlIHdpbGwgcHJvdmlk ZSBhCisgKiAncmluZ19pbmZvJyBzdHJ1Y3QgaWYgYSBtYXRjaCBpcyBmb3VuZCB3aXRoIGEgJ3hl bl9hcmdvX3JpbmdfaWQnIGtleToKKyAqIGllLiB0aGUga2V5IGlzIGEgKGRvbWFpbiBpZCwgcG9y dCwgcGFydG5lciBkb21haW4gaWQpIHR1cGxlLgorICogVGhlcmUgYXJlbid0IG1hbnkgaGFzaCB0 YWJsZSBidWNrZXRzLCBhbmQgdGhpcyBkb2Vzbid0IG5lZWQgdG8gYmUKKyAqIGNyeXB0b2dyYXBo aWNhbGx5IHJvYnVzdC4gU2luY2UgcG9ydCBudW1iZXIgdmFyaWVzIHRoZSBtb3N0IGluCisgKiBl eHBlY3RlZCB1c2UsIGFuZCB0aGUgTGludXggZHJpdmVyIGFsbG9jYXRlcyBhdCBib3RoIHRoZSBo aWdoIGFuZAorICogbG93IGVuZHMsIGluY29ycG9yYXRlIGhpZ2ggYW5kIGxvdyBiaXRzIHRvIGhl bHAgd2l0aCBkaXN0cmlidXRpb24uCisgKi8KK3N0YXRpYyB1bnNpZ25lZCBpbnQKK2FyZ29faGFz aChjb25zdCBzdHJ1Y3QgeGVuX2FyZ29fcmluZ19pZCAqaWQpCit7CisgICAgdW5zaWduZWQgaW50 IHJldDsKKworICAgIHJldCA9ICh1aW50MTZfdCkoaWQtPmFkZHIucG9ydCA+PiAxNik7CisgICAg cmV0IF49ICh1aW50MTZfdClpZC0+YWRkci5wb3J0OworICAgIHJldCBePSBpZC0+YWRkci5kb21h aW5faWQ7CisgICAgcmV0IF49IGlkLT5wYXJ0bmVyOworCisgICAgcmV0ICY9IChBUkdPX0hUQUJM RV9TSVpFIC0gMSk7CisKKyAgICByZXR1cm4gcmV0OworfQorCisvKgogICogbG9ja3MKICAqLwog CkBAIC0xNzcsNiArMjA3LDg0IEBAIGFyZ29fcmluZ191bm1hcChzdHJ1Y3QgYXJnb19yaW5nX2lu Zm8gKnJpbmdfaW5mbykKICAgICB9CiB9CiAKKy8qIGNhbGxlciBtdXN0IGhhdmUgTDMgb3IgVyhM MikgKi8KK3N0YXRpYyBpbnQKK2FyZ29fcmluZ19tYXBfcGFnZShzdHJ1Y3QgYXJnb19yaW5nX2lu Zm8gKnJpbmdfaW5mbywgdW5zaWduZWQgaW50IGksCisgICAgICAgICAgICAgICAgICAgdm9pZCAq Km91dF9wdHIpCit7CisgICAgaWYgKCBpID49IHJpbmdfaW5mby0+bm1mbnMgKQorICAgIHsKKyAg ICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLAorICAgICAgICAgICAgImFyZ286IHJpbmcgKHZtJXU6 JXggdm0lZCkgJXAgYXR0ZW1wdGVkIHRvIG1hcCBwYWdlICAldSBvZiAldVxuIiwKKyAgICAgICAg ICAgIHJpbmdfaW5mby0+aWQuYWRkci5kb21haW5faWQsIHJpbmdfaW5mby0+aWQuYWRkci5wb3J0 LAorICAgICAgICAgICAgcmluZ19pbmZvLT5pZC5wYXJ0bmVyLCByaW5nX2luZm8sIGksIHJpbmdf aW5mby0+bm1mbnMpOworICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICB9CisKKyAgICBpZiAo ICFyaW5nX2luZm8tPm1mbnMgfHwgIXJpbmdfaW5mby0+bWZuX21hcHBpbmcpCisgICAgeworICAg ICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmluZ19pbmZvLT5sZW4gPSAwOwor ICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICB9CisKKyAgICBpZiAoICFyaW5nX2luZm8tPm1m bl9tYXBwaW5nW2ldICkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86CisgICAg ICAgICAqIFRoZSBmaXJzdCBwYWdlIG9mIHRoZSByaW5nIGNvbnRhaW5zIHRoZSByaW5nIGluZGlj ZXMsIHNvIGJvdGggcmVhZAorICAgICAgICAgKiBhbmQgd3JpdGUgYWNjZXNzIHRvIHRoZSBwYWdl IGlzIHJlcXVpcmVkIGJ5IHRoZSBoeXBlcnZpc29yLCBidXQKKyAgICAgICAgICogcmVhZC1hY2Nl c3MgaXMgbm90IG5lZWRlZCBmb3IgdGhpcyBtYXBwaW5nIGZvciB0aGUgcmVtYWluZGVyIG9mIHRo ZQorICAgICAgICAgKiByaW5nLgorICAgICAgICAgKiBTaW5jZSB0aGlzIG1hcHBpbmcgd2lsbCBy ZW1haW4gcmVzaWRlbnQgaW4gWGVuJ3MgYWRkcmVzcyBzcGFjZSBmb3IKKyAgICAgICAgICogdGhl IGxpZmV0aW1lIG9mIHRoZSByaW5nLCBhbmQgZm9sbG93aW5nIHRoZSBwcmluY2lwbGUgb2YgbGVh c3QKKyAgICAgICAgICogcHJpdmlsZWdlLCBpdCBjb3VsZCBiZSBwcmVmZXJhYmxlIHRvOgorICAg ICAgICAgKiAgIyBhZGQgYSBYU00gY2hlY2sgdG8gZGV0ZXJtaW5lIHdoYXQgcG9saWN5IGlzIHdh bnRlZCBoZXJlCisgICAgICAgICAqICAjIGRlcGVuZGluZyBvbiB0aGUgWFNNIHF1ZXJ5LCBvcHRp b25hbGx5IGNyZWF0ZSB0aGlzIG1hcHBpbmcgYXMKKyAgICAgICAgICogICAgX3dyaXRlLW9ubHlf IG9uIHBsYXRmb3JtcyB0aGF0IGNhbiBzdXBwb3J0IGl0LgorICAgICAgICAgKiAgICAoZWcuIElu dGVsIEVQVC9BTUQgTlBUKS4KKyAgICAgICAgICovCisgICAgICAgIHJpbmdfaW5mby0+bWZuX21h cHBpbmdbaV0gPSBtYXBfZG9tYWluX3BhZ2VfZ2xvYmFsKHJpbmdfaW5mby0+bWZuc1tpXSk7CisK KyAgICAgICAgaWYgKCAhcmluZ19pbmZvLT5tZm5fbWFwcGluZ1tpXSApCisgICAgICAgIHsKKyAg ICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAiYXJnbzogcmlu ZyAodm0ldToleCB2bSVkKSAlcCBhdHRlbXB0ZWQgdG8gbWFwIHBhZ2UgJXUgb2YgJXVcbiIsCisg ICAgICAgICAgICAgICAgcmluZ19pbmZvLT5pZC5hZGRyLmRvbWFpbl9pZCwgcmluZ19pbmZvLT5p ZC5hZGRyLnBvcnQsCisgICAgICAgICAgICAgICAgcmluZ19pbmZvLT5pZC5wYXJ0bmVyLCByaW5n X2luZm8sIGksIHJpbmdfaW5mby0+bm1mbnMpOworICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07 CisgICAgICAgIH0KKyAgICAgICAgYXJnb19kcHJpbnRrKCJtYXBwaW5nIHBhZ2UgJSJQUklfbWZu IiB0byAlcFxuIiwKKyAgICAgICAgICAgICAgIG1mbl94KHJpbmdfaW5mby0+bWZuc1tpXSksIHJp bmdfaW5mby0+bWZuX21hcHBpbmdbaV0pOworICAgIH0KKworICAgIGlmICggb3V0X3B0ciApCisg ICAgICAgICpvdXRfcHRyID0gcmluZ19pbmZvLT5tZm5fbWFwcGluZ1tpXTsKKworICAgIHJldHVy biAwOworfQorCisvKiBjYWxsZXIgbXVzdCBoYXZlIEwzIG9yIFcoTDIpICovCitzdGF0aWMgaW50 CithcmdvX3VwZGF0ZV90eF9wdHIoc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8sIHVp bnQzMl90IHR4X3B0cikKK3sKKyAgICB2b2lkICpkc3Q7CisgICAgdWludDMyX3QgKnA7CisgICAg aW50IHJldDsKKworICAgIHJldCA9IGFyZ29fcmluZ19tYXBfcGFnZShyaW5nX2luZm8sIDAsICZk c3QpOworICAgIGlmICggcmV0ICkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJpbmdfaW5m by0+dHhfcHRyID0gdHhfcHRyOworCisgICAgcCA9IGRzdCArIG9mZnNldG9mKHhlbl9hcmdvX3Jp bmdfdCwgdHhfcHRyKTsKKyAgICB3cml0ZV9hdG9taWMocCwgdHhfcHRyKTsKKyAgICBzbXBfd21i KCk7CisKKyAgICByZXR1cm4gMDsKK30KKwogLyoKICAqIHBlbmRpbmcKICAqLwpAQCAtMjQwLDYg KzM0OCw0ODggQEAgYXJnb19yaW5nX3JlbW92ZV9pbmZvKHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvKQogICAgIHhmcmVlKHJpbmdfaW5mbyk7CiB9CiAK Ky8qIHJpbmcgKi8KKworc3RhdGljIGludAorYXJnb19maW5kX3JpbmdfbWZuKHN0cnVjdCBkb21h aW4gKmQsIGFyZ29fcGZuX3QgcGZuLCBtZm5fdCAqbWZuKQoreworICAgIHAybV90eXBlX3QgcDJt dDsKKyAgICBpbnQgcmV0ID0gMDsKKworI2lmZGVmIENPTkZJR19YODYKKyAgICAqbWZuID0gZ2V0 X2dmbl91bnNoYXJlKGQsIHBmbiwgJnAybXQpOworI2Vsc2UKKyAgICAqbWZuID0gcDJtX2xvb2t1 cChkLCBfZ2ZuKHBmbiksICZwMm10KTsKKyNlbmRpZgorCisgICAgaWYgKCAhbWZuX3ZhbGlkKCpt Zm4pICkKKyAgICAgICAgcmV0ID0gLUVJTlZBTDsKKyNpZmRlZiBDT05GSUdfWDg2CisgICAgZWxz ZSBpZiAoIHAybV9pc19wYWdpbmcocDJtdCkgfHwgKHAybXQgPT0gcDJtX3JhbV9sb2dkaXJ0eSkg KQorICAgICAgICByZXQgPSAtRUFHQUlOOworI2VuZGlmCisgICAgZWxzZSBpZiAoIChwMm10ICE9 IHAybV9yYW1fcncpIHx8CisgICAgICAgICAgICAgICFnZXRfcGFnZV9hbmRfdHlwZShtZm5fdG9f cGFnZSgqbWZuKSwgZCwgUEdUX3dyaXRhYmxlX3BhZ2UpICkKKyAgICAgICAgcmV0ID0gLUVJTlZB TDsKKworI2lmZGVmIENPTkZJR19YODYKKyAgICBwdXRfZ2ZuKGQsIHBmbik7CisjZW5kaWYKKwor ICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKK2FyZ29fZmluZF9yaW5nX21mbnMoc3Ry dWN0IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8sCisgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IG5wYWdlLAorICAgICAgICAgICAgICAgICAgICBYRU5fR1VF U1RfSEFORExFX1BBUkFNKHhlbl9hcmdvX3BhZ2VfZGVzY3JfdCkgcGdfZGVzY3JfaG5kLAorICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW4pCit7CisgICAgdW5zaWduZWQgaW50IGk7Cisg ICAgaW50IHJldCA9IDA7CisKKyAgICAvKgorICAgICAqIGZpcnN0IGJvdW5kcyBjaGVjayBvbiBu cGFnZSBoZXJlIGFsc28gc2VydmVzIGFzIGFuIG92ZXJmbG93IGNoZWNrCisgICAgICogYmVmb3Jl IGxlZnQgc2hpZnRpbmcgaXQKKyAgICAgKi8KKyAgICBpZiAoICh1bmxpa2VseShucGFnZSA+IChY RU5fQVJHT19NQVhfUklOR19TSVpFID4+IFBBR0VfU0hJRlQpKSkgfHwKKyAgICAgICAgICgobnBh Z2UgPDwgUEFHRV9TSElGVCkgPCBsZW4pICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAg ICBpZiAoIHJpbmdfaW5mby0+bWZucyApCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBS aW5nIGFscmVhZHkgZXhpc3RlZC4gQ2hlY2sgaWYgaXQncyB0aGUgc2FtZSByaW5nLAorICAgICAg ICAgKiBpLmUuIHNhbWUgbnVtYmVyIG9mIHBhZ2VzIGFuZCBhbGwgdHJhbnNsYXRlZCBncGZucyBz dGlsbAorICAgICAgICAgKiB0cmFuc2xhdGluZyB0byB0aGUgc2FtZSBtZm5zCisgICAgICAgICAq LworICAgICAgICBpZiAoIHJpbmdfaW5mby0+bnBhZ2UgIT0gbnBhZ2UgKQorICAgICAgICAgICAg aSA9IHJpbmdfaW5mby0+bm1mbnMgKyAxOyAvKiBmb3JjZXMgcmUtcmVnaXN0ZXIgYmVsb3cgKi8K KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKCBpID0gMDsgaSA8IHJp bmdfaW5mby0+bm1mbnM7IGkrKyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeGVu X2FyZ29fcGFnZV9kZXNjcl90IHBnX2Rlc2NyOworICAgICAgICAgICAgICAgIGFyZ29fcGZuX3Qg cGZuOworICAgICAgICAgICAgICAgIG1mbl90IG1mbjsKKworICAgICAgICAgICAgICAgIHJldCA9 IGNvcHlfZnJvbV9ndWVzdF9vZmZzZXRfZXJybm8oJnBnX2Rlc2NyLCBwZ19kZXNjcl9obmQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLCAxKTsK KyAgICAgICAgICAgICAgICBpZiAoIHJldCApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor CisgICAgICAgICAgICAgICAgLyogSW1wbGVtZW50YXRpb24gY3VycmVudGx5IG9ubHkgc3VwcG9y dHMgaGFuZGxpbmcgNEsgcGFnZXMgKi8KKyAgICAgICAgICAgICAgICBpZiAoIChwZ19kZXNjciAm IFhFTl9BUkdPX1BBR0VfREVTQ1JfU0laRV9NQVNLKSAhPQorICAgICAgICAgICAgICAgICAgICAg ICAgWEVOX0FSR09fUEFHRV9ERVNDUl9TSVpFXzRLICkKKyAgICAgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwZm4gPSBwZ19kZXNjciA+PiBQ QUdFX1NISUZUOworCisgICAgICAgICAgICAgICAgcmV0ID0gYXJnb19maW5kX3JpbmdfbWZuKGQs IHBmbiwgJm1mbik7CisgICAgICAgICAgICAgICAgaWYgKCByZXQgKQorICAgICAgICAgICAgICAg ICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGlmICggIW1mbl9lcShtZm4sIHJpbmdfaW5m by0+bWZuc1tpXSkgKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K KyAgICAgICAgfQorICAgICAgICBpZiAoIGkgIT0gcmluZ19pbmZvLT5ubWZucyApCisgICAgICAg IHsKKyAgICAgICAgICAgIC8qIFJlLXJlZ2lzdGVyIGlzIHN0YW5kYXJkIHByb2NlZHVyZSBhZnRl ciByZXN1bWUgKi8KKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0lORk8sCisgICAgICAgICJh cmdvOiB2bSV1IHJlLXJlZ2lzdGVyIGV4aXN0aW5nIHJpbmcgKHZtJXU6JXggdm0lZCkgY2xlYXJz IE1GTiBsaXN0XG4iLAorICAgICAgICAgICAgICAgICAgICBjdXJyZW50LT5kb21haW4tPmRvbWFp bl9pZCwgcmluZ19pbmZvLT5pZC5hZGRyLmRvbWFpbl9pZCwKKyAgICAgICAgICAgICAgICAgICAg cmluZ19pbmZvLT5pZC5hZGRyLnBvcnQsIHJpbmdfaW5mby0+aWQucGFydG5lcik7CisKKyAgICAg ICAgICAgIGFyZ29fcmluZ19yZW1vdmVfbWZucyhkLCByaW5nX2luZm8pOworICAgICAgICAgICAg QVNTRVJUKCFyaW5nX2luZm8tPm1mbnMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCAh cmluZ19pbmZvLT5tZm5zICkKKyAgICB7CisgICAgICAgIG1mbl90ICptZm5zOworICAgICAgICB1 aW50OF90ICoqbWZuX21hcHBpbmc7CisKKyAgICAgICAgbWZucyA9IHhtYWxsb2NfYXJyYXkobWZu X3QsIG5wYWdlKTsKKyAgICAgICAgaWYgKCAhbWZucyApCisgICAgICAgICAgICByZXR1cm4gLUVO T01FTTsKKworICAgICAgICBmb3IgKCBpID0gMDsgaSA8IG5wYWdlOyBpKysgKQorICAgICAgICAg ICAgbWZuc1tpXSA9IElOVkFMSURfTUZOOworCisgICAgICAgIG1mbl9tYXBwaW5nID0geHphbGxv Y19hcnJheSh1aW50OF90ICosIG5wYWdlKTsKKyAgICAgICAgaWYgKCAhbWZuX21hcHBpbmcgKQor ICAgICAgICB7CisgICAgICAgICAgICB4ZnJlZShtZm5zKTsKKyAgICAgICAgICAgIHJldHVybiAt RU5PTUVNOworICAgICAgICB9CisKKyAgICAgICAgcmluZ19pbmZvLT5ucGFnZSA9IG5wYWdlOwor ICAgICAgICByaW5nX2luZm8tPm1mbnMgPSBtZm5zOworICAgICAgICByaW5nX2luZm8tPm1mbl9t YXBwaW5nID0gbWZuX21hcHBpbmc7CisgICAgfQorICAgIEFTU0VSVChyaW5nX2luZm8tPm5wYWdl ID09IG5wYWdlKTsKKworICAgIGlmICggcmluZ19pbmZvLT5ubWZucyA9PSByaW5nX2luZm8tPm5w YWdlICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKCBpID0gcmluZ19pbmZvLT5ubWZu czsgaSA8IHJpbmdfaW5mby0+bnBhZ2U7IGkrKyApCisgICAgeworICAgICAgICB4ZW5fYXJnb19w YWdlX2Rlc2NyX3QgcGdfZGVzY3I7CisgICAgICAgIGFyZ29fcGZuX3QgcGZuOworICAgICAgICBt Zm5fdCBtZm47CisKKyAgICAgICAgcmV0ID0gY29weV9mcm9tX2d1ZXN0X29mZnNldF9lcnJubygm cGdfZGVzY3IsIHBnX2Rlc2NyX2huZCwgaSwgMSk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAg ICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIEltcGxlbWVudGF0aW9uIGN1cnJlbnRseSBvbmx5 IHN1cHBvcnRzIGhhbmRsaW5nIDRLIHBhZ2VzICovCisgICAgICAgIGlmICggKHBnX2Rlc2NyICYg WEVOX0FSR09fUEFHRV9ERVNDUl9TSVpFX01BU0spICE9CisgICAgICAgICAgICAgICAgWEVOX0FS R09fUEFHRV9ERVNDUl9TSVpFXzRLICkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0ID0gLUVJ TlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHBmbiA9IHBnX2Rl c2NyID4+IFBBR0VfU0hJRlQ7CisKKyAgICAgICAgcmV0ID0gYXJnb19maW5kX3JpbmdfbWZuKGQs IHBmbiwgJm1mbik7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgeworICAgICAgICAgICAg Z3ByaW50ayhYRU5MT0dfRVJSLAorICAgICAgICAiYXJnbzogdm0ldTogaW52YWxpZCBncGZuICUi UFJJX3hlbl9wZm4iIHI6KHZtJXU6JXggdm0lZCkgJXAgJWQvJWRcbiIsCisgICAgICAgICAgICAg ICAgICAgIGQtPmRvbWFpbl9pZCwgcGZuLCByaW5nX2luZm8tPmlkLmFkZHIuZG9tYWluX2lkLAor ICAgICAgICAgICAgICAgICAgICByaW5nX2luZm8tPmlkLmFkZHIucG9ydCwgcmluZ19pbmZvLT5p ZC5wYXJ0bmVyLAorICAgICAgICAgICAgICAgICAgICByaW5nX2luZm8sIGksIHJpbmdfaW5mby0+ bnBhZ2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICByaW5nX2lu Zm8tPm1mbnNbaV0gPSBtZm47CisKKyAgICAgICAgYXJnb19kcHJpbnRrKCIlZDogJSJQUklfeGVu X3BmbiIgLT4gJSJQUklfbWZuIlxuIiwKKyAgICAgICAgICAgICAgIGksIHBmbiwgbWZuX3gocmlu Z19pbmZvLT5tZm5zW2ldKSk7CisgICAgfQorCisgICAgcmluZ19pbmZvLT5ubWZucyA9IGk7CisK KyAgICBpZiAoIHJldCApCisgICAgICAgIGFyZ29fcmluZ19yZW1vdmVfbWZucyhkLCByaW5nX2lu Zm8pOworICAgIGVsc2UKKyAgICB7CisgICAgICAgIEFTU0VSVChyaW5nX2luZm8tPm5tZm5zID09 IHJpbmdfaW5mby0+bnBhZ2UpOworCisgICAgICAgIGdwcmludGsoWEVOTE9HX0RFQlVHLAorICAg ICAgICAiYXJnbzogdm0ldSByaW5nICh2bSV1OiV4IHZtJWQpICVwIG1mbl9tYXBwaW5nICVwIG5w YWdlICVkIG5tZm5zICVkXG4iLAorICAgICAgICAgICAgICAgIGN1cnJlbnQtPmRvbWFpbi0+ZG9t YWluX2lkLAorICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQuYWRkci5kb21haW5faWQsIHJp bmdfaW5mby0+aWQuYWRkci5wb3J0LAorICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQucGFy dG5lciwgcmluZ19pbmZvLCByaW5nX2luZm8tPm1mbl9tYXBwaW5nLAorICAgICAgICAgICAgICAg IHJpbmdfaW5mby0+bnBhZ2UsIHJpbmdfaW5mby0+bm1mbnMpOworICAgIH0KKworICAgIHJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKgorYXJnb19yaW5nX2Zp bmRfaW5mbyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3QgeGVuX2FyZ29fcmlu Z19pZCAqaWQpCit7CisgICAgdW5zaWduZWQgaW50IGhhc2g7CisgICAgc3RydWN0IGhsaXN0X25v ZGUgKm5vZGU7CisgICAgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm87CisKKyAgICBB U1NFUlQocndfaXNfbG9ja2VkKCZkLT5hcmdvLT5sb2NrKSk7CisKKyAgICBoYXNoID0gYXJyYXlf aW5kZXhfbm9zcGVjKGFyZ29faGFzaChpZCksIEFSR09fSFRBQkxFX1NJWkUpOworCisgICAgYXJn b19kcHJpbnRrKCJkLT5hcmdvPSVwLCBkLT5hcmdvLT5yaW5nX2hhc2hbJXVdPSVwIGlkPSVwXG4i LAorICAgICAgICAgICAgICAgICBkLT5hcmdvLCBoYXNoLCBkLT5hcmdvLT5yaW5nX2hhc2hbaGFz aF0uZmlyc3QsIGlkKTsKKyAgICBhcmdvX2RwcmludGsoImlkLmFkZHIucG9ydD0leCBpZC5hZGRy LmRvbWFpbj12bSV1IgorICAgICAgICAgICAgICAgICAiIGlkLmFkZHIucGFydG5lcj12bSVkXG4i LAorICAgICAgICAgICAgICAgICBpZC0+YWRkci5wb3J0LCBpZC0+YWRkci5kb21haW5faWQsIGlk LT5wYXJ0bmVyKTsKKworICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHJpbmdfaW5mbywgbm9kZSwg JmQtPmFyZ28tPnJpbmdfaGFzaFtoYXNoXSwgbm9kZSkKKyAgICB7CisgICAgICAgIHhlbl9hcmdv X3JpbmdfaWRfdCAqY21waWQgPSAmcmluZ19pbmZvLT5pZDsKKworICAgICAgICBpZiAoIGNtcGlk LT5hZGRyLnBvcnQgPT0gaWQtPmFkZHIucG9ydCAmJgorICAgICAgICAgICAgIGNtcGlkLT5hZGRy LmRvbWFpbl9pZCA9PSBpZC0+YWRkci5kb21haW5faWQgJiYKKyAgICAgICAgICAgICBjbXBpZC0+ cGFydG5lciA9PSBpZC0+cGFydG5lciApCisgICAgICAgIHsKKyAgICAgICAgICAgIGFyZ29fZHBy aW50aygicmluZ19pbmZvPSVwXG4iLCByaW5nX2luZm8pOworICAgICAgICAgICAgcmV0dXJuIHJp bmdfaW5mbzsKKyAgICAgICAgfQorICAgIH0KKyAgICBhcmdvX2RwcmludGsoIm5vIHJpbmdfaW5m byBmb3VuZFxuIik7CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludAorYXJnb192 ZXJpZnlfcmluZ19tYWdpYyhzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKK3sKKyAg ICB2b2lkICpkc3Q7CisgICAgeGVuX2FyZ29fcmluZ190ICpyaW5nOworICAgIGludCByZXQ7CisK KyAgICByZXQgPSBhcmdvX3JpbmdfbWFwX3BhZ2UocmluZ19pbmZvLCAwLCAmZHN0KTsKKyAgICBp ZiAoIHJldCApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICByaW5nID0gZHN0OworICAgIG1i KCk7CisKKyAgICBpZiAoIHJpbmctPm1hZ2ljICE9IFhFTl9BUkdPX1JJTkdfTUFHSUMgKQorICAg ICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgbG9uZwor YXJnb19yZWdpc3Rlcl9yaW5nKHN0cnVjdCBkb21haW4gKmN1cnJkLAorICAgICAgICAgICAgICAg ICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2FyZ29fcmluZ190KSByaW5nX2huZCwKKyAg ICAgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9hcmdvX3BhZ2VfZGVz Y3JfdCkgcGdfZGVzY3JfaG5kLAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5wYWdlLCBi b29sIGZhaWxfZXhpc3QpCit7CisgICAgc3RydWN0IHhlbl9hcmdvX3JpbmcgcmluZzsKKyAgICBz dHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbzsKKyAgICBpbnQgcmV0ID0gMDsKKyAgICBi b29sIHVwZGF0ZV90eF9wdHIgPSBmYWxzZTsKKyAgICB1aW50NjRfdCBkc3RfZG9tYWluX2Nvb2tp ZSA9IDA7CisKKyAgICAvKgorICAgICAqIFZlcmlmeSB0aGUgYWxpZ25tZW50IG9mIHRoZSByaW5n IGRhdGEgc3RydWN0dXJlIHN1cHBsaWVkIHdpdGggdGhlCisgICAgICogdW5kZXJzdGFuZGluZyB0 aGF0IHRoZSByaW5nIGhhbmRsZSBzdXBwbGllZCBwb2ludHMgdG8gdGhlIHNhbWUgbWVtb3J5IGFz CisgICAgICogdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBhcnJheSBvZiBwYWdlcyBwcm92aWRlZCB2 aWEgcGdfZGVzY3JfaG5kLCB3aGVyZQorICAgICAqIHRoZSBoZWFkIG9mIHRoZSByaW5nIHdpbGwg cmVzaWRlLgorICAgICAqIFNlZSBhcmdvX3VwZGF0ZV90eF9wdHIgd2hlcmUgdGhlIGxvY2F0aW9u IG9mIHRoZSB0eF9wdHIgaXMgYWNjZXNzZWQgYXQgYQorICAgICAqIGZpeGVkIG9mZnNldCBmcm9t IGhlYWQgb2YgdGhlIGZpcnN0IHBhZ2UgaW4gdGhlIG1mbiBhcnJheS4KKyAgICAgKi8KKyAgICBp ZiAoICEoZ3Vlc3RfaGFuZGxlX2lzX2FsaWduZWQocmluZ19obmQsIH5QQUdFX01BU0spKSApCisg ICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgcmVhZF9sb2NrKCZhcmdvX2xvY2spOworCisg ICAgaWYgKCAhY3VycmQtPmFyZ28gKQorICAgIHsKKyAgICAgICAgcmV0ID0gLUVOT0RFVjsKKyAg ICAgICAgZ290byBvdXRfdW5sb2NrOworICAgIH0KKworICAgIGlmICggY29weV9mcm9tX2d1ZXN0 KCZyaW5nLCByaW5nX2huZCwgMSkgKQorICAgIHsKKyAgICAgICAgcmV0ID0gLUVGQVVMVDsKKyAg ICAgICAgZ290byBvdXRfdW5sb2NrOworICAgIH0KKworICAgIGlmICggcmluZy5tYWdpYyAhPSBY RU5fQVJHT19SSU5HX01BR0lDICkKKyAgICB7CisgICAgICAgIHJldCA9IC1FSU5WQUw7CisgICAg ICAgIGdvdG8gb3V0X3VubG9jazsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEEgcmluZyBtdXN0 IGJlIGxhcmdlIGVub3VnaCB0byB0cmFuc21pdCBtZXNzYWdlcywgd2hpY2ggcmVxdWlyZXMgcm9v bSBmb3IKKyAgICAgKiBhdCBsZWFzdDoKKyAgICAgKiAgKiBvbmUgbWVzc2FnZSBoZWFkZXIsIGFu ZAorICAgICAqICAqIG9uZSBwYXlsb2FkIHNsb3QgKHBheWxvYWQgaXMgYWx3YXlzIHJvdW5kZWQg dG8gYSBtdWx0aXBsZSBvZiAxNiBieXRlcykKKyAgICAgKiBhbmQgdGhlIHJpbmcgZG9lcyBub3Qg YWxsb3cgZmlsbGluZyB0byBjYXBhY2l0eSB3aXRoIGEgc2luZ2xlIG1lc3NhZ2UgLS0KKyAgICAg KiBzZWUgbG9naWMgaW4gYXJnb19yaW5nYnVmX2luc2VydCAtLSBzbyB0aGVyZSBtdXN0IGJlIHNw YWNlIHJlbWFpbmluZyB3aGVuCisgICAgICogYSBzaW5nbGUgbWVzc2FnZSBpcyBwcmVzZW50LiBU aGlzIGRldGVybWluZXMgbWluaW11bSByaW5nIHNpemUuCisgICAgICogSW4gYWRkaXRpb24sIHRo ZSByaW5nIHNpemUgbXVzdCBiZSBhbGlnbmVkIHdpdGggdGhlIHBheWxvYWQgcm91bmRpbmcuCisg ICAgICovCisgICAgaWYgKCAocmluZy5sZW4gPCAoc2l6ZW9mKHN0cnVjdCB4ZW5fYXJnb19yaW5n X21lc3NhZ2VfaGVhZGVyKQorICAgICAgICAgICAgICAgICAgICAgICsgWEVOX0FSR09fUk9VTkRV UCgxKSArIFhFTl9BUkdPX1JPVU5EVVAoMSkpKSB8fAorICAgICAgICAgKFhFTl9BUkdPX1JPVU5E VVAocmluZy5sZW4pICE9IHJpbmcubGVuKSApCisgICAgeworICAgICAgICByZXQgPSAtRUlOVkFM OworICAgICAgICBnb3RvIG91dF91bmxvY2s7CisgICAgfQorCisgICAgaWYgKCByaW5nLmxlbiA+ IFhFTl9BUkdPX01BWF9SSU5HX1NJWkUgKQorICAgIHsKKyAgICAgICAgcmV0ID0gLUVJTlZBTDsK KyAgICAgICAgZ290byBvdXRfdW5sb2NrOworICAgIH0KKworICAgIGlmICggcmluZy5pZC5wYXJ0 bmVyID09IFhFTl9BUkdPX0RPTUlEX0FOWSApCisgICAgeworICAgICAgICByZXQgPSB4c21fYXJn b19yZWdpc3Rlcl9hbnlfc291cmNlKGN1cnJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFyZ29fbWFjX2Jvb3RwYXJhbV9lbmZvcmNpbmcpOworICAgICAgICBp ZiAoIHJldCApCisgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CisgICAgfQorICAgIGVsc2UK KyAgICB7CisgICAgICAgIHN0cnVjdCBkb21haW4gKmRzdF9kID0gZ2V0X2RvbWFpbl9ieV9pZChy aW5nLmlkLnBhcnRuZXIpOworCisgICAgICAgIGlmICggIWRzdF9kICkKKyAgICAgICAgeworICAg ICAgICAgICAgYXJnb19kcHJpbnRrKCIhZHN0X2QsIEVTUkNIXG4iKTsKKyAgICAgICAgICAgIHJl dCA9IC1FU1JDSDsKKyAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKyAgICAgICAgfQorCisg ICAgICAgIHJldCA9IHhzbV9hcmdvX3JlZ2lzdGVyX3NpbmdsZV9zb3VyY2UoY3VycmQsIGRzdF9k KTsKKyAgICAgICAgaWYgKCByZXQgKQorICAgICAgICB7CisgICAgICAgICAgICBwdXRfZG9tYWlu KGRzdF9kKTsKKyAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKyAgICAgICAgfQorCisgICAg ICAgIGlmICggIWRzdF9kLT5hcmdvICkKKyAgICAgICAgeworICAgICAgICAgICAgYXJnb19kcHJp bnRrKCIhZHN0X2QtPmFyZ28sIEVDT05OUkVGVVNFRFxuIik7CisgICAgICAgICAgICByZXQgPSAt RUNPTk5SRUZVU0VEOworICAgICAgICAgICAgcHV0X2RvbWFpbihkc3RfZCk7CisgICAgICAgICAg ICBnb3RvIG91dF91bmxvY2s7CisgICAgICAgIH0KKworICAgICAgICBkc3RfZG9tYWluX2Nvb2tp ZSA9IGRzdF9kLT5hcmdvLT5kb21haW5fY29va2llOworCisgICAgICAgIHB1dF9kb21haW4oZHN0 X2QpOworICAgIH0KKworICAgIHJpbmcuaWQuYWRkci5kb21haW5faWQgPSBjdXJyZC0+ZG9tYWlu X2lkOworICAgIHJldCA9IF9fY29weV9maWVsZF90b19ndWVzdF9lcnJubyhyaW5nX2huZCwgJnJp bmcsIGlkKTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKworICAg IC8qCisgICAgICogbm8gbmVlZCBmb3IgYSBsb2NrIHlldCwgYmVjYXVzZSBvbmx5IHdlIGtub3cg YWJvdXQgdGhpcworICAgICAqIHNldCB0aGUgdHggcG9pbnRlciBpZiBpdCBsb29rcyBib2d1cyAo d2UgZG9uJ3QgcmVzZXQgaXQKKyAgICAgKiBiZWNhdXNlIHRoaXMgbWlnaHQgYmUgYSByZS1yZWdp c3RlciBhZnRlciBTNCkKKyAgICAgKi8KKworICAgIGlmICggcmluZy50eF9wdHIgPj0gcmluZy5s ZW4gfHwKKyAgICAgICAgIFhFTl9BUkdPX1JPVU5EVVAocmluZy50eF9wdHIpICE9IHJpbmcudHhf cHRyICkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIFNpbmNlIHRoZSByaW5nIGlzIGEg bWVzcywgYXR0ZW1wdCB0byBmbHVzaCB0aGUgY29udGVudHMgb2YgaXQKKyAgICAgICAgICogaGVy ZSBieSBzZXR0aW5nIHRoZSB0eF9wdHIgdG8gdGhlIG5leHQgYWxpZ25lZCBtZXNzYWdlIHNsb3Qg cGFzdAorICAgICAgICAgKiB0aGUgbGF0ZXN0IHJ4X3B0ciB3ZSBoYXZlIG9ic2VydmVkLiBIYW5k bGUgcmluZyB3cmFwIGNvcnJlY3RseS4KKyAgICAgICAgICovCisgICAgICAgIHJpbmcudHhfcHRy ID0gWEVOX0FSR09fUk9VTkRVUChyaW5nLnJ4X3B0cik7CisKKyAgICAgICAgaWYgKCByaW5nLnR4 X3B0ciA+PSByaW5nLmxlbiApCisgICAgICAgICAgICByaW5nLnR4X3B0ciA9IDA7CisKKyAgICAg ICAgLyogcmluZy50eF9wdHIgd2lsbCBiZSB3cml0dGVuIGJhY2sgdG8gdGhlIGd1ZXN0IHJpbmcg YmVsb3cuICovCisgICAgICAgIHVwZGF0ZV90eF9wdHIgPSB0cnVlOworICAgIH0KKworICAgIC8q IFcoTDIpIHByb3RlY3RzIGFsbCB0aGUgZWxlbWVudHMgb2YgdGhlIGRvbWFpbidzIHJpbmdfaW5m byAqLworICAgIHdyaXRlX2xvY2soJmN1cnJkLT5hcmdvLT5sb2NrKTsKKworICAgIGlmICggY3Vy cmQtPmFyZ28tPnJpbmdfY291bnQgPj0gQVJHT19NQVhfUklOR1NfUEVSX0RPTUFJTiApCisgICAg eworICAgICAgICByZXQgPSAtRU5PU1BDOworICAgICAgICBnb3RvIG91dF91bmxvY2syOworICAg IH0KKworICAgIHJpbmdfaW5mbyA9IGFyZ29fcmluZ19maW5kX2luZm8oY3VycmQsICZyaW5nLmlk KTsKKyAgICBpZiAoICFyaW5nX2luZm8gKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGhh c2g7CisKKyAgICAgICAgcmluZ19pbmZvID0geHphbGxvYyhzdHJ1Y3QgYXJnb19yaW5nX2luZm8p OworICAgICAgICBpZiAoICFyaW5nX2luZm8gKQorICAgICAgICB7CisgICAgICAgICAgICByZXQg PSAtRU5PTUVNOworICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICAgICAgfQorCisg ICAgICAgIHNwaW5fbG9ja19pbml0KCZyaW5nX2luZm8tPmxvY2spOworCisgICAgICAgIHJpbmdf aW5mby0+cGFydG5lcl9jb29raWUgPSBkc3RfZG9tYWluX2Nvb2tpZTsKKyAgICAgICAgcmluZ19p bmZvLT5pZCA9IHJpbmcuaWQ7CisKKyAgICAgICAgSU5JVF9ITElTVF9IRUFEKCZyaW5nX2luZm8t PnBlbmRpbmcpOworCisgICAgICAgIGhhc2ggPSBhcnJheV9pbmRleF9ub3NwZWMoYXJnb19oYXNo KCZyaW5nX2luZm8tPmlkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUkdP X0hUQUJMRV9TSVpFKTsKKyAgICAgICAgaGxpc3RfYWRkX2hlYWQoJnJpbmdfaW5mby0+bm9kZSwg JmN1cnJkLT5hcmdvLT5yaW5nX2hhc2hbaGFzaF0pOworCisgICAgICAgIGdwcmludGsoWEVOTE9H X0RFQlVHLCAiYXJnbzogdm0ldSByZWdpc3RlcmluZyByaW5nICh2bSV1OiV4IHZtJWQpXG4iLAor ICAgICAgICAgICAgICAgIGN1cnJkLT5kb21haW5faWQsIHJpbmcuaWQuYWRkci5kb21haW5faWQs CisgICAgICAgICAgICAgICAgcmluZy5pZC5hZGRyLnBvcnQsIHJpbmcuaWQucGFydG5lcik7Cisg ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAqIElmIHRoZSBjYWxs ZXIgc3BlY2lmaWVkIHRoYXQgdGhlIHJpbmcgbXVzdCBub3QgYWxyZWFkeSBleGlzdCwKKyAgICAg ICAgICogZmFpbCBhdCBhdHRlbXB0IHRvIGFkZCBhIGNvbXBsZXRlZCByaW5nIHdoaWNoIGFscmVh ZHkgZXhpc3RzLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCBmYWlsX2V4aXN0ICYmIHJpbmdf aW5mby0+bGVuICkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0ID0gLUVFWElTVDsKKyAgICAg ICAgICAgIGdvdG8gb3V0X3VubG9jazI7CisgICAgICAgIH0KKworICAgICAgICBncHJpbnRrKFhF TkxPR19ERUJVRywKKyAgICAgICAgICAgICJhcmdvOiB2bSV1IHJlLXJlZ2lzdGVyaW5nIGV4aXN0 aW5nIHJpbmcgKHZtJXU6JXggdm0lZClcbiIsCisgICAgICAgICAgICAgY3VycmQtPmRvbWFpbl9p ZCwgcmluZy5pZC5hZGRyLmRvbWFpbl9pZCwKKyAgICAgICAgICAgICByaW5nLmlkLmFkZHIucG9y dCwgcmluZy5pZC5wYXJ0bmVyKTsKKyAgICB9CisKKyAgICAvKiBTaW5jZSB3ZSBob2xkIFcoTDIp LCB0aGVyZSBpcyBubyBuZWVkIHRvIHRha2UgTDMgaGVyZSAqLworICAgIHJpbmdfaW5mby0+dHhf cHRyID0gcmluZy50eF9wdHI7CisKKyAgICByZXQgPSBhcmdvX2ZpbmRfcmluZ19tZm5zKGN1cnJk LCByaW5nX2luZm8sIG5wYWdlLCBwZ19kZXNjcl9obmQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByaW5nLmxlbik7CisgICAgaWYgKCByZXQgKQorICAgIHsKKyAgICAgICAgZ3ByaW50 ayhYRU5MT0dfRVJSLAorICAgICAgICAgICAgImFyZ286IHZtJXUgZmFpbGVkIHRvIGZpbmQgcmlu ZyBtZm5zICh2bSV1OiV4IHZtJWQpXG4iLAorICAgICAgICAgICAgIGN1cnJkLT5kb21haW5faWQs IHJpbmcuaWQuYWRkci5kb21haW5faWQsCisgICAgICAgICAgICAgcmluZy5pZC5hZGRyLnBvcnQs IHJpbmcuaWQucGFydG5lcik7CisKKyAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICB9CisK KyAgICAvKgorICAgICAqIFNhZmV0eSBjaGVjayB0byBjb25maXJtIHRoYXQgdGhlIG1lbW9yeSBz dXBwbGllZCBpcyBpbnRlbmRlZCBmb3IKKyAgICAgKiB1c2UgYXMgYSByaW5nLiBUaGlzIHdpbGwg bWFwIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSByaW5nLgorICAgICAqLworICAgIHJldCA9IGFyZ29f dmVyaWZ5X3JpbmdfbWFnaWMocmluZ19pbmZvKTsKKyAgICBpZiAoIHJldCApCisgICAgeworICAg ICAgICBncHJpbnRrKFhFTkxPR19FUlIsCisgICAgICAgICAgICAiYXJnbzogdm0ldSByZWdpc3Rl ciBtZW1vcnkgbWlzbWF0Y2ggKHZtJXU6JXggdm0lZClcbiIsCisgICAgICAgICAgICAgY3VycmQt PmRvbWFpbl9pZCwgcmluZy5pZC5hZGRyLmRvbWFpbl9pZCwKKyAgICAgICAgICAgICByaW5nLmlk LmFkZHIucG9ydCwgcmluZy5pZC5wYXJ0bmVyKTsKKworICAgICAgICBhcmdvX3JpbmdfcmVtb3Zl X2luZm8oY3VycmQsIHJpbmdfaW5mbyk7CisgICAgICAgIGdvdG8gb3V0X3VubG9jazI7CisgICAg fQorCisgICAgaWYgKCB1cGRhdGVfdHhfcHRyICkKKyAgICB7CisgICAgICAgIHJldCA9IGFyZ29f dXBkYXRlX3R4X3B0cihyaW5nX2luZm8sIHJpbmcudHhfcHRyKTsKKyAgICAgICAgaWYgKCByZXQg KQorICAgICAgICB7CisgICAgICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsCisgICAgICAgICAg ICAgICAgImFyZ286IHZtJXUgZmFpbGVkIHRvIHdyaXRlIHR4X3B0ciAodm0ldToleCB2bSVkKVxu IiwKKyAgICAgICAgICAgICAgICAgY3VycmQtPmRvbWFpbl9pZCwgcmluZy5pZC5hZGRyLmRvbWFp bl9pZCwKKyAgICAgICAgICAgICAgICAgcmluZy5pZC5hZGRyLnBvcnQsIHJpbmcuaWQucGFydG5l cik7CisKKyAgICAgICAgICAgIGFyZ29fcmluZ19yZW1vdmVfaW5mbyhjdXJyZCwgcmluZ19pbmZv KTsKKyAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazI7CisgICAgICAgIH0KKyAgICB9CisKKyAg ICByaW5nX2luZm8tPmxlbiA9IHJpbmcubGVuOworICAgIGN1cnJkLT5hcmdvLT5yaW5nX2NvdW50 Kys7CisKKyBvdXRfdW5sb2NrMjoKKyAgICB3cml0ZV91bmxvY2soJmN1cnJkLT5hcmdvLT5sb2Nr KTsKKworIG91dF91bmxvY2s6CisgICAgcmVhZF91bmxvY2soJmFyZ29fbG9jayk7CisKKyAgICBy ZXR1cm4gcmV0OworfQorCiBsb25nCiBkb19hcmdvX21lc3NhZ2Vfb3AodW5zaWduZWQgaW50IGNt ZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcxLAogICAgICAgICAgICAgICAgICAg IFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkgYXJnMiwKQEAgLTI2MSw2ICs4NTEsMzcgQEAg ZG9fYXJnb19tZXNzYWdlX29wKHVuc2lnbmVkIGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0odm9pZCkgYXJnMSwKIAogICAgIHN3aXRjaCAoY21kKQogICAgIHsKKyAgICBjYXNlIFhFTl9B UkdPX01FU1NBR0VfT1BfcmVnaXN0ZXJfcmluZzoKKyAgICB7CisgICAgICAgIFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0oeGVuX2FyZ29fcmluZ190KSByaW5nX2huZCA9CisgICAgICAgICAgICBndWVz dF9oYW5kbGVfY2FzdChhcmcxLCB4ZW5fYXJnb19yaW5nX3QpOworICAgICAgICBYRU5fR1VFU1Rf SEFORExFX1BBUkFNKHhlbl9hcmdvX3BhZ2VfZGVzY3JfdCkgcGdfZGVzY3JfaG5kID0KKyAgICAg ICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZzIsIHhlbl9hcmdvX3BhZ2VfZGVzY3JfdCk7Cisg ICAgICAgIC8qIGFyZzMgaXMgbnBhZ2UgKi8KKyAgICAgICAgLyogYXJnNCBpcyBmbGFncyAqLwor ICAgICAgICBib29sIGZhaWxfZXhpc3QgPSBhcmc0ICYgWEVOX0FSR09fUkVHSVNURVJfRkxBR19G QUlMX0VYSVNUOworCisgICAgICAgIGlmICggdW5saWtlbHkoIWd1ZXN0X2hhbmRsZV9va2F5KHJp bmdfaG5kLCAxKSkgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICggdW5saWtlbHko YXJnMyA+IChYRU5fQVJHT19NQVhfUklOR19TSVpFID4+IFBBR0VfU0hJRlQpKSApCisgICAgICAg IHsKKyAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg ICB9CisgICAgICAgIGlmICggdW5saWtlbHkoIWd1ZXN0X2hhbmRsZV9va2F5KHBnX2Rlc2NyX2hu ZCwgYXJnMykpICkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvKiBhcmc0OiByZXNlcnZl IGN1cnJlbnRseS11bmRlZmluZWQgYml0cywgcmVxdWlyZSB6ZXJvLiAgKi8KKyAgICAgICAgaWYg KCB1bmxpa2VseShhcmc0ICYgflhFTl9BUkdPX1JFR0lTVEVSX0ZMQUdfTUFTSykgKQorICAgICAg ICB7CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgfQorCisgICAgICAgIHJjID0gYXJnb19yZWdpc3Rlcl9yaW5nKGN1cnJkLCByaW5nX2huZCwg cGdfZGVzY3JfaG5kLCBhcmczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWls X2V4aXN0KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAg cmMgPSAtRU9QTk9UU1VQUDsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9hc20tYXJtL2d1ZXN0X2FjY2Vzcy5oIGIveGVuL2luY2x1ZGUvYXNtLWFybS9ndWVzdF9hY2Nl c3MuaAppbmRleCA3MjlmNzFlLi41NDU2ZDgxIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20t YXJtL2d1ZXN0X2FjY2Vzcy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ3Vlc3RfYWNjZXNz LmgKQEAgLTI5LDYgKzI5LDggQEAgaW50IGFjY2Vzc19ndWVzdF9tZW1vcnlfYnlfaXBhKHN0cnVj dCBkb21haW4gKmQsIHBhZGRyX3QgaXBhLCB2b2lkICpidWYsCiAvKiBJcyB0aGUgZ3Vlc3QgaGFu ZGxlIGEgTlVMTCByZWZlcmVuY2U/ICovCiAjZGVmaW5lIGd1ZXN0X2hhbmRsZV9pc19udWxsKGhu ZCkgICAgICAgICgoaG5kKS5wID09IE5VTEwpCiAKKyNkZWZpbmUgZ3Vlc3RfaGFuZGxlX2lzX2Fs aWduZWQoaG5kLCBtYXNrKSAoISgodWludHB0cl90KShobmQpLnAgJiAobWFzaykpKQorCiAvKiBP ZmZzZXQgdGhlIGdpdmVuIGd1ZXN0IGhhbmRsZSBpbnRvIHRoZSBhcnJheSBpdCByZWZlcnMgdG8u ICovCiAjZGVmaW5lIGd1ZXN0X2hhbmRsZV9hZGRfb2Zmc2V0KGhuZCwgbnIpICgoaG5kKS5wICs9 IChucikpCiAjZGVmaW5lIGd1ZXN0X2hhbmRsZV9zdWJ0cmFjdF9vZmZzZXQoaG5kLCBucikgKCho bmQpLnAgLT0gKG5yKSkKQEAgLTExMiw2ICsxMTQsMTEgQEAgaW50IGFjY2Vzc19ndWVzdF9tZW1v cnlfYnlfaXBhKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3QgaXBhLCB2b2lkICpidWYsCiAgICAg cmF3X2NvcHlfdG9fZ3Vlc3QoX2QsIF9zLCBzaXplb2YoKl9zKSk7ICAgICAgICAgICAgIFwKIH0p CiAKKy8qIEVycm5vLXJldHVybmluZyB2YXJpYW50IG9mIGNvcHlfZmllbGRfdG9fZ3Vlc3QgKi8K KyNkZWZpbmUgY29weV9maWVsZF90b19ndWVzdF9lcnJubyhobmQsIHB0ciwgZmllbGQpICAgICAg XAorICAgIChjb3B5X2ZpZWxkX3RvX2d1ZXN0KChobmQpLCAocHRyKSwgZmllbGQpID8gICAgICAg ICBcCisgICAgICAgIC1FRkFVTFQgOiAwKQorCiAvKiBDb3B5IHN1Yi1maWVsZCBvZiBhIHN0cnVj dHVyZSBmcm9tIGd1ZXN0IGNvbnRleHQgdmlhIGEgZ3Vlc3QgaGFuZGxlLiAqLwogI2RlZmluZSBj b3B5X2ZpZWxkX2Zyb21fZ3Vlc3QocHRyLCBobmQsIGZpZWxkKSAoeyAgICAgICBcCiAgICAgY29u c3QgdHlwZW9mKCYocHRyKS0+ZmllbGQpIF9zID0gJihobmQpLnAtPmZpZWxkOyAgIFwKQEAgLTE1 MSw2ICsxNTgsMTEgQEAgaW50IGFjY2Vzc19ndWVzdF9tZW1vcnlfYnlfaXBhKHN0cnVjdCBkb21h aW4gKmQsIHBhZGRyX3QgaXBhLCB2b2lkICpidWYsCiAgICAgX19yYXdfY29weV90b19ndWVzdChf ZCwgX3MsIHNpemVvZigqX3MpKTsgICAgICAgICAgIFwKIH0pCiAKKy8qIEVycm5vLXJldHVybmlu ZyB2YXJpYW50IG9mIF9fY29weV9maWVsZF90b19ndWVzdCAqLworI2RlZmluZSBfX2NvcHlfZmll bGRfdG9fZ3Vlc3RfZXJybm8oaG5kLCBwdHIsIGZpZWxkKSAgICBcCisgICAgKF9fY29weV9maWVs ZF90b19ndWVzdCgoaG5kKSwgKHB0ciksIGZpZWxkKSA/ICAgICAgIFwKKyAgICAgICAgLUVGQVVM VCA6IDApCisKICNkZWZpbmUgX19jb3B5X2ZpZWxkX2Zyb21fZ3Vlc3QocHRyLCBobmQsIGZpZWxk KSAoeyAgICAgXAogICAgIGNvbnN0IHR5cGVvZigmKHB0ciktPmZpZWxkKSBfcyA9ICYoaG5kKS5w LT5maWVsZDsgICBcCiAgICAgdHlwZW9mKCYocHRyKS0+ZmllbGQpIF9kID0gJihwdHIpLT5maWVs ZDsgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfYWNj ZXNzLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X2FjY2Vzcy5oCmluZGV4IDkzOTk0ODAu LjkxNzYxNTAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfYWNjZXNzLmgK KysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9hY2Nlc3MuaApAQCAtNDEsNiArNDEsOCBA QAogLyogSXMgdGhlIGd1ZXN0IGhhbmRsZSBhIE5VTEwgcmVmZXJlbmNlPyAqLwogI2RlZmluZSBn dWVzdF9oYW5kbGVfaXNfbnVsbChobmQpICAgICAgICAoKGhuZCkucCA9PSBOVUxMKQogCisjZGVm aW5lIGd1ZXN0X2hhbmRsZV9pc19hbGlnbmVkKGhuZCwgbWFzaykgKCEoKHVpbnRwdHJfdCkoaG5k KS5wICYgKG1hc2spKSkKKwogLyogT2Zmc2V0IHRoZSBnaXZlbiBndWVzdCBoYW5kbGUgaW50byB0 aGUgYXJyYXkgaXQgcmVmZXJzIHRvLiAqLwogI2RlZmluZSBndWVzdF9oYW5kbGVfYWRkX29mZnNl dChobmQsIG5yKSAoKGhuZCkucCArPSAobnIpKQogI2RlZmluZSBndWVzdF9oYW5kbGVfc3VidHJh Y3Rfb2Zmc2V0KGhuZCwgbnIpICgoaG5kKS5wIC09IChucikpCkBAIC0xMTcsNiArMTE5LDExIEBA CiAgICAgcmF3X2NvcHlfdG9fZ3Vlc3QoX2QsIF9zLCBzaXplb2YoKl9zKSk7ICAgICAgICAgICAg IFwKIH0pCiAKKy8qIEVycm5vLXJldHVybmluZyB2YXJpYW50IG9mIGNvcHlfZmllbGRfdG9fZ3Vl c3QgKi8KKyNkZWZpbmUgY29weV9maWVsZF90b19ndWVzdF9lcnJubyhobmQsIHB0ciwgZmllbGQp ICAgICAgXAorICAgIChjb3B5X2ZpZWxkX3RvX2d1ZXN0KChobmQpLCAocHRyKSwgZmllbGQpID8g ICAgICAgICBcCisgICAgICAgIC1FRkFVTFQgOiAwKQorCiAvKiBDb3B5IHN1Yi1maWVsZCBvZiBh IHN0cnVjdHVyZSBmcm9tIGd1ZXN0IGNvbnRleHQgdmlhIGEgZ3Vlc3QgaGFuZGxlLiAqLwogI2Rl ZmluZSBjb3B5X2ZpZWxkX2Zyb21fZ3Vlc3QocHRyLCBobmQsIGZpZWxkKSAoeyAgICAgICBcCiAg ICAgY29uc3QgdHlwZW9mKCYocHRyKS0+ZmllbGQpIF9zID0gJihobmQpLnAtPmZpZWxkOyAgIFwK QEAgLTE2Miw2ICsxNjksMTEgQEAKICAgICBfX3Jhd19jb3B5X3RvX2d1ZXN0KF9kLCBfcywgc2l6 ZW9mKCpfcykpOyAgICAgICAgICAgXAogfSkKIAorLyogRXJybm8tcmV0dXJuaW5nIHZhcmlhbnQg b2YgX19jb3B5X2ZpZWxkX3RvX2d1ZXN0ICovCisjZGVmaW5lIF9fY29weV9maWVsZF90b19ndWVz dF9lcnJubyhobmQsIHB0ciwgZmllbGQpICAgIFwKKyAgICAoX19jb3B5X2ZpZWxkX3RvX2d1ZXN0 KChobmQpLCAocHRyKSwgZmllbGQpID8gICAgICAgXAorICAgICAgICAtRUZBVUxUIDogMCkKKwog I2RlZmluZSBfX2NvcHlfZmllbGRfZnJvbV9ndWVzdChwdHIsIGhuZCwgZmllbGQpICh7ICAgICBc CiAgICAgY29uc3QgdHlwZW9mKCYocHRyKS0+ZmllbGQpIF9zID0gJihobmQpLnAtPmZpZWxkOyAg IFwKICAgICB0eXBlb2YoJihwdHIpLT5maWVsZCkgX2QgPSAmKHB0ciktPmZpZWxkOyAgICAgICAg ICAgXApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaCBiL3hlbi9pbmNsdWRl L3B1YmxpYy9hcmdvLmgKaW5kZXggYTMyZmIyZC4uZTczZmFlYSAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUvcHVibGljL2FyZ28uaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oCkBAIC0z MSw2ICszMSwyNyBAQAogCiAjaW5jbHVkZSAieGVuLmgiCiAKKyNkZWZpbmUgWEVOX0FSR09fUklO R19NQUdJQyAgICAgIDB4YmQ2N2UxNjNlNzc3N2YyZlVMTAorI2RlZmluZSBYRU5fQVJHT19ET01J RF9BTlkgICAgICAgRE9NSURfSU5WQUxJRAorCisvKgorICogVGhlIG1heGltdW0gc2l6ZSBvZiBh biBBcmdvIHJpbmcgaXMgZGVmaW5lZCB0byBiZTogMTZHQgorICogIC0tIHdoaWNoIGlzIDB4MTAw MDAwMCBieXRlcy4KKyAqIEEgYnl0ZSBpbmRleCBpbnRvIHRoZSByaW5nIGlzIGF0IG1vc3QgMjQg Yml0cy4KKyAqLworI2RlZmluZSBYRU5fQVJHT19NQVhfUklOR19TSVpFICAoMHgxMDAwMDAwVUxM KQorCisvKgorICogUGFnZSBkZXNjcmlwdG9yOiBlbmNvZGluZyBib3RoIHBhZ2UgYWRkcmVzcyBh bmQgc2l6ZSBpbiBhIDY0LWJpdCB2YWx1ZS4KKyAqIEludGVuZGVkIHRvIGFsbG93IEFCSSB0byBz dXBwb3J0IHVzZSBvZiBkaWZmZXJlbnQgZ3JhbnVsYXJpdHkgcGFnZXMuCisgKiBleGFtcGxlIG9m IGhvdyB0byBwb3B1bGF0ZToKKyAqIHhlbl9hcmdvX3BhZ2VfZGVzY3JfdCBwZ19kZXNjID0KKyAq ICAgICAgKHBoeXNhZGRyICYgUEFHRV9NQVNLKSB8IFhFTl9BUkdPX1BBR0VfREVTQ1JfU0laRV80 SzsKKyAqLwordHlwZWRlZiB1aW50NjRfdCB4ZW5fYXJnb19wYWdlX2Rlc2NyX3Q7CisjZGVmaW5l IFhFTl9BUkdPX1BBR0VfREVTQ1JfU0laRV9NQVNLICAgMHgwMDAwMDAwMDAwMDAwZmZmVUxMCisj ZGVmaW5lIFhFTl9BUkdPX1BBR0VfREVTQ1JfU0laRV80SyAgICAgMAorCiB0eXBlZGVmIHN0cnVj dCB4ZW5fYXJnb19hZGRyCiB7CiAgICAgdWludDMyX3QgcG9ydDsKQEAgLTY3LDQgKzg4LDU0IEBA IHR5cGVkZWYgc3RydWN0IHhlbl9hcmdvX3JpbmcKICNlbmRpZgogfSB4ZW5fYXJnb19yaW5nX3Q7 CiAKKy8qCisgKiBNZXNzYWdlcyBvbiB0aGUgcmluZyBhcmUgcGFkZGVkIHRvIDEyOCBiaXRzCisg KiBMZW4gaGVyZSByZWZlcnMgdG8gdGhlIGV4YWN0IGxlbmd0aCBvZiB0aGUgZGF0YSBub3QgaW5j bHVkaW5nIHRoZQorICogMTI4IGJpdCBoZWFkZXIuIFRoZSBtZXNzYWdlIHVzZXMKKyAqICgobGVu ICsgMHhmKSAmIH4weGYpICsgc2l6ZW9mKGFyZ29fcmluZ19tZXNzYWdlX2hlYWRlcikgYnl0ZXMu CisgKiBVc2luZyB0eXBlb2YoYSkgbWFrZSBjbGVhciB0aGF0IHRoaXMgZG9lcyBub3QgdHJ1bmNh dGUgYW55IGhpZ2gtb3JkZXIgYml0cy4KKyAqLworI2RlZmluZSBYRU5fQVJHT19ST1VORFVQKGEp ICgoKGEpICsgMHhmKSAmIH4odHlwZW9mKGEpKTB4ZikKKworc3RydWN0IHhlbl9hcmdvX3Jpbmdf bWVzc2FnZV9oZWFkZXIKK3sKKyAgICB1aW50MzJfdCBsZW47CisgICAgeGVuX2FyZ29fYWRkcl90 IHNvdXJjZTsKKyAgICB1aW50MzJfdCBtZXNzYWdlX3R5cGU7CisjaWYgZGVmaW5lZChfX1NURENf VkVSU0lPTl9fKSAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwKKyAgICB1aW50OF90IGRh dGFbXTsKKyNlbGlmIGRlZmluZWQoX19HTlVDX18pCisgICAgdWludDhfdCBkYXRhWzBdOworI2Vu ZGlmCit9OworCisvKgorICogSHlwZXJjYWxsIG9wZXJhdGlvbnMKKyAqLworCisvKgorICogWEVO X0FSR09fTUVTU0FHRV9PUF9yZWdpc3Rlcl9yaW5nCisgKgorICogUmVnaXN0ZXIgYSByaW5nIHVz aW5nIHRoZSBpbmRpY2F0ZWQgbWVtb3J5LgorICogQWxzbyB1c2VkIHRvIHJlcmVnaXN0ZXIgYW4g ZXhpc3RpbmcgcmluZyAoZWcuIGFmdGVyIHJlc3VtZSBmcm9tIHNsZWVwKS4KKyAqCisgKiBhcmcx OiBYRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3JpbmdfdCkKKyAqIGFyZzI6IFhFTl9HVUVTVF9I QU5ETEUoeGVuX2FyZ29fcGFnZV9kZXNjcl90KQorICogYXJnMzogdW5zaWduZWQgbG9uZyBucGFn ZXMKKyAqIGFyZzQ6IHVuc2lnbmVkIGxvbmcgZmxhZ3MKKyAqLworI2RlZmluZSBYRU5fQVJHT19N RVNTQUdFX09QX3JlZ2lzdGVyX3JpbmcgICAgIDEKKworLyogUmVnaXN0ZXIgb3AgZmxhZ3MgKi8K Ky8qCisgKiBGYWlsIGV4aXN0OgorICogSWYgc2V0LCByZWplY3QgYXR0ZW1wdHMgdG8gKHJlKXJl Z2lzdGVyIGFuIGV4aXN0aW5nIGVzdGFibGlzaGVkIHJpbmcuCisgKiBJZiBjbGVhciwgcmVyZWdp c3RyYXRpb24gb2NjdXJzIGlmIHRoZSByaW5nIGV4aXN0cywgd2l0aCB0aGUgbmV3IHJpbmcKKyAq IHRha2luZyB0aGUgcGxhY2Ugb2YgdGhlIG9sZCwgcHJlc2VydmluZyB0eF9wdHIgaWYgaXQgcmVt YWlucyB2YWxpZC4KKyAqLworI2RlZmluZSBYRU5fQVJHT19SRUdJU1RFUl9GTEFHX0ZBSUxfRVhJ U1QgIDB4MQorCisvKiBNYXNrIGZvciBhbGwgZGVmaW5lZCBmbGFncy4gdW5zaWduZWQgbG9uZyB0 eXBlIHNvIG9rIGZvciBib3RoIDMyLzY0LWJpdCAqLworI2RlZmluZSBYRU5fQVJHT19SRUdJU1RF Ul9GTEFHX01BU0sgMHgxVUwKKwogI2VuZGlmCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcv bWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=