From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v3 07/15] argo: implement the register op Date: Sun, 6 Jan 2019 23:42:40 -0800 Message-ID: <1546846968-7372-8-git-send-email-christopher.w.clark@gmail.com> References: <1546846968-7372-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 1ggPZB-0004k5-KI for xen-devel@lists.xenproject.org; Mon, 07 Jan 2019 07:43:21 +0000 Received: by mail-pg1-x542.google.com with SMTP id n2so20383687pgm.3 for ; Sun, 06 Jan 2019 23:43:18 -0800 (PST) In-Reply-To: <1546846968-7372-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 VGhlIHJlZ2lzdGVyIG9wIGlzIHVzZWQgYnkgYSBkb21haW4gdG8gcmVnaXN0ZXIgYSByZWdpb24g b2YgbWVtb3J5IGZvcgpyZWNlaXZpbmcgbWVzc2FnZXMgZnJvbSBlaXRoZXIgYSBzcGVjaWZpZWQg b3RoZXIgZG9tYWluLCBvciwgaWYgc3BlY2lmeWluZyBhCndpbGRjYXJkLCBhbnkgZG9tYWluLgoK VGhpcyBvcGVyYXRpb24gY3JlYXRlcyBhIG1hcHBpbmcgd2l0aGluIFhlbidzIHByaXZhdGUgYWRk cmVzcyBzcGFjZSB0aGF0CndpbGwgcmVtYWluIHJlc2lkZW50IGZvciB0aGUgbGlmZXRpbWUgb2Yg dGhlIHJpbmcuIEluIHN1YnNlcXVlbnQgY29tbWl0cywKdGhlIGh5cGVydmlzb3Igd2lsbCB1c2Ug dGhpcyBtYXBwaW5nIHRvIGNvcHkgZGF0YSBmcm9tIGEgc2VuZGluZyBkb21haW4gaW50bwp0aGlz IHJlZ2lzdGVyZWQgcmluZywgbWFraW5nIGl0IGFjY2Vzc2libGUgdG8gdGhlIGRvbWFpbiB0aGF0 IHJlZ2lzdGVyZWQgdGhlCnJpbmcgdG8gcmVjZWl2ZSBkYXRhLgoKV2lsZGNhcmQgYW55LXNlbmRl ciByaW5ncyBhcmUgZGVmYXVsdCBkaXNhYmxlZCBhbmQgcmVnaXN0cmF0aW9uIHdpbGwgYmUKcmVm dXNlZCB3aXRoIEVQRVJNIHVubGVzcyB0aGV5IGhhdmUgYmVlbiBzcGVjaWZpY2FsbHkgZW5hYmxl ZCB3aXRoIHRoZQphcmdvLW1hYyBib290IG9wdGlvbiBpbnRyb2R1Y2VkIGhlcmUuIFRoZSByZWFz b24gd2h5IHRoZSBkZWZhdWx0IGZvcgp3aWxkY2FyZCByaW5ncyBpcyAnZGVueScgaXMgdGhhdCB0 aGVyZSBpcyBjdXJyZW50bHkgbm8gbWVhbnMgdG8gcHJvdGVjdCB0aGUKcmluZyBmcm9tIERvUyBi eSBhIG5vaXN5IGRvbWFpbiBzcGFtbWluZyB0aGUgcmluZywgYWZmZWN0aW5nIG90aGVyIGRvbWFp bnMKYWJpbGl0eSB0byBzZW5kIHRvIGl0LiBUaGlzIHdpbGwgYmUgYWRkcmVzc2VkIHdpdGggWFNN IHBvbGljeSBjb250cm9scyBpbgpzdWJzZXF1ZW50IHdvcmsuCgpTaW5jZSBkZW55aW5nIGFjY2Vz cyB0byBhbnktc2VuZGVyIHJpbmdzIGlzIGEgc2lnbmlmaWNhbnQgZnVuY3Rpb25hbApjb25zdHJh aW50LCBhIG5ldyBib290cGFyYW0gaXMgcHJvdmlkZWQgdG8gZW5hYmxlIG92ZXJyaWRpbmcgdGhp czoKICJhcmdvLW1hYyIgdmFyaWFibGUgaGFzIGFsbG93ZWQgdmFsdWVzOiAncGVybWlzc2l2ZScg YW5kICdlbmZvcmNpbmcnLgpFdmVuIHRob3VnaCB0aGlzIGlzIGEgYm9vbGVhbiB2YXJpYWJsZSwg dXNlIHRoZXNlIGRlc2NyaXB0aXZlIHN0cmluZ3MgaW4Kb3JkZXIgdG8gbWFrZSBpdCBvYnZpb3Vz IHRvIGFuIGFkbWluaXN0cmF0b3IgdGhhdCB0aGlzIGhhcyBwb3RlbnRpYWwKc2VjdXJpdHkgaW1w YWN0LgoKVGhlIHAybSB0eXBlIG9mIHRoZSBtZW1vcnkgc3VwcGxpZWQgYnkgdGhlIGd1ZXN0IGZv ciB0aGUgcmluZyBtdXN0IGJlCnAybV9yYW1fcncgYW5kIHRoZSBtZW1vcnkgd2lsbCBiZSBwaW5u ZWQgYXMgUEdUX3dyaXRhYmxlX3BhZ2Ugd2hpbGUgdGhlIHJpbmcKaXMgcmVnaXN0ZXJlZC4KCnhl bl9hcmdvX3BhZ2VfZGVzY3JfdCB0eXBlIGlzIGludHJvZHVjZWQgYXMgYSBwYWdlIGRlc2NyaXB0 b3IsIHRvIGNvbnZleQpib3RoIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBzdGFydCBvZiB0 aGUgcGFnZSBhbmQgaXRzIGdyYW51bGFyaXR5LiBUaGUKc21hbGxlc3QgZ3JhbnVsYXJpdHkgcGFn ZSBpcyBhc3N1bWVkIHRvIGJlIDQwOTYgYnl0ZXMgYW5kIHRoZSBsb3dlciB0d2VsdmUKYml0cyBv ZiB0aGUgdHlwZSBhcmUgdXNlZCB0byBpbmRpY2F0ZSB0aGUgc2l6ZSBvZiBwYWdlIG9mIG1lbW9y eSBzdXBwbGllZC4KVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBoeXBlcmNhbGwgb3AgY3VycmVu dGx5IG9ubHkgc3VwcG9ydHMgNEsgcGFnZXMuCgphcnJheV9pbmRleF9ub3NwZWMgaXMgdXNlZCB0 byBndWFyZCB0aGUgcmVzdWx0IG9mIHRoZSByaW5nIGlkIGhhc2ggZnVuY3Rpb24uClRoaXMgaXMg b3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBzaW5jZSB0aGlzIGlzIGEgdmVyeSBiYXNp YyBoYXNoCmZ1bmN0aW9uIGFuZCBpdCBvcGVyYXRlcyB1cG9uIHZhbHVlcyBzdXBwbGllZCBieSB0 aGUgZ3Vlc3QganVzdCBiZWZvcmUKYmVpbmcgdXNlZCBhcyBhbiBhcnJheSBpbmRleC4KClNpZ25l ZC1vZmYtYnk6IENocmlzdG9waGVyIENsYXJrIDxjaHJpc3RvcGhlci5jbGFyazZAYmFlc3lzdGVt cy5jb20+Ci0tLQp2MiBzZWxmOiBkaXNhbGxvdyByaW5nIHJlc2l6ZSB2aWEgcmVyZWdpc3Rlcgp2 MiBmZWVkYmFjayBKYW46IGRyb3AgY29va2llLCBpbXBsZW1lbnQgdGVhcmRvd24KdjIgZmVlZGJh Y2sgSmFuOiBkcm9wIG1lc3NhZ2UgZnJvbSBhcmdvX21lc3NhZ2Vfb3AKdjIgc2VsZjogbW92ZSBo YXNoX2luZGV4IGZ1bmN0aW9uIGJlbG93IGxvY2tpbmcgY29tbWVudAp2MiBzZWxmOiBPVkVSSEFV TAp2MiBzZWxmL0phbjogcmVtb3ZlIHVzZSBvZiBtYWdpYyB2ZXJpZmljYXRpb24gZmllbGQgYW5k IHRpZHkgdXAKdjIgc2VsZjogbWVyZ2UgbWF4IGFuZCBtaW4gcmluZyBzaXplIGNoZWNrIGNsYXVz ZXMKdjIgZmVlZGJhY2sgdjEjMTMgUm9nZXI6IHVzZSBPUy1zdXBwbGllZCByb3VuZHVwOyBkcm9w IGZyb20gcHVibGljIGhlYWRlcgp2MiBmZWVkYmFjayAjOSwgSmFuOiB1c2UgdGhlIGFyZ28tbWFj IGJvb3RwYXJhbSBhdCBwb2ludCBvZiBpbnRyb2R1Y3Rpb24KdjIgZmVlZGJhY2sgIzksIEphbjog cmVuYW1lIGJvb3Qgb3B0IHZhcmlhYmxlIHRvIGNvbXBseSB3aXRoIGNvbnZlbnRpb24KdjIgZmVl ZGJhY2sgIzksIEphbjogcmVuYW1lIHRoZSBhcmdvX21hYyBib290cGFyYW0gdG8gYXJnby1tYWMK djIgZmVlZGJhY2sgIzkgSmFuOiBkb2N1bWVudCBhcmdvIGJvb3Qgb3B0IGluIHhlbi1jb21tYW5k LWxpbmUubWFya2Rvd24KdjEsMiBmZWVkYmFjayBKYW4vUm9nZXIvUGF1bDogZHJvcCBlcnJubyBy ZXR1cm5pbmcgZ3Vlc3QgYWNjZXNzIGZ1bmN0aW9ucwp2MSBmZWVkYmFjayBSb2dlciwgSmFuOiBk cm9wIGFyZ28gcHJlZml4IG9uIHN0YXRpYyBmdW5jdGlvbnMKdjEgZmVlZGJhY2sgUm9nZXI6IHMv cGZuL2dmbi8gYW5kIHJldGlyZSBhbHdheXMtNjQtYml0IHR5cGUKdjIuIGZlZWRiYWNrIEphbjog ZG9jdW1lbnQgdGhlIGFyZ28tbWFjIGJvb3Qgb3B0CnYyLiBmZWVkYmFjayBKYW46IHNpbXBsaWZ5 IHJlLXJlZ2lzdGVyLCBkcm9wIG1hcHBpbmdzCnYxICMxMyBmZWVkYmFjayBKYW46IHJldmlzZSB1 c2Ugb2YgZ3Vlc3RfaGFuZGxlX29rYXkgdnMgX19jb3B5IG9wcwoKdjEgIzEzIGZlZWRiYWNrLCBK YW46IHJlZ2lzdGVyIG9wIDogcy9FQ09OTlJFRlVTRUQvRVNSQ0gvCnYxICM1ICgjMTMpIGZlZWRi YWNrIFBhdWw6IHJlZ2lzdGVyIG9wOiB1c2UgY3VycmQgaW4gZG9fbWVzc2FnZV9vcAp2MSAjMTMg ZmVlZGJhY2ssIFBhdWw6IHJlZ2lzdGVyIG9wOiB1c2UgbWZuX2VxIGNvbXBhcmF0b3IKdjEgIzUg KCMxMykgZmVlZGJhY2sgUGF1bDogcmVnaXN0ZXIgb3A6IHVzZSBjdXJyZCBpbiBhcmdvX3JlZ2lz dGVyX3JpbmcKdjEgIzEzIGZlZWRiYWNrIFBhdWw6IHJlZ2lzdGVyIG9wOiB3aGl0ZXNwYWNlLCB1 bnNpZ25lZCwgYm91bmRzIGNoZWNrCnYxICMxMyBmZWVkYmFjayBQYXVsOiB1c2Ugb2YgaGV4IGlu IGxpbWl0IGNvbnN0YW50IGRlZmluaXRpb24KdjEgIzEzIGZlZWRiYWNrIFBhdWwsIHJlZ2lzdGVy IG9wOiBzZXQgbm1mbnMgb24gbG9vcCB0ZXJtaW5hdGlvbgp2MSAjMTMgZmVlZGJhY2sgUGF1bDog cmVnaXN0ZXIgb3A6IGRvL3doaWxlIC0+IGdvdG9zLCByZWluZGVudAp2MSBhcmdvX3JpbmdfbWFw X3BhZ2U6IGRyb3AgdWludDMyX3QgZm9yIHVuc2lnbmVkIGludAp2MS4gIzEzIGZlZWRiYWNrIEp1 bGllbjogdXNlIHBhZ2UgZGVzY3JpcHRvcnMgaW5zdGVhZCBvZiBncGZucy4KICAgLSBhZGRzIEFC SSBzdXBwb3J0IGZvciBwYWdlcyB3aXRoIGRpZmZlcmVudCBncmFudWxhcml0eS4KdjEgZmVlZGJh Y2sgIzEzLCBQYXVsOiBhZGp1c3QgbG9nIGxldmVsIG9mIG1lc3NhZ2UKdjEgZmVlZGJhY2sgIzEz LCBQYXVsOiB1c2UgZ3ByaW50ayBmb3IgZ3Vlc3QtdHJpZ2dlcmVkIHdhcm5pbmcKdjEgZmVlZGJh Y2sgIzEzLCBQYXVsOiBncHJpbnRrIGFuZCBYRU5MT0dfREVCVUcgZm9yIHJpbmcgcmVnaXN0cmF0 aW9uCnYxIGZlZWRiYWNrICMxMywgUGF1bDogdXNlIGdwcmludGsgZm9yIGVycnMgaW4gYXJnb19y aW5nX21hcF9wYWdlCnYxIGZlZWRiYWNrICMxMywgUGF1bDogdXNlIEVOT01FTSBpZiBnbG9iYWwg bWFwcGluZyBmYWlscwp2MSBmZWVkYmFjayBQYXVsOiBvdmVyZmxvdyBjaGVjayBiZWZvcmUgc2hp ZnQKdjE6IGFkZCBkZWZpbmUgZm9yIGNvcHlfZmllbGRfdG9fZ3Vlc3RfZXJybm8KdjE6IGZpeCBn cHJpbnRrIHVzZSBmb3IgQVJNIGFzIGl0cyBkZWZuIGRpc2xpa2VzIHNwbGl0IGZvcm1hdCBzdHJp bmdzCnYxOiB1c2UgY29weV9maWVsZF90b19ndWVzdF9lcnJubwp2MSBmZWVkYmFjayAjMTMsIEph bjogYXJnb19oYXNoX2ZuOiBubyBpbmxpbmUsIHJlbmFtZSwgY2hhbmdlIHR5cGUKdjEgZmVlZGJh Y2sgIzEzLCBQYXVsLCBKYW46IEVGQVVMVCAtPiBFTk9NRU0gaW4gYXJnb19yaW5nX21hcF9wYWdl CnYxIGZlZWRiYWNrICMxMywgSmFuOiByZW5hbWUgcGFnZSB2YXIgaW4gYXJnb19yaW5nX21hcF9w YWdlCnYxIGZlZWRiYWNrICMxMywgSmFuOiBzd2l0Y2ggdWludDhfdCogdG8gdm9pZCogYW5kIGRy b3AgY2FzdAp2MSBmZWVkYmFjayAjMTMsIEphbjogc3dpdGNoIG1lbW9yeSBiYXJyaWVyIHRvIHNt cF93bWIKdjEgZmVlZGJhY2sgIzEzLCBKYW46IG1ha2UgJ3JpbmcnIGNvbW1lbnQgY29tcGx5IHdp dGggc2luZ2xlLWxpbmUgc3R5bGUKdjEgZmVlZGJhY2sgIzEzLCBKYW46IHVzZSB4emFsbG9jX2Fy cmF5LCBkcm9wIGxvb3AgTlVMTCBpbml0CnYxIGZlZWRiYWNrICMxMywgSmFuOiBpbml0IGJvb2wg d2l0aCBmYWxzZSByYXRoZXIgdGhhbiAwCnYxIGZlZWRiYWNrICMxMyBKYW46IHVzZSBfX2NvcHk7 IGRlZmluZSBhbmQgdXNlIF9fY29weV9maWVsZF90b19ndWVzdF9lcnJubwp2MSBmZWVkYmFjayAj MTMsIEphbjogdXNlIHh6YWxsb2MsIGRyb3AgaW5kaXZpZHVhbCBpbml0IHplcm9lcwp2MSBmZWVk YmFjayAjMTMsIEphbjogcHJlZml4IHB1YmxpYyBuYW1lc3BhY2Ugd2l0aCB4ZW4KdjEgZmVlZGJh Y2sgIzEzLCBKYW46IGJsYW5rIGxpbmUgYWZ0ZXIgb3AgY2FzZSBpbiBkb19hcmdvX21lc3NhZ2Vf b3AKdjEgc2VsZjogcmVmbG93IGNvbW1lbnQgaW4gYXJnb19yaW5nX21hcF9wYWdlIHRvIHdpdGhp biA4MCBjaGFyIGxlbgp2MSBmZWVkYmFjayAjMTMsIFJvZ2VyOiB1c2UgdHJ1ZSBub3QgMSBpbiBh c3NpZ24gdG8gdXBkYXRlX3R4X3B0ciBib29sCnYxIGZlZWRiYWNrICMyMSwgSmFuOiBmb2xkIGlu IHRoZSBhcnJheV9pbmRleF9ub3NwZWMgaGFzaCBmdW5jdGlvbiBndWFyZHMKdjEgZmVlZGJhY2sg IzE4LCBKYW46IGZvbGQgdGhlIG1heCByaW5nIGNvdW50IGxpbWl0IGludG8gdGhlIHNlcmllcwp2 MSBzZWxmOiB1c2UgdW5zaWduZWQgbG9uZyB0eXBlIGZvciBYRU5fQVJHT19SRUdJU1RFUl9GTEFH X01BU0sKdjE6IGZlZWRiYWNrICMxNSBKYW46IGhhbmRsZSB1cHBlci1oYWx2ZXMgb2YgaHlwZXJj YWxsIGFyZ3MKdjEuIGZlZWRiYWNrICMxMyBKYW46IGFkZCBjb21tZW50IHJlOiBwYWdlIGFsaWdu bWVudAp2MS4gc2VsZjogY29uZmlybSByaW5nIG1hZ2ljIHByZXNlbmNlIGluIHN1cHBsaWVkIHBh Z2UgYXJyYXkKdjEuIGZlZWRiYWNrICMxMyBKYW46IGFkZCBjb21tZW50IHJlOiBtaW5pbXVtIHJp bmcgc2l6ZQp2MS4gZmVlZGJhY2sgIzEzIFJvZ2VyOiB1c2UgQVNTRVJUX1VOUkVBQ0hBQkxFCnYx LiBmZWVkYmFjayBSb2dlcjogYWRkIGNvbW1lbnQgdG8gaGFzaCBmdW5jdGlvbgoKIGRvY3MvbWlz Yy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYyAgfCAgMTUgKwogeGVuL2NvbW1vbi9hcmdvLmMgICAg ICAgICAgICAgICAgICB8IDU2NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiB4ZW4vaW5jbHVkZS9hc20tYXJtL2d1ZXN0X2FjY2Vzcy5oIHwgICAyICsKIHhlbi9pbmNsdWRl L2FzbS14ODYvZ3Vlc3RfYWNjZXNzLmggfCAgIDIgKwogeGVuL2luY2x1ZGUvcHVibGljL2FyZ28u aCAgICAgICAgICB8ICA3MiArKysrKwogeGVuL2luY2x1ZGUveGxhdC5sc3QgICAgICAgICAgICAg ICB8ICAgMSArCiA2IGZpbGVzIGNoYW5nZWQsIDY1OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUucGFuZG9jIGIvZG9jcy9taXNjL3hlbi1jb21t YW5kLWxpbmUucGFuZG9jCmluZGV4IGFlYTEzZWIuLjY4ZDQ0MTUgMTAwNjQ0Ci0tLSBhL2RvY3Mv bWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYworKysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQt bGluZS5wYW5kb2MKQEAgLTE5Myw2ICsxOTMsMjEgQEAgVGhpcyBhbGxvd3MgZG9tYWlucyBhY2Nl c3MgdG8gdGhlIEFyZ28gaHlwZXJjYWxsLCB3aGljaCBzdXBwb3J0cyByZWdpc3RyYXRpb24KIG9m IG1lbW9yeSByaW5ncyB3aXRoIHRoZSBoeXBlcnZpc29yIHRvIHJlY2VpdmUgbWVzc2FnZXMsIHNl bmRpbmcgbWVzc2FnZXMgdG8KIG90aGVyIGRvbWFpbnMgYnkgaHlwZXJjYWxsIGFuZCBxdWVyeWlu ZyB0aGUgcmluZyBzdGF0dXMgb2Ygb3RoZXIgZG9tYWlucy4KIAorIyMjIGFyZ28tbWFjCis+IGA9 IHBlcm1pc3NpdmUgfCBlbmZvcmNpbmdgCisKKz4gRGVmYXVsdDogYGVuZm9yY2luZ2AKKworQ29u c3RyYWluIHRoZSBhY2Nlc3MgY29udHJvbCBhcHBsaWVkIHRvIHRoZSBBcmdvIGNvbW11bmljYXRp b24gbWVjaGFuaXNtLgorCitXaGVuIGBlbmZvcmNpbmdgLCBkb21haW5zIG1heSBub3QgcmVnaXN0 ZXIgcmluZ3MgdGhhdCBoYXZlIHdpbGRjYXJkIHNwZWNpZmllZAorZm9yIHRoZSBzZW5kZXIgd2hp Y2ggd291bGQgYWxsb3cgbWVzc2FnZXMgdG8gYmUgc2VudCB0byB0aGUgcmluZyBieSBhbnkgZG9t YWluLgorVGhpcyBpcyB0byBwcm90ZWN0IHJpbmdzIGFuZCB0aGUgc2VydmljZXMgdGhhdCB1dGls aXplIHRoZW0gYWdhaW5zdCBEb1MgYnkgYQorbWFsaWNpb3VzIG9yIGJ1Z2d5IGRvbWFpbiBzcGFt bWluZyB0aGUgcmluZy4KKworV2hlbiB0aGUgYm9vdCBvcHRpb24gaXMgc2V0IHRvIGBwZXJtaXNz aXZlYCwgdGhpcyBjb25zdHJhaW50IGlzIHJlbGF4ZWQgYW5kCit3aWxkY2FyZCBhbnktc2VuZGVy IHJpbmdzIGFyZSBhbGxvd2VkIHRvIGJlIHJlZ2lzdGVyZWQuCisKICMjIyBhc2lkICh4ODYpCiA+ IGA9IDxib29sZWFuPmAKIApkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9hcmdvLmMgYi94ZW4vY29t bW9uL2FyZ28uYwppbmRleCA4NjE5NWQzLi4xMTk4OGU3IDEwMDY0NAotLS0gYS94ZW4vY29tbW9u L2FyZ28uYworKysgYi94ZW4vY29tbW9uL2FyZ28uYwpAQCAtMjMsMTYgKzIzLDQxIEBACiAjaW5j bHVkZSA8eGVuL2V2ZW50Lmg+CiAjaW5jbHVkZSA8eGVuL2RvbWFpbl9wYWdlLmg+CiAjaW5jbHVk ZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi9saWIuaD4KKyNpbmNsdWRlIDx4 ZW4vbm9zcGVjLmg+CiAjaW5jbHVkZSA8eGVuL3RpbWUuaD4KICNpbmNsdWRlIDxwdWJsaWMvYXJn by5oPgogCisjZGVmaW5lIE1BWF9SSU5HU19QRVJfRE9NQUlOICAgICAgICAgICAgMTI4VQorCisv KiBBbGwgbWVzc2FnZXMgb24gdGhlIHJpbmcgYXJlIHBhZGRlZCB0byBhIG11bHRpcGxlIG9mIHRo ZSBzbG90IHNpemUuICovCisjZGVmaW5lIFJPVU5EVVBfTUVTU0FHRShhKSAoUk9VTkRVUCgoYSks IFhFTl9BUkdPX01TR19TTE9UX1NJWkUpKQorCiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5f YXJnb19hZGRyX3QpOworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fcGFnZV9kZXNj cl90KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3JlZ2lzdGVyX3JpbmdfdCk7 CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19yaW5nX3QpOwogCiAvKiBYZW4gY29t bWFuZCBsaW5lIG9wdGlvbiB0byBlbmFibGUgYXJnbyAqLwogc3RhdGljIGJvb2wgX19yZWFkX21v c3RseSBvcHRfYXJnb19lbmFibGVkOwogYm9vbGVhbl9wYXJhbSgiYXJnbyIsIG9wdF9hcmdvX2Vu YWJsZWQpOwogCisvKiBYZW4gY29tbWFuZCBsaW5lIG9wdGlvbiBmb3IgY29uc2VydmF0aXZlIG9y IHJlbGF4ZWQgYWNjZXNzIGNvbnRyb2wgKi8KK2Jvb2wgX19yZWFkX21vc3RseSBvcHRfYXJnb19t YWNfZW5mb3JjaW5nID0gdHJ1ZTsKKworc3RhdGljIGludCBfX2luaXQgcGFyc2Vfb3B0X2FyZ29f bWFjKGNvbnN0IGNoYXIgKnMpCit7CisgICAgaWYgKCAhc3RyY21wKHMsICJlbmZvcmNpbmciKSAp CisgICAgICAgIG9wdF9hcmdvX21hY19lbmZvcmNpbmcgPSB0cnVlOworICAgIGVsc2UgaWYgKCAh c3RyY21wKHMsICJwZXJtaXNzaXZlIikgKQorICAgICAgICBvcHRfYXJnb19tYWNfZW5mb3JjaW5n ID0gZmFsc2U7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJldHVy biAwOworfQorY3VzdG9tX3BhcmFtKCJhcmdvLW1hYyIsIHBhcnNlX29wdF9hcmdvX21hYyk7CisK IHR5cGVkZWYgc3RydWN0IGFyZ29fcmluZ19pZAogewogICAgIHVpbnQzMl90IHBvcnQ7CkBAIC0x OTgsNiArMjIzLDMxIEBAIHN0YXRpYyBERUZJTkVfUldMT0NLKGFyZ29fbG9jayk7IC8qIEwxICov CiAjZGVmaW5lIGFyZ29fZHByaW50ayhmb3JtYXQsIC4uLiApICgodm9pZCkwKQogI2VuZGlmCiAK Ky8qCisgKiBUaGlzIGhhc2ggZnVuY3Rpb24gaXMgdXNlZCB0byBkaXN0cmlidXRlIHJpbmdzIHdp dGhpbiB0aGUgcGVyLWRvbWFpbgorICogaGFzaCB0YWJsZXMgKGQtPmFyZ28tPnJpbmdfaGFzaCBh bmQgZC0+YXJnb19zZW5kX2hhc2gpLiBUaGUgaGFzaCB0YWJsZQorICogd2lsbCBwcm92aWRlIGEg c3RydWN0IGlmIGEgbWF0Y2ggaXMgZm91bmQgd2l0aCBhICdhcmdvX3JpbmdfaWQnIGtleToKKyAq IGllLiB0aGUga2V5IGlzIGEgKGRvbWFpbiBpZCwgcG9ydCwgcGFydG5lciBkb21haW4gaWQpIHR1 cGxlLgorICogU2luY2UgcG9ydCBudW1iZXIgdmFyaWVzIHRoZSBtb3N0IGluIGV4cGVjdGVkIHVz ZSwgYW5kIHRoZSBMaW51eCBkcml2ZXIKKyAqIGFsbG9jYXRlcyBhdCBib3RoIHRoZSBoaWdoIGFu ZCBsb3cgZW5kcywgaW5jb3Jwb3JhdGUgaGlnaCBhbmQgbG93IGJpdHMgdG8KKyAqIGhlbHAgd2l0 aCBkaXN0cmlidXRpb24uCisgKiBBcHBseSBhcnJheV9pbmRleF9ub3NwZWMgYXMgYSBkZWZlbnNp dmUgbWVhc3VyZSBzaW5jZSB0aGlzIG9wZXJhdGVzCisgKiBvbiB1c2VyLXN1cHBsaWVkIGlucHV0 IGFuZCB0aGUgYXJyYXkgc2l6ZSB0aGF0IGl0IGluZGV4ZXMgaW50byBpcyBrbm93bi4KKyAqLwor c3RhdGljIHVuc2lnbmVkIGludAoraGFzaF9pbmRleChjb25zdCBzdHJ1Y3QgYXJnb19yaW5nX2lk ICppZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaGFzaDsKKworICAgIGhhc2ggPSAodWludDE2X3Qp KGlkLT5wb3J0ID4+IDE2KTsKKyAgICBoYXNoIF49ICh1aW50MTZfdClpZC0+cG9ydDsKKyAgICBo YXNoIF49IGlkLT5kb21haW5faWQ7CisgICAgaGFzaCBePSBpZC0+cGFydG5lcl9pZDsKKyAgICBo YXNoICY9IChBUkdPX0hUQUJMRV9TSVpFIC0gMSk7CisKKyAgICByZXR1cm4gYXJyYXlfaW5kZXhf bm9zcGVjKGhhc2gsIEFSR09fSFRBQkxFX1NJWkUpOworfQorCiBzdGF0aWMgdm9pZAogcmluZ191 bm1hcChzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKIHsKQEAgLTIxOSw2ICsyNjks NzggQEAgcmluZ191bm1hcChzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKICAgICB9 CiB9CiAKK3N0YXRpYyBpbnQKK3JpbmdfbWFwX3BhZ2Uoc3RydWN0IGFyZ29fcmluZ19pbmZvICpy aW5nX2luZm8sIHVuc2lnbmVkIGludCBpLCB2b2lkICoqb3V0X3B0cikKK3sKKyAgICBpZiAoIGkg Pj0gcmluZ19pbmZvLT5ubWZucyApCisgICAgeworICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIs CisgICAgICAgICAgICAgICAiYXJnbzogcmluZyAodm0ldToleCB2bSVkKSAlcCBhdHRlbXB0ZWQg dG8gbWFwIHBhZ2UgICV1IG9mICV1XG4iLAorICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQu ZG9tYWluX2lkLCByaW5nX2luZm8tPmlkLnBvcnQsCisgICAgICAgICAgICAgICAgcmluZ19pbmZv LT5pZC5wYXJ0bmVyX2lkLCByaW5nX2luZm8sIGksIHJpbmdfaW5mby0+bm1mbnMpOworICAgICAg ICByZXR1cm4gLUVOT01FTTsKKyAgICB9CisKKyAgICBpZiAoICFyaW5nX2luZm8tPm1mbnMgfHwg IXJpbmdfaW5mby0+bWZuX21hcHBpbmcpCisgICAgeworICAgICAgICBBU1NFUlRfVU5SRUFDSEFC TEUoKTsKKyAgICAgICAgcmluZ19pbmZvLT5sZW4gPSAwOworICAgICAgICByZXR1cm4gLUVOT01F TTsKKyAgICB9CisKKyAgICBpZiAoICFyaW5nX2luZm8tPm1mbl9tYXBwaW5nW2ldICkKKyAgICB7 CisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86CisgICAgICAgICAqIFRoZSBmaXJzdCBwYWdl IG9mIHRoZSByaW5nIGNvbnRhaW5zIHRoZSByaW5nIGluZGljZXMsIHNvIGJvdGggcmVhZAorICAg ICAgICAgKiBhbmQgd3JpdGUgYWNjZXNzIHRvIHRoZSBwYWdlIGlzIHJlcXVpcmVkIGJ5IHRoZSBo eXBlcnZpc29yLCBidXQKKyAgICAgICAgICogcmVhZC1hY2Nlc3MgaXMgbm90IG5lZWRlZCBmb3Ig dGhpcyBtYXBwaW5nIGZvciB0aGUgcmVtYWluZGVyIG9mIHRoZQorICAgICAgICAgKiByaW5nLgor ICAgICAgICAgKiBTaW5jZSB0aGlzIG1hcHBpbmcgd2lsbCByZW1haW4gcmVzaWRlbnQgaW4gWGVu J3MgYWRkcmVzcyBzcGFjZSBmb3IKKyAgICAgICAgICogdGhlIGxpZmV0aW1lIG9mIHRoZSByaW5n LCBhbmQgZm9sbG93aW5nIHRoZSBwcmluY2lwbGUgb2YgbGVhc3QKKyAgICAgICAgICogcHJpdmls ZWdlLCBpdCBjb3VsZCBiZSBwcmVmZXJhYmxlIHRvOgorICAgICAgICAgKiAgIyBhZGQgYSBYU00g Y2hlY2sgdG8gZGV0ZXJtaW5lIHdoYXQgcG9saWN5IGlzIHdhbnRlZCBoZXJlCisgICAgICAgICAq ICAjIGRlcGVuZGluZyBvbiB0aGUgWFNNIHF1ZXJ5LCBvcHRpb25hbGx5IGNyZWF0ZSB0aGlzIG1h cHBpbmcgYXMKKyAgICAgICAgICogICAgX3dyaXRlLW9ubHlfIG9uIHBsYXRmb3JtcyB0aGF0IGNh biBzdXBwb3J0IGl0LgorICAgICAgICAgKiAgICAoZWcuIEludGVsIEVQVC9BTUQgTlBUKS4KKyAg ICAgICAgICovCisgICAgICAgIHJpbmdfaW5mby0+bWZuX21hcHBpbmdbaV0gPSBtYXBfZG9tYWlu X3BhZ2VfZ2xvYmFsKHJpbmdfaW5mby0+bWZuc1tpXSk7CisKKyAgICAgICAgaWYgKCAhcmluZ19p bmZvLT5tZm5fbWFwcGluZ1tpXSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVO TE9HX0VSUiwKKyAgICAgICAgICAgICAgICAiYXJnbzogcmluZyAodm0ldToleCB2bSVkKSAlcCBh dHRlbXB0ZWQgdG8gbWFwIHBhZ2UgJXUgb2YgJXVcbiIsCisgICAgICAgICAgICAgICAgICAgIHJp bmdfaW5mby0+aWQuZG9tYWluX2lkLCByaW5nX2luZm8tPmlkLnBvcnQsCisgICAgICAgICAgICAg ICAgICAgIHJpbmdfaW5mby0+aWQucGFydG5lcl9pZCwgcmluZ19pbmZvLCBpLCByaW5nX2luZm8t Pm5tZm5zKTsKKyAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgICAgICB9CisgICAgICAg IGFyZ29fZHByaW50aygibWFwcGluZyBwYWdlICUiUFJJX21mbiIgdG8gJXBcbiIsCisgICAgICAg ICAgICAgICAgICAgICBtZm5feChyaW5nX2luZm8tPm1mbnNbaV0pLCByaW5nX2luZm8tPm1mbl9t YXBwaW5nW2ldKTsKKyAgICB9CisKKyAgICBpZiAoIG91dF9wdHIgKQorICAgICAgICAqb3V0X3B0 ciA9IHJpbmdfaW5mby0+bWZuX21hcHBpbmdbaV07CisKKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIHZvaWQKK3VwZGF0ZV90eF9wdHIoc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8s IHVpbnQzMl90IHR4X3B0cikKK3sKKyAgICB2b2lkICpkc3Q7CisgICAgdWludDMyX3QgKnA7CisK KyAgICBBU1NFUlQocmluZ19pbmZvLT5tZm5fbWFwcGluZ1swXSk7CisKKyAgICByaW5nX2luZm8t PnR4X3B0ciA9IHR4X3B0cjsKKworICAgIGRzdCA9IHJpbmdfaW5mby0+bWZuX21hcHBpbmdbMF07 CisgICAgcCA9IGRzdCArIG9mZnNldG9mKHhlbl9hcmdvX3JpbmdfdCwgdHhfcHRyKTsKKworICAg IHdyaXRlX2F0b21pYyhwLCB0eF9wdHIpOworICAgIHNtcF93bWIoKTsKK30KKwogc3RhdGljIHZv aWQKIHdpbGRjYXJkX3BlbmRpbmdfbGlzdF9yZW1vdmUoZG9taWRfdCBkb21haW5faWQsIHN0cnVj dCBwZW5kaW5nX2VudCAqZW50KQogewpAQCAtMzcxLDYgKzQ5Myw0MTggQEAgcGFydG5lcl9yaW5n c19yZW1vdmUoc3RydWN0IGRvbWFpbiAqc3JjX2QpCiAgICAgfQogfQogCitzdGF0aWMgaW50Citm aW5kX3JpbmdfbWZuKHN0cnVjdCBkb21haW4gKmQsIGdmbl90IGdmbiwgbWZuX3QgKm1mbikKK3sK KyAgICBwMm1fdHlwZV90IHAybXQ7CisgICAgaW50IHJldCA9IDA7CisKKyNpZmRlZiBDT05GSUdf WDg2CisgICAgKm1mbiA9IGdldF9nZm5fdW5zaGFyZShkLCBnZm5feChnZm4pLCAmcDJtdCk7Cisj ZWxzZQorICAgICptZm4gPSBwMm1fbG9va3VwKGQsIGdmbiwgJnAybXQpOworI2VuZGlmCisKKyAg ICBpZiAoICFtZm5fdmFsaWQoKm1mbikgKQorICAgICAgICByZXQgPSAtRUlOVkFMOworI2lmZGVm IENPTkZJR19YODYKKyAgICBlbHNlIGlmICggcDJtX2lzX3BhZ2luZyhwMm10KSB8fCAocDJtdCA9 PSBwMm1fcmFtX2xvZ2RpcnR5KSApCisgICAgICAgIHJldCA9IC1FQUdBSU47CisjZW5kaWYKKyAg ICBlbHNlIGlmICggKHAybXQgIT0gcDJtX3JhbV9ydykgfHwKKyAgICAgICAgICAgICAgIWdldF9w YWdlX2FuZF90eXBlKG1mbl90b19wYWdlKCptZm4pLCBkLCBQR1Rfd3JpdGFibGVfcGFnZSkgKQor ICAgICAgICByZXQgPSAtRUlOVkFMOworCisjaWZkZWYgQ09ORklHX1g4NgorICAgIHB1dF9nZm4o ZCwgZ2ZuX3goZ2ZuKSk7CisjZW5kaWYKKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBp bnQKK2ZpbmRfcmluZ19tZm5zKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5m byAqcmluZ19pbmZvLAorICAgICAgICAgICAgICAgdWludDMyX3QgbnBhZ2UsCisgICAgICAgICAg ICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9hcmdvX3BhZ2VfZGVzY3JfdCkgcGdfZGVz Y3JfaG5kLAorICAgICAgICAgICAgICAgdWludDMyX3QgbGVuKQoreworICAgIHVuc2lnbmVkIGlu dCBpOworICAgIGludCByZXQgPSAwOworICAgIG1mbl90ICptZm5zOworICAgIHVpbnQ4X3QgKipt Zm5fbWFwcGluZzsKKworICAgIC8qCisgICAgICogZmlyc3QgYm91bmRzIGNoZWNrIG9uIG5wYWdl IGhlcmUgYWxzbyBzZXJ2ZXMgYXMgYW4gb3ZlcmZsb3cgY2hlY2sKKyAgICAgKiBiZWZvcmUgbGVm dCBzaGlmdGluZyBpdAorICAgICAqLworICAgIGlmICggKHVubGlrZWx5KG5wYWdlID4gKFhFTl9B UkdPX01BWF9SSU5HX1NJWkUgPj4gUEFHRV9TSElGVCkpKSB8fAorICAgICAgICAgKChucGFnZSA8 PCBQQUdFX1NISUZUKSA8IGxlbikgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIGlm ICggcmluZ19pbmZvLT5tZm5zICkKKyAgICB7CisgICAgICAgIC8qIFJpbmcgYWxyZWFkeSBleGlz dGVkOiBkcm9wIHRoZSBwcmV2aW91cyBtYXBwaW5nLiAqLworICAgICAgICBncHJpbnRrKFhFTkxP R19JTkZPLAorICAgICAgICAgImFyZ286IHZtJXUgcmUtcmVnaXN0ZXIgZXhpc3RpbmcgcmluZyAo dm0ldToleCB2bSVkKSBjbGVhcnMgbWFwcGluZ1xuIiwKKyAgICAgICAgICAgICAgICBkLT5kb21h aW5faWQsIHJpbmdfaW5mby0+aWQuZG9tYWluX2lkLAorICAgICAgICAgICAgICAgIHJpbmdfaW5m by0+aWQucG9ydCwgcmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkKTsKKworICAgICAgICByaW5nX3Jl bW92ZV9tZm5zKGQsIHJpbmdfaW5mbyk7CisgICAgICAgIEFTU0VSVCghcmluZ19pbmZvLT5tZm5z KTsKKyAgICB9CisKKyAgICBtZm5zID0geG1hbGxvY19hcnJheShtZm5fdCwgbnBhZ2UpOworICAg IGlmICggIW1mbnMgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKworICAgIGZvciAoIGkgPSAw OyBpIDwgbnBhZ2U7IGkrKyApCisgICAgICAgIG1mbnNbaV0gPSBJTlZBTElEX01GTjsKKworICAg IG1mbl9tYXBwaW5nID0geHphbGxvY19hcnJheSh1aW50OF90ICosIG5wYWdlKTsKKyAgICBpZiAo ICFtZm5fbWFwcGluZyApCisgICAgeworICAgICAgICB4ZnJlZShtZm5zKTsKKyAgICAgICAgcmV0 dXJuIC1FTk9NRU07CisgICAgfQorCisgICAgcmluZ19pbmZvLT5ucGFnZSA9IG5wYWdlOworICAg IHJpbmdfaW5mby0+bWZucyA9IG1mbnM7CisgICAgcmluZ19pbmZvLT5tZm5fbWFwcGluZyA9IG1m bl9tYXBwaW5nOworCisgICAgQVNTRVJUKHJpbmdfaW5mby0+bnBhZ2UgPT0gbnBhZ2UpOworCisg ICAgaWYgKCByaW5nX2luZm8tPm5tZm5zID09IHJpbmdfaW5mby0+bnBhZ2UgKQorICAgICAgICBy ZXR1cm4gMDsKKworICAgIGZvciAoIGkgPSByaW5nX2luZm8tPm5tZm5zOyBpIDwgcmluZ19pbmZv LT5ucGFnZTsgaSsrICkKKyAgICB7CisgICAgICAgIHhlbl9hcmdvX3BhZ2VfZGVzY3JfdCBwZ19k ZXNjcjsKKyAgICAgICAgZ2ZuX3QgZ2ZuOworICAgICAgICBtZm5fdCBtZm47CisKKyAgICAgICAg cmV0ID0gX19jb3B5X2Zyb21fZ3Vlc3Rfb2Zmc2V0KCZwZ19kZXNjciwgcGdfZGVzY3JfaG5kLCBp LCAxKSA/CisgICAgICAgICAgICAgICAgLUVGQVVMVCA6IDA7CisgICAgICAgIGlmICggcmV0ICkK KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIEltcGxlbWVudGF0aW9uIGN1cnJlbnRs eSBvbmx5IHN1cHBvcnRzIGhhbmRsaW5nIDRLIHBhZ2VzICovCisgICAgICAgIGlmICggKHBnX2Rl c2NyICYgWEVOX0FSR09fUEFHRV9ERVNDUl9TSVpFX01BU0spICE9CisgICAgICAgICAgICAgICAg WEVOX0FSR09fUEFHRV9ERVNDUl9TSVpFXzRLICkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0 ID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGdmbiA9 IF9nZm4ocGdfZGVzY3IgPj4gUEFHRV9TSElGVCk7CisKKyAgICAgICAgcmV0ID0gZmluZF9yaW5n X21mbihkLCBnZm4sICZtZm4pOworICAgICAgICBpZiAoIHJldCApCisgICAgICAgIHsKKyAgICAg ICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwKKyAgICAgICAgICAgICAgICJhcmdvOiB2bSV1OiBp bnZhbGlkIGdmbiAlIlBSSV9nZm4iIHI6KHZtJXU6JXggdm0lZCkgJXAgJWQvJWRcbiIsCisgICAg ICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgZ2ZuX3goZ2ZuKSwgcmluZ19pbmZvLT5pZC5k b21haW5faWQsCisgICAgICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQucG9ydCwgcmluZ19p bmZvLT5pZC5wYXJ0bmVyX2lkLAorICAgICAgICAgICAgICAgICAgICByaW5nX2luZm8sIGksIHJp bmdfaW5mby0+bnBhZ2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg ICByaW5nX2luZm8tPm1mbnNbaV0gPSBtZm47CisKKyAgICAgICAgYXJnb19kcHJpbnRrKCIlZDog JSJQUklfZ2ZuIiAtPiAlIlBSSV9tZm4iXG4iLAorICAgICAgICAgICAgICAgICAgICAgaSwgZ2Zu X3goZ2ZuKSwgbWZuX3gocmluZ19pbmZvLT5tZm5zW2ldKSk7CisgICAgfQorCisgICAgcmluZ19p bmZvLT5ubWZucyA9IGk7CisKKyAgICBpZiAoIHJldCApCisgICAgICAgIHJpbmdfcmVtb3ZlX21m bnMoZCwgcmluZ19pbmZvKTsKKyAgICBlbHNlCisgICAgeworICAgICAgICBBU1NFUlQocmluZ19p bmZvLT5ubWZucyA9PSByaW5nX2luZm8tPm5wYWdlKTsKKworICAgICAgICBncHJpbnRrKFhFTkxP R19ERUJVRywKKyAgICAgICAgImFyZ286IHZtJXUgcmluZyAodm0ldToleCB2bSVkKSAlcCBtZm5f bWFwcGluZyAlcCBucGFnZSAlZCBubWZucyAlZFxuIiwKKyAgICAgICAgICAgICAgICBkLT5kb21h aW5faWQsIHJpbmdfaW5mby0+aWQuZG9tYWluX2lkLAorICAgICAgICAgICAgICAgIHJpbmdfaW5m by0+aWQucG9ydCwgcmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkLCByaW5nX2luZm8sCisgICAgICAg ICAgICAgICAgcmluZ19pbmZvLT5tZm5fbWFwcGluZywgcmluZ19pbmZvLT5ucGFnZSwgcmluZ19p bmZvLT5ubWZucyk7CisgICAgfQorCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVj dCBhcmdvX3JpbmdfaW5mbyAqCityaW5nX2ZpbmRfaW5mbyhjb25zdCBzdHJ1Y3QgZG9tYWluICpk LCBjb25zdCBzdHJ1Y3QgYXJnb19yaW5nX2lkICppZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgcmlu Z19oYXNoX2luZGV4OworICAgIHN0cnVjdCBobGlzdF9ub2RlICpub2RlOworICAgIHN0cnVjdCBh cmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvOworCisgICAgQVNTRVJUKHJ3X2lzX2xvY2tlZCgmZC0+ YXJnby0+bG9jaykpOworCisgICAgcmluZ19oYXNoX2luZGV4ID0gaGFzaF9pbmRleChpZCk7CisK KyAgICBhcmdvX2RwcmludGsoImQtPmFyZ289JXAsIGQtPmFyZ28tPnJpbmdfaGFzaFsldV09JXAg aWQ9JXBcbiIsCisgICAgICAgICAgICAgICAgIGQtPmFyZ28sIHJpbmdfaGFzaF9pbmRleCwKKyAg ICAgICAgICAgICAgICAgZC0+YXJnby0+cmluZ19oYXNoW3JpbmdfaGFzaF9pbmRleF0uZmlyc3Qs IGlkKTsKKyAgICBhcmdvX2RwcmludGsoImlkLnBvcnQ9JXggaWQuZG9tYWluPXZtJXUgaWQucGFy dG5lcl9pZD12bSVkXG4iLAorICAgICAgICAgICAgICAgICBpZC0+cG9ydCwgaWQtPmRvbWFpbl9p ZCwgaWQtPnBhcnRuZXJfaWQpOworCisgICAgaGxpc3RfZm9yX2VhY2hfZW50cnkocmluZ19pbmZv LCBub2RlLCAmZC0+YXJnby0+cmluZ19oYXNoW3JpbmdfaGFzaF9pbmRleF0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgbm9kZSkKKyAgICB7CisgICAgICAgIHN0cnVjdCBhcmdvX3JpbmdfaWQg KmNtcGlkID0gJnJpbmdfaW5mby0+aWQ7CisKKyAgICAgICAgaWYgKCBjbXBpZC0+cG9ydCA9PSBp ZC0+cG9ydCAmJgorICAgICAgICAgICAgIGNtcGlkLT5kb21haW5faWQgPT0gaWQtPmRvbWFpbl9p ZCAmJgorICAgICAgICAgICAgIGNtcGlkLT5wYXJ0bmVyX2lkID09IGlkLT5wYXJ0bmVyX2lkICkK KyAgICAgICAgeworICAgICAgICAgICAgYXJnb19kcHJpbnRrKCJyaW5nX2luZm89JXBcbiIsIHJp bmdfaW5mbyk7CisgICAgICAgICAgICByZXR1cm4gcmluZ19pbmZvOworICAgICAgICB9CisgICAg fQorICAgIGFyZ29fZHByaW50aygibm8gcmluZ19pbmZvIGZvdW5kXG4iKTsKKworICAgIHJldHVy biBOVUxMOworfQorCitzdGF0aWMgbG9uZworcmVnaXN0ZXJfcmluZyhzdHJ1Y3QgZG9tYWluICpj dXJyZCwKKyAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fYXJnb19yZWdp c3Rlcl9yaW5nX3QpIHJlZ19obmQsCisgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFS QU0oeGVuX2FyZ29fcGFnZV9kZXNjcl90KSBwZ19kZXNjcl9obmQsCisgICAgICAgICAgICAgIHVp bnQzMl90IG5wYWdlLCBib29sIGZhaWxfZXhpc3QpCit7CisgICAgeGVuX2FyZ29fcmVnaXN0ZXJf cmluZ190IHJlZzsKKyAgICBzdHJ1Y3QgYXJnb19yaW5nX2lkIHJpbmdfaWQ7CisgICAgdm9pZCAq bWFwX3JpbmdwOworICAgIHhlbl9hcmdvX3JpbmdfdCAqcmluZ3A7CisgICAgc3RydWN0IGFyZ29f cmluZ19pbmZvICpyaW5nX2luZm87CisgICAgc3RydWN0IGFyZ29fc2VuZF9pbmZvICpzZW5kX2lu Zm8gPSBOVUxMOworICAgIHN0cnVjdCBkb21haW4gKmRzdF9kID0gTlVMTDsKKyAgICBpbnQgcmV0 ID0gMDsKKyAgICB1aW50MzJfdCBwcml2YXRlX3R4X3B0cjsKKworICAgIGlmICggY29weV9mcm9t X2d1ZXN0KCZyZWcsIHJlZ19obmQsIDEpICkKKyAgICB7CisgICAgICAgIHJldCA9IC1FRkFVTFQ7 CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIC8qCisgICAgICogQSByaW5nIG11c3Qg YmUgbGFyZ2UgZW5vdWdoIHRvIHRyYW5zbWl0IG1lc3NhZ2VzLCBzbyByZXF1aXJlcyBzcGFjZSBm b3I6CisgICAgICogKiAxIG1lc3NhZ2UgaGVhZGVyLCBwbHVzCisgICAgICogKiAxIHBheWxvYWQg c2xvdCAocGF5bG9hZCBpcyBhbHdheXMgcm91bmRlZCB0byBhIG11bHRpcGxlIG9mIDE2IGJ5dGVz KQorICAgICAqICAgZm9yIHRoZSBtZXNzYWdlIHBheWxvYWQgdG8gYmUgd3JpdHRlbiBpbnRvLCBw bHVzCisgICAgICogKiAxIG1vcmUgc2xvdCwgc28gdGhhdCB0aGUgcmluZyBjYW5ub3QgYmUgZmls bGVkIHRvIGNhcGFjaXR5IHdpdGggYQorICAgICAqICAgc2luZ2xlIG1lc3NhZ2UgLS0gc2VlIHRo ZSBsb2dpYyBpbiByaW5nYnVmX2luc2VydCAtLSBhbGxvd2luZyBmb3IgdGhpcworICAgICAqICAg ZW5zdXJlcyB0aGF0IHRoZXJlIGNhbiBiZSBzcGFjZSByZW1haW5pbmcgd2hlbiBhIG1lc3NhZ2Ug aXMgcHJlc2VudC4KKyAgICAgKiBUaGUgYWJvdmUgZGV0ZXJtaW5lcyB0aGUgbWluaW11bSBhY2Nl cHRhYmxlIHJpbmcgc2l6ZS4KKyAgICAgKi8KKyAgICBpZiAoIChyZWcubGVuIDwgKHNpemVvZihz dHJ1Y3QgeGVuX2FyZ29fcmluZ19tZXNzYWdlX2hlYWRlcikKKyAgICAgICAgICAgICAgICAgICAg ICArIFJPVU5EVVBfTUVTU0FHRSgxKSArIFJPVU5EVVBfTUVTU0FHRSgxKSkpIHx8CisgICAgICAg ICAocmVnLmxlbiA+IFhFTl9BUkdPX01BWF9SSU5HX1NJWkUpIHx8CisgICAgICAgICAocmVnLmxl biAhPSBST1VORFVQX01FU1NBR0UocmVnLmxlbikpIHx8CisgICAgICAgICAocmVnLnBhZCAhPSAw KSApCisgICAgeworICAgICAgICByZXQgPSAtRUlOVkFMOworICAgICAgICBnb3RvIG91dDsKKyAg ICB9CisKKyAgICByaW5nX2lkLnBhcnRuZXJfaWQgPSByZWcucGFydG5lcl9pZDsKKyAgICByaW5n X2lkLnBvcnQgPSByZWcucG9ydDsKKyAgICByaW5nX2lkLmRvbWFpbl9pZCA9IGN1cnJkLT5kb21h aW5faWQ7CisKKyAgICByZWFkX2xvY2soJmFyZ29fbG9jayk7CisKKyAgICBpZiAoICFjdXJyZC0+ YXJnbyApCisgICAgeworICAgICAgICByZXQgPSAtRU5PREVWOworICAgICAgICBnb3RvIG91dF91 bmxvY2s7CisgICAgfQorCisgICAgaWYgKCByZWcucGFydG5lcl9pZCA9PSBYRU5fQVJHT19ET01J RF9BTlkgKQorICAgIHsKKyAgICAgICAgaWYgKCBvcHRfYXJnb19tYWNfZW5mb3JjaW5nICkKKyAg ICAgICAgeworICAgICAgICAgICAgcmV0ID0gLUVQRVJNOworICAgICAgICAgICAgZ290byBvdXRf dW5sb2NrOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGRzdF9k ID0gZ2V0X2RvbWFpbl9ieV9pZChyZWcucGFydG5lcl9pZCk7CisgICAgICAgIGlmICggIWRzdF9k ICkKKyAgICAgICAgeworICAgICAgICAgICAgYXJnb19kcHJpbnRrKCIhZHN0X2QsIEVTUkNIXG4i KTsKKyAgICAgICAgICAgIHJldCA9IC1FU1JDSDsKKyAgICAgICAgICAgIGdvdG8gb3V0X3VubG9j azsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggIWRzdF9kLT5hcmdvICkKKyAgICAgICAgewor ICAgICAgICAgICAgYXJnb19kcHJpbnRrKCIhZHN0X2QtPmFyZ28sIEVDT05OUkVGVVNFRFxuIik7 CisgICAgICAgICAgICByZXQgPSAtRUNPTk5SRUZVU0VEOworICAgICAgICAgICAgcHV0X2RvbWFp bihkc3RfZCk7CisgICAgICAgICAgICBnb3RvIG91dF91bmxvY2s7CisgICAgICAgIH0KKworICAg ICAgICBzZW5kX2luZm8gPSB4emFsbG9jKHN0cnVjdCBhcmdvX3NlbmRfaW5mbyk7CisgICAgICAg IGlmICggIXNlbmRfaW5mbyApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldCA9IC1FTk9NRU07 CisgICAgICAgICAgICBwdXRfZG9tYWluKGRzdF9kKTsKKyAgICAgICAgICAgIGdvdG8gb3V0X3Vu bG9jazsKKyAgICAgICAgfQorICAgICAgICBzZW5kX2luZm8tPmlkID0gcmluZ19pZDsKKyAgICB9 CisKKyAgICB3cml0ZV9sb2NrKCZjdXJyZC0+YXJnby0+bG9jayk7CisKKyAgICBpZiAoIGN1cnJk LT5hcmdvLT5yaW5nX2NvdW50ID49IE1BWF9SSU5HU19QRVJfRE9NQUlOICkKKyAgICB7CisgICAg ICAgIHJldCA9IC1FTk9TUEM7CisgICAgICAgIGdvdG8gb3V0X3VubG9jazI7CisgICAgfQorCisg ICAgcmluZ19pbmZvID0gcmluZ19maW5kX2luZm8oY3VycmQsICZyaW5nX2lkKTsKKyAgICBpZiAo ICFyaW5nX2luZm8gKQorICAgIHsKKyAgICAgICAgcmluZ19pbmZvID0geHphbGxvYyhzdHJ1Y3Qg YXJnb19yaW5nX2luZm8pOworICAgICAgICBpZiAoICFyaW5nX2luZm8gKQorICAgICAgICB7Cisg ICAgICAgICAgICByZXQgPSAtRU5PTUVNOworICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrMjsK KyAgICAgICAgfQorCisgICAgICAgIHNwaW5fbG9ja19pbml0KCZyaW5nX2luZm8tPmxvY2spOwor CisgICAgICAgIHJpbmdfaW5mby0+aWQgPSByaW5nX2lkOworICAgICAgICBJTklUX0hMSVNUX0hF QUQoJnJpbmdfaW5mby0+cGVuZGluZyk7CisKKyAgICAgICAgaGxpc3RfYWRkX2hlYWQoJnJpbmdf aW5mby0+bm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJkLT5hcmdvLT5yaW5nX2hh c2hbaGFzaF9pbmRleCgmcmluZ19pbmZvLT5pZCldKTsKKworICAgICAgICBncHJpbnRrKFhFTkxP R19ERUJVRywgImFyZ286IHZtJXUgcmVnaXN0ZXJpbmcgcmluZyAodm0ldToleCB2bSVkKVxuIiwK KyAgICAgICAgICAgICAgICBjdXJyZC0+ZG9tYWluX2lkLCByaW5nX2lkLmRvbWFpbl9pZCwgcmlu Z19pZC5wb3J0LAorICAgICAgICAgICAgICAgIHJpbmdfaWQucGFydG5lcl9pZCk7CisgICAgfQor ICAgIGVsc2UKKyAgICB7CisgICAgICAgIGlmICggcmluZ19pbmZvLT5sZW4gKQorICAgICAgICB7 CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogSWYgdGhlIGNhbGxlciBzcGVjaWZpZWQg dGhhdCB0aGUgcmluZyBtdXN0IG5vdCBhbHJlYWR5IGV4aXN0LAorICAgICAgICAgICAgICogZmFp bCBhdCBhdHRlbXB0IHRvIGFkZCBhIGNvbXBsZXRlZCByaW5nIHdoaWNoIGFscmVhZHkgZXhpc3Rz LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIGZhaWxfZXhpc3QgKQorICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgIGFyZ29fZHByaW50aygiZGlzYWxsb3dlZCByZXJlZ2lz dHJhdGlvbiBvZiBleGlzdGluZyByaW5nXG4iKTsKKyAgICAgICAgICAgICAgICByZXQgPSAtRUVY SVNUOworICAgICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazI7CisgICAgICAgICAgICB9CisK KyAgICAgICAgICAgIGlmICggcmluZ19pbmZvLT5sZW4gIT0gcmVnLmxlbiApCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBDaGFuZ2Ugb2Ygcmlu ZyBzaXplIGNvdWxkIHJlc3VsdCBpbiBlbnRyaWVzIG9uIHRoZSBwZW5kaW5nCisgICAgICAgICAg ICAgICAgICogbm90aWZpY2F0aW9ucyBsaXN0IHRoYXQgd2lsbCBuZXZlciB0cmlnZ2VyLgorICAg ICAgICAgICAgICAgICAqIFNpbXBsZSBibHVudCBzb2x1dGlvbjogZGlzYWxsb3cgcmluZyByZXNp emUgZm9yIG5vdy4KKyAgICAgICAgICAgICAgICAgKiBUT0RPOiBpbnZlc3RpZ2F0ZSBlbmFibGlu ZyByaW5nIHJlc2l6ZS4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBncHJp bnRrKFhFTkxPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICJhcmdvOiB2bSV1IGF0dGVtcHRl ZCB0byBjaGFuZ2UgcmluZyBzaXplKHZtJXU6JXggdm0lZClcbiIsCisgICAgICAgICAgICAgICAg ICAgICAgICBjdXJyZC0+ZG9tYWluX2lkLCByaW5nX2lkLmRvbWFpbl9pZCwgcmluZ19pZC5wb3J0 LAorICAgICAgICAgICAgICAgICAgICAgICAgcmluZ19pZC5wYXJ0bmVyX2lkKTsKKyAgICAgICAg ICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIENvdWxkIHJldHVybiBFSU5WQUwgaGVyZSwg YnV0IGlmIHRoZSByaW5nIGRpZG4ndCBhbHJlYWR5CisgICAgICAgICAgICAgICAgICogZXhpc3Qg dGhlbiB0aGUgYXJndW1lbnRzIHdvdWxkIGhhdmUgYmVlbiB2YWxpZCwgc286IEVFWElTVC4KKyAg ICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICByZXQgPSAtRUVYSVNUOworICAgICAg ICAgICAgICAgIGdvdG8gb3V0X3VubG9jazI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg IGdwcmludGsoWEVOTE9HX0RFQlVHLAorICAgICAgICAgICAgICAgICAgICAiYXJnbzogdm0ldSBy ZS1yZWdpc3RlcmluZyBleGlzdGluZyByaW5nICh2bSV1OiV4IHZtJWQpXG4iLAorICAgICAgICAg ICAgICAgICAgICBjdXJyZC0+ZG9tYWluX2lkLCByaW5nX2lkLmRvbWFpbl9pZCwgcmluZ19pZC5w b3J0LAorICAgICAgICAgICAgICAgICAgICByaW5nX2lkLnBhcnRuZXJfaWQpOworICAgICAgICB9 CisgICAgfQorCisgICAgcmV0ID0gZmluZF9yaW5nX21mbnMoY3VycmQsIHJpbmdfaW5mbywgbnBh Z2UsIHBnX2Rlc2NyX2huZCwgcmVnLmxlbik7CisgICAgaWYgKCByZXQgKQorICAgIHsKKyAgICAg ICAgZ3ByaW50ayhYRU5MT0dfRVJSLAorICAgICAgICAgICAgICAgICJhcmdvOiB2bSV1IGZhaWxl ZCB0byBmaW5kIHJpbmcgbWZucyAodm0ldToleCB2bSVkKVxuIiwKKyAgICAgICAgICAgICAgICBj dXJyZC0+ZG9tYWluX2lkLCByaW5nX2lkLmRvbWFpbl9pZCwgcmluZ19pZC5wb3J0LAorICAgICAg ICAgICAgICAgIHJpbmdfaWQucGFydG5lcl9pZCk7CisKKyAgICAgICAgcmluZ19yZW1vdmVfaW5m byhjdXJyZCwgcmluZ19pbmZvKTsKKyAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICB9CisK KyAgICAvKgorICAgICAqIFRoZSBmaXJzdCBwYWdlIG9mIHRoZSBtZW1vcnkgc3VwcGxpZWQgZm9y IHRoZSByaW5nIGhhcyB0aGUgeGVuX2FyZ29fcmluZworICAgICAqIHN0cnVjdHVyZSBhdCBpdHMg aGVhZCwgd2hpY2ggaXMgd2hlcmUgdGhlIHJpbmcgaW5kZXhlcyByZXNpZGUuCisgICAgICovCisg ICAgcmV0ID0gcmluZ19tYXBfcGFnZShyaW5nX2luZm8sIDAsICZtYXBfcmluZ3ApOworICAgIGlm ICggcmV0ICkKKyAgICB7CisgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwKKyAgICAgICAgICAg ICAgICAiYXJnbzogdm0ldSBmYWlsZWQgdG8gbWFwIHJpbmcgbWZuIDAgKHZtJXU6JXggdm0lZClc biIsCisgICAgICAgICAgICAgICAgY3VycmQtPmRvbWFpbl9pZCwgcmluZ19pZC5kb21haW5faWQs IHJpbmdfaWQucG9ydCwKKyAgICAgICAgICAgICAgICByaW5nX2lkLnBhcnRuZXJfaWQpOworCisg ICAgICAgIHJpbmdfcmVtb3ZlX2luZm8oY3VycmQsIHJpbmdfaW5mbyk7CisgICAgICAgIGdvdG8g b3V0X3VubG9jazI7CisgICAgfQorICAgIHJpbmdwID0gbWFwX3JpbmdwOworCisgICAgcHJpdmF0 ZV90eF9wdHIgPSByZWFkX2F0b21pYygmcmluZ3AtPnR4X3B0cik7CisKKyAgICBpZiAoIChwcml2 YXRlX3R4X3B0ciA+PSByZWcubGVuKSB8fAorICAgICAgICAgKFJPVU5EVVBfTUVTU0FHRShwcml2 YXRlX3R4X3B0cikgIT0gcHJpdmF0ZV90eF9wdHIpICkKKyAgICB7CisgICAgICAgIC8qCisgICAg ICAgICAqIFNpbmNlIHRoZSByaW5nIGlzIGEgbWVzcywgYXR0ZW1wdCB0byBmbHVzaCB0aGUgY29u dGVudHMgb2YgaXQKKyAgICAgICAgICogaGVyZSBieSBzZXR0aW5nIHRoZSB0eF9wdHIgdG8gdGhl IG5leHQgYWxpZ25lZCBtZXNzYWdlIHNsb3QgcGFzdAorICAgICAgICAgKiB0aGUgbGF0ZXN0IHJ4 X3B0ciB3ZSBoYXZlIG9ic2VydmVkLiBIYW5kbGUgcmluZyB3cmFwIGNvcnJlY3RseS4KKyAgICAg ICAgICovCisgICAgICAgIHByaXZhdGVfdHhfcHRyID0gUk9VTkRVUF9NRVNTQUdFKHJlYWRfYXRv bWljKCZyaW5ncC0+cnhfcHRyKSk7CisKKyAgICAgICAgaWYgKCBwcml2YXRlX3R4X3B0ciA+PSBy ZWcubGVuICkKKyAgICAgICAgICAgIHByaXZhdGVfdHhfcHRyID0gMDsKKworICAgICAgICB1cGRh dGVfdHhfcHRyKHJpbmdfaW5mbywgcHJpdmF0ZV90eF9wdHIpOworICAgIH0KKworICAgIHJpbmdf aW5mby0+dHhfcHRyID0gcHJpdmF0ZV90eF9wdHI7CisgICAgcmluZ19pbmZvLT5sZW4gPSByZWcu bGVuOworICAgIGN1cnJkLT5hcmdvLT5yaW5nX2NvdW50Kys7CisKKyAgICBpZiAoIHNlbmRfaW5m byApCisgICAgeworICAgICAgICBzcGluX2xvY2soJmRzdF9kLT5hcmdvLT5zZW5kX2xvY2spOwor CisgICAgICAgIGhsaXN0X2FkZF9oZWFkKCZzZW5kX2luZm8tPm5vZGUsCisgICAgICAgICAgICAg ICAgICAgICAgICZkc3RfZC0+YXJnby0+c2VuZF9oYXNoW2hhc2hfaW5kZXgoJnNlbmRfaW5mby0+ aWQpXSk7CisKKyAgICAgICAgc3Bpbl91bmxvY2soJmRzdF9kLT5hcmdvLT5zZW5kX2xvY2spOwor ICAgIH0KKworIG91dF91bmxvY2syOgorICAgIGlmICggIXJldCAmJiBzZW5kX2luZm8gKQorICAg ICAgICB4ZnJlZShzZW5kX2luZm8pOworCisgICAgaWYgKCBkc3RfZCApCisgICAgICAgIHB1dF9k b21haW4oZHN0X2QpOworCisgICAgd3JpdGVfdW5sb2NrKCZjdXJyZC0+YXJnby0+bG9jayk7CisK KyBvdXRfdW5sb2NrOgorICAgIHJlYWRfdW5sb2NrKCZhcmdvX2xvY2spOworCisgb3V0OgorICAg IHJldHVybiByZXQ7Cit9CisKIGxvbmcKIGRvX2FyZ29fb3AodW5zaWduZWQgaW50IGNtZCwgWEVO X0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcxLAogICAgICAgICAgICBYRU5fR1VFU1RfSEFO RExFX1BBUkFNKHZvaWQpIGFyZzIsIHVuc2lnbmVkIGxvbmcgYXJnMywKQEAgLTM5Miw2ICs5MjYs MzggQEAgZG9fYXJnb19vcCh1bnNpZ25lZCBpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFN KHZvaWQpIGFyZzEsCiAKICAgICBzd2l0Y2ggKGNtZCkKICAgICB7CisgICAgY2FzZSBYRU5fQVJH T19PUF9yZWdpc3Rlcl9yaW5nOgorICAgIHsKKyAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJB TSh4ZW5fYXJnb19yZWdpc3Rlcl9yaW5nX3QpIHJlZ19obmQgPQorICAgICAgICAgICAgZ3Vlc3Rf aGFuZGxlX2Nhc3QoYXJnMSwgeGVuX2FyZ29fcmVnaXN0ZXJfcmluZ190KTsKKyAgICAgICAgWEVO X0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fYXJnb19wYWdlX2Rlc2NyX3QpIHBnX2Rlc2NyX2huZCA9 CisgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcyLCB4ZW5fYXJnb19wYWdlX2Rlc2Ny X3QpOworICAgICAgICAvKiBhcmczIGlzIG5wYWdlICovCisgICAgICAgIC8qIGFyZzQgaXMgZmxh Z3MgKi8KKyAgICAgICAgYm9vbCBmYWlsX2V4aXN0ID0gYXJnNCAmIFhFTl9BUkdPX1JFR0lTVEVS X0ZMQUdfRkFJTF9FWElTVDsKKworICAgICAgICBpZiAoIHVubGlrZWx5KGFyZzMgPiAoWEVOX0FS R09fTUFYX1JJTkdfU0laRSA+PiBQQUdFX1NISUZUKSkgKQorICAgICAgICB7CisgICAgICAgICAg ICByYyA9IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAv KgorICAgICAgICAgKiBDaGVjayBhY2Nlc3MgdG8gdGhlIHdob2xlIGFycmF5IGhlcmUgc28gd2Ug Y2FuIHVzZSB0aGUgZmFzdGVyIF9fY29weQorICAgICAgICAgKiBvcGVyYXRpb25zIHRvIHJlYWQg ZWFjaCBlbGVtZW50IGxhdGVyLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCB1bmxpa2VseSgh Z3Vlc3RfaGFuZGxlX29rYXkocGdfZGVzY3JfaG5kLCBhcmczKSkgKQorICAgICAgICAgICAgYnJl YWs7CisgICAgICAgIC8qIGFyZzQ6IHJlc2VydmUgY3VycmVudGx5LXVuZGVmaW5lZCBiaXRzLCBy ZXF1aXJlIHplcm8uICAqLworICAgICAgICBpZiAoIHVubGlrZWx5KGFyZzQgJiB+WEVOX0FSR09f UkVHSVNURVJfRkxBR19NQVNLKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0gLUVJTlZB TDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSByZWdpc3Rl cl9yaW5nKGN1cnJkLCByZWdfaG5kLCBwZ19kZXNjcl9obmQsIGFyZzMsIGZhaWxfZXhpc3QpOwor ICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICByYyA9IC1FT1BO T1RTVVBQOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0v Z3Vlc3RfYWNjZXNzLmggYi94ZW4vaW5jbHVkZS9hc20tYXJtL2d1ZXN0X2FjY2Vzcy5oCmluZGV4 IDg5OTdhMWMuLjcwZTlhNzggMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vZ3Vlc3Rf YWNjZXNzLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLWFybS9ndWVzdF9hY2Nlc3MuaApAQCAtMjks NiArMjksOCBAQCBpbnQgYWNjZXNzX2d1ZXN0X21lbW9yeV9ieV9pcGEoc3RydWN0IGRvbWFpbiAq ZCwgcGFkZHJfdCBpcGEsIHZvaWQgKmJ1ZiwKIC8qIElzIHRoZSBndWVzdCBoYW5kbGUgYSBOVUxM IHJlZmVyZW5jZT8gKi8KICNkZWZpbmUgZ3Vlc3RfaGFuZGxlX2lzX251bGwoaG5kKSAgICAgICAg KChobmQpLnAgPT0gTlVMTCkKIAorI2RlZmluZSBndWVzdF9oYW5kbGVfaXNfYWxpZ25lZChobmQs IG1hc2spICghKCh1aW50cHRyX3QpKGhuZCkucCAmIChtYXNrKSkpCisKIC8qIE9mZnNldCB0aGUg Z2l2ZW4gZ3Vlc3QgaGFuZGxlIGludG8gdGhlIGFycmF5IGl0IHJlZmVycyB0by4gKi8KICNkZWZp bmUgZ3Vlc3RfaGFuZGxlX2FkZF9vZmZzZXQoaG5kLCBucikgKChobmQpLnAgKz0gKG5yKSkKICNk ZWZpbmUgZ3Vlc3RfaGFuZGxlX3N1YnRyYWN0X29mZnNldChobmQsIG5yKSAoKGhuZCkucCAtPSAo bnIpKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9hY2Nlc3MuaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfYWNjZXNzLmgKaW5kZXggY2E3MDBjOS4uOGRkZTVkNSAx MDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9hY2Nlc3MuaAorKysgYi94ZW4v aW5jbHVkZS9hc20teDg2L2d1ZXN0X2FjY2Vzcy5oCkBAIC00MSw2ICs0MSw4IEBACiAvKiBJcyB0 aGUgZ3Vlc3QgaGFuZGxlIGEgTlVMTCByZWZlcmVuY2U/ICovCiAjZGVmaW5lIGd1ZXN0X2hhbmRs ZV9pc19udWxsKGhuZCkgICAgICAgICgoaG5kKS5wID09IE5VTEwpCiAKKyNkZWZpbmUgZ3Vlc3Rf aGFuZGxlX2lzX2FsaWduZWQoaG5kLCBtYXNrKSAoISgodWludHB0cl90KShobmQpLnAgJiAobWFz aykpKQorCiAvKiBPZmZzZXQgdGhlIGdpdmVuIGd1ZXN0IGhhbmRsZSBpbnRvIHRoZSBhcnJheSBp dCByZWZlcnMgdG8uICovCiAjZGVmaW5lIGd1ZXN0X2hhbmRsZV9hZGRfb2Zmc2V0KGhuZCwgbnIp ICgoaG5kKS5wICs9IChucikpCiAjZGVmaW5lIGd1ZXN0X2hhbmRsZV9zdWJ0cmFjdF9vZmZzZXQo aG5kLCBucikgKChobmQpLnAgLT0gKG5yKSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1Ymxp Yy9hcmdvLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oCmluZGV4IDQ4MTg2ODQuLjg5NDcy MzAgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgKKysrIGIveGVuL2luY2x1 ZGUvcHVibGljL2FyZ28uaApAQCAtMzEsNiArMzEsMjYgQEAKIAogI2luY2x1ZGUgInhlbi5oIgog CisjZGVmaW5lIFhFTl9BUkdPX0RPTUlEX0FOWSAgICAgICBET01JRF9JTlZBTElECisKKy8qCisg KiBUaGUgbWF4aW11bSBzaXplIG9mIGFuIEFyZ28gcmluZyBpcyBkZWZpbmVkIHRvIGJlOiAxNkdC CisgKiAgLS0gd2hpY2ggaXMgMHgxMDAwMDAwIGJ5dGVzLgorICogQSBieXRlIGluZGV4IGludG8g dGhlIHJpbmcgaXMgYXQgbW9zdCAyNCBiaXRzLgorICovCisjZGVmaW5lIFhFTl9BUkdPX01BWF9S SU5HX1NJWkUgICgweDEwMDAwMDBVTEwpCisKKy8qCisgKiBQYWdlIGRlc2NyaXB0b3I6IGVuY29k aW5nIGJvdGggcGFnZSBhZGRyZXNzIGFuZCBzaXplIGluIGEgNjQtYml0IHZhbHVlLgorICogSW50 ZW5kZWQgdG8gYWxsb3cgQUJJIHRvIHN1cHBvcnQgdXNlIG9mIGRpZmZlcmVudCBncmFudWxhcml0 eSBwYWdlcy4KKyAqIGV4YW1wbGUgb2YgaG93IHRvIHBvcHVsYXRlOgorICogeGVuX2FyZ29fcGFn ZV9kZXNjcl90IHBnX2Rlc2MgPQorICogICAgICAocGh5c2FkZHIgJiBQQUdFX01BU0spIHwgWEVO X0FSR09fUEFHRV9ERVNDUl9TSVpFXzRLOworICovCit0eXBlZGVmIHVpbnQ2NF90IHhlbl9hcmdv X3BhZ2VfZGVzY3JfdDsKKyNkZWZpbmUgWEVOX0FSR09fUEFHRV9ERVNDUl9TSVpFX01BU0sgICAw eDAwMDAwMDAwMDAwMDBmZmZVTEwKKyNkZWZpbmUgWEVOX0FSR09fUEFHRV9ERVNDUl9TSVpFXzRL ICAgICAwCisKIHR5cGVkZWYgc3RydWN0IHhlbl9hcmdvX2FkZHIKIHsKICAgICB1aW50MzJfdCBw b3J0OwpAQCAtNTYsNCArNzYsNTYgQEAgdHlwZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fcmluZwogI2Vu ZGlmCiB9IHhlbl9hcmdvX3JpbmdfdDsKIAordHlwZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fcmVnaXN0 ZXJfcmluZworeworICAgIHVpbnQzMl90IHBvcnQ7CisgICAgZG9taWRfdCBwYXJ0bmVyX2lkOwor ICAgIHVpbnQxNl90IHBhZDsKKyAgICB1aW50MzJfdCBsZW47Cit9IHhlbl9hcmdvX3JlZ2lzdGVy X3JpbmdfdDsKKworLyogTWVzc2FnZXMgb24gdGhlIHJpbmcgYXJlIHBhZGRlZCB0byBhIG11bHRp cGxlIG9mIHRoaXMgc2l6ZS4gKi8KKyNkZWZpbmUgWEVOX0FSR09fTVNHX1NMT1RfU0laRSAweDEw CisKK3N0cnVjdCB4ZW5fYXJnb19yaW5nX21lc3NhZ2VfaGVhZGVyCit7CisgICAgdWludDMyX3Qg bGVuOworICAgIHhlbl9hcmdvX2FkZHJfdCBzb3VyY2U7CisgICAgdWludDMyX3QgbWVzc2FnZV90 eXBlOworI2lmIGRlZmluZWQoX19TVERDX1ZFUlNJT05fXykgJiYgX19TVERDX1ZFUlNJT05fXyA+ PSAxOTk5MDFMCisgICAgdWludDhfdCBkYXRhW107CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQor ICAgIHVpbnQ4X3QgZGF0YVswXTsKKyNlbmRpZgorfTsKKworLyoKKyAqIEh5cGVyY2FsbCBvcGVy YXRpb25zCisgKi8KKworLyoKKyAqIFhFTl9BUkdPX09QX3JlZ2lzdGVyX3JpbmcKKyAqCisgKiBS ZWdpc3RlciBhIHJpbmcgdXNpbmcgdGhlIGluZGljYXRlZCBtZW1vcnkuCisgKiBBbHNvIHVzZWQg dG8gcmVyZWdpc3RlciBhbiBleGlzdGluZyByaW5nIChlZy4gYWZ0ZXIgcmVzdW1lIGZyb20gaGli ZXJuYXRlKS4KKyAqCisgKiBhcmcxOiBYRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3JlZ2lzdGVy X3JpbmdfdCkKKyAqIGFyZzI6IFhFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fcGFnZV9kZXNjcl90 KQorICogYXJnMzogdW5zaWduZWQgbG9uZyBucGFnZXMKKyAqIGFyZzQ6IHVuc2lnbmVkIGxvbmcg ZmxhZ3MKKyAqLworI2RlZmluZSBYRU5fQVJHT19PUF9yZWdpc3Rlcl9yaW5nICAgICAxCisKKy8q IFJlZ2lzdGVyIG9wIGZsYWdzICovCisvKgorICogRmFpbCBleGlzdDoKKyAqIElmIHNldCwgcmVq ZWN0IGF0dGVtcHRzIHRvIChyZSlyZWdpc3RlciBhbiBleGlzdGluZyBlc3RhYmxpc2hlZCByaW5n LgorICogSWYgY2xlYXIsIHJlcmVnaXN0cmF0aW9uIG9jY3VycyBpZiB0aGUgcmluZyBleGlzdHMs IHdpdGggdGhlIG5ldyByaW5nCisgKiB0YWtpbmcgdGhlIHBsYWNlIG9mIHRoZSBvbGQsIHByZXNl cnZpbmcgdHhfcHRyIGlmIGl0IHJlbWFpbnMgdmFsaWQuCisgKi8KKyNkZWZpbmUgWEVOX0FSR09f UkVHSVNURVJfRkxBR19GQUlMX0VYSVNUICAweDEKKworLyogTWFzayBmb3IgYWxsIGRlZmluZWQg ZmxhZ3MuIHVuc2lnbmVkIGxvbmcgdHlwZSBzbyBvayBmb3IgYm90aCAzMi82NC1iaXQgKi8KKyNk ZWZpbmUgWEVOX0FSR09fUkVHSVNURVJfRkxBR19NQVNLIDB4MVVMCisKICNlbmRpZgpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUveGxhdC5sc3QgYi94ZW4vaW5jbHVkZS94bGF0LmxzdAppbmRleCA5 ZjYxNmU0Li45YzlkMzNmIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94bGF0LmxzdAorKysgYi94 ZW4vaW5jbHVkZS94bGF0LmxzdApAQCAtMTUwLDMgKzE1MCw0IEBACiA/CWZsYXNrX3RyYW5zaXRp b24JCXhzbS9mbGFza19vcC5oCiA/CWFyZ29fYWRkcgkJCWFyZ28uaAogPwlhcmdvX3JpbmcJCQlh cmdvLmgKKz8JYXJnb19yZWdpc3Rlcl9yaW5nCQlhcmdvLmgKLS0gCjIuNy40CgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9q ZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==