From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Adalbert=20Laz=C4=83r?= Subject: [RFC PATCH v6 02/92] kvm: introspection: add basic ioctls (hook/unhook) Date: Fri, 9 Aug 2019 18:59:17 +0300 Message-ID: <20190809160047.8319-3-alazar@bitdefender.com> References: <20190809160047.8319-1-alazar@bitdefender.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190809160047.8319-1-alazar@bitdefender.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org To: kvm@vger.kernel.org Cc: Tamas K Lengyel , Weijiang Yang , Yu C , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Jan Kiszka , =?UTF-8?q?Samuel=20Laur=C3=A9n?= , Konrad Rzeszutek Wilk , virtualization@lists.linux-foundation.org, =?UTF-8?q?Adalbert=20Laz=C4=83r?= , linux-mm@kvack.org, Patrick Colp , Mathieu Tarral , Stefan Hajnoczi , =?UTF-8?q?Mircea=20C=C3=AErjaliu?= , Paolo Bonzini , Zhang@mail.linuxfoundation.org, =?UTF-8?q?Mihai=20Don=C8=9Bu?= List-Id: virtualization@lists.linuxfoundation.org VGhlIGNvbm5lY3Rpb24gb2YgdGhlIGludHJvc3BlY3Rpb24gc29ja2V0IHdpdGggdGhlIGludHJv c3BlY3Rpb24gdG9vbAppcyBpbml0aWFsaXplZCBieSB1c2Vyc3BhY2UvUUVNVS4gT25jZSB0aGUg aGFuZHNoYWtlIGlzIGRvbmUsIHRoZSBmaWxlCmRlc2NyaXB0b3IgaXMgcGFzc2VkIHRvIEtWTWkg dXNpbmcgdGhlIEtWTV9JTlRST1NQRUNUSU9OX0hPT0sgaW9jdGwuIEEKbmV3IHRocmVhZCB3aWxs IGJlIGNyZWF0ZWQgdG8gaGFuZGxlL2Rpc3BhdGNoIGFsbCBpbnRyb3NwZWN0aW9uIGNvbW1hbmRz Cm9yIHJlcGxpZXMgdG8gaW50cm9zcGVjdGlvbiBldmVudHMuIFRoaXMgdGhyZWFkIHdpbGwgZmlu aXNoIHdoZW4gdGhlCnNvY2tldCBpcyBjbG9zZWQgYnkgdXNlcnNwYWNlIChlZy4gd2hlbiB0aGUg Z3Vlc3QgaXMgcmVzdGFydGVkKSBvciBieQp0aGUgaW50cm9zcGVjdGlvbiB0b29sLiBUaGUgdXVp ZCBtZW1iZXIgb2Ygc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uIGlzCnVzZWQgdG8gc2hvdyB0aGUg Z3Vlc3QgaWQgd2l0aCB0aGUgZXJyb3IgbWVzc2FnZXMuCgpPbiBjZXJ0YWluIGFjdGlvbnMgZnJv bSB1c2Vyc3BhY2UgKHBhdXNlLCBzdXNwZW5kLCBtaWdyYXRlLCBldGMuKSB0aGUKS1ZNX0lOVFJP U1BFQ1RJT05fVU5IT09LIGlvY3RsIGlzIHVzZWQgdG8gbm90aWZ5IHRoZSBpbnRyb3NwZWN0aW9u IHRvb2wKdG8gcmVtb3ZlIGl0cyBob29rcyAoZWcuIGJyZWFrcG9pbnRzKS4KClN1Z2dlc3RlZC1i eTogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgpTdWdnZXN0ZWQtYnk6IFBh b2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CkNvLWRldmVsb3BlZC1ieTogTWloYWkg RG9uyJt1IDxtZG9udHVAYml0ZGVmZW5kZXIuY29tPgpTaWduZWQtb2ZmLWJ5OiBNaWhhaSBEb27I m3UgPG1kb250dUBiaXRkZWZlbmRlci5jb20+CkNvLWRldmVsb3BlZC1ieTogTWlyY2VhIEPDrnJq YWxpdSA8bWNpcmphbGl1QGJpdGRlZmVuZGVyLmNvbT4KU2lnbmVkLW9mZi1ieTogTWlyY2VhIEPD rnJqYWxpdSA8bWNpcmphbGl1QGJpdGRlZmVuZGVyLmNvbT4KQ28tZGV2ZWxvcGVkLWJ5OiBBZGFs YmVydCBMYXrEg3IgPGFsYXphckBiaXRkZWZlbmRlci5jb20+ClNpZ25lZC1vZmYtYnk6IEFkYWxi ZXJ0IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL3Zp cnR1YWwva3ZtL2FwaS50eHQgIHwgIDUwICsrKysrKysrKysKIERvY3VtZW50YXRpb24vdmlydHVh bC9rdm0va3ZtaS5yc3QgfCAgNjUgKysrKysrKysrKysrKwogYXJjaC94ODYva3ZtL01ha2VmaWxl ICAgICAgICAgICAgICB8ICAgMiArLQogYXJjaC94ODYva3ZtL3g4Ni5jICAgICAgICAgICAgICAg ICB8ICAgNyArKwogaW5jbHVkZS9saW51eC9rdm1pLmggICAgICAgICAgICAgICB8ICAgNCArCiBp bmNsdWRlL3VhcGkvbGludXgva3ZtLmggICAgICAgICAgIHwgIDExICsrKwogdmlydC9rdm0va3Zt X21haW4uYyAgICAgICAgICAgICAgICB8ICAgOCArKwogdmlydC9rdm0va3ZtaS5jICAgICAgICAg ICAgICAgICAgICB8IDE0NSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdmlydC9rdm0v a3ZtaV9pbnQuaCAgICAgICAgICAgICAgICB8ICAzMSArKysrKysKIHZpcnQva3ZtL2t2bWlfbXNn LmMgICAgICAgICAgICAgICAgfCAgNDIgKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAzNjQg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHZpcnQva3Zt L2t2bWlfbXNnLmMKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2FwaS50 eHQgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2FwaS50eHQKaW5kZXggMzU2MTU2ZjVjNTJk Li4yOGQ0NDI5ZjlhZTkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0vYXBp LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2FwaS50eHQKQEAgLTM4NTcsNiAr Mzg1Nyw1NiBAQCBudW1iZXIgb2YgdmFsaWQgZW50cmllcyBpbiB0aGUgJ2VudHJpZXMnIGFycmF5 LCB3aGljaCBpcyB0aGVuIGZpbGxlZC4KICdpbmRleCcgYW5kICdmbGFncycgZmllbGRzIGluICdz dHJ1Y3Qga3ZtX2NwdWlkX2VudHJ5MicgYXJlIGN1cnJlbnRseSByZXNlcnZlZCwKIHVzZXJzcGFj ZSBzaG91bGQgbm90IGV4cGVjdCB0byBnZXQgYW55IHBhcnRpY3VsYXIgdmFsdWUgdGhlcmUuCiAK KzQuOTk2IEtWTV9JTlRST1NQRUNUSU9OX0hPT0sKKworQ2FwYWJpbGl0eTogS1ZNX0NBUF9JTlRS T1NQRUNUSU9OCitBcmNoaXRlY3R1cmVzOiB4ODYKK1R5cGU6IHZtIGlvY3RsCitQYXJhbWV0ZXJz OiBzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rpb24gKGluKQorUmV0dXJuczogMCBvbiBzdWNjZXNzLCBh IG5lZ2F0aXZlIHZhbHVlIG9uIGVycm9yCisKK1RoaXMgaW9jdGwgaXMgdXNlZCB0byBlbmFibGUg dGhlIGludHJvc3BlY3Rpb24gb2YgdGhlIGN1cnJlbnQgVk0uCisKK3N0cnVjdCBrdm1faW50cm9z cGVjdGlvbiB7CisJX19zMzIgZmQ7CisJX191MzIgcGFkZGluZzsKKwlfX3U4IHV1aWRbMTZdOwor fTsKKworZmQgaXMgdGhlIGZpbGUgaGFuZGxlIG9mIGEgc29ja2V0IGNvbm5lY3RlZCB0byB0aGUg aW50cm9zcGVjdGlvbiB0b29sLAorCitwYWRkaW5nIG11c3QgYmUgemVybyAoaXQgbWlnaHQgYmUg dXNlZCBpbiB0aGUgZnV0dXJlKSwKKwordXVpZCBpcyB1c2VkIGZvciBkZWJ1ZyBhbmQgZXJyb3Ig bWVzc2FnZXMuCisKK0l0IGNhbiBmYWlsIHdpdGggLUVGQVVMVCBpZjoKKyAtIG1lbW9yeSBhbGxv Y2F0aW9uIGZhaWxlZAorIC0gdGhpcyBWTSBpcyBhbHJlYWR5IGludHJvc3BlY3RlZAorIC0gdGhl IGZpbGUgaGFuZGxlIGRvZXNuJ3QgY29ycmVzcG9uZCB0byBhbiBhY3RpdmUgc29ja2V0CisKK0l0 IHdpbGwgZmFpbCB3aXRoIC1FSU5WQUwgaWYgcGFkZGluZyBpcyBub3QgemVyby4KKworVGhlIEtW TUkgdmVyc2lvbiBjYW4gYmUgcmV0cmlldmVkIHVzaW5nIHRoZSBLVk1fQ0FQX0lOVFJPU1BFQ1RJ T04gb2YKK3RoZSBLVk1fQ0hFQ0tfRVhURU5TSU9OIGlvY3RsKCkgYXQgcnVuLXRpbWUuCisKKzQu OTk3IEtWTV9JTlRST1NQRUNUSU9OX1VOSE9PSworCitDYXBhYmlsaXR5OiBLVk1fQ0FQX0lOVFJP U1BFQ1RJT04KK0FyY2hpdGVjdHVyZXM6IHg4NgorVHlwZTogdm0gaW9jdGwKK1BhcmFtZXRlcnM6 IG5vbmUKK1JldHVybnM6IDAgb24gc3VjY2VzcywgYSBuZWdhdGl2ZSB2YWx1ZSBvbiBlcnJvcgor CitUaGlzIGlvY3RsIGlzIHVzZWQgdG8gZGlzYWJsZSB0aGUgaW50cm9zcGVjdGlvbiBvZiB0aGUg Y3VycmVudCBWTS4KK0l0IGlzIHVzZWZ1bCB3aGVuIHRoZSBWTSBpcyBwYXVzZWQvc3VzcGVuZGVk L21pZ3JhdGVkLgorCitJdCBjYW4gZmFpbCB3aXRoIC1FRkFVTFQgaWY6CisgIC0gdGhlIGludHJv c3BlY3Rpb24gaXMgbm90IGVuYWJsZWQKKyAgLSB0aGUgc29ja2V0IChwYXNzZWQgd2l0aCBLVk1f SU5UUk9TUEVDVElPTl9IT09LKSBoYWQgYW4gZXJyb3IKKworSWYgdGhlIGlvY3RsIGlzIHN1Y2Nl c3NmdWwsIHRoZSB1c2Vyc3BhY2Ugc2hvdWxkIGdpdmUgdGhlIGludHJvc3BlY3Rpb24KK3Rvb2wg YSBjaGFuY2UgdG8gdW5ob29rIHRoZSBWTS4KKwogNS4gVGhlIGt2bV9ydW4gc3RydWN0dXJlCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aXJ0 dWFsL2t2bS9rdm1pLnJzdCBiL0RvY3VtZW50YXRpb24vdmlydHVhbC9rdm0va3ZtaS5yc3QKaW5k ZXggZDU0Y2FmOGQ5NzRmLi40N2I3YzM2ZDMzNGEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24v dmlydHVhbC9rdm0va3ZtaS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi92aXJ0dWFsL2t2bS9rdm1p LnJzdApAQCAtNjQsNiArNjQsNzEgQEAgdXNlZCBvbiB0aGF0IGd1ZXN0LiBPYnZpb3VzbHksIHdo ZXRoZXIgdGhlIGd1ZXN0IGNhbiByZWFsbHkgY29udGludWUKIG5vcm1hbCBleGVjdXRpb24gZGVw ZW5kcyBvbiB3aGV0aGVyIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgaGFzIG1hZGUgYW55CiBtb2Rp ZmljYXRpb25zIHRoYXQgcmVxdWlyZSBhbiBhY3RpdmUgS1ZNSSBjaGFubmVsLgogCitIYW5kc2hh a2UKKy0tLS0tLS0tLQorCitBbHRob3VnaCB0aGlzIGZhbGxzIG91dCBvZiB0aGUgc2NvcGUgb2Yg dGhlIGludHJvc3BlY3Rpb24gc3Vic3lzdGVtLCBiZWxvdworaXMgYSBwcm9wb3NhbCBvZiBhIGhh bmRzaGFrZSB0aGF0IGNhbiBiZSB1c2VkIGJ5IGltcGxlbWVudG9ycy4KKworQmFzZWQgb24gdGhl IHN5c3RlbSBhZG1pbmlzdHJhdGlvbiBwb2xpY2llcywgdGhlIG1hbmFnZW1lbnQgdG9vbAorKGVn LiBsaWJ2aXJ0KSBzdGFydHMgZGV2aWNlIG1hbmFnZXJzIChlZy4gUUVNVSkgd2l0aCBzb21lIGV4 dHJhIGFyZ3VtZW50czoKK3doYXQgaW50cm9zcGVjdG9yIGNvdWxkIG1vbml0b3IvY29udHJvbCB0 aGF0IHNwZWNpZmljIGd1ZXN0IChhbmQgaG93IHRvCitjb25uZWN0IHRvKSBhbmQgd2hhdCBpbnRy b3NwZWN0aW9uIGNvbW1hbmRzL2V2ZW50cyBhcmUgYWxsb3dlZC4KKworVGhlIGRldmljZSBtYW5h Z2VyIHdpbGwgY29ubmVjdCB0byB0aGUgaW50cm9zcGVjdGlvbiB0b29sIGFuZCB3YWl0IGZvciBh CitjcnlwdG9ncmFwaGljIGhhc2ggb2YgYSBjb29raWUgdGhhdCBzaG91bGQgYmUga25vd24gYnkg Ym90aCBwZWVycy4gSWYgdGhlCitoYXNoIGlzIGNvcnJlY3QgKHRoZSBkZXN0aW5hdGlvbiBoYXMg YmVlbiAiYXV0aGVudGljYXRlZCIpLCB0aGUgZGV2aWNlCittYW5hZ2VyIHdpbGwgc2VuZCBhbm90 aGVyIGNyeXB0b2dyYXBoaWMgaGFzaCBhbmQgcmFuZG9tIHNhbHQuIFRoZSBwZWVyCityZWNvbXB1 dGVzIHRoZSBoYXNoIG9mIHRoZSBjb29raWUgYnl0ZXMgaW5jbHVkaW5nIHRoZSBzYWx0IGFuZCBp ZiB0aGV5IG1hdGNoLAordGhlIGRldmljZSBtYW5hZ2VyIGhhcyBiZWVuICJhdXRoZW50aWNhdGVk IiB0b28uIFRoaXMgaXMgYSByYXRoZXIgY3J1ZGUKK3N5c3RlbSB0aGF0IG1ha2VzIGl0IGRpZmZp Y3VsdCBmb3IgZGV2aWNlIG1hbmFnZXIgZXhwbG9pdHMgdG8gdHJpY2sgdGhlCitpbnRyb3NwZWN0 aW9uIHRvb2wgaW50byBiZWxpZXZpbmcgaXRzIHdvcmtpbmcgT0suCisKK1RoZSBjb29raWUgd291 bGQgbm9ybWFsbHkgYmUgZ2VuZXJhdGVkIGJ5IGEgbWFuYWdlbWVudCB0b29sIChlZy4gbGlidmly dCkKK2FuZCBtYWtlIGl0IGF2YWlsYWJsZSB0byB0aGUgZGV2aWNlIG1hbmFnZXIgYW5kIHRvIGEg cHJvcGVybHkgYXV0aGVudGljYXRlZAorY2xpZW50LiBJdCBpcyB0aGUgam9iIG9mIGEgdGhpcmQg cGFydHkgdG8gcmV0cmlldmUgdGhlIGNvb2tpZSBmcm9tIHRoZQorbWFuYWdlbWVudCBhcHBsaWNh dGlvbiBhbmQgcGFzcyBpdCBvdmVyIGEgc2VjdXJlIGNoYW5uZWwgdG8gdGhlIGludHJvc3BlY3Rp b24KK3Rvb2wuCisKK09uY2UgdGhlIGJhc2ljICJhdXRoZW50aWNhdGlvbiIgaGFzIHRha2VuIHBs YWNlLCB0aGUgaW50cm9zcGVjdGlvbiB0b29sCitjYW4gcmVjZWl2ZSBpbmZvcm1hdGlvbiBvbiB0 aGUgZ3Vlc3QgKGl0cyBVVUlEKSBhbmQgb3RoZXIgZmxhZ3MgKGVuZGlhbm5lc3MKK29yIGZlYXR1 cmVzIHN1cHBvcnRlZCBieSB0aGUgaG9zdCBrZXJuZWwpLgorCitJbiB0aGUgZW5kLCB0aGUgZGV2 aWNlIG1hbmFnZXIgd2lsbCBwYXNzIHRoZSBmaWxlIGhhbmRsZSAocGx1cyB0aGUgYWxsb3dlZAor Y29tbWFuZHMvZXZlbnRzKSB0byBLVk0sIGFuZCBmb3JnZXQgYWJvdXQgaXQuIEl0IHdpbGwgYmUg bm90aWZpZWQgYnkKK0tWTSB3aGVuIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgY2xvc2VzIHRoZSBm aWxlIGhhbmRsZSAoaW4gY2FzZSBvZgorZXJyb3JzKSwgYW5kIHNob3VsZCByZWluaXRpYXRlIHRo ZSBoYW5kc2hha2UuCisKK1VuaG9va2luZworLS0tLS0tLS0tCisKK0R1cmluZyBhIFZNSSBzZXNz aW9uIGl0IGlzIHBvc3NpYmxlIGZvciB0aGUgZ3Vlc3QgdG8gYmUgcGF0Y2hlZCBhbmQgZm9yCitz b21lIG9mIHRoZXNlIHBhdGNoZXMgdG8gInRhbGsiIHdpdGggdGhlIGludHJvc3BlY3Rpb24gdG9v bC4gSXQgdGh1cworYmVjb21lcyBuZWNlc3NhcnkgdG8gcmVtb3ZlIHRoZW0gYmVmb3JlIHRoZSBn dWVzdCBpcyBzdXNwZW5kZWQsIG1vdmVkCisobWlncmF0ZWQpIG9yIGEgc25hcHNob3Qgd2l0aCBt ZW1vcnkgaXMgY3JlYXRlZC4KKworVGhlIGFjdGlvbnMgYXJlIG5vcm1hbGx5IHBlcmZvcm1lZCBi eSB0aGUgZGV2aWNlIG1hbmFnZXIuIEluIHRoZSBjYXNlCitvZiBRRU1VLCBpdCB3aWxsIHVzZSB0 aGUgKktWTV9JTlRST1NQRUNUSU9OX1VOSE9PSyogaW9jdGwgdG8gdHJpZ2dlcgordGhlICpLVk1J X0VWRU5UX1VOSE9PSyogZXZlbnQgYW5kIHdhaXQgZm9yIGEgbGltaXRlZCBhbW91bnQgb2YgdGlt ZSAoYQorZmV3IHNlY29uZHMpIGZvciBhIGNvbmZpcm1hdGlvbiBmcm9tIHRoZSBpbnRyb3NwZWN0 aW9uIHRvb2wKK3RoYXQgaXMgT0sgdG8gcHJvY2VlZC4KKworTGl2ZSBtaWdyYXRpb25zCistLS0t LS0tLS0tLS0tLS0KKworQmVmb3JlIHRoZSBsaXZlIG1pZ3JhdGlvbiB0YWtlcyBwbGFjZSwgdGhl IGludHJvc3BlY3Rpb24gdG9vbCBoYXMgdG8gYmUKK25vdGlmaWVkIGFuZCBoYXZlIGEgY2hhbmNl IHRvIHVuaG9vayAoc2VlICoqVW5ob29raW5nKiopLgorCitUaGUgUUVNVSBpbnN0YW5jZSBvbiB0 aGUgcmVjZWl2aW5nIGVuZCwgaWYgY29uZmlndXJlZCBmb3IgS1ZNSSwgd2lsbCBuZWVkIHRvCitl c3RhYmxpc2ggYSBjb25uZWN0aW9uIHRvIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wgYWZ0ZXIgdGhl IG1pZ3JhdGlvbiBoYXMKK2NvbXBsZXRlZC4KKworT2J2aW91c2x5LCB0aGlzIGNyZWF0ZXMgYSB3 aW5kb3cgaW4gd2hpY2ggdGhlIGd1ZXN0IGlzIG5vdCBpbnRyb3NwZWN0ZWQuIFRoZQordXNlciB3 aWxsIG5lZWQgdG8gYmUgYXdhcmUgb2YgdGhpcyBkZXRhaWwuIEZ1dHVyZSBpbnRyb3NwZWN0aW9u Cit0ZWNobm9sb2dpZXMgY2FuIGNob29zZSBub3QgdG8gZGlzY29ubmVjdCBhbmQgaW5zdGVhZCB0 cmFuc2ZlciB0aGUgbmVjZXNzYXJ5Citjb250ZXh0IHRvIHRoZSBpbnRyb3NwZWN0aW9uIHRvb2wg YXQgdGhlIG1pZ3JhdGlvbiBkZXN0aW5hdGlvbiB2aWEgYSBzZXBhcmF0ZQorY2hhbm5lbC4KKwog TWVtb3J5IGFjY2VzcyBzYWZldHkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBh L2FyY2gveDg2L2t2bS9NYWtlZmlsZSBiL2FyY2gveDg2L2t2bS9NYWtlZmlsZQppbmRleCAzMTI1 OTdiZDQ3YzcuLjA5NjNlNDc1ZGJlOSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva3ZtL01ha2VmaWxl CisrKyBiL2FyY2gveDg2L2t2bS9NYWtlZmlsZQpAQCAtNyw3ICs3LDcgQEAgS1ZNIDo9IC4uLy4u Ly4uL3ZpcnQva3ZtCiBrdm0teQkJCSs9ICQoS1ZNKS9rdm1fbWFpbi5vICQoS1ZNKS9jb2FsZXNj ZWRfbW1pby5vIFwKIAkJCQkkKEtWTSkvZXZlbnRmZC5vICQoS1ZNKS9pcnFjaGlwLm8gJChLVk0p L3ZmaW8ubwoga3ZtLSQoQ09ORklHX0tWTV9BU1lOQ19QRikJKz0gJChLVk0pL2FzeW5jX3BmLm8K LWt2bS0kKENPTkZJR19LVk1fSU5UUk9TUEVDVElPTikgKz0gJChLVk0pL2t2bWkubwora3ZtLSQo Q09ORklHX0tWTV9JTlRST1NQRUNUSU9OKSArPSAkKEtWTSkva3ZtaS5vICQoS1ZNKS9rdm1pX21z Zy5vCiAKIGt2bS15CQkJKz0geDg2Lm8gbW11Lm8gZW11bGF0ZS5vIGk4MjU5Lm8gaXJxLm8gbGFw aWMubyBcCiAJCQkgICBpODI1NC5vIGlvYXBpYy5vIGlycV9jb21tLm8gY3B1aWQubyBwbXUubyBt dHJyLm8gXApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3g4Ni5jIGIvYXJjaC94ODYva3ZtL3g4 Ni5jCmluZGV4IDk0MWY5MzIzNzNkMC4uMDE2M2UxYWQxYWFhIDEwMDY0NAotLS0gYS9hcmNoL3g4 Ni9rdm0veDg2LmMKKysrIGIvYXJjaC94ODYva3ZtL3g4Ni5jCkBAIC0yMCw2ICsyMCw4IEBACiAg Ki8KIAogI2luY2x1ZGUgPGxpbnV4L2t2bV9ob3N0Lmg+CisjaW5jbHVkZSA8dWFwaS9saW51eC9r dm1pLmg+CisjaW5jbHVkZSA8bGludXgva3ZtaS5oPgogI2luY2x1ZGUgImlycS5oIgogI2luY2x1 ZGUgIm1tdS5oIgogI2luY2x1ZGUgImk4MjU0LmgiCkBAIC0zMDgzLDYgKzMwODUsMTEgQEAgaW50 IGt2bV92bV9pb2N0bF9jaGVja19leHRlbnNpb24oc3RydWN0IGt2bSAqa3ZtLCBsb25nIGV4dCkK IAkJciA9IGt2bV94ODZfb3BzLT5nZXRfbmVzdGVkX3N0YXRlID8KIAkJCWt2bV94ODZfb3BzLT5n ZXRfbmVzdGVkX3N0YXRlKE5VTEwsIDAsIDApIDogMDsKIAkJYnJlYWs7CisjaWZkZWYgQ09ORklH X0tWTV9JTlRST1NQRUNUSU9OCisJY2FzZSBLVk1fQ0FQX0lOVFJPU1BFQ1RJT046CisJCXIgPSBL Vk1JX1ZFUlNJT047CisJCWJyZWFrOworI2VuZGlmCiAJZGVmYXVsdDoKIAkJYnJlYWs7CiAJfQpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdm1pLmggYi9pbmNsdWRlL2xpbnV4L2t2bWkuaApp bmRleCBlMzZkZTNmOWYzZGUuLjRjYTkyODBlNDQxOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9rdm1pLmgKKysrIGIvaW5jbHVkZS9saW51eC9rdm1pLmgKQEAgLTEwLDYgKzEwLDEwIEBAIGlu dCBrdm1pX2luaXQodm9pZCk7CiB2b2lkIGt2bWlfdW5pbml0KHZvaWQpOwogdm9pZCBrdm1pX2Ny ZWF0ZV92bShzdHJ1Y3Qga3ZtICprdm0pOwogdm9pZCBrdm1pX2Rlc3Ryb3lfdm0oc3RydWN0IGt2 bSAqa3ZtKTsKK2ludCBrdm1pX2lvY3RsX2hvb2soc3RydWN0IGt2bSAqa3ZtLCB2b2lkIF9fdXNl ciAqYXJncCk7CitpbnQga3ZtaV9pb2N0bF9jb21tYW5kKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBf X3VzZXIgKmFyZ3ApOworaW50IGt2bWlfaW9jdGxfZXZlbnQoc3RydWN0IGt2bSAqa3ZtLCB2b2lk IF9fdXNlciAqYXJncCk7CitpbnQga3ZtaV9pb2N0bF91bmhvb2soc3RydWN0IGt2bSAqa3ZtLCBi b29sIGZvcmNlX3Jlc2V0KTsKIAogI2Vsc2UKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xp bnV4L2t2bS5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCmluZGV4IDZkNGVhNGI2YzkyMi4u YmFlMzdiZjM3MzM4IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvbGludXgva3ZtLmgKKysrIGIv aW5jbHVkZS91YXBpL2xpbnV4L2t2bS5oCkBAIC05ODksNiArOTg5LDggQEAgc3RydWN0IGt2bV9w cGNfcmVzaXplX2hwdCB7CiAjZGVmaW5lIEtWTV9DQVBfTUFOVUFMX0RJUlRZX0xPR19QUk9URUNU IDE2NgogI2RlZmluZSBLVk1fQ0FQX0hZUEVSVl9DUFVJRCAxNjcKIAorI2RlZmluZSBLVk1fQ0FQ X0lOVFJPU1BFQ1RJT04gOTk5CisKICNpZmRlZiBLVk1fQ0FQX0lSUV9ST1VUSU5HCiAKIHN0cnVj dCBrdm1faXJxX3JvdXRpbmdfaXJxY2hpcCB7CkBAIC0xNTIwLDYgKzE1MjIsMTUgQEAgc3RydWN0 IGt2bV9zZXZfZGJnIHsKIAlfX3UzMiBsZW47CiB9OwogCitzdHJ1Y3Qga3ZtX2ludHJvc3BlY3Rp b24geworCV9fczMyIGZkOworCV9fdTMyIHBhZGRpbmc7CisJX191OCB1dWlkWzE2XTsKK307Cisj ZGVmaW5lIEtWTV9JTlRST1NQRUNUSU9OX0hPT0sgICAgX0lPVyhLVk1JTywgMHhmZiwgc3RydWN0 IGt2bV9pbnRyb3NwZWN0aW9uKQorI2RlZmluZSBLVk1fSU5UUk9TUEVDVElPTl9VTkhPT0sgIF9J TyhLVk1JTywgMHhmZSkKKy8qIHdyaXRlIHRydWUgb24gZm9yY2UtcmVzZXQsIGZhbHNlIG90aGVy d2lzZSAqLworCiAjZGVmaW5lIEtWTV9ERVZfQVNTSUdOX0VOQUJMRV9JT01NVQkoMSA8PCAwKQog I2RlZmluZSBLVk1fREVWX0FTU0lHTl9QQ0lfMl8zCQkoMSA8PCAxKQogI2RlZmluZSBLVk1fREVW X0FTU0lHTl9NQVNLX0lOVFgJKDEgPDwgMikKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2t2bV9tYWlu LmMgYi92aXJ0L2t2bS9rdm1fbWFpbi5jCmluZGV4IDkwZTQzMmQyMjVhYi4uMDlhOTMwYWMwMDdk IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1fbWFpbi5jCisrKyBiL3ZpcnQva3ZtL2t2bV9tYWlu LmMKQEAgLTMyNjYsNiArMzI2NiwxNCBAQCBzdGF0aWMgbG9uZyBrdm1fdm1faW9jdGwoc3RydWN0 IGZpbGUgKmZpbHAsCiAJY2FzZSBLVk1fQ0hFQ0tfRVhURU5TSU9OOgogCQlyID0ga3ZtX3ZtX2lv Y3RsX2NoZWNrX2V4dGVuc2lvbl9nZW5lcmljKGt2bSwgYXJnKTsKIAkJYnJlYWs7CisjaWZkZWYg Q09ORklHX0tWTV9JTlRST1NQRUNUSU9OCisJY2FzZSBLVk1fSU5UUk9TUEVDVElPTl9IT09LOgor CQlyID0ga3ZtaV9pb2N0bF9ob29rKGt2bSwgYXJncCk7CisJCWJyZWFrOworCWNhc2UgS1ZNX0lO VFJPU1BFQ1RJT05fVU5IT09LOgorCQlyID0ga3ZtaV9pb2N0bF91bmhvb2soa3ZtLCBhcmcpOwor CQlicmVhazsKKyNlbmRpZiAvKiBDT05GSUdfS1ZNX0lOVFJPU1BFQ1RJT04gKi8KIAlkZWZhdWx0 OgogCQlyID0ga3ZtX2FyY2hfdm1faW9jdGwoZmlscCwgaW9jdGwsIGFyZyk7CiAJfQpkaWZmIC0t Z2l0IGEvdmlydC9rdm0va3ZtaS5jIGIvdmlydC9rdm0va3ZtaS5jCmluZGV4IDIwNjM4NzQzYmQw My4uNTkxZjZlZTIyMTM1IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9rdm1pLmMKKysrIGIvdmlydC9r dm0va3ZtaS5jCkBAIC03LDYgKzcsOCBAQAogICovCiAjaW5jbHVkZSA8dWFwaS9saW51eC9rdm1p Lmg+CiAjaW5jbHVkZSAia3ZtaV9pbnQuaCIKKyNpbmNsdWRlIDxsaW51eC9rdGhyZWFkLmg+Cisj aW5jbHVkZSA8bGludXgvYml0bWFwLmg+CiAKIGludCBrdm1pX2luaXQodm9pZCkKIHsKQEAgLTE3 LDYgKzE5LDIyIEBAIHZvaWQga3ZtaV91bmluaXQodm9pZCkKIHsKIH0KIAorc3RhdGljIGJvb2wg YWxsb2Nfa3ZtaShzdHJ1Y3Qga3ZtICprdm0sIGNvbnN0IHN0cnVjdCBrdm1faW50cm9zcGVjdGlv biAqcWVtdSkKK3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bTsKKworCWlrdm0gPSBremFsbG9jKHNpemVv ZigqaWt2bSksIEdGUF9LRVJORUwpOworCWlmICghaWt2bSkKKwkJcmV0dXJuIGZhbHNlOworCisJ bWVtY3B5KCZpa3ZtLT51dWlkLCAmcWVtdS0+dXVpZCwgc2l6ZW9mKGlrdm0tPnV1aWQpKTsKKwor CWlrdm0tPmt2bSA9IGt2bTsKKwlrdm0tPmt2bWkgPSBpa3ZtOworCisJcmV0dXJuIHRydWU7Cit9 CisKIHN0cnVjdCBrdm1pICogX19tdXN0X2NoZWNrIGt2bWlfZ2V0KHN0cnVjdCBrdm0gKmt2bSkK IHsKIAlpZiAocmVmY291bnRfaW5jX25vdF96ZXJvKCZrdm0tPmt2bWlfcmVmKSkKQEAgLTI3LDEw ICs0NSwxMyBAQCBzdHJ1Y3Qga3ZtaSAqIF9fbXVzdF9jaGVjayBrdm1pX2dldChzdHJ1Y3Qga3Zt ICprdm0pCiAKIHN0YXRpYyB2b2lkIGt2bWlfZGVzdHJveShzdHJ1Y3Qga3ZtICprdm0pCiB7CisJ a2ZyZWUoa3ZtLT5rdm1pKTsKKwlrdm0tPmt2bWkgPSBOVUxMOwogfQogCiBzdGF0aWMgdm9pZCBr dm1pX3JlbGVhc2Uoc3RydWN0IGt2bSAqa3ZtKQogeworCWt2bWlfc29ja19wdXQoSUtWTShrdm0p KTsKIAlrdm1pX2Rlc3Ryb3koa3ZtKTsKIAogCWNvbXBsZXRlKCZrdm0tPmt2bWlfY29tcGxldGVk KTsKQEAgLTQzLDYgKzY0LDExMSBAQCB2b2lkIGt2bWlfcHV0KHN0cnVjdCBrdm0gKmt2bSkKIAkJ a3ZtaV9yZWxlYXNlKGt2bSk7CiB9CiAKK3N0YXRpYyB2b2lkIGt2bWlfZW5kX2ludHJvc3BlY3Rp b24oc3RydWN0IGt2bWkgKmlrdm0pCit7CisJc3RydWN0IGt2bSAqa3ZtID0gaWt2bS0+a3ZtOwor CisJLyogU2lnbmFsIFFFTVUgd2hpY2ggaXMgd2FpdGluZyBmb3IgUE9MTEhVUC4gKi8KKwlrdm1p X3NvY2tfc2h1dGRvd24oaWt2bSk7CisKKwkvKgorCSAqIEF0IHRoaXMgbW9tZW50IHRoZSBzb2Nr ZXQgaXMgc2h1dCBkb3duLCBubyBtb3JlIGNvbW1hbmRzIHdpbGwgY29tZQorCSAqIGZyb20gdGhl IGludHJvc3BlY3RvciwgYW5kIHRoZSBvbmx5IHdheSBpbnRvIHRoZSBpbnRyb3NwZWN0aW9uIGlz CisJICogdGhydSB0aGUgZXZlbnQgaGFuZGxlcnMuIE1ha2Ugc3VyZSB0aGUgaW50cm9zcGVjdGlv biBlbmRzLgorCSAqLworCWt2bWlfcHV0KGt2bSk7Cit9CisKK3N0YXRpYyBpbnQga3ZtaV9yZWN2 KHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3Qga3ZtaSAqaWt2bSA9IGFyZzsKKworCWt2bWlfaW5mbyhp a3ZtLCAiSG9va2luZyBWTVxuIik7CisKKwl3aGlsZSAoa3ZtaV9tc2dfcHJvY2Vzcyhpa3ZtKSkK KwkJOworCisJa3ZtaV9pbmZvKGlrdm0sICJVbmhvb2tpbmcgVk1cbiIpOworCisJa3ZtaV9lbmRf aW50cm9zcGVjdGlvbihpa3ZtKTsKKworCXJldHVybiAwOworfQorCitpbnQga3ZtaV9ob29rKHN0 cnVjdCBrdm0gKmt2bSwgY29uc3Qgc3RydWN0IGt2bV9pbnRyb3NwZWN0aW9uICpxZW11KQorewor CXN0cnVjdCBrdm1pICppa3ZtOworCWludCBlcnIgPSAwOworCisJLyogd2FpdCBmb3IgdGhlIHBy ZXZpb3VzIGludHJvc3BlY3Rpb24gdG8gZmluaXNoICovCisJZXJyID0gd2FpdF9mb3JfY29tcGxl dGlvbl9raWxsYWJsZSgma3ZtLT5rdm1pX2NvbXBsZXRlZCk7CisJaWYgKGVycikKKwkJcmV0dXJu IGVycjsKKworCS8qIGVuc3VyZSBubyBWQ1BVIGhvdHBsdWcgaGFwcGVucyB1bnRpbCB3ZSBzZXQg dGhlIHJlZmVyZW5jZSAqLworCW11dGV4X2xvY2soJmt2bS0+bG9jayk7CisKKwlpZiAoIWFsbG9j X2t2bWkoa3ZtLCBxZW11KSkgeworCQltdXRleF91bmxvY2soJmt2bS0+bG9jayk7CisJCXJldHVy biAtRU5PTUVNOworCX0KKwlpa3ZtID0gSUtWTShrdm0pOworCisJLyogaW50ZXJhY3Qgd2l0aCBv dGhlciBrZXJuZWwgY29tcG9uZW50cyBhZnRlciBzdHJ1Y3R1cmUgYWxsb2NhdGlvbiAqLworCWlm ICgha3ZtaV9zb2NrX2dldChpa3ZtLCBxZW11LT5mZCkpIHsKKwkJZXJyID0gLUVJTlZBTDsKKwkJ Z290byBlcnJfYWxsb2M7CisJfQorCisJLyoKKwkgKiBNYWtlIHN1cmUgYWxsIHRoZSBLVk0vS1ZN SSBzdHJ1Y3R1cmVzIGFyZSBsaW5rZWQgYW5kIG5vIHBvaW50ZXIKKwkgKiBpcyByZWFkIGFzIE5V TEwgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBjb3VudCBoYXMgYmVlbiBzZXQuCisJICovCisJc21wX21i X19iZWZvcmVfYXRvbWljKCk7CisJcmVmY291bnRfc2V0KCZrdm0tPmt2bWlfcmVmLCAxKTsKKwor CW11dGV4X3VubG9jaygma3ZtLT5sb2NrKTsKKworCWlrdm0tPnJlY3YgPSBrdGhyZWFkX3J1bihr dm1pX3JlY3YsIGlrdm0sICJrdm1pLXJlY3YiKTsKKwlpZiAoSVNfRVJSKGlrdm0tPnJlY3YpKSB7 CisJCWt2bWlfZXJyKGlrdm0sICJVbmFibGUgdG8gY3JlYXRlIHJlY2VpdmVyIHRocmVhZCFcbiIp OworCQllcnIgPSBQVFJfRVJSKGlrdm0tPnJlY3YpOworCQlnb3RvIGVycl9yZWN2OworCX0KKwor CXJldHVybiAwOworCitlcnJfcmVjdjoKKwkvKgorCSAqIGludHJvc3BlY3Rpb24gaGFzIG9maWNp YWxseSBzdGFydGVkIHNpbmNlIHJlZmVyZW5jZSBjb3VudCBoYXMgYmVlbgorCSAqIHNldCAoYW5k IHNvbWUgZXZlbnQgaGFuZGxlcnMgbWF5IGhhdmUgYWxyZWFkeSBhY3F1aXJlZCBpdCksIGJ1dAor CSAqIHdpdGhvdXQgdGhlIHJlY2VpdmVyIHRocmVhZDsgd2UgbXVzdCBlbXVsYXRlIGl0cyBzaHV0 ZG93biBiZWhhdmlvcgorCSAqLworCWt2bWlfZW5kX2ludHJvc3BlY3Rpb24oaWt2bSk7CisKKwly ZXR1cm4gZXJyOworCitlcnJfYWxsb2M6CisJa3ZtaV9yZWxlYXNlKGt2bSk7CisKKwltdXRleF91 bmxvY2soJmt2bS0+bG9jayk7CisKKwlyZXR1cm4gZXJyOworfQorCitpbnQga3ZtaV9pb2N0bF9o b29rKHN0cnVjdCBrdm0gKmt2bSwgdm9pZCBfX3VzZXIgKmFyZ3ApCit7CisJc3RydWN0IGt2bV9p bnRyb3NwZWN0aW9uIGk7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJmksIGFyZ3AsIHNpemVvZihp KSkpCisJCXJldHVybiAtRUZBVUxUOworCisJaWYgKGkucGFkZGluZykKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwlyZXR1cm4ga3ZtaV9ob29rKGt2bSwgJmkpOworfQorCiB2b2lkIGt2bWlfY3JlYXRl X3ZtKHN0cnVjdCBrdm0gKmt2bSkKIHsKIAlpbml0X2NvbXBsZXRpb24oJmt2bS0+a3ZtaV9jb21w bGV0ZWQpOwpAQCAtNTcsOCArMTgzLDI3IEBAIHZvaWQga3ZtaV9kZXN0cm95X3ZtKHN0cnVjdCBr dm0gKmt2bSkKIAlpZiAoIWlrdm0pCiAJCXJldHVybjsKIAorCS8qIHRyaWdnZXIgc29ja2V0IHNo dXRkb3duIC0ga3ZtaV9yZWN2KCkgd2lsbCBzdGFydCBzaHV0ZG93biBwcm9jZXNzICovCisJa3Zt aV9zb2NrX3NodXRkb3duKGlrdm0pOworCiAJa3ZtaV9wdXQoa3ZtKTsKIAogCS8qIHdhaXQgZm9y IGludHJvc3BlY3Rpb24gcmVzb3VyY2VzIHRvIGJlIHJlbGVhc2VkICovCiAJd2FpdF9mb3JfY29t cGxldGlvbl9raWxsYWJsZSgma3ZtLT5rdm1pX2NvbXBsZXRlZCk7CiB9CisKK2ludCBrdm1pX2lv Y3RsX3VuaG9vayhzdHJ1Y3Qga3ZtICprdm0sIGJvb2wgZm9yY2VfcmVzZXQpCit7CisJc3RydWN0 IGt2bWkgKmlrdm07CisJaW50IGVyciA9IDA7CisKKwlpa3ZtID0ga3ZtaV9nZXQoa3ZtKTsKKwlp ZiAoIWlrdm0pCisJCXJldHVybiAtRUZBVUxUOworCisJa3ZtX2luZm8oIlRPRE86ICVzIGZvcmNl X3Jlc2V0ICVkIiwgX19mdW5jX18sIGZvcmNlX3Jlc2V0KTsKKworCWt2bWlfcHV0KGt2bSk7CisK KwlyZXR1cm4gZXJyOworfQpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9pbnQuaCBiL3ZpcnQv a3ZtL2t2bWlfaW50LmgKaW5kZXggYWMyM2FkNmZjNGRmLi45YmM1MjA1Yzg3MTQgMTAwNjQ0Ci0t LSBhL3ZpcnQva3ZtL2t2bWlfaW50LmgKKysrIGIvdmlydC9rdm0va3ZtaV9pbnQuaApAQCAtMiwx MSArMiw0MiBAQAogI2lmbmRlZiBfX0tWTUlfSU5UX0hfXwogI2RlZmluZSBfX0tWTUlfSU5UX0hf XwogCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9rdm1faG9zdC5o PgogCisjaW5jbHVkZSA8dWFwaS9saW51eC9rdm1pLmg+CisKKyNkZWZpbmUga3ZtaV9kZWJ1Zyhp a3ZtLCBmbXQsIC4uLikgXAorCWt2bV9kZWJ1ZygiJXBVICIgZm10LCAmaWt2bS0+dXVpZCwgIyMg X19WQV9BUkdTX18pCisjZGVmaW5lIGt2bWlfaW5mbyhpa3ZtLCBmbXQsIC4uLikgXAorCWt2bV9p bmZvKCIlcFUgIiBmbXQsICZpa3ZtLT51dWlkLCAjIyBfX1ZBX0FSR1NfXykKKyNkZWZpbmUga3Zt aV93YXJuKGlrdm0sIGZtdCwgLi4uKSBcCisJa3ZtX2luZm8oIiVwVSBXQVJOSU5HOiAiIGZtdCwg Jmlrdm0tPnV1aWQsICMjIF9fVkFfQVJHU19fKQorI2RlZmluZSBrdm1pX3dhcm5fb25jZShpa3Zt LCBmbXQsIC4uLikgKHsgICAgICAgICAgICAgICAgICAgICBcCisJCXN0YXRpYyBib29sIF9fc2Vj dGlvbiguZGF0YS5vbmNlKSBfX3dhcm5lZDsgICBcCisJCWlmICghX193YXJuZWQpIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisJCQlfX3dhcm5lZCA9IHRydWU7ICAgICAgICAgICAg ICAgICAgICAgIFwKKwkJCWt2bWlfd2Fybihpa3ZtLCBmbXQsICMjIF9fVkFfQVJHU19fKTsgXAor CQl9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCX0pCisj ZGVmaW5lIGt2bWlfZXJyKGlrdm0sIGZtdCwgLi4uKSBcCisJa3ZtX2luZm8oIiVwVSBFUlJPUjog IiBmbXQsICZpa3ZtLT51dWlkLCAjIyBfX1ZBX0FSR1NfXykKKwogI2RlZmluZSBJS1ZNKGt2bSkg KChzdHJ1Y3Qga3ZtaSAqKSgoa3ZtKS0+a3ZtaSkpCiAKIHN0cnVjdCBrdm1pIHsKKwlzdHJ1Y3Qg a3ZtICprdm07CisKKwlzdHJ1Y3Qgc29ja2V0ICpzb2NrOworCXN0cnVjdCB0YXNrX3N0cnVjdCAq cmVjdjsKKworCXV1aWRfdCB1dWlkOwogfTsKIAorLyoga3ZtaV9tc2cuYyAqLworYm9vbCBrdm1p X3NvY2tfZ2V0KHN0cnVjdCBrdm1pICppa3ZtLCBpbnQgZmQpOwordm9pZCBrdm1pX3NvY2tfc2h1 dGRvd24oc3RydWN0IGt2bWkgKmlrdm0pOwordm9pZCBrdm1pX3NvY2tfcHV0KHN0cnVjdCBrdm1p ICppa3ZtKTsKK2Jvb2wga3ZtaV9tc2dfcHJvY2VzcyhzdHJ1Y3Qga3ZtaSAqaWt2bSk7CisKICNl bmRpZgpkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9tc2cuYyBiL3ZpcnQva3ZtL2t2bWlfbXNn LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZGUwMTJlYWZiNmQK LS0tIC9kZXYvbnVsbAorKysgYi92aXJ0L2t2bS9rdm1pX21zZy5jCkBAIC0wLDAgKzEsNDIgQEAK Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogS1ZNIGludHJvc3Bl Y3Rpb24KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBCaXRkZWZlbmRlciBTLlIuTC4K KyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9uZXQuaD4KKyNpbmNsdWRlICJrdm1pX2ludC5oIgor Citib29sIGt2bWlfc29ja19nZXQoc3RydWN0IGt2bWkgKmlrdm0sIGludCBmZCkKK3sKKwlzdHJ1 Y3Qgc29ja2V0ICpzb2NrOworCWludCByOworCisJc29jayA9IHNvY2tmZF9sb29rdXAoZmQsICZy KTsKKwlpZiAoIXNvY2spIHsKKwkJa3ZtaV9lcnIoaWt2bSwgIkludmFsaWQgZmlsZSBoYW5kbGU6 ICVkXG4iLCBmZCk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpa3ZtLT5zb2NrID0gc29jazsK KworCXJldHVybiB0cnVlOworfQorCit2b2lkIGt2bWlfc29ja19wdXQoc3RydWN0IGt2bWkgKmlr dm0pCit7CisJaWYgKGlrdm0tPnNvY2spCisJCXNvY2tmZF9wdXQoaWt2bS0+c29jayk7Cit9CisK K3ZvaWQga3ZtaV9zb2NrX3NodXRkb3duKHN0cnVjdCBrdm1pICppa3ZtKQoreworCWtlcm5lbF9z b2NrX3NodXRkb3duKGlrdm0tPnNvY2ssIFNIVVRfUkRXUik7Cit9CisKK2Jvb2wga3ZtaV9tc2df cHJvY2VzcyhzdHJ1Y3Qga3ZtaSAqaWt2bSkKK3sKKwlrdm1pX2luZm8oaWt2bSwgIlRPRE86ICVz IiwgX19mdW5jX18pOworCXJldHVybiBmYWxzZTsKK30KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KVmlydHVhbGl6YXRpb24gbWFpbGluZyBsaXN0ClZpcnR1 YWxpemF0aW9uQGxpc3RzLmxpbnV4LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhm b3VuZGF0aW9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3ZpcnR1YWxpemF0aW9u