From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v7 10/15] argo: implement the notify op Date: Wed, 30 Jan 2019 20:28:15 -0800 Message-ID: <1548908900-1128-11-git-send-email-christopher.w.clark@gmail.com> References: <1548908900-1128-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 1gp3yM-0007vZ-OV for xen-devel@lists.xenproject.org; Thu, 31 Jan 2019 04:29:06 +0000 Received: by mail-it1-x131.google.com with SMTP id i145so1830712ita.4 for ; Wed, 30 Jan 2019 20:29:05 -0800 (PST) In-Reply-To: <1548908900-1128-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 Q2xhcmsgPGNocmlzdG9waGVyLmNsYXJrNkBiYWVzeXN0ZW1zLmNvbT4KVGVzdGVkLWJ5OiBDaHJp cyBQYXR0ZXJzb24gPHBhdHRlcnNvbmNAYWluZm9zZWMuY29tPgotLS0KdjYgIzA5IEphbjogYWRk IGNvbXBhdCBBQkkKdjYgIzA0IEphbjogeGxhdC5sc3Q6IG1vdmUgYXJnbyBzdHJ1Y3QgZW50cmll cyB0byBhbHBoYWJldGljYWwgcG9zaXRpb24KdjY6IHJld3JhcCBjb21tZW50IHRvIGZpeCBsaW5l IGxlbmd0aAp2NiAjMTAgUm9nZXI6IHVzZSBsaXN0X2Zvcl9lYWNoX2VudHJ5e19zYWZlfSBmb3Ig bG9vcGluZwp2NTogYWRkIEVCVVNZIGVudCBmbGFnIHdoZW4gdG9vIG1hbnkgZG9tYWlucyBhcmUg YWxyZWFkeSBvbiBwZW5kaW5nIGxpc3QKdjU6IHJlb3JkZXIgbm90aWZ5IGZsYWdzOiBlcnJvciBm bGFncyBsYXN0LCBmaXhlZCBzdGF0ZSBmaXJzdAp2NTogYWRkIGNvbXBhdCB2YWxpZGF0aW9uIG1h Y3JvcyB0byBwcmltYXJ5IHNvdXJjZSBmaWxlOiBjb21tb24vYXJnby5jCnY1IDogY29udmVydCBo eXBlcmNhbGwgYXJnIHN0cnVjdHMgdG8gc3RydWN0IGZvcm0gZm9yIGNvbXBhdCBjaGVja2luZwp2 NTogZHJvcHBlZCBleHRlcm5hbCBmaWxlIGZvciBjb21wYXQgbWFjcm9zOiBjb21tb24vY29tcGF0 L2FyZ28uYwp2NCAjMTAgUm9nZXI6IGNvbnNvbGlkYXRlIG5vdGlmeSBmbGFnczsgaW5mZXIgcGVu ZGluZyBub3RpZnkgaWYgbmVlZGVkCnY0IGJ1Z2ZpeDogdGFrZSBMMyBiZWZvcmUgYWNjZXNzaW5n IHJpbmdfaW5mbyBpbiBmaWxsX3JpbmdfZGF0YQp2NCAjMTAgUm9nZXI6IHNob3J0ZW4gbm90aWZ5 IGZsYWcgbmFtZXM6IGRyb3AgX0RBVEFfRgp2NCAjMTAgc2VsZi9Sb2dlcjogZmlsbF9yaW5nX2Rh dGE6IGNoZWNrIHBlbmRpbmdfcmVxdWV1ZSBlcnJvciBjb2RlCnY0IDogdXNlIHN0YW5kYXJkIGRh dGEgc3RydWN0dXJlcyBhcyBwZXIgY29tbW9uIGNvZGUKdjQgIzEwIFJvZ2VyOiBsb3dlciBpbmRl bnRhdGlvbiBpbiBmaWxsX3JpbmdfZGF0YSBieSB1c2luZyBnb3RvCnY0ICMxMCBSb2dlcjogcmV3 b3JkIHRoZSBYRU5fQVJHT19SSU5HX0RBVEFfRl9TVUZGSUNJRU5UIGNvbW1lbnQKdjQgZml4IGxv Y2F0aW9uIG9mIGEgRklYTUUgdGhhdCB3YXMgaW5jb3JyZWN0bHkgbW92ZWQgYnkgdGhpcyBsYXRl ciBjb21taXQKdjMgIzA3IEphbjogZml4IGZvcm1hdCBzdHJpbmcgaW5kZW50aW9uIGluIHByaW50 a3MKdjMgKGdlbmVyYWwpIEphbjogZHJvcCBmaXhlZCB3aWR0aCB0eXBlcyBmb3IgcmluZ2J1Zl9w YXlsb2FkX3NwYWNlCnYzICMwNyBKYW46IHJlbmFtZSByaW5nX2ZpbmRfaW5mb19ieV9tYXRjaCB0 byBmaW5kX3JpbmdfaW5mb19ieV9tYXRjaAp2MyAjMDcgSmFuOiBmaXggbnVtZXJpYyBlbnRyaWVz IGluIHByaW50ayBmb3JtYXQgc3RyaW5ncwp2MzogcmluZ2J1Zl9wYXlsb2FkX3NwYWNlOiBzaW1w bGVyIHJldHVybiAwIGlmIGdldF9zYW5pdGl6ZWRfcmluZyBmYWlscwp2MyAjMTAgUm9nZXI6IHNp bXBsaWZ5IHJpbmdidWZfcGF5bG9hZF9zcGFjZSBmb3IgZW1wdHkgcmluZ3MKdjMgIzEwIFJvZ2Vy OiByaW5nYnVmX3BheWxvYWRfc3BhY2U6IGFkZCBjb21tZW50IHRvIGV4cGxhaW4gaG93IHJldCA8 IElOVDMyX01BWAp2MyAjMTAgUm9nZXI6IGRyb3Agb3V0IGxhYmVsLCB1c2UgcmV0dXJuIC1FRkFV TFQgaW4gZmlsbF9yaW5nX2RhdGEKdjMgIzEwIFJvZ2VyOiBhZGQgbmV3bGluZSBpbiBzaWduYWxf ZG9taWQKdjMgIzEwIFJvZ2VyOiBtb3ZlIGZpbmQgZnVuY3Rpb25zIHRvIHRvcCBvZiBmaWxlIGFu ZCBkcm9wIHByb3RvdHlwZXMKdjMgIzA0IEphbjogbWVsZCB0aGUgY29tcGF0IGh5cGVyY2FsbCBh cmcgY2hlY2tpbmcKdjMgIzA0IFJvZ2VyL0phbjogbWFrZSBsb2NrIG5hbWVzIGNsZWFyZXIgYW5k IGFzc2VydCB0aGVpciBzdGF0ZQp2MyAjMDQgSmFuOiBwb3J0IC0+IGFwb3J0IHdpdGggdHlwZTsg ZGlzdGluZ3Vpc2ggYXJnbyBwb3J0IGZyb20gZXZ0Y2huCnYzIHNlbGY6IGRyb3AgYnJhY2VzIGlu IGZvcmVhY2ggb2Ygbm90aWZ5X2NoZWNrX3BlbmRpbmcKdjMgZmVlZGJhY2sgUm9nZXIvSmFuOiBB U1NFUlQgY3VycmQgaXMgY3VycmVudC0+ZG9tYWluIG9yIHVzZSAnZCcgdmFyaWFibGUgbmFtZQp2 MiBmZWVkYmFjayBKYW46IGRyb3AgY29va2llLCBpbXBsZW1lbnQgdGVhcmRvd24KdjIgbm90aWZ5 OiBhZGQgZmxhZyB0byBpbmRpY2F0ZSByaW5nIGlzIHNoYXJlZAp2MiBhcmd1bWVudCBuYW1lIGZv ciBmaWxsX3JpbmdfZGF0YSBhcmcgaXMgbm93IGN1cnJkCnYyIHNlbGY6IGNoZWNrIHJpbmcgc2l6 ZSB2cyByZXF1ZXN0IGFuZCBmbGFnIGVycm9yIHJhdGhlciB0aGFuIHF1ZXVlIHNpZ25hbAp2MiBm ZWVkYmFjayBKYW46IGRyb3AgJ21lc3NhZ2UnIGZyb20gJ2FyZ29fbWVzc2FnZV9vcCcKdjIgc2Vs Zjogc2ltcGxpZnkgc2lnbmFsX2RvbWlkLCBkcm9wIHVubmVjZXNzYXJ5IGxhYmVsICsgZ290bwp2 MiBzZWxmOiBza2lwIHRoZSBjb29raWUgY2hlY2sgaW4gcGVuZGluZ19jYW5jZWwKdjIgc2VsZjog aW1wbGVtZW50IG5wZW5kaW5nIGxpbWl0IG9uIG51bWJlciBvZiBwZW5kaW5nIGVudHJpZXMKdjEg ZmVlZGJhY2sgIzE2IEphbjogc2FuaXRpemVfcmluZyBpbiByaW5nYnVmX3BheWxvYWRfc3BhY2UK djIgc2VsZjogaW5saW5lIGZpbGxfcmluZ19kYXRhX2FycmF5CnYyIHNlbGY6IGF2b2lkIHJldGVz dGluZyBkc3RfZCBmb3IgcHV0X2RvbWFpbgp2MiBzZWxmL0phbjogcmVtb3ZlIHVzZSBvZiBtYWdp YyB2ZXJpZmljYXRpb24gZmllbGQgYW5kIHRpZHkgdXAKdjEgZmVlZGJhY2sgIzE2IEphbjogcmVt b3ZlIHRlc3Rpbmcgb2YgbWFnaWMgaW4gZ3Vlc3Qtc3VwcGxpZWQgc3RydWN0dXJlCnYyIHNlbGY6 IHMvYXJnb19wZW5kaW5nX2VudC9wZW5kaW5nX2VudC9nCnYyIGZlZWRiYWNrIHYxIzEzIFJvZ2Vy OiB1c2UgT1Mtc3VwcGxpZWQgcm91bmR1cDsgZHJvcCBmcm9tIHB1YmxpYyBoZWFkZXIKdjEsMiBm ZWVkYmFjayBKYW4vUm9nZXIvUGF1bDogZHJvcCBlcnJubyByZXR1cm5pbmcgZ3Vlc3QgYWNjZXNz IGZ1bmN0aW9ucwp2MSBmZWVkYmFjayBSb2dlciwgSmFuOiBkcm9wIGFyZ28gcHJlZml4IG9uIHN0 YXRpYyBmdW5jdGlvbnMKdjIgc2VsZjogcmVkdWNlIGluZGVudGF0aW9uIHZpYSBnb3RvIG91dCBp ZiBhcmcgTlVMTAp2MSBmZWVkYmFjayAjMTMgSmFuOiByZXNvbHZlIGNoZWNraW5nIG9mIGFycmF5 IGhhbmRsZSBhbmQgdXNlIG9mIF9fY29weQp2MSAjNSAoIzE2KSBmZWVkYmFjayBQYXVsOiBub3Rp Znkgb3A6IHVzZSBjdXJyZCBpbiBkb19hcmdvX21lc3NhZ2Vfb3AKdjEgIzUgKCMxNikgZmVlZGJh Y2sgUGF1bDogbm90aWZ5IG9wOiB1c2UgY3VycmQgaW4gYXJnb19ub3RpZnkKdjEgIzUgKCMxNikg ZmVlZGJhY2sgUGF1bDogbm90aWZ5IG9wOiB1c2UgY3VycmQgaW4gYXJnb19ub3RpZnlfY2hlY2tf cGVuZGluZwp2MSAjNSAoIzE2KSBmZWVkYmFjayBQYXVsOiBub3RpZnkgb3A6IHVzZSBjdXJyZCBp biBhcmdvX2ZpbGxfcmluZ19kYXRhX2FycmF5CnYxICMxMyAoIzE2KSBmZWVkYmFjayBQYXVsOiBu b3RpZnkgb3A6IGRvL3doaWxlOiByZWluZGVudCBvbmx5CnYxICMxMyAoIzE2KSBmZWVkYmFjayBQ YXVsOiBub3RpZnkgb3A6IGRvL3doaWxlOiBnb3RvCnYxIDogYWRkIGNvbXBhdCB4bGF0LmxzdCBl bnRyaWVzCnYxOiBhZGQgZGVmaW5pdGlvbiBmb3IgY29weV9maWVsZF9mcm9tX2d1ZXN0X2Vycm5v CnYxICMxMyBmZWVkYmFjayBKYW46IG1ha2UgJ3JpbmcgZGF0YScgY29tbWVudCBjb21wbHkgd2l0 aCBzaW5nbGUtbGluZSBzdHlsZQp2MSBmZWVkYmFjayAjMTMgSmFuOiB1c2UgX19jb3B5OyBzbyBk ZWZpbmUgYW5kIHVzZSBfX2NvcHlfZmllbGRfdG9fZ3Vlc3RfZXJybm8KdjE6ICMxMyBmZWVkYmFj ayBKYW46IHB1YmxpYyBuYW1lc3BhY2U6IHByZWZpeCB3aXRoIHhlbgp2MTogIzEzIGZlZWRiYWNr IEphbjogYWRkIGJsYW5rIGxpbmUgYWZ0ZXIgY2FzZSBpbiBkb19hcmdvX21lc3NhZ2Vfb3AKdjE6 IHNlbGY6IHJlbmFtZSBlbnQgaWQgdG8gZG9tYWluX2lkCnYxOiBzZWxmOiBlbnQgaWQtPiBkb21h aW5faWQKdjE6IHNlbGY6IGRyb3Agc2lnbmFsIGlmIGRvbWFpbl9jb29raWUgbWlzbWF0Y2hlcwp2 MS4gZmVlZGJhY2sgIzE1IEphbjogbWFrZSBsb29wIGkgdW5zaWduZWQKdjEuIHNlbGY6IGRyb3Ag dW5uZWNlc3NhcnkgbWIoKSBpbiBhcmdvX25vdGlmeV9jaGVja19wZW5kaW5nCnYxLiBzZWxmOiBh ZGQgYmxhbmsgbGluZQp2MSAjMTYgZmVlZGJhY2sgSmFuOiBjb25zdCBkb21haW4gYXJnIHRvICth cmdvX2ZpbGxfcmluZ19kYXRhCnYxLiBmZWVkYmFjayAjMTUgSmFuOiBjaGVjayB1bnVzdWVkIGh5 cGVyY2FsbCBhcmdzIGFyZSB6ZXJvCnYxIGZlZWRiYWNrICMxNiBKYW46IGFkZCBjb21tZW50IG9u IHNwYWNlIGF2YWlsYWJsZSBzaWduYWwgcG9saWN5CnYxLiBmZWVkYmFjayAjMTYgSmFuOiBtb3Zl IGRlY2xyLCBkcm9wIGJyYWNlcywgbG93ZXIgaW5kZW50CnYxLiBmZWVkYmFjayAjMTggSmFuOiBt ZWxkIHRoZSByZXNvdXJjZSBsaW1pdHMgaW50byB0aGUgbWFpbiBjb21taXQKdjEuIGZlZWRiYWNr ICMxNiBKYW46IGNsYXJpZnkgdXNlIG9mIG1hZ2ljIGZpZWxkCnYxLiBzZWxmOiB1c2Ugc2luZ2xl IGNvcHkgdG8gcmVhZCBub3RpZnkgcmluZyBkYXRhIHN0cnVjdAp2MTogYXJnb19maWxsX3Jpbmdf ZGF0YTogZml4IGRwcmludGsgdHlwZXMgZm9yIHBvcnQgZmllbGQKdjE6IHNlbGY6IHVzZSAleCBm b3IgcHJpbnRpbmcgcG9ydCBhcyBwZXIgb3RoZXIgcHJpbnQgc2l0ZXMKdjEuIGZlZWRiYWNrIEph bjogYWRkIGNvbW1lbnRzIGV4cGxhaW5pbmcgcmluZyBmdWxsIHZzIGVtcHR5CnYxLiBmb2xsb3dp bmcgSmFuOiBmaXggYXJnb19yaW5nYnVmX3BheWxvYWRfc3BhY2UgY2FsY3VsYXRpb24gZm9yIGVt cHR5IHJpbmcKCiB4ZW4vY29tbW9uL2FyZ28uYyAgICAgICAgIHwgMzg1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHhlbi9pbmNsdWRlL3B1YmxpYy9hcmdv LmggfCAgNjcgKysrKysrKysKIHhlbi9pbmNsdWRlL3hsYXQubHN0ICAgICAgfCAgIDIgKwogMyBm aWxlcyBjaGFuZ2VkLCA0NTQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v YXJnby5jIGIveGVuL2NvbW1vbi9hcmdvLmMKaW5kZXggMWVlYjI2Mi4uNzhkNmYwMCAxMDA2NDQK LS0tIGEveGVuL2NvbW1vbi9hcmdvLmMKKysrIGIveGVuL2NvbW1vbi9hcmdvLmMKQEAgLTM2LDEy ICszNiwxNyBAQCBDSEVDS19hcmdvX2FkZHI7CiAjZGVmaW5lIENIRUNLX2FyZ29fYWRkciBzdHJ1 Y3QgeGVuX2FyZ29fYWRkcgogQ0hFQ0tfYXJnb19yZWdpc3Rlcl9yaW5nOwogQ0hFQ0tfYXJnb19y aW5nOworQ0hFQ0tfYXJnb19yaW5nX2RhdGFfZW50OworI3VuZGVmIENIRUNLX2FyZ29fcmluZ19k YXRhX2VudAorI2RlZmluZSBDSEVDS19hcmdvX3JpbmdfZGF0YV9lbnQgc3RydWN0IHhlbl9hcmdv X3JpbmdfZGF0YV9lbnQKK0NIRUNLX2FyZ29fcmluZ19kYXRhOwogQ0hFQ0tfYXJnb19yaW5nX21l c3NhZ2VfaGVhZGVyOwogQ0hFQ0tfYXJnb191bnJlZ2lzdGVyX3Jpbmc7CiBDSEVDS19hcmdvX3Nl bmRfYWRkcjsKICNlbmRpZgogCiAjZGVmaW5lIE1BWF9SSU5HU19QRVJfRE9NQUlOICAgICAgICAg ICAgMTI4VQorI2RlZmluZSBNQVhfTk9USUZZX0NPVU5UICAgICAgICAgICAgICAgIDI1NlUKICNk ZWZpbmUgTUFYX1BFTkRJTkdfUEVSX1JJTkcgICAgICAgICAgICAgMzJVCiAKIC8qIEFsbCBtZXNz YWdlcyBvbiB0aGUgcmluZyBhcmUgcGFkZGVkIHRvIGEgbXVsdGlwbGUgb2YgdGhlIHNsb3Qgc2l6 ZS4gKi8KQEAgLTYwLDYgKzY1LDggQEAgREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29f YWRkcl90KTsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX2lvdl90KTsKIERFRklO RV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3JlZ2lzdGVyX3JpbmdfdCk7CiBERUZJTkVfWEVO X0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19yaW5nX3QpOworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUo eGVuX2FyZ29fcmluZ19kYXRhX3QpOworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29f cmluZ19kYXRhX2VudF90KTsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3NlbmRf YWRkcl90KTsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3VucmVnaXN0ZXJfcmlu Z190KTsKICNpZmRlZiBDT05GSUdfQ09NUEFUCkBAIC00MzQsNiArNDQxLDE4IEBAIHNpZ25hbF9k b21haW4oc3RydWN0IGRvbWFpbiAqZCkKIH0KIAogc3RhdGljIHZvaWQKK3NpZ25hbF9kb21pZChk b21pZF90IGRvbWFpbl9pZCkKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpkID0gZ2V0X2RvbWFpbl9i eV9pZChkb21haW5faWQpOworCisgICAgaWYgKCAhZCApCisgICAgICAgIHJldHVybjsKKworICAg IHNpZ25hbF9kb21haW4oZCk7CisgICAgcHV0X2RvbWFpbihkKTsKK30KKworc3RhdGljIHZvaWQK IHJpbmdfdW5tYXAoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZv ICpyaW5nX2luZm8pCiB7CiAgICAgdW5zaWduZWQgaW50IGk7CkBAIC02MzMsNiArNjUyLDY2IEBA IGdldF9zYW5pdGl6ZWRfcmluZyhjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCB4ZW5fYXJnb19yaW5n X3QgKnJpbmcsCiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB1bnNpZ25lZCBpbnQKK3Jpbmdi dWZfcGF5bG9hZF9zcGFjZShjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5n X2luZm8gKnJpbmdfaW5mbykKK3sKKyAgICB4ZW5fYXJnb19yaW5nX3QgcmluZzsKKyAgICB1bnNp Z25lZCBpbnQgbGVuOworICAgIGludCByZXQ7CisKKyAgICBBU1NFUlQoTE9DS0lOR19MMyhkLCBy aW5nX2luZm8pKTsKKworICAgIGxlbiA9IHJpbmdfaW5mby0+bGVuOworICAgIGlmICggIWxlbiAp CisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCBnZXRfc2FuaXRpemVkX3JpbmcoZCwgJnJp bmcsIHJpbmdfaW5mbykgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGFyZ29fZHByaW50aygi c2FuaXRpemVkIHJpbmdidWZfcGF5bG9hZF9zcGFjZTogdHhfcHRyPSV1IHJ4X3B0cj0ldVxuIiwK KyAgICAgICAgICAgICAgICAgcmluZy50eF9wdHIsIHJpbmcucnhfcHRyKTsKKworICAgIC8qCisg ICAgICogcnhfcHRyID09IHR4X3B0ciBtZWFucyB0aGF0IHRoZSByaW5nIGhhcyBiZWVuIGVtcHRp ZWQuCisgICAgICogU2VlIG1lc3NhZ2Ugc2l6ZSBjaGVja2luZyBsb2dpYyBpbiB0aGUgZW50cnkg dG8gcmluZ2J1Zl9pbnNlcnQgd2hpY2gKKyAgICAgKiBlbnN1cmVzIHRoYXQgdGhlcmUgaXMgYWx3 YXlzIG9uZSBtZXNzYWdlIHNsb3Qgb2Ygc2l6ZSBST1VORFVQX01FU1NBR0UoMSkKKyAgICAgKiBs ZWZ0IGF2YWlsYWJsZSwgcHJldmVudGluZyBhIHJpbmcgZnJvbSBiZWluZyBlbnRpcmVseSBmaWxs ZWQuCisgICAgICogVGhpcyBlbnN1cmVzIHRoYXQgbWF0Y2hpbmcgcmluZyBpbmRleGVzIGFsd2F5 cyBpbmRpY2F0ZSBhbiBlbXB0eSByaW5nCisgICAgICogYW5kIG5ldmVyIGEgZnVsbCBvbmUuCisg ICAgICovCisgICAgcmV0ID0gcmluZy5yeF9wdHIgLSByaW5nLnR4X3B0cjsKKyAgICBpZiAoIHJl dCA8PSAwICkKKyAgICAgICAgcmV0ICs9IGxlbjsKKworICAgIC8qCisgICAgICogSW4gYSBzYW5p dGl6ZWQgcmluZywgd2UgY2FuIHJlbHkgb246CisgICAgICogICAgICAgICAgICAgIChyeF9wdHIg PCByaW5nX2luZm8tPmxlbikgICAgICAgICAgICYmCisgICAgICogICAgICAgICAgICAgICh0eF9w dHIgPCByaW5nX2luZm8tPmxlbikgICAgICAgICAgICYmCisgICAgICogICAgICAocmluZ19pbmZv LT5sZW4gPD0gWEVOX0FSR09fTUFYX1JJTkdfU0laRSkKKyAgICAgKgorICAgICAqIGFuZCBzaW5j ZTogWEVOX0FSR09fTUFYX1JJTkdfU0laRSA8IElOVDMyX01BWAorICAgICAqIHRoZXJlZm9yZSBy aWdodCBoZXJlOiByZXQgPCBJTlQzMl9NQVgKKyAgICAgKiBhbmQgd2UgYXJlIHNhZmUgdG8gcmV0 dXJuIGl0IGFzIGEgdW5zaWduZWQgdmFsdWUgZnJvbSB0aGlzIGZ1bmN0aW9uLgorICAgICAqIFRo ZSBzdWJ0cmFjdGlvbnMgYmVsb3cgY2Fubm90IGluY3JlYXNlIGl0cyB2YWx1ZS4KKyAgICAgKi8K KworICAgIC8qCisgICAgICogVGhlIG1heGltdW0gc2l6ZSBwYXlsb2FkIGZvciBhIG1lc3NhZ2Ug dGhhdCB3aWxsIGJlIGFjY2VwdGVkIGlzOgorICAgICAqICh0aGUgYXZhaWxhYmxlIHNwYWNlIGJl dHdlZW4gdGhlIHJpbmcgaW5kZXhlcykKKyAgICAgKiAgICBtaW51cyAoc3BhY2UgZm9yIGEgbWVz c2FnZSBoZWFkZXIpCisgICAgICogICAgbWludXMgKHNwYWNlIGZvciBvbmUgbWVzc2FnZSBzbG90 KQorICAgICAqIHNpbmNlIHJpbmdidWZfaW5zZXJ0IHJlcXVpcmVzIHRoYXQgb25lIG1lc3NhZ2Ug c2xvdCBiZSBsZWZ0CisgICAgICogdW5maWxsZWQsIHRvIGF2b2lkIGZpbGxpbmcgdGhlIHJpbmcg dG8gY2FwYWNpdHkgYW5kIGNvbmZ1c2luZyBhIGZ1bGwKKyAgICAgKiByaW5nIHdpdGggYW4gZW1w dHkgb25lLgorICAgICAqIFNpbmNlIHRoZSByaW5nIGluZGV4ZXMgYXJlIHNhbml0aXplZCwgdGhl IHZhbHVlIGluIHJldCBpcyBhbGlnbmVkLCBzbworICAgICAqIHRoZSBzaW1wbGUgc3VidHJhY3Rp b24gaGVyZSB3b3JrcyB0byByZXR1cm4gdGhlIGFsaWduZWQgdmFsdWUgbmVlZGVkOgorICAgICAq LworICAgIHJldCAtPSBzaXplb2Yoc3RydWN0IHhlbl9hcmdvX3JpbmdfbWVzc2FnZV9oZWFkZXIp OworICAgIHJldCAtPSBST1VORFVQX01FU1NBR0UoMSk7CisKKyAgICByZXR1cm4gKHJldCA8IDAp ID8gMCA6IHJldDsKK30KKwogLyoKICAqIGlvdl9jb3VudCByZXR1cm5zIGl0cyBjb3VudCBvbiBz dWNjZXNzIHZpYSBhbiBvdXQgdmFyaWFibGUgdG8gYXZvaWQKICAqIHBvdGVudGlhbCBmb3IgYSBu ZWdhdGl2ZSByZXR1cm4gdmFsdWUgdG8gYmUgdXNlZCBpbmNvcnJlY3RseQpAQCAtOTY1LDYgKzEw NDQsNjMgQEAgcGVuZGluZ19yZW1vdmVfYWxsKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvKQogICAgIHJpbmdfaW5mby0+bnBlbmRpbmcgPSAw OwogfQogCitzdGF0aWMgdm9pZAorcGVuZGluZ19ub3RpZnkoc3RydWN0IGxpc3RfaGVhZCAqdG9f bm90aWZ5KQoreworICAgIHN0cnVjdCBwZW5kaW5nX2VudCAqZW50LCAqbmV4dDsKKworICAgIEFT U0VSVChMT0NLSU5HX1JlYWRfTDEpOworCisgICAgLyogU2VuZGluZyBzaWduYWxzIGZvciBhbGwg ZW50cyBpbiB0aGlzIGxpc3QsIGRyYWluaW5nIHVudGlsIGl0IGlzIGVtcHR5LiAqLworICAgIGxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnQsIG5leHQsIHRvX25vdGlmeSwgbm9kZSkKKyAgICB7 CisgICAgICAgIGxpc3RfZGVsKCZlbnQtPm5vZGUpOworICAgICAgICBzaWduYWxfZG9taWQoZW50 LT5kb21haW5faWQpOworICAgICAgICB4ZnJlZShlbnQpOworICAgIH0KK30KKworc3RhdGljIHZv aWQKK3BlbmRpbmdfZmluZChjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5n X2luZm8gKnJpbmdfaW5mbywKKyAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcGF5bG9hZF9zcGFj ZSwgc3RydWN0IGxpc3RfaGVhZCAqdG9fbm90aWZ5KQoreworICAgIHN0cnVjdCBwZW5kaW5nX2Vu dCAqZW50LCAqbmV4dDsKKworICAgIEFTU0VSVChMT0NLSU5HX1JlYWRfcmluZ3NfTDIoZCkpOwor CisgICAgLyoKKyAgICAgKiBUT0RPOiBDdXJyZW50IHBvbGljeSBoZXJlIGlzIHRvIHNpZ25hbCBf YWxsXyBvZiB0aGUgd2FpdGluZyBkb21haW5zCisgICAgICogICAgICAgaW50ZXJlc3RlZCBpbiBz ZW5kaW5nIGEgbWVzc2FnZSBvZiBzaXplIGxlc3MgdGhhbiBwYXlsb2FkX3NwYWNlLgorICAgICAq CisgICAgICogVGhpcyBpcyBsaWtlbHkgdG8gYmUgc3Vib3B0aW1hbCwgc2luY2Ugb25jZSBvbmUg b2YgdGhlbSBoYXMgYWRkZWQKKyAgICAgKiB0aGVpciBtZXNzYWdlIHRvIHRoZSByaW5nLCB0aGVy ZSBtYXkgd2VsbCBiZSBpbnN1ZmZpY2llbnQgcm9vbQorICAgICAqIGF2YWlsYWJsZSBmb3IgYW55 IG9mIHRoZSBvdGhlcnMgdG8gdHJhbnNtaXQsIG1lYW5pbmcgdGhhdCB0aGV5IHdlcmUKKyAgICAg KiB3b2tlbiBpbiB2YWluLCB3aGljaCBjcmVhdGVkIGV4dHJhIHdvcmsganVzdCB0byByZXF1ZXVl IHRoZWlyIHdhaXQuCisgICAgICoKKyAgICAgKiBSZXRhaW4gdGhpcyBzaW1wbGUgcG9saWN5IGZv ciBub3cgc2luY2UgaXQgYXQgbGVhc3QgYXZvaWRzIHN0YXJ2aW5nIGEKKyAgICAgKiBkb21haW4g b2YgYXZhaWxhYmxlIHNwYWNlIG5vdGlmaWNhdGlvbnMgYmVjYXVzZSBvZiBhIHBvbGljeSB0aGF0 IG9ubHkKKyAgICAgKiBub3RpZmllZCBvdGhlciBkb21haW5zIGluc3RlYWQuIEltcHJvdmVtZW50 IG1heSBiZSBwb3NzaWJsZTsKKyAgICAgKiBpbnZlc3RpZ2F0aW9uIHJlcXVpcmVkLgorICAgICAq LworICAgIHNwaW5fbG9jaygmcmluZ19pbmZvLT5MM19sb2NrKTsKKworICAgIC8qIFJlbW92ZSBt YXRjaGluZyBlbnRzIGZyb20gdGhlIHJpbmcgbGlzdCwgYW5kIGFkZCB0aGVtIHRvICJ0b19ub3Rp ZnkiICovCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGVudCwgbmV4dCwgJnJpbmdfaW5m by0+cGVuZGluZywgbm9kZSkKKyAgICB7CisgICAgICAgIGlmICggcGF5bG9hZF9zcGFjZSA+PSBl bnQtPmxlbiApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggcmluZ19pbmZvLT5pZC5wYXJ0 bmVyX2lkID09IFhFTl9BUkdPX0RPTUlEX0FOWSApCisgICAgICAgICAgICAgICAgd2lsZGNhcmRf cGVuZGluZ19saXN0X3JlbW92ZShlbnQtPmRvbWFpbl9pZCwgZW50KTsKKworICAgICAgICAgICAg bGlzdF9kZWwoJmVudC0+bm9kZSk7CisgICAgICAgICAgICByaW5nX2luZm8tPm5wZW5kaW5nLS07 CisgICAgICAgICAgICBsaXN0X2FkZCgmZW50LT5ub2RlLCB0b19ub3RpZnkpOworICAgICAgICB9 CisgICAgfQorCisgICAgc3Bpbl91bmxvY2soJnJpbmdfaW5mby0+TDNfbG9jayk7Cit9CisKIHN0 YXRpYyBpbnQKIHBlbmRpbmdfcXVldWUoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGFy Z29fcmluZ19pbmZvICpyaW5nX2luZm8sCiAgICAgICAgICAgICAgIGRvbWlkX3Qgc3JjX2lkLCB1 bnNpZ25lZCBpbnQgbGVuKQpAQCAtMTAyNiw2ICsxMTYyLDI5IEBAIHBlbmRpbmdfcmVxdWV1ZShj b25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbywK IH0KIAogc3RhdGljIHZvaWQKK3BlbmRpbmdfY2FuY2VsKGNvbnN0IHN0cnVjdCBkb21haW4gKmQs IHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLAorICAgICAgICAgICAgICAgZG9taWRf dCBzcmNfaWQpCit7CisgICAgc3RydWN0IHBlbmRpbmdfZW50ICplbnQsICpuZXh0OworCisgICAg QVNTRVJUKExPQ0tJTkdfTDMoZCwgcmluZ19pbmZvKSk7CisKKyAgICAvKiBSZW1vdmUgYWxsIGVu dHMgd2hlcmUgZG9tYWluX2lkIG1hdGNoZXMgc3JjX2lkIGZyb20gdGhlIHJpbmcncyBsaXN0LiAq LworICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlbnQsIG5leHQsICZyaW5nX2luZm8tPnBl bmRpbmcsIG5vZGUpCisgICAgeworICAgICAgICBpZiAoIGVudC0+ZG9tYWluX2lkID09IHNyY19p ZCApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIEZvciB3aWxkY2FyZCByaW5ncywgcmVtb3Zl IGVhY2ggZnJvbSB0aGVpciB3aWxkY2FyZCBsaXN0IHRvby4gKi8KKyAgICAgICAgICAgIGlmICgg cmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkID09IFhFTl9BUkdPX0RPTUlEX0FOWSApCisgICAgICAg ICAgICAgICAgd2lsZGNhcmRfcGVuZGluZ19saXN0X3JlbW92ZShlbnQtPmRvbWFpbl9pZCwgZW50 KTsKKyAgICAgICAgICAgIGxpc3RfZGVsKCZlbnQtPm5vZGUpOworICAgICAgICAgICAgeGZyZWUo ZW50KTsKKyAgICAgICAgICAgIHJpbmdfaW5mby0+bnBlbmRpbmctLTsKKyAgICAgICAgfQorICAg IH0KK30KKworc3RhdGljIHZvaWQKIHdpbGRjYXJkX3JpbmdzX3BlbmRpbmdfcmVtb3ZlKHN0cnVj dCBkb21haW4gKmQpCiB7CiAgICAgc3RydWN0IHBlbmRpbmdfZW50ICplbnQsICpuZXh0OwpAQCAt MTE1Miw2ICsxMzExLDk5IEBAIHBhcnRuZXJfcmluZ3NfcmVtb3ZlKHN0cnVjdCBkb21haW4gKnNy Y19kKQogfQogCiBzdGF0aWMgaW50CitmaWxsX3JpbmdfZGF0YShjb25zdCBzdHJ1Y3QgZG9tYWlu ICpjdXJyZCwKKyAgICAgICAgICAgICAgIFhFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fcmluZ19k YXRhX2VudF90KSBkYXRhX2VudF9obmQpCit7CisgICAgeGVuX2FyZ29fcmluZ19kYXRhX2VudF90 IGVudDsKKyAgICBzdHJ1Y3QgZG9tYWluICpkc3RfZDsKKyAgICBzdHJ1Y3QgYXJnb19yaW5nX2lu Zm8gKnJpbmdfaW5mbzsKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIEFTU0VSVChjdXJyZCA9PSBj dXJyZW50LT5kb21haW4pOworICAgIEFTU0VSVChMT0NLSU5HX1JlYWRfTDEpOworCisgICAgaWYg KCBfX2NvcHlfZnJvbV9ndWVzdCgmZW50LCBkYXRhX2VudF9obmQsIDEpICkKKyAgICAgICAgcmV0 dXJuIC1FRkFVTFQ7CisKKyAgICBhcmdvX2RwcmludGsoImZpbGxfcmluZ19kYXRhOiBlbnQucmlu Zy5kb21haW49JXUsZW50LnJpbmcuYXBvcnQ9JXhcbiIsCisgICAgICAgICAgICAgICAgIGVudC5y aW5nLmRvbWFpbl9pZCwgZW50LnJpbmcuYXBvcnQpOworCisgICAgZW50LmZsYWdzID0gMDsKKwor ICAgIGRzdF9kID0gZ2V0X2RvbWFpbl9ieV9pZChlbnQucmluZy5kb21haW5faWQpOworICAgIGlm ICggIWRzdF9kIHx8ICFkc3RfZC0+YXJnbyApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmVh ZF9sb2NrKCZkc3RfZC0+YXJnby0+cmluZ3NfTDJfcndsb2NrKTsKKworICAgIHJpbmdfaW5mbyA9 IGZpbmRfcmluZ19pbmZvX2J5X21hdGNoKGRzdF9kLCBlbnQucmluZy5hcG9ydCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZC0+ZG9tYWluX2lkKTsKKyAgICBp ZiAoIHJpbmdfaW5mbyApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQgc3BhY2VfYXZhaWw7 CisKKyAgICAgICAgZW50LmZsYWdzIHw9IFhFTl9BUkdPX1JJTkdfRVhJU1RTOworCisgICAgICAg IHNwaW5fbG9jaygmcmluZ19pbmZvLT5MM19sb2NrKTsKKworICAgICAgICBlbnQubWF4X21lc3Nh Z2Vfc2l6ZSA9IHJpbmdfaW5mby0+bGVuIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mKHN0cnVjdCB4ZW5fYXJnb19yaW5nX21lc3NhZ2VfaGVhZGVyKSAtCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJPVU5EVVBfTUVTU0FHRSgxKTsKKworICAg ICAgICBpZiAoIHJpbmdfaW5mby0+aWQucGFydG5lcl9pZCA9PSBYRU5fQVJHT19ET01JRF9BTlkg KQorICAgICAgICAgICAgZW50LmZsYWdzIHw9IFhFTl9BUkdPX1JJTkdfU0hBUkVEOworCisgICAg ICAgIHNwYWNlX2F2YWlsID0gcmluZ2J1Zl9wYXlsb2FkX3NwYWNlKGRzdF9kLCByaW5nX2luZm8p OworCisgICAgICAgIGFyZ29fZHByaW50aygiZmlsbF9yaW5nX2RhdGE6IGFwb3J0PSV4IHNwYWNl X2F2YWlsPSV1IgorICAgICAgICAgICAgICAgICAgICAgIiBzcGFjZV93YW50ZWQ9JXVcbiIsCisg ICAgICAgICAgICAgICAgICAgICByaW5nX2luZm8tPmlkLmFwb3J0LCBzcGFjZV9hdmFpbCwgZW50 LnNwYWNlX3JlcXVpcmVkKTsKKworICAgICAgICAvKiBEbyBub3QgcXVldWUgYSBub3RpZmljYXRp b24gZm9yIGFuIHVuYWNoaWV2YWJsZSBzaXplICovCisgICAgICAgIGlmICggZW50LnNwYWNlX3Jl cXVpcmVkID4gZW50Lm1heF9tZXNzYWdlX3NpemUgKQorICAgICAgICAgICAgZW50LmZsYWdzIHw9 IFhFTl9BUkdPX1JJTkdfRU1TR1NJWkU7CisgICAgICAgIGVsc2UgaWYgKCBzcGFjZV9hdmFpbCA+ PSBlbnQuc3BhY2VfcmVxdWlyZWQgKQorICAgICAgICB7CisgICAgICAgICAgICBwZW5kaW5nX2Nh bmNlbChkc3RfZCwgcmluZ19pbmZvLCBjdXJyZC0+ZG9tYWluX2lkKTsKKyAgICAgICAgICAgIGVu dC5mbGFncyB8PSBYRU5fQVJHT19SSU5HX1NVRkZJQ0lFTlQ7CisgICAgICAgIH0KKyAgICAgICAg ZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXQgPSBwZW5kaW5nX3JlcXVldWUoZHN0X2Qs IHJpbmdfaW5mbywgY3VycmQtPmRvbWFpbl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnQuc3BhY2VfcmVxdWlyZWQpOworICAgICAgICAgICAgaWYgKCByZXQgPT0gLUVC VVNZICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAg ICAqIFRvbyBtYW55IG90aGVyIGRvbWFpbnMgYXJlIGFscmVhZHkgYXdhaXRpbmcgbm90aWZpY2F0 aW9uCisgICAgICAgICAgICAgICAgICogYWJvdXQgYXZhaWxhYmxlIHNwYWNlIG9uIHRoaXMgcmlu Zy4gSW5kaWNhdGUgdGhpcyBzdGF0ZSB2aWEKKyAgICAgICAgICAgICAgICAgKiBmbGFnLiBObyBu ZWVkIHRvIHJldHVybiBhbiBlcnJvciB0byB0aGUgY2FsbGVyOyBhbGxvdyB0aGUKKyAgICAgICAg ICAgICAgICAgKiBwcm9jZXNzaW5nIG9mIHF1ZXJpZXMgYWJvdXQgb3RoZXIgcmluZ3MgdG8gY29u dGludWUuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgZW50LmZsYWdzIHw9 IFhFTl9BUkdPX1JJTkdfRUJVU1k7CisgICAgICAgICAgICAgICAgcmV0ID0gMDsKKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNwaW5fdW5sb2NrKCZyaW5nX2luZm8tPkwzX2xv Y2spOworCisgICAgICAgIGlmICggc3BhY2VfYXZhaWwgPT0gZW50Lm1heF9tZXNzYWdlX3NpemUg KQorICAgICAgICAgICAgZW50LmZsYWdzIHw9IFhFTl9BUkdPX1JJTkdfRU1QVFk7CisKKyAgICB9 CisgICAgcmVhZF91bmxvY2soJmRzdF9kLT5hcmdvLT5yaW5nc19MMl9yd2xvY2spOworCisgb3V0 OgorICAgIGlmICggZHN0X2QgKQorICAgICAgICBwdXRfZG9tYWluKGRzdF9kKTsKKworICAgIGlm ICggIXJldCAmJiAoX19jb3B5X2ZpZWxkX3RvX2d1ZXN0KGRhdGFfZW50X2huZCwgJmVudCwgZmxh Z3MpIHx8CisgICAgICAgICAgICAgICAgICBfX2NvcHlfZmllbGRfdG9fZ3Vlc3QoZGF0YV9lbnRf aG5kLCAmZW50LCBtYXhfbWVzc2FnZV9zaXplKSkgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsK KworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQKIGZpbmRfcmluZ19tZm4oc3RydWN0 IGRvbWFpbiAqZCwgZ2ZuX3QgZ2ZuLCBtZm5fdCAqbWZuKQogewogICAgIHN0cnVjdCBwYWdlX2lu Zm8gKnBhZ2U7CkBAIC0xNjE4LDYgKzE4NzAsMTA5IEBAIHJlZ2lzdGVyX3Jpbmcoc3RydWN0IGRv bWFpbiAqY3VycmQsCiAgICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHZvaWQKK25vdGlmeV9y aW5nKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19p bmZvLAorICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqdG9fbm90aWZ5KQoreworICAgIHVu c2lnbmVkIGludCBzcGFjZTsKKworICAgIEFTU0VSVChMT0NLSU5HX1JlYWRfcmluZ3NfTDIoZCkp OworCisgICAgc3Bpbl9sb2NrKCZyaW5nX2luZm8tPkwzX2xvY2spOworCisgICAgaWYgKCByaW5n X2luZm8tPmxlbiApCisgICAgICAgIHNwYWNlID0gcmluZ2J1Zl9wYXlsb2FkX3NwYWNlKGQsIHJp bmdfaW5mbyk7CisgICAgZWxzZQorICAgICAgICBzcGFjZSA9IDA7CisKKyAgICBzcGluX3VubG9j aygmcmluZ19pbmZvLT5MM19sb2NrKTsKKworICAgIGlmICggc3BhY2UgKQorICAgICAgICBwZW5k aW5nX2ZpbmQoZCwgcmluZ19pbmZvLCBzcGFjZSwgdG9fbm90aWZ5KTsKK30KKworc3RhdGljIHZv aWQKK25vdGlmeV9jaGVja19wZW5kaW5nKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgdW5zaWdu ZWQgaW50IGk7CisgICAgTElTVF9IRUFEKHRvX25vdGlmeSk7CisKKyAgICBBU1NFUlQoTE9DS0lO R19SZWFkX0wxKTsKKworICAgIHJlYWRfbG9jaygmZC0+YXJnby0+cmluZ3NfTDJfcndsb2NrKTsK KworICAgIC8qIFdhbGsgYWxsIHJpbmdzLCBjYWxsIG5vdGlmeV9yaW5nIG9uIGVhY2ggdG8gcG9w dWxhdGUgdG9fbm90aWZ5IGxpc3QgKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSR09fSEFTSFRB QkxFX1NJWkU7IGkrKyApCisgICAgeworICAgICAgICBzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJp bmdfaW5mbywgKm5leHQ7CisgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmJ1Y2tldCA9ICZkLT5h cmdvLT5yaW5nX2hhc2hbaV07CisKKyAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJp bmdfaW5mbywgbmV4dCwgYnVja2V0LCBub2RlKQorICAgICAgICAgICAgbm90aWZ5X3JpbmcoZCwg cmluZ19pbmZvLCAmdG9fbm90aWZ5KTsKKyAgICB9CisKKyAgICByZWFkX3VubG9jaygmZC0+YXJn by0+cmluZ3NfTDJfcndsb2NrKTsKKworICAgIGlmICggIWxpc3RfZW1wdHkoJnRvX25vdGlmeSkg KQorICAgICAgICBwZW5kaW5nX25vdGlmeSgmdG9fbm90aWZ5KTsKK30KKworc3RhdGljIGxvbmcK K25vdGlmeShzdHJ1Y3QgZG9tYWluICpjdXJyZCwKKyAgICAgICBYRU5fR1VFU1RfSEFORExFX1BB UkFNKHhlbl9hcmdvX3JpbmdfZGF0YV90KSByaW5nX2RhdGFfaG5kKQoreworICAgIFhFTl9HVUVT VF9IQU5ETEUoeGVuX2FyZ29fcmluZ19kYXRhX2VudF90KSBlbnRfaG5kOworICAgIHhlbl9hcmdv X3JpbmdfZGF0YV90IHJpbmdfZGF0YTsKKyAgICBpbnQgcmV0ID0gMDsKKworICAgIEFTU0VSVChj dXJyZCA9PSBjdXJyZW50LT5kb21haW4pOworCisgICAgcmVhZF9sb2NrKCZMMV9nbG9iYWxfYXJn b19yd2xvY2spOworCisgICAgaWYgKCAhY3VycmQtPmFyZ28gKQorICAgIHsKKyAgICAgICAgYXJn b19kcHJpbnRrKCIhZC0+YXJnbywgRU5PREVWXG4iKTsKKyAgICAgICAgcmV0ID0gLUVOT0RFVjsK KyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbm90aWZ5X2NoZWNrX3BlbmRpbmcoY3Vy cmQpOworCisgICAgaWYgKCBndWVzdF9oYW5kbGVfaXNfbnVsbChyaW5nX2RhdGFfaG5kKSApCisg ICAgICAgIGdvdG8gb3V0OworCisgICAgcmV0ID0gY29weV9mcm9tX2d1ZXN0KCZyaW5nX2RhdGEs IHJpbmdfZGF0YV9obmQsIDEpID8gLUVGQVVMVCA6IDA7CisgICAgaWYgKCByZXQgKQorICAgICAg ICBnb3RvIG91dDsKKworICAgIGlmICggcmluZ19kYXRhLm5lbnQgPiBNQVhfTk9USUZZX0NPVU5U ICkKKyAgICB7CisgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwgImFyZ286IG5vdGlmeSBlbnRy eSBjb3VudCgldSkgZXhjZWVkcyBtYXgoJXUpXG4iLAorICAgICAgICAgICAgICAgIHJpbmdfZGF0 YS5uZW50LCBNQVhfTk9USUZZX0NPVU5UKTsKKyAgICAgICAgcmV0ID0gLUVBQ0NFUzsKKyAgICAg ICAgZ290byBvdXQ7CisgICAgfQorCisgICAgZW50X2huZCA9IGd1ZXN0X2hhbmRsZV9mb3JfZmll bGQocmluZ19kYXRhX2huZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4 ZW5fYXJnb19yaW5nX2RhdGFfZW50X3QsIGRhdGFbMF0pOworICAgIGlmICggdW5saWtlbHkoIWd1 ZXN0X2hhbmRsZV9va2F5KGVudF9obmQsIHJpbmdfZGF0YS5uZW50KSkgKQorICAgIHsKKyAgICAg ICAgcmV0ID0gLUVGQVVMVDsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgd2hpbGUg KCAhcmV0ICYmIHJpbmdfZGF0YS5uZW50LS0gKQorICAgIHsKKyAgICAgICAgcmV0ID0gZmlsbF9y aW5nX2RhdGEoY3VycmQsIGVudF9obmQpOworICAgICAgICBndWVzdF9oYW5kbGVfYWRkX29mZnNl dChlbnRfaG5kLCAxKTsKKyAgICB9CisKKyBvdXQ6CisgICAgcmVhZF91bmxvY2soJkwxX2dsb2Jh bF9hcmdvX3J3bG9jayk7CisKKyAgICByZXR1cm4gcmV0OworfQorCiBzdGF0aWMgbG9uZwogc2Vu ZHYoc3RydWN0IGRvbWFpbiAqc3JjX2QsIHhlbl9hcmdvX2FkZHJfdCAqc3JjX2FkZHIsCiAgICAg ICBjb25zdCB4ZW5fYXJnb19hZGRyX3QgKmRzdF9hZGRyLCB4ZW5fYXJnb19pb3ZfdCAqaW92cywg dW5zaWduZWQgaW50IG5pb3YsCkBAIC0xODAyLDYgKzIxNTcsMjEgQEAgZG9fYXJnb19vcCh1bnNp Z25lZCBpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZzEsCiAgICAgICAg IGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgWEVOX0FSR09fT1Bfbm90aWZ5OgorICAgIHsKKyAg ICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fYXJnb19yaW5nX2RhdGFfdCkgcmluZ19k YXRhX2huZCA9CisgICAgICAgICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnMSwgeGVu X2FyZ29fcmluZ19kYXRhX3QpOworCisgICAgICAgIGlmICggdW5saWtlbHkoKCFndWVzdF9oYW5k bGVfaXNfbnVsbChhcmcyKSkgfHwgYXJnMyB8fCBhcmc0KSApCisgICAgICAgIHsKKyAgICAgICAg ICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAg ICAgcmMgPSBub3RpZnkoY3VycmQsIHJpbmdfZGF0YV9obmQpOworICAgICAgICBicmVhazsKKyAg ICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICByYyA9IC1FT1BOT1RTVVBQOwogICAgICAgICBi cmVhazsKQEAgLTE5MTIsNiArMjI4MiwyMSBAQCBjb21wYXRfYXJnb19vcCh1bnNpZ25lZCBpbnQg Y21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZzEsCiAgICAgICAgIGJyZWFrOwog ICAgIH0KIAorICAgIGNhc2UgWEVOX0FSR09fT1Bfbm90aWZ5OgorICAgIHsKKyAgICAgICAgWEVO X0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fYXJnb19yaW5nX2RhdGFfdCkgcmluZ19kYXRhX2huZCA9 CisgICAgICAgICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnMSwgeGVuX2FyZ29fcmlu Z19kYXRhX3QpOworCisgICAgICAgIGlmICggdW5saWtlbHkoKCFndWVzdF9oYW5kbGVfaXNfbnVs bChhcmcyKSkgfHwgYXJnMyB8fCBhcmc0KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0g LUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBu b3RpZnkoY3VycmQsIHJpbmdfZGF0YV9obmQpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAg ICBkZWZhdWx0OgogICAgICAgICByYyA9IC1FT1BOT1RTVVBQOwogICAgICAgICBicmVhazsKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMv YXJnby5oCmluZGV4IDU5YWY1YzYuLmNhOTliY2QgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1 YmxpYy9hcmdvLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaApAQCAtMTE0LDYgKzEx NCw0MiBAQCB0eXBlZGVmIHN0cnVjdCB4ZW5fYXJnb191bnJlZ2lzdGVyX3JpbmcKIC8qIE1lc3Nh Z2VzIG9uIHRoZSByaW5nIGFyZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiB0aGlzIHNpemUuICov CiAjZGVmaW5lIFhFTl9BUkdPX01TR19TTE9UX1NJWkUgMHgxMAogCisvKgorICogTm90aWZ5IGZs YWdzCisgKi8KKy8qIFJpbmcgZXhpc3RzICovCisjZGVmaW5lIFhFTl9BUkdPX1JJTkdfRVhJU1RT ICAgICAgICAgICAgKDFVIDw8IDApCisvKiBSaW5nIGlzIHNoYXJlZCwgbm90IHVuaWNhc3QgKi8K KyNkZWZpbmUgWEVOX0FSR09fUklOR19TSEFSRUQgICAgICAgICAgICAoMVUgPDwgMSkKKy8qIFJp bmcgaXMgZW1wdHkgKi8KKyNkZWZpbmUgWEVOX0FSR09fUklOR19FTVBUWSAgICAgICAgICAgICAo MVUgPDwgMikKKy8qIFN1ZmZpY2llbnQgc3BhY2UgdG8gcXVldWUgc3BhY2VfcmVxdWlyZWQgYnl0 ZXMgbWlnaHQgZXhpc3QgKi8KKyNkZWZpbmUgWEVOX0FSR09fUklOR19TVUZGSUNJRU5UICAgICAg ICAoMVUgPDwgMykKKy8qIEluc3VmZmljaWVudCByaW5nIHNpemUgZm9yIHNwYWNlX3JlcXVpcmVk IGJ5dGVzICovCisjZGVmaW5lIFhFTl9BUkdPX1JJTkdfRU1TR1NJWkUgICAgICAgICAgKDFVIDw8 IDQpCisvKiBUb28gbWFueSBkb21haW5zIHdhaXRpbmcgZm9yIGF2YWlsYWJsZSBzcGFjZSBzaWdu YWxzIGZvciB0aGlzIHJpbmcgKi8KKyNkZWZpbmUgWEVOX0FSR09fUklOR19FQlVTWSAgICAgICAg ICAgICAoMVUgPDwgNSkKKwordHlwZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fcmluZ19kYXRhX2VudAor eworICAgIHN0cnVjdCB4ZW5fYXJnb19hZGRyIHJpbmc7CisgICAgdWludDE2X3QgZmxhZ3M7Cisg ICAgdWludDE2X3QgcGFkOworICAgIHVpbnQzMl90IHNwYWNlX3JlcXVpcmVkOworICAgIHVpbnQz Ml90IG1heF9tZXNzYWdlX3NpemU7Cit9IHhlbl9hcmdvX3JpbmdfZGF0YV9lbnRfdDsKKwordHlw ZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fcmluZ19kYXRhCit7CisgICAgdWludDMyX3QgbmVudDsKKyAg ICB1aW50MzJfdCBwYWQ7CisjaWYgZGVmaW5lZChfX1NURENfVkVSU0lPTl9fKSAmJiBfX1NURENf VkVSU0lPTl9fID49IDE5OTkwMUwKKyAgICBzdHJ1Y3QgeGVuX2FyZ29fcmluZ19kYXRhX2VudCBk YXRhW107CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICAgIHN0cnVjdCB4ZW5fYXJnb19yaW5n X2RhdGFfZW50IGRhdGFbMF07CisjZW5kaWYKK30geGVuX2FyZ29fcmluZ19kYXRhX3Q7CisKIHN0 cnVjdCB4ZW5fYXJnb19yaW5nX21lc3NhZ2VfaGVhZGVyCiB7CiAgICAgdWludDMyX3QgbGVuOwpA QCAtMjA0LDQgKzI0MCwzNSBAQCBzdHJ1Y3QgeGVuX2FyZ29fcmluZ19tZXNzYWdlX2hlYWRlcgog ICovCiAjZGVmaW5lIFhFTl9BUkdPX09QX3NlbmR2ICAgICAgICAgICAgICAgMwogCisvKgorICog WEVOX0FSR09fT1Bfbm90aWZ5CisgKgorICogQXNrcyBYZW4gZm9yIGluZm9ybWF0aW9uIGFib3V0 IG90aGVyIHJpbmdzIGluIHRoZSBzeXN0ZW0uCisgKgorICogZW50LT5yaW5nIGlzIHRoZSB4ZW5f YXJnb19hZGRyX3Qgb2YgdGhlIHJpbmcgeW91IHdhbnQgaW5mb3JtYXRpb24gb24uCisgKiBVc2Vz IHRoZSBzYW1lIHJpbmcgbWF0Y2hpbmcgcnVsZXMgYXMgWEVOX0FSR09fT1Bfc2VuZHYuCisgKgor ICogZW50LT5zcGFjZV9yZXF1aXJlZCA6IGlmIHRoaXMgZmllbGQgaXMgbm90IG51bGwgdGhlbiBY ZW4gd2lsbCBjaGVjaworICogdGhhdCB0aGVyZSBpcyBzcGFjZSBpbiB0aGUgZGVzdGluYXRpb24g cmluZyBmb3IgdGhpcyBtYW55IGJ5dGVzIG9mIHBheWxvYWQuCisgKiBJZiB0aGUgcmluZyBpcyB0 b28gc21hbGwgZm9yIHRoZSByZXF1ZXN0ZWQgc3BhY2VfcmVxdWlyZWQsIGl0IHdpbGwgc2V0IHRo ZQorICogWEVOX0FSR09fUklOR19FTVNHU0laRSBmbGFnIG9uIHJldHVybi4KKyAqIElmIHN1ZmZp Y2llbnQgc3BhY2UgaXMgYXZhaWxhYmxlLCBpdCB3aWxsIHNldCBYRU5fQVJHT19SSU5HX1NVRkZJ Q0lFTlQKKyAqIGFuZCBDQU5DRUwgYW55IHBlbmRpbmcgbm90aWZpY2F0aW9uIGZvciB0aGF0IGVu dC0+cmluZzsgb3RoZXJ3aXNlIGl0CisgKiB3aWxsIHNjaGVkdWxlIGEgbm90aWZpY2F0aW9uIGV2 ZW50IGFuZCB0aGUgZmxhZyB3aWxsIG5vdCBiZSBzZXQuCisgKgorICogVGhlc2UgZmxhZ3MgYXJl IHNldCBieSBYZW4gd2hlbiBub3RpZnkgcmVwbGllczoKKyAqIFhFTl9BUkdPX1JJTkdfRVhJU1RT ICAgICByaW5nIGV4aXN0cworICogWEVOX0FSR09fUklOR19TSEFSRUQgICAgIHJpbmcgaXMgcmVn aXN0ZXJlZCBmb3Igd2lsZGNhcmQgcGFydG5lcgorICogWEVOX0FSR09fUklOR19FTVBUWSAgICAg IHJpbmcgaXMgZW1wdHkKKyAqIFhFTl9BUkdPX1JJTkdfU1VGRklDSUVOVCBzdWZmaWNpZW50IHNw YWNlIGZvciBzcGFjZV9yZXF1aXJlZCBpcyB0aGVyZQorICogWEVOX0FSR09fUklOR19FTVNHU0la RSAgIHNwYWNlX3JlcXVpcmVkIGlzIHRvbyBsYXJnZSBmb3IgdGhlIHJpbmcgc2l6ZQorICogWEVO X0FSR09fUklOR19FQlVTWSAgICAgIHRvbyBtYW55IGRvbWFpbnMgd2FpdGluZyBmb3IgYXZhaWxh YmxlIHNwYWNlIHNpZ25hbHMKKyAqCisgKiBhcmcxOiBYRU5fR1VFU1RfSEFORExFKHhlbl9hcmdv X3JpbmdfZGF0YV90KSByaW5nX2RhdGEgKG1heSBiZSBOVUxMKQorICogYXJnMjogTlVMTAorICog YXJnMzogMCAoWkVSTykKKyAqIGFyZzQ6IDAgKFpFUk8pCisgKi8KKyNkZWZpbmUgWEVOX0FSR09f T1Bfbm90aWZ5ICAgICAgICAgICAgICA0CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUveGxhdC5sc3QgYi94ZW4vaW5jbHVkZS94bGF0LmxzdAppbmRleCAwZDY1ZjZhLi5lMzMwZjcy IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94bGF0LmxzdAorKysgYi94ZW4vaW5jbHVkZS94bGF0 LmxzdApAQCAtMzQsNiArMzQsOCBAQAogIQlhcmdvX2lvdgkJCWFyZ28uaAogPwlhcmdvX3JlZ2lz dGVyX3JpbmcJCWFyZ28uaAogPwlhcmdvX3JpbmcJCQlhcmdvLmgKKz8JYXJnb19yaW5nX2RhdGEJ CQlhcmdvLmgKKz8JYXJnb19yaW5nX2RhdGFfZW50CQlhcmdvLmgKID8JYXJnb19yaW5nX21lc3Nh Z2VfaGVhZGVyCWFyZ28uaAogPwlhcmdvX3NlbmRfYWRkcgkJCWFyZ28uaAogPwlhcmdvX3VucmVn aXN0ZXJfcmluZwkJYXJnby5oCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw=