From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v5 10/15] argo: implement the notify op Date: Mon, 21 Jan 2019 01:59:50 -0800 Message-ID: <1548064795-18160-11-git-send-email-christopher.w.clark@gmail.com> References: <1548064795-18160-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 1glWNi-0003yW-Pe for xen-devel@lists.xenproject.org; Mon, 21 Jan 2019 10:00:38 +0000 Received: by mail-it1-x130.google.com with SMTP id c9so14357193itj.1 for ; Mon, 21 Jan 2019 02:00:36 -0800 (PST) In-Reply-To: <1548064795-18160-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: Juergen Gross , 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 dGEgc3RydWN0dXJlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQKcmluZyBzdGF0ZSBhbmQgaWYgaW5z dWZmaWNpZW50IHNwYWNlIGlzIGN1cnJlbnRseSBhdmFpbGFibGUgaW4gYSBnaXZlbiByaW5nLAp0 aGUgaHlwZXJ2aXNvciB3aWxsIHJlY29yZCB0aGUgZG9tYWluJ3MgZXhwcmVzc2VkIGludGVyZXN0 IGFuZCBub3RpZnkgaXQKd2hlbiBpdCBvYnNlcnZlcyB0aGF0IHNwYWNlIGhhcyBiZWNvbWUgYXZh aWxhYmxlLgoKQ2hlY2tzIGZvciBmcmVlIHNwYWNlIG9jY3VyIHdoZW4gdGhpcyBub3RpZnkgb3Ag aXMgaW52b2tlZCwgc28gaXQgbWF5IGJlCmludGVudGlvbmFsbHkgaW52b2tlZCB3aXRoIG5vIGRh dGEgc3RydWN0dXJlIHRvIHBvcHVsYXRlCihpZS4gYSBOVUxMIGFyZ3VtZW50KSB0byB0cmlnZ2Vy IHN1Y2ggYSBjaGVjayBhbmQgY29uc2VxdWVudCBub3RpZmljYXRpb25zLgoKTGltaXQgdGhlIG1h eGltdW0gbnVtYmVyIG9mIG5vdGlmeSByZXF1ZXN0cyBpbiBhIHNpbmdsZSBvcGVyYXRpb24gdG8g YQpzaW1wbGUgZml4ZWQgbGltaXQgb2YgMjU2LgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIg Q2xhcmsgPGNocmlzdG9waGVyLmNsYXJrNkBiYWVzeXN0ZW1zLmNvbT4KLS0tCnY0ICMxMCBSb2dl cjogY29uc29saWRhdGUgbm90aWZ5IGZsYWdzOyBpbmZlciBwZW5kaW5nIG5vdGlmeSBpZiBuZWVk ZWQKdjQgYnVnZml4OiB0YWtlIEwzIGJlZm9yZSBhY2Nlc3NpbmcgcmluZ19pbmZvIGluIGZpbGxf cmluZ19kYXRhCnY0ICMxMCBSb2dlcjogc2hvcnRlbiBub3RpZnkgZmxhZyBuYW1lczogZHJvcCBf REFUQV9GCnY0ICMxMCBzZWxmL1JvZ2VyOiBmaWxsX3JpbmdfZGF0YTogY2hlY2sgcGVuZGluZ19y ZXF1ZXVlIGVycm9yIGNvZGUKdjQgOiB1c2Ugc3RhbmRhcmQgZGF0YSBzdHJ1Y3R1cmVzIGFzIHBl ciBjb21tb24gY29kZQp2NCAjMTAgUm9nZXI6IGxvd2VyIGluZGVudGF0aW9uIGluIGZpbGxfcmlu Z19kYXRhIGJ5IHVzaW5nIGdvdG8KdjQgIzEwIFJvZ2VyOiByZXdvcmQgdGhlIFhFTl9BUkdPX1JJ TkdfREFUQV9GX1NVRkZJQ0lFTlQgY29tbWVudAp2NCBmaXggbG9jYXRpb24gb2YgYSBGSVhNRSB0 aGF0IHdhcyBpbmNvcnJlY3RseSBtb3ZlZCBieSB0aGlzIGxhdGVyIGNvbW1pdAoKdjMgIzA3IEph bjogZml4IGZvcm1hdCBzdHJpbmcgaW5kZW50aW9uIGluIHByaW50a3MKdjMgKGdlbmVyYWwpIEph bjogZHJvcCBmaXhlZCB3aWR0aCB0eXBlcyBmb3IgcmluZ2J1Zl9wYXlsb2FkX3NwYWNlCnYzICMw NyBKYW46IHJlbmFtZSByaW5nX2ZpbmRfaW5mb19ieV9tYXRjaCB0byBmaW5kX3JpbmdfaW5mb19i eV9tYXRjaAp2MyAjMDcgSmFuOiBmaXggbnVtZXJpYyBlbnRyaWVzIGluIHByaW50ayBmb3JtYXQg c3RyaW5ncwp2MzogcmluZ2J1Zl9wYXlsb2FkX3NwYWNlOiBzaW1wbGVyIHJldHVybiAwIGlmIGdl dF9zYW5pdGl6ZWRfcmluZyBmYWlscwp2MyAjMTAgUm9nZXI6IHNpbXBsaWZ5IHJpbmdidWZfcGF5 bG9hZF9zcGFjZSBmb3IgZW1wdHkgcmluZ3MKdjMgIzEwIFJvZ2VyOiByaW5nYnVmX3BheWxvYWRf c3BhY2U6IGFkZCBjb21tZW50IHRvIGV4cGxhaW4gaG93IHJldCA8IElOVDMyX01BWAp2MyAjMTAg Um9nZXI6IGRyb3Agb3V0IGxhYmVsLCB1c2UgcmV0dXJuIC1FRkFVTFQgaW4gZmlsbF9yaW5nX2Rh dGEKdjMgIzEwIFJvZ2VyOiBhZGQgbmV3bGluZSBpbiBzaWduYWxfZG9taWQKdjMgIzEwIFJvZ2Vy OiBtb3ZlIGZpbmQgZnVuY3Rpb25zIHRvIHRvcCBvZiBmaWxlIGFuZCBkcm9wIHByb3RvdHlwZXMK djMgIzA0IEphbjogbWVsZCB0aGUgY29tcGF0IGh5cGVyY2FsbCBhcmcgY2hlY2tpbmcKdjMgIzA0 IFJvZ2VyL0phbjogbWFrZSBsb2NrIG5hbWVzIGNsZWFyZXIgYW5kIGFzc2VydCB0aGVpciBzdGF0 ZQp2MyAjMDQgSmFuOiBwb3J0IC0+IGFwb3J0IHdpdGggdHlwZTsgZGlzdGluZ3Vpc2ggYXJnbyBw b3J0IGZyb20gZXZ0Y2huCnYzIHNlbGY6IGRyb3AgYnJhY2VzIGluIGZvcmVhY2ggb2Ygbm90aWZ5 X2NoZWNrX3BlbmRpbmcKdjMgZmVlZGJhY2sgUm9nZXIvSmFuOiBBU1NFUlQgY3VycmQgaXMgY3Vy cmVudC0+ZG9tYWluIG9yIHVzZSAnZCcgdmFyaWFibGUgbmFtZQoKdjIgZmVlZGJhY2sgSmFuOiBk cm9wIGNvb2tpZSwgaW1wbGVtZW50IHRlYXJkb3duCnYyIG5vdGlmeTogYWRkIGZsYWcgdG8gaW5k aWNhdGUgcmluZyBpcyBzaGFyZWQKdjIgYXJndW1lbnQgbmFtZSBmb3IgZmlsbF9yaW5nX2RhdGEg YXJnIGlzIG5vdyBjdXJyZAp2MiBzZWxmOiBjaGVjayByaW5nIHNpemUgdnMgcmVxdWVzdCBhbmQg ZmxhZyBlcnJvciByYXRoZXIgdGhhbiBxdWV1ZSBzaWduYWwKdjIgZmVlZGJhY2sgSmFuOiBkcm9w ICdtZXNzYWdlJyBmcm9tICdhcmdvX21lc3NhZ2Vfb3AnCnYyIHNlbGY6IHNpbXBsaWZ5IHNpZ25h bF9kb21pZCwgZHJvcCB1bm5lY2Vzc2FyeSBsYWJlbCArIGdvdG8KdjIgc2VsZjogc2tpcCB0aGUg Y29va2llIGNoZWNrIGluIHBlbmRpbmdfY2FuY2VsCnYyIHNlbGY6IGltcGxlbWVudCBucGVuZGlu ZyBsaW1pdCBvbiBudW1iZXIgb2YgcGVuZGluZyBlbnRyaWVzCnYxIGZlZWRiYWNrICMxNiBKYW46 IHNhbml0aXplX3JpbmcgaW4gcmluZ2J1Zl9wYXlsb2FkX3NwYWNlCnYyIHNlbGY6IGlubGluZSBm aWxsX3JpbmdfZGF0YV9hcnJheQp2MiBzZWxmOiBhdm9pZCByZXRlc3RpbmcgZHN0X2QgZm9yIHB1 dF9kb21haW4KdjIgc2VsZi9KYW46IHJlbW92ZSB1c2Ugb2YgbWFnaWMgdmVyaWZpY2F0aW9uIGZp ZWxkIGFuZCB0aWR5IHVwCnYxIGZlZWRiYWNrICMxNiBKYW46IHJlbW92ZSB0ZXN0aW5nIG9mIG1h Z2ljIGluIGd1ZXN0LXN1cHBsaWVkIHN0cnVjdHVyZQp2MiBzZWxmOiBzL2FyZ29fcGVuZGluZ19l bnQvcGVuZGluZ19lbnQvZwp2MiBmZWVkYmFjayB2MSMxMyBSb2dlcjogdXNlIE9TLXN1cHBsaWVk IHJvdW5kdXA7IGRyb3AgZnJvbSBwdWJsaWMgaGVhZGVyCnYxLDIgZmVlZGJhY2sgSmFuL1JvZ2Vy L1BhdWw6IGRyb3AgZXJybm8gcmV0dXJuaW5nIGd1ZXN0IGFjY2VzcyBmdW5jdGlvbnMKdjEgZmVl ZGJhY2sgUm9nZXIsIEphbjogZHJvcCBhcmdvIHByZWZpeCBvbiBzdGF0aWMgZnVuY3Rpb25zCnYy IHNlbGY6IHJlZHVjZSBpbmRlbnRhdGlvbiB2aWEgZ290byBvdXQgaWYgYXJnIE5VTEwKdjEgZmVl ZGJhY2sgIzEzIEphbjogcmVzb2x2ZSBjaGVja2luZyBvZiBhcnJheSBoYW5kbGUgYW5kIHVzZSBv ZiBfX2NvcHkKdjEgIzUgKCMxNikgZmVlZGJhY2sgUGF1bDogbm90aWZ5IG9wOiB1c2UgY3VycmQg aW4gZG9fYXJnb19tZXNzYWdlX29wCnYxICM1ICgjMTYpIGZlZWRiYWNrIFBhdWw6IG5vdGlmeSBv cDogdXNlIGN1cnJkIGluIGFyZ29fbm90aWZ5CnYxICM1ICgjMTYpIGZlZWRiYWNrIFBhdWw6IG5v dGlmeSBvcDogdXNlIGN1cnJkIGluIGFyZ29fbm90aWZ5X2NoZWNrX3BlbmRpbmcKdjEgIzUgKCMx NikgZmVlZGJhY2sgUGF1bDogbm90aWZ5IG9wOiB1c2UgY3VycmQgaW4gYXJnb19maWxsX3Jpbmdf ZGF0YV9hcnJheQp2MSAjMTMgKCMxNikgZmVlZGJhY2sgUGF1bDogbm90aWZ5IG9wOiBkby93aGls ZTogcmVpbmRlbnQgb25seQp2MSAjMTMgKCMxNikgZmVlZGJhY2sgUGF1bDogbm90aWZ5IG9wOiBk by93aGlsZTogZ290bwp2MSA6IGFkZCBjb21wYXQgeGxhdC5sc3QgZW50cmllcwp2MTogYWRkIGRl ZmluaXRpb24gZm9yIGNvcHlfZmllbGRfZnJvbV9ndWVzdF9lcnJubwp2MSAjMTMgZmVlZGJhY2sg SmFuOiBtYWtlICdyaW5nIGRhdGEnIGNvbW1lbnQgY29tcGx5IHdpdGggc2luZ2xlLWxpbmUgc3R5 bGUKdjEgZmVlZGJhY2sgIzEzIEphbjogdXNlIF9fY29weTsgc28gZGVmaW5lIGFuZCB1c2UgX19j b3B5X2ZpZWxkX3RvX2d1ZXN0X2Vycm5vCnYxOiAjMTMgZmVlZGJhY2sgSmFuOiBwdWJsaWMgbmFt ZXNwYWNlOiBwcmVmaXggd2l0aCB4ZW4KdjE6ICMxMyBmZWVkYmFjayBKYW46IGFkZCBibGFuayBs aW5lIGFmdGVyIGNhc2UgaW4gZG9fYXJnb19tZXNzYWdlX29wCnYxOiBzZWxmOiByZW5hbWUgZW50 IGlkIHRvIGRvbWFpbl9pZAp2MTogc2VsZjogZW50IGlkLT4gZG9tYWluX2lkCnYxOiBzZWxmOiBk cm9wIHNpZ25hbCBpZiBkb21haW5fY29va2llIG1pc21hdGNoZXMKdjEuIGZlZWRiYWNrICMxNSBK YW46IG1ha2UgbG9vcCBpIHVuc2lnbmVkCnYxLiBzZWxmOiBkcm9wIHVubmVjZXNzYXJ5IG1iKCkg aW4gYXJnb19ub3RpZnlfY2hlY2tfcGVuZGluZwp2MS4gc2VsZjogYWRkIGJsYW5rIGxpbmUKdjEg IzE2IGZlZWRiYWNrIEphbjogY29uc3QgZG9tYWluIGFyZyB0byArYXJnb19maWxsX3JpbmdfZGF0 YQp2MS4gZmVlZGJhY2sgIzE1IEphbjogY2hlY2sgdW51c3VlZCBoeXBlcmNhbGwgYXJncyBhcmUg emVybwp2MSBmZWVkYmFjayAjMTYgSmFuOiBhZGQgY29tbWVudCBvbiBzcGFjZSBhdmFpbGFibGUg c2lnbmFsIHBvbGljeQp2MS4gZmVlZGJhY2sgIzE2IEphbjogbW92ZSBkZWNsciwgZHJvcCBicmFj ZXMsIGxvd2VyIGluZGVudAp2MS4gZmVlZGJhY2sgIzE4IEphbjogbWVsZCB0aGUgcmVzb3VyY2Ug bGltaXRzIGludG8gdGhlIG1haW4gY29tbWl0CnYxLiBmZWVkYmFjayAjMTYgSmFuOiBjbGFyaWZ5 IHVzZSBvZiBtYWdpYyBmaWVsZAp2MS4gc2VsZjogdXNlIHNpbmdsZSBjb3B5IHRvIHJlYWQgbm90 aWZ5IHJpbmcgZGF0YSBzdHJ1Y3QKdjE6IGFyZ29fZmlsbF9yaW5nX2RhdGE6IGZpeCBkcHJpbnRr IHR5cGVzIGZvciBwb3J0IGZpZWxkCnYxOiBzZWxmOiB1c2UgJXggZm9yIHByaW50aW5nIHBvcnQg YXMgcGVyIG90aGVyIHByaW50IHNpdGVzCnYxLiBmZWVkYmFjayBKYW46IGFkZCBjb21tZW50cyBl eHBsYWluaW5nIHJpbmcgZnVsbCB2cyBlbXB0eQp2MS4gZm9sbG93aW5nIEphbjogZml4IGFyZ29f cmluZ2J1Zl9wYXlsb2FkX3NwYWNlIGNhbGN1bGF0aW9uIGZvciBlbXB0eSByaW5nCgogeGVuL2Nv bW1vbi9hcmdvLmMgICAgICAgICB8IDM3MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiB4ZW4vY29tbW9uL2NvbXBhdC9hcmdvLmMgIHwgIDE4ICsrKwogeGVu L2luY2x1ZGUvcHVibGljL2FyZ28uaCB8ICA2NCArKysrKysrKwogeGVuL2luY2x1ZGUveGxhdC5s c3QgICAgICB8ICAgMiArCiA0IGZpbGVzIGNoYW5nZWQsIDQ1NSBpbnNlcnRpb25zKCspCgpkaWZm IC0tZ2l0IGEveGVuL2NvbW1vbi9hcmdvLmMgYi94ZW4vY29tbW9uL2FyZ28uYwppbmRleCA1MThh ZmY3Li40YjQzYmRkIDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2FyZ28uYworKysgYi94ZW4vY29t bW9uL2FyZ28uYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPHB1YmxpYy9hcmdvLmg+CiAK ICNkZWZpbmUgTUFYX1JJTkdTX1BFUl9ET01BSU4gICAgICAgICAgICAxMjhVCisjZGVmaW5lIE1B WF9OT1RJRllfQ09VTlQgICAgICAgICAgICAgICAgMjU2VQogI2RlZmluZSBNQVhfUEVORElOR19Q RVJfUklORyAgICAgICAgICAgICAzMlUKIAogLyogQWxsIG1lc3NhZ2VzIG9uIHRoZSByaW5nIGFy ZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiB0aGUgc2xvdCBzaXplLiAqLwpAQCAtNDksNiArNTAs OCBAQCBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19nZm5fdCk7CiBERUZJTkVfWEVO X0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19pb3ZfdCk7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4 ZW5fYXJnb19yZWdpc3Rlcl9yaW5nX3QpOwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2Fy Z29fcmluZ190KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3JpbmdfZGF0YV90 KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3JpbmdfZGF0YV9lbnRfdCk7CiBE RUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19zZW5kX2FkZHJfdCk7CiBERUZJTkVfWEVO X0dVRVNUX0hBTkRMRSh4ZW5fYXJnb191bnJlZ2lzdGVyX3JpbmdfdCk7CiAKQEAgLTQyMSw2ICs0 MjQsMTggQEAgc2lnbmFsX2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKQogfQogCiBzdGF0aWMgdm9p ZAorc2lnbmFsX2RvbWlkKGRvbWlkX3QgZG9tYWluX2lkKQoreworICAgIHN0cnVjdCBkb21haW4g KmQgPSBnZXRfZG9tYWluX2J5X2lkKGRvbWFpbl9pZCk7CisKKyAgICBpZiAoICFkICkKKyAgICAg ICAgcmV0dXJuOworCisgICAgc2lnbmFsX2RvbWFpbihkKTsKKyAgICBwdXRfZG9tYWluKGQpOwor fQorCitzdGF0aWMgdm9pZAogcmluZ191bm1hcChjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1 Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKIHsKICAgICB1bnNpZ25lZCBpbnQgaTsKQEAg LTYyMCw2ICs2MzUsNjYgQEAgZ2V0X3Nhbml0aXplZF9yaW5nKGNvbnN0IHN0cnVjdCBkb21haW4g KmQsIHhlbl9hcmdvX3JpbmdfdCAqcmluZywKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIHVu c2lnbmVkIGludAorcmluZ2J1Zl9wYXlsb2FkX3NwYWNlKGNvbnN0IHN0cnVjdCBkb21haW4gKmQs IHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvKQoreworICAgIHhlbl9hcmdvX3Jpbmdf dCByaW5nOworICAgIHVuc2lnbmVkIGludCBsZW47CisgICAgaW50IHJldDsKKworICAgIEFTU0VS VChMT0NLSU5HX0wzKGQsIHJpbmdfaW5mbykpOworCisgICAgbGVuID0gcmluZ19pbmZvLT5sZW47 CisgICAgaWYgKCAhbGVuICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIGdldF9zYW5p dGl6ZWRfcmluZyhkLCAmcmluZywgcmluZ19pbmZvKSApCisgICAgICAgIHJldHVybiAwOworCisg ICAgYXJnb19kcHJpbnRrKCJzYW5pdGl6ZWQgcmluZ2J1Zl9wYXlsb2FkX3NwYWNlOiB0eF9wdHI9 JXUgcnhfcHRyPSV1XG4iLAorICAgICAgICAgICAgICAgICByaW5nLnR4X3B0ciwgcmluZy5yeF9w dHIpOworCisgICAgLyoKKyAgICAgKiByeF9wdHIgPT0gdHhfcHRyIG1lYW5zIHRoYXQgdGhlIHJp bmcgaGFzIGJlZW4gZW1wdGllZC4KKyAgICAgKiBTZWUgbWVzc2FnZSBzaXplIGNoZWNraW5nIGxv Z2ljIGluIHRoZSBlbnRyeSB0byByaW5nYnVmX2luc2VydCB3aGljaAorICAgICAqIGVuc3VyZXMg dGhhdCB0aGVyZSBpcyBhbHdheXMgb25lIG1lc3NhZ2Ugc2xvdCBvZiBzaXplIFJPVU5EVVBfTUVT U0FHRSgxKQorICAgICAqIGxlZnQgYXZhaWxhYmxlLCBwcmV2ZW50aW5nIGEgcmluZyBmcm9tIGJl aW5nIGVudGlyZWx5IGZpbGxlZC4KKyAgICAgKiBUaGlzIGVuc3VyZXMgdGhhdCBtYXRjaGluZyBy aW5nIGluZGV4ZXMgYWx3YXlzIGluZGljYXRlIGFuIGVtcHR5IHJpbmcKKyAgICAgKiBhbmQgbmV2 ZXIgYSBmdWxsIG9uZS4KKyAgICAgKi8KKyAgICByZXQgPSByaW5nLnJ4X3B0ciAtIHJpbmcudHhf cHRyOworICAgIGlmICggcmV0IDw9IDAgKQorICAgICAgICByZXQgKz0gbGVuOworCisgICAgLyoK KyAgICAgKiBJbiBhIHNhbml0aXplZCByaW5nLCB3ZSBjYW4gcmVseSBvbjoKKyAgICAgKiAgICAg ICAgICAgICAgKHJ4X3B0ciA8IHJpbmdfaW5mby0+bGVuKSAgICAgICAgICAgJiYKKyAgICAgKiAg ICAgICAgICAgICAgKHR4X3B0ciA8IHJpbmdfaW5mby0+bGVuKSAgICAgICAgICAgJiYKKyAgICAg KiAgICAgIChyaW5nX2luZm8tPmxlbiA8PSBYRU5fQVJHT19NQVhfUklOR19TSVpFKQorICAgICAq CisgICAgICogYW5kIHNpbmNlOiBYRU5fQVJHT19NQVhfUklOR19TSVpFIDwgSU5UMzJfTUFYCisg ICAgICogdGhlcmVmb3JlIHJpZ2h0IGhlcmU6IHJldCA8IElOVDMyX01BWAorICAgICAqIGFuZCB3 ZSBhcmUgc2FmZSB0byByZXR1cm4gaXQgYXMgYSB1bnNpZ25lZCB2YWx1ZSBmcm9tIHRoaXMgZnVu Y3Rpb24uCisgICAgICogVGhlIHN1YnRyYWN0aW9ucyBiZWxvdyBjYW5ub3QgaW5jcmVhc2UgaXRz IHZhbHVlLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBUaGUgbWF4aW11bSBzaXplIHBheWxv YWQgZm9yIGEgbWVzc2FnZSB0aGF0IHdpbGwgYmUgYWNjZXB0ZWQgaXM6CisgICAgICogKHRoZSBh dmFpbGFibGUgc3BhY2UgYmV0d2VlbiB0aGUgcmluZyBpbmRleGVzKQorICAgICAqICAgIG1pbnVz IChzcGFjZSBmb3IgYSBtZXNzYWdlIGhlYWRlcikKKyAgICAgKiAgICBtaW51cyAoc3BhY2UgZm9y IG9uZSBtZXNzYWdlIHNsb3QpCisgICAgICogc2luY2UgcmluZ2J1Zl9pbnNlcnQgcmVxdWlyZXMg dGhhdCBvbmUgbWVzc2FnZSBzbG90IGJlIGxlZnQKKyAgICAgKiB1bmZpbGxlZCwgdG8gYXZvaWQg ZmlsbGluZyB0aGUgcmluZyB0byBjYXBhY2l0eSBhbmQgY29uZnVzaW5nIGEgZnVsbAorICAgICAq IHJpbmcgd2l0aCBhbiBlbXB0eSBvbmUuCisgICAgICogU2luY2UgdGhlIHJpbmcgaW5kZXhlcyBh cmUgc2FuaXRpemVkLCB0aGUgdmFsdWUgaW4gcmV0IGlzIGFsaWduZWQsIHNvCisgICAgICogdGhl IHNpbXBsZSBzdWJ0cmFjdGlvbiBoZXJlIHdvcmtzIHRvIHJldHVybiB0aGUgYWxpZ25lZCB2YWx1 ZSBuZWVkZWQ6CisgICAgICovCisgICAgcmV0IC09IHNpemVvZihzdHJ1Y3QgeGVuX2FyZ29fcmlu Z19tZXNzYWdlX2hlYWRlcik7CisgICAgcmV0IC09IFJPVU5EVVBfTUVTU0FHRSgxKTsKKworICAg IHJldHVybiAocmV0IDwgMCkgPyAwIDogcmV0OworfQorCiAvKgogICogaW92X2NvdW50IHJldHVy bnMgaXRzIGNvdW50IG9uIHN1Y2Nlc3MgdmlhIGFuIG91dCB2YXJpYWJsZSB0byBhdm9pZAogICog cG90ZW50aWFsIGZvciBhIG5lZ2F0aXZlIHJldHVybiB2YWx1ZSB0byBiZSB1c2VkIGluY29ycmVj dGx5CkBAIC05NTgsNiArMTAzMyw3MSBAQCBwZW5kaW5nX3JlbW92ZV9hbGwoY29uc3Qgc3RydWN0 IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8pCiAgICAgcmluZ19p bmZvLT5ucGVuZGluZyA9IDA7CiB9CiAKK3N0YXRpYyB2b2lkCitwZW5kaW5nX25vdGlmeShzdHJ1 Y3QgbGlzdF9oZWFkICp0b19ub3RpZnkpCit7CisgICAgQVNTRVJUKExPQ0tJTkdfUmVhZF9MMSk7 CisKKyAgICAvKiBTZW5kaW5nIHNpZ25hbHMgZm9yIGFsbCBlbnRzIGluIHRoaXMgbGlzdCwgZHJh aW5pbmcgdW50aWwgaXQgaXMgZW1wdHkuICovCisgICAgd2hpbGUgKCAhbGlzdF9lbXB0eSh0b19u b3RpZnkpICkKKyAgICB7CisgICAgICAgIHN0cnVjdCBwZW5kaW5nX2VudCAqZW50ID0KKyAgICAg ICAgICAgIGxpc3RfZW50cnkodG9fbm90aWZ5LT5uZXh0LCBzdHJ1Y3QgcGVuZGluZ19lbnQsIG5v ZGUpOworCisgICAgICAgIGxpc3RfZGVsKCZlbnQtPm5vZGUpOworICAgICAgICBzaWduYWxfZG9t aWQoZW50LT5kb21haW5faWQpOworICAgICAgICB4ZnJlZShlbnQpOworICAgIH0KK30KKworc3Rh dGljIHZvaWQKK3BlbmRpbmdfZmluZChjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJn b19yaW5nX2luZm8gKnJpbmdfaW5mbywKKyAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGF5bG9h ZF9zcGFjZSwgc3RydWN0IGxpc3RfaGVhZCAqdG9fbm90aWZ5KQoreworICAgIHN0cnVjdCBsaXN0 X2hlYWQgKmN1cnNvciwgKnBlbmRpbmdfaGVhZDsKKworICAgIEFTU0VSVChMT0NLSU5HX1JlYWRf cmluZ3NfTDIoZCkpOworCisgICAgLyoKKyAgICAgKiBUT0RPOiBDdXJyZW50IHBvbGljeSBoZXJl IGlzIHRvIHNpZ25hbCBfYWxsXyBvZiB0aGUgd2FpdGluZyBkb21haW5zCisgICAgICogICAgICAg aW50ZXJlc3RlZCBpbiBzZW5kaW5nIGEgbWVzc2FnZSBvZiBzaXplIGxlc3MgdGhhbiBwYXlsb2Fk X3NwYWNlLgorICAgICAqCisgICAgICogVGhpcyBpcyBsaWtlbHkgdG8gYmUgc3Vib3B0aW1hbCwg c2luY2Ugb25jZSBvbmUgb2YgdGhlbSBoYXMgYWRkZWQKKyAgICAgKiB0aGVpciBtZXNzYWdlIHRv IHRoZSByaW5nLCB0aGVyZSBtYXkgd2VsbCBiZSBpbnN1ZmZpY2llbnQgcm9vbQorICAgICAqIGF2 YWlsYWJsZSBmb3IgYW55IG9mIHRoZSBvdGhlcnMgdG8gdHJhbnNtaXQsIG1lYW5pbmcgdGhhdCB0 aGV5IHdlcmUKKyAgICAgKiB3b2tlbiBpbiB2YWluLCB3aGljaCBjcmVhdGVkIGV4dHJhIHdvcmsg anVzdCB0byByZXF1ZXVlIHRoZWlyIHdhaXQuCisgICAgICoKKyAgICAgKiBSZXRhaW4gdGhpcyBz aW1wbGUgcG9saWN5IGZvciBub3cgc2luY2UgaXQgYXQgbGVhc3QgYXZvaWRzIHN0YXJ2aW5nIGEK KyAgICAgKiBkb21haW4gb2YgYXZhaWxhYmxlIHNwYWNlIG5vdGlmaWNhdGlvbnMgYmVjYXVzZSBv ZiBhIHBvbGljeSB0aGF0IG9ubHkKKyAgICAgKiBub3RpZmllZCBvdGhlciBkb21haW5zIGluc3Rl YWQuIEltcHJvdmVtZW50IG1heSBiZSBwb3NzaWJsZTsKKyAgICAgKiBpbnZlc3RpZ2F0aW9uIHJl cXVpcmVkLgorICAgICAqLworICAgIHNwaW5fbG9jaygmcmluZ19pbmZvLT5MM19sb2NrKTsKKwor ICAgIC8qIFJlbW92ZSBtYXRjaGluZyBlbnRzIGZyb20gdGhlIHJpbmcgbGlzdCwgYW5kIGFkZCB0 aGVtIHRvICJ0b19ub3RpZnkiICovCisgICAgcGVuZGluZ19oZWFkID0gJnJpbmdfaW5mby0+cGVu ZGluZzsKKyAgICBjdXJzb3IgPSBwZW5kaW5nX2hlYWQtPm5leHQ7CisKKyAgICB3aGlsZSAoIGN1 cnNvciAhPSBwZW5kaW5nX2hlYWQgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBlbmRpbmdfZW50 ICplbnQgPSBsaXN0X2VudHJ5KGN1cnNvciwgc3RydWN0IHBlbmRpbmdfZW50LCBub2RlKTsKKwor ICAgICAgICBjdXJzb3IgPSBjdXJzb3ItPm5leHQ7CisKKyAgICAgICAgaWYgKCBwYXlsb2FkX3Nw YWNlID49IGVudC0+bGVuICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCByaW5nX2luZm8t PmlkLnBhcnRuZXJfaWQgPT0gWEVOX0FSR09fRE9NSURfQU5ZICkKKyAgICAgICAgICAgICAgICB3 aWxkY2FyZF9wZW5kaW5nX2xpc3RfcmVtb3ZlKGVudC0+ZG9tYWluX2lkLCBlbnQpOworCisgICAg ICAgICAgICBsaXN0X2RlbCgmZW50LT5ub2RlKTsKKyAgICAgICAgICAgIHJpbmdfaW5mby0+bnBl bmRpbmctLTsKKyAgICAgICAgICAgIGxpc3RfYWRkKCZlbnQtPm5vZGUsIHRvX25vdGlmeSk7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICBzcGluX3VubG9jaygmcmluZ19pbmZvLT5MM19sb2NrKTsK K30KKwogc3RhdGljIGludAogcGVuZGluZ19xdWV1ZShjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBz dHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbywKICAgICAgICAgICAgICAgZG9taWRfdCBz cmNfaWQsIHVuc2lnbmVkIGludCBsZW4pCkBAIC0xMDIzLDYgKzExNjMsMzYgQEAgcGVuZGluZ19y ZXF1ZXVlKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmlu Z19pbmZvLAogfQogCiBzdGF0aWMgdm9pZAorcGVuZGluZ19jYW5jZWwoY29uc3Qgc3RydWN0IGRv bWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8sCisgICAgICAgICAgICAg ICBkb21pZF90IHNyY19pZCkKK3sKKyAgICBzdHJ1Y3QgbGlzdF9oZWFkICpjdXJzb3IsICpwZW5k aW5nX2hlYWQ7CisKKyAgICBBU1NFUlQoTE9DS0lOR19MMyhkLCByaW5nX2luZm8pKTsKKworICAg IC8qIFJlbW92ZSBhbGwgZW50cyB3aGVyZSBkb21haW5faWQgbWF0Y2hlcyBzcmNfaWQgZnJvbSB0 aGUgcmluZydzIGxpc3QuICovCisgICAgcGVuZGluZ19oZWFkID0gJnJpbmdfaW5mby0+cGVuZGlu ZzsKKyAgICBjdXJzb3IgPSBwZW5kaW5nX2hlYWQtPm5leHQ7CisKKyAgICB3aGlsZSAoIGN1cnNv ciAhPSBwZW5kaW5nX2hlYWQgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHBlbmRpbmdfZW50ICpl bnQgPSBsaXN0X2VudHJ5KGN1cnNvciwgc3RydWN0IHBlbmRpbmdfZW50LCBub2RlKTsKKworICAg ICAgICBjdXJzb3IgPSBjdXJzb3ItPm5leHQ7CisKKyAgICAgICAgaWYgKCBlbnQtPmRvbWFpbl9p ZCA9PSBzcmNfaWQgKQorICAgICAgICB7CisgICAgICAgICAgICAvKiBGb3Igd2lsZGNhcmQgcmlu Z3MsIHJlbW92ZSBlYWNoIGZyb20gdGhlaXIgd2lsZGNhcmQgbGlzdCB0b28uICovCisgICAgICAg ICAgICBpZiAoIHJpbmdfaW5mby0+aWQucGFydG5lcl9pZCA9PSBYRU5fQVJHT19ET01JRF9BTlkg KQorICAgICAgICAgICAgICAgIHdpbGRjYXJkX3BlbmRpbmdfbGlzdF9yZW1vdmUoZW50LT5kb21h aW5faWQsIGVudCk7CisgICAgICAgICAgICBsaXN0X2RlbCgmZW50LT5ub2RlKTsKKyAgICAgICAg ICAgIHhmcmVlKGVudCk7CisgICAgICAgICAgICByaW5nX2luZm8tPm5wZW5kaW5nLS07CisgICAg ICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCiB3aWxkY2FyZF9yaW5nc19wZW5kaW5nX3Jl bW92ZShzdHJ1Y3QgZG9tYWluICpkKQogewogICAgIHN0cnVjdCBsaXN0X2hlYWQgKndpbGRjYXJk X2hlYWQ7CkBAIC0xMTU4LDYgKzEzMjgsODYgQEAgcGFydG5lcl9yaW5nc19yZW1vdmUoc3RydWN0 IGRvbWFpbiAqc3JjX2QpCiB9CiAKIHN0YXRpYyBpbnQKK2ZpbGxfcmluZ19kYXRhKGNvbnN0IHN0 cnVjdCBkb21haW4gKmN1cnJkLAorICAgICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5f YXJnb19yaW5nX2RhdGFfZW50X3QpIGRhdGFfZW50X2huZCkKK3sKKyAgICB4ZW5fYXJnb19yaW5n X2RhdGFfZW50X3QgZW50OworICAgIHN0cnVjdCBkb21haW4gKmRzdF9kOworICAgIHN0cnVjdCBh cmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvOworICAgIGludCByZXQgPSAwOworCisgICAgQVNTRVJU KGN1cnJkID09IGN1cnJlbnQtPmRvbWFpbik7CisgICAgQVNTRVJUKExPQ0tJTkdfUmVhZF9MMSk7 CisKKyAgICBpZiAoIF9fY29weV9mcm9tX2d1ZXN0KCZlbnQsIGRhdGFfZW50X2huZCwgMSkgKQor ICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgIGFyZ29fZHByaW50aygiZmlsbF9yaW5nX2Rh dGE6IGVudC5yaW5nLmRvbWFpbj0ldSxlbnQucmluZy5hcG9ydD0leFxuIiwKKyAgICAgICAgICAg ICAgICAgZW50LnJpbmcuZG9tYWluX2lkLCBlbnQucmluZy5hcG9ydCk7CisKKyAgICBlbnQuZmxh Z3MgPSAwOworCisgICAgZHN0X2QgPSBnZXRfZG9tYWluX2J5X2lkKGVudC5yaW5nLmRvbWFpbl9p ZCk7CisgICAgaWYgKCAhZHN0X2QgfHwgIWRzdF9kLT5hcmdvICkKKyAgICAgICAgZ290byBvdXQ7 CisKKyAgICByZWFkX2xvY2soJmRzdF9kLT5hcmdvLT5yaW5nc19MMl9yd2xvY2spOworCisgICAg cmluZ19pbmZvID0gZmluZF9yaW5nX2luZm9fYnlfbWF0Y2goZHN0X2QsIGVudC5yaW5nLmFwb3J0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJkLT5kb21haW5f aWQpOworICAgIGlmICggcmluZ19pbmZvICkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBz cGFjZV9hdmFpbDsKKworICAgICAgICBlbnQuZmxhZ3MgfD0gWEVOX0FSR09fUklOR19FWElTVFM7 CisKKyAgICAgICAgc3Bpbl9sb2NrKCZyaW5nX2luZm8tPkwzX2xvY2spOworCisgICAgICAgIGVu dC5tYXhfbWVzc2FnZV9zaXplID0gcmluZ19pbmZvLT5sZW4gLQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHhlbl9hcmdvX3JpbmdfbWVzc2FnZV9oZWFk ZXIpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUk9VTkRVUF9NRVNTQUdF KDEpOworCisgICAgICAgIGlmICggcmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkID09IFhFTl9BUkdP X0RPTUlEX0FOWSApCisgICAgICAgICAgICBlbnQuZmxhZ3MgfD0gWEVOX0FSR09fUklOR19TSEFS RUQ7CisKKyAgICAgICAgc3BhY2VfYXZhaWwgPSByaW5nYnVmX3BheWxvYWRfc3BhY2UoZHN0X2Qs IHJpbmdfaW5mbyk7CisKKyAgICAgICAgYXJnb19kcHJpbnRrKCJmaWxsX3JpbmdfZGF0YTogYXBv cnQ9JXggc3BhY2VfYXZhaWw9JXUiCisgICAgICAgICAgICAgICAgICAgICAiIHNwYWNlX3dhbnRl ZD0ldVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQuYXBvcnQsIHNwYWNl X2F2YWlsLCBlbnQuc3BhY2VfcmVxdWlyZWQpOworCisgICAgICAgIC8qIERvIG5vdCBxdWV1ZSBh IG5vdGlmaWNhdGlvbiBmb3IgYW4gdW5hY2hpZXZhYmxlIHNpemUgKi8KKyAgICAgICAgaWYgKCBl bnQuc3BhY2VfcmVxdWlyZWQgPiBlbnQubWF4X21lc3NhZ2Vfc2l6ZSApCisgICAgICAgICAgICBl bnQuZmxhZ3MgfD0gWEVOX0FSR09fUklOR19FTVNHU0laRTsKKyAgICAgICAgZWxzZSBpZiAoIHNw YWNlX2F2YWlsID49IGVudC5zcGFjZV9yZXF1aXJlZCApCisgICAgICAgIHsKKyAgICAgICAgICAg IHBlbmRpbmdfY2FuY2VsKGRzdF9kLCByaW5nX2luZm8sIGN1cnJkLT5kb21haW5faWQpOworICAg ICAgICAgICAgZW50LmZsYWdzIHw9IFhFTl9BUkdPX1JJTkdfU1VGRklDSUVOVDsKKyAgICAgICAg fQorICAgICAgICBlbHNlCisgICAgICAgICAgICByZXQgPSBwZW5kaW5nX3JlcXVldWUoZHN0X2Qs IHJpbmdfaW5mbywgY3VycmQtPmRvbWFpbl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnQuc3BhY2VfcmVxdWlyZWQpOworCisgICAgICAgIHNwaW5fdW5sb2NrKCZyaW5n X2luZm8tPkwzX2xvY2spOworCisgICAgICAgIGlmICggc3BhY2VfYXZhaWwgPT0gZW50Lm1heF9t ZXNzYWdlX3NpemUgKQorICAgICAgICAgICAgZW50LmZsYWdzIHw9IFhFTl9BUkdPX1JJTkdfRU1Q VFk7CisKKyAgICB9CisgICAgcmVhZF91bmxvY2soJmRzdF9kLT5hcmdvLT5yaW5nc19MMl9yd2xv Y2spOworCisgb3V0OgorICAgIGlmICggZHN0X2QgKQorICAgICAgICBwdXRfZG9tYWluKGRzdF9k KTsKKworICAgIGlmICggIXJldCAmJiAoX19jb3B5X2ZpZWxkX3RvX2d1ZXN0KGRhdGFfZW50X2hu ZCwgJmVudCwgZmxhZ3MpIHx8CisgICAgICAgICAgICAgICAgICBfX2NvcHlfZmllbGRfdG9fZ3Vl c3QoZGF0YV9lbnRfaG5kLCAmZW50LCBtYXhfbWVzc2FnZV9zaXplKSkgKQorICAgICAgICByZXR1 cm4gLUVGQVVMVDsKKworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKIGZpbmRfcmlu Z19tZm4oc3RydWN0IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCAqbWZuKQogewogICAgIHN0 cnVjdCBwYWdlX2luZm8gKnBhZ2U7CkBAIC0xNTg2LDYgKzE4MzYsMTEyIEBAIHJlZ2lzdGVyX3Jp bmcoc3RydWN0IGRvbWFpbiAqY3VycmQsCiAgICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHZv aWQKK25vdGlmeV9yaW5nKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3Jpbmdf aW5mbyAqcmluZ19pbmZvLAorICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqdG9fbm90aWZ5 KQoreworICAgIHVuc2lnbmVkIGludCBzcGFjZTsKKworICAgIEFTU0VSVChMT0NLSU5HX1JlYWRf cmluZ3NfTDIoZCkpOworCisgICAgc3Bpbl9sb2NrKCZyaW5nX2luZm8tPkwzX2xvY2spOworCisg ICAgaWYgKCByaW5nX2luZm8tPmxlbiApCisgICAgICAgIHNwYWNlID0gcmluZ2J1Zl9wYXlsb2Fk X3NwYWNlKGQsIHJpbmdfaW5mbyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZSA9IDA7CisKKyAg ICBzcGluX3VubG9jaygmcmluZ19pbmZvLT5MM19sb2NrKTsKKworICAgIGlmICggc3BhY2UgKQor ICAgICAgICBwZW5kaW5nX2ZpbmQoZCwgcmluZ19pbmZvLCBzcGFjZSwgdG9fbm90aWZ5KTsKK30K Kworc3RhdGljIHZvaWQKK25vdGlmeV9jaGVja19wZW5kaW5nKHN0cnVjdCBkb21haW4gKmQpCit7 CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgTElTVF9IRUFEKHRvX25vdGlmeSk7CisKKyAgICBB U1NFUlQoTE9DS0lOR19SZWFkX0wxKTsKKworICAgIHJlYWRfbG9jaygmZC0+YXJnby0+cmluZ3Nf TDJfcndsb2NrKTsKKworICAgIC8qIFdhbGsgYWxsIHJpbmdzLCBjYWxsIG5vdGlmeV9yaW5nIG9u IGVhY2ggdG8gcG9wdWxhdGUgdG9fbm90aWZ5IGxpc3QgKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8 IEFSR09fSEFTSFRBQkxFX1NJWkU7IGkrKyApCisgICAgeworICAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpjdXJzb3IsICpidWNrZXQgPSAmZC0+YXJnby0+cmluZ19oYXNoW2ldOworICAgICAgICBz dHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbzsKKworICAgICAgICBmb3IgKCBjdXJzb3Ig PSBidWNrZXQtPm5leHQ7IGN1cnNvciAhPSBidWNrZXQ7IGN1cnNvciA9IGN1cnNvci0+bmV4dCAp CisgICAgICAgIHsKKyAgICAgICAgICAgIHJpbmdfaW5mbyA9IGxpc3RfZW50cnkoY3Vyc29yLCBz dHJ1Y3QgYXJnb19yaW5nX2luZm8sIG5vZGUpOworICAgICAgICAgICAgbm90aWZ5X3JpbmcoZCwg cmluZ19pbmZvLCAmdG9fbm90aWZ5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJlYWRfdW5s b2NrKCZkLT5hcmdvLT5yaW5nc19MMl9yd2xvY2spOworCisgICAgaWYgKCAhbGlzdF9lbXB0eSgm dG9fbm90aWZ5KSApCisgICAgICAgIHBlbmRpbmdfbm90aWZ5KCZ0b19ub3RpZnkpOworfQorCitz dGF0aWMgbG9uZworbm90aWZ5KHN0cnVjdCBkb21haW4gKmN1cnJkLAorICAgICAgIFhFTl9HVUVT VF9IQU5ETEVfUEFSQU0oeGVuX2FyZ29fcmluZ19kYXRhX3QpIHJpbmdfZGF0YV9obmQpCit7Cisg ICAgWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19yaW5nX2RhdGFfZW50X3QpIGVudF9obmQ7Cisg ICAgeGVuX2FyZ29fcmluZ19kYXRhX3QgcmluZ19kYXRhOworICAgIGludCByZXQgPSAwOworCisg ICAgQVNTRVJUKGN1cnJkID09IGN1cnJlbnQtPmRvbWFpbik7CisKKyAgICByZWFkX2xvY2soJkwx X2dsb2JhbF9hcmdvX3J3bG9jayk7CisKKyAgICBpZiAoICFjdXJyZC0+YXJnbyApCisgICAgewor ICAgICAgICBhcmdvX2RwcmludGsoIiFkLT5hcmdvLCBFTk9ERVZcbiIpOworICAgICAgICByZXQg PSAtRU5PREVWOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBub3RpZnlfY2hlY2tf cGVuZGluZyhjdXJyZCk7CisKKyAgICBpZiAoIGd1ZXN0X2hhbmRsZV9pc19udWxsKHJpbmdfZGF0 YV9obmQpICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICByZXQgPSBjb3B5X2Zyb21fZ3Vlc3Qo JnJpbmdfZGF0YSwgcmluZ19kYXRhX2huZCwgMSkgPyAtRUZBVUxUIDogMDsKKyAgICBpZiAoIHJl dCApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgaWYgKCByaW5nX2RhdGEubmVudCA+IE1BWF9O T1RJRllfQ09VTlQgKQorICAgIHsKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLCAiYXJnbzog bm90aWZ5IGVudHJ5IGNvdW50KCV1KSBleGNlZWRzIG1heCgldSlcbiIsCisgICAgICAgICAgICAg ICAgcmluZ19kYXRhLm5lbnQsIE1BWF9OT1RJRllfQ09VTlQpOworICAgICAgICByZXQgPSAtRUFD Q0VTOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBlbnRfaG5kID0gZ3Vlc3RfaGFu ZGxlX2Zvcl9maWVsZChyaW5nX2RhdGFfaG5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHhlbl9hcmdvX3JpbmdfZGF0YV9lbnRfdCwgZGF0YVswXSk7CisgICAgaWYgKCB1 bmxpa2VseSghZ3Vlc3RfaGFuZGxlX29rYXkoZW50X2huZCwgcmluZ19kYXRhLm5lbnQpKSApCisg ICAgeworICAgICAgICByZXQgPSAtRUZBVUxUOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisK KyAgICB3aGlsZSAoICFyZXQgJiYgcmluZ19kYXRhLm5lbnQtLSApCisgICAgeworICAgICAgICBy ZXQgPSBmaWxsX3JpbmdfZGF0YShjdXJyZCwgZW50X2huZCk7CisgICAgICAgIGd1ZXN0X2hhbmRs ZV9hZGRfb2Zmc2V0KGVudF9obmQsIDEpOworICAgIH0KKworIG91dDoKKyAgICByZWFkX3VubG9j aygmTDFfZ2xvYmFsX2FyZ29fcndsb2NrKTsKKworICAgIHJldHVybiByZXQ7Cit9CisKIHN0YXRp YyBsb25nCiBzZW5kdihzdHJ1Y3QgZG9tYWluICpzcmNfZCwgY29uc3QgeGVuX2FyZ29fYWRkcl90 ICpzcmNfYWRkciwKICAgICAgIGNvbnN0IHhlbl9hcmdvX2FkZHJfdCAqZHN0X2FkZHIsCkBAIC0x NzgxLDYgKzIxMzcsMjEgQEAgZG9fYXJnb19vcCh1bnNpZ25lZCBpbnQgY21kLCBYRU5fR1VFU1Rf SEFORExFX1BBUkFNKHZvaWQpIGFyZzEsCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNh c2UgWEVOX0FSR09fT1Bfbm90aWZ5OgorICAgIHsKKyAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTSh4ZW5fYXJnb19yaW5nX2RhdGFfdCkgcmluZ19kYXRhX2huZCA9CisgICAgICAgICAgICAg ICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnMSwgeGVuX2FyZ29fcmluZ19kYXRhX3QpOworCisg ICAgICAgIGlmICggdW5saWtlbHkoKCFndWVzdF9oYW5kbGVfaXNfbnVsbChhcmcyKSkgfHwgYXJn MyB8fCBhcmc0KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBub3RpZnkoY3VycmQsIHJp bmdfZGF0YV9obmQpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAg ICAgICByYyA9IC1FT1BOT1RTVVBQOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3hlbi9j b21tb24vY29tcGF0L2FyZ28uYyBiL3hlbi9jb21tb24vY29tcGF0L2FyZ28uYwppbmRleCA2Mjkw ZWQ2Li40ZmFjNTk3IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2NvbXBhdC9hcmdvLmMKKysrIGIv eGVuL2NvbW1vbi9jb21wYXQvYXJnby5jCkBAIC00MSw0ICs0MSwyMiBAQCBzdGF0aWMgaW5saW5l IGludCBfX21heWJlX3VudXNlZCBuYW1lKGsgeGVuXyAjIyBuICp4LCBrIGNvbXBhdF8gIyMgbiAq YykgXAogfQogCiBDSEVDS19hcmdvX3NlbmRfYWRkcjsKK0NIRUNLX2FyZ29fcmluZ19kYXRhX2Vu dDsKIENIRUNLX2FyZ29faW92OworCisvKgorICogRGlzYWJsZSBzaXplb2YgdHlwZSBjaGVja2lu ZyBmb3IgdGhlIGZvbGxvd2luZyBzdHJ1Y3QgY2hlY2tzIGJlY2F1c2UKKyAqIHRoZXNlIHN0cnVj dHMgaGF2ZSBmaWVsZHMgb2YgdHlwZXMgdGhhdCBkaWZmZXIgaW4gdGhlIGNvbXBhdCB2cyBub24t Y29tcGF0CisgKiBzdHJ1Y3RzIHdpdGggdmFyaWFibGUgc2l6ZSB3aGljaCBwcmV2ZW50cyB0aGUg c2l6ZSBjaGVjayB2YWxpZGF0aW9uLgorICovCisKKyN1bmRlZiBDSEVDS19GSUVMRF9DT01NT05f CisjZGVmaW5lIENIRUNLX0ZJRUxEX0NPTU1PTl8oaywgbmFtZSwgbiwgZikgXAorc3RhdGljIGlu bGluZSBpbnQgX19tYXliZV91bnVzZWQgbmFtZShrIHhlbl8gIyMgbiAqeCwgayBjb21wYXRfICMj IG4gKmMpIFwKK3sgXAorICAgIEJVSUxEX0JVR19PTihvZmZzZXRvZihrIHhlbl8gIyMgbiwgZikg IT0gXAorICAgICAgICAgICAgICAgICBvZmZzZXRvZihrIGNvbXBhdF8gIyMgbiwgZikpOyBcCisg ICAgcmV0dXJuIDE7IFwKK30KKworQ0hFQ0tfYXJnb19yaW5nX2RhdGE7CmRpZmYgLS1naXQgYS94 ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oIGIveGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaAppbmRl eCBhMjg0NTRhLi5kMmZkZDAzIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5o CisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgKQEAgLTEyMyw2ICsxMjMsNDAgQEAgdHlw ZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fdW5yZWdpc3Rlcl9yaW5nCiAvKiBNZXNzYWdlcyBvbiB0aGUg cmluZyBhcmUgcGFkZGVkIHRvIGEgbXVsdGlwbGUgb2YgdGhpcyBzaXplLiAqLwogI2RlZmluZSBY RU5fQVJHT19NU0dfU0xPVF9TSVpFIDB4MTAKIAorLyoKKyAqIE5vdGlmeSBmbGFncworICovCisv KiBSaW5nIGlzIGVtcHR5ICovCisjZGVmaW5lIFhFTl9BUkdPX1JJTkdfRU1QVFkgICAgICAgKDFV IDw8IDApCisvKiBSaW5nIGV4aXN0cyAqLworI2RlZmluZSBYRU5fQVJHT19SSU5HX0VYSVNUUyAg ICAgICgxVSA8PCAxKQorLyogU3VmZmljaWVudCBzcGFjZSB0byBxdWV1ZSBzcGFjZV9yZXF1aXJl ZCBieXRlcyBtaWdodCBleGlzdCAqLworI2RlZmluZSBYRU5fQVJHT19SSU5HX1NVRkZJQ0lFTlQg ICgxVSA8PCAyKQorLyogSW5zdWZmaWNpZW50IHJpbmcgc2l6ZSBmb3Igc3BhY2VfcmVxdWlyZWQg Ynl0ZXMgKi8KKyNkZWZpbmUgWEVOX0FSR09fUklOR19FTVNHU0laRSAgICAoMVUgPDwgMykKKy8q IFJpbmcgaXMgc2hhcmVkLCBub3QgdW5pY2FzdCAqLworI2RlZmluZSBYRU5fQVJHT19SSU5HX1NI QVJFRCAgICAgICgxVSA8PCA0KQorCit0eXBlZGVmIHN0cnVjdCB4ZW5fYXJnb19yaW5nX2RhdGFf ZW50Cit7CisgICAgeGVuX2FyZ29fYWRkcl90IHJpbmc7CisgICAgdWludDE2X3QgZmxhZ3M7Cisg ICAgdWludDE2X3QgcGFkOworICAgIHVpbnQzMl90IHNwYWNlX3JlcXVpcmVkOworICAgIHVpbnQz Ml90IG1heF9tZXNzYWdlX3NpemU7Cit9IHhlbl9hcmdvX3JpbmdfZGF0YV9lbnRfdDsKKwordHlw ZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fcmluZ19kYXRhCit7CisgICAgdWludDMyX3QgbmVudDsKKyAg ICB1aW50MzJfdCBwYWQ7CisjaWYgZGVmaW5lZChfX1NURENfVkVSU0lPTl9fKSAmJiBfX1NURENf VkVSU0lPTl9fID49IDE5OTkwMUwKKyAgICB4ZW5fYXJnb19yaW5nX2RhdGFfZW50X3QgZGF0YVtd OworI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKKyAgICB4ZW5fYXJnb19yaW5nX2RhdGFfZW50X3Qg ZGF0YVswXTsKKyNlbmRpZgorfSB4ZW5fYXJnb19yaW5nX2RhdGFfdDsKKwogc3RydWN0IHhlbl9h cmdvX3JpbmdfbWVzc2FnZV9oZWFkZXIKIHsKICAgICB1aW50MzJfdCBsZW47CkBAIC0yMTMsNCAr MjQ3LDM0IEBAIHN0cnVjdCB4ZW5fYXJnb19yaW5nX21lc3NhZ2VfaGVhZGVyCiAgKi8KICNkZWZp bmUgWEVOX0FSR09fT1Bfc2VuZHYgICAgICAgICAgICAgICAzCiAKKy8qCisgKiBYRU5fQVJHT19P UF9ub3RpZnkKKyAqCisgKiBBc2tzIFhlbiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgcmlu Z3MgaW4gdGhlIHN5c3RlbS4KKyAqCisgKiBlbnQtPnJpbmcgaXMgdGhlIHhlbl9hcmdvX2FkZHJf dCBvZiB0aGUgcmluZyB5b3Ugd2FudCBpbmZvcm1hdGlvbiBvbi4KKyAqIFVzZXMgdGhlIHNhbWUg cmluZyBtYXRjaGluZyBydWxlcyBhcyBYRU5fQVJHT19PUF9zZW5kdi4KKyAqCisgKiBlbnQtPnNw YWNlX3JlcXVpcmVkIDogaWYgdGhpcyBmaWVsZCBpcyBub3QgbnVsbCB0aGVuIFhlbiB3aWxsIGNo ZWNrCisgKiB0aGF0IHRoZXJlIGlzIHNwYWNlIGluIHRoZSBkZXN0aW5hdGlvbiByaW5nIGZvciB0 aGlzIG1hbnkgYnl0ZXMgb2YgcGF5bG9hZC4KKyAqIElmIHRoZSByaW5nIGlzIHRvbyBzbWFsbCBm b3IgdGhlIHJlcXVlc3RlZCBzcGFjZV9yZXF1aXJlZCwgaXQgd2lsbCBzZXQgdGhlCisgKiBYRU5f QVJHT19SSU5HX0VNU0dTSVpFIGZsYWcgb24gcmV0dXJuLgorICogSWYgc3VmZmljaWVudCBzcGFj ZSBpcyBhdmFpbGFibGUsIGl0IHdpbGwgc2V0IFhFTl9BUkdPX1JJTkdfU1VGRklDSUVOVAorICog YW5kIENBTkNFTCBhbnkgcGVuZGluZyBub3RpZmljYXRpb24gZm9yIHRoYXQgZW50LT5yaW5nOyBv dGhlcndpc2UgaXQKKyAqIHdpbGwgc2NoZWR1bGUgYSBub3RpZmljYXRpb24gZXZlbnQgYW5kIHRo ZSBmbGFnIHdpbGwgbm90IGJlIHNldC4KKyAqCisgKiBUaGVzZSBmbGFncyBhcmUgc2V0IGJ5IFhl biB3aGVuIG5vdGlmeSByZXBsaWVzOgorICogWEVOX0FSR09fUklOR19FTVBUWSAgICAgIHJpbmcg aXMgZW1wdHkKKyAqIFhFTl9BUkdPX1JJTkdfU1VGRklDSUVOVCBzdWZmaWNpZW50IHNwYWNlIGZv ciBzcGFjZV9yZXF1aXJlZCBpcyB0aGVyZQorICogWEVOX0FSR09fUklOR19FWElTVFMgICAgIHJp bmcgZXhpc3RzCisgKiBYRU5fQVJHT19SSU5HX0VNU0dTSVpFICAgc3BhY2VfcmVxdWlyZWQgdG9v IGxhcmdlIGZvciB0aGUgcmluZyBzaXplCisgKiBYRU5fQVJHT19SSU5HX1NIQVJFRCAgICAgcmlu ZyBpcyByZWdpc3RlcmVkIGZvciB3aWxkY2FyZCBwYXJ0bmVyCisgKgorICogYXJnMTogWEVOX0dV RVNUX0hBTkRMRSh4ZW5fYXJnb19yaW5nX2RhdGFfdCkgcmluZ19kYXRhIChtYXkgYmUgTlVMTCkK KyAqIGFyZzI6IE5VTEwKKyAqIGFyZzM6IDAgKFpFUk8pCisgKiBhcmc0OiAwIChaRVJPKQorICov CisjZGVmaW5lIFhFTl9BUkdPX09QX25vdGlmeSAgICAgICAgICAgICAgNAorCiAjZW5kaWYKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hsYXQubHN0IGIveGVuL2luY2x1ZGUveGxhdC5sc3QKaW5k ZXggMzcyMzk4MC4uZTQ1YjYwZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGxhdC5sc3QKKysr IGIveGVuL2luY2x1ZGUveGxhdC5sc3QKQEAgLTE1NCwzICsxNTQsNSBAQAogPwlhcmdvX3VucmVn aXN0ZXJfcmluZwkJYXJnby5oCiA/CWFyZ29faW92CQkJYXJnby5oCiA/CWFyZ29fc2VuZF9hZGRy CQkJYXJnby5oCis/CWFyZ29fcmluZ19kYXRhX2VudAkJYXJnby5oCis/CWFyZ29fcmluZ19kYXRh CQkJYXJnby5oCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnBy b2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94 ZW4tZGV2ZWw=