From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v4 09/14] argo: implement the sendv op; evtchn: expose send_guest_global_virq Date: Tue, 15 Jan 2019 01:27:41 -0800 Message-ID: <1547544466-21135-10-git-send-email-christopher.w.clark@gmail.com> References: <1547544466-21135-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 1gjL1F-0003fr-Rw for xen-devel@lists.xenproject.org; Tue, 15 Jan 2019 09:28:25 +0000 Received: by mail-it1-x144.google.com with SMTP id m62so3963127ith.5 for ; Tue, 15 Jan 2019 01:28:20 -0800 (PST) In-Reply-To: <1547544466-21135-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 c2VuZHYgb3BlcmF0aW9uIGlzIGludm9rZWQgdG8gcGVyZm9ybSBhIHN5bmNocm9ub3VzIHNlbmQg b2YgYnVmZmVycwpjb250YWluZWQgaW4gaW92cyB0byBhIHJlbW90ZSBkb21haW4ncyByZWdpc3Rl cmVkIHJpbmcuCgpJdCB0YWtlczoKICogQSBkZXN0aW5hdGlvbiBhZGRyZXNzIChkb21pZCwgcG9y dCkgZm9yIHRoZSByaW5nIHRvIHNlbmQgdG8uCiAgIEl0IHBlcmZvcm1zIGEgbW9zdC1zcGVjaWZp YyBtYXRjaCBsb29rdXAsIHRvIGFsbG93IGZvciB3aWxkY2FyZC4KICogQSBzb3VyY2UgYWRkcmVz cywgdXNlZCB0byBpbmZvcm0gdGhlIGRlc3RpbmF0aW9uIG9mIHdoZXJlIHRvIHJlcGx5LgogKiBU aGUgYWRkcmVzcyBvZiBhbiBhcnJheSBvZiBpb3ZzIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gc2Vu ZAogKiAuLiBhbmQgdGhlIGxlbmd0aCBvZiB0aGF0IGFycmF5IG9mIGlvdnMKICogYW5kIGEgMzIt Yml0IG1lc3NhZ2UgdHlwZSwgYXZhaWxhYmxlIHRvIGNvbW11bmljYXRlIG1lc3NhZ2UgY29udGV4 dAogICBkYXRhIChlZy4ga2VybmVsLXRvLWtlcm5lbCwgc2VwYXJhdGUgZnJvbSB0aGUgYXBwbGlj YXRpb24gZGF0YSkuCgpJZiBpbnN1ZmZpY2llbnQgc3BhY2UgZXhpc3RzIGluIHRoZSBkZXN0aW5h dGlvbiByaW5nLCBpdCB3aWxsIHJldHVybgotRUFHQUlOIGFuZCBYZW4gd2lsbCBub3RpZnkgdGhl IGNhbGxlciB3aGVuIHN1ZmZpY2llbnQgc3BhY2UgYmVjb21lcwphdmFpbGFibGUuCgpBY2Nlc3Nl cyB0byB0aGUgcmluZyBpbmRpY2VzIGFyZSBhcHByb3ByaWF0ZWx5IGF0b21pYy4gVGhlIHJpbmdz IGFyZQptYXBwZWQgaW50byBYZW4ncyBwcml2YXRlIGFkZHJlc3Mgc3BhY2UgdG8gd3JpdGUgYXMg bmVlZGVkIGFuZCB0aGUKbWFwcGluZ3MgYXJlIHJldGFpbmVkIGZvciBsYXRlciB1c2UuCgpGaXhl ZC1zaXplIHR5cGVzIGFyZSB1c2VkIGluIHNvbWUgYXJlYXMgd2l0aGluIHRoaXMgY29kZSB3aGVy ZSBjYXV0aW9uCmFyb3VuZCBhdm9pZGluZyBpbnRlZ2VyIG92ZXJmbG93IGlzIGltcG9ydGFudC4K Ck5vdGlmaWNhdGlvbnMgYXJlIHNlbnQgdG8gZ3Vlc3RzIHZpYSBWSVJRIGFuZCBzZW5kX2d1ZXN0 X2dsb2JhbF92aXJxIGlzCmV4cG9zZWQgaW4gdGhlIGNoYW5nZSB0byBlbmFibGUgYXJnbyB0byBj YWxsIGl0LiBWSVJRX0FSR09fTUVTU0FHRSBpcwpjbGFpbWVkIGZyb20gdGhlIFZJUlEgcHJldmlv dXNseSByZXNlcnZlZCBmb3IgdGhpcyBwdXJwb3NlICgjMTEpLgoKVGhlIFZJUlEgbm90aWZpY2F0 aW9uIG1ldGhvZCBpcyB1c2VkIHJhdGhlciB0aGFuIHNlbmRpbmcgZXZlbnRzIHVzaW5nCmV2dGNo biBmdW5jdGlvbnMgZGlyZWN0bHkgYmVjYXVzZToKCiogbm8gY3VycmVudCBldmVudCBjaGFubmVs IHR5cGUgaXMgYW4gZXhhY3QgZml0IGZvciB0aGUgaW50ZW5kZWQKICBiZWhhdmlvdXIuIEVDU19J UEkgaXMgY2xvc2VzdCwgYnV0IGl0IGRpc2FsbG93cyBtaWdyYXRpb24gdG8KICBvdGhlciBWQ1BV cyB3aGljaCBpcyBub3QgbmVjZXNzYXJpbHkgYSByZXF1aXJlbWVudCBmb3IgQXJnby4KCiogYXQg dGhlIHBvaW50IG9mIGFyZ29faW5pdCwgYWxsb2NhdGlvbiBvZiBhbiBldmVudCBjaGFubmVsIGlz CiAgY29tcGxpY2F0ZWQgYnkgbm9uZSBvZiB0aGUgZ3Vlc3QgVkNQVXMgYmVpbmcgaW5pdGlhbGl6 ZWQgeWV0CiAgYW5kIHRoZSBldmVudCBjaGFubmVsIGxvZ2ljIGV4cGVjdHMgdGhhdCBhIHZhbGlk IGV2ZW50IGNoYW5uZWwKICBoYXMgYSBwcmVzZW50IFZDUFUuCgoqIGF0IHRoZSBwb2ludCBvZiBz aWduYWxsaW5nIGEgbm90aWZpY2F0aW9uLCB0aGUgVklSUSBsb2dpYyBpcyBhbHJlYWR5CiAgZGVm ZW5zaXZlOiBpZiBkLT52Y3B1WzBdIGlzIE5VTEwsIHRoZSBub3RpZmljYXRpb24gaXMganVzdCBz aWxlbnRseQogIGRyb3BwZWQsIHdoZXJlYXMgdGhlIGV2dGNobl9zZW5kIGxvZ2ljIGlzIG5vdCBz byBkZWZlbnNpdmU6IHZjcHVbMF0KICBtdXN0IG5vdCBiZSBOVUxMLCBvdGhlcndpc2UgYSBudWxs IHBvaW50ZXIgZGVyZWZlcmVuY2Ugb2NjdXJzLgoKVXNpbmcgYSBWSVJRIHJlbW92ZXMgdGhlIG5l ZWQgZm9yIHRoZSBndWVzdCB0byBxdWVyeSB0byBkZXRlcm1pbmUgd2hpY2gKZXZlbnQgY2hhbm5l bCBub3RpZmljYXRpb25zIHdpbGwgYmUgZGVsaXZlcmVkIG9uLiBUaGlzIGlzIGFsc28gbGlrZWx5 IHRvCnNpbXBsaWZ5IGVzdGFibGlzaGluZyBmdXR1cmUgTDAvTDEgbmVzdGVkIGh5cGVydmlzb3Ig YXJnbyBjb21tdW5pY2F0aW9uLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgQ2xhcmsgPGNo cmlzdG9waGVyLmNsYXJrNkBiYWVzeXN0ZW1zLmNvbT4KLS0tCnYzICMwNyBKYW46IHJlbmFtZSBy aW5nX2ZpbmRfaW5mbyogdG8gZmluZF9yaW5nX2luZm8qCnYzICMwNyBKYW46IGZpeCBudW1lcmlj IGVudHJpZXMgaW4gcHJpbnRrIGZvcm1hdCBzdHJpbmdzCnYzICMxMCBSb2dlcjogbW92ZSBmaW5k IGZ1bmN0aW9ucyB0byB0b3Agb2YgZmlsZSBhbmQgZHJvcCBwcm90b3R5cGVzCnYzICMwNCBKYW46 IG1lbGQgY29tcGF0IHN0cnVjdCBjaGVja2luZyBmb3IgaHlwZXJjYWxsIGFyZ3MKdjMgIzA0IFJv Z2VyL0phbjogbWFrZSBsb2NrIG5hbWVzIGNsZWFyZXIgYW5kIGFzc2VydCB0aGVpciBzdGF0ZQp2 MyAjMDQgSmFuOiBwb3J0IC0+IGFwb3J0IHdpdGggdHlwZTsgZGlzdGluZ3Vpc2ggYXJnbyBwb3J0 IGZyb20gZXZ0Y2huCnYzIGZlZWRiYWNrICMwOSBFcmljOiBmaXggbGVuICYgb2Zmc2V0IHNhbml0 eSBjaGVjayBpbiBtZW1jcHlfdG9fZ3Vlc3RfcmluZwp2MyBmZWVkYmFjayAjMDQgUm9nZXI6IG5l d2xpbmUgZml4IGluIHdpbGRjYXJkX3BlbmRpbmdfbGlzdF9pbnNlcnQKdjMgZmVlZGJhY2sgIzA0 IFJvZ2VyOiBkcm9wIG5wYWdlcyBzdHJ1Y3QgbWVtYmVyLCBjYWxjdWxhdGUgZnJvbSBsZW4KdjMg IzA5IFJvZ2VyOiBzaW1wbGlmeSBFRkFVTFQgcmV0dXJuIGluIG1lbWNweV90b19ndWVzdF9yaW5n CnYzICMwOSBSb2dlcjogYWRkIG5ld2xpbmUgYmVmb3JlIHJldHVybiBpbiBnZXRfc2FuaXRpemVk X3JpbmcKdjMgIzA5IFJvZ2VyOiByZXBsYWNlIHdoaWxlIHdpdGggZm9yIGxvb3AgaW4gaW92X2Nv dW50CnYzICMwOSBSb2dlcjogZHJvcCAwIGluIHN0cnVjdCBpbml0IGluIHJpbmdidWZfaW5zZXJ0 CnYzICMwOSBSb2dlcjogY29tbWVudCBmb3IgWEVOX0FSR09fTUFYSU9WOiB3YXJuIG9mIHN0YWNr IG92ZXJmbG93IHJpc2sKdjMgIzA5IFJvZ2VyOiBzaW1wbGlmeSB3aGlsZSBsb29wOiBmb3IgaW5z dGVhZCBpbiByaW5nYnVmX2luc2VydAp2MyAjMDkgUm9nZXI6IGRyb3Agb3V0IGxhYmVsIGZvciBy ZXR1cm5zIGluIHJpbmdidWZfaW5zZXJ0CnYzICMwOSBSb2dlcjogZHJvcCBuZXdsaW5lIGluIHBl bmRpbmdfcXVldWUKdjMgIzA5IFJvZ2VyOiByZXBsYWNlIHNlY29uZCBnb3RvIGxhYmVsIHdpdGgg ZXJyb3IgcGF0aCB1bmxvY2sgaW4gc2VuZHYKdjMgIzA5IEphc29uOiBjaGVjayBpb3ZfbGVuIHZz IE1BWF9BUkdPX01FU1NBR0VfU0laRSBpbiBpb3ZfY291bnQKdjMgIzA5IEphc29uOiBjaGVjayBw YWRkaW5nIGlzIHplcm9lZCBpbiBzZW5kdiBvcAp2MyAjMDkgSmFzb246IG1lbWNweV90b19ndWVz dF9yaW5nOiBzaW1wbGVyIGNvZGUgd2l0aCBiZXR0ZXIgbG9vcAoKdjIgc2VsZjogdXNlIHJpbmdf aW5mbyBiYWNrcG9pbnRlciBpbiBwZW5kaW5nX2VudCB0byBtYWludGFpbiBucGVuZGluZwp2MiBm ZWVkYmFjayBKYW46IGRyb3AgY29va2llLCBpbXBsZW1lbnQgdGVhcmRvd24KdjIgc2VsZjogcGVu ZGluZ19xdWV1ZTogcmVhcCBzdGFsZSBlbnRzIHdoZW4gaW4gbmVlZCBvZiBzcGFjZQp2MiBzZWxm OiBwZW5kaW5nX3JlcXVldWU6IHJlY2xhaW0gZW50cyBmb3Igc3RhbGUgZG9tYWlucwp2Mi5mZWVk YmFjayBKYW46IG9ubHkgb3ZlcnJpZGUgc2VuZGVyIGRvbWlkIGlmIERPTUlEX0FOWQp2MiBmZWVk YmFjayBKYW46IGRyb3AgbWVzc2FnZSBmcm9tIGFyZ29fbWVzc2FnZV9vcAp2MiBzZWxmOiBjaGVj ayBucGVuZGluZyB2cyBtYXhpbXVtIGxpbWl0CnYyIHNlbGY6IGdldF9zYW5pdGl6ZWRfcmluZyBp bnN0ZWFkIG9mIGdldF9yeF9wdHIKdjIgZmVlZGJhY2sgdjEjMTMgSmFuOiByZW1vdmUgZG91Ymxl IHJlYWQgZnJvbSByaW5nYnVmIGluc2VydCwgbG93ZXIgTUFYX0lPVgp2MiBzZWxmOiBtYWtlIGlv dl9jb3VudCBjb25zdAp2MiBzZWxmOiBpb3ZfY291bnQgOiByZXR1cm4gRU1TR1NJWkUgZm9yIG1l c3NhZ2UgdG9vIGJpZwp2MiBzZWxmOiBPVkVSSEFVTAp2MiBzZWxmOiBzL2FyZ29fcGVuZGluZ19l bnQvcGVuZGluZ19lbnQvZwp2MiBmZWVkYmFjayB2MSMxMyBSb2dlcjogdXNlIE9TLXN1cHBsaWVk IHJvdW5kdXA7IGRyb3AgZnJvbSBwdWJsaWMgaGVhZGVyCnYxLDIgZmVlZGJhY2sgSmFuL1JvZ2Vy L1BhdWw6IGRyb3AgZXJybm8gcmV0dXJuaW5nIGd1ZXN0IGFjY2VzcyBmdW5jdGlvbnMKdjEgZmVl ZGJhY2sgUm9nZXIsIEphbjogZHJvcCBhcmdvIHByZWZpeCBvbiBzdGF0aWMgZnVuY3Rpb25zCnYx IGZlZWRiYWNrICMxMyBKYW46IGRyb3AgZ3Vlc3RfaGFuZGxlX29rYXkgd2hlbiB1c2luZyBjb3B5 X2Zyb21fZ3Vlc3QKICAgIC0gcmVvcmRlciBkb19hcmdvX29wIGxvZ2ljCnYyIHNlbGY6IGFkZCBf aG5kIHN1ZmZpeCB0byBpb3ZzIHZhcmlhYmxlIG5hbWUgdG8gaW5kaWNhdGUgZ3Vlc3QgaGFuZGxl IHR5cGUKdjIgc2VsZjogcmVwbGFjZSB1c2Ugb2YgWEVOX0dVRVNUX0hBTkRMRV9OVUxMIHdpdGgg dHdvIGV4aXN0aW5nIG1hY3JvcwoKdjEgIzE1IGZlZWRiYWNrLCBKYW46IHNlbmR2IG9wIDogcy9F Q09OTlJFRlVTRUQvRVNSQ0gvCnYxICM1ICgjMTUpIGZlZWRiYWNrIFBhdWw6IHNlbmR2OiB1c2Ug Y3VycmQgaW4gZG9fYXJnb19tZXNzYWdlX29wCnYxICMxMyAoIzE1KSBmZWVkYmFjayBQYXVsOiBz ZW5kdiBvcDogZG8vd2hpbGUgcmVpbmRlbnQgb25seQp2MSAjMTMgKCMxNSkgZmVlZGJhY2sgUGF1 bDogc2VuZHYgb3A6IGRvL3doaWxlOiBhcmdvX3JpbmdidWZfaW5zZXJ0IHRvIGdvdG8gc3R5bGUK djEgIzEzICgjMTUpIGZlZWRiYWNrIFBhdWw6IHNlbmR2IG9wOiBkby93aGlsZTogcmVpbmRlbnQg b25seSBhZ2Fpbgp2MSAjMTMgKCMxNSkgZmVlZGJhY2sgUGF1bDogc2VuZHYgb3A6IGRvL3doaWxl IDogZ290bwp2MSAjMTUgZmVlZGJhY2sgUGF1bDogc2VuZHYgb3A6IG1ha2UgcGFnZSB2YXI6IHVu c2lnbmVkCnYxICMxNSBmZWVkYmFjayBQYXVsOiBzZW5kdiBvcDogbmV3IGxvY2FsIHZhciBmb3Ig UEFHRV9TSVpFIC0gb2Zmc2V0CnYxICM4IGZlZWRiYWNrIEphbjogWEVOX0dVRVNUX0hBTkRMRSA6 IEM4OSBjb21wbGlhbmNlCnYxIHJlYmFzZSBhZnRlciBzd2l0Y2hpbmcgcmVnaXN0ZXIgb3AgZnJv bSBwZm5zIHRvIHBhZ2UgZGVzY3JpcHRvcnMKdjEgc2VsZjogbW92ZSBpb3YgREVGSU5FX1hFTl9H VUVTVF9IQU5ETEUgb3V0IG9mIHB1YmxpYyBoZWFkZXIgaW50byBhcmdvLmMKdjEgIzEzICgjMTUp IGZlZWRiYWNrIFBhdWw6IGZpeCBsb2dsZXZlbCBmb3IgZ3Vlc3QtdHJpZ2dlcmVkIG1lc3NhZ2Vz CnYxIDogYWRkIGNvbXBhdCB4bGF0LmxzdCBlbnRyaWVzCnYxIHNlbGY6IHN3aXRjaGVkIG5vdGlm aWNhdGlvbiB0byBzZW5kX2d1ZXN0X2dsb2JhbF92aXJxIGluc3RlYWQgb2YgZXZlbnQKdjE6IGZp eCBncHJpbnRrIHVzZSBmb3IgQVJNIGFzIGl0cyBkZWZuIGRpc2xpa2VzIHNwbGl0IGZvcm1hdCBz dHJpbmdzCnYxOiBpbml0IGxlbiB2YXJpYWJsZSB0byBzYXRpc2Z5IEFSTSBjb21waWxlciBpbml0 aWFsaXplZCBjaGVja2luZwp2MSAjMTMgZmVlZGJhY2sgSmFuOiByZW5hbWUgcGFnZSB2YXIKdjE6 IzE0IGZlZWRiYWNrIEphbjogdWludDhfdCogLT4gdm9pZCoKdjE6ICMxMyBmZWVkYmFjayBKYW46 IHB1YmxpYyBuYW1lc3BhY2U6IHByZWZpeCB3aXRoIHhlbgp2MTogIzEzIGZlZWRiYWNrIEphbjog YmxhbmsgbGluZSBhZnRlciBjYXNlIG9wIGluIGRvX2FyZ29fbWVzc2FnZV9vcAp2MTogIzE1IGZl ZWRiYWNrIEphbjogYWRkIGNvbW1lbnRzIGV4cGxhaW5pbmcgd2h5IHRoZSB3cml0ZXMgZG9uJ3Qg b3ZlcnJ1bgp2MTogc2VsZjogYWRkIEFTU0VSVCB0byBzdXBwb3J0IGNvbW1lbnQgdGhhdCBvdmVy cnVuIGNhbm5vdCBoYXBwZW4KdjE6IHNlbGY6IGZhaWwgb24gc2hvcnQgd3JpdGVzIHdoZXJlIGd1 ZXN0IG1hbmlwdWxhdGVkIHRoZSBpb3ZfbGVucwp2MTogc2VsZjogcmVuYW1lIGVudCBpZCB0byBk b21haW5faWQKdjE6IHNlbGY6IGFkZCBtb2FuIGZvciBpb3YgcmV3cml0ZQp2MS4gZmVlZGJhY2sg IzE1IEphbjogcmVxdWlyZSB0aGUgcGFkIGJpdHMgYXJlIHplcm8KdjEuIGZlZWRiYWNrICMxNSBK YW46IGRyb3AgTlVMTCBjaGVjayBpbiBhcmdvX3NpZ25hbF9kb21haW4gYXMgbm93IHVzaW5nIFZJ UlEKdjEuIHNlbGY6IHN0b3JlIGRvbWFpbl9jb29raWUgaW4gcGVuZGluZyBlbnQKdjEuIGZlZWRi YWNrICMxNSBKYW46IHVzZSB1bnNpZ25lZCB3aGVyZSBwb3NzaWJsZQp2MS4gZmVlZGJhY2sgSmFu OiB1c2UgaGFuZGxlIHR5cGUgZm9yIGlvdl9iYXNlIGluIHB1YmxpYyBpb3YgaW50ZXJmYWNlCnYx LiBzZWxmOiBsb2cgd2hlbmV2ZXIgdmlzaWJsZSBlcnJvciBvY2N1cnMKdjEgZmVlZGJhY2sgIzE1 LCBKYW46IGRyb3AgdW5uZWNlc3NhcnkgbWIKdjEgc2VsZjogb25seSB1cGRhdGUgaW50ZXJuYWwg dHhfcHRyIGlmIGFibGUgdG8gcmV0dXJuIHN1Y2Nlc3MKICAgICAgICAgYW5kIHVwZGF0ZSB0aGUg dmlzaWJsZSB0eF9wdHIKdjEgc2VsZjogbG9nIG9uIGZhaWx1cmUgdG8gbWFwIHJpbmcgdG8gdXBk YXRlIHZpc2libGUgdHhfcHRyCnYxIGZlZWRiYWNrICMxNSBKYW46IGFkZCBjb21tZW50IHJlOiBu b3RpZmljYXRpb24gc2l6ZSBwb2xpY3kKdjEgc2VsZi9Sb2dlcj8gcmVtb3ZlIGVycmFudCBzcGFj ZSBhZnRlciBzaXplb2YKdjEuIGZlZWRiYWNrICMxNSBKYW46IHJlcXVpcmUgaW92IHBhZCBiZSB6 ZXJvCnYxLiBzZWxmOiByZW5hbWUgaW92X2Jhc2UgdG8gaW92X2huZCBmb3IgaGFuZGxlIGluIHB1 YmxpYyBpb3YgaW50ZXJmYWNlCnYxOiBmZWVkYmFjayAjMTUgSmFuOiBoYW5kbGUgdXBwZXItaGFs dmVzIG9mIGh5cGVyY2FsbCBhcmdzOyBjaGFuZ2VzIHNvbWUKICAgIHR5cGVzIGluIGZ1bmN0aW9u IHNpZ25hdHVyZXMgdG8gbWF0Y2guCnYxOiBzZWxmOiBhZGQgZHByaW50ayB0byBzZW5kdgp2MTog c2VsZjogYWRkIGRlYnVnIG91dHB1dCB0byBhcmdvX2lvdl9jb3VudAp2MS4gZmVlZGJhY2sgIzE0 IEphbjogYmxhbmsgbGluZSBiZWZvcmUgcmV0dXJuIGluIGFyZ29faW92X2NvdW50CnYxIGZlZWRi YWNrICMxNSBKYW46IHZlcmlmeSBzcmMgaWQsIG5vdCBvdmVycmlkZQoKIHhlbi9jb21tb24vYXJn by5jICAgICAgICAgIHwgNjM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogeGVuL2NvbW1vbi9jb21wYXQvYXJnby5jICAgfCAgMTkgKysKIHhlbi9jb21tb24v ZXZlbnRfY2hhbm5lbC5jIHwgICAyICstCiB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oICB8ICA2 MCArKysrKwogeGVuL2luY2x1ZGUvcHVibGljL3hlbi5oICAgfCAgIDIgKy0KIHhlbi9pbmNsdWRl L3hlbi9ldmVudC5oICAgIHwgICA3ICsKIHhlbi9pbmNsdWRlL3hsYXQubHN0ICAgICAgIHwgICAy ICsKIDcgZmlsZXMgY2hhbmdlZCwgNzI1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9hcmdvLmMgYi94ZW4vY29tbW9uL2FyZ28uYwppbmRleCAz Zjk1ZjgwLi41ZDVjZjQ5IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2FyZ28uYworKysgYi94ZW4v Y29tbW9uL2FyZ28uYwpAQCAtMzAsMTAgKzMwLDE1IEBACiAjaW5jbHVkZSA8cHVibGljL2FyZ28u aD4KIAogI2RlZmluZSBNQVhfUklOR1NfUEVSX0RPTUFJTiAgICAgICAgICAgIDEyOFUKKyNkZWZp bmUgTUFYX1BFTkRJTkdfUEVSX1JJTkcgICAgICAgICAgICAgMzJVCiAKIC8qIEFsbCBtZXNzYWdl cyBvbiB0aGUgcmluZyBhcmUgcGFkZGVkIHRvIGEgbXVsdGlwbGUgb2YgdGhlIHNsb3Qgc2l6ZS4g Ki8KICNkZWZpbmUgUk9VTkRVUF9NRVNTQUdFKGEpIFJPVU5EVVAoKGEpLCBYRU5fQVJHT19NU0df U0xPVF9TSVpFKQogCisvKiBUaGUgbWF4aW11bSBzaXplIG9mIGEgbWVzc2FnZSB0aGF0IG1heSBi ZSBzZW50IG9uIHRoZSBsYXJnZXN0IEFyZ28gcmluZy4gKi8KKyNkZWZpbmUgTUFYX0FSR09fTUVT U0FHRV9TSVpFICgoWEVOX0FSR09fTUFYX1JJTkdfU0laRSkgLSBcCisgICAgICAgIChzaXplb2Yo c3RydWN0IHhlbl9hcmdvX3JpbmdfbWVzc2FnZV9oZWFkZXIpKSAtIFJPVU5EVVBfTUVTU0FHRSgx KSkKKwogLyogTnVtYmVyIG9mIFBBR0VzIG5lZWRlZCB0byBob2xkIGEgcmluZyBvZiBhIGdpdmVu IHNpemUgaW4gYnl0ZXMgKi8KICNkZWZpbmUgTlBBR0VTX1JJTkcocmluZ19sZW4pIFwKICAgICAo Uk9VTkRVUCgoUk9VTkRVUF9NRVNTQUdFKHJpbmdfbGVuKSArIHNpemVvZih4ZW5fYXJnb19yaW5n X3QpKSwgUEFHRV9TSVpFKSBcCkBAIC00MSw4ICs0NiwxMCBAQAogCiBERUZJTkVfWEVOX0dVRVNU X0hBTkRMRSh4ZW5fYXJnb19hZGRyX3QpOwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2Fy Z29fZ2ZuX3QpOworREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29faW92X3QpOwogREVG SU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fcmVnaXN0ZXJfcmluZ190KTsKIERFRklORV9Y RU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3JpbmdfdCk7CitERUZJTkVfWEVOX0dVRVNUX0hBTkRM RSh4ZW5fYXJnb19zZW5kX2FkZHJfdCk7CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJn b191bnJlZ2lzdGVyX3JpbmdfdCk7CiAKIC8qIFhlbiBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIGVu YWJsZSBhcmdvICovCkBAIC0zMjgsNiArMzM1LDI4IEBAIGZpbmRfcmluZ19pbmZvKGNvbnN0IHN0 cnVjdCBkb21haW4gKmQsIGNvbnN0IHN0cnVjdCBhcmdvX3JpbmdfaWQgKmlkKQogICAgIHJldHVy biBOVUxMOwogfQogCitzdGF0aWMgc3RydWN0IGFyZ29fcmluZ19pbmZvICoKK2ZpbmRfcmluZ19p bmZvX2J5X21hdGNoKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHhlbl9hcmdvX3BvcnRfdCBhcG9y dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbWlkX3QgcGFydG5lcl9pZCkKK3sKKyAgICBz dHJ1Y3QgYXJnb19yaW5nX2lkIGlkOworICAgIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19p bmZvOworCisgICAgQVNTRVJUKExPQ0tJTkdfUmVhZF9yaW5nc19MMihkKSk7CisKKyAgICBpZC5h cG9ydCA9IGFwb3J0OworICAgIGlkLmRvbWFpbl9pZCA9IGQtPmRvbWFpbl9pZDsKKyAgICBpZC5w YXJ0bmVyX2lkID0gcGFydG5lcl9pZDsKKworICAgIHJpbmdfaW5mbyA9IGZpbmRfcmluZ19pbmZv KGQsICZpZCk7CisgICAgaWYgKCByaW5nX2luZm8gKQorICAgICAgICByZXR1cm4gcmluZ19pbmZv OworCisgICAgaWQucGFydG5lcl9pZCA9IFhFTl9BUkdPX0RPTUlEX0FOWTsKKworICAgIHJldHVy biBmaW5kX3JpbmdfaW5mbyhkLCAmaWQpOworfQorCiBzdGF0aWMgc3RydWN0IGFyZ29fc2VuZF9p bmZvICoKIGZpbmRfc2VuZF9pbmZvKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIGNvbnN0IHN0cnVj dCBhcmdvX3JpbmdfaWQgKmlkKQogewpAQCAtMzU2LDYgKzM4NSwxNCBAQCBmaW5kX3NlbmRfaW5m byhjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBjb25zdCBzdHJ1Y3QgYXJnb19yaW5nX2lkICppZCkK IH0KIAogc3RhdGljIHZvaWQKK3NpZ25hbF9kb21haW4oc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAg ICBhcmdvX2RwcmludGsoInNpZ25hbGxpbmcgZG9taWQ6JXVcbiIsIGQtPmRvbWFpbl9pZCk7CisK KyAgICBzZW5kX2d1ZXN0X2dsb2JhbF92aXJxKGQsIFZJUlFfQVJHT19NRVNTQUdFKTsKK30KKwor c3RhdGljIHZvaWQKIHJpbmdfdW5tYXAoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGFy Z29fcmluZ19pbmZvICpyaW5nX2luZm8pCiB7CiAgICAgdW5zaWduZWQgaW50IGk7CkBAIC00Mzgs NiArNDc1LDM4OSBAQCB1cGRhdGVfdHhfcHRyKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHN0cnVj dCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLAogICAgIHNtcF93bWIoKTsKIH0KIAorc3RhdGlj IGludAorbWVtY3B5X3RvX2d1ZXN0X3JpbmcoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0 IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8sCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqc3JjLCBYRU5f R1VFU1RfSEFORExFKHVpbnQ4X3QpIHNyY19obmQsCisgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBpbnQgbGVuKQoreworICAgIHVuc2lnbmVkIGludCBtZm5zX2luZGV4ID0gb2Zmc2V0ID4+ IFBBR0VfU0hJRlQ7CisgICAgdm9pZCAqZHN0OworICAgIGludCByZXQ7CisgICAgdW5zaWduZWQg aW50IHNyY19vZmZzZXQgPSAwOworCisgICAgQVNTRVJUKExPQ0tJTkdfTDMoZCwgcmluZ19pbmZv KSk7CisKKyAgICBvZmZzZXQgJj0gflBBR0VfTUFTSzsKKworICAgIGlmICggbGVuICsgb2Zmc2V0 ID4gWEVOX0FSR09fTUFYX1JJTkdfU0laRSApCisgICAgICAgIHJldHVybiAtRUZBVUxUOworCisg ICAgd2hpbGUgKCBsZW4gKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGhlYWRfbGVuID0g bGVuID4gUEFHRV9TSVpFID8gUEFHRV9TSVpFIC0gb2Zmc2V0IDogbGVuOworCisgICAgICAgIHJl dCA9IHJpbmdfbWFwX3BhZ2UoZCwgcmluZ19pbmZvLCBtZm5zX2luZGV4LCAmZHN0KTsKKyAgICAg ICAgaWYgKCByZXQgKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICBpZiAoIHNy YyApCisgICAgICAgIHsKKyAgICAgICAgICAgIG1lbWNweShkc3QgKyBvZmZzZXQsIHNyYyArIHNy Y19vZmZzZXQsIGhlYWRfbGVuKTsKKyAgICAgICAgICAgIHNyY19vZmZzZXQgKz0gaGVhZF9sZW47 CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIGNv cHlfZnJvbV9ndWVzdChkc3QgKyBvZmZzZXQsIHNyY19obmQsIGhlYWRfbGVuKSApCisgICAgICAg ICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisKKyAgICAgICAgICAgIGd1ZXN0X2hhbmRsZV9hZGRf b2Zmc2V0KHNyY19obmQsIGhlYWRfbGVuKTsKKyAgICAgICAgfQorCisgICAgICAgIG1mbnNfaW5k ZXgrKzsKKyAgICAgICAgbGVuIC09IGhlYWRfbGVuOworICAgICAgICBvZmZzZXQgPSAwOworICAg IH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICogVXNlIHRoaXMgd2l0aCBjYXV0aW9uOiBy eF9wdHIgaXMgdW5kZXIgZ3Vlc3QgY29udHJvbCBhbmQgbWF5IGJlIGJvZ3VzLgorICogU2VlIGdl dF9zYW5pdGl6ZWRfcmluZyBmb3IgYSBzYWZlciBhbHRlcm5hdGl2ZS4KKyAqLworc3RhdGljIGlu dAorZ2V0X3J4X3B0cihjb25zdCBzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgYXJnb19yaW5nX2lu Zm8gKnJpbmdfaW5mbywKKyAgICAgICAgICAgdWludDMyX3QgKnJ4X3B0cikKK3sKKyAgICB2b2lk ICpzcmM7CisgICAgeGVuX2FyZ29fcmluZ190ICpyaW5ncDsKKyAgICBpbnQgcmV0OworCisgICAg QVNTRVJUKExPQ0tJTkdfTDMoZCwgcmluZ19pbmZvKSk7CisKKyAgICBpZiAoICFyaW5nX2luZm8t Pm5tZm5zIHx8IHJpbmdfaW5mby0+bm1mbnMgPCBOUEFHRVNfUklORyhyaW5nX2luZm8tPmxlbikg KQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHJldCA9IHJpbmdfbWFwX3BhZ2UoZCwg cmluZ19pbmZvLCAwLCAmc3JjKTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIHJldHVybiByZXQ7 CisKKyAgICByaW5ncCA9ICh4ZW5fYXJnb19yaW5nX3QgKilzcmM7CisKKyAgICAqcnhfcHRyID0g cmVhZF9hdG9taWMoJnJpbmdwLT5yeF9wdHIpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisg KiBnZXRfc2FuaXRpemVkX3JpbmcgY3JlYXRlcyBhIG1vZGlmaWVkIGNvcHkgb2YgdGhlIHJpbmcg cG9pbnRlcnMgd2hlcmUKKyAqIHRoZSByeF9wdHIgaXMgcm91bmRlZCB1cCB0byBlbnN1cmUgaXQg aXMgYWxpZ25lZCwgYW5kIHRoZW4gcmluZworICogd3JhcCBpcyBoYW5kbGVkLiBTaW1wbGlmaWVz IHNhZmUgdXNlIG9mIHRoZSByeF9wdHIgZm9yIGF2YWlsYWJsZQorICogc3BhY2UgY2FsY3VsYXRp b24uCisgKi8KK3N0YXRpYyBpbnQKK2dldF9zYW5pdGl6ZWRfcmluZyhjb25zdCBzdHJ1Y3QgZG9t YWluICpkLCB4ZW5fYXJnb19yaW5nX3QgKnJpbmcsCisgICAgICAgICAgICAgICAgICAgc3RydWN0 IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8pCit7CisgICAgdWludDMyX3QgcnhfcHRyOworICAg IGludCByZXQ7CisKKyAgICBBU1NFUlQoTE9DS0lOR19MMyhkLCByaW5nX2luZm8pKTsKKworICAg IHJldCA9IGdldF9yeF9wdHIoZCwgcmluZ19pbmZvLCAmcnhfcHRyKTsKKyAgICBpZiAoIHJldCAp CisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICByaW5nLT50eF9wdHIgPSByaW5nX2luZm8tPnR4 X3B0cjsKKworICAgIHJ4X3B0ciA9IFJPVU5EVVBfTUVTU0FHRShyeF9wdHIpOworICAgIGlmICgg cnhfcHRyID49IHJpbmdfaW5mby0+bGVuICkKKyAgICAgICAgcnhfcHRyID0gMDsKKworICAgIHJp bmctPnJ4X3B0ciA9IHJ4X3B0cjsKKworICAgIHJldHVybiAwOworfQorCisvKgorICogaW92X2Nv dW50IHJldHVybnMgaXRzIGNvdW50IG9uIHN1Y2Nlc3MgdmlhIGFuIG91dCB2YXJpYWJsZSB0byBh dm9pZAorICogcG90ZW50aWFsIGZvciBhIG5lZ2F0aXZlIHJldHVybiB2YWx1ZSB0byBiZSB1c2Vk IGluY29ycmVjdGx5CisgKiAoZWcuIGNvZXJjZWQgaW50byBhbiB1bnNpZ25lZCB2YXJpYWJsZSBy ZXN1bHRpbmcgaW4gYSBsYXJnZSBpbmNvcnJlY3QgdmFsdWUpCisgKi8KK3N0YXRpYyBpbnQKK2lv dl9jb3VudChjb25zdCB4ZW5fYXJnb19pb3ZfdCAqcGlvdiwgdW5zaWduZWQgbG9uZyBuaW92LCB1 aW50MzJfdCAqY291bnQpCit7CisgICAgdWludDMyX3Qgc3VtX2lvdl9sZW5zID0gMDsKKworICAg IGlmICggbmlvdiA+IFhFTl9BUkdPX01BWElPViApCisgICAgICAgIHJldHVybiAtRUlOVkFMOwor CisgICAgZm9yICggOyBuaW92LS07IHBpb3YrKyApCisgICAgeworICAgICAgICAvKiB2YWxpZCBp b3ZzIG11c3QgaGF2ZSB0aGUgcGFkZGluZyBmaWVsZCBzZXQgdG8gemVybyAqLworICAgICAgICBp ZiAoIHBpb3YtPnBhZCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGFyZ29fZHByaW50aygiaW52 YWxpZCBpb3Y6IHBhZGRpbmcgaXMgbm90IHplcm9cbiIpOworICAgICAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisgICAgICAgIH0KKworICAgICAgICAvKiBjaGVjayBlYWNoIHRvIHByb3RlY3Qgc3Vt IGFnYWluc3QgaW50ZWdlciBvdmVyZmxvdyAqLworICAgICAgICBpZiAoIHBpb3YtPmlvdl9sZW4g PiBNQVhfQVJHT19NRVNTQUdFX1NJWkUgKQorICAgICAgICB7CisgICAgICAgICAgICBhcmdvX2Rw cmludGsoImludmFsaWQgaW92X2xlbjogdG9vIGJpZyAoJXUpPiVsbHVcbiIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgcGlvdi0+aW92X2xlbiwgTUFYX0FSR09fTUVTU0FHRV9TSVpFKTsKKyAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgc3VtX2lvdl9s ZW5zICs9IHBpb3YtPmlvdl9sZW47CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQWdhaW4gcHJv dGVjdCBzdW0gZnJvbSBpbnRlZ2VyIG92ZXJmbG93CisgICAgICAgICAqIGFuZCBlbnN1cmUgdG90 YWwgbXNnIHNpemUgd2lsbCBiZSB3aXRoaW4gYm91bmRzLgorICAgICAgICAgKi8KKyAgICAgICAg aWYgKCBzdW1faW92X2xlbnMgPiBNQVhfQVJHT19NRVNTQUdFX1NJWkUgKQorICAgICAgICB7Cisg ICAgICAgICAgICBhcmdvX2RwcmludGsoImludmFsaWQgaW92IHNlcmllczogdG90YWwgbWVzc2Fn ZSB0b28gYmlnXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtRU1TR1NJWkU7CisgICAgICAgIH0K KyAgICB9CisKKyAgICAqY291bnQgPSBzdW1faW92X2xlbnM7CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIGludAorcmluZ2J1Zl9pbnNlcnQoY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgc3Ry dWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8sCisgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgYXJnb19yaW5nX2lkICpzcmNfaWQsCisgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExF X1BBUkFNKHhlbl9hcmdvX2lvdl90KSBpb3ZzX2huZCwKKyAgICAgICAgICAgICAgIHVuc2lnbmVk IGxvbmcgbmlvdiwgdWludDMyX3QgbWVzc2FnZV90eXBlLAorICAgICAgICAgICAgICAgdW5zaWdu ZWQgbG9uZyAqb3V0X2xlbikKK3sKKyAgICB4ZW5fYXJnb19yaW5nX3QgcmluZzsKKyAgICBzdHJ1 Y3QgeGVuX2FyZ29fcmluZ19tZXNzYWdlX2hlYWRlciBtaCA9IHsgfTsKKyAgICBpbnQzMl90IHNw OworICAgIGludDMyX3QgcmV0OworICAgIHVpbnQzMl90IGxlbiA9IDA7CisgICAgeGVuX2FyZ29f aW92X3QgaW92c1tYRU5fQVJHT19NQVhJT1ZdOworICAgIHhlbl9hcmdvX2lvdl90ICpwaW92Owor ICAgIFhFTl9HVUVTVF9IQU5ETEUodWludDhfdCkgTlVMTF9obmQgPQorICAgICAgIGd1ZXN0X2hh bmRsZV9mcm9tX3BhcmFtKGd1ZXN0X2hhbmRsZV9mcm9tX3B0cihOVUxMLCB1aW50OF90KSwgdWlu dDhfdCk7CisKKyAgICBBU1NFUlQoTE9DS0lOR19MMyhkLCByaW5nX2luZm8pKTsKKworICAgIHJl dCA9IF9fY29weV9mcm9tX2d1ZXN0KGlvdnMsIGlvdnNfaG5kLCBuaW92KSA/IC1FRkFVTFQgOiAw OworICAgIGlmICggcmV0ICkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIC8qCisgICAgICog T2J0YWluIHRoZSB0b3RhbCBzaXplIG9mIGRhdGEgdG8gdHJhbnNtaXQgLS0gc2V0cyB0aGUgJ2xl bicgdmFyaWFibGUKKyAgICAgKiAtLSBhbmQgc2FuaXR5IGNoZWNrIHRoYXQgdGhlIGlvdnMgY29u Zm9ybSB0byBzaXplIGFuZCBudW1iZXIgbGltaXRzLgorICAgICAqIEVuZm9yY2VkIGJlbG93OiBu byBtb3JlIHRoYW4gJ2xlbicgYnl0ZXMgb2YgZ3Vlc3QgZGF0YQorICAgICAqIChwbHVzIHRoZSBt ZXNzYWdlIGhlYWRlcikgd2lsbCBiZSBzZW50IGluIHRoaXMgb3BlcmF0aW9uLgorICAgICAqLwor ICAgIHJldCA9IGlvdl9jb3VudChpb3ZzLCBuaW92LCAmbGVuKTsKKyAgICBpZiAoIHJldCApCisg ICAgICAgIHJldHVybiByZXQ7CisKKyAgICAvKgorICAgICAqIFNpemUgYm91bmRzIGNoZWNrIGFn YWluc3QgcmluZyBzaXplIGFuZCBzdGF0aWMgbWF4aW11bSBtZXNzYWdlIGxpbWl0LgorICAgICAq IFRoZSBtZXNzYWdlIG11c3Qgbm90IGZpbGwgdGhlIHJpbmc7IHRoZXJlIG11c3QgYmUgYXQgbGVh c3Qgb25lIHNsb3QKKyAgICAgKiByZW1haW5pbmcgc28gd2UgY2FuIGRpc3Rpbmd1aXNoIGEgZnVs bCByaW5nIGZyb20gYW4gZW1wdHkgb25lLgorICAgICAqLworICAgIGlmICggKChST1VORFVQX01F U1NBR0UobGVuKSArCisgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHhlbl9hcmdvX3JpbmdfbWVz c2FnZV9oZWFkZXIpKSA+PSByaW5nX2luZm8tPmxlbikgfHwKKyAgICAgICAgIChsZW4gPiBNQVhf QVJHT19NRVNTQUdFX1NJWkUpICkKKyAgICAgICAgcmV0dXJuIC1FTVNHU0laRTsKKworICAgIHJl dCA9IGdldF9zYW5pdGl6ZWRfcmluZyhkLCAmcmluZywgcmluZ19pbmZvKTsKKyAgICBpZiAoIHJl dCApCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBhcmdvX2RwcmludGsoInJpbmcudHhfcHRy PSV1IHJpbmcucnhfcHRyPSV1IHJpbmcgbGVuPSV1IgorICAgICAgICAgICAgICAgICAiIHJpbmdf aW5mby0+dHhfcHRyPSV1XG4iLAorICAgICAgICAgICAgICAgICByaW5nLnR4X3B0ciwgcmluZy5y eF9wdHIsIHJpbmdfaW5mby0+bGVuLCByaW5nX2luZm8tPnR4X3B0cik7CisKKyAgICBpZiAoIHJp bmcucnhfcHRyID09IHJpbmcudHhfcHRyICkKKyAgICAgICAgc3AgPSByaW5nX2luZm8tPmxlbjsK KyAgICBlbHNlCisgICAgeworICAgICAgICBzcCA9IHJpbmcucnhfcHRyIC0gcmluZy50eF9wdHI7 CisgICAgICAgIGlmICggc3AgPCAwICkKKyAgICAgICAgICAgIHNwICs9IHJpbmdfaW5mby0+bGVu OworICAgIH0KKworICAgIC8qCisgICAgICogU2l6ZSBib3VuZHMgY2hlY2sgYWdhaW5zdCBjdXJy ZW50bHkgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSByaW5nLgorICAgICAqIEFnYWluOiB0aGUgbWVz c2FnZSBtdXN0IG5vdCBmaWxsIHRoZSByaW5nIGxlYXZpbmcgbm8gc3BhY2UgcmVtYWluaW5nLgor ICAgICAqLworICAgIGlmICggKFJPVU5EVVBfTUVTU0FHRShsZW4pICsKKyAgICAgICAgICAgIHNp emVvZihzdHJ1Y3QgeGVuX2FyZ29fcmluZ19tZXNzYWdlX2hlYWRlcikpID49IHNwICkKKyAgICB7 CisgICAgICAgIGFyZ29fZHByaW50aygiRUFHQUlOXG4iKTsKKyAgICAgICAgcmV0dXJuIC1FQUdB SU47CisgICAgfQorCisgICAgbWgubGVuID0gbGVuICsgc2l6ZW9mKHN0cnVjdCB4ZW5fYXJnb19y aW5nX21lc3NhZ2VfaGVhZGVyKTsKKyAgICBtaC5zb3VyY2UuYXBvcnQgPSBzcmNfaWQtPmFwb3J0 OworICAgIG1oLnNvdXJjZS5kb21haW5faWQgPSBzcmNfaWQtPmRvbWFpbl9pZDsKKyAgICBtaC5t ZXNzYWdlX3R5cGUgPSBtZXNzYWdlX3R5cGU7CisKKyAgICAvKgorICAgICAqIEZvciB0aGlzIGNv cHkgdG8gdGhlIGd1ZXN0IHJpbmcsIHR4X3B0ciBpcyBhbHdheXMgMTYtYnl0ZSBhbGlnbmVkCisg ICAgICogYW5kIHRoZSBtZXNzYWdlIGhlYWRlciBpcyAxNiBieXRlcyBsb25nLgorICAgICAqLwor ICAgIEJVSUxEX0JVR19PTigKKyAgICAgICAgc2l6ZW9mKHN0cnVjdCB4ZW5fYXJnb19yaW5nX21l c3NhZ2VfaGVhZGVyKSAhPSBST1VORFVQX01FU1NBR0UoMSkpOworCisgICAgLyoKKyAgICAgKiBG aXJzdCBkYXRhIHdyaXRlIGludG8gdGhlIGRlc3RpbmF0aW9uIHJpbmc6IGZpeGVkIHNpemUsIG1l c3NhZ2UgaGVhZGVyLgorICAgICAqIFRoaXMgY2Fubm90IG92ZXJydW4gYmVjYXVzZSB0aGUgYXZh aWxhYmxlIGZyZWUgc3BhY2UgKHZhbHVlIGluICdzcCcpCisgICAgICogaXMgY2hlY2tlZCBhYm92 ZSBhbmQgbXVzdCBiZSBhdCBsZWFzdCB0aGlzIHNpemUuCisgICAgICovCisgICAgcmV0ID0gbWVt Y3B5X3RvX2d1ZXN0X3JpbmcoZCwgcmluZ19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJpbmcudHhfcHRyICsgc2l6ZW9mKHhlbl9hcmdvX3JpbmdfdCksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJm1oLCBOVUxMX2huZCwgc2l6ZW9mKG1oKSk7CisgICAgaWYg KCByZXQgKQorICAgIHsKKyAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLAorICAgICAgICAgICAg ICAgICJhcmdvOiBmYWlsZWQgdG8gd3JpdGUgbWVzc2FnZSBoZWFkZXIgdG8gcmluZyAodm0ldTol eCB2bSV1KVxuIiwKKyAgICAgICAgICAgICAgICByaW5nX2luZm8tPmlkLmRvbWFpbl9pZCwgcmlu Z19pbmZvLT5pZC5hcG9ydCwKKyAgICAgICAgICAgICAgICByaW5nX2luZm8tPmlkLnBhcnRuZXJf aWQpOworCisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgcmluZy50eF9wdHIgKz0g c2l6ZW9mKG1oKTsKKyAgICBpZiAoIHJpbmcudHhfcHRyID09IHJpbmdfaW5mby0+bGVuICkKKyAg ICAgICAgcmluZy50eF9wdHIgPSAwOworCisgICAgZm9yICggcGlvdiA9IGlvdnM7IG5pb3YtLTsg cGlvdisrICkKKyAgICB7CisgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDhfdCkgYnVm X2huZCA9IHBpb3YtPmlvdl9obmQ7CisgICAgICAgIHVpbnQzMl90IGlvdl9sZW4gPSBwaW92LT5p b3ZfbGVuOworCisgICAgICAgIC8qIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQgaW4gdGhpcyBpb3Ys IG1vYW4gYW5kIHNraXAgb24gdG8gdGhlIG5leHQgKi8KKyAgICAgICAgaWYgKCAhaW92X2xlbiAp CisgICAgICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwKKyAgICAgICAgICAg ICAgICAgICAgImFyZ286IG5vIGRhdGEgaW92X2xlbj0wIGlvdl9obmQ9JXAgcmluZyAodm0ldTol eCB2bSV1KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgYnVmX2huZC5wLCByaW5nX2luZm8tPmlk LmRvbWFpbl9pZCwgcmluZ19pbmZvLT5pZC5hcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgcmlu Z19pbmZvLT5pZC5wYXJ0bmVyX2lkKTsKKworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg IH0KKworICAgICAgICBpZiAoIHVubGlrZWx5KCFndWVzdF9oYW5kbGVfb2theShidWZfaG5kLCBp b3ZfbGVuKSkgKQorICAgICAgICB7CisgICAgICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsCisg ICAgICAgICAgICAgICAgICAgICJhcmdvOiBiYWQgaW92IGhhbmRsZSBbJXAsICUiUFJJeDMyIl0g KHZtJXU6JXggdm0ldSlcbiIsCisgICAgICAgICAgICAgICAgICAgIGJ1Zl9obmQucCwgaW92X2xl biwKKyAgICAgICAgICAgICAgICAgICAgcmluZ19pbmZvLT5pZC5kb21haW5faWQsIHJpbmdfaW5m by0+aWQuYXBvcnQsCisgICAgICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQucGFydG5lcl9p ZCk7CisKKyAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOworICAgICAgICB9CisKKyAgICAgICAg c3AgPSByaW5nX2luZm8tPmxlbiAtIHJpbmcudHhfcHRyOworCisgICAgICAgIC8qIENoZWNrOiBp b3YgZGF0YSBzaXplIHZlcnN1cyBmcmVlIHNwYWNlIGF0IHRoZSB0YWlsIG9mIHRoZSByaW5nICov CisgICAgICAgIGlmICggaW92X2xlbiA+IHNwICkKKyAgICAgICAgeworICAgICAgICAgICAgLyoK KyAgICAgICAgICAgICAqIFNlY29uZCBwb3NzaWJsZSBkYXRhIHdyaXRlOiByaW5nLXRhaWwtd3Jh cC13cml0ZS4KKyAgICAgICAgICAgICAqIFBvcHVsYXRlIHRoZSByaW5nIHRhaWwgYW5kIHVwZGF0 ZSB0aGUgaW50ZXJuYWwgdHhfcHRyIHRvIGhhbmRsZQorICAgICAgICAgICAgICogd3JhcHBpbmcg YXQgdGhlIGVuZCBvZiByaW5nLgorICAgICAgICAgICAgICogU2l6ZSBvZiBkYXRhIHdyaXR0ZW4g aGVyZTogc3AKKyAgICAgICAgICAgICAqIHdoaWNoIGlzIHRoZSBleGFjdCBmdWxsIGFtb3VudCBv ZiBmcmVlIHNwYWNlIGF2YWlsYWJsZSBhdCB0aGUKKyAgICAgICAgICAgICAqIHRhaWwgb2YgdGhl IHJpbmcsIHNvIHRoaXMgY2Fubm90IG92ZXJydW4uCisgICAgICAgICAgICAgKi8KKyAgICAgICAg ICAgIHJldCA9IG1lbWNweV90b19ndWVzdF9yaW5nKGQsIHJpbmdfaW5mbywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpbmcudHhfcHRyICsgc2l6ZW9mKHhlbl9hcmdv X3JpbmdfdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBi dWZfaG5kLCBzcCk7CisgICAgICAgICAgICBpZiAoIHJldCApCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgZ3ByaW50ayhYRU5MT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAg ImFyZ286IGZhaWxlZCB0byBjb3B5IHslcCwgJSJQUkl4MzIifSAodm0ldToleCB2bSV1KVxuIiwK KyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zl9obmQucCwgc3AsCisgICAgICAgICAgICAgICAg ICAgICAgICByaW5nX2luZm8tPmlkLmRvbWFpbl9pZCwgcmluZ19pbmZvLT5pZC5hcG9ydCwKKyAg ICAgICAgICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQucGFydG5lcl9pZCk7CisKKyAgICAg ICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByaW5n LnR4X3B0ciA9IDA7CisgICAgICAgICAgICBpb3ZfbGVuIC09IHNwOworICAgICAgICAgICAgZ3Vl c3RfaGFuZGxlX2FkZF9vZmZzZXQoYnVmX2huZCwgc3ApOworCisgICAgICAgICAgICBBU1NFUlQo aW92X2xlbiA8PSByaW5nX2luZm8tPmxlbik7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAg ICAgICAgKiBUaGlyZCBwb3NzaWJsZSBkYXRhIHdyaXRlOiBhbGwgZGF0YSByZW1haW5pbmcgZm9y IHRoaXMgaW92LgorICAgICAgICAgKiBTaXplIG9mIGRhdGEgd3JpdHRlbiBoZXJlOiBpb3ZfbGVu CisgICAgICAgICAqCisgICAgICAgICAqIENhc2UgMTogaWYgdGhlIHJpbmctdGFpbC13cmFwLXdy aXRlIGFib3ZlIHdhcyBwZXJmb3JtZWQsIHRoZW4KKyAgICAgICAgICogICAgICAgICBpb3ZfbGVu IGhhcyBiZWVuIGRlY3JlYXNlZCBieSAnc3AnIGFuZCByaW5nLnR4X3B0ciBpcyB6ZXJvLgorICAg ICAgICAgKgorICAgICAgICAgKiAgICBXZSBrbm93IGZyb20gY2hlY2tpbmcgdGhlIHJlc3VsdCBv ZiBpb3ZfY291bnQ6CisgICAgICAgICAqICAgICAgbGVuICsgc2l6ZW9mKG1lc3NhZ2VfaGVhZGVy KSA8PSByaW5nX2luZm8tPmxlbgorICAgICAgICAgKiAgICBXZSBhbHNvIGtub3cgdGhhdCBsZW4g aXMgdGhlIHRvdGFsIG9mIHN1bW1pbmcgYWxsIGlvdl9sZW5zLCBzbzoKKyAgICAgICAgICogICAg ICAgaW92X2xlbiA8PSBsZW4KKyAgICAgICAgICogICAgc28gYnkgdHJhbnNpdGl2aXR5OgorICAg ICAgICAgKiAgICAgICBpb3ZfbGVuIDw9IGxlbiA8PSAocmluZ19pbmZvLT5sZW4gLSBzaXplb2Yo bXNnaGVhZGVyKSkKKyAgICAgICAgICogICAgYW5kIHRoZXJlZm9yZToKKyAgICAgICAgICogICAg ICAgKGlvdl9sZW4gKyBzaXplb2YobXNnaGVhZGVyKSA8PSByaW5nX2luZm8tPmxlbikgJiYKKyAg ICAgICAgICogICAgICAgKHJpbmcudHhfcHRyID09IDApCisgICAgICAgICAqICAgIHNvIHRoaXMg d3JpdGUgY2Fubm90IG92ZXJydW4gaGVyZS4KKyAgICAgICAgICoKKyAgICAgICAgICogQ2FzZSAy OiByaW5nLXRhaWwtd3JhcC13cml0ZSBhYm92ZSB3YXMgbm90IHBlcmZvcm1lZAorICAgICAgICAg KiAgICAtPiBzbyBpb3ZfbGVuIGlzIHRoZSBndWVzdC1zdXBwbGllZCB2YWx1ZSBhbmQ6IChpb3Zf bGVuIDw9IHNwKQorICAgICAgICAgKiAgICBpZS4gbGVzcyB0aGFuIGF2YWlsYWJsZSBzcGFjZSBh dCB0aGUgdGFpbCBvZiB0aGUgcmluZzoKKyAgICAgICAgICogICAgICAgIHNvIHRoaXMgd3JpdGUg Y2Fubm90IG92ZXJydW4uCisgICAgICAgICAqLworICAgICAgICByZXQgPSBtZW1jcHlfdG9fZ3Vl c3RfcmluZyhkLCByaW5nX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJpbmcudHhfcHRyICsgc2l6ZW9mKHhlbl9hcmdvX3JpbmdfdCksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsIGJ1Zl9obmQsIGlvdl9sZW4pOworICAgICAgICBpZiAo IHJldCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwKKyAgICAg ICAgICAgICAgICAgICAgImFyZ286IGZhaWxlZCB0byBjb3B5IFslcCwgJSJQUkl4MzIiXSAodm0l dToleCB2bSV1KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgYnVmX2huZC5wLCBpb3ZfbGVuLCBy aW5nX2luZm8tPmlkLmRvbWFpbl9pZCwKKyAgICAgICAgICAgICAgICAgICAgcmluZ19pbmZvLT5p ZC5hcG9ydCwgcmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkKTsKKworICAgICAgICAgICAgcmV0dXJu IHJldDsKKyAgICAgICAgfQorCisgICAgICAgIHJpbmcudHhfcHRyICs9IGlvdl9sZW47CisKKyAg ICAgICAgaWYgKCByaW5nLnR4X3B0ciA9PSByaW5nX2luZm8tPmxlbiApCisgICAgICAgICAgICBy aW5nLnR4X3B0ciA9IDA7CisgICAgfQorCisgICAgcmluZy50eF9wdHIgPSBST1VORFVQX01FU1NB R0UocmluZy50eF9wdHIpOworCisgICAgaWYgKCByaW5nLnR4X3B0ciA+PSByaW5nX2luZm8tPmxl biApCisgICAgICAgIHJpbmcudHhfcHRyIC09IHJpbmdfaW5mby0+bGVuOworCisgICAgdXBkYXRl X3R4X3B0cihkLCByaW5nX2luZm8sIHJpbmcudHhfcHRyKTsKKworICAgIC8qCisgICAgICogQXQg dGhpcyBwb2ludCAoYW5kIGFsc28gb24gYW4gZXJyb3IgZXhpdCBwYXRocyBmcm9tIHRoaXMgZnVu Y3Rpb24pIGl0IGlzCisgICAgICogcG9zc2libGUgdG8gdW5tYXAgdGhlIHJpbmdfaW5mbywgaWU6 CisgICAgICogICByaW5nX3VubWFwKGQsIHJpbmdfaW5mbyk7CisgICAgICogYnV0IHBlcmZvcm1h bmNlIHNob3VsZCBiZSBpbXByb3ZlZCBieSBub3QgZG9pbmcgc28sIGFuZCByZXRhaW5pbmcKKyAg ICAgKiB0aGUgbWFwcGluZy4KKyAgICAgKiBBbiBYU00gcG9saWN5IGNvbnRyb2wgb3ZlciBsZXZl bCBvZiBjb25maWRlbnRpYWxpdHkgcmVxdWlyZWQKKyAgICAgKiB2ZXJzdXMgcGVyZm9ybWFuY2Ug Y29zdCBjb3VsZCBiZSBhZGRlZCB0byBkZWNpZGUgdGhhdCBoZXJlLgorICAgICAqLworCisgICAg Km91dF9sZW4gPSBsZW47CisKKyAgICByZXR1cm4gcmV0OworfQorCiBzdGF0aWMgdm9pZAogd2ls ZGNhcmRfcGVuZGluZ19saXN0X3JlbW92ZShkb21pZF90IGRvbWFpbl9pZCwgc3RydWN0IHBlbmRp bmdfZW50ICplbnQpCiB7CkBAIC00NTgsNiArODc4LDI1IEBAIHdpbGRjYXJkX3BlbmRpbmdfbGlz dF9yZW1vdmUoZG9taWRfdCBkb21haW5faWQsIHN0cnVjdCBwZW5kaW5nX2VudCAqZW50KQogfQog CiBzdGF0aWMgdm9pZAord2lsZGNhcmRfcGVuZGluZ19saXN0X2luc2VydChkb21pZF90IGRvbWFp bl9pZCwgc3RydWN0IHBlbmRpbmdfZW50ICplbnQpCit7CisgICAgc3RydWN0IGRvbWFpbiAqZCA9 IGdldF9kb21haW5fYnlfaWQoZG9tYWluX2lkKTsKKworICAgIGlmICggIWQgKQorICAgICAgICBy ZXR1cm47CisKKyAgICBBU1NFUlQoTE9DS0lOR19SZWFkX0wxKTsKKworICAgIGlmICggZC0+YXJn byApCisgICAgeworICAgICAgICBzcGluX2xvY2soJmQtPmFyZ28tPndpbGRjYXJkX0wyX2xvY2sp OworICAgICAgICBobGlzdF9hZGRfaGVhZCgmZW50LT53aWxkY2FyZF9ub2RlLCAmZC0+YXJnby0+ d2lsZGNhcmRfcGVuZF9saXN0KTsKKyAgICAgICAgc3Bpbl91bmxvY2soJmQtPmFyZ28tPndpbGRj YXJkX0wyX2xvY2spOworICAgIH0KKyAgICBwdXRfZG9tYWluKGQpOworfQorCitzdGF0aWMgdm9p ZAogcGVuZGluZ19yZW1vdmVfYWxsKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdv X3JpbmdfaW5mbyAqcmluZ19pbmZvKQogewogICAgIHN0cnVjdCBobGlzdF9ub2RlICpub2RlLCAq bmV4dDsKQEAgLTQ3NSw2ICs5MTQsNjYgQEAgcGVuZGluZ19yZW1vdmVfYWxsKGNvbnN0IHN0cnVj dCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvKQogICAgIHJpbmdf aW5mby0+bnBlbmRpbmcgPSAwOwogfQogCitzdGF0aWMgaW50CitwZW5kaW5nX3F1ZXVlKGNvbnN0 IHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLAorICAg ICAgICAgICAgICBkb21pZF90IHNyY19pZCwgdW5zaWduZWQgaW50IGxlbikKK3sKKyAgICBzdHJ1 Y3QgcGVuZGluZ19lbnQgKmVudDsKKworICAgIEFTU0VSVChMT0NLSU5HX0wzKGQsIHJpbmdfaW5m bykpOworCisgICAgaWYgKCByaW5nX2luZm8tPm5wZW5kaW5nID49IE1BWF9QRU5ESU5HX1BFUl9S SU5HICkKKyAgICAgICAgcmV0dXJuIC1FTk9TUEM7CisKKyAgICBlbnQgPSB4bWFsbG9jKHN0cnVj dCBwZW5kaW5nX2VudCk7CisgICAgaWYgKCAhZW50ICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07 CisKKyAgICBlbnQtPmxlbiA9IGxlbjsKKyAgICBlbnQtPmRvbWFpbl9pZCA9IHNyY19pZDsKKyAg ICBlbnQtPnJpbmdfaW5mbyA9IHJpbmdfaW5mbzsKKworICAgIGlmICggcmluZ19pbmZvLT5pZC5w YXJ0bmVyX2lkID09IFhFTl9BUkdPX0RPTUlEX0FOWSApCisgICAgICAgIHdpbGRjYXJkX3BlbmRp bmdfbGlzdF9pbnNlcnQoc3JjX2lkLCBlbnQpOworICAgIGhsaXN0X2FkZF9oZWFkKCZlbnQtPm5v ZGUsICZyaW5nX2luZm8tPnBlbmRpbmcpOworICAgIHJpbmdfaW5mby0+bnBlbmRpbmcrKzsKKwor ICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitwZW5kaW5nX3JlcXVldWUoY29uc3Qgc3Ry dWN0IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8sCisgICAgICAg ICAgICAgICAgZG9taWRfdCBzcmNfaWQsIHVuc2lnbmVkIGludCBsZW4pCit7CisgICAgc3RydWN0 IGhsaXN0X25vZGUgKm5vZGU7CisgICAgc3RydWN0IHBlbmRpbmdfZW50ICplbnQ7CisKKyAgICBB U1NFUlQoTE9DS0lOR19MMyhkLCByaW5nX2luZm8pKTsKKworICAgIGhsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGVudCwgbm9kZSwgJnJpbmdfaW5mby0+cGVuZGluZywgbm9kZSkKKyAgICB7CisgICAgICAg IGlmICggZW50LT5kb21haW5faWQgPT0gc3JjX2lkICkKKyAgICAgICAgeworICAgICAgICAgICAg LyoKKyAgICAgICAgICAgICAqIFJldXNlIGFuIGV4aXN0aW5nIHF1ZXVlIGVudHJ5IGZvciBhIG5v dGlmaWNhdGlvbiByYXRoZXIgdGhhbiBhZGQKKyAgICAgICAgICAgICAqIGFub3RoZXIuIElmIHRo ZSBleGlzdGluZyBlbnRyeSBpcyB3YWl0aW5nIGZvciBhIHNtYWxsZXIgc2l6ZSB0aGFuCisgICAg ICAgICAgICAgKiB0aGUgY3VycmVudCBtZXNzYWdlIHRoZW4gYWRqdXN0IHRoZSByZWNvcmQgdG8g d2FpdCBmb3IgdGhlCisgICAgICAgICAgICAgKiBjdXJyZW50IChsYXJnZXIpIHNpemUgdG8gYmUg YXZhaWxhYmxlIGJlZm9yZSB0cmlnZ2VyaW5nIGEKKyAgICAgICAgICAgICAqIG5vdGlmaWNhdGlv bi4KKyAgICAgICAgICAgICAqIFRoaXMgYXNzaXN0cyB0aGUgd2FpdGluZyBzZW5kZXIgYnkgZW5z dXJpbmcgdGhhdCB3aGVuZXZlciBhCisgICAgICAgICAgICAgKiBub3RpZmljYXRpb24gaXMgdHJp Z2dlcmVkLCB0aGVyZSBpcyBzdWZmaWNpZW50IHNwYWNlIGF2YWlsYWJsZQorICAgICAgICAgICAg ICogZm9yIChhdCBsZWFzdCkgYW55IG9uZSBvZiB0aGUgbWVzc2FnZXMgYXdhaXRpbmcgdHJhbnNt aXNzaW9uLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIGVudC0+bGVuIDwgbGVu ICkKKyAgICAgICAgICAgICAgICBlbnQtPmxlbiA9IGxlbjsKKworICAgICAgICAgICAgcmV0dXJu IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcGVuZGluZ19xdWV1ZShkLCByaW5n X2luZm8sIHNyY19pZCwgbGVuKTsKK30KKwogc3RhdGljIHZvaWQKIHdpbGRjYXJkX3JpbmdzX3Bl bmRpbmdfcmVtb3ZlKHN0cnVjdCBkb21haW4gKmQpCiB7CkBAIC0xMDM1LDYgKzE1MzQsOTUgQEAg cmVnaXN0ZXJfcmluZyhzdHJ1Y3QgZG9tYWluICpjdXJyZCwKICAgICByZXR1cm4gcmV0OwogfQog CitzdGF0aWMgbG9uZworc2VuZHYoc3RydWN0IGRvbWFpbiAqc3JjX2QsIGNvbnN0IHhlbl9hcmdv X2FkZHJfdCAqc3JjX2FkZHIsCisgICAgICBjb25zdCB4ZW5fYXJnb19hZGRyX3QgKmRzdF9hZGRy LAorICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fYXJnb19pb3ZfdCkgaW92c19obmQs IHVuc2lnbmVkIGxvbmcgbmlvdiwKKyAgICAgIHVpbnQzMl90IG1lc3NhZ2VfdHlwZSkKK3sKKyAg ICBzdHJ1Y3QgZG9tYWluICpkc3RfZCA9IE5VTEw7CisgICAgc3RydWN0IGFyZ29fcmluZ19pZCBz cmNfaWQ7CisgICAgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm87CisgICAgaW50IHJl dCA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsZW4gPSAwOworCisgICAgQVNTRVJUKHNyY19kLT5k b21haW5faWQgPT0gc3JjX2FkZHItPmRvbWFpbl9pZCk7CisKKyAgICBhcmdvX2RwcmludGsoInNl bmR2OiAoJXU6JXgpLT4oJXU6JXgpIG5pb3Y6JWx1IGlvdjolcCB0eXBlOiV1XG4iLAorICAgICAg ICAgICAgICAgICBzcmNfYWRkci0+ZG9tYWluX2lkLCBzcmNfYWRkci0+YXBvcnQsCisgICAgICAg ICAgICAgICAgIGRzdF9hZGRyLT5kb21haW5faWQsIGRzdF9hZGRyLT5hcG9ydCwKKyAgICAgICAg ICAgICAgICAgbmlvdiwgaW92c19obmQucCwgbWVzc2FnZV90eXBlKTsKKworICAgIHJlYWRfbG9j aygmTDFfZ2xvYmFsX2FyZ29fcndsb2NrKTsKKworICAgIGlmICggIXNyY19kLT5hcmdvICkKKyAg ICB7CisgICAgICAgIHJldCA9IC1FTk9ERVY7CisgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKyAg ICB9CisKKyAgICBzcmNfaWQuYXBvcnQgPSBzcmNfYWRkci0+YXBvcnQ7CisgICAgc3JjX2lkLmRv bWFpbl9pZCA9IHNyY19kLT5kb21haW5faWQ7CisgICAgc3JjX2lkLnBhcnRuZXJfaWQgPSBkc3Rf YWRkci0+ZG9tYWluX2lkOworCisgICAgZHN0X2QgPSBnZXRfZG9tYWluX2J5X2lkKGRzdF9hZGRy LT5kb21haW5faWQpOworICAgIGlmICggIWRzdF9kICkKKyAgICB7CisgICAgICAgIGFyZ29fZHBy aW50aygiIWRzdF9kLCBFU1JDSFxuIik7CisgICAgICAgIHJldCA9IC1FU1JDSDsKKyAgICAgICAg Z290byBvdXRfdW5sb2NrOworICAgIH0KKworICAgIGlmICggIWRzdF9kLT5hcmdvICkKKyAgICB7 CisgICAgICAgIGFyZ29fZHByaW50aygiIWRzdF9kLT5hcmdvLCBFQ09OTlJFRlVTRURcbiIpOwor ICAgICAgICByZXQgPSAtRUNPTk5SRUZVU0VEOworICAgICAgICBnb3RvIG91dF91bmxvY2s7Cisg ICAgfQorCisgICAgcmVhZF9sb2NrKCZkc3RfZC0+YXJnby0+cmluZ3NfTDJfcndsb2NrKTsKKwor ICAgIHJpbmdfaW5mbyA9IGZpbmRfcmluZ19pbmZvX2J5X21hdGNoKGRzdF9kLCBkc3RfYWRkci0+ YXBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX2FkZHIt PmRvbWFpbl9pZCk7CisgICAgaWYgKCAhcmluZ19pbmZvICkKKyAgICB7CisgICAgICAgIGdwcmlu dGsoWEVOTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAiYXJnbzogdm0ldSBjb25uZWN0aW9uIHJl ZnVzZWQsIHNyYyAodm0ldToleCkgZHN0ICh2bSV1OiV4KVxuIiwKKyAgICAgICAgICAgICAgICBj dXJyZW50LT5kb21haW4tPmRvbWFpbl9pZCwgc3JjX2lkLmRvbWFpbl9pZCwgc3JjX2lkLmFwb3J0 LAorICAgICAgICAgICAgICAgIGRzdF9hZGRyLT5kb21haW5faWQsIGRzdF9hZGRyLT5hcG9ydCk7 CisKKyAgICAgICAgcmV0ID0gLUVDT05OUkVGVVNFRDsKKyAgICAgICAgcmVhZF91bmxvY2soJmRz dF9kLT5hcmdvLT5yaW5nc19MMl9yd2xvY2spOworICAgICAgICBnb3RvIG91dF91bmxvY2s7Cisg ICAgfQorCisgICAgc3Bpbl9sb2NrKCZyaW5nX2luZm8tPkwzX2xvY2spOworCisgICAgcmV0ID0g cmluZ2J1Zl9pbnNlcnQoZHN0X2QsIHJpbmdfaW5mbywgJnNyY19pZCwgaW92c19obmQsIG5pb3Ys CisgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZV90eXBlLCAmbGVuKTsKKyAgICBpZiAo IHJldCA9PSAtRUFHQUlOICkKKyAgICB7CisgICAgICAgIGFyZ29fZHByaW50aygiYXJnb19yaW5n YnVmX3NlbmR2IGZhaWxlZCwgRUFHQUlOXG4iKTsKKyAgICAgICAgLyogcmVxdWV1ZSB0byBpc3N1 ZSBhIG5vdGlmaWNhdGlvbiB3aGVuIHNwYWNlIGlzIHRoZXJlICovCisgICAgICAgIHJldCA9IHBl bmRpbmdfcmVxdWV1ZShkc3RfZCwgcmluZ19pbmZvLCBzcmNfYWRkci0+ZG9tYWluX2lkLCBsZW4p OworICAgIH0KKworICAgIHNwaW5fdW5sb2NrKCZyaW5nX2luZm8tPkwzX2xvY2spOworCisgICAg aWYgKCByZXQgPj0gMCApCisgICAgICAgIHNpZ25hbF9kb21haW4oZHN0X2QpOworCisgICAgcmVh ZF91bmxvY2soJmRzdF9kLT5hcmdvLT5yaW5nc19MMl9yd2xvY2spOworCisgb3V0X3VubG9jazoK KyAgICBpZiAoIGRzdF9kICkKKyAgICAgICAgcHV0X2RvbWFpbihkc3RfZCk7CisKKyAgICByZWFk X3VubG9jaygmTDFfZ2xvYmFsX2FyZ29fcndsb2NrKTsKKworICAgIHJldHVybiAoIHJldCA8IDAg KSA/IHJldCA6IGxlbjsKK30KKwogbG9uZwogZG9fYXJnb19vcCh1bnNpZ25lZCBpbnQgY21kLCBY RU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZzEsCiAgICAgICAgICAgIFhFTl9HVUVTVF9I QU5ETEVfUEFSQU0odm9pZCkgYXJnMiwgdW5zaWduZWQgbG9uZyBhcmczLApAQCAtMTA5OCw2ICsx Njg2LDUzIEBAIGRvX2FyZ29fb3AodW5zaWduZWQgaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9Q QVJBTSh2b2lkKSBhcmcxLAogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFhFTl9B UkdPX09QX3NlbmR2OgorICAgIHsKKyAgICAgICAgeGVuX2FyZ29fc2VuZF9hZGRyX3Qgc2VuZF9h ZGRyOworCisgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2FyZ29fc2VuZF9hZGRy X3QpIHNlbmRfYWRkcl9obmQgPQorICAgICAgICAgICAgZ3Vlc3RfaGFuZGxlX2Nhc3QoYXJnMSwg eGVuX2FyZ29fc2VuZF9hZGRyX3QpOworICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhl bl9hcmdvX2lvdl90KSBpb3ZzX2huZCA9CisgICAgICAgICAgICBndWVzdF9oYW5kbGVfY2FzdChh cmcyLCB4ZW5fYXJnb19pb3ZfdCk7CisgICAgICAgIC8qIGFyZzMgaXMgbmlvdiAqLworICAgICAg ICAvKiBhcmc0IGlzIG1lc3NhZ2VfdHlwZS4gTXVzdCBiZSBhIDMyLWJpdCB2YWx1ZS4gKi8KKwor ICAgICAgICByYyA9IGNvcHlfZnJvbV9ndWVzdCgmc2VuZF9hZGRyLCBzZW5kX2FkZHJfaG5kLCAx KSA/IC1FRkFVTFQgOiAwOworICAgICAgICBpZiAoIHJjICkKKyAgICAgICAgICAgIGJyZWFrOwor CisgICAgICAgIC8qCisgICAgICAgICAqIENoZWNrIHBhZGRpbmcgaXMgemVyb2VkLiBSZWplY3Qg bmlvdiBhYm92ZSBsaW1pdCBvciBtZXNzYWdlX3R5cGVzCisgICAgICAgICAqIHRoYXQgYXJlIG91 dHNpZGUgMzIgYml0IHJhbmdlLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCB1bmxpa2VseShz ZW5kX2FkZHIuc3JjLnBhZCB8fCBzZW5kX2FkZHIuZHN0LnBhZCB8fAorICAgICAgICAgICAgICAg ICAgICAgIChhcmczID4gWEVOX0FSR09fTUFYSU9WKSB8fCAoYXJnNCAmIH4weGZmZmZmZmZmVUwp KSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJy ZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCBzZW5kX2FkZHIuc3JjLmRvbWFpbl9pZCA9 PSBYRU5fQVJHT19ET01JRF9BTlkgKQorICAgICAgICAgICAgc2VuZF9hZGRyLnNyYy5kb21haW5f aWQgPSBjdXJyZC0+ZG9tYWluX2lkOworCisgICAgICAgIC8qIE5vIGRvbWFpbiBpcyBjdXJyZW50 bHkgYXV0aG9yaXplZCB0byBzZW5kIG9uIGJlaGFsZiBvZiBhbm90aGVyICovCisgICAgICAgIGlm ICggdW5saWtlbHkoc2VuZF9hZGRyLnNyYy5kb21haW5faWQgIT0gY3VycmQtPmRvbWFpbl9pZCkg KQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IC1FUEVSTTsKKyAgICAgICAgICAgIGJyZWFr OworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQ2hlY2sgYWNjZXNzIHRvIHRo ZSB3aG9sZSBhcnJheSBoZXJlIHNvIHdlIGNhbiB1c2UgdGhlIGZhc3RlciBfX2NvcHkKKyAgICAg ICAgICogb3BlcmF0aW9ucyB0byByZWFkIGVhY2ggZWxlbWVudCBsYXRlci4KKyAgICAgICAgICov CisgICAgICAgIGlmICggdW5saWtlbHkoIWd1ZXN0X2hhbmRsZV9va2F5KGlvdnNfaG5kLCBhcmcz KSkgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgcmMgPSBzZW5kdihjdXJyZCwgJnNl bmRfYWRkci5zcmMsICZzZW5kX2FkZHIuZHN0LCBpb3ZzX2huZCwgYXJnMywgYXJnNCk7CisgICAg ICAgIGJyZWFrOworICAgIH0KKwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJjID0gLUVPUE5PVFNV UFA7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9jb21wYXQvYXJnby5j IGIveGVuL2NvbW1vbi9jb21wYXQvYXJnby5jCmluZGV4IDZhMTY3MWMuLjYyOTBlZDYgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vY29tcGF0L2FyZ28uYworKysgYi94ZW4vY29tbW9uL2NvbXBhdC9h cmdvLmMKQEAgLTIzLDMgKzIzLDIyIEBAIENIRUNLX2FyZ29fYWRkcjsKIENIRUNLX2FyZ29fcmVn aXN0ZXJfcmluZzsKIENIRUNLX2FyZ29fcmluZzsKIENIRUNLX2FyZ29fdW5yZWdpc3Rlcl9yaW5n OworCisvKgorICogRGlzYWJsZSBzdHJpY3QgdHlwZSBjaGVja2luZyBpbiB0aGlzIGNvbXBhdCB2 YWxpZGF0aW9uIG1hY3JvIGZvciB0aGUKKyAqIGZvbGxvd2luZyBzdHJ1Y3QgY2hlY2tzIGJlY2F1 c2UgaXQgY2Fubm90IGhhbmRsZSBmaWVsZHMgd2l0aGluIHN0cnVjdHMgdGhhdAorICogaGF2ZSB0 eXBlcyB0aGF0IGRpZmZlciBpbiB0aGUgY29tcGF0IHZlcnN1cyBub24tY29tcGF0IHN0cnVjdHMu CisgKiBSZXBsYWNlIGl0IHdpdGggYSBmaWVsZCBzaXplIGNoZWNrIHdoaWNoIGlzIHN1ZmZpY2ll bnQgaGVyZS4KKyAqLworCisjdW5kZWYgQ0hFQ0tfRklFTERfQ09NTU9OXworI2RlZmluZSBDSEVD S19GSUVMRF9DT01NT05fKGssIG5hbWUsIG4sIGYpIFwKK3N0YXRpYyBpbmxpbmUgaW50IF9fbWF5 YmVfdW51c2VkIG5hbWUoayB4ZW5fICMjIG4gKngsIGsgY29tcGF0XyAjIyBuICpjKSBcCit7IFwK KyAgICBCVUlMRF9CVUdfT04ob2Zmc2V0b2YoayB4ZW5fICMjIG4sIGYpICE9IFwKKyAgICAgICAg ICAgICAgICAgb2Zmc2V0b2YoayBjb21wYXRfICMjIG4sIGYpKTsgXAorICAgIHJldHVybiBzaXpl b2YoeC0+ZikgPT0gc2l6ZW9mKGMtPmYpOyBcCit9CisKK0NIRUNLX2FyZ29fc2VuZF9hZGRyOwor Q0hFQ0tfYXJnb19pb3Y7CmRpZmYgLS1naXQgYS94ZW4vY29tbW9uL2V2ZW50X2NoYW5uZWwuYyBi L3hlbi9jb21tb24vZXZlbnRfY2hhbm5lbC5jCmluZGV4IGYzNGQ0ZjAuLjZmYmUzNDYgMTAwNjQ0 Ci0tLSBhL3hlbi9jb21tb24vZXZlbnRfY2hhbm5lbC5jCisrKyBiL3hlbi9jb21tb24vZXZlbnRf Y2hhbm5lbC5jCkBAIC03NDYsNyArNzQ2LDcgQEAgdm9pZCBzZW5kX2d1ZXN0X3ZjcHVfdmlycShz dHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgdmlycSkKICAgICBzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZ2LT52aXJxX2xvY2ssIGZsYWdzKTsKIH0KIAotc3RhdGljIHZvaWQgc2VuZF9ndWVzdF9nbG9i YWxfdmlycShzdHJ1Y3QgZG9tYWluICpkLCB1aW50MzJfdCB2aXJxKQordm9pZCBzZW5kX2d1ZXN0 X2dsb2JhbF92aXJxKHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHZpcnEpCiB7CiAgICAgdW5z aWduZWQgbG9uZyBmbGFnczsKICAgICBpbnQgcG9ydDsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L3B1YmxpYy9hcmdvLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oCmluZGV4IDNlYWJmODMu LmMxMmE1MGYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdvLmgKKysrIGIveGVu L2luY2x1ZGUvcHVibGljL2FyZ28uaApAQCAtNDYsNiArNDYsMzQgQEAgdHlwZWRlZiB1aW50MzJf dCB4ZW5fYXJnb19wb3J0X3Q7CiAvKiBnZm4gdHlwZTogNjQtYml0IG9uIGFsbCBhcmNoaXRlY3R1 cmVzIHRvIGFpZCBhdm9pZGluZyBhIGNvbXBhdCBBQkkgKi8KIHR5cGVkZWYgdWludDY0X3QgeGVu X2FyZ29fZ2ZuX3Q7CiAKKy8qCisgKiBYRU5fQVJHT19NQVhJT1YgOiBtYXhpbXVtIG51bWJlciBv ZiBpb3ZzIGFjY2VwdGVkIGluIGEgc2luZ2xlIHNlbmR2LgorICogQ2F1dGlvbiBpcyByZXF1aXJl ZCBpZiB0aGlzIHZhbHVlIGlzIGluY3JlYXNlZDogdGhpcyBkZXRlcm1pbmVzIHRoZSBzaXplIG9m CisgKiBhbiBhcnJheSBvZiB4ZW5fYXJnb19pb3ZfdCBzdHJ1Y3RzIG9uIHRoZSBoeXBlcnZpc29y IHN0YWNrLCBzbyBjb3VsZCBjYXVzZQorICogc3RhY2sgb3ZlcmZsb3cgaWYgdGhlIHZhbHVlIGlz IHRvbyBsYXJnZS4KKyAqIFRoZSBMaW51eCBBcmdvIGRyaXZlciBuZXZlciBwYXNzZXMgbW9yZSB0 aGFuIHR3byBpb3ZzLgorICoKKyAqIFRoaXMgdmFsdWUgc2hvdWxkIGFsc28gbm90IGV4Y2VlZCAx MjggdG8gZW5zdXJlIHRoYXQgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhCisgKiBwb3N0ZWQgaW4g YSBzaW5nbGUgQXJnbyBzZW5kdiBvcGVyYXRpb24gY2Fubm90IGV4Y2VlZCAyXjMxIGJ5dGVzLCB0 byByZWR1Y2UKKyAqIHJpc2sgb2YgaW50ZWdlciBvdmVyZmxvdyBkZWZlY3RzOgorICogRWFjaCBh cmdvIGlvdiBjYW4gaG9sZCB+IDJeMjQgYnl0ZXMsIHNvIFhFTl9BUkdPX01BWElPViA8PSAyXigz MS0yNCksCisgKiBpZS4ga2VlcCBYRU5fQVJHT19NQVhJT1YgPD0gMTI4LgorKi8KKyNkZWZpbmUg WEVOX0FSR09fTUFYSU9WICAgICAgICAgIDhVCisKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVp bnQ4X3QpOworCit0eXBlZGVmIHN0cnVjdCB4ZW5fYXJnb19pb3YKK3sKKyNpZmRlZiBYRU5fR1VF U1RfSEFORExFXzY0CisgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh1aW50OF90KSBpb3ZfaG5kOwor I2Vsc2UKKyAgICB1aW50NjRfdCBpb3ZfaG5kOworI2VuZGlmCisgICAgdWludDMyX3QgaW92X2xl bjsKKyAgICB1aW50MzJfdCBwYWQ7Cit9IHhlbl9hcmdvX2lvdl90OworCiB0eXBlZGVmIHN0cnVj dCB4ZW5fYXJnb19hZGRyCiB7CiAgICAgeGVuX2FyZ29fcG9ydF90IGFwb3J0OwpAQCAtNTMsNiAr ODEsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fYWRkcgogICAgIHVpbnQxNl90IHBhZDsK IH0geGVuX2FyZ29fYWRkcl90OwogCit0eXBlZGVmIHN0cnVjdCB4ZW5fYXJnb19zZW5kX2FkZHIK K3sKKyAgICB4ZW5fYXJnb19hZGRyX3Qgc3JjOworICAgIHhlbl9hcmdvX2FkZHJfdCBkc3Q7Cit9 IHhlbl9hcmdvX3NlbmRfYWRkcl90OworCiB0eXBlZGVmIHN0cnVjdCB4ZW5fYXJnb19yaW5nCiB7 CiAgICAgLyogR3Vlc3RzIHNob3VsZCB1c2UgYXRvbWljIG9wZXJhdGlvbnMgdG8gYWNjZXNzIHJ4 X3B0ciAqLwpAQCAtMTU3LDQgKzE5MSwzMCBAQCBzdHJ1Y3QgeGVuX2FyZ29fcmluZ19tZXNzYWdl X2hlYWRlcgogICovCiAjZGVmaW5lIFhFTl9BUkdPX09QX3VucmVnaXN0ZXJfcmluZyAgICAgMgog CisvKgorICogWEVOX0FSR09fT1Bfc2VuZHYKKyAqCisgKiBTZW5kIGEgbGlzdCBvZiBidWZmZXJz IGNvbnRhaW5lZCBpbiBpb3ZzLgorICoKKyAqIFRoZSBzZW5kIGFkZHJlc3Mgc3RydWN0IHNwZWNp ZmllcyB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhZGRyZXNzZXMKKyAqIGZvciB0aGUgbWVz c2FnZSBiZWluZyBzZW50LCB3aGljaCBhcmUgdXNlZCB0byBmaW5kIHRoZSBkZXN0aW5hdGlvbiBy aW5nOgorICogWGVuIGZpcnN0IGxvb2tzIGZvciBhIG1vc3Qtc3BlY2lmaWMgbWF0Y2ggd2l0aCBh IHJlZ2lzdGVyZWQgcmluZyB3aXRoCisgKiAgKGlkLmFkZHIgPT0gZHN0KSBhbmQgKGlkLnBhcnRu ZXIgPT0gc2VuZGluZ19kb21haW4pIDsKKyAqIGlmIHRoYXQgZmFpbHMsIGl0IHRoZW4gbG9va3Mg Zm9yIGEgd2lsZGNhcmQgbWF0Y2ggKGFrYSBtdWx0aWNhc3QgcmVjZWl2ZXIpCisgKiB3aGVyZSAo aWQuYWRkciA9PSBkc3QpIGFuZCAoaWQucGFydG5lciA9PSBET01JRF9BTlkpLgorICoKKyAqIEZv ciBlYWNoIGlvdiBlbnRyeSwgc2VuZCBpb3ZfbGVuIGJ5dGVzIGZyb20gaW92X2Jhc2UgdG8gdGhl IGRlc3RpbmF0aW9uIHJpbmcuCisgKiBJZiBpbnN1ZmZpY2llbnQgc3BhY2UgZXhpc3RzIGluIHRo ZSBkZXN0aW5hdGlvbiByaW5nLCBpdCB3aWxsIHJldHVybiAtRUFHQUlOCisgKiBhbmQgWGVuIHdp bGwgbm90aWZ5IHRoZSBjYWxsZXIgd2hlbiBzdWZmaWNpZW50IHNwYWNlIGJlY29tZXMgYXZhaWxh YmxlLgorICoKKyAqIFRoZSBtZXNzYWdlIHR5cGUgaXMgYSAzMi1iaXQgZGF0YSBmaWVsZCBhdmFp bGFibGUgdG8gY29tbXVuaWNhdGUgbWVzc2FnZQorICogY29udGV4dCBkYXRhIChlZy4ga2VybmVs LXRvLWtlcm5lbCwgcmF0aGVyIHRoYW4gYXBwbGljYXRpb24gbGF5ZXIpLgorICoKKyAqIGFyZzE6 IFhFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fc2VuZF9hZGRyX3QpIHNvdXJjZSBhbmQgZGVzdCBh ZGRyZXNzZXMKKyAqIGFyZzI6IFhFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29faW92X3QpIGlvdnMK KyAqIGFyZzM6IHVuc2lnbmVkIGxvbmcgbmlvdgorICogYXJnNDogdW5zaWduZWQgbG9uZyBtZXNz YWdlIHR5cGUKKyAqLworI2RlZmluZSBYRU5fQVJHT19PUF9zZW5kdiAgICAgICAgICAgICAgIDMK KwogI2VuZGlmCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmggYi94ZW4vaW5j bHVkZS9wdWJsaWMveGVuLmgKaW5kZXggYjNmNjQ5MS4uYjY1MGFiYSAxMDA2NDQKLS0tIGEveGVu L2luY2x1ZGUvcHVibGljL3hlbi5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaApAQCAt MTc4LDcgKzE3OCw3IEBAIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl91bG9uZ190KTsKICNk ZWZpbmUgVklSUV9DT05fUklORyAgIDggIC8qIEcuIChET00wKSBCeXRlcyByZWNlaXZlZCBvbiBj b25zb2xlICAgICAgICAgICAgKi8KICNkZWZpbmUgVklSUV9QQ1BVX1NUQVRFIDkgIC8qIEcuIChE T00wKSBQQ1BVIHN0YXRlIGNoYW5nZWQgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgVklS UV9NRU1fRVZFTlQgIDEwIC8qIEcuIChET00wKSBBIG1lbW9yeSBldmVudCBoYXMgb2NjdXJyZWQg ICAgICAgICAgKi8KLSNkZWZpbmUgVklSUV9YQ19SRVNFUlZFRCAxMSAvKiBHLiBSZXNlcnZlZCBm b3IgWGVuQ2xpZW50ICAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgVklSUV9BUkdPX01F U1NBR0UgMTEgLyogRy4gQXJnbyBpbnRlcmRvbWFpbiBtZXNzYWdlIG5vdGlmaWNhdGlvbiAgICAg Ki8KICNkZWZpbmUgVklSUV9FTk9NRU0gICAgIDEyIC8qIEcuIChET00wKSBMb3cgb24gaGVhcCBt ZW1vcnkgICAgICAgKi8KICNkZWZpbmUgVklSUV9YRU5QTVUgICAgIDEzIC8qIFYuICBQTUMgaW50 ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIApkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUveGVuL2V2ZW50LmggYi94ZW4vaW5jbHVkZS94ZW4vZXZlbnQuaAppbmRleCBlYmI4 NzllLi40NjUwODg3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS94ZW4vZXZlbnQuaAorKysgYi94 ZW4vaW5jbHVkZS94ZW4vZXZlbnQuaApAQCAtMjksNiArMjksMTMgQEAgdm9pZCBzZW5kX2d1ZXN0 X3ZjcHVfdmlycShzdHJ1Y3QgdmNwdSAqdiwgdWludDMyX3QgdmlycSk7CiB2b2lkIHNlbmRfZ2xv YmFsX3ZpcnEodWludDMyX3QgdmlycSk7CiAKIC8qCisgKiBzZW5kX2d1ZXN0X2dsb2JhbF92aXJx OgorICogIEBkOiAgICAgICAgRG9tYWluIHRvIHdoaWNoIFZJUlEgc2hvdWxkIGJlIHNlbnQKKyAq ICBAdmlycTogICAgIFZpcnR1YWwgSVJRIG51bWJlciAoVklSUV8qKSwgbXVzdCBiZSBnbG9iYWwK KyAqLwordm9pZCBzZW5kX2d1ZXN0X2dsb2JhbF92aXJxKHN0cnVjdCBkb21haW4gKmQsIHVpbnQz Ml90IHZpcnEpOworCisvKgogICogc2VudF9nbG9iYWxfdmlycV9oYW5kbGVyOiBTZXQgYSBnbG9i YWwgVklSUSBoYW5kbGVyLgogICogIEBkOiAgICAgICAgTmV3IHRhcmdldCBkb21haW4gZm9yIHRo aXMgVklSUQogICogIEB2aXJxOiAgICAgVmlydHVhbCBJUlEgbnVtYmVyIChWSVJRXyopLCBtdXN0 IGJlIGdsb2JhbApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUveGxhdC5sc3QgYi94ZW4vaW5jbHVk ZS94bGF0LmxzdAppbmRleCA0MTFjNjYxLi4zNzIzOTgwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS94bGF0LmxzdAorKysgYi94ZW4vaW5jbHVkZS94bGF0LmxzdApAQCAtMTUyLDMgKzE1Miw1IEBA CiA/CWFyZ29fcmluZwkJCWFyZ28uaAogPwlhcmdvX3JlZ2lzdGVyX3JpbmcJCWFyZ28uaAogPwlh cmdvX3VucmVnaXN0ZXJfcmluZwkJYXJnby5oCis/CWFyZ29faW92CQkJYXJnby5oCis/CWFyZ29f c2VuZF9hZGRyCQkJYXJnby5oCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw=