From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher Clark Subject: [PATCH v3 09/15] argo: implement the sendv op; evtchn: expose send_guest_global_virq Date: Sun, 6 Jan 2019 23:42:42 -0800 Message-ID: <1546846968-7372-10-git-send-email-christopher.w.clark@gmail.com> References: <1546846968-7372-1-git-send-email-christopher.w.clark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ggPZF-0004o2-6K for xen-devel@lists.xenproject.org; Mon, 07 Jan 2019 07:43:25 +0000 Received: by mail-pl1-x644.google.com with SMTP id e5so20477782plb.5 for ; Sun, 06 Jan 2019 23:43:22 -0800 (PST) In-Reply-To: <1546846968-7372-1-git-send-email-christopher.w.clark@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Stefano Stabellini , Wei Liu , Ross Philipson , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Jason Andryuk , Ian Jackson , Rich Persaud , Tim Deegan , Daniel Smith , Julien Grall , Paul Durrant , Jan Beulich , James McKenzie , Eric Chanudet , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org 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 cmlzdG9waGVyLmNsYXJrNkBiYWVzeXN0ZW1zLmNvbT4KLS0tClRoZSBwcmV2aW91cyBkb3VibGUt cmVhZCBvZiBpb3ZzIGZyb20gZ3Vlc3QgbWVtb3J5IGhhcyBiZWVuIHJlbW92ZWQuCgp2MiBzZWxm OiB1c2UgcmluZ19pbmZvIGJhY2twb2ludGVyIGluIHBlbmRpbmdfZW50IHRvIG1haW50YWluIG5w ZW5kaW5nCnYyIGZlZWRiYWNrIEphbjogZHJvcCBjb29raWUsIGltcGxlbWVudCB0ZWFyZG93bgp2 MiBzZWxmOiBwZW5kaW5nX3F1ZXVlOiByZWFwIHN0YWxlIGVudHMgd2hlbiBpbiBuZWVkIG9mIHNw YWNlCnYyIHNlbGY6IHBlbmRpbmdfcmVxdWV1ZTogcmVjbGFpbSBlbnRzIGZvciBzdGFsZSBkb21h aW5zCnYyLmZlZWRiYWNrIEphbjogb25seSBvdmVycmlkZSBzZW5kZXIgZG9taWQgaWYgRE9NSURf QU5ZCnYyIGZlZWRiYWNrIEphbjogZHJvcCBtZXNzYWdlIGZyb20gYXJnb19tZXNzYWdlX29wCnYy IHNlbGY6IGNoZWNrIG5wZW5kaW5nIHZzIG1heGltdW0gbGltaXQKdjIgc2VsZjogZ2V0X3Nhbml0 aXplZF9yaW5nIGluc3RlYWQgb2YgZ2V0X3J4X3B0cgp2MiBmZWVkYmFjayB2MSMxMyBKYW46IHJl bW92ZSBkb3VibGUgcmVhZCBmcm9tIHJpbmdidWYgaW5zZXJ0LCBsb3dlciBNQVhfSU9WCnYyIHNl bGY6IG1ha2UgaW92X2NvdW50IGNvbnN0CnYyIHNlbGY6IGlvdl9jb3VudCA6IHJldHVybiBFTVNH U0laRSBmb3IgbWVzc2FnZSB0b28gYmlnCnYyIHNlbGY6IE9WRVJIQVVMCnYyIHNlbGY6IHMvYXJn b19wZW5kaW5nX2VudC9wZW5kaW5nX2VudC9nCnYyIGZlZWRiYWNrIHYxIzEzIFJvZ2VyOiB1c2Ug T1Mtc3VwcGxpZWQgcm91bmR1cDsgZHJvcCBmcm9tIHB1YmxpYyBoZWFkZXIKdjEsMiBmZWVkYmFj ayBKYW4vUm9nZXIvUGF1bDogZHJvcCBlcnJubyByZXR1cm5pbmcgZ3Vlc3QgYWNjZXNzIGZ1bmN0 aW9ucwp2MSBmZWVkYmFjayBSb2dlciwgSmFuOiBkcm9wIGFyZ28gcHJlZml4IG9uIHN0YXRpYyBm dW5jdGlvbnMKdjEgZmVlZGJhY2sgIzEzIEphbjogZHJvcCBndWVzdF9oYW5kbGVfb2theSB3aGVu IHVzaW5nIGNvcHlfZnJvbV9ndWVzdAogICAgLSByZW9yZGVyIGRvX2FyZ29fb3AgbG9naWMKdjIg c2VsZjogYWRkIF9obmQgc3VmZml4IHRvIGlvdnMgdmFyaWFibGUgbmFtZSB0byBpbmRpY2F0ZSBn dWVzdCBoYW5kbGUgdHlwZQp2MiBzZWxmOiByZXBsYWNlIHVzZSBvZiBYRU5fR1VFU1RfSEFORExF X05VTEwgd2l0aCB0d28gZXhpc3RpbmcgbWFjcm9zCgp2MSAjMTUgZmVlZGJhY2ssIEphbjogc2Vu ZHYgb3AgOiBzL0VDT05OUkVGVVNFRC9FU1JDSC8KdjEgIzUgKCMxNSkgZmVlZGJhY2sgUGF1bDog c2VuZHY6IHVzZSBjdXJyZCBpbiBkb19hcmdvX21lc3NhZ2Vfb3AKdjEgIzEzICgjMTUpIGZlZWRi YWNrIFBhdWw6IHNlbmR2IG9wOiBkby93aGlsZSByZWluZGVudCBvbmx5CnYxICMxMyAoIzE1KSBm ZWVkYmFjayBQYXVsOiBzZW5kdiBvcDogZG8vd2hpbGU6IGFyZ29fcmluZ2J1Zl9pbnNlcnQgdG8g Z290byBzdHlsZQp2MSAjMTMgKCMxNSkgZmVlZGJhY2sgUGF1bDogc2VuZHYgb3A6IGRvL3doaWxl OiByZWluZGVudCBvbmx5IGFnYWluCnYxICMxMyAoIzE1KSBmZWVkYmFjayBQYXVsOiBzZW5kdiBv cDogZG8vd2hpbGUgOiBnb3RvCnYxICMxNSBmZWVkYmFjayBQYXVsOiBzZW5kdiBvcDogbWFrZSBw YWdlIHZhcjogdW5zaWduZWQKdjEgIzE1IGZlZWRiYWNrIFBhdWw6IHNlbmR2IG9wOiBuZXcgbG9j YWwgdmFyIGZvciBQQUdFX1NJWkUgLSBvZmZzZXQKdjEgIzggZmVlZGJhY2sgSmFuOiBYRU5fR1VF U1RfSEFORExFIDogQzg5IGNvbXBsaWFuY2UKdjEgcmViYXNlIGFmdGVyIHN3aXRjaGluZyByZWdp c3RlciBvcCBmcm9tIHBmbnMgdG8gcGFnZSBkZXNjcmlwdG9ycwp2MSBzZWxmOiBtb3ZlIGlvdiBE RUZJTkVfWEVOX0dVRVNUX0hBTkRMRSBvdXQgb2YgcHVibGljIGhlYWRlciBpbnRvIGFyZ28uYwp2 MSAjMTMgKCMxNSkgZmVlZGJhY2sgUGF1bDogZml4IGxvZ2xldmVsIGZvciBndWVzdC10cmlnZ2Vy ZWQgbWVzc2FnZXMKdjEgOiBhZGQgY29tcGF0IHhsYXQubHN0IGVudHJpZXMKdjEgc2VsZjogc3dp dGNoZWQgbm90aWZpY2F0aW9uIHRvIHNlbmRfZ3Vlc3RfZ2xvYmFsX3ZpcnEgaW5zdGVhZCBvZiBl dmVudAp2MTogZml4IGdwcmludGsgdXNlIGZvciBBUk0gYXMgaXRzIGRlZm4gZGlzbGlrZXMgc3Bs aXQgZm9ybWF0IHN0cmluZ3MKdjE6IGluaXQgbGVuIHZhcmlhYmxlIHRvIHNhdGlzZnkgQVJNIGNv bXBpbGVyIGluaXRpYWxpemVkIGNoZWNraW5nCnYxICMxMyBmZWVkYmFjayBKYW46IHJlbmFtZSBw YWdlIHZhcgp2MTojMTQgZmVlZGJhY2sgSmFuOiB1aW50OF90KiAtPiB2b2lkKgp2MTogIzEzIGZl ZWRiYWNrIEphbjogcHVibGljIG5hbWVzcGFjZTogcHJlZml4IHdpdGggeGVuCnYxOiAjMTMgZmVl ZGJhY2sgSmFuOiBibGFuayBsaW5lIGFmdGVyIGNhc2Ugb3AgaW4gZG9fYXJnb19tZXNzYWdlX29w CnYxOiAjMTUgZmVlZGJhY2sgSmFuOiBhZGQgY29tbWVudHMgZXhwbGFpbmluZyB3aHkgdGhlIHdy aXRlcyBkb24ndCBvdmVycnVuCnYxOiBzZWxmOiBhZGQgQVNTRVJUIHRvIHN1cHBvcnQgY29tbWVu dCB0aGF0IG92ZXJydW4gY2Fubm90IGhhcHBlbgp2MTogc2VsZjogZmFpbCBvbiBzaG9ydCB3cml0 ZXMgd2hlcmUgZ3Vlc3QgbWFuaXB1bGF0ZWQgdGhlIGlvdl9sZW5zCnYxOiBzZWxmOiByZW5hbWUg ZW50IGlkIHRvIGRvbWFpbl9pZAp2MTogc2VsZjogYWRkIG1vYW4gZm9yIGlvdiByZXdyaXRlCnYx LiBmZWVkYmFjayAjMTUgSmFuOiByZXF1aXJlIHRoZSBwYWQgYml0cyBhcmUgemVybwp2MS4gZmVl ZGJhY2sgIzE1IEphbjogZHJvcCBOVUxMIGNoZWNrIGluIGFyZ29fc2lnbmFsX2RvbWFpbiBhcyBu b3cgdXNpbmcgVklSUQp2MS4gc2VsZjogc3RvcmUgZG9tYWluX2Nvb2tpZSBpbiBwZW5kaW5nIGVu dAp2MS4gZmVlZGJhY2sgIzE1IEphbjogdXNlIHVuc2lnbmVkIHdoZXJlIHBvc3NpYmxlCnYxLiBm ZWVkYmFjayBKYW46IHVzZSBoYW5kbGUgdHlwZSBmb3IgaW92X2Jhc2UgaW4gcHVibGljIGlvdiBp bnRlcmZhY2UKdjEuIHNlbGY6IGxvZyB3aGVuZXZlciB2aXNpYmxlIGVycm9yIG9jY3Vycwp2MSBm ZWVkYmFjayAjMTUsIEphbjogZHJvcCB1bm5lY2Vzc2FyeSBtYgp2MSBzZWxmOiBvbmx5IHVwZGF0 ZSBpbnRlcm5hbCB0eF9wdHIgaWYgYWJsZSB0byByZXR1cm4gc3VjY2VzcwogICAgICAgICBhbmQg dXBkYXRlIHRoZSB2aXNpYmxlIHR4X3B0cgp2MSBzZWxmOiBsb2cgb24gZmFpbHVyZSB0byBtYXAg cmluZyB0byB1cGRhdGUgdmlzaWJsZSB0eF9wdHIKdjEgZmVlZGJhY2sgIzE1IEphbjogYWRkIGNv bW1lbnQgcmU6IG5vdGlmaWNhdGlvbiBzaXplIHBvbGljeQp2MSBzZWxmL1JvZ2VyPyByZW1vdmUg ZXJyYW50IHNwYWNlIGFmdGVyIHNpemVvZgp2MS4gZmVlZGJhY2sgIzE1IEphbjogcmVxdWlyZSBp b3YgcGFkIGJlIHplcm8KdjEuIHNlbGY6IHJlbmFtZSBpb3ZfYmFzZSB0byBpb3ZfaG5kIGZvciBo YW5kbGUgaW4gcHVibGljIGlvdiBpbnRlcmZhY2UKdjE6IGZlZWRiYWNrICMxNSBKYW46IGhhbmRs ZSB1cHBlci1oYWx2ZXMgb2YgaHlwZXJjYWxsIGFyZ3M7IGNoYW5nZXMgc29tZQogICAgdHlwZXMg aW4gZnVuY3Rpb24gc2lnbmF0dXJlcyB0byBtYXRjaC4KdjE6IHNlbGY6IGFkZCBkcHJpbnRrIHRv IHNlbmR2CnYxOiBzZWxmOiBhZGQgZGVidWcgb3V0cHV0IHRvIGFyZ29faW92X2NvdW50CnYxLiBm ZWVkYmFjayAjMTQgSmFuOiBibGFuayBsaW5lIGJlZm9yZSByZXR1cm4gaW4gYXJnb19pb3ZfY291 bnQKdjEgZmVlZGJhY2sgIzE1IEphbjogdmVyaWZ5IHNyYyBpZCwgbm90IG92ZXJyaWRlCgogeGVu L2NvbW1vbi9hcmdvLmMgICAgICAgICAgfCA2NTMgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiB4ZW4vY29tbW9uL2V2ZW50X2NoYW5uZWwuYyB8ICAgMiArLQog eGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaCAgfCAgNjAgKysrKysKIHhlbi9pbmNsdWRlL3B1Ymxp Yy94ZW4uaCAgIHwgICAyICstCiB4ZW4vaW5jbHVkZS94ZW4vZXZlbnQuaCAgICB8ICAgNyArCiB4 ZW4vaW5jbHVkZS94bGF0LmxzdCAgICAgICB8ICAgMiArCiA2IGZpbGVzIGNoYW5nZWQsIDcyNCBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vYXJn by5jIGIveGVuL2NvbW1vbi9hcmdvLmMKaW5kZXggNTljZThjNC4uNDU0ODQzNSAxMDA2NDQKLS0t IGEveGVuL2NvbW1vbi9hcmdvLmMKKysrIGIveGVuL2NvbW1vbi9hcmdvLmMKQEAgLTI5LDE0ICsy OSwyMSBAQAogI2luY2x1ZGUgPHB1YmxpYy9hcmdvLmg+CiAKICNkZWZpbmUgTUFYX1JJTkdTX1BF Ul9ET01BSU4gICAgICAgICAgICAxMjhVCisjZGVmaW5lIE1BWF9QRU5ESU5HX1BFUl9SSU5HICAg ICAgICAgICAgIDMyVQogCiAvKiBBbGwgbWVzc2FnZXMgb24gdGhlIHJpbmcgYXJlIHBhZGRlZCB0 byBhIG11bHRpcGxlIG9mIHRoZSBzbG90IHNpemUuICovCiAjZGVmaW5lIFJPVU5EVVBfTUVTU0FH RShhKSAoUk9VTkRVUCgoYSksIFhFTl9BUkdPX01TR19TTE9UX1NJWkUpKQogCisvKiBUaGUgbWF4 aW11bSBzaXplIG9mIGEgbWVzc2FnZSB0aGF0IG1heSBiZSBzZW50IG9uIHRoZSBsYXJnZXN0IEFy Z28gcmluZy4gKi8KKyNkZWZpbmUgTUFYX0FSR09fTUVTU0FHRV9TSVpFICgoWEVOX0FSR09fTUFY X1JJTkdfU0laRSkgLSBcCisgICAgICAgIChzaXplb2Yoc3RydWN0IHhlbl9hcmdvX3JpbmdfbWVz c2FnZV9oZWFkZXIpKSAtIFJPVU5EVVBfTUVTU0FHRSgxKSkKKwogREVGSU5FX1hFTl9HVUVTVF9I QU5ETEUoeGVuX2FyZ29fYWRkcl90KTsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdv X2lvdl90KTsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3BhZ2VfZGVzY3JfdCk7 CiBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fYXJnb19yZWdpc3Rlcl9yaW5nX3QpOwogREVG SU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX2FyZ29fcmluZ190KTsKK0RFRklORV9YRU5fR1VFU1Rf SEFORExFKHhlbl9hcmdvX3NlbmRfYWRkcl90KTsKIERFRklORV9YRU5fR1VFU1RfSEFORExFKHhl bl9hcmdvX3VucmVnaXN0ZXJfcmluZ190KTsKIAogLyogWGVuIGNvbW1hbmQgbGluZSBvcHRpb24g dG8gZW5hYmxlIGFyZ28gKi8KQEAgLTI1MCw2ICsyNTcsMTQgQEAgaGFzaF9pbmRleChjb25zdCBz dHJ1Y3QgYXJnb19yaW5nX2lkICppZCkKIH0KIAogc3RhdGljIHZvaWQKK3NpZ25hbF9kb21haW4o c3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBhcmdvX2RwcmludGsoInNpZ25hbGxpbmcgZG9taWQ6 JWRcbiIsIGQtPmRvbWFpbl9pZCk7CisKKyAgICBzZW5kX2d1ZXN0X2dsb2JhbF92aXJxKGQsIFZJ UlFfQVJHT19NRVNTQUdFKTsKK30KKworc3RhdGljIHZvaWQKIHJpbmdfdW5tYXAoc3RydWN0IGFy Z29fcmluZ19pbmZvICpyaW5nX2luZm8pCiB7CiAgICAgdW5zaWduZWQgaW50IGk7CkBAIC0zNDIs NiArMzU3LDQxMyBAQCB1cGRhdGVfdHhfcHRyKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19p bmZvLCB1aW50MzJfdCB0eF9wdHIpCiAgICAgc21wX3dtYigpOwogfQogCitzdGF0aWMgaW50Citt ZW1jcHlfdG9fZ3Vlc3RfcmluZyhzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbywgdWlu dDMyX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqc3JjLCBYRU5f R1VFU1RfSEFORExFKHVpbnQ4X3QpIHNyY19obmQsCisgICAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCBsZW4pCit7CisgICAgdW5zaWduZWQgaW50IG1mbnNfaW5kZXggPSBvZmZzZXQgPj4gUEFH RV9TSElGVDsKKyAgICB2b2lkICpkc3Q7CisgICAgaW50IHJldDsKKyAgICB1bnNpZ25lZCBpbnQg c3JjX29mZnNldCA9IDA7CisKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnJpbmdfaW5mby0+ bG9jaykpOworCisgICAgb2Zmc2V0ICY9IH5QQUdFX01BU0s7CisKKyAgICBpZiAoIChsZW4gPiBY RU5fQVJHT19NQVhfUklOR19TSVpFKSB8fCAob2Zmc2V0ID4gWEVOX0FSR09fTUFYX1JJTkdfU0la RSkgKQorICAgICAgICByZXR1cm4gLUVGQVVMVDsKKworICAgIHdoaWxlICggKG9mZnNldCArIGxl bikgPiBQQUdFX1NJWkUgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGhlYWRfbGVuID0g UEFHRV9TSVpFIC0gb2Zmc2V0OworCisgICAgICAgIHJldCA9IHJpbmdfbWFwX3BhZ2UocmluZ19p bmZvLCBtZm5zX2luZGV4LCAmZHN0KTsKKyAgICAgICAgaWYgKCByZXQgKQorICAgICAgICAgICAg cmV0dXJuIHJldDsKKworICAgICAgICBpZiAoIHNyYyApCisgICAgICAgIHsKKyAgICAgICAgICAg IG1lbWNweShkc3QgKyBvZmZzZXQsIHNyYyArIHNyY19vZmZzZXQsIGhlYWRfbGVuKTsKKyAgICAg ICAgICAgIHNyY19vZmZzZXQgKz0gaGVhZF9sZW47CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor ICAgICAgICB7CisgICAgICAgICAgICByZXQgPSBjb3B5X2Zyb21fZ3Vlc3QoZHN0ICsgb2Zmc2V0 LCBzcmNfaG5kLCBoZWFkX2xlbikgPworICAgICAgICAgICAgICAgICAgICAtRUZBVUxUIDogMDsK KyAgICAgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworCisg ICAgICAgICAgICBndWVzdF9oYW5kbGVfYWRkX29mZnNldChzcmNfaG5kLCBoZWFkX2xlbik7Cisg ICAgICAgIH0KKworICAgICAgICBtZm5zX2luZGV4Kys7CisgICAgICAgIGxlbiAtPSBoZWFkX2xl bjsKKyAgICAgICAgb2Zmc2V0ID0gMDsKKyAgICB9CisKKyAgICByZXQgPSByaW5nX21hcF9wYWdl KHJpbmdfaW5mbywgbWZuc19pbmRleCwgJmRzdCk7CisgICAgaWYgKCByZXQgKQorICAgIHsKKyAg ICAgICAgYXJnb19kcHJpbnRrKCJhcmdvOiByaW5nICh2bSV1OiV4IHZtJWQpICVwIGF0dGVtcHRl ZCB0byBtYXAgcGFnZSIKKyAgICAgICAgICAgICAgICAgICAgICIgJWQgb2YgJWRcbiIsIHJpbmdf aW5mby0+aWQuZG9tYWluX2lkLCByaW5nX2luZm8tPmlkLnBvcnQsCisgICAgICAgICAgICAgICAg ICAgICByaW5nX2luZm8tPmlkLnBhcnRuZXJfaWQsIHJpbmdfaW5mbywgbWZuc19pbmRleCwKKyAg ICAgICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+bm1mbnMpOworICAgICAgICByZXR1cm4gcmV0 OworICAgIH0KKworICAgIGlmICggc3JjICkKKyAgICAgICAgbWVtY3B5KGRzdCArIG9mZnNldCwg c3JjICsgc3JjX29mZnNldCwgbGVuKTsKKyAgICBlbHNlCisgICAgICAgIHJldCA9IGNvcHlfZnJv bV9ndWVzdChkc3QgKyBvZmZzZXQsIHNyY19obmQsIGxlbikgPyAtRUZBVUxUIDogMDsKKworICAg IHJldHVybiByZXQ7Cit9CisKKy8qCisgKiBVc2UgdGhpcyB3aXRoIGNhdXRpb246IHJ4X3B0ciBp cyB1bmRlciBndWVzdCBjb250cm9sIGFuZCBtYXkgYmUgYm9ndXMuCisgKiBTZWUgZ2V0X3Nhbml0 aXplZF9yaW5nIGZvciBhIHNhZmVyIGFsdGVybmF0aXZlLgorICovCitzdGF0aWMgaW50CitnZXRf cnhfcHRyKHN0cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvLCB1aW50MzJfdCAqcnhfcHRy KQoreworICAgIHZvaWQgKnNyYzsKKyAgICB4ZW5fYXJnb19yaW5nX3QgKnJpbmdwOworICAgIGlu dCByZXQ7CisKKyAgICBBU1NFUlQoc3Bpbl9pc19sb2NrZWQoJnJpbmdfaW5mby0+bG9jaykpOwor CisgICAgaWYgKCAhcmluZ19pbmZvLT5ubWZucyB8fCByaW5nX2luZm8tPm5tZm5zIDwgcmluZ19p bmZvLT5ucGFnZSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgcmV0ID0gcmluZ19t YXBfcGFnZShyaW5nX2luZm8sIDAsICZzcmMpOworICAgIGlmICggcmV0ICkKKyAgICAgICAgcmV0 dXJuIHJldDsKKworICAgIHJpbmdwID0gKHhlbl9hcmdvX3JpbmdfdCAqKXNyYzsKKworICAgICpy eF9wdHIgPSByZWFkX2F0b21pYygmcmluZ3AtPnJ4X3B0cik7CisKKyAgICByZXR1cm4gMDsKK30K KworLyoKKyAqIGdldF9zYW5pdGl6ZWRfcmluZyBjcmVhdGVzIGEgbW9kaWZpZWQgY29weSBvZiB0 aGUgcmluZyBwb2ludGVycyB3aGVyZQorICogdGhlIHJ4X3B0ciBpcyByb3VuZGVkIHVwIHRvIGVu c3VyZSBpdCBpcyBhbGlnbmVkLCBhbmQgdGhlbiByaW5nCisgKiB3cmFwIGlzIGhhbmRsZWQuIFNp bXBsaWZpZXMgc2FmZSB1c2Ugb2YgdGhlIHJ4X3B0ciBmb3IgYXZhaWxhYmxlCisgKiBzcGFjZSBj YWxjdWxhdGlvbi4KKyAqLworc3RhdGljIGludAorZ2V0X3Nhbml0aXplZF9yaW5nKHhlbl9hcmdv X3JpbmdfdCAqcmluZywgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5nX2luZm8pCit7CisgICAg dWludDMyX3QgcnhfcHRyOworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBnZXRfcnhfcHRyKHJp bmdfaW5mbywgJnJ4X3B0cik7CisgICAgaWYgKCByZXQgKQorICAgICAgICByZXR1cm4gcmV0Owor CisgICAgcmluZy0+dHhfcHRyID0gcmluZ19pbmZvLT50eF9wdHI7CisKKyAgICByeF9wdHIgPSBS T1VORFVQX01FU1NBR0UocnhfcHRyKTsKKyAgICBpZiAoIHJ4X3B0ciA+PSByaW5nX2luZm8tPmxl biApCisgICAgICAgIHJ4X3B0ciA9IDA7CisKKyAgICByaW5nLT5yeF9wdHIgPSByeF9wdHI7Cisg ICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBpb3ZfY291bnQgcmV0dXJucyBpdHMgY291bnQgb24g c3VjY2VzcyB2aWEgYW4gb3V0IHZhcmlhYmxlIHRvIGF2b2lkCisgKiBwb3RlbnRpYWwgZm9yIGEg bmVnYXRpdmUgcmV0dXJuIHZhbHVlIHRvIGJlIHVzZWQgaW5jb3JyZWN0bHkKKyAqIChlZy4gY29l cmNlZCBpbnRvIGFuIHVuc2lnbmVkIHZhcmlhYmxlIHJlc3VsdGluZyBpbiBhIGxhcmdlIGluY29y cmVjdCB2YWx1ZSkKKyAqLworc3RhdGljIGludAoraW92X2NvdW50KGNvbnN0IHhlbl9hcmdvX2lv dl90ICpwaW92LCB1bnNpZ25lZCBsb25nIG5pb3YsIHVpbnQzMl90ICpjb3VudCkKK3sKKyAgICB1 aW50MzJfdCBzdW1faW92X2xlbnMgPSAwOworCisgICAgaWYgKCBuaW92ID4gWEVOX0FSR09fTUFY SU9WICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICB3aGlsZSAoIG5pb3YtLSApCisg ICAgeworICAgICAgICAvKiB2YWxpZCBpb3ZzIG11c3QgaGF2ZSB0aGUgcGFkZGluZyBmaWVsZCBz ZXQgdG8gemVybyAqLworICAgICAgICBpZiAoIHBpb3YtPnBhZCApCisgICAgICAgIHsKKyAgICAg ICAgICAgIGFyZ29fZHByaW50aygiaW52YWxpZCBpb3Y6IHBhZGRpbmcgaXMgbm90IHplcm9cbiIp OworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKworICAgICAgICAvKiBj aGVjayBlYWNoIHRvIHByb3RlY3Qgc3VtIGFnYWluc3QgaW50ZWdlciBvdmVyZmxvdyAqLworICAg ICAgICBpZiAoIHBpb3YtPmlvdl9sZW4gPiBYRU5fQVJHT19NQVhfUklOR19TSVpFICkKKyAgICAg ICAgeworICAgICAgICAgICAgYXJnb19kcHJpbnRrKCJpbnZhbGlkIGlvdl9sZW46IHRvbyBiaWcg KCV1KT4lbGx1XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBpb3YtPmlvdl9sZW4sIFhF Tl9BUkdPX01BWF9SSU5HX1NJWkUpOworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAg ICAgIH0KKworICAgICAgICBzdW1faW92X2xlbnMgKz0gcGlvdi0+aW92X2xlbjsKKworICAgICAg ICAvKgorICAgICAgICAgKiBBZ2FpbiBwcm90ZWN0IHN1bSBmcm9tIGludGVnZXIgb3ZlcmZsb3cK KyAgICAgICAgICogYW5kIGVuc3VyZSB0b3RhbCBtc2cgc2l6ZSB3aWxsIGJlIHdpdGhpbiBib3Vu ZHMuCisgICAgICAgICAqLworICAgICAgICBpZiAoIHN1bV9pb3ZfbGVucyA+IE1BWF9BUkdPX01F U1NBR0VfU0laRSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGFyZ29fZHByaW50aygiaW52YWxp ZCBpb3Ygc2VyaWVzOiB0b3RhbCBtZXNzYWdlIHRvbyBiaWdcbiIpOworICAgICAgICAgICAgcmV0 dXJuIC1FTVNHU0laRTsKKyAgICAgICAgfQorCisgICAgICAgIHBpb3YrKzsKKyAgICB9CisKKyAg ICAqY291bnQgPSBzdW1faW92X2xlbnM7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGlu dAorcmluZ2J1Zl9pbnNlcnQoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGFyZ29fcmluZ19pbmZv ICpyaW5nX2luZm8sCisgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYXJnb19yaW5nX2lkICpz cmNfaWQsCisgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9hcmdvX2lv dl90KSBpb3ZzX2huZCwKKyAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbmlvdiwgdWludDMy X3QgbWVzc2FnZV90eXBlLAorICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqb3V0X2xlbikK K3sKKyAgICB4ZW5fYXJnb19yaW5nX3QgcmluZzsKKyAgICBzdHJ1Y3QgeGVuX2FyZ29fcmluZ19t ZXNzYWdlX2hlYWRlciBtaCA9IHsgMCB9OworICAgIGludDMyX3Qgc3A7CisgICAgaW50MzJfdCBy ZXQ7CisgICAgdWludDMyX3QgbGVuID0gMDsKKyAgICB4ZW5fYXJnb19pb3ZfdCBpb3ZzW1hFTl9B UkdPX01BWElPVl07CisgICAgeGVuX2FyZ29faW92X3QgKnBpb3Y7CisgICAgWEVOX0dVRVNUX0hB TkRMRSh1aW50OF90KSBOVUxMX2huZCA9CisgICAgICAgZ3Vlc3RfaGFuZGxlX2Zyb21fcGFyYW0o Z3Vlc3RfaGFuZGxlX2Zyb21fcHRyKE5VTEwsIHVpbnQ4X3QpLCB1aW50OF90KTsKKworICAgIEFT U0VSVChzcGluX2lzX2xvY2tlZCgmcmluZ19pbmZvLT5sb2NrKSk7CisKKyAgICByZXQgPSBfX2Nv cHlfZnJvbV9ndWVzdChpb3ZzLCBpb3ZzX2huZCwgbmlvdikgPyAtRUZBVUxUIDogMDsKKyAgICBp ZiAoIHJldCApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgLyoKKyAgICAgKiBPYnRhaW4gdGhl IHRvdGFsIHNpemUgb2YgZGF0YSB0byB0cmFuc21pdCAtLSBzZXRzIHRoZSAnbGVuJyB2YXJpYWJs ZQorICAgICAqIC0tIGFuZCBzYW5pdHkgY2hlY2sgdGhhdCB0aGUgaW92cyBjb25mb3JtIHRvIHNp emUgYW5kIG51bWJlciBsaW1pdHMuCisgICAgICogRW5mb3JjZWQgYmVsb3c6IG5vIG1vcmUgdGhh biAnbGVuJyBieXRlcyBvZiBndWVzdCBkYXRhCisgICAgICogKHBsdXMgdGhlIG1lc3NhZ2UgaGVh ZGVyKSB3aWxsIGJlIHNlbnQgaW4gdGhpcyBvcGVyYXRpb24uCisgICAgICovCisgICAgcmV0ID0g aW92X2NvdW50KGlvdnMsIG5pb3YsICZsZW4pOworICAgIGlmICggcmV0ICkKKyAgICAgICAgZ290 byBvdXQ7CisKKyAgICAvKgorICAgICAqIFNpemUgYm91bmRzIGNoZWNrIGFnYWluc3QgcmluZyBz aXplIGFuZCBzdGF0aWMgbWF4aW11bSBtZXNzYWdlIGxpbWl0LgorICAgICAqIFRoZSBtZXNzYWdl IG11c3Qgbm90IGZpbGwgdGhlIHJpbmc7IHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIHNsb3QK KyAgICAgKiByZW1haW5pbmcgc28gd2UgY2FuIGRpc3Rpbmd1aXNoIGEgZnVsbCByaW5nIGZyb20g YW4gZW1wdHkgb25lLgorICAgICAqLworICAgIGlmICggKChST1VORFVQX01FU1NBR0UobGVuKSAr CisgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHhlbl9hcmdvX3JpbmdfbWVzc2FnZV9oZWFkZXIp KSA+PSByaW5nX2luZm8tPmxlbikgfHwKKyAgICAgICAgIChsZW4gPiBNQVhfQVJHT19NRVNTQUdF X1NJWkUpICkKKyAgICB7CisgICAgICAgIHJldCA9IC1FTVNHU0laRTsKKyAgICAgICAgZ290byBv dXQ7CisgICAgfQorCisgICAgcmV0ID0gZ2V0X3Nhbml0aXplZF9yaW5nKCZyaW5nLCByaW5nX2lu Zm8pOworICAgIGlmICggcmV0ICkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBhcmdvX2Rwcmlu dGsoInJpbmcudHhfcHRyPSVkIHJpbmcucnhfcHRyPSVkIHJpbmcgbGVuPSVkIgorICAgICAgICAg ICAgICAgICAiIHJpbmdfaW5mby0+dHhfcHRyPSVkXG4iLAorICAgICAgICAgICAgICAgICByaW5n LnR4X3B0ciwgcmluZy5yeF9wdHIsIHJpbmdfaW5mby0+bGVuLCByaW5nX2luZm8tPnR4X3B0cik7 CisKKyAgICBpZiAoIHJpbmcucnhfcHRyID09IHJpbmcudHhfcHRyICkKKyAgICAgICAgc3AgPSBy aW5nX2luZm8tPmxlbjsKKyAgICBlbHNlCisgICAgeworICAgICAgICBzcCA9IHJpbmcucnhfcHRy IC0gcmluZy50eF9wdHI7CisgICAgICAgIGlmICggc3AgPCAwICkKKyAgICAgICAgICAgIHNwICs9 IHJpbmdfaW5mby0+bGVuOworICAgIH0KKworICAgIC8qCisgICAgICogU2l6ZSBib3VuZHMgY2hl Y2sgYWdhaW5zdCBjdXJyZW50bHkgYXZhaWxhYmxlIHNwYWNlIGluIHRoZSByaW5nLgorICAgICAq IEFnYWluOiB0aGUgbWVzc2FnZSBtdXN0IG5vdCBmaWxsIHRoZSByaW5nIGxlYXZpbmcgbm8gc3Bh Y2UgcmVtYWluaW5nLgorICAgICAqLworICAgIGlmICggKFJPVU5EVVBfTUVTU0FHRShsZW4pICsK KyAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgeGVuX2FyZ29fcmluZ19tZXNzYWdlX2hlYWRlcikp ID49IHNwICkKKyAgICB7CisgICAgICAgIGFyZ29fZHByaW50aygiRUFHQUlOXG4iKTsKKyAgICAg ICAgcmV0ID0gLUVBR0FJTjsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgbWgubGVu ID0gbGVuICsgc2l6ZW9mKHN0cnVjdCB4ZW5fYXJnb19yaW5nX21lc3NhZ2VfaGVhZGVyKTsKKyAg ICBtaC5zb3VyY2UucG9ydCA9IHNyY19pZC0+cG9ydDsKKyAgICBtaC5zb3VyY2UuZG9tYWluX2lk ID0gc3JjX2lkLT5kb21haW5faWQ7CisgICAgbWgubWVzc2FnZV90eXBlID0gbWVzc2FnZV90eXBl OworCisgICAgLyoKKyAgICAgKiBGb3IgdGhpcyBjb3B5IHRvIHRoZSBndWVzdCByaW5nLCB0eF9w dHIgaXMgYWx3YXlzIDE2LWJ5dGUgYWxpZ25lZAorICAgICAqIGFuZCB0aGUgbWVzc2FnZSBoZWFk ZXIgaXMgMTYgYnl0ZXMgbG9uZy4KKyAgICAgKi8KKyAgICBCVUlMRF9CVUdfT04oCisgICAgICAg IHNpemVvZihzdHJ1Y3QgeGVuX2FyZ29fcmluZ19tZXNzYWdlX2hlYWRlcikgIT0gUk9VTkRVUF9N RVNTQUdFKDEpKTsKKworICAgIC8qCisgICAgICogRmlyc3QgZGF0YSB3cml0ZSBpbnRvIHRoZSBk ZXN0aW5hdGlvbiByaW5nOiBmaXhlZCBzaXplLCBtZXNzYWdlIGhlYWRlci4KKyAgICAgKiBUaGlz IGNhbm5vdCBvdmVycnVuIGJlY2F1c2UgdGhlIGF2YWlsYWJsZSBmcmVlIHNwYWNlICh2YWx1ZSBp biAnc3AnKQorICAgICAqIGlzIGNoZWNrZWQgYWJvdmUgYW5kIG11c3QgYmUgYXQgbGVhc3QgdGhp cyBzaXplLgorICAgICAqLworICAgIHJldCA9IG1lbWNweV90b19ndWVzdF9yaW5nKHJpbmdfaW5m bywgcmluZy50eF9wdHIgKyBzaXplb2YoeGVuX2FyZ29fcmluZ190KSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmbWgsIE5VTExfaG5kLCBzaXplb2YobWgpKTsKKyAgICBpZiAoIHJl dCApCisgICAgeworICAgICAgICBncHJpbnRrKFhFTkxPR19FUlIsCisgICAgICAgICAgICAgICAg ImFyZ286IGZhaWxlZCB0byB3cml0ZSBtZXNzYWdlIGhlYWRlciB0byByaW5nICh2bSV1OiV4IHZt JWQpXG4iLAorICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQuZG9tYWluX2lkLCByaW5nX2lu Zm8tPmlkLnBvcnQsCisgICAgICAgICAgICAgICAgcmluZ19pbmZvLT5pZC5wYXJ0bmVyX2lkKTsK KworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByaW5nLnR4X3B0ciArPSBzaXplb2Yo bWgpOworICAgIGlmICggcmluZy50eF9wdHIgPT0gcmluZ19pbmZvLT5sZW4gKQorICAgICAgICBy aW5nLnR4X3B0ciA9IDA7CisKKyAgICBwaW92ID0gaW92czsKKworICAgIHdoaWxlICggbmlvdi0t ICkKKyAgICB7CisgICAgICAgIFhFTl9HVUVTVF9IQU5ETEVfNjQodWludDhfdCkgYnVmX2huZCA9 IHBpb3YtPmlvdl9obmQ7CisgICAgICAgIHVpbnQzMl90IGlvdl9sZW4gPSBwaW92LT5pb3ZfbGVu OworCisgICAgICAgIC8qIElmIG5vIGRhdGEgaXMgcHJvdmlkZWQgaW4gdGhpcyBpb3YsIG1vYW4g YW5kIHNraXAgb24gdG8gdGhlIG5leHQgKi8KKyAgICAgICAgaWYgKCAhaW92X2xlbiApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGdwcmludGsoWEVOTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAg ICAgImFyZ286IG5vIGRhdGEgaW92X2xlbj0wIGlvdl9obmQ9JXAgcmluZyAodm0ldToleCB2bSVk KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgYnVmX2huZC5wLCByaW5nX2luZm8tPmlkLmRvbWFp bl9pZCwgcmluZ19pbmZvLT5pZC5wb3J0LAorICAgICAgICAgICAgICAgICAgICByaW5nX2luZm8t PmlkLnBhcnRuZXJfaWQpOworCisgICAgICAgICAgICBwaW92Kys7CisgICAgICAgICAgICBjb250 aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggdW5saWtlbHkoIWd1ZXN0X2hhbmRsZV9v a2F5KGJ1Zl9obmQsIGlvdl9sZW4pKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdwcmludGso WEVOTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgImFyZ286IGJhZCBpb3YgaGFuZGxlIFsl cCwgJSJQUkl4MzIiXSAodm0ldToleCB2bSVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgYnVm X2huZC5wLCBpb3ZfbGVuLAorICAgICAgICAgICAgICAgICAgICByaW5nX2luZm8tPmlkLmRvbWFp bl9pZCwgcmluZ19pbmZvLT5pZC5wb3J0LAorICAgICAgICAgICAgICAgICAgICByaW5nX2luZm8t PmlkLnBhcnRuZXJfaWQpOworCisgICAgICAgICAgICByZXQgPSAtRUZBVUxUOworICAgICAgICAg ICAgZ290byBvdXQ7CisgICAgICAgIH0KKworICAgICAgICBzcCA9IHJpbmdfaW5mby0+bGVuIC0g cmluZy50eF9wdHI7CisKKyAgICAgICAgLyogQ2hlY2s6IGlvdiBkYXRhIHNpemUgdmVyc3VzIGZy ZWUgc3BhY2UgYXQgdGhlIHRhaWwgb2YgdGhlIHJpbmcgKi8KKyAgICAgICAgaWYgKCBpb3ZfbGVu ID4gc3AgKQorICAgICAgICB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogU2Vjb25k IHBvc3NpYmxlIGRhdGEgd3JpdGU6IHJpbmctdGFpbC13cmFwLXdyaXRlLgorICAgICAgICAgICAg ICogUG9wdWxhdGUgdGhlIHJpbmcgdGFpbCBhbmQgdXBkYXRlIHRoZSBpbnRlcm5hbCB0eF9wdHIg dG8gaGFuZGxlCisgICAgICAgICAgICAgKiB3cmFwcGluZyBhdCB0aGUgZW5kIG9mIHJpbmcuCisg ICAgICAgICAgICAgKiBTaXplIG9mIGRhdGEgd3JpdHRlbiBoZXJlOiBzcAorICAgICAgICAgICAg ICogd2hpY2ggaXMgdGhlIGV4YWN0IGZ1bGwgYW1vdW50IG9mIGZyZWUgc3BhY2UgYXZhaWxhYmxl IGF0IHRoZQorICAgICAgICAgICAgICogdGFpbCBvZiB0aGUgcmluZywgc28gdGhpcyBjYW5ub3Qg b3ZlcnJ1bi4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcmV0ID0gbWVtY3B5X3RvX2d1 ZXN0X3JpbmcocmluZ19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmluZy50eF9wdHIgKyBzaXplb2YoeGVuX2FyZ29fcmluZ190KSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGJ1Zl9obmQsIHNwKTsKKyAgICAgICAgICAg IGlmICggcmV0ICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBncHJpbnRrKFhFTkxP R19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAiYXJnbzogZmFpbGVkIHRvIGNvcHkgeyVw LCAlIlBSSXgzMiJ9ICh2bSV1OiV4IHZtJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAg YnVmX2huZC5wLCBzcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJpbmdfaW5mby0+aWQuZG9t YWluX2lkLCByaW5nX2luZm8tPmlkLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICByaW5n X2luZm8tPmlkLnBhcnRuZXJfaWQpOworCisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgIHJpbmcudHhfcHRyID0gMDsKKyAgICAgICAgICAgIGlv dl9sZW4gLT0gc3A7CisgICAgICAgICAgICBndWVzdF9oYW5kbGVfYWRkX29mZnNldChidWZfaG5k LCBzcCk7CisKKyAgICAgICAgICAgIEFTU0VSVChpb3ZfbGVuIDw9IHJpbmdfaW5mby0+bGVuKTsK KyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFRoaXJkIHBvc3NpYmxlIGRhdGEg d3JpdGU6IGFsbCBkYXRhIHJlbWFpbmluZyBmb3IgdGhpcyBpb3YuCisgICAgICAgICAqIFNpemUg b2YgZGF0YSB3cml0dGVuIGhlcmU6IGlvdl9sZW4KKyAgICAgICAgICoKKyAgICAgICAgICogQ2Fz ZSAxOiBpZiB0aGUgcmluZy10YWlsLXdyYXAtd3JpdGUgYWJvdmUgd2FzIHBlcmZvcm1lZCwgdGhl bgorICAgICAgICAgKiAgICAgICAgIGlvdl9sZW4gaGFzIGJlZW4gZGVjcmVhc2VkIGJ5ICdzcCcg YW5kIHJpbmcudHhfcHRyIGlzIHplcm8uCisgICAgICAgICAqCisgICAgICAgICAqICAgIFdlIGtu b3cgZnJvbSBjaGVja2luZyB0aGUgcmVzdWx0IG9mIGlvdl9jb3VudDoKKyAgICAgICAgICogICAg ICBsZW4gKyBzaXplb2YobWVzc2FnZV9oZWFkZXIpIDw9IHJpbmdfaW5mby0+bGVuCisgICAgICAg ICAqICAgIFdlIGFsc28ga25vdyB0aGF0IGxlbiBpcyB0aGUgdG90YWwgb2Ygc3VtbWluZyBhbGwg aW92X2xlbnMsIHNvOgorICAgICAgICAgKiAgICAgICBpb3ZfbGVuIDw9IGxlbgorICAgICAgICAg KiAgICBzbyBieSB0cmFuc2l0aXZpdHk6CisgICAgICAgICAqICAgICAgIGlvdl9sZW4gPD0gbGVu IDw9IChyaW5nX2luZm8tPmxlbiAtIHNpemVvZihtc2doZWFkZXIpKQorICAgICAgICAgKiAgICBh bmQgdGhlcmVmb3JlOgorICAgICAgICAgKiAgICAgICAoaW92X2xlbiArIHNpemVvZihtc2doZWFk ZXIpIDw9IHJpbmdfaW5mby0+bGVuKSAmJgorICAgICAgICAgKiAgICAgICAocmluZy50eF9wdHIg PT0gMCkKKyAgICAgICAgICogICAgc28gdGhpcyB3cml0ZSBjYW5ub3Qgb3ZlcnJ1biBoZXJlLgor ICAgICAgICAgKgorICAgICAgICAgKiBDYXNlIDI6IHJpbmctdGFpbC13cmFwLXdyaXRlIGFib3Zl IHdhcyBub3QgcGVyZm9ybWVkCisgICAgICAgICAqICAgIC0+IHNvIGlvdl9sZW4gaXMgdGhlIGd1 ZXN0LXN1cHBsaWVkIHZhbHVlIGFuZDogKGlvdl9sZW4gPD0gc3ApCisgICAgICAgICAqICAgIGll LiBsZXNzIHRoYW4gYXZhaWxhYmxlIHNwYWNlIGF0IHRoZSB0YWlsIG9mIHRoZSByaW5nOgorICAg ICAgICAgKiAgICAgICAgc28gdGhpcyB3cml0ZSBjYW5ub3Qgb3ZlcnJ1bi4KKyAgICAgICAgICov CisgICAgICAgIHJldCA9IG1lbWNweV90b19ndWVzdF9yaW5nKHJpbmdfaW5mbywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmluZy50eF9wdHIgKyBzaXplb2YoeGVuX2FyZ29f cmluZ190KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgYnVmX2hu ZCwgaW92X2xlbik7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgeworICAgICAgICAgICAg Z3ByaW50ayhYRU5MT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAiYXJnbzogZmFpbGVkIHRv IGNvcHkgWyVwLCAlIlBSSXgzMiJdICh2bSV1OiV4IHZtJWQpXG4iLAorICAgICAgICAgICAgICAg ICAgICBidWZfaG5kLnAsIGlvdl9sZW4sIHJpbmdfaW5mby0+aWQuZG9tYWluX2lkLAorICAgICAg ICAgICAgICAgICAgICByaW5nX2luZm8tPmlkLnBvcnQsIHJpbmdfaW5mby0+aWQucGFydG5lcl9p ZCk7CisKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgcmluZy50 eF9wdHIgKz0gaW92X2xlbjsKKworICAgICAgICBpZiAoIHJpbmcudHhfcHRyID09IHJpbmdfaW5m by0+bGVuICkKKyAgICAgICAgICAgIHJpbmcudHhfcHRyID0gMDsKKworICAgICAgICBwaW92Kys7 CisgICAgfQorCisgICAgcmluZy50eF9wdHIgPSBST1VORFVQX01FU1NBR0UocmluZy50eF9wdHIp OworCisgICAgaWYgKCByaW5nLnR4X3B0ciA+PSByaW5nX2luZm8tPmxlbiApCisgICAgICAgIHJp bmcudHhfcHRyIC09IHJpbmdfaW5mby0+bGVuOworCisgICAgdXBkYXRlX3R4X3B0cihyaW5nX2lu Zm8sIHJpbmcudHhfcHRyKTsKKworIG91dDoKKyAgICAvKgorICAgICAqIEF0IHRoaXMgcG9pbnQg aXQgaXMgcG9zc2libGUgdG8gdW5tYXAgdGhlIHJpbmdfaW5mbywgaWU6CisgICAgICogICByaW5n X3VubWFwKHJpbmdfaW5mbyk7CisgICAgICogYnV0IHBlcmZvcm1hbmNlIHNob3VsZCBiZSBpbXBy b3ZlZCBieSBub3QgZG9pbmcgc28sIGFuZCByZXRhaW5pbmcKKyAgICAgKiB0aGUgbWFwcGluZy4K KyAgICAgKiBBbiBYU00gcG9saWN5IGNvbnRyb2wgb3ZlciBsZXZlbCBvZiBjb25maWRlbnRpYWxp dHkgcmVxdWlyZWQKKyAgICAgKiB2ZXJzdXMgcGVyZm9ybWFuY2UgY29zdCBjb3VsZCBiZSBhZGRl ZCB0byBkZWNpZGUgdGhhdCBoZXJlLgorICAgICAqIFNlZSB0aGUgc2ltaWxhciBjb21tZW50IGlu IHJpbmdfbWFwX3BhZ2UgcmU6IHdyaXRlLW9ubHkgbWFwcGluZ3MuCisgICAgICovCisKKyAgICBp ZiAoICFyZXQgKQorICAgICAgICAqb3V0X2xlbiA9IGxlbjsKKworICAgIHJldHVybiByZXQ7Cit9 CisKIHN0YXRpYyB2b2lkCiB3aWxkY2FyZF9wZW5kaW5nX2xpc3RfcmVtb3ZlKGRvbWlkX3QgZG9t YWluX2lkLCBzdHJ1Y3QgcGVuZGluZ19lbnQgKmVudCkKIHsKQEAgLTM1OSw2ICs3ODEsMjIgQEAg d2lsZGNhcmRfcGVuZGluZ19saXN0X3JlbW92ZShkb21pZF90IGRvbWFpbl9pZCwgc3RydWN0IHBl bmRpbmdfZW50ICplbnQpCiB9CiAKIHN0YXRpYyB2b2lkCit3aWxkY2FyZF9wZW5kaW5nX2xpc3Rf aW5zZXJ0KGRvbWlkX3QgZG9tYWluX2lkLCBzdHJ1Y3QgcGVuZGluZ19lbnQgKmVudCkKK3sKKyAg ICBzdHJ1Y3QgZG9tYWluICpkID0gZ2V0X2RvbWFpbl9ieV9pZChkb21haW5faWQpOworICAgIGlm ICggIWQgKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIGQtPmFyZ28gKQorICAgIHsKKyAg ICAgICAgc3Bpbl9sb2NrKCZkLT5hcmdvLT53aWxkY2FyZF9sb2NrKTsKKyAgICAgICAgaGxpc3Rf YWRkX2hlYWQoJmVudC0+d2lsZGNhcmRfbm9kZSwgJmQtPmFyZ28tPndpbGRjYXJkX3BlbmRfbGlz dCk7CisgICAgICAgIHNwaW5fdW5sb2NrKCZkLT5hcmdvLT53aWxkY2FyZF9sb2NrKTsKKyAgICB9 CisgICAgcHV0X2RvbWFpbihkKTsKK30KKworc3RhdGljIHZvaWQKIHBlbmRpbmdfcmVtb3ZlX2Fs bChzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKIHsKICAgICBzdHJ1Y3QgaGxpc3Rf bm9kZSAqbm9kZSwgKm5leHQ7CkBAIC0zNzQsNiArODEyLDY3IEBAIHBlbmRpbmdfcmVtb3ZlX2Fs bChzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbykKICAgICByaW5nX2luZm8tPm5wZW5k aW5nID0gMDsKIH0KIAorc3RhdGljIGludAorcGVuZGluZ19xdWV1ZShzdHJ1Y3QgYXJnb19yaW5n X2luZm8gKnJpbmdfaW5mbywgZG9taWRfdCBzcmNfaWQsCisgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBsZW4pCit7CisgICAgc3RydWN0IHBlbmRpbmdfZW50ICplbnQ7CisKKyAgICBBU1NFUlQo c3Bpbl9pc19sb2NrZWQoJnJpbmdfaW5mby0+bG9jaykpOworCisgICAgaWYgKCByaW5nX2luZm8t Pm5wZW5kaW5nID49IE1BWF9QRU5ESU5HX1BFUl9SSU5HICkKKyAgICAgICAgcmV0dXJuIC1FTk9T UEM7CisKKyAgICBlbnQgPSB4bWFsbG9jKHN0cnVjdCBwZW5kaW5nX2VudCk7CisKKyAgICBpZiAo ICFlbnQgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKworICAgIGVudC0+bGVuID0gbGVuOwor ICAgIGVudC0+ZG9tYWluX2lkID0gc3JjX2lkOworICAgIGVudC0+cmluZ19pbmZvID0gcmluZ19p bmZvOworCisgICAgaWYgKCByaW5nX2luZm8tPmlkLnBhcnRuZXJfaWQgPT0gWEVOX0FSR09fRE9N SURfQU5ZICkKKyAgICAgICAgd2lsZGNhcmRfcGVuZGluZ19saXN0X2luc2VydChzcmNfaWQsIGVu dCk7CisgICAgaGxpc3RfYWRkX2hlYWQoJmVudC0+bm9kZSwgJnJpbmdfaW5mby0+cGVuZGluZyk7 CisgICAgcmluZ19pbmZvLT5ucGVuZGluZysrOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQKK3BlbmRpbmdfcmVxdWV1ZShzdHJ1Y3QgYXJnb19yaW5nX2luZm8gKnJpbmdfaW5mbywg ZG9taWRfdCBzcmNfaWQsCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxlbikKK3sKKyAg ICBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZTsKKyAgICBzdHJ1Y3QgcGVuZGluZ19lbnQgKmVudDsK KworICAgIEFTU0VSVChzcGluX2lzX2xvY2tlZCgmcmluZ19pbmZvLT5sb2NrKSk7CisKKyAgICBo bGlzdF9mb3JfZWFjaF9lbnRyeShlbnQsIG5vZGUsICZyaW5nX2luZm8tPnBlbmRpbmcsIG5vZGUp CisgICAgeworICAgICAgICBpZiAoIGVudC0+ZG9tYWluX2lkID09IHNyY19pZCApCisgICAgICAg IHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBSZXVzZSBhbiBleGlzdGluZyBxdWV1 ZSBlbnRyeSBmb3IgYSBub3RpZmljYXRpb24gcmF0aGVyIHRoYW4gYWRkCisgICAgICAgICAgICAg KiBhbm90aGVyLiBJZiB0aGUgZXhpc3RpbmcgZW50cnkgaXMgd2FpdGluZyBmb3IgYSBzbWFsbGVy IHNpemUgdGhhbgorICAgICAgICAgICAgICogdGhlIGN1cnJlbnQgbWVzc2FnZSB0aGVuIGFkanVz dCB0aGUgcmVjb3JkIHRvIHdhaXQgZm9yIHRoZQorICAgICAgICAgICAgICogY3VycmVudCAobGFy Z2VyKSBzaXplIHRvIGJlIGF2YWlsYWJsZSBiZWZvcmUgdHJpZ2dlcmluZyBhCisgICAgICAgICAg ICAgKiBub3RpZmljYXRpb24uCisgICAgICAgICAgICAgKiBUaGlzIGFzc2lzdHMgdGhlIHdhaXRp bmcgc2VuZGVyIGJ5IGVuc3VyaW5nIHRoYXQgd2hlbmV2ZXIgYQorICAgICAgICAgICAgICogbm90 aWZpY2F0aW9uIGlzIHRyaWdnZXJlZCwgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZSBhdmFpbGFi bGUKKyAgICAgICAgICAgICAqIGZvciAoYXQgbGVhc3QpIGFueSBvbmUgb2YgdGhlIG1lc3NhZ2Vz IGF3YWl0aW5nIHRyYW5zbWlzc2lvbi4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYg KCBlbnQtPmxlbiA8IGxlbiApCisgICAgICAgICAgICAgICAgZW50LT5sZW4gPSBsZW47CisKKyAg ICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHBlbmRp bmdfcXVldWUocmluZ19pbmZvLCBzcmNfaWQsIGxlbik7Cit9CisKIHN0YXRpYyB2b2lkCiB3aWxk Y2FyZF9yaW5nc19wZW5kaW5nX3JlbW92ZShzdHJ1Y3QgZG9tYWluICpkKQogewpAQCAtNjY3LDYg KzExNjYsMjggQEAgcmluZ19maW5kX2luZm8oY29uc3Qgc3RydWN0IGRvbWFpbiAqZCwgY29uc3Qg c3RydWN0IGFyZ29fcmluZ19pZCAqaWQpCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBz dHJ1Y3QgYXJnb19yaW5nX2luZm8gKgorcmluZ19maW5kX2luZm9fYnlfbWF0Y2goY29uc3Qgc3Ry dWN0IGRvbWFpbiAqZCwgdWludDMyX3QgcG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRv bWlkX3QgcGFydG5lcl9pZCkKK3sKKyAgICBzdHJ1Y3QgYXJnb19yaW5nX2lkIGlkOworICAgIHN0 cnVjdCBhcmdvX3JpbmdfaW5mbyAqcmluZ19pbmZvOworCisgICAgQVNTRVJUKHJ3X2lzX2xvY2tl ZCgmZC0+YXJnby0+bG9jaykpOworCisgICAgaWQucG9ydCA9IHBvcnQ7CisgICAgaWQuZG9tYWlu X2lkID0gZC0+ZG9tYWluX2lkOworICAgIGlkLnBhcnRuZXJfaWQgPSBwYXJ0bmVyX2lkOworCisg ICAgcmluZ19pbmZvID0gcmluZ19maW5kX2luZm8oZCwgJmlkKTsKKyAgICBpZiAoIHJpbmdfaW5m byApCisgICAgICAgIHJldHVybiByaW5nX2luZm87CisKKyAgICBpZC5wYXJ0bmVyX2lkID0gWEVO X0FSR09fRE9NSURfQU5ZOworCisgICAgcmV0dXJuIHJpbmdfZmluZF9pbmZvKGQsICZpZCk7Cit9 CisKIHN0YXRpYyBzdHJ1Y3QgYXJnb19zZW5kX2luZm8gKgogc2VuZF9maW5kX2luZm8oY29uc3Qg c3RydWN0IGRvbWFpbiAqZCwgY29uc3Qgc3RydWN0IGFyZ29fcmluZ19pZCAqaWQpCiB7CkBAIC0x MDA1LDYgKzE1MjYsOTUgQEAgcmVnaXN0ZXJfcmluZyhzdHJ1Y3QgZG9tYWluICpjdXJyZCwKICAg ICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgbG9uZworc2VuZHYoc3RydWN0IGRvbWFpbiAqc3Jj X2QsIGNvbnN0IHhlbl9hcmdvX2FkZHJfdCAqc3JjX2FkZHIsCisgICAgICBjb25zdCB4ZW5fYXJn b19hZGRyX3QgKmRzdF9hZGRyLAorICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh4ZW5fYXJn b19pb3ZfdCkgaW92c19obmQsIHVuc2lnbmVkIGxvbmcgbmlvdiwKKyAgICAgIHVpbnQzMl90IG1l c3NhZ2VfdHlwZSkKK3sKKyAgICBzdHJ1Y3QgZG9tYWluICpkc3RfZCA9IE5VTEw7CisgICAgc3Ry dWN0IGFyZ29fcmluZ19pZCBzcmNfaWQ7CisgICAgc3RydWN0IGFyZ29fcmluZ19pbmZvICpyaW5n X2luZm87CisgICAgaW50IHJldCA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBsZW4gPSAwOworCisg ICAgQVNTRVJUKHNyY19kLT5kb21haW5faWQgPT0gc3JjX2FkZHItPmRvbWFpbl9pZCk7CisKKyAg ICBhcmdvX2RwcmludGsoInNlbmR2OiAoJWQ6JXgpLT4oJWQ6JXgpIG5pb3Y6JWx1IGlvdjolcCB0 eXBlOiV1XG4iLAorICAgICAgICAgICAgICAgICBzcmNfYWRkci0+ZG9tYWluX2lkLCBzcmNfYWRk ci0+cG9ydCwKKyAgICAgICAgICAgICAgICAgZHN0X2FkZHItPmRvbWFpbl9pZCwgZHN0X2FkZHIt PnBvcnQsCisgICAgICAgICAgICAgICAgIG5pb3YsIGlvdnNfaG5kLnAsIG1lc3NhZ2VfdHlwZSk7 CisKKyAgICByZWFkX2xvY2soJmFyZ29fbG9jayk7CisKKyAgICBpZiAoICFzcmNfZC0+YXJnbyAp CisgICAgeworICAgICAgICByZXQgPSAtRU5PREVWOworICAgICAgICBnb3RvIG91dF91bmxvY2s7 CisgICAgfQorCisgICAgc3JjX2lkLnBvcnQgPSBzcmNfYWRkci0+cG9ydDsKKyAgICBzcmNfaWQu ZG9tYWluX2lkID0gc3JjX2QtPmRvbWFpbl9pZDsKKyAgICBzcmNfaWQucGFydG5lcl9pZCA9IGRz dF9hZGRyLT5kb21haW5faWQ7CisKKyAgICBkc3RfZCA9IGdldF9kb21haW5fYnlfaWQoZHN0X2Fk ZHItPmRvbWFpbl9pZCk7CisgICAgaWYgKCAhZHN0X2QgKQorICAgIHsKKyAgICAgICAgYXJnb19k cHJpbnRrKCIhZHN0X2QsIEVTUkNIXG4iKTsKKyAgICAgICAgcmV0ID0gLUVTUkNIOworICAgICAg ICBnb3RvIG91dF91bmxvY2s7CisgICAgfQorCisgICAgaWYgKCAhZHN0X2QtPmFyZ28gKQorICAg IHsKKyAgICAgICAgYXJnb19kcHJpbnRrKCIhZHN0X2QtPmFyZ28sIEVDT05OUkVGVVNFRFxuIik7 CisgICAgICAgIHJldCA9IC1FQ09OTlJFRlVTRUQ7CisgICAgICAgIGdvdG8gb3V0X3VubG9jazsK KyAgICB9CisKKyAgICByZWFkX2xvY2soJmRzdF9kLT5hcmdvLT5sb2NrKTsKKworICAgIHJpbmdf aW5mbyA9IHJpbmdfZmluZF9pbmZvX2J5X21hdGNoKGRzdF9kLCBkc3RfYWRkci0+cG9ydCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfYWRkci0+ZG9tYWluX2lk KTsKKyAgICBpZiAoICFyaW5nX2luZm8gKQorICAgIHsKKyAgICAgICAgZ3ByaW50ayhYRU5MT0df RVJSLAorICAgICAgICAgICAgICAgICJhcmdvOiB2bSV1IGNvbm5lY3Rpb24gcmVmdXNlZCwgc3Jj ICh2bSV1OiV4KSBkc3QgKHZtJXU6JXgpXG4iLAorICAgICAgICAgICAgICAgIGN1cnJlbnQtPmRv bWFpbi0+ZG9tYWluX2lkLCBzcmNfaWQuZG9tYWluX2lkLCBzcmNfaWQucG9ydCwKKyAgICAgICAg ICAgICAgICBkc3RfYWRkci0+ZG9tYWluX2lkLCBkc3RfYWRkci0+cG9ydCk7CisKKyAgICAgICAg cmV0ID0gLUVDT05OUkVGVVNFRDsKKyAgICAgICAgZ290byBvdXRfdW5sb2NrMjsKKyAgICB9CisK KyAgICBzcGluX2xvY2soJnJpbmdfaW5mby0+bG9jayk7CisKKyAgICByZXQgPSByaW5nYnVmX2lu c2VydChkc3RfZCwgcmluZ19pbmZvLCAmc3JjX2lkLCBpb3ZzX2huZCwgbmlvdiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICBtZXNzYWdlX3R5cGUsICZsZW4pOworICAgIGlmICggcmV0ID09IC1F QUdBSU4gKQorICAgIHsKKyAgICAgICAgYXJnb19kcHJpbnRrKCJhcmdvX3JpbmdidWZfc2VuZHYg ZmFpbGVkLCBFQUdBSU5cbiIpOworICAgICAgICAvKiByZXF1ZXVlIHRvIGlzc3VlIGEgbm90aWZp Y2F0aW9uIHdoZW4gc3BhY2UgaXMgdGhlcmUgKi8KKyAgICAgICAgcmV0ID0gcGVuZGluZ19yZXF1 ZXVlKHJpbmdfaW5mbywgc3JjX2FkZHItPmRvbWFpbl9pZCwgbGVuKTsKKyAgICB9CisKKyAgICBz cGluX3VubG9jaygmcmluZ19pbmZvLT5sb2NrKTsKKworICAgIGlmICggcmV0ID49IDAgKQorICAg ICAgICBzaWduYWxfZG9tYWluKGRzdF9kKTsKKworIG91dF91bmxvY2syOgorICAgIHJlYWRfdW5s b2NrKCZkc3RfZC0+YXJnby0+bG9jayk7CisKKyBvdXRfdW5sb2NrOgorICAgIGlmICggZHN0X2Qg KQorICAgICAgICBwdXRfZG9tYWluKGRzdF9kKTsKKworICAgIHJlYWRfdW5sb2NrKCZhcmdvX2xv Y2spOworCisgICAgcmV0dXJuICggcmV0IDwgMCApID8gcmV0IDogbGVuOworfQorCiBsb25nCiBk b19hcmdvX29wKHVuc2lnbmVkIGludCBjbWQsIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0odm9pZCkg YXJnMSwKICAgICAgICAgICAgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcyLCB1bnNp Z25lZCBsb25nIGFyZzMsCkBAIC0xMDczLDYgKzE2ODMsNDkgQEAgZG9fYXJnb19vcCh1bnNpZ25l ZCBpbnQgY21kLCBYRU5fR1VFU1RfSEFORExFX1BBUkFNKHZvaWQpIGFyZzEsCiAgICAgICAgIGJy ZWFrOwogICAgIH0KIAorICAgIGNhc2UgWEVOX0FSR09fT1Bfc2VuZHY6CisgICAgeworICAgICAg ICB4ZW5fYXJnb19zZW5kX2FkZHJfdCBzZW5kX2FkZHI7CisKKyAgICAgICAgWEVOX0dVRVNUX0hB TkRMRV9QQVJBTSh4ZW5fYXJnb19zZW5kX2FkZHJfdCkgc2VuZF9hZGRyX2huZCA9CisgICAgICAg ICAgICBndWVzdF9oYW5kbGVfY2FzdChhcmcxLCB4ZW5fYXJnb19zZW5kX2FkZHJfdCk7CisgICAg ICAgIFhFTl9HVUVTVF9IQU5ETEVfUEFSQU0oeGVuX2FyZ29faW92X3QpIGlvdnNfaG5kID0KKyAg ICAgICAgICAgIGd1ZXN0X2hhbmRsZV9jYXN0KGFyZzIsIHhlbl9hcmdvX2lvdl90KTsKKyAgICAg ICAgLyogYXJnMyBpcyBuaW92ICovCisgICAgICAgIC8qIGFyZzQgaXMgbWVzc2FnZV90eXBlLiBN dXN0IGJlIGEgMzItYml0IHZhbHVlLiAqLworCisgICAgICAgIHJjID0gY29weV9mcm9tX2d1ZXN0 KCZzZW5kX2FkZHIsIHNlbmRfYWRkcl9obmQsIDEpID8gLUVGQVVMVCA6IDA7CisgICAgICAgIGlm ICggcmMgKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKCBzZW5kX2FkZHIuc3Jj LmRvbWFpbl9pZCA9PSBYRU5fQVJHT19ET01JRF9BTlkgKQorICAgICAgICAgICAgc2VuZF9hZGRy LnNyYy5kb21haW5faWQgPSBjdXJyZC0+ZG9tYWluX2lkOworCisgICAgICAgIC8qIE5vIGRvbWFp biBpcyBjdXJyZW50bHkgYXV0aG9yaXplZCB0byBzZW5kIG9uIGJlaGFsZiBvZiBhbm90aGVyICov CisgICAgICAgIGlmICggdW5saWtlbHkoc2VuZF9hZGRyLnNyYy5kb21haW5faWQgIT0gY3VycmQt PmRvbWFpbl9pZCkgKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IC1FUEVSTTsKKyAgICAg ICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLyogUmVqZWN0IG5pb3Ygb3IgbWVz c2FnZV90eXBlIHZhbHVlcyB0aGF0IGFyZSBvdXRzaWRlIDMyIGJpdCByYW5nZS4gKi8KKyAgICAg ICAgaWYgKCB1bmxpa2VseSgoYXJnMyA+IFhFTl9BUkdPX01BWElPVikgfHwgKGFyZzQgJiB+MHhm ZmZmZmZmZlVMKSkgKQorICAgICAgICB7CisgICAgICAgICAgICByYyA9IC1FSU5WQUw7CisgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIENoZWNr IGFjY2VzcyB0byB0aGUgd2hvbGUgYXJyYXkgaGVyZSBzbyB3ZSBjYW4gdXNlIHRoZSBmYXN0ZXIg X19jb3B5CisgICAgICAgICAqIG9wZXJhdGlvbnMgdG8gcmVhZCBlYWNoIGVsZW1lbnQgbGF0ZXIu CisgICAgICAgICAqLworICAgICAgICBpZiAoIHVubGlrZWx5KCFndWVzdF9oYW5kbGVfb2theShp b3ZzX2huZCwgYXJnMykpICkKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIHJjID0gc2Vu ZHYoY3VycmQsICZzZW5kX2FkZHIuc3JjLCAmc2VuZF9hZGRyLmRzdCwgaW92c19obmQsIGFyZzMs IGFyZzQpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0OgogICAgICAgICBy YyA9IC1FT1BOT1RTVVBQOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24v ZXZlbnRfY2hhbm5lbC5jIGIveGVuL2NvbW1vbi9ldmVudF9jaGFubmVsLmMKaW5kZXggZjM0ZDRm MC4uNmZiZTM0NiAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9ldmVudF9jaGFubmVsLmMKKysrIGIv eGVuL2NvbW1vbi9ldmVudF9jaGFubmVsLmMKQEAgLTc0Niw3ICs3NDYsNyBAQCB2b2lkIHNlbmRf Z3Vlc3RfdmNwdV92aXJxKHN0cnVjdCB2Y3B1ICp2LCB1aW50MzJfdCB2aXJxKQogICAgIHNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnYtPnZpcnFfbG9jaywgZmxhZ3MpOwogfQogCi1zdGF0aWMgdm9p ZCBzZW5kX2d1ZXN0X2dsb2JhbF92aXJxKHN0cnVjdCBkb21haW4gKmQsIHVpbnQzMl90IHZpcnEp Cit2b2lkIHNlbmRfZ3Vlc3RfZ2xvYmFsX3ZpcnEoc3RydWN0IGRvbWFpbiAqZCwgdWludDMyX3Qg dmlycSkKIHsKICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwogICAgIGludCBwb3J0OwpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2FyZ28uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmdv LmgKaW5kZXggNjExN2JmMi4uOGY3ZDA1ZCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGlj L2FyZ28uaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJnby5oCkBAIC00MSw2ICs0MSwzNCBA QAogI2RlZmluZSBYRU5fQVJHT19NQVhfUklOR19TSVpFICAoMHgxMDAwMDAwVUxMKQogCiAvKgor ICogWEVOX0FSR09fTUFYSU9WIDogbWF4aW11bSBudW1iZXIgb2YgaW92cyBhY2NlcHRlZCBpbiBh IHNpbmdsZSBzZW5kdi4KKyAqIFJhdGlvbmFsZSBmb3IgdGhlIHZhbHVlOgorICogQSBsb3cgdmFs dWUgc2luY2UgdGhlIGZ1bGwgYXJyYXkgb2YgaW92IHN0cnVjdHMgaXMgcmVhZCBvbnRvIHRoZSBo eXBlcnZpc29yCisgKiBzdGFjayB0byB3b3JrIHdpdGggd2hpbGUgcHJvY2Vzc2luZyB0aGUgbWVz c2FnZSBkYXRhLgorICogVGhlIExpbnV4IGFyZ28gZHJpdmVyIG5ldmVyIHBhc3NlcyBtb3JlIHRo YW4gdHdvIGlvdnMuCisgKgorICogVGhpcyB2YWx1ZSBzaG91bGQgbm90IGV4Y2VlZCAxMjggdG8g ZW5zdXJlIHRoYXQgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhCisgKiBwb3N0ZWQgaW4gYSBzaW5n bGUgQXJnbyBzZW5kdiBvcGVyYXRpb24gY2Fubm90IGV4Y2VlZCAyXjMxIGJ5dGVzLCB0byByZWR1 Y2UKKyAqIHJpc2sgb2YgaW50ZWdlciBvdmVyZmxvdyBkZWZlY3RzOgorICogRWFjaCBhcmdvIGlv diBjYW4gaG9sZCB+IDJeMjQgYnl0ZXMsIHNvIFhFTl9BUkdPX01BWElPViA8PSAyXigzMS0yNCks CisgKiBpZS4ga2VlcCBYRU5fQVJHT19NQVhJT1YgPD0gMTI4LgorKi8KKyNkZWZpbmUgWEVOX0FS R09fTUFYSU9WICAgICAgICAgIDhVCisKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHVpbnQ4X3Qp OworCit0eXBlZGVmIHN0cnVjdCB4ZW5fYXJnb19pb3YKK3sKKyNpZmRlZiBYRU5fR1VFU1RfSEFO RExFXzY0CisgICAgWEVOX0dVRVNUX0hBTkRMRV82NCh1aW50OF90KSBpb3ZfaG5kOworI2Vsc2UK KyAgICB1aW50NjRfdCBpb3ZfaG5kOworI2VuZGlmCisgICAgdWludDMyX3QgaW92X2xlbjsKKyAg ICB1aW50MzJfdCBwYWQ7Cit9IHhlbl9hcmdvX2lvdl90OworCisvKgogICogUGFnZSBkZXNjcmlw dG9yOiBlbmNvZGluZyBib3RoIHBhZ2UgYWRkcmVzcyBhbmQgc2l6ZSBpbiBhIDY0LWJpdCB2YWx1 ZS4KICAqIEludGVuZGVkIHRvIGFsbG93IEFCSSB0byBzdXBwb3J0IHVzZSBvZiBkaWZmZXJlbnQg Z3JhbnVsYXJpdHkgcGFnZXMuCiAgKiBleGFtcGxlIG9mIGhvdyB0byBwb3B1bGF0ZToKQEAgLTU4 LDYgKzg2LDEyIEBAIHR5cGVkZWYgc3RydWN0IHhlbl9hcmdvX2FkZHIKICAgICB1aW50MTZfdCBw YWQ7CiB9IHhlbl9hcmdvX2FkZHJfdDsKIAordHlwZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fc2VuZF9h ZGRyCit7CisgICAgeGVuX2FyZ29fYWRkcl90IHNyYzsKKyAgICB4ZW5fYXJnb19hZGRyX3QgZHN0 OworfSB4ZW5fYXJnb19zZW5kX2FkZHJfdDsKKwogdHlwZWRlZiBzdHJ1Y3QgeGVuX2FyZ29fcmlu ZwogewogICAgIC8qIEd1ZXN0cyBzaG91bGQgdXNlIGF0b21pYyBvcGVyYXRpb25zIHRvIGFjY2Vz cyByeF9wdHIgKi8KQEAgLTE0Nyw0ICsxODEsMzAgQEAgc3RydWN0IHhlbl9hcmdvX3JpbmdfbWVz c2FnZV9oZWFkZXIKICAqLwogI2RlZmluZSBYRU5fQVJHT19PUF91bnJlZ2lzdGVyX3JpbmcgICAg IDIKIAorLyoKKyAqIFhFTl9BUkdPX09QX3NlbmR2CisgKgorICogU2VuZCBhIGxpc3Qgb2YgYnVm ZmVycyBjb250YWluZWQgaW4gaW92cy4KKyAqCisgKiBUaGUgc2VuZCBhZGRyZXNzIHN0cnVjdCBz cGVjaWZpZXMgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzc2VzCisgKiBmb3IgdGhl IG1lc3NhZ2UgYmVpbmcgc2VudCwgd2hpY2ggYXJlIHVzZWQgdG8gZmluZCB0aGUgZGVzdGluYXRp b24gcmluZzoKKyAqIFhlbiBmaXJzdCBsb29rcyBmb3IgYSBtb3N0LXNwZWNpZmljIG1hdGNoIHdp dGggYSByZWdpc3RlcmVkIHJpbmcgd2l0aAorICogIChpZC5hZGRyID09IGRzdCkgYW5kIChpZC5w YXJ0bmVyID09IHNlbmRpbmdfZG9tYWluKSA7CisgKiBpZiB0aGF0IGZhaWxzLCBpdCB0aGVuIGxv b2tzIGZvciBhIHdpbGRjYXJkIG1hdGNoIChha2EgbXVsdGljYXN0IHJlY2VpdmVyKQorICogd2hl cmUgKGlkLmFkZHIgPT0gZHN0KSBhbmQgKGlkLnBhcnRuZXIgPT0gRE9NSURfQU5ZKS4KKyAqCisg KiBGb3IgZWFjaCBpb3YgZW50cnksIHNlbmQgaW92X2xlbiBieXRlcyBmcm9tIGlvdl9iYXNlIHRv IHRoZSBkZXN0aW5hdGlvbiByaW5nLgorICogSWYgaW5zdWZmaWNpZW50IHNwYWNlIGV4aXN0cyBp biB0aGUgZGVzdGluYXRpb24gcmluZywgaXQgd2lsbCByZXR1cm4gLUVBR0FJTgorICogYW5kIFhl biB3aWxsIG5vdGlmeSB0aGUgY2FsbGVyIHdoZW4gc3VmZmljaWVudCBzcGFjZSBiZWNvbWVzIGF2 YWlsYWJsZS4KKyAqCisgKiBUaGUgbWVzc2FnZSB0eXBlIGlzIGEgMzItYml0IGRhdGEgZmllbGQg YXZhaWxhYmxlIHRvIGNvbW11bmljYXRlIG1lc3NhZ2UKKyAqIGNvbnRleHQgZGF0YSAoZWcuIGtl cm5lbC10by1rZXJuZWwsIHJhdGhlciB0aGFuIGFwcGxpY2F0aW9uIGxheWVyKS4KKyAqCisgKiBh cmcxOiBYRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX3NlbmRfYWRkcl90KSBzb3VyY2UgYW5kIGRl c3QgYWRkcmVzc2VzCisgKiBhcmcyOiBYRU5fR1VFU1RfSEFORExFKHhlbl9hcmdvX2lvdl90KSBp b3ZzCisgKiBhcmczOiB1bnNpZ25lZCBsb25nIG5pb3YKKyAqIGFyZzQ6IHVuc2lnbmVkIGxvbmcg bWVzc2FnZSB0eXBlCisgKi8KKyNkZWZpbmUgWEVOX0FSR09fT1Bfc2VuZHYgICAgICAgICAgICAg ICAzCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oIGIveGVu L2luY2x1ZGUvcHVibGljL3hlbi5oCmluZGV4IGIzZjY0OTEuLmI2NTBhYmEgMTAwNjQ0Ci0tLSBh L3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgK QEAgLTE3OCw3ICsxNzgsNyBAQCBERUZJTkVfWEVOX0dVRVNUX0hBTkRMRSh4ZW5fdWxvbmdfdCk7 CiAjZGVmaW5lIFZJUlFfQ09OX1JJTkcgICA4ICAvKiBHLiAoRE9NMCkgQnl0ZXMgcmVjZWl2ZWQg b24gY29uc29sZSAgICAgICAgICAgICovCiAjZGVmaW5lIFZJUlFfUENQVV9TVEFURSA5ICAvKiBH LiAoRE9NMCkgUENQVSBzdGF0ZSBjaGFuZ2VkICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5l IFZJUlFfTUVNX0VWRU5UICAxMCAvKiBHLiAoRE9NMCkgQSBtZW1vcnkgZXZlbnQgaGFzIG9jY3Vy cmVkICAgICAgICAgICovCi0jZGVmaW5lIFZJUlFfWENfUkVTRVJWRUQgMTEgLyogRy4gUmVzZXJ2 ZWQgZm9yIFhlbkNsaWVudCAgICAgICAgICAgICAgICAgICAgICovCisjZGVmaW5lIFZJUlFfQVJH T19NRVNTQUdFIDExIC8qIEcuIEFyZ28gaW50ZXJkb21haW4gbWVzc2FnZSBub3RpZmljYXRpb24g ICAgICovCiAjZGVmaW5lIFZJUlFfRU5PTUVNICAgICAxMiAvKiBHLiAoRE9NMCkgTG93IG9uIGhl YXAgbWVtb3J5ICAgICAgICovCiAjZGVmaW5lIFZJUlFfWEVOUE1VICAgICAxMyAvKiBWLiAgUE1D IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKZGlmZiAtLWdpdCBh L3hlbi9pbmNsdWRlL3hlbi9ldmVudC5oIGIveGVuL2luY2x1ZGUveGVuL2V2ZW50LmgKaW5kZXgg ZWJiODc5ZS4uNDY1MDg4NyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2V2ZW50LmgKKysr IGIveGVuL2luY2x1ZGUveGVuL2V2ZW50LmgKQEAgLTI5LDYgKzI5LDEzIEBAIHZvaWQgc2VuZF9n dWVzdF92Y3B1X3ZpcnEoc3RydWN0IHZjcHUgKnYsIHVpbnQzMl90IHZpcnEpOwogdm9pZCBzZW5k X2dsb2JhbF92aXJxKHVpbnQzMl90IHZpcnEpOwogCiAvKgorICogc2VuZF9ndWVzdF9nbG9iYWxf dmlycToKKyAqICBAZDogICAgICAgIERvbWFpbiB0byB3aGljaCBWSVJRIHNob3VsZCBiZSBzZW50 CisgKiAgQHZpcnE6ICAgICBWaXJ0dWFsIElSUSBudW1iZXIgKFZJUlFfKiksIG11c3QgYmUgZ2xv YmFsCisgKi8KK3ZvaWQgc2VuZF9ndWVzdF9nbG9iYWxfdmlycShzdHJ1Y3QgZG9tYWluICpkLCB1 aW50MzJfdCB2aXJxKTsKKworLyoKICAqIHNlbnRfZ2xvYmFsX3ZpcnFfaGFuZGxlcjogU2V0IGEg Z2xvYmFsIFZJUlEgaGFuZGxlci4KICAqICBAZDogICAgICAgIE5ldyB0YXJnZXQgZG9tYWluIGZv ciB0aGlzIFZJUlEKICAqICBAdmlycTogICAgIFZpcnR1YWwgSVJRIG51bWJlciAoVklSUV8qKSwg bXVzdCBiZSBnbG9iYWwKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hsYXQubHN0IGIveGVuL2lu Y2x1ZGUveGxhdC5sc3QKaW5kZXggNDExYzY2MS4uMzcyMzk4MCAxMDA2NDQKLS0tIGEveGVuL2lu Y2x1ZGUveGxhdC5sc3QKKysrIGIveGVuL2luY2x1ZGUveGxhdC5sc3QKQEAgLTE1MiwzICsxNTIs NSBAQAogPwlhcmdvX3JpbmcJCQlhcmdvLmgKID8JYXJnb19yZWdpc3Rlcl9yaW5nCQlhcmdvLmgK ID8JYXJnb191bnJlZ2lzdGVyX3JpbmcJCWFyZ28uaAorPwlhcmdvX2lvdgkJCWFyZ28uaAorPwlh cmdvX3NlbmRfYWRkcgkJCWFyZ28uaAotLSAKMi43LjQKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt YW4vbGlzdGluZm8veGVuLWRldmVs