From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-f72.google.com (mail-wm0-f72.google.com [74.125.82.72]) by kanga.kvack.org (Postfix) with ESMTP id 9B7EE6B025F for ; Fri, 22 Dec 2017 05:50:15 -0500 (EST) Received: by mail-wm0-f72.google.com with SMTP id r63so5025546wmb.9 for ; Fri, 22 Dec 2017 02:50:15 -0800 (PST) Received: from mx01.bbu.dsd.mx.bitdefender.com (mx01.bbu.dsd.mx.bitdefender.com. [91.199.104.161]) by mx.google.com with ESMTPS id 88si859153wro.410.2017.12.22.02.50.13 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 22 Dec 2017 02:50:14 -0800 (PST) Received: from smtp02.buh.bitdefender.net (smtp.bitdefender.biz [10.17.80.76]) by mx-sr.buh.bitdefender.com (Postfix) with ESMTP id A06737FBD9 for ; Fri, 22 Dec 2017 12:44:41 +0200 (EET) From: Mircea CIRJALIU-MELIU Subject: RE: [RFC PATCH v4 02/18] add memory map/unmap support for VM introspection on the guest side Date: Fri, 22 Dec 2017 10:44:39 +0000 Message-ID: <186bce2ec7e54a679878e2c8fd97e805@mb1xmail.bitdefender.biz> References: <20171218190642.7790-1-alazar@bitdefender.com> <20171218190642.7790-3-alazar@bitdefender.com> <61ea8939-3826-8d8b-0ba0-5f0cbc434543@oracle.com> In-Reply-To: <61ea8939-3826-8d8b-0ba0-5f0cbc434543@oracle.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Sender: owner-linux-mm@kvack.org List-ID: To: Patrick Colp , =?utf-8?B?QWRhbGJlciBMYXrEg3I=?= , "kvm@vger.kernel.org" Cc: "linux-mm@kvack.org" , Paolo Bonzini , =?utf-8?B?UmFkaW0gS3LEjW3DocWZ?= , =?utf-8?B?TWloYWkgRG9uyJt1?= Rml4ZWQgYWxsIHRoZSBpc3N1ZXMgYWRkcmVzc2VkIGluIHRoZSBvcmlnaW5hbCBjb21tZW50cyAr IG1vcmUuDQpQbGVhc2Ugc2VlIGlubGluZSBhbnN3ZXJzLg0KDQotLS0tLU9yaWdpbmFsIE1lc3Nh Z2UtLS0tLQ0KRnJvbTogUGF0cmljayBDb2xwIFttYWlsdG86cGF0cmljay5jb2xwQG9yYWNsZS5j b21dIA0KU2VudDogVGh1cnNkYXksIDIxIERlY2VtYmVyIDIwMTcgMjM6MTcNClRvOiBBZGFsYmVy IExhesSDciA8YWxhemFyQGJpdGRlZmVuZGVyLmNvbT47IGt2bUB2Z2VyLmtlcm5lbC5vcmcNCkNj OiBsaW51eC1tbUBrdmFjay5vcmc7IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+ OyBSYWRpbSBLcsSNbcOhxZkgPHJrcmNtYXJAcmVkaGF0LmNvbT47IFhpYW8gR3Vhbmdyb25nIDxn dWFuZ3JvbmcueGlhb0BsaW51eC5pbnRlbC5jb20+OyBNaWhhaSBEb27Im3UgPG1kb250dUBiaXRk ZWZlbmRlci5jb20+OyBNaXJjZWEgQ0lSSkFMSVUtTUVMSVUgPG1jaXJqYWxpdUBiaXRkZWZlbmRl ci5jb20+DQpTdWJqZWN0OiBSZTogW1JGQyBQQVRDSCB2NCAwMi8xOF0gYWRkIG1lbW9yeSBtYXAv dW5tYXAgc3VwcG9ydCBmb3IgVk0gaW50cm9zcGVjdGlvbiBvbiB0aGUgZ3Vlc3Qgc2lkZQ0KDQpP biAyMDE3LTEyLTE4IDAyOjA2IFBNLCBBZGFsYmVyIExhesSDciB3cm90ZToNCj4gRnJvbTogQWRh bGJlcnQgTGF6YXIgPGFsYXphckBiaXRkZWZlbmRlci5jb20+DQo+IA0KPiBBbiBpbnRyb3NwZWN0 aW9uIHRvb2wgcnVubmluZyBpbiBhIGRlZGljYXRlZCBWTSBjYW4gdXNlIHRoZSBuZXcgZGV2aWNl DQo+ICgvZGV2L2t2bW1lbSkgdG8gbWFwIG1lbW9yeSBmcm9tIG90aGVyIGludHJvc3BlY3RlZCBW TS1zLg0KPiANCj4gVHdvIGlvY3RsIG9wZXJhdGlvbnMgYXJlIHN1cHBvcnRlZDoNCj4gICAgLSBL Vk1fSU5UUk9fTUVNX01BUC9zdHJ1Y3Qga3ZtaV9tZW1fbWFwDQo+ICAgIC0gS1ZNX0lOVFJPX01F TV9VTk1BUC91bnNpZ25lZCBsb25nDQo+IA0KPiBJbiBvcmRlciB0byBtYXAgYW4gaW50cm9zcGVj dGVkIGdwYSB0byB0aGUgbG9jYWwgZ3ZhLCB0aGUgcHJvY2VzcyANCj4gdXNpbmcgdGhpcyBkZXZp Y2UgbmVlZHMgdG8gb2J0YWluIGEgdG9rZW4gZnJvbSB0aGUgaG9zdCBLVk1JIHN1YnN5c3RlbSAN Cj4gKHNlZSBEb2N1bWVudGF0aW9uL3ZpcnR1YWwva3ZtL2t2bWkucnN0IC0gS1ZNSV9HRVRfTUFQ X1RPS0VOKS4NCj4gDQo+IEJvdGggb3BlcmF0aW9ucyB1c2UgaHlwZXJjYWxscyAoS1ZNX0hDX01F TV9NQVAsIEtWTV9JTlRST19NRU1fVU5NQVApIA0KPiB0byBwYXNzIHRoZSByZXF1ZXN0cyB0byB0 aGUgaG9zdCBrZXJuZWwvS1ZNaSAoc2VlIGh5cGVyY2FsbHMudHh0KS4NCj4gDQo+IFNpZ25lZC1v ZmYtYnk6IE1pcmNlYSBDw65yamFsaXUgPG1jaXJqYWxpdUBiaXRkZWZlbmRlci5jb20+DQo+IC0t LQ0KPiAgIGFyY2gveDg2L0tjb25maWcgICAgICAgICAgICAgICAgICB8ICAgOSArDQo+ICAgYXJj aC94ODYvaW5jbHVkZS9hc20va3ZtaV9ndWVzdC5oIHwgIDEwICsNCj4gICBhcmNoL3g4Ni9rZXJu ZWwvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKw0KPiAgIGFyY2gveDg2L2tlcm5lbC9rdm1pX21l bV9ndWVzdC5jICB8ICAyNiArKysNCj4gICB2aXJ0L2t2bS9rdm1pX21lbV9ndWVzdC5jICAgICAg ICAgfCAzNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gICA1IGZp bGVzIGNoYW5nZWQsIDQyNSBpbnNlcnRpb25zKCspDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFy Y2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfZ3Vlc3QuaA0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBh cmNoL3g4Ni9rZXJuZWwva3ZtaV9tZW1fZ3Vlc3QuYw0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCB2 aXJ0L2t2bS9rdm1pX21lbV9ndWVzdC5jDQo+IA0KPiBkaWZmIC0tZ2l0IGEvYXJjaC94ODYvS2Nv bmZpZyBiL2FyY2gveDg2L0tjb25maWcgaW5kZXggDQo+IDhlZWQzZjk0YmZjNy4uNmUyNTQ4ZjRk NDRjIDEwMDY0NA0KPiAtLS0gYS9hcmNoL3g4Ni9LY29uZmlnDQo+ICsrKyBiL2FyY2gveDg2L0tj b25maWcNCj4gQEAgLTc4Miw2ICs3ODIsMTUgQEAgY29uZmlnIEtWTV9ERUJVR19GUw0KPiAgIAkg IFN0YXRpc3RpY3MgYXJlIGRpc3BsYXllZCBpbiBkZWJ1Z2ZzIGZpbGVzeXN0ZW0uIEVuYWJsaW5n IHRoaXMgb3B0aW9uDQo+ICAgCSAgbWF5IGluY3VyIHNpZ25pZmljYW50IG92ZXJoZWFkLg0KPiAg IA0KPiArY29uZmlnIEtWTUlfTUVNX0dVRVNUDQo+ICsJYm9vbCAiS1ZNIE1lbW9yeSBJbnRyb3Nw ZWN0aW9uIHN1cHBvcnQgb24gR3Vlc3QiDQo+ICsJZGVwZW5kcyBvbiBLVk1fR1VFU1QNCj4gKwlk ZWZhdWx0IG4NCj4gKwktLS1oZWxwLS0tDQo+ICsJICBUaGlzIG9wdGlvbiBlbmFibGVzIGZ1bmN0 aW9ucyBhbmQgaHlwZXJjYWxscyBmb3Igc2VjdXJpdHkgYXBwbGljYXRpb25zDQo+ICsJICBydW5u aW5nIGluIGEgc2VwYXJhdGUgVk0gdG8gY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIG90aGVyIFZN LXMsIHF1ZXJ5DQo+ICsJICB0aGUgc3RhdGUgb2YgdGhlIHZDUFUtcyAoR1BSLXMsIE1TUi1zIGV0 Yy4pLg0KPiArDQo+ICAgY29uZmlnIFBBUkFWSVJUX1RJTUVfQUNDT1VOVElORw0KPiAgIAlib29s ICJQYXJhdmlydHVhbCBzdGVhbCB0aW1lIGFjY291bnRpbmciDQo+ICAgCWRlcGVuZHMgb24gUEFS QVZJUlQNCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL2t2bWlfZ3Vlc3QuaCAN Cj4gYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1pX2d1ZXN0LmgNCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5jN2VkNTNhOTM4ZTANCj4gLS0tIC9kZXYvbnVs bA0KPiArKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9rdm1pX2d1ZXN0LmgNCj4gQEAgLTAsMCAr MSwxMCBAQA0KPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8gI2lmbmRl ZiBfX0tWTUlfR1VFU1RfSF9fIA0KPiArI2RlZmluZSBfX0tWTUlfR1VFU1RfSF9fDQo+ICsNCj4g K2xvbmcga3ZtaV9hcmNoX21hcF9oYyhzdHJ1Y3Qga3ZtaV9tYXBfbWVtX3Rva2VuICp0a25wLA0K PiArCWdwYV90IHJlcV9ncGEsIGdwYV90IG1hcF9ncGEpOw0KPiArbG9uZyBrdm1pX2FyY2hfdW5t YXBfaGMoZ3BhX3QgbWFwX2dwYSk7DQo+ICsNCj4gKw0KPiArI2VuZGlmDQo+IGRpZmYgLS1naXQg YS9hcmNoL3g4Ni9rZXJuZWwvTWFrZWZpbGUgYi9hcmNoL3g4Ni9rZXJuZWwvTWFrZWZpbGUgaW5k ZXggDQo+IDgxYmI1NjVmNDQ5Ny4uZmRiNTRiNjVlNDZlIDEwMDY0NA0KPiAtLS0gYS9hcmNoL3g4 Ni9rZXJuZWwvTWFrZWZpbGUNCj4gKysrIGIvYXJjaC94ODYva2VybmVsL01ha2VmaWxlDQo+IEBA IC0xMTEsNiArMTExLDcgQEAgb2JqLSQoQ09ORklHX1BBUkFWSVJUKQkJKz0gcGFyYXZpcnQubyBw YXJhdmlydF9wYXRjaF8kKEJJVFMpLm8NCj4gICBvYmotJChDT05GSUdfUEFSQVZJUlRfU1BJTkxP Q0tTKSs9IHBhcmF2aXJ0LXNwaW5sb2Nrcy5vDQo+ICAgb2JqLSQoQ09ORklHX1BBUkFWSVJUX0NM T0NLKQkrPSBwdmNsb2NrLm8NCj4gICBvYmotJChDT05GSUdfWDg2X1BNRU1fTEVHQUNZX0RFVklD RSkgKz0gcG1lbS5vDQo+ICtvYmotJChDT05GSUdfS1ZNSV9NRU1fR1VFU1QpCSs9IGt2bWlfbWVt X2d1ZXN0Lm8gLi4vLi4vLi4vdmlydC9rdm0va3ZtaV9tZW1fZ3Vlc3Qubw0KPiAgIA0KPiAgIG9i ai0kKENPTkZJR19FSVNBKQkJKz0gZWlzYS5vDQo+ICAgb2JqLSQoQ09ORklHX1BDU1BLUl9QTEFU Rk9STSkJKz0gcGNzcGVha2VyLm8NCj4gZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9rdm1p X21lbV9ndWVzdC5jIA0KPiBiL2FyY2gveDg2L2tlcm5lbC9rdm1pX21lbV9ndWVzdC5jDQo+IG5l dyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzRlMjYxM2Y5MGYzDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvYXJjaC94ODYva2VybmVsL2t2bWlfbWVtX2d1ZXN0LmMN Cj4gQEAgLTAsMCArMSwyNiBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjANCj4gKy8qDQo+ICsgKiBLVk0gaW50cm9zcGVjdGlvbiBndWVzdCBpbXBsZW1lbnRhdGlvbg0K PiArICoNCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNyBCaXRkZWZlbmRlciBTLlIuTC4NCj4gKyAq DQo+ICsgKiBBdXRob3I6DQo+ICsgKiAgIE1pcmNlYSBDaXJqYWxpdSA8bWNpcmphbGl1QGJpdGRl ZmVuZGVyLmNvbT4NCj4gKyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8dWFwaS9saW51eC9rdm1pLmg+ DQo+ICsjaW5jbHVkZSA8dWFwaS9saW51eC9rdm1fcGFyYS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L2t2bV90eXBlcy5oPg0KPiArI2luY2x1ZGUgPGFzbS9rdm1fcGFyYS5oPg0KPiArDQo+ICtsb25n IGt2bWlfYXJjaF9tYXBfaGMoc3RydWN0IGt2bWlfbWFwX21lbV90b2tlbiAqdGtucCwNCj4gKwkJ ICAgICAgIGdwYV90IHJlcV9ncGEsIGdwYV90IG1hcF9ncGEpIHsNCj4gKwlyZXR1cm4ga3ZtX2h5 cGVyY2FsbDMoS1ZNX0hDX01FTV9NQVAsICh1bnNpZ25lZCBsb25nKXRrbnAsDQo+ICsJCQkgICAg ICByZXFfZ3BhLCBtYXBfZ3BhKTsNCj4gK30NCj4gKw0KPiArbG9uZyBrdm1pX2FyY2hfdW5tYXBf aGMoZ3BhX3QgbWFwX2dwYSkgew0KPiArCXJldHVybiBrdm1faHlwZXJjYWxsMShLVk1fSENfTUVN X1VOTUFQLCBtYXBfZ3BhKTsgfQ0KPiBkaWZmIC0tZ2l0IGEvdmlydC9rdm0va3ZtaV9tZW1fZ3Vl c3QuYyBiL3ZpcnQva3ZtL2t2bWlfbWVtX2d1ZXN0LmMgbmV3IA0KPiBmaWxlIG1vZGUgMTAwNjQ0 IGluZGV4IDAwMDAwMDAwMDAwMC4uMTE4YzIyY2E0N2M1DQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvdmlydC9rdm0va3ZtaV9tZW1fZ3Vlc3QuYw0KPiBAQCAtMCwwICsxLDM3OSBAQA0KPiArLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gKy8qDQo+ICsgKiBLVk0gaW50cm9z cGVjdGlvbiBndWVzdCBpbXBsZW1lbnRhdGlvbg0KPiArICoNCj4gKyAqIENvcHlyaWdodCAoQykg MjAxNyBCaXRkZWZlbmRlciBTLlIuTC4NCj4gKyAqDQo+ICsgKiBBdXRob3I6DQo+ICsgKiAgIE1p cmNlYSBDaXJqYWxpdSA8bWNpcmphbGl1QGJpdGRlZmVuZGVyLmNvbT4NCj4gKyAqLw0KPiArDQo+ ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21pc2NkZXZp Y2UuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9mcy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L21tLmg+ DQo+ICsjaW5jbHVkZSA8bGludXgvbW1hbi5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ DQo+ICsjaW5jbHVkZSA8bGludXgva3ZtX2hvc3QuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9rdm1f cGFyYS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4NCj4gKyNpbmNsdWRlIDxsaW51 eC9zbGFiLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcm1hcC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L3NjaGVkLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L3NwaW5sb2NrLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4NCj4gKyNpbmNsdWRlIDx1 YXBpL2xpbnV4L2t2bWkuaD4NCj4gKyNpbmNsdWRlIDxhc20va3ZtaV9ndWVzdC5oPg0KPiArDQo+ ICsjZGVmaW5lIEFTU0VSVChleHApIEJVR19PTighKGV4cCkpDQo+ICsNCj4gKw0KPiArc3RhdGlj IHN0cnVjdCBsaXN0X2hlYWQgZmlsZV9saXN0Ow0KPiArc3RhdGljIHNwaW5sb2NrX3QgZmlsZV9s b2NrOw0KPiArDQo+ICtzdHJ1Y3QgZmlsZV9tYXAgew0KPiArCXN0cnVjdCBsaXN0X2hlYWQgZmls ZV9saXN0Ow0KPiArCXN0cnVjdCBmaWxlICpmaWxlOw0KPiArCXN0cnVjdCBsaXN0X2hlYWQgbWFw X2xpc3Q7DQo+ICsJc3RydWN0IG11dGV4IGxvY2s7DQo+ICsJaW50IGFjdGl2ZTsJLyogZm9yIHRl YXJpbmcgZG93biAqLw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHBhZ2VfbWFwIHsNCj4gKwlzdHJ1 Y3QgbGlzdF9oZWFkIG1hcF9saXN0Ow0KPiArCV9fdTY0IGdwYTsNCj4gKwl1bnNpZ25lZCBsb25n IHZhZGRyOw0KPiArCXVuc2lnbmVkIGxvbmcgcGFkZHI7DQo+ICt9Ow0KPiArDQo+ICsNCj4gK3N0 YXRpYyBpbnQga3ZtX2Rldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGVwLCBzdHJ1Y3QgZmlsZSAq ZmlscCkgew0KPiArCXN0cnVjdCBmaWxlX21hcCAqZm1wOw0KPiArDQo+ICsJcHJfZGVidWcoImt2 bWk6IGZpbGUgJTAxNmx4IG9wZW5lZCBieSBwcm9jZXNzICVzXG4iLA0KPiArCQkgKHVuc2lnbmVk IGxvbmcpIGZpbHAsIGN1cnJlbnQtPmNvbW0pOw0KPiArDQo+ICsJLyogbGluayB0aGUgZmlsZSAx OjEgd2l0aCBzdWNoIGEgc3RydWN0dXJlICovDQo+ICsJZm1wID0ga21hbGxvYyhzaXplb2Yoc3Ry dWN0IGZpbGVfbWFwKSwgR0ZQX0tFUk5FTCk7DQoNCkkgdGhpbmsgdGhpcyBpcyBzdXBwb3NlZCB0 byBiZSAia21hbGxvYyhzaXplb2YoKmZtcCksIEdGUF9LRVJORUwpIi4NCg0KRml4ZWQgYWxsIHRo ZSBrbWFsbG9jKClzIGluIGt2bWlfbWVtKiBmaWxlcy4NCg0KPiArCWlmIChmbXAgPT0gTlVMTCkN Cj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKwlJTklUX0xJU1RfSEVBRCgmZm1wLT5maWxl X2xpc3QpOw0KPiArCWZtcC0+ZmlsZSA9IGZpbHA7DQo+ICsJZmlscC0+cHJpdmF0ZV9kYXRhID0g Zm1wOw0KPiArCUlOSVRfTElTVF9IRUFEKCZmbXAtPm1hcF9saXN0KTsNCj4gKwltdXRleF9pbml0 KCZmbXAtPmxvY2spOw0KPiArCWZtcC0+YWN0aXZlID0gMTsNCj4gKw0KPiArCS8qIGFkZCB0aGUg ZW50cnkgdG8gdGhlIGdsb2JhbCBsaXN0ICovDQo+ICsJc3Bpbl9sb2NrKCZmaWxlX2xvY2spOw0K PiArCWxpc3RfYWRkX3RhaWwoJmZtcC0+ZmlsZV9saXN0LCAmZmlsZV9saXN0KTsNCj4gKwlzcGlu X3VubG9jaygmZmlsZV9sb2NrKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICsv KiBhY3R1YWxseSBkb2VzIHRoZSBtYXBwaW5nIG9mIGEgcGFnZSAqLyBzdGF0aWMgbG9uZyANCj4g K19kb19tYXBwaW5nKHN0cnVjdCBrdm1pX21lbV9tYXAgKm1hcF9yZXEsIHN0cnVjdCBwYWdlX21h cCAqcG1hcCkNCg0KSGVyZSB5b3UgaGF2ZSBhICJzdHJ1Y3QgcGFnZV9tYXAiIGFuZCBjYWxsIGl0 IHBtYXAuIEhvd2V2ZXIsIGluIHRoZSByZXN0IG9mIHRoZSBjb2RlLCB3aGVuZXZlciB0aGVyZSdz IGEgInN0cnVjdCBwYWdlX21hcCIgaXQncyBjYWxsZWQgcG1wLiBJdCBzZWVtcyB0aGF0IGl0IHdv dWxkIGJlIGdvb2QgdG8gc3RheSBjb25zaXN0ZW50IHdpdGggdGhlIG5hbWluZywgc28gcGVyaGFw cyByZW5hbWUgaXQgaGVyZSB0byBwbXAgYXMgd2VsbD8NCg0KRG9uZS4NCg0KPiArew0KPiArCXVu c2lnbmVkIGxvbmcgcGFkZHI7DQo+ICsJc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEgPSBOVUxM OyA+ICsJc3RydWN0IHBhZ2UgKnBhZ2U7DQoNCk91dCBvZiBjdXJpb3NpdHksIHdoeSBkbyB5b3Ug c2V0ICIqdm1hID0gTlVMTCIgYnV0IG5vdCAiKnBhZ2UgPSBOVUxMIj8NCg0KTGVmdG92ZXIgZnJv bSBvbGRlciBjb2RlLiBSZW1vdmVkLg0KDQo+ICsJbG9uZyByZXN1bHQ7DQo+ICsNCj4gKwlwcl9k ZWJ1Zygia3ZtaTogbWFwcGluZyByZW1vdGUgR1BBICUwMTZsbHggaW50byAlMDE2bGx4XG4iLA0K PiArCQkgbWFwX3JlcS0+Z3BhLCBtYXBfcmVxLT5ndmEpOw0KPiArDQo+ICsJLyogY2hlY2sgYWNj ZXNzIHRvIG1lbW9yeSBsb2NhdGlvbiAqLw0KPiArCWlmICghYWNjZXNzX29rKFZFUklGWV9SRUFE LCBtYXBfcmVxLT5ndmEsIFBBR0VfU0laRSkpIHsNCj4gKwkJcHJfZXJyKCJrdm1pOiBpbnZhbGlk IHZpcnR1YWwgYWRkcmVzcyBmb3IgbWFwcGluZ1xuIik7DQo+ICsJCXJldHVybiAtRUlOVkFMOw0K PiArCX0NCj4gKw0KPiArCWRvd25fcmVhZCgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsNCj4gKw0K PiArCS8qIGZpbmQgdGhlIHBhZ2UgdG8gYmUgcmVwbGFjZWQgKi8NCj4gKwl2bWEgPSBmaW5kX3Zt YShjdXJyZW50LT5tbSwgbWFwX3JlcS0+Z3ZhKTsNCj4gKwlpZiAoSVNfRVJSX09SX05VTEwodm1h KSkgew0KPiArCQlyZXN1bHQgPSBQVFJfRVJSKHZtYSk7DQo+ICsJCXByX2Vycigia3ZtaTogZmlu ZF92bWEoKSBmYWlsZWQgd2l0aCByZXN1bHQgJWxkXG4iLCByZXN1bHQpOw0KPiArCQlnb3RvIG91 dDsNCj4gKwl9DQo+ICsNCj4gKwlwYWdlID0gZm9sbG93X3BhZ2Uodm1hLCBtYXBfcmVxLT5ndmEs IDApOw0KPiArCWlmIChJU19FUlJfT1JfTlVMTChwYWdlKSkgew0KPiArCQlyZXN1bHQgPSBQVFJf RVJSKHBhZ2UpOw0KPiArCQlwcl9lcnIoImt2bWk6IGZvbGxvd19wYWdlKCkgZmFpbGVkIHdpdGgg cmVzdWx0ICVsZFxuIiwgcmVzdWx0KTsNCj4gKwkJZ290byBvdXQ7DQo+ICsJfQ0KPiArDQo+ICsJ aWYgKElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX1ZNKSkNCj4gKwkJZHVtcF9wYWdlKHBhZ2UsICJw YWdlIHRvIG1hcF9yZXEgaW50byIpOw0KPiArDQo+ICsJV0FSTihpc196ZXJvX3BmbihwYWdlX3Rv X3BmbihwYWdlKSksICJ6ZXJvLXBhZ2Ugc3RpbGwgbWFwcGVkIik7DQo+ICsNCj4gKwkvKiBnZXQg dGhlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIHN0b3JlIGl0IGluIHBhZ2VfbWFwICovDQo+ICsJcGFk ZHIgPSBwYWdlX3RvX3BoeXMocGFnZSk7DQo+ICsJcHJfZGVidWcoImt2bWk6IHBhZ2UgcGh5cyBh ZGRyICUwMTZseFxuIiwgcGFkZHIpOw0KPiArCXBtYXAtPnBhZGRyID0gcGFkZHI7DQo+ICsNCj4g KwkvKiBsYXN0IHRoaW5nIHRvIGRvIGlzIGhvc3QgbWFwcGluZyAqLw0KPiArCXJlc3VsdCA9IGt2 bWlfYXJjaF9tYXBfaGMoJm1hcF9yZXEtPnRva2VuLCBtYXBfcmVxLT5ncGEsIHBhZGRyKTsNCj4g KwlpZiAoSVNfRVJSX1ZBTFVFKHJlc3VsdCkpIHsNCj4gKwkJcHJfZXJyKCJrdm1pOiBIQyBmYWls ZWQgd2l0aCByZXN1bHQgJWxkXG4iLCByZXN1bHQpOw0KPiArCQlnb3RvIG91dDsNCj4gKwl9DQo+ ICsNCj4gK291dDoNCj4gKwl1cF9yZWFkKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOw0KPiArDQo+ ICsJcmV0dXJuIHJlc3VsdDsNCj4gK30NCj4gKw0KPiArLyogYWN0dWFsbHkgZG9lcyB0aGUgdW5t YXBwaW5nIG9mIGEgcGFnZSAqLyBzdGF0aWMgbG9uZyANCj4gK19kb191bm1hcHBpbmcodW5zaWdu ZWQgbG9uZyBwYWRkcikgew0KPiArCWxvbmcgcmVzdWx0Ow0KPiArDQo+ICsJcHJfZGVidWcoImt2 bWk6IHVubWFwcGluZyByZXF1ZXN0IGZvciBwaHlzIGFkZHIgJTAxNmx4XG4iLCBwYWRkcik7DQo+ ICsNCj4gKwkvKiBsb2NhbCBHUEEgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgbWFwcGluZyBvbiB0 aGUgaG9zdCAqLw0KPiArCXJlc3VsdCA9IGt2bWlfYXJjaF91bm1hcF9oYyhwYWRkcik7DQo+ICsJ aWYgKElTX0VSUl9WQUxVRShyZXN1bHQpKQ0KPiArCQlwcl93YXJuKCJrdm1pOiBIQyBmYWlsZWQg d2l0aCByZXN1bHQgJWxkXG4iLCByZXN1bHQpOw0KPiArDQo+ICsJcmV0dXJuIHJlc3VsdDsNCj4g K30NCj4gKw0KPiArc3RhdGljIGxvbmcga3ZtX2Rldl9pb2N0bF9tYXAoc3RydWN0IGZpbGVfbWFw ICpmbXAsIHN0cnVjdCANCj4gK2t2bWlfbWVtX21hcCAqbWFwKSB7DQo+ICsJc3RydWN0IHBhZ2Vf bWFwICpwbXA7DQo+ICsJbG9uZyByZXN1bHQgPSAwOw0KDQpPdXQgb2YgY3VyaW9zaXR5IGFnYWlu LCB3aHkgZG8geW91IHNldCAicmVzdWx0ID0gMCIgaGVyZSB3aGVuIGl0J3MgYWx3YXlzIHNldCBi ZWZvcmUgdXNlZCAoYW5kLCBmb3IgZS5nLiwgX2RvX3VubWFwcGluZygpIGRvZXNuJ3QgZG8gInJl c3VsdCA9IDAiKT8NCg0KU2FtZSBhcyBhYm92ZS4gQ2xlYW5lZCB1cCB1bm5lY2Vzc2FyeSBhc3Np Z25tZW50cyB0byByZXN1bHQgaW4gdGhlIHJlc3Qgb2YgdGhlIGNvZGUuDQoNCj4gKw0KPiArCWlm ICghYWNjZXNzX29rKFZFUklGWV9SRUFELCBtYXAtPmd2YSwgUEFHRV9TSVpFKSkNCj4gKwkJcmV0 dXJuIC1FSU5WQUw7DQo+ICsJaWYgKCFhY2Nlc3Nfb2soVkVSSUZZX1dSSVRFLCBtYXAtPmd2YSwg UEFHRV9TSVpFKSkNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKwkvKiBwcmVwYXJlIGxp c3QgZW50cnkgKi8NCj4gKwlwbXAgPSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgcGFnZV9tYXApLCBH RlBfS0VSTkVMKTsNCg0KVGhpcyBzaG91bGQgYWxzbyBwcm9iYWJseSBiZSAia21hbGxvYyhzaXpl b2YoKnBtcCksIEdGUF9LRVJORUwpIi4NCg0KRml4ZWQuDQoNCj4gKwlpZiAocG1wID09IE5VTEwp DQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArDQo+ICsJSU5JVF9MSVNUX0hFQUQoJnBtcC0+bWFw X2xpc3QpOw0KPiArCXBtcC0+Z3BhID0gbWFwLT5ncGE7DQo+ICsJcG1wLT52YWRkciA9IG1hcC0+ Z3ZhOw0KPiArDQo+ICsJLyogYWNxdWlyZSB0aGUgZmlsZSBtYXBwaW5nICovDQo+ICsJbXV0ZXhf bG9jaygmZm1wLT5sb2NrKTsNCj4gKw0KPiArCS8qIGNoZWNrIGlmIG90aGVyIHRocmVhZCBpcyBj bG9zaW5nIHRoZSBmaWxlICovDQo+ICsJaWYgKCFmbXAtPmFjdGl2ZSkgew0KPiArCQlyZXN1bHQg PSAtRU5PREVWOw0KPiArCQlwcl93YXJuKCJrdm1pOiB1bmFibGUgdG8gbWFwLCBmaWxlIGlzIGJl aW5nIGNsb3NlZFxuIik7DQo+ICsJCWdvdG8gb3V0X2VycjsNCj4gKwl9DQo+ICsNCj4gKwkvKiBk byB0aGUgYWN0dWFsIG1hcHBpbmcgKi8NCj4gKwlyZXN1bHQgPSBfZG9fbWFwcGluZyhtYXAsIHBt cCk7DQo+ICsJaWYgKElTX0VSUl9WQUxVRShyZXN1bHQpKQ0KPiArCQlnb3RvIG91dF9lcnI7DQo+ ICsNCj4gKwkvKiBsaW5rIHRvIGxpc3QgKi8NCj4gKwlsaXN0X2FkZF90YWlsKCZwbXAtPm1hcF9s aXN0LCAmZm1wLT5tYXBfbGlzdCk7DQo+ICsNCj4gKwkvKiBhbGwgZmluZSAqLw0KPiArCXJlc3Vs dCA9IDA7DQo+ICsJZ290byBvdXRfZmluYWxpemU7DQo+ICsNCj4gK291dF9lcnI6DQo+ICsJa2Zy ZWUocG1wKTsNCj4gKw0KPiArb3V0X2ZpbmFsaXplOg0KPiArCW11dGV4X3VubG9jaygmZm1wLT5s b2NrKTsNCj4gKw0KPiArCXJldHVybiByZXN1bHQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBsb25n IGt2bV9kZXZfaW9jdGxfdW5tYXAoc3RydWN0IGZpbGVfbWFwICpmbXAsIHVuc2lnbmVkIGxvbmcg DQo+ICt2YWRkcikgew0KPiArCXN0cnVjdCBsaXN0X2hlYWQgKmN1cjsNCj4gKwlzdHJ1Y3QgcGFn ZV9tYXAgKnBtcDsNCj4gKwlib29sIGZvdW5kID0gZmFsc2U7DQo+ICsNCj4gKwkvKiBhY3F1aXJl IHRoZSBmaWxlICovDQo+ICsJbXV0ZXhfbG9jaygmZm1wLT5sb2NrKTsNCj4gKw0KPiArCS8qIGNo ZWNrIGlmIG90aGVyIHRocmVhZCBpcyBjbG9zaW5nIHRoZSBmaWxlICovDQo+ICsJaWYgKCFmbXAt PmFjdGl2ZSkgew0KPiArCQltdXRleF91bmxvY2soJmZtcC0+bG9jayk7DQoNCldvdWxkbid0IHRo aXMgYmUgYmV0dGVyIHJlcGxhY2VkIHdpdGggYSAiZ290byBvdXRfZXJyIiBsaWtlIGluIGt2bV9k ZXZfaW9jdGxfbWFwKCk/DQoNCk5vdCByZWFsbHkuIEkgdXNlZCB0aGUgb3V0X2Vyci9vdXRfZmlu YWxpemUgcmVjb3ZlcnkgbW9kZWwgZm9yIGNhc2VzIHdoZXJlIGFsbCB0aGUgYWN0aW9uIGhhcHBl bnMgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgdGhlIGxvY2sgaGFzIHRvIGJlIGNsb3Nl ZCBhdCB0aGUgZW5kLg0KSW4gdGhpcyBjYXNlLCBtb3JlIGFjdGlvbnMgY2FuIGJlIHRha2VuIG91 dHNpZGUgdGhlIGxvY2suDQpCdXQgcmVmYWN0b3JlZCBhbnl3YXkgZm9yIHRoZSBzYWtlIG9mIGNv bnNpc3RlbmN5Lg0KDQo+ICsJCXByX3dhcm4oImt2bWk6IHVuYWJsZSB0byB1bm1hcCwgZmlsZSBp cyBiZWluZyBjbG9zZWRcbiIpOw0KPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gKwl9DQo+ICsNCj4g KwkvKiBjaGVjayB0aGF0IHRoaXMgYWRkcmVzcyBiZWxvbmdzIHRvIHVzICovDQo+ICsJbGlzdF9m b3JfZWFjaChjdXIsICZmbXAtPm1hcF9saXN0KSB7DQo+ICsJCXBtcCA9IGxpc3RfZW50cnkoY3Vy LCBzdHJ1Y3QgcGFnZV9tYXAsIG1hcF9saXN0KTsNCj4gKw0KPiArCQkvKiBmb3VuZCAqLw0KPiAr CQlpZiAocG1wLT52YWRkciA9PSB2YWRkcikgew0KPiArCQkJZm91bmQgPSB0cnVlOw0KPiArCQkJ YnJlYWs7DQo+ICsJCX0NCj4gKwl9DQo+ICsNCj4gKwkvKiBub3QgZm91bmQgPyAqLw0KPiArCWlm ICghZm91bmQpIHsNCj4gKwkJbXV0ZXhfdW5sb2NrKCZmbXAtPmxvY2spOw0KDQpIZXJlIHRvbzog ImdvdG8gb3V0X2VyciIuDQoNCkZpeGVkIGZvciBib3RoIGNhc2VzLiBPbmx5IDEgY2FsbCB0byBt dXRleF91bmxvY2soKSBkb25lIG5vdy4NCg0KPiArCQlwcl9lcnIoImt2bWk6IGFkZHJlc3MgJTAx Nmx4IG5vdCBtYXBwZWRcbiIsIHZhZGRyKTsNCj4gKwkJcmV0dXJuIC1FTk9FTlQ7DQo+ICsJfQ0K PiArDQo+ICsJLyogZGVjb3VwbGUgZ3Vlc3QgbWFwcGluZyAqLw0KPiArCWxpc3RfZGVsKCZwbXAt Pm1hcF9saXN0KTsNCj4gKwltdXRleF91bmxvY2soJmZtcC0+bG9jayk7DQoNCkluIGt2bV9kZXZf aW9jdGxfbWFwKCksIHRoZSBmbXAgbXV0ZXggaXMgaGVsZCBhY3Jvc3MgdGhlIF9kb19tYXBwaW5n KCkgY2FsbC4gSXMgdGhlcmUgYW55IHBhcnRpY3VsYXIgcmVhc29uIHdoeSBoZXJlIHRoZSBtdXRl eCBkb2Vzbid0IG5lZWQgdG8gYmUgaGVsZCBhY3Jvc3MgdGhlIF9kb191bm1hcHBpbmcoKSBjYWxs PyBPciB3YXMgdGhhdCBtb3JlIGFuIGFydGlmYWN0IG9mIGhhdmluZyBhIGNvbW1vbiAib3V0X2Vy ciIgZXhpdCBpbiBrdm1fZGV2X2lvY3RsX21hcCgpPw0KDQpUaGUgZm1wIG11dGV4Og0KMS4gcHJv dGVjdHMgdGhlIGZtcCBsaXN0IGFnYWluc3QgY29uY3VycmVudCBhY2Nlc3MuDQoyLiBwcm90ZWN0 cyBhZ2FpbnN0IHRlYXJkb3duIChvbmUgdGhyZWFkIHRyaWVzIHRvIGRvIGEgbWFwcGluZyB3aGls ZSBhbm90aGVyIGNsb3NlcyB0aGUgZmlsZSkuDQpUaGUgY2FsbCB0byBfZG9fbWFwcGluZygpIC0g d2hpY2ggY2FuIGZhaWwsIG11c3QgYmUgZG9uZSBpbnNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24g YmVmb3JlIHdlIGFkZCBhIHZhbGlkIHBtcCBlbnRyeSB0byB0aGUgbGlzdC4gDQpPbiB0aGUgb3Ro ZXIgaGFuZCwgaW5zaWRlIGt2bV9kZXZfaW9jdGxfdW5tYXAoKSB3ZSBtdXN0IGV4dHJhY3QgYSB2 YWxpZCBwbXAgZW50cnkgZnJvbSB0aGUgbGlzdCBiZWZvcmUgY2FsbGluZyBfZG9fdW5tYXBwaW5n KCkuDQpUaGVyZSBpcyBubyByZWFsIHJlYXNvbiBmb3IgcHJvdGVjdGluZyB0aGUgX2RvX21hcHBp bmcoKSBjYWxsLCBidXQgSSBjaG9zZSBub3QgdG8gcmV2ZXJ0IHRoZSBtYXBwaW5nIGluIGNhc2Ug SSBoaXQgdGhlIHRlYXJkb3duIGNhc2UuDQoNCj4gKw0KPiArCS8qIHVubWFwICYgaWdub3JlIHJl c3VsdCAqLw0KPiArCV9kb191bm1hcHBpbmcocG1wLT5wYWRkcik7DQo+ICsNCj4gKwkvKiBmcmVl IGd1ZXN0IG1hcHBpbmcgKi8NCj4gKwlrZnJlZShwbXApOw0KPiArDQo+ICsJcmV0dXJuIDA7DQo+ ICt9DQo+ICsNCj4gK3N0YXRpYyBsb25nIGt2bV9kZXZfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAs DQo+ICsJCQkgIHVuc2lnbmVkIGludCBpb2N0bCwgdW5zaWduZWQgbG9uZyBhcmcpIHsNCj4gKwl2 b2lkIF9fdXNlciAqYXJncCA9ICh2b2lkIF9fdXNlciAqKSBhcmc7DQo+ICsJc3RydWN0IGZpbGVf bWFwICpmbXA7DQo+ICsJbG9uZyByZXN1bHQ7DQo+ICsNCj4gKwkvKiBtaW5vciBjaGVjayAqLw0K PiArCWZtcCA9IGZpbHAtPnByaXZhdGVfZGF0YTsNCj4gKwlBU1NFUlQoZm1wLT5maWxlID09IGZp bHApOw0KPiArDQo+ICsJc3dpdGNoIChpb2N0bCkgew0KPiArCWNhc2UgS1ZNX0lOVFJPX01FTV9N QVA6IHsNCj4gKwkJc3RydWN0IGt2bWlfbWVtX21hcCBtYXA7DQo+ICsNCj4gKwkJcmVzdWx0ID0g LUVGQVVMVDsNCj4gKwkJaWYgKGNvcHlfZnJvbV91c2VyKCZtYXAsIGFyZ3AsIHNpemVvZihtYXAp KSkNCj4gKwkJCWJyZWFrOw0KPiArDQo+ICsJCXJlc3VsdCA9IGt2bV9kZXZfaW9jdGxfbWFwKGZt cCwgJm1hcCk7DQo+ICsJCWlmIChJU19FUlJfVkFMVUUocmVzdWx0KSkNCj4gKwkJCWJyZWFrOw0K PiArDQo+ICsJCXJlc3VsdCA9IDA7DQo+ICsJCWJyZWFrOw0KPiArCX0NCg0KU2luY2Uga3ZtX2Rl dl9pb2N0bF9tYXAoKSBlaXRoZXIgcmV0dXJucyBhbiBlcnJvciBvciAwLCBjb3VsZG4ndCB0aGlz IGp1c3QgYmUgcmVkdWNlZCB0bzoNCgkJcmVzdWx0ID0ga3ZtX2Rldl9pb2N0bF9tYXAoZm1hcCwg Jm1hcCk7DQoJCWJyZWFrOw0KCX0NCg0KQWdhaW4sIGxlZnRvdmVycyBmcm9tIG9sZGVyIGNvZGUu IEFsc28gZml4ZWQgdGhhdC4NCg0KPiArCWNhc2UgS1ZNX0lOVFJPX01FTV9VTk1BUDogew0KPiAr CQl1bnNpZ25lZCBsb25nIHZhZGRyID0gKHVuc2lnbmVkIGxvbmcpIGFyZzsNCj4gKw0KPiArCQly ZXN1bHQgPSBrdm1fZGV2X2lvY3RsX3VubWFwKGZtcCwgdmFkZHIpOw0KPiArCQlpZiAoSVNfRVJS X1ZBTFVFKHJlc3VsdCkpDQo+ICsJCQlicmVhazsNCj4gKw0KPiArCQlyZXN1bHQgPSAwOw0KPiAr CQlicmVhazsNCj4gKwl9DQoNCkRpdHRvIGhlcmUuDQoNCkZpeGVkLg0KDQo+ICsJZGVmYXVsdDoN Cj4gKwkJcHJfZXJyKCJrdm1pOiBpb2N0bCAlZCBub3QgaW1wbGVtZW50ZWRcbiIsIGlvY3RsKTsN Cj4gKwkJcmVzdWx0ID0gLUVOT1RUWTsNCj4gKwl9DQo+ICsNCj4gKwlyZXR1cm4gcmVzdWx0Ow0K PiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGt2bV9kZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlu b2RlcCwgc3RydWN0IGZpbGUgKmZpbHApIHsNCj4gKwlpbnQgcmVzdWx0ID0gMDsNCg0KWW91IHNl dCAicmVzdWx0ID0gMCIgaGVyZSwgYnV0IHJlc3VsdCBpc24ndCB1c2VkIHVudGlsIHRoZSBlbmQs IGFuZCBqdXN0IHRvIHJldHVybiBpdC4NCg0KUmV0dXJuZWQgMCBkaXJlY3RseS4NCg0KPiArCXN0 cnVjdCBmaWxlX21hcCAqZm1wOw0KPiArCXN0cnVjdCBsaXN0X2hlYWQgKmN1ciwgKm5leHQ7DQo+ ICsJc3RydWN0IHBhZ2VfbWFwICpwbXA7DQo+ICsNCj4gKwlwcl9kZWJ1Zygia3ZtaTogZmlsZSAl MDE2bHggY2xvc2VkIGJ5IHByb2Nlc3MgJXNcbiIsDQo+ICsJCSAodW5zaWduZWQgbG9uZykgZmls cCwgY3VycmVudC0+Y29tbSk7DQo+ICsNCj4gKwkvKiBhY3F1aXJlIHRoZSBmaWxlICovDQo+ICsJ Zm1wID0gZmlscC0+cHJpdmF0ZV9kYXRhOw0KPiArCW11dGV4X2xvY2soJmZtcC0+bG9jayk7DQo+ ICsNCj4gKwkvKiBtYXJrIGZvciB0ZWFyZG93biAqLw0KPiArCWZtcC0+YWN0aXZlID0gMDsNCj4g Kw0KPiArCS8qIHJlbGVhc2UgbWFwcGluZ3MgdGFrZW4gb24gdGhpcyBpbnN0YW5jZSBvZiB0aGUg ZmlsZSAqLw0KPiArCWxpc3RfZm9yX2VhY2hfc2FmZShjdXIsIG5leHQsICZmbXAtPm1hcF9saXN0 KSB7DQo+ICsJCXBtcCA9IGxpc3RfZW50cnkoY3VyLCBzdHJ1Y3QgcGFnZV9tYXAsIG1hcF9saXN0 KTsNCj4gKw0KPiArCQkvKiB1bm1hcCBhZGRyZXNzICovDQo+ICsJCV9kb191bm1hcHBpbmcocG1w LT5wYWRkcik7DQo+ICsNCj4gKwkJLyogZGVjb3VwbGUgJiBmcmVlIGd1ZXN0IG1hcHBpbmcgKi8N Cj4gKwkJbGlzdF9kZWwoJnBtcC0+bWFwX2xpc3QpOw0KPiArCQlrZnJlZShwbXApOw0KPiArCX0N Cj4gKw0KPiArCS8qIGRvbmUgcHJvY2Vzc2luZyB0aGlzIGZpbGUgbWFwcGluZyAqLw0KPiArCW11 dGV4X3VubG9jaygmZm1wLT5sb2NrKTsNCj4gKw0KPiArCS8qIGRlY291cGxlIGZpbGUgbWFwcGlu ZyAqLw0KPiArCXNwaW5fbG9jaygmZmlsZV9sb2NrKTsNCj4gKwlsaXN0X2RlbCgmZm1wLT5maWxl X2xpc3QpOw0KPiArCXNwaW5fdW5sb2NrKCZmaWxlX2xvY2spOw0KPiArDQo+ICsJLyogZnJlZSBp dCAqLw0KPiArCWtmcmVlKGZtcCk7DQo+ICsNCj4gKwlyZXR1cm4gcmVzdWx0Ow0KDQpUaGlzIGlz IHRoZSBmaXJzdCB0aW1lIHJlc3VsdCBpcyB1c2VkLiBDb3VsZG4ndCB0aGlzIGp1c3QgYmUgcmVw bGFjZWQgd2l0aCAicmV0dXJuIDAiPw0KDQpZZXMsIGl0IGNhbi4NCg0KPiArfQ0KPiArDQo+ICsN Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGt2bW1lbV9vcHMgPSB7DQo+ ICsJLm9wZW4JCT0ga3ZtX2Rldl9vcGVuLA0KPiArCS51bmxvY2tlZF9pb2N0bCA9IGt2bV9kZXZf aW9jdGwsDQo+ICsJLmNvbXBhdF9pb2N0bCAgID0ga3ZtX2Rldl9pb2N0bCwNCj4gKwkucmVsZWFz ZQk9IGt2bV9kZXZfcmVsZWFzZSwNCj4gK307DQoNCkhlcmUgeW91IGhhdmUgYWxsIHRoZSBydmFs cyBhbGlnbmVkLi4uDQoNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIGt2bV9tZW1f ZGV2ID0gew0KPiArCS5taW5vciA9IE1JU0NfRFlOQU1JQ19NSU5PUiwNCj4gKwkubmFtZSA9ICJr dm1tZW0iLA0KPiArCS5mb3BzID0gJmt2bW1lbV9vcHMsDQo+ICt9Ow0KDQouLi5idXQgaGVyZSB5 b3UgZG9uJ3QuIEknbSBub3Qgc3VyZSB3aGF0IHRoZSAicHJvcGVyIiBzdHlsZSBpcywgYnV0IEkg dGhpbmsgaXQgc2hvdWxkIGF0IGxlYXN0IGp1c3QgYmUgY29uc2lzdGVudC4NCg0KRml4ZWQuDQoN Cj4gKw0KPiAraW50IF9faW5pdCBrdm1faW50cm9fZ3Vlc3RfaW5pdCh2b2lkKSB7DQo+ICsJaW50 IHJlc3VsdDsNCj4gKw0KPiArCWlmICgha3ZtX3BhcmFfYXZhaWxhYmxlKCkpIHsNCj4gKwkJcHJf ZXJyKCJrdm1pOiBwYXJhdmlydCBub3QgYXZhaWxhYmxlXG4iKTsNCj4gKwkJcmV0dXJuIC1FUEVS TTsNCj4gKwl9DQo+ICsNCj4gKwlyZXN1bHQgPSBtaXNjX3JlZ2lzdGVyKCZrdm1fbWVtX2Rldik7 DQo+ICsJaWYgKHJlc3VsdCkgew0KPiArCQlwcl9lcnIoImt2bWk6IG1pc2MgZGV2aWNlIHJlZ2lz dGVyIGZhaWxlZDogJWRcbiIsIHJlc3VsdCk7DQo+ICsJCXJldHVybiByZXN1bHQ7DQo+ICsJfQ0K PiArDQo+ICsJSU5JVF9MSVNUX0hFQUQoJmZpbGVfbGlzdCk7DQo+ICsJc3Bpbl9sb2NrX2luaXQo JmZpbGVfbG9jayk7DQo+ICsNCj4gKwlwcl9pbmZvKCJrdm1pOiBndWVzdCBpbnRyb3NwZWN0aW9u IGRldmljZSBjcmVhdGVkXG4iKTsNCj4gKw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICt2 b2lkIGt2bV9pbnRyb19ndWVzdF9leGl0KHZvaWQpDQo+ICt7DQo+ICsJbWlzY19kZXJlZ2lzdGVy KCZrdm1fbWVtX2Rldik7DQo+ICt9DQo+ICsNCj4gK21vZHVsZV9pbml0KGt2bV9pbnRyb19ndWVz dF9pbml0KQ0KPiArbW9kdWxlX2V4aXQoa3ZtX2ludHJvX2d1ZXN0X2V4aXQpDQo+IA0KDQoNClBh dHJpY2sNCg0KX19fX19fX19fX19fX19fX19fX19fX19fDQpUaGlzIGVtYWlsIHdhcyBzY2FubmVk IGJ5IEJpdGRlZmVuZGVyDQo= -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org