From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v2 14/18] argo: implement the notify op Date: Wed, 19 Dec 2018 22:39:11 -0800 Message-ID: <1545287955-27684-15-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 1gZs05-0006XX-Le for xen-devel@lists.xenproject.org; Thu, 20 Dec 2018 06:40:05 +0000 Received: by mail-it1-x142.google.com with SMTP id c9so1317838itj.1 for ; Wed, 19 Dec 2018 22:40:04 -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 UXVlcmllcyBmb3IgZGF0YSBhYm91dCBzcGFjZSBhdmFpbGFiaWxpdHkgaW4gcmVnaXN0ZXJlZCBy aW5ncyBhbmQKY2F1c2VzIG5vdGlmaWNhdGlvbiB0byBiZSBzZW50IHdoZW4gc3BhY2UgaGFzIGJl Y29tZSBhdmFpbGFibGUuCgpUaGUgaHlwZXJjYWxsIG9wIHBvcHVsYXRlcyBhIHN1cHBsaWVkIGRh dGEgc3RydWN0dXJlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQKcmluZyBzdGF0ZSwgYW5kIGlmIGlu c3VmZmljZW50IHNwYWNlIGlzIGN1cnJlbnRseSBhdmFpbGFibGUgaW4gYSBnaXZlbiByaW5nLAp0 aGUgaHlwZXJ2aXNvciB3aWxsIHJlY29yZCB0aGUgZG9tYWluJ3MgZXhwcmVzc2VkIGludGVyZXN0 IGFuZCBub3RpZnkgaXQKd2hlbiBpdCBvYnNlcnZlcyB0aGF0IHNwYWNlIGhhcyBiZWNvbWUgYXZh aWxhYmxlLgoKQ2hlY2tzIGZvciBmcmVlIHNwYWNlIG9jY3VyIHdoZW4gdGhpcyBub3RpZnkgb3Ag aXMgaW52b2tlZCwgc28gaXQgbWF5IGJlCmludGVudGlvbmFsbHkgaW52b2tlZCB3aXRoIG5vIGRh dGEgc3RydWN0dXJlIHRvIHBvcHVsYXRlCihpZS4gYSBOVUxMIGFyZ3VtZW50KSB0byB0cmlnZ2Vy IHN1Y2ggYSBjaGVjayBhbmQgY29uc2VxdWVudCBub3RpZmljYXRpb25zLgoKY29weV9maWVsZF9m cm9tX2d1ZXN0X2Vycm5vIGlzIGFkZGVkIGZvciBndWVzdCBhY2Nlc3MsIHBlcmZvcm1pbmcgdGhl IHNhbWUKb3BlcmF0aW9uIGFzIGNvcHlfZmllbGRfZnJvbV9ndWVzdCwgYnV0IHJldHVybmluZyAt RUZBVUxUIGlmIHRoZSBjb3B5IGlzCmluY29tcGxldGUuIEFkZGVkIHRvIGNvbW1vbiBjb2RlIHRv IHNpbXBsaWZ5IGNvZGUgYXQgY2FsbCBzaXRlcy4KCmxpbWl0IHRoZSBtYXggbnVtYmVyIG9mIG5v dGlmeSByZXF1ZXN0cyBpbiBhIHNpbmdsZSBvcGVyYXRpb24gd2l0aAphIHNpbXBsZSBmaXhlZCBs aW1pdCBvZiAyNTYuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBDbGFyayA8Y2hyaXN0b3Bo ZXIuY2xhcms2QGJhZXN5c3RlbXMuY29tPgotLS0KQ2hhbmdlcyBzaW5jZSB2MToKCnYxICM1ICgj MTYpIGZlZWRiYWNrIFBhdWw6IG5vdGlmeSBvcDogdXNlIGN1cnJkIGluIGRvX2FyZ29fbWVzc2Fn ZV9vcAp2MSAjNSAoIzE2KSBmZWVkYmFjayBQYXVsOiBub3RpZnkgb3A6IHVzZSBjdXJyZCBpbiBh cmdvX25vdGlmeQp2MSAjNSAoIzE2KSBmZWVkYmFjayBQYXVsOiBub3RpZnkgb3A6IHVzZSBjdXJy ZCBpbiBhcmdvX25vdGlmeV9jaGVja19wZW5kaW5nCnYxICM1ICgjMTYpIGZlZWRiYWNrIFBhdWw6 IG5vdGlmeSBvcDogdXNlIGN1cnJkIGluIGFyZ29fZmlsbF9yaW5nX2RhdGFfYXJyYXkKdjEgIzEz ICgjMTYpIGZlZWRiYWNrIFBhdWw6IG5vdGlmeSBvcDogZG8vd2hpbGU6IHJlaW5kZW50IG9ubHkK djEgIzEzICgjMTYpIGZlZWRiYWNrIFBhdWw6IG5vdGlmeSBvcDogZG8vd2hpbGU6IGdvdG8KdjEg OiBhZGQgY29tcGF0IHhsYXQubHN0IGVudHJpZXMKdjE6IGFkZCBkZWZpbml0aW9uIGZvciBjb3B5 X2ZpZWxkX2Zyb21fZ3Vlc3RfZXJybm8KdjEgIzEzIGZlZWRiYWNrIEphbjogbWFrZSAncmluZyBk YXRhJyBjb21tZW50IGNvbXBseSB3aXRoIHNpbmdsZS1saW5lIHN0eWxlCnYxIGZlZWRiYWNrICMx MyBKYW46IHVzZSBfX2NvcHk7IHNvIGRlZmluZSBhbmQgdXNlIF9fY29weV9maWVsZF90b19ndWVz dF9lcnJubwp2MTogIzEzIGZlZWRiYWNrIEphbjogcHVibGljIG5hbWVzcGFjZTogcHJlZml4IHdp dGggeGVuCnYxOiAjMTMgZmVlZGJhY2sgSmFuOiBhZGQgYmxhbmsgbGluZSBhZnRlciBjYXNlIGlu IGRvX2FyZ29fbWVzc2FnZV9vcAp2MTogc2VsZjogcmVuYW1lIGVudCBpZCB0byBkb21haW5faWQK djE6IHNlbGY6IGVudCBpZC0+IGRvbWFpbl9pZAp2MTogc2VsZjogZHJvcCBzaWduYWwgaWYgZG9t YWluX2Nvb2tpZSBtaXNtYXRjaGVzCnYxLiBmZWVkYmFjayAjMTUgSmFuOiBtYWtlIGxvb3AgaSB1 bnNpZ25lZAp2MS4gc2VsZjogZHJvcCB1bm5lY2Vzc2FyeSBtYigpIGluIGFyZ29fbm90aWZ5X2No ZWNrX3BlbmRpbmcKdjEuIHNlbGY6IGFkZCBibGFuayBsaW5lCnYxICMxNiBmZWVkYmFjayBKYW46 IGNvbnN0IGRvbWFpbiBhcmcgdG8gK2FyZ29fZmlsbF9yaW5nX2RhdGEKdjEuIGZlZWRiYWNrICMx NSBKYW46IGNoZWNrIHVudXN1ZWQgaHlwZXJjYWxsIGFyZ3MgYXJlIHplcm8KdjEgZmVlZGJhY2sg IzE2IEphbjogYWRkIGNvbW1lbnQgb24gc3BhY2UgYXZhaWxhYmxlIHNpZ25hbCBwb2xpY3kKdjEu IGZlZWRiYWNrICMxNiBKYW46IG1vdmUgZGVjbHIsIGRyb3AgYnJhY2VzLCBsb3dlciBpbmRlbnQK djEuIGZlZWRiYWNrICMxOCBKYW46IG1lbGQgdGhlIHJlc291cmNlIGxpbWl0cyBpbnRvIHRoZSBt YWluIGNvbW1pdAp2MS4gZmVlZGJhY2sgIzE2IEphbjogY2xhcmlmeSB1c2Ugb2YgbWFnaWMgZmll bGQKdjEuIHNlbGY6IHVzZSBzaW5nbGUgY29weSB0byByZWFkIG5vdGlmeSByaW5nIGRhdGEgc3Ry dWN0CnYxOiBhcmdvX2ZpbGxfcmluZ19kYXRhOiBmaXggZHByaW50ayB0eXBlcyBmb3IgcG9ydCBm aWVsZAp2MTogc2VsZjogdXNlICV4IGZvciBwcmludGluZyBwb3J0IGFzIHBlciBvdGhlciBwcmlu dCBzaXRlcwp2MS4gZmVlZGJhY2sgSmFuOiBhZGQgY29tbWVudHMgZXhwbGFpbmluZyByaW5nIGZ1 bGwgdnMgZW1wdHkKdjEuIGZvbGxvd2luZyBKYW46IGZpeCBhcmdvX3JpbmdidWZfcGF5bG9hZF9z cGFjZSBjYWxjdWxhdGlvbiBmb3IgZW1wdHkgcmluZwoKIHhlbi9jb21tb24vYXJnby5jICAgICAg ICAgICAgICAgICAgfCAzODQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog eGVuL2luY2x1ZGUvYXNtLWFybS9ndWVzdF9hY2Nlc3MuaCB8ICAgNSArCiB4ZW4vaW5jbHVkZS9h c20teDg2L2d1ZXN0X2FjY2Vzcy5oIHwgICA1ICsKIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgg ICAgICAgICAgfCAgNjcgKysrKysrKwogeGVuL2luY2x1ZGUveGxhdC5sc3QgICAgICAgICAgICAg ICB8ICAgMiArCiA1IGZpbGVzIGNoYW5nZWQsIDQ2MyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0 IGEveGVuL2NvbW1vbi9hcmdvLmMgYi94ZW4vY29tbW9uL2FyZ28uYwppbmRleCBlZDUwNDE1Li42 ZmJkMGE2IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2FyZ28uYworKysgYi94ZW4vY29tbW9uL2Fy Z28uYwpAQCAtMjksMTIgKzI5LDE1IEBACiAjaW5jbHVkZSA8cHVibGljL2FyZ28uaD4KIAogI2Rl ZmluZSBBUkdPX01BWF9SSU5HU19QRVJfRE9NQUlOICAgICAgIDEyOFUKKyNkZWZpbmUgQVJHT19N QVhfTk9USUZZX0NPVU5UICAgICAgICAgICAyNTZVCiAKIERFRklORV9YRU5fR1VFU1RfSEFORExF KHhlbl9hcmdvX3BhZ2VfZGVzY3JfdCk7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJn b19hZGRyX3QpOwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29faW92X3QpOwogREVG SU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fc2VuZF9hZGRyX3QpOwogREVGSU5FX1hFTl9H VUVTVF9IQU5ETEUoeGVuX2FyZ29fcmluZ190KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhl bl9hcmdvX3JpbmdfZGF0YV90KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3Jp bmdfZGF0YV9lbnRfdCk7CiBERUNMQVJFX1hFTl9HVUVTVF9IQU5ETEVfTlVMTCh1aW50OF90KTsK IAogLyogcGZuIHR5cGU6IDY0LWJpdCBvbiBhbGwgYXJjaGl0ZWN0dXJlcyAqLwpAQCAtMTM3LDYg KzE0MCwxMCBAQCBhcmdvX2hhc2goY29uc3Qgc3RydWN0IHhlbl9hcmdvX3JpbmdfaWQgKmlkKQog ICAgIHJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKgorYXJn b19yaW5nX2ZpbmRfaW5mb19ieV9tYXRjaChjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJf dCBwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21pZF90IHBhcnRuZXJfaWQs IHVpbnQ2NF90IHBhcnRuZXJfY29va2llKTsKKwogLyoKICAqIGxvY2tzCiAgKi8KQEAgLTE5Nyw2 ICsyMDQsMjggQEAgYXJnb19zaWduYWxfZG9tYWluKHN0cnVjdCBkb21haW4gKmQpCiAgICAgc2Vu ZF9ndWVzdF9nbG9iYWxfdmlycShkLCBWSVJRX0FSR09fTUVTU0FHRSk7CiB9CiAKK3N0YXRpYyB2 b2lkCithcmdvX3NpZ25hbF9kb21pZChkb21pZF90IGRvbWFpbl9pZCwgdWludDY0X3QgZG9tYWlu X2Nvb2tpZSkKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gZ2V0X2RvbWFpbl9ieV9pZChkb21h aW5faWQpOworCisgICAgaWYgKCAhZCApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICggIWQt PmFyZ28gKQorICAgICAgICBnb3RvIG91dDsKKyAgICAvKgorICAgICAqIFRoZSBjYWxsZXIgaG9s ZHMgUihMMSkgd2hpY2ggZW5zdXJlcyB0aGF0IGQtPmFyZ28gaXMgc3RhYmxlLgorICAgICAqIFNp bmNlIHRoZSBkb21haW5fY29va2llIGlzIG5ldmVyIG1vZGlmaWVkIHdoaWxlIGQtPmFyZ28gaXMg dmFsaWQKKyAgICAgKiB3ZSBkbyBub3QgbmVlZCB0byBhcXVpcmUgUihMMikgdG8gcmVhZCB0aGUg Y29va2llIGhlcmUuCisgICAgICovCisgICAgaWYgKCBkLT5hcmdvLT5kb21haW5fY29va2llID09 IGRvbWFpbl9jb29raWUgKQorICAgICAgICBhcmdvX3NpZ25hbF9kb21haW4oZCk7CisKKyBvdXQ6 CisgICAgcHV0X2RvbWFpbihkKTsKK30KKwogLyoKICAqIHJpbmcgYnVmZmVyCiAgKi8KQEAgLTM4 OCw2ICs0MTcsNjAgQEAgYXJnb19yaW5nYnVmX2dldF9yeF9wdHIoc3RydWN0IGFyZ29fcmluZ19p bmZvICpyaW5nX2luZm8sIHVpbnQzMl90ICpyeF9wdHIpCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0 YXRpYyB1aW50MzJfdAorYXJnb19yaW5nYnVmX3BheWxvYWRfc3BhY2Uoc3RydWN0IGRvbWFpbiAq ZCwgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8pCit7CisgICAgeGVuX2FyZ29fcmlu Z190IHJpbmc7CisgICAgaW50MzJfdCByZXQ7CisKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQo JnJpbmdfaW5mby0+bG9jaykpOworCisgICAgcmluZy5sZW4gPSByaW5nX2luZm8tPmxlbjsKKyAg ICBpZiAoICFyaW5nLmxlbiApCisgICAgICAgIHJldHVybiAwOworCisgICAgcmluZy50eF9wdHIg PSByaW5nX2luZm8tPnR4X3B0cjsKKworICAgIGlmICggYXJnb19yaW5nYnVmX2dldF9yeF9wdHIo cmluZ19pbmZvLCAmcmluZy5yeF9wdHIpICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBhcmdv X2RwcmludGsoImFyZ29fcmluZ2J1Zl9wYXlsb2FkX3NwYWNlOiB0eF9wdHI9JWQgcnhfcHRyPSVk XG4iLAorICAgICAgICAgICAgICAgICByaW5nLnR4X3B0ciwgcmluZy5yeF9wdHIpOworCisgICAg LyoKKyAgICAgKiByeF9wdHIgPT0gdHhfcHRyIG1lYW5zIHRoYXQgdGhlIHJpbmcgaGFzIGJlZW4g ZW1wdGllZCwgc28gcmV0dXJuCisgICAgICogdGhlIG1heGltdW0gcGF5bG9hZCBzaXplIHRoYXQg Y2FuIGJlIGFjY2VwdGVkIC0tIHNlZSBtZXNzYWdlIHNpemUKKyAgICAgKiBjaGVja2luZyBsb2dp YyBpbiB0aGUgZW50cnkgdG8gYXJnb19yaW5nYnVmX2luc2VydCB3aGljaCBlbnN1cmVzIHRoYXQK KyAgICAgKiB0aGVyZSBpcyBhbHdheXMgb25lIG1lc3NhZ2Ugc2xvdCAob2Ygc2l6ZSBYRU5fQVJH T19ST1VORFVQKDEpKSBsZWZ0CisgICAgICogYXZhaWxhYmxlLCBwcmV2ZW50aW5nIGEgcmluZyBm cm9tIGJlaW5nIGVudGlyZWx5IGZpbGxlZC4gVGhpcyBlbnN1cmVzCisgICAgICogdGhhdCBtYXRj aGluZyByaW5nIGluZGV4ZXMgYWx3YXlzIGluZGljYXRlIGFuIGVtcHR5IHJpbmcgYW5kIG5vdCBh CisgICAgICogZnVsbCBvbmUuCisgICAgICogVGhlIHN1YnRyYWN0aW9uIGhlcmUgd2lsbCBub3Qg dW5kZXJmbG93IGR1ZSB0byBtaW5pbXVtIHNpemUgY29uc3RyYWludHMKKyAgICAgKiBlbmZvcmNl ZCBvbiByaW5nIHNpemUgZWxzZXdoZXJlLgorICAgICAqLworICAgIGlmICggcmluZy5yeF9wdHIg PT0gcmluZy50eF9wdHIgKQorICAgICAgICByZXR1cm4gcmluZy5sZW4gLSBzaXplb2Yoc3RydWN0 IHhlbl9hcmdvX3JpbmdfbWVzc2FnZV9oZWFkZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAt IFhFTl9BUkdPX1JPVU5EVVAoMSk7CisKKyAgICByZXQgPSByaW5nLnJ4X3B0ciAtIHJpbmcudHhf cHRyOworICAgIGlmICggcmV0IDwgMCApCisgICAgICAgIHJldCArPSByaW5nLmxlbjsKKworICAg IC8qCisgICAgICogVGhlIG1heGltdW0gc2l6ZSBwYXlsb2FkIGZvciBhIG1lc3NhZ2UgdGhhdCB3 aWxsIGJlIGFjY2VwdGVkIGlzOgorICAgICAqICh0aGUgYXZhaWxhYmxlIHNwYWNlIGJldHdlZW4g dGhlIHJpbmcgaW5kZXhlcykKKyAgICAgKiAgICBtaW51cyAoc3BhY2UgZm9yIGEgbWVzc2FnZSBo ZWFkZXIpCisgICAgICogICAgbWludXMgKHNwYWNlIGZvciBvbmUgbWVzc2FnZSBzbG90KQorICAg ICAqIHNpbmNlIGFyZ29fcmluZ2J1Zl9pbnNlcnQgcmVxdWlyZXMgdGhhdCBvbmUgbWVzc2FnZSBz bG90IGJlIGxlZnQKKyAgICAgKiB1bmZpbGxlZCwgdG8gYXZvaWQgZmlsbGluZyB0aGUgcmluZyB0 byBjYXBhY2l0eSBhbmQgY29uZnVzaW5nIGEgZnVsbAorICAgICAqIHJpbmcgd2l0aCBhbiBlbXB0 eSBvbmUuCisgICAgICovCisgICAgcmV0IC09IHNpemVvZihzdHJ1Y3QgeGVuX2FyZ29fcmluZ19t ZXNzYWdlX2hlYWRlcik7CisgICAgcmV0IC09IFhFTl9BUkdPX1JPVU5EVVAoMSk7CisKKyAgICBy ZXR1cm4gKHJldCA8IDApID8gMCA6IHJldDsKK30KKwogLyoKICAqIGFyZ29fc2FuaXRpemVfcmlu ZyBjcmVhdGVzIGEgbW9kaWZpZWQgY29weSBvZiB0aGUgcmluZyBwb2ludGVycwogICogd2hlcmUg dGhlIHJ4X3B0ciBpcyByb3VuZGVkIHVwIHRvIGVuc3VyZSBpdCBpcyBhbGlnbmVkLCBhbmQgdGhl bgpAQCAtODM1LDYgKzkxOCw1OCBAQCBhcmdvX3BlbmRpbmdfcmVtb3ZlX2FsbChzdHJ1Y3QgYXJn b19yaW5nX2luZm8gKnJpbmdfaW5mbykKICAgICAgICAgYXJnb19wZW5kaW5nX3JlbW92ZV9lbnQo cGVuZGluZ19lbnQpOwogfQogCitzdGF0aWMgdm9pZAorYXJnb19wZW5kaW5nX25vdGlmeShzdHJ1 Y3QgaGxpc3RfaGVhZCAqdG9fbm90aWZ5KQoreworICAgIHN0cnVjdCBobGlzdF9ub2RlICpub2Rl LCAqbmV4dDsKKyAgICBzdHJ1Y3QgYXJnb19wZW5kaW5nX2VudCAqZW50OworCisgICAgQVNTRVJU KHJ3X2lzX2xvY2tlZCgmYXJnb19sb2NrKSk7CisKKyAgICBobGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKGVudCwgbm9kZSwgbmV4dCwgdG9fbm90aWZ5LCBub2RlKQorICAgIHsKKyAgICAgICAgaGxp c3RfZGVsKCZlbnQtPm5vZGUpOworICAgICAgICBhcmdvX3NpZ25hbF9kb21pZChlbnQtPmRvbWFp bl9pZCwgZW50LT5kb21haW5fY29va2llKTsKKyAgICAgICAgeGZyZWUoZW50KTsKKyAgICB9Cit9 CisKK3N0YXRpYyB2b2lkCithcmdvX3BlbmRpbmdfZmluZChjb25zdCBzdHJ1Y3QgZG9tYWluICpk LCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbywKKyAgICAgICAgICAgICAgICAgIHVp bnQzMl90IHBheWxvYWRfc3BhY2UsIHN0cnVjdCBobGlzdF9oZWFkICp0b19ub3RpZnkpCit7Cisg ICAgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUsICpuZXh0OworICAgIHN0cnVjdCBhcmdvX3BlbmRp bmdfZW50ICplbnQ7CisKKyAgICBBU1NFUlQocndfaXNfbG9ja2VkKCZkLT5hcmdvLT5sb2NrKSk7 CisKKyAgICAvKgorICAgICAqIFRPRE86IEN1cnJlbnQgcG9saWN5IGhlcmUgaXMgdG8gc2lnbmFs IF9hbGxfIG9mIHRoZSB3YWl0aW5nIGRvbWFpbnMKKyAgICAgKiAgICAgICBpbnRlcmVzdGVkIGlu IHNlbmRpbmcgYSBtZXNzYWdlIG9mIHNpemUgbGVzcyB0aGFuIHBheWxvYWRfc3BhY2UuCisgICAg ICoKKyAgICAgKiBUaGlzIGlzIGxpa2VseSB0byBiZSBzdWJvcHRpbWFsLCBzaW5jZSBvbmNlIG9u ZSBvZiB0aGVtIGhhcyBhZGRlZAorICAgICAqIHRoZWlyIG1lc3NhZ2UgdG8gdGhlIHJpbmcsIHRo ZXJlIG1heSB3ZWxsIGJlIGluc3VmZmljaWVudCByb29tCisgICAgICogYXZhaWxhYmxlIGZvciBh bnkgb2YgdGhlIG90aGVycyB0byB0cmFuc21pdCwgbWVhbmluZyB0aGF0IHRoZXkgd2VyZQorICAg ICAqIHdva2VuIGluIHZhaW4sIHdoaWNoIGNyZWF0ZWQgZXh0cmEgd29yayBqdXN0IHRvIHJlcXVl dWUgdGhlaXIgd2FpdC4KKyAgICAgKgorICAgICAqIFJldGFpbiB0aGlzIHNpbXBsZSBwb2xpY3kg Zm9yIG5vdyBzaW5jZSBpdCBhdCBsZWFzdCBhdm9pZHMgc3RhcnZpbmcgYQorICAgICAqIGRvbWFp biBvZiBhdmFpbGFibGUgc3BhY2Ugbm90aWZpY2F0aW9ucyBiZWNhdXNlIG9mIGEgcG9saWN5IHRo YXQgb25seQorICAgICAqIG5vdGlmaWVkIG90aGVyIGRvbWFpbnMgaW5zdGVhZC4gSW1wcm92ZW1l bnQgbWF5IGJlIHBvc3NpYmxlOworICAgICAqIGludmVzdGlnYXRpb24gcmVxdWlyZWQuCisgICAg ICovCisKKyAgICBzcGluX2xvY2soJnJpbmdfaW5mby0+bG9jayk7CisgICAgaGxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShlbnQsIG5vZGUsIG5leHQsICZyaW5nX2luZm8tPnBlbmRpbmcsIG5vZGUp CisgICAgeworICAgICAgICBpZiAoIHBheWxvYWRfc3BhY2UgPj0gZW50LT5sZW4gKQorICAgICAg ICB7CisgICAgICAgICAgICBobGlzdF9kZWwoJmVudC0+bm9kZSk7CisgICAgICAgICAgICBobGlz dF9hZGRfaGVhZCgmZW50LT5ub2RlLCB0b19ub3RpZnkpOworICAgICAgICB9CisgICAgfQorICAg IHNwaW5fdW5sb2NrKCZyaW5nX2luZm8tPmxvY2spOworfQorCiBzdGF0aWMgaW50CiBhcmdvX3Bl bmRpbmdfcXVldWUoc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8sIGRvbWlkX3Qgc3Jj X2lkLAogICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNyY19jb29raWUsIHVuc2lnbmVkIGlu dCBsZW4pCkBAIC04OTAsNiArMTAyNSwyNiBAQCBhcmdvX3BlbmRpbmdfcmVxdWV1ZShzdHJ1Y3Qg YXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbywgZG9taWRfdCBzcmNfaWQsCiAgICAgcmV0dXJuIGFy Z29fcGVuZGluZ19xdWV1ZShyaW5nX2luZm8sIHNyY19pZCwgc3JjX2Nvb2tpZSwgbGVuKTsKIH0K IAorc3RhdGljIHZvaWQKK2FyZ29fcGVuZGluZ19jYW5jZWwoc3RydWN0IGFyZ29fcmluZ19pbmZv ICpyaW5nX2luZm8sIGRvbWlkX3Qgc3JjX2lkLAorICAgICAgICAgICAgICAgICAgICB1aW50NjRf dCBzcmNfY29va2llKQoreworICAgIHN0cnVjdCBobGlzdF9ub2RlICpub2RlLCAqbmV4dDsKKyAg ICBzdHJ1Y3QgYXJnb19wZW5kaW5nX2VudCAqZW50OworCisgICAgQVNTRVJUKHNwaW5faXNfbG9j a2VkKCZyaW5nX2luZm8tPmxvY2spKTsKKworICAgIGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo ZW50LCBub2RlLCBuZXh0LCAmcmluZ19pbmZvLT5wZW5kaW5nLCBub2RlKQorICAgIHsKKyAgICAg ICAgaWYgKCAoZW50LT5kb21haW5faWQgPT0gc3JjX2lkKSAmJgorICAgICAgICAgICAgIChlbnQt PmRvbWFpbl9jb29raWUgPT0gc3JjX2Nvb2tpZSkgKQorICAgICAgICB7CisgICAgICAgICAgICBo bGlzdF9kZWwoJmVudC0+bm9kZSk7CisgICAgICAgICAgICB4ZnJlZShlbnQpOworICAgICAgICB9 CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCBhcmdvX3JpbmdfcmVtb3ZlX21mbnMoY29uc3Qgc3Ry dWN0IGRvbWFpbiAqZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg YXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKIHsKQEAgLTkzMiw2ICsxMDg3LDExMCBAQCBhcmdv X3JpbmdfcmVtb3ZlX2luZm8oc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZv ICpyaW5nX2luZm8pCiAgICAgeGZyZWUocmluZ19pbmZvKTsKIH0KIAorLyogcmluZyBkYXRhICov CisKK3N0YXRpYyBpbnQKK2FyZ29fZmlsbF9yaW5nX2RhdGEoY29uc3Qgc3RydWN0IGRvbWFpbiAq c3JjX2QsCisgICAgICAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fcmlu Z19kYXRhX2VudF90KSBkYXRhX2VudF9obmQpCit7CisgICAgeGVuX2FyZ29fcmluZ19kYXRhX2Vu dF90IGVudDsKKyAgICBkb21pZF90IHNyY19pZDsKKyAgICBzdHJ1Y3QgZG9tYWluICpkc3RfZDsK KyAgICBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbzsKKyAgICBpbnQgcmV0OworCisg ICAgQVNTRVJUKHJ3X2lzX2xvY2tlZCgmYXJnb19sb2NrKSk7CisKKyAgICByZXQgPSBjb3B5X2Zy b21fZ3Vlc3RfZXJybm8oJmVudCwgZGF0YV9lbnRfaG5kLCAxKTsKKyAgICBpZiAoIHJldCApCisg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICBhcmdvX2RwcmludGsoImFyZ29fZmlsbF9yaW5nX2Rh dGE6IGVudC5yaW5nLmRvbWFpbj0ldSxlbnQucmluZy5wb3J0PSV4XG4iLAorICAgICAgICAgICAg ICAgICBlbnQucmluZy5kb21haW5faWQsIGVudC5yaW5nLnBvcnQpOworCisgICAgc3JjX2lkID0g c3JjX2QtPmRvbWFpbl9pZDsKKyAgICBlbnQuZmxhZ3MgPSAwOworCisgICAgZHN0X2QgPSBnZXRf ZG9tYWluX2J5X2lkKGVudC5yaW5nLmRvbWFpbl9pZCk7CisKKyAgICBpZiAoIGRzdF9kICYmIGRz dF9kLT5hcmdvICkKKyAgICB7CisgICAgICAgIHJlYWRfbG9jaygmZHN0X2QtPmFyZ28tPmxvY2sp OworCisgICAgICAgIHJpbmdfaW5mbyA9IGFyZ29fcmluZ19maW5kX2luZm9fYnlfbWF0Y2goZHN0 X2QsIGVudC5yaW5nLnBvcnQsIHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzcmNfZC0+YXJnby0+ZG9tYWluX2Nvb2tpZSk7CisKKyAgICAg ICAgaWYgKCByaW5nX2luZm8gKQorICAgICAgICB7CisgICAgICAgICAgICB1aW50MzJfdCBzcGFj ZV9hdmFpbDsKKworICAgICAgICAgICAgZW50LmZsYWdzIHw9IFhFTl9BUkdPX1JJTkdfREFUQV9G X0VYSVNUUzsKKyAgICAgICAgICAgIGVudC5tYXhfbWVzc2FnZV9zaXplID0KKyAgICAgICAgICAg ICAgICByaW5nX2luZm8tPmxlbiAtIHNpemVvZihzdHJ1Y3QgeGVuX2FyZ29fcmluZ19tZXNzYWdl X2hlYWRlcikgLQorICAgICAgICAgICAgICAgIFhFTl9BUkdPX1JPVU5EVVAoMSk7CisKKyAgICAg ICAgICAgIHNwaW5fbG9jaygmcmluZ19pbmZvLT5sb2NrKTsKKworICAgICAgICAgICAgc3BhY2Vf YXZhaWwgPSBhcmdvX3JpbmdidWZfcGF5bG9hZF9zcGFjZShkc3RfZCwgcmluZ19pbmZvKTsKKwor ICAgICAgICAgICAgYXJnb19kcHJpbnRrKCJhcmdvX2ZpbGxfcmluZ19kYXRhOiBwb3J0PSV4IHNw YWNlX2F2YWlsPSV1IgorICAgICAgICAgICAgICAgICAgICAgICAgICIgc3BhY2Vfd2FudGVkPSV1 XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQuYWRkci5wb3J0LCBz cGFjZV9hdmFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbnQuc3BhY2VfcmVxdWlyZWQp OworCisgICAgICAgICAgICBpZiAoIHNwYWNlX2F2YWlsID49IGVudC5zcGFjZV9yZXF1aXJlZCAp CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYXJnb19wZW5kaW5nX2NhbmNlbChyaW5n X2luZm8sIHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY19k LT5hcmdvLT5kb21haW5fY29va2llKTsKKyAgICAgICAgICAgICAgICBlbnQuZmxhZ3MgfD0gWEVO X0FSR09fUklOR19EQVRBX0ZfU1VGRklDSUVOVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhcmdvX3BlbmRpbmdfcmVxdWV1 ZShyaW5nX2luZm8sIHNyY19pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzcmNfZC0+YXJnby0+ZG9tYWluX2Nvb2tpZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlbnQuc3BhY2VfcmVxdWlyZWQpOworICAgICAgICAgICAgICAgIGVudC5mbGFn cyB8PSBYRU5fQVJHT19SSU5HX0RBVEFfRl9QRU5ESU5HOworICAgICAgICAgICAgfQorCisgICAg ICAgICAgICBzcGluX3VubG9jaygmcmluZ19pbmZvLT5sb2NrKTsKKworICAgICAgICAgICAgaWYg KCBzcGFjZV9hdmFpbCA9PSBlbnQubWF4X21lc3NhZ2Vfc2l6ZSApCisgICAgICAgICAgICAgICAg ZW50LmZsYWdzIHw9IFhFTl9BUkdPX1JJTkdfREFUQV9GX0VNUFRZOworCisgICAgICAgIH0KKyAg ICAgICAgcmVhZF91bmxvY2soJmRzdF9kLT5hcmdvLT5sb2NrKTsKKyAgICB9CisKKyAgICBpZiAo IGRzdF9kICkKKyAgICAgICAgcHV0X2RvbWFpbihkc3RfZCk7CisKKyAgICByZXQgPSBfX2NvcHlf ZmllbGRfdG9fZ3Vlc3RfZXJybm8oZGF0YV9lbnRfaG5kLCAmZW50LCBmbGFncyk7CisgICAgaWYg KCByZXQgKQorICAgICAgICByZXR1cm4gcmV0OworICAgIHJldCA9IF9fY29weV9maWVsZF90b19n dWVzdF9lcnJubyhkYXRhX2VudF9obmQsICZlbnQsIG1heF9tZXNzYWdlX3NpemUpOworICAgIGlm ICggcmV0ICkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHJldHVybiAwOworfQorCitzdGF0 aWMgaW50CithcmdvX2ZpbGxfcmluZ19kYXRhX2FycmF5KHN0cnVjdCBkb21haW4gKmN1cnJkLCBp bnQgbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5f YXJnb19yaW5nX2RhdGFfZW50X3QpIGRhdGFfaG5kKQoreworICAgIGludCByZXQgPSAwOworCisg ICAgQVNTRVJUKHJ3X2lzX2xvY2tlZCgmYXJnb19sb2NrKSk7CisKKyAgICB3aGlsZSAoICFyZXQg JiYgbmVudC0tICkKKyAgICB7CisgICAgICAgIHJldCA9IGFyZ29fZmlsbF9yaW5nX2RhdGEoY3Vy cmQsIGRhdGFfaG5kKTsKKyAgICAgICAgZ3Vlc3RfaGFuZGxlX2FkZF9vZmZzZXQoZGF0YV9obmQs IDEpOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKIC8qIHJpbmcgKi8KIAogc3RhdGlj IGludApAQCAtMTQ5OSw2ICsxNzU4LDExNiBAQCBhcmdvX3JlZ2lzdGVyX3Jpbmcoc3RydWN0IGRv bWFpbiAqY3VycmQsCiAgKiBpbwogICovCiAKK3N0YXRpYyB2b2lkCithcmdvX25vdGlmeV9yaW5n KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLAorICAg ICAgICAgICAgICAgIHN0cnVjdCBobGlzdF9oZWFkICp0b19ub3RpZnkpCit7CisgICAgdWludDMy X3Qgc3BhY2U7CisKKyAgICBBU1NFUlQocndfaXNfbG9ja2VkKCZhcmdvX2xvY2spKTsKKyAgICBB U1NFUlQocndfaXNfbG9ja2VkKCZkLT5hcmdvLT5sb2NrKSk7CisKKyAgICBzcGluX2xvY2soJnJp bmdfaW5mby0+bG9jayk7CisKKyAgICBpZiAoIHJpbmdfaW5mby0+bGVuICkKKyAgICAgICAgc3Bh Y2UgPSBhcmdvX3JpbmdidWZfcGF5bG9hZF9zcGFjZShkLCByaW5nX2luZm8pOworICAgIGVsc2UK KyAgICAgICAgc3BhY2UgPSAwOworCisgICAgc3Bpbl91bmxvY2soJnJpbmdfaW5mby0+bG9jayk7 CisKKyAgICBpZiAoIHNwYWNlICkKKyAgICAgICAgYXJnb19wZW5kaW5nX2ZpbmQoZCwgcmluZ19p bmZvLCBzcGFjZSwgdG9fbm90aWZ5KTsKK30KKworc3RhdGljIHZvaWQKK2FyZ29fbm90aWZ5X2No ZWNrX3BlbmRpbmcoc3RydWN0IGRvbWFpbiAqY3VycmQpCit7CisgICAgdW5zaWduZWQgaW50IGk7 CisgICAgSExJU1RfSEVBRCh0b19ub3RpZnkpOworCisgICAgQVNTRVJUKHJ3X2lzX2xvY2tlZCgm YXJnb19sb2NrKSk7CisKKyAgICByZWFkX2xvY2soJmN1cnJkLT5hcmdvLT5sb2NrKTsKKworICAg IGZvciAoIGkgPSAwOyBpIDwgQVJHT19IVEFCTEVfU0laRTsgaSsrICkKKyAgICB7CisgICAgICAg IHN0cnVjdCBobGlzdF9ub2RlICpub2RlLCAqbmV4dDsKKyAgICAgICAgc3RydWN0IGFyZ29fcmlu Z19pbmZvICpyaW5nX2luZm87CisKKyAgICAgICAgaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShy aW5nX2luZm8sIG5vZGUsIG5leHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmN1cnJkLT5hcmdvLT5yaW5nX2hhc2hbaV0sIG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAg IGFyZ29fbm90aWZ5X3JpbmcoY3VycmQsIHJpbmdfaW5mbywgJnRvX25vdGlmeSk7CisgICAgICAg IH0KKyAgICB9CisKKyAgICByZWFkX3VubG9jaygmY3VycmQtPmFyZ28tPmxvY2spOworCisgICAg aWYgKCAhaGxpc3RfZW1wdHkoJnRvX25vdGlmeSkgKQorICAgICAgICBhcmdvX3BlbmRpbmdfbm90 aWZ5KCZ0b19ub3RpZnkpOworfQorCitzdGF0aWMgbG9uZworYXJnb19ub3RpZnkoc3RydWN0IGRv bWFpbiAqY3VycmQsCisgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9hcmdv X3JpbmdfZGF0YV90KSByaW5nX2RhdGFfaG5kKQoreworICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVu X2FyZ29fcmluZ19kYXRhX2VudF90KSBlbnRfaG5kOworICAgIHhlbl9hcmdvX3JpbmdfZGF0YV90 IHJpbmdfZGF0YTsKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIHJlYWRfbG9jaygmYXJnb19sb2Nr KTsKKworICAgIGlmICggIWN1cnJkLT5hcmdvICkKKyAgICB7CisgICAgICAgIGFyZ29fZHByaW50 aygiIWQtPmFyZ28sIEVOT0RFVlxuIik7CisgICAgICAgIHJldCA9IC1FTk9ERVY7CisgICAgICAg IGdvdG8gb3V0OworICAgIH0KKworICAgIGFyZ29fbm90aWZ5X2NoZWNrX3BlbmRpbmcoY3VycmQp OworCisgICAgaWYgKCAhZ3Vlc3RfaGFuZGxlX2lzX251bGwocmluZ19kYXRhX2huZCkgKQorICAg IHsKKyAgICAgICAgcmV0ID0gY29weV9mcm9tX2d1ZXN0X2Vycm5vKCZyaW5nX2RhdGEsIHJpbmdf ZGF0YV9obmQsIDEpOworICAgICAgICBpZiAoIHJldCApCisgICAgICAgICAgICBnb3RvIG91dDsK KworICAgICAgICAvKgorICAgICAgICAgKiBCZWZvcmUgcGVyZm9ybWluZyBhIGh5cGVydmlzb3Ig d3JpdGUgaW50byBndWVzdCBtZW1vcnksIHZhbGlkYXRlCisgICAgICAgICAqIHRoYXQgaXQgaXMg bWVtb3J5IHRoYXQgdGhlIGd1ZXN0IGV4cGVjdHMgdGhlc2Ugd3JpdGVzIGludG8gYnkKKyAgICAg ICAgICogY2hlY2tpbmcgdGhhdCB0aGUgJ21hZ2ljJyBmaWVsZCBjb250YWlucyB0aGUgZXhwZWN0 ZWQgdmFsdWUuCisgICAgICAgICAqLworICAgICAgICBpZiAoIHJpbmdfZGF0YS5tYWdpYyAhPSBY RU5fQVJHT19SSU5HX0RBVEFfTUFHSUMgKQorICAgICAgICB7CisgICAgICAgICAgICBncHJpbnRr KFhFTkxPR19FUlIsCisgICAgICAgICAgICAgICAgImFyZ286IGluY29ycmVjdCByaW5nX2RhdGEu bWFnaWMoJSJQUkl4NjQiKSB2cyAoJWxseClcbiIsCisgICAgICAgICAgICAgICAgcmluZ19kYXRh Lm1hZ2ljLCBYRU5fQVJHT19SSU5HX0RBVEFfTUFHSUMpOworICAgICAgICAgICAgcmV0ID0gLUVJ TlZBTDsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBy aW5nX2RhdGEubmVudCA+IEFSR09fTUFYX05PVElGWV9DT1VOVCApCisgICAgICAgIHsKKyAgICAg ICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgImFyZ286IG5v dGlmeSBlbnRyeSBjb3VudCgldSkgZXhjZWVkcyBtYXgoJXUpXG4iLAorICAgICAgICAgICAgICAg ICAgICByaW5nX2RhdGEubmVudCwgQVJHT19NQVhfTk9USUZZX0NPVU5UKTsKKyAgICAgICAgICAg IHJldCA9IC1FQUNDRVM7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorCisgICAg ICAgIGVudF9obmQgPSBndWVzdF9oYW5kbGVfZm9yX2ZpZWxkKHJpbmdfZGF0YV9obmQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhlbl9hcmdvX3JpbmdfZGF0YV9l bnRfdCwgZGF0YVswXSk7CisKKyAgICAgICAgcmV0ID0gYXJnb19maWxsX3JpbmdfZGF0YV9hcnJh eShjdXJyZCwgcmluZ19kYXRhLm5lbnQsIGVudF9obmQpOworICAgIH0KKworIG91dDoKKyAgICBy ZWFkX3VubG9jaygmYXJnb19sb2NrKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBs b25nCiBhcmdvX3NlbmR2KHN0cnVjdCBkb21haW4gKnNyY19kLCBjb25zdCB4ZW5fYXJnb19hZGRy X3QgKnNyY19hZGRyLAogICAgICAgICAgICBjb25zdCB4ZW5fYXJnb19hZGRyX3QgKmRzdF9hZGRy LApAQCAtMTcwNCw2ICsyMDczLDIxIEBAIGRvX2FyZ29fbWVzc2FnZV9vcCh1bnNpZ25lZCBpbnQg Y21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZzEsCiAgICAgICAgIGJyZWFrOwog ICAgIH0KIAorICAgIGNhc2UgWEVOX0FSR09fTUVTU0FHRV9PUF9ub3RpZnk6CisgICAgeworICAg ICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9hcmdvX3JpbmdfZGF0YV90KSByaW5nX2Rh dGFfaG5kID0KKyAgICAgICAgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcxLCB4ZW5f YXJnb19yaW5nX2RhdGFfdCk7CisKKyAgICAgICAgaWYgKCB1bmxpa2VseSgoIWd1ZXN0X2hhbmRs ZV9pc19udWxsKGFyZzIpKSB8fCBhcmczIHx8IGFyZzQpICkKKyAgICAgICAgeworICAgICAgICAg ICAgcmMgPSAtRUlOVkFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAg ICByYyA9IGFyZ29fbm90aWZ5KGN1cnJkLCByaW5nX2RhdGFfaG5kKTsKKyAgICAgICAgYnJlYWs7 CisgICAgfQorCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmMgPSAtRU9QTk9UU1VQUDsKICAgICAg ICAgYnJlYWs7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20tYXJtL2d1ZXN0X2FjY2Vzcy5o IGIveGVuL2luY2x1ZGUvYXNtLWFybS9ndWVzdF9hY2Nlc3MuaAppbmRleCA1NDU2ZDgxLi5mYzcz NTcyIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2d1ZXN0X2FjY2Vzcy5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS1hcm0vZ3Vlc3RfYWNjZXNzLmgKQEAgLTEyNiw2ICsxMjYsMTEgQEAg aW50IGFjY2Vzc19ndWVzdF9tZW1vcnlfYnlfaXBhKHN0cnVjdCBkb21haW4gKmQsIHBhZGRyX3Qg aXBhLCB2b2lkICpidWYsCiAgICAgcmF3X2NvcHlfZnJvbV9ndWVzdChfZCwgX3MsIHNpemVvZigq X2QpKTsgICAgICAgICAgIFwKIH0pCiAKKy8qIEVycm5vLXJldHVybmluZyB2YXJpYW50IG9mIGNv cHlfZmllbGRfZnJvbV9ndWVzdCAqLworI2RlZmluZSBjb3B5X2ZpZWxkX2Zyb21fZ3Vlc3RfZXJy bm8ocHRyLCBobmQsIGZpZWxkKSAgICBcCisgICAgKGNvcHlfZmllbGRfZnJvbV9ndWVzdCgocHRy KSwgKGhuZCksIGZpZWxkKSA/ICAgICAgIFwKKyAgICAgICAgLUVGQVVMVCA6IDApCisKIC8qCiAg KiBQcmUtdmFsaWRhdGUgYSBndWVzdCBoYW5kbGUuCiAgKiBBbGxvd3MgdXNlIG9mIGZhc3RlciBf X2NvcHlfKiBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0 X2FjY2Vzcy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9ndWVzdF9hY2Nlc3MuaAppbmRleCA5MTc2 MTUwLi4wOWIxMzdhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2d1ZXN0X2FjY2Vz cy5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvZ3Vlc3RfYWNjZXNzLmgKQEAgLTEzMSw2ICsx MzEsMTEgQEAKICAgICByYXdfY29weV9mcm9tX2d1ZXN0KF9kLCBfcywgc2l6ZW9mKCpfZCkpOyAg ICAgICAgICAgXAogfSkKIAorLyogRXJybm8tcmV0dXJuaW5nIHZhcmlhbnQgb2YgY29weV9maWVs ZF9mcm9tX2d1ZXN0ICovCisjZGVmaW5lIGNvcHlfZmllbGRfZnJvbV9ndWVzdF9lcnJubyhwdHIs IGhuZCwgZmllbGQpICAgIFwKKyAgICAoY29weV9maWVsZF9mcm9tX2d1ZXN0KChwdHIpLCAoaG5k KSwgZmllbGQpID8gICAgICAgXAorICAgICAgICAtRUZBVUxUIDogMCkKKwogLyoKICAqIFByZS12 YWxpZGF0ZSBhIGd1ZXN0IGhhbmRsZS4KICAqIEFsbG93cyB1c2Ugb2YgZmFzdGVyIF9fY29weV8q IGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmggYi94ZW4v aW5jbHVkZS9wdWJsaWMvYXJnby5oCmluZGV4IGQwNzU5MzAuLjUxN2Y2MTUgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyZ28u aApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgInhlbi5oIgogCiAjZGVmaW5lIFhFTl9BUkdP X1JJTkdfTUFHSUMgICAgICAweGJkNjdlMTYzZTc3NzdmMmZVTEwKKyNkZWZpbmUgWEVOX0FSR09f UklOR19EQVRBX01BR0lDIDB4Y2NlNGQzMGZiYzgyZTkyYVVMTAogI2RlZmluZSBYRU5fQVJHT19E T01JRF9BTlkgICAgICAgRE9NSURfSU5WQUxJRAogCiAvKgpAQCAtMTMwLDYgKzEzMSw0NSBAQCB0 eXBlZGVmIHN0cnVjdCB4ZW5fYXJnb19yaW5nCiAgKi8KICNkZWZpbmUgWEVOX0FSR09fUk9VTkRV UChhKSAoKChhKSArIDB4ZikgJiB+KHR5cGVvZihhKSkweGYpCiAKKy8qCisgKiBOb3RpZnkgZmxh Z3MKKyAqLworLyogUmluZyBpcyBlbXB0eSAqLworI2RlZmluZSBYRU5fQVJHT19SSU5HX0RBVEFf Rl9FTVBUWSAgICAgICAoMVUgPDwgMCkKKy8qIFJpbmcgZXhpc3RzICovCisjZGVmaW5lIFhFTl9B UkdPX1JJTkdfREFUQV9GX0VYSVNUUyAgICAgICgxVSA8PCAxKQorLyogUGVuZGluZyBpbnRlcnJ1 cHQgZXhpc3RzLiBEbyBub3QgcmVseSBvbiB0aGlzIGZpZWxkIC0gZm9yIHByb2ZpbGluZyBvbmx5 ICovCisjZGVmaW5lIFhFTl9BUkdPX1JJTkdfREFUQV9GX1BFTkRJTkcgICAgICgxVSA8PCAyKQor LyogU3VmZmljaWVudCBzcGFjZSB0byBxdWV1ZSBzcGFjZV9yZXF1aXJlZCBieXRlcyBleGlzdHMg Ki8KKyNkZWZpbmUgWEVOX0FSR09fUklOR19EQVRBX0ZfU1VGRklDSUVOVCAgKDFVIDw8IDMpCisK K3R5cGVkZWYgc3RydWN0IHhlbl9hcmdvX3JpbmdfZGF0YV9lbnQKK3sKKyAgICB4ZW5fYXJnb19h ZGRyX3QgcmluZzsKKyAgICB1aW50MTZfdCBmbGFnczsKKyAgICB1aW50MTZfdCBwYWQ7CisgICAg dWludDMyX3Qgc3BhY2VfcmVxdWlyZWQ7CisgICAgdWludDMyX3QgbWF4X21lc3NhZ2Vfc2l6ZTsK K30geGVuX2FyZ29fcmluZ19kYXRhX2VudF90OworCit0eXBlZGVmIHN0cnVjdCB4ZW5fYXJnb19y aW5nX2RhdGEKK3sKKyAgICAvKgorICAgICAqIENvbnRlbnRzIG9mIHRoZSAnbWFnaWMnIGZpZWxk IGFyZSBpbnNwZWN0ZWQgdG8gdmVyaWZ5IHRoYXQgdGhleSBjb250YWluCisgICAgICogYW4gZXhw ZWN0ZWQgdmFsdWUgYmVmb3JlIHRoZSBoeXBlcnZpc29yIHdpbGwgcGVyZm9ybSB3cml0ZXMgaW50 byB0aGlzCisgICAgICogc3RydWN0dXJlIGluIGd1ZXN0LXN1cHBsaWVkIG1lbW9yeS4KKyAgICAg Ki8KKyAgICB1aW50NjRfdCBtYWdpYzsKKyAgICB1aW50MzJfdCBuZW50OworICAgIHVpbnQzMl90 IHBhZDsKKyAgICB1aW50NjRfdCByZXNlcnZlZFs0XTsKKyNpZiBkZWZpbmVkKF9fU1REQ19WRVJT SU9OX18pICYmIF9fU1REQ19WRVJTSU9OX18gPj0gMTk5OTAxTAorICAgIHhlbl9hcmdvX3Jpbmdf ZGF0YV9lbnRfdCBkYXRhW107CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICAgIHhlbl9hcmdv X3JpbmdfZGF0YV9lbnRfdCBkYXRhWzBdOworI2VuZGlmCit9IHhlbl9hcmdvX3JpbmdfZGF0YV90 OworCiBzdHJ1Y3QgeGVuX2FyZ29fcmluZ19tZXNzYWdlX2hlYWRlcgogewogICAgIHVpbnQzMl90 IGxlbjsKQEAgLTIwOSw2ICsyNDksMzMgQEAgc3RydWN0IHhlbl9hcmdvX3JpbmdfbWVzc2FnZV9o ZWFkZXIKICAqLwogI2RlZmluZSBYRU5fQVJHT19NRVNTQUdFX09QX3NlbmR2ICAgICAgICAgICAg ICAgNQogCisvKgorICogWEVOX0FSR09fTUVTU0FHRV9PUF9ub3RpZnkKKyAqCisgKiBBc2tzIFhl biBmb3IgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgcmluZ3MgaW4gdGhlIHN5c3RlbS4KKyAqCisg KiBlbnQtPnJpbmcgaXMgdGhlIHhlbl9hcmdvX2FkZHJfdCBvZiB0aGUgcmluZyB5b3Ugd2FudCBp bmZvcm1hdGlvbiBvbi4KKyAqIFVzZXMgdGhlIHNhbWUgcmluZyBtYXRjaGluZyBydWxlcyBhcyBY RU5fQVJHT19NRVNTQUdFX09QX3NlbmR2LgorICoKKyAqIGVudC0+c3BhY2VfcmVxdWlyZWQgOiBp ZiB0aGlzIGZpZWxkIGlzIG5vdCBudWxsIHRoZW4gWGVuIHdpbGwgY2hlY2sKKyAqIHRoYXQgdGhl cmUgaXMgc3BhY2UgaW4gdGhlIGRlc3RpbmF0aW9uIHJpbmcgZm9yIHRoaXMgbWFueSBieXRlcyBv ZiBwYXlsb2FkLgorICogSWYgc3VmZmljaWVudCBzcGFjZSBpcyBhdmFpbGFibGUsIGl0IHdpbGwg c2V0IFhFTl9BUkdPX1JJTkdfREFUQV9GX1NVRkZJQ0lFTlQKKyAqIGFuZCBDQU5DRUwgYW55IHBl bmRpbmcgbm90aWZpY2F0aW9uIGZvciB0aGF0IGVudC0+cmluZzsgb3RoZXJ3aXNlIGl0CisgKiB3 aWxsIHNjaGVkdWxlIGEgbm90aWZpY2F0aW9uIGV2ZW50IGFuZCB0aGUgZmxhZyB3aWxsIG5vdCBi ZSBzZXQuCisgKgorICogVGhlc2UgZmxhZ3MgYXJlIHNldCBieSBYZW4gd2hlbiBub3RpZnkgcmVw bGllczoKKyAqIFhFTl9BUkdPX1JJTkdfREFUQV9GX0VNUFRZICAgICAgcmluZyBpcyBlbXB0eQor ICogWEVOX0FSR09fUklOR19EQVRBX0ZfUEVORElORyAgICBub3RpZnkgZXZlbnQgaXMgcGVuZGlu ZyAqZG9uJ3QgcmVseSBvbiB0aGlzKgorICogWEVOX0FSR09fUklOR19EQVRBX0ZfU1VGRklDSUVO VCBzdWZmaWNpZW50IHNwYWNlIGZvciBzcGFjZV9yZXF1aXJlZCBpcyB0aGVyZQorICogWEVOX0FS R09fUklOR19EQVRBX0ZfRVhJU1RTICAgICByaW5nIGV4aXN0cworICoKKyAqIGFyZzE6IFhFTl9H VUVTVF9IQU5ETEUoeGVuX2FyZ29fcmluZ19kYXRhX3QpIHJpbmdfZGF0YSAobWF5IGJlIE5VTEwp CisgKiBhcmcyOiBOVUxMCisgKiBhcmczOiAwIChaRVJPKQorICogYXJnNDogMCAoWkVSTykKKyAq LworI2RlZmluZSBYRU5fQVJHT19NRVNTQUdFX09QX25vdGlmeSAgICAgICAgICAgICAgNAorCiAv KiBUaGUgbWF4aW11bSBzaXplIG9mIGEgZ3Vlc3QgbWVzc2FnZSB0aGF0IG1heSBiZSBzZW50IG9u IGFuIEFyZ28gcmluZy4gKi8KICNkZWZpbmUgWEVOX0FSR09fTUFYX01TR19TSVpFICgoWEVOX0FS R09fTUFYX1JJTkdfU0laRSkgLSBcCiAgICAgICAgIChzaXplb2Yoc3RydWN0IHhlbl9hcmdvX3Jp bmdfbWVzc2FnZV9oZWFkZXIpKSAtIFwKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hsYXQubHN0 IGIveGVuL2luY2x1ZGUveGxhdC5sc3QKaW5kZXggNzQyYjU0Ni4uNTNmMmY1MCAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUveGxhdC5sc3QKKysrIGIveGVuL2luY2x1ZGUveGxhdC5sc3QKQEAgLTE1 MywzICsxNTMsNSBAQAogPwlhcmdvX3JpbmcJCQlhcmdvLmgKID8JYXJnb19pb3YJCQlhcmdvLmgK ID8JYXJnb19zZW5kX2FkZHIJCQlhcmdvLmgKKz8JYXJnb19yaW5nX2RhdGFfZW50CQlhcmdvLmgK Kz8JYXJnb19yaW5nX2RhdGEJCQlhcmdvLmgKLS0gCjIuNy40CgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4t ZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9t YWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==