From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Hellstrom Subject: Re: [PATCH -fixes] drm/vmwgfx: Protect from excessive execbuf kernel memory allocations v2 Date: Wed, 12 Dec 2018 18:38:06 +0000 Message-ID: <7fa5290e46df701108412ba76c8b65978291e0e3.camel@vmware.com> References: <20181212143528.3891-1-thellstrom@vmware.com> <33fb9e25c1e6863add677464ca5b9be02bee4671.camel@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-eopbgr780085.outbound.protection.outlook.com [40.107.78.85]) by gabe.freedesktop.org (Postfix) with ESMTPS id 58FC96E84F for ; Wed, 12 Dec 2018 18:38:12 +0000 (UTC) In-Reply-To: <33fb9e25c1e6863add677464ca5b9be02bee4671.camel@vmware.com> Content-Language: en-US Content-ID: <6C5B5D6F7D9E714F9A6C073C3451351A@namprd05.prod.outlook.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Deepak Singh Rawat Cc: Linux-graphics-maintainer , "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org SGksIERlZXBhaywNCg0KT24gV2VkLCAyMDE4LTEyLTEyIGF0IDEwOjAwIC0wODAwLCBEZWVwYWsg U2luZ2ggUmF3YXQgd3JvdGU6DQo+IE9uIFdlZCwgMjAxOC0xMi0xMiBhdCAxNTozNSArMDEwMCwg VGhvbWFzIEhlbGxzdHJvbSB3cm90ZToNCj4gPiBXaXRoIHRoZSBuZXcgdmFsaWRhdGlvbiBjb2Rl LCBhIG1hbGljaW91cyB1c2VyLXNwYWNlIGFwcCBjb3VsZA0KPiA+IHBvdGVudGlhbGx5IHN1Ym1p dCBjb21tYW5kIHN0cmVhbXMgd2l0aCBlbm91Z2ggYnVmZmVyLW9iamVjdCBhbmQNCj4gPiByZXNv dXJjZQ0KPiA+IHJlZmVyZW5jZXMgaW4gdGhlbSB0byBoYXZlIHRoZSByZXN1bHRpbmcgYWxsb2Nh dGVkIHZhbGlkaW9uIG5vZGVzDQo+ID4gYW5kDQo+ID4gcmVsb2NhdGlvbnMgbWFrZSB0aGUga2Vy bmVsIHJ1biBvdXQgb2YgR0ZQX0tFUk5FTCBtZW1vcnkuDQo+ID4gDQo+ID4gUHJvdGVjdCBmcm9t IHRoaXMgYnkgaGF2aW5nIHRoZSB2YWxpZGF0aW9uIGNvZGUgcmVzZXJ2ZSBUVE0NCj4gPiBncmFw aGljcw0KPiA+IG1lbW9yeSB3aGVuIGFsbG9jYXRpbmcuDQo+ID4gDQo+ID4gU2lnbmVkLW9mZi1i eTogVGhvbWFzIEhlbGxzdHJvbSA8dGhlbGxzdHJvbUB2bXdhcmUuY29tPg0KPiA+IC0tLQ0KPiA+ IHYyOiBSZW1vdmVkIGxlZnRvdmVyIGRlYnVnIHByaW50b3V0cw0KPiA+IC0tLQ0KPiA+ICBkcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYyAgICAgICAgfCAgNCArKy0NCj4gPiAgZHJp dmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmggICAgICAgIHwgIDUgKysrDQo+ID4gIGRy aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2V4ZWNidWYuYyAgICB8ICAyICsrDQo+ID4gIGRy aXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3R0bV9nbHVlLmMgICB8IDM2DQo+ID4gKysrKysr KysrKysrKysrKysrKysrDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3ZhbGlk YXRpb24uYyB8IDE4ICsrKysrKysrKystDQo+ID4gIGRyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X3ZhbGlkYXRpb24uaCB8IDM3DQo+ID4gKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICA2 IGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPiA+IA0K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuYw0KPiA+ IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMNCj4gPiBpbmRleCA2MWE4NGI5 NThkNjcuLmQ3YTJkZmI4ZWU5YiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13 Z2Z4L3Ztd2dmeF9kcnYuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4 X2Rydi5jDQo+ID4gQEAgLTQ5LDYgKzQ5LDggQEANCj4gPiAgDQo+ID4gICNkZWZpbmUgVk1XR0ZY X1JFUE8gIkluIFRyZWUiDQo+ID4gIA0KPiA+ICsjZGVmaW5lIFZNV0dGWF9WQUxJREFUSU9OX01F TV9HUkFOICgxNipQQUdFX1NJWkUpDQo+ID4gKw0KPiA+ICANCj4gPiAgLyoqDQo+ID4gICAqIEZ1 bGx5IGVuY29kZWQgZHJtIGNvbW1hbmRzLiBNaWdodCBtb3ZlIHRvIHZtd19kcm0uaA0KPiA+IEBA IC05MTgsNyArOTIwLDcgQEAgc3RhdGljIGludCB2bXdfZHJpdmVyX2xvYWQoc3RydWN0IGRybV9k ZXZpY2UNCj4gPiAqZGV2LCB1bnNpZ25lZCBsb25nIGNoaXBzZXQpDQo+ID4gIAkJc3Bpbl91bmxv Y2soJmRldl9wcml2LT5jYXBfbG9jayk7DQo+ID4gIAl9DQo+ID4gIA0KPiA+IC0NCj4gPiArCXZt d192YWxpZGF0aW9uX21lbV9pbml0X3R0bShkZXZfcHJpdiwNCj4gPiBWTVdHRlhfVkFMSURBVElP Tl9NRU1fR1JBTik7DQo+ID4gIAlyZXQgPSB2bXdfa21zX2luaXQoZGV2X3ByaXYpOw0KPiA+ICAJ aWYgKHVubGlrZWx5KHJldCAhPSAwKSkNCj4gPiAgCQlnb3RvIG91dF9ub19rbXM7DQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oDQo+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaA0KPiA+IGluZGV4IDU5ZjYxNDIyNWJjZC4u YWNhOTc0YjE0YjU1IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X2Rydi5oDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmgN Cj4gPiBAQCAtNjA2LDYgKzYwNiw5IEBAIHN0cnVjdCB2bXdfcHJpdmF0ZSB7DQo+ID4gIA0KPiA+ ICAJc3RydWN0IHZtd19jbWRidWZfbWFuICpjbWFuOw0KPiA+ICAJREVDTEFSRV9CSVRNQVAoaXJx dGhyZWFkX3BlbmRpbmcsIFZNV19JUlFUSFJFQURfTUFYKTsNCj4gPiArDQo+ID4gKwkvKiBWYWxp ZGF0aW9uIG1lbW9yeSByZXNlcnZhdGlvbiAqLw0KPiA+ICsJc3RydWN0IHZtd192YWxpZGF0aW9u X21lbSB2dm07DQo+ID4gIH07DQo+ID4gIA0KPiA+ICBzdGF0aWMgaW5saW5lIHN0cnVjdCB2bXdf c3VyZmFjZSAqdm13X3Jlc190b19zcmYoc3RydWN0DQo+ID4gdm13X3Jlc291cmNlDQo+ID4gKnJl cykNCj4gPiBAQCAtODQ2LDYgKzg0OSw4IEBAIGV4dGVybiBpbnQgdm13X3R0bV9nbG9iYWxfaW5p dChzdHJ1Y3QNCj4gPiB2bXdfcHJpdmF0ZQ0KPiA+ICpkZXZfcHJpdik7DQo+ID4gIGV4dGVybiB2 b2lkIHZtd190dG1fZ2xvYmFsX3JlbGVhc2Uoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdik7 DQo+ID4gIGV4dGVybiBpbnQgdm13X21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9h cmVhX3N0cnVjdA0KPiA+ICp2bWEpOw0KPiA+ICANCj4gPiArZXh0ZXJuIHZvaWQgdm13X3ZhbGlk YXRpb25fbWVtX2luaXRfdHRtKHN0cnVjdCB2bXdfcHJpdmF0ZQ0KPiA+ICpkZXZfcHJpdiwNCj4g PiArCQkJCQlzaXplX3QgZ3Jhbik7DQo+ID4gIC8qKg0KPiA+ICAgKiBUVE0gYnVmZmVyIG9iamVj dCBkcml2ZXIgLSB2bXdnZnhfdHRtX2J1ZmZlci5jDQo+ID4gICAqLw0KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMNCj4gPiBiL2RyaXZlcnMv Z3B1L2RybS92bXdnZngvdm13Z2Z4X2V4ZWNidWYuYw0KPiA+IGluZGV4IDI2MDY1MGJiNTU2MC4u ZjJkMTNhNzJjMDVkIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X2V4ZWNidWYuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2V4 ZWNidWYuYw0KPiA+IEBAIC0zODM1LDYgKzM4MzUsOCBAQCBpbnQgdm13X2V4ZWNidWZfcHJvY2Vz cyhzdHJ1Y3QgZHJtX2ZpbGUNCj4gPiAqZmlsZV9wcml2LA0KPiA+ICAJc3RydWN0IHN5bmNfZmls ZSAqc3luY19maWxlID0gTlVMTDsNCj4gPiAgCURFQ0xBUkVfVkFMX0NPTlRFWFQodmFsX2N0eCwg JnN3X2NvbnRleHQtPnJlc19odCwgMSk7DQo+ID4gIA0KPiA+ICsJdm13X3ZhbGlkYXRpb25fc2V0 X3ZhbF9tZW0oJnZhbF9jdHgsICZkZXZfcHJpdi0+dnZtKTsNCj4gPiArDQo+ID4gIAlpZiAoZmxh Z3MgJiBEUk1fVk1XX0VYRUNCVUZfRkxBR19FWFBPUlRfRkVOQ0VfRkQpIHsNCj4gPiAgCQlvdXRf ZmVuY2VfZmQgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7DQo+ID4gIAkJaWYgKG91 dF9mZW5jZV9mZCA8IDApIHsNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfdHRtX2dsdWUuYw0KPiA+IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf dHRtX2dsdWUuYw0KPiA+IGluZGV4IDdiMWU1YTVjYmQyYy4uZjg4MjQ3MDQ2NzIxIDEwMDY0NA0K PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3R0bV9nbHVlLmMNCj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF90dG1fZ2x1ZS5jDQo+ID4gQEAgLTk2 LDMgKzk2LDM5IEBAIHZvaWQgdm13X3R0bV9nbG9iYWxfcmVsZWFzZShzdHJ1Y3Qgdm13X3ByaXZh dGUNCj4gPiAqZGV2X3ByaXYpDQo+ID4gIAlkcm1fZ2xvYmFsX2l0ZW1fdW5yZWYoJmRldl9wcml2 LT5ib19nbG9iYWxfcmVmLnJlZik7DQo+ID4gIAlkcm1fZ2xvYmFsX2l0ZW1fdW5yZWYoJmRldl9w cml2LT5tZW1fZ2xvYmFsX3JlZik7DQo+ID4gIH0NCj4gPiArDQo+ID4gKy8qIHN0cnVjdCB2bXdf dmFsaWRhdGlvbl9tZW0gY2FsbGJhY2sgKi8NCj4gPiArc3RhdGljIGludCB2bXdfdm10X3Jlc2Vy dmUoc3RydWN0IHZtd192YWxpZGF0aW9uX21lbSAqbSwgc2l6ZV90DQo+ID4gc2l6ZSkNCj4gPiAr ew0KPiA+ICsJc3RhdGljIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBjdHggPSB7LmludGVycnVw dGlibGUgPSBmYWxzZSwNCj4gPiArCQkJCQkgICAgICAgLm5vX3dhaXRfZ3B1ID0gZmFsc2V9Ow0K PiA+ICsJc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdiA9IGNvbnRhaW5lcl9vZihtLCBzdHJ1 Y3QNCj4gPiB2bXdfcHJpdmF0ZSwgdnZtKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gdHRtX21lbV9n bG9iYWxfYWxsb2Modm13X21lbV9nbG9iKGRldl9wcml2KSwgc2l6ZSwNCj4gPiAmY3R4KTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyogc3RydWN0IHZtd192YWxpZGF0aW9uX21lbSBjYWxsYmFjayAq Lw0KPiA+ICtzdGF0aWMgdm9pZCB2bXdfdm10X3VucmVzZXJ2ZShzdHJ1Y3Qgdm13X3ZhbGlkYXRp b25fbWVtICptLCBzaXplX3QNCj4gPiBzaXplKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qgdm13X3By aXZhdGUgKmRldl9wcml2ID0gY29udGFpbmVyX29mKG0sIHN0cnVjdA0KPiA+IHZtd19wcml2YXRl LCB2dm0pOw0KPiA+ICsNCj4gPiArCXJldHVybiB0dG1fbWVtX2dsb2JhbF9mcmVlKHZtd19tZW1f Z2xvYihkZXZfcHJpdiksIHNpemUpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog dm13X3ZhbGlkYXRpb25fbWVtX2luaXRfdHRtIC0gSW50ZXJmYWNlIHRoZSB2YWxpZGF0aW9uIG1l bW9yeQ0KPiA+IHRyYWNrZXINCj4gPiArICogdG8gdHRtLg0KPiA+ICsgKiBAZGV2X3ByaXY6IFBv aW50ZXIgdG8gc3RydWN0IHZtd19wcml2YXRlLiBUaGUgcmVhc29uIHdlIGNob29zZQ0KPiA+IGEN Cj4gPiB2bXcgcHJpdmF0ZQ0KPiA+ICsgKiByYXRoZXIgdGhhbiBhIHN0cnVjdCB2bXdfdmFsaWRh dGlvbl9tZW0gaXMgdG8gbWFrZSBzdXJlDQo+ID4gYXNzdW1wdGlvbiBpbiB0aGUNCj4gPiArICog Y2FsbGJhY2tzIHRoYXQgc3RydWN0IHZtd19wcml2YXRlIGRlcml2ZXMgZnJvbSBzdHJ1Y3QNCj4g PiB2bXdfdmFsaWRhdGlvbl9tZW0NCj4gPiArICogaG9sZHMgdHJ1ZS4NCj4gPiArICogQGdyYW46 IFRoZSByZWNvbW1lbmRlZCBhbGxvY2F0aW9uIGdyYW51bGFyaXR5DQo+ID4gKyAqLw0KPiA+ICt2 b2lkIHZtd192YWxpZGF0aW9uX21lbV9pbml0X3R0bShzdHJ1Y3Qgdm13X3ByaXZhdGUgKmRldl9w cml2LA0KPiA+IHNpemVfdCBncmFuKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3Qgdm13X3ZhbGlkYXRp b25fbWVtICp2dm0gPSAmZGV2X3ByaXYtPnZ2bTsNCj4gPiArDQo+ID4gKwl2dm0tPnJlc2VydmVf bWVtID0gdm13X3ZtdF9yZXNlcnZlOw0KPiA+ICsJdnZtLT51bnJlc2VydmVfbWVtID0gdm13X3Zt dF91bnJlc2VydmU7DQo+ID4gKwl2dm0tPmdyYW4gPSBncmFuOw0KPiA+ICt9DQo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3ZhbGlkYXRpb24uYw0KPiA+IGIv ZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdmFsaWRhdGlvbi5jDQo+ID4gaW5kZXggMTg0 MDI1ZmE5MzhlLi4xZjgzYjkwZmQyNTkgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfdmFsaWRhdGlvbi5jDQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfdmFsaWRhdGlvbi5jDQo+ID4gQEAgLTEwNCwxMSArMTA0LDI1IEBAIHZvaWQg KnZtd192YWxpZGF0aW9uX21lbV9hbGxvYyhzdHJ1Y3QNCj4gPiB2bXdfdmFsaWRhdGlvbl9jb250 ZXh0ICpjdHgsDQo+ID4gIAkJcmV0dXJuIE5VTEw7DQo+ID4gIA0KPiA+ICAJaWYgKGN0eC0+bWVt X3NpemVfbGVmdCA8IHNpemUpIHsNCj4gPiAtCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGFsbG9jX3Bh Z2UoR0ZQX0tFUk5FTCB8DQo+ID4gX19HRlBfWkVSTyk7DQo+ID4gKwkJc3RydWN0IHBhZ2UgKnBh Z2U7DQo+ID4gIA0KPiA+ICsJCWlmIChjdHgtPnZtICYmIGN0eC0+dm1fc2l6ZV9sZWZ0IDwgUEFH RV9TSVpFKSB7DQo+IA0KPiBJIHF1aXRlIGRpZG4ndCB1bmRlcnN0YW5kIHRoZSBsb2dpYyBoZXJl IGJ1dCBjdHgtPnZtX3NpemVfbGVmdCBpcyBzZXQNCj4gdG8gR1JBTiBzaXplIHdoaWNoIGlzIDE2 ICogUEFHRV9TSVpFIHNvIGl0IHdpbGwgZ28gaW5zaWRlIHRoaXMNCj4gY29uZGl0aW9uIGZvciBv bmUgdGltZSBvbmx5LiBJcyB0aGF0IHdoYXQgaXMgaW50ZW5kZWQgaGVyZT8gQWxzbyBJDQo+IGd1 ZXNzIHRoYXQgaXMgd2h5IG5vdCByZXNldHRpbmcgY3R4LT52bV9zaXplX2xlZnQgPw0KDQoNCmN0 eC0+dm1fc2l6ZV9sZWZ0IGlzIGRlY3JlYXNlZCB3aXRoIFBBR0VfU0laRSBhZnRlciBhbGxvY2F0 aW5nIGEgcGFnZSwNCndoaWNoIG1lYW5zIHdlIGRvIGEgbmV3IHJlc2VydmF0aW9uIGVhY2ggMTYg cGFnZXMsIGJ1dCB0eXBpY2FsbHkgdGhhdA0KbXVjaCBtZW1vcnkgaXMgdmVyeSBzZWxkb20gdXNl ZCwgc28gaW4gZXNzZW5jZSB3ZSB3aWxsIGRvIGEgbWVtb3J5DQpyZXNlcnZhdGlvbiBvbmNlIHBl ciBjb21tYW5kIGJ1ZmZlci4gQWx0aG91Z2ggaXQncyBjb3JyZWN0IHdlIHNob3VsZA0KY2xlYXIg Y3R4LT52bV9zaXplX2xlZnQgd2hlbiB3ZSB1bnJlc2VydmUuDQoNCi9UaG9tYXMNCg0KDQo+IA0K PiBPdGhlciB0aGFuIHRoYXQgbG9va3MgZ29vZCB0byBtZS4NCj4gDQo+ID4gKwkJCWludCByZXQg PSBjdHgtPnZtLT5yZXNlcnZlX21lbShjdHgtPnZtLCBjdHgtDQo+ID4gPiB2bS0+Z3Jhbik7DQo+ ID4gKw0KPiA+ICsJCQlpZiAocmV0KQ0KPiA+ICsJCQkJcmV0dXJuIE5VTEw7DQo+ID4gKw0KPiA+ ICsJCQljdHgtPnZtX3NpemVfbGVmdCArPSBjdHgtPnZtLT5ncmFuOw0KPiA+ICsJCQljdHgtPnRv dGFsX21lbSArPSBjdHgtPnZtLT5ncmFuOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJcGFnZSA9 IGFsbG9jX3BhZ2UoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pOw0KPiA+ICAJCWlmICghcGFnZSkN Cj4gPiAgCQkJcmV0dXJuIE5VTEw7DQo+ID4gIA0KPiA+ICsJCWlmIChjdHgtPnZtKQ0KPiA+ICsJ CQljdHgtPnZtX3NpemVfbGVmdCAtPSBQQUdFX1NJWkU7DQo+ID4gKw0KPiA+ICAJCWxpc3RfYWRk X3RhaWwoJnBhZ2UtPmxydSwgJmN0eC0+cGFnZV9saXN0KTsNCj4gPiAgCQljdHgtPnBhZ2VfYWRk cmVzcyA9IHBhZ2VfYWRkcmVzcyhwYWdlKTsNCj4gPiAgCQljdHgtPm1lbV9zaXplX2xlZnQgPSBQ QUdFX1NJWkU7DQo+ID4gQEAgLTEzOCw2ICsxNTIsOCBAQCBzdGF0aWMgdm9pZCB2bXdfdmFsaWRh dGlvbl9tZW1fZnJlZShzdHJ1Y3QNCj4gPiB2bXdfdmFsaWRhdGlvbl9jb250ZXh0ICpjdHgpDQo+ ID4gIAl9DQo+ID4gIA0KPiA+ICAJY3R4LT5tZW1fc2l6ZV9sZWZ0ID0gMDsNCj4gPiArCWlmIChj dHgtPnZtICYmIGN0eC0+dG90YWxfbWVtKQ0KPiA+ICsJCWN0eC0+dm0tPnVucmVzZXJ2ZV9tZW0o Y3R4LT52bSwgY3R4LT50b3RhbF9tZW0pOw0KPiA+ICB9DQo+ID4gIA0KPiA+ICAvKioNCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdmFsaWRhdGlvbi5oDQo+ ID4gYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmgNCj4gPiBpbmRl eCBiNTdlMzI5MmMzODYuLjNiMzk2ZmVhNDBkNyAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vdm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmgNCj4gPiBAQCAtMzMsNiArMzMsMjEgQEANCj4g PiAgI2luY2x1ZGUgPGxpbnV4L3d3X211dGV4Lmg+DQo+ID4gICNpbmNsdWRlIDxkcm0vdHRtL3R0 bV9leGVjYnVmX3V0aWwuaD4NCj4gPiAgDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3Qgdm13X3Zh bGlkYXRpb25fbWVtIC0gQ3VzdG9tIGludGVyZmFjZSB0byBwcm92aWRlIG1lbW9yeQ0KPiA+IHJl c2VydmF0aW9ucw0KPiA+ICsgKiBmb3IgdGhlIHZhbGlkYXRpb24gY29kZS4NCj4gPiArICogQHJl c2VydmVfbWVtOiBDYWxsYmFjayB0byByZXNlcnZlIG1lbW9yeQ0KPiA+ICsgKiBAdW5yZXNlcnZl X21lbTogQ2FsbGJhY2sgdG8gdW5yZXNlcnZlIG1lbW9yeQ0KPiA+ICsgKiBAZ3JhbjogUmVzZXJ2 YXRpb24gZ3JhbnVsYXJpdHkuIENvbnRhaW5zIGEgaGludCBob3cgbXVjaCBtZW1vcnkNCj4gPiBz aG91bGQNCj4gPiArICogYmUgcmVzZXJ2ZWQgaW4gZWFjaCBjYWxsIHRvIEByZXNlcnZlX21lbSgp LiBBIHNsb3cNCj4gPiBpbXBsZW1lbnRhdGlvbg0KPiA+IG1heSB3YW50DQo+ID4gKyAqIHJlc2Vy dmF0aW9uIHRvIGJlIGRvbmUgaW4gbGFyZ2UgYmF0Y2hlcy4NCj4gPiArICovDQo+ID4gK3N0cnVj dCB2bXdfdmFsaWRhdGlvbl9tZW0gew0KPiA+ICsJaW50ICgqcmVzZXJ2ZV9tZW0pKHN0cnVjdCB2 bXdfdmFsaWRhdGlvbl9tZW0gKm0sIHNpemVfdCBzaXplKTsNCj4gPiArCXZvaWQgKCp1bnJlc2Vy dmVfbWVtKShzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25fbWVtICptLCBzaXplX3QNCj4gPiBzaXplKTsN Cj4gPiArCXNpemVfdCBncmFuOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiAgLyoqDQo+ID4gICAqIHN0 cnVjdCB2bXdfdmFsaWRhdGlvbl9jb250ZXh0IC0gUGVyIGNvbW1hbmQgc3VibWlzc2lvbg0KPiA+ IHZhbGlkYXRpb24NCj4gPiBjb250ZXh0DQo+ID4gICAqIEBodDogSGFzaCB0YWJsZSB1c2VkIHRv IGZpbmQgcmVzb3VyY2UtIG9yIGJ1ZmZlciBvYmplY3QNCj4gPiBkdXBsaWNhdGVzDQo+ID4gQEAg LTQ3LDYgKzYyLDEwIEBADQo+ID4gICAqIGJ1ZmZlciBvYmplY3RzDQo+ID4gICAqIEBtZW1fc2l6 ZV9sZWZ0OiBGcmVlIG1lbW9yeSBsZWZ0IGluIHRoZSBsYXN0IHBhZ2UgaW4gQHBhZ2VfbGlzdA0K PiA+ICAgKiBAcGFnZV9hZGRyZXNzOiBLZXJuZWwgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBsYXN0 IHBhZ2UgaW4NCj4gPiBAcGFnZV9saXN0DQo+ID4gKyAqIEB2bTogQSBwb2ludGVyIHRvIHRoZSBt ZW1vcnkgcmVzZXJ2YXRpb24gaW50ZXJmYWNlIG9yIE5VTEwgaWYNCj4gPiBubw0KPiA+ICsgKiBt ZW1vcnkgcmVzZXJ2YXRpb24gaXMgbmVlZGVkLg0KPiA+ICsgKiBAdm1fc2l6ZV9sZWZ0OiBBbW91 bnQgb2YgcmVzZXJ2ZWQgbWVtb3J5IHRoYXQgc28gZmFyIGhhcyBub3QNCj4gPiBiZWVuDQo+ID4g YWxsb2NhdGVkLg0KPiA+ICsgKiBAdG90YWxfbWVtOiBBbW91bnQgb2YgcmVzZXJ2ZWQgbWVtb3J5 Lg0KPiA+ICAgKi8NCj4gPiAgc3RydWN0IHZtd192YWxpZGF0aW9uX2NvbnRleHQgew0KPiA+ICAJ c3RydWN0IGRybV9vcGVuX2hhc2ggKmh0Ow0KPiA+IEBAIC01OSw2ICs3OCw5IEBAIHN0cnVjdCB2 bXdfdmFsaWRhdGlvbl9jb250ZXh0IHsNCj4gPiAgCXVuc2lnbmVkIGludCBtZXJnZV9kdXBzOw0K PiA+ICAJdW5zaWduZWQgaW50IG1lbV9zaXplX2xlZnQ7DQo+ID4gIAl1OCAqcGFnZV9hZGRyZXNz Ow0KPiA+ICsJc3RydWN0IHZtd192YWxpZGF0aW9uX21lbSAqdm07DQo+ID4gKwlzaXplX3Qgdm1f c2l6ZV9sZWZ0Ow0KPiA+ICsJc2l6ZV90IHRvdGFsX21lbTsNCj4gPiAgfTsNCj4gPiAgDQo+ID4g IHN0cnVjdCB2bXdfYnVmZmVyX29iamVjdDsNCj4gPiBAQCAtMTAxLDYgKzEyMywyMSBAQCB2bXdf dmFsaWRhdGlvbl9oYXNfYm9zKHN0cnVjdA0KPiA+IHZtd192YWxpZGF0aW9uX2NvbnRleHQgKmN0 eCkNCj4gPiAgCXJldHVybiAhbGlzdF9lbXB0eSgmY3R4LT5ib19saXN0KTsNCj4gPiAgfQ0KPiA+ ICANCj4gPiArLyoqDQo+ID4gKyAqIHZtd192YWxpZGF0aW9uX3NldF92YWxfbWVtIC0gUmVnaXN0 ZXIgYSB2YWxpZGF0aW9uIG1lbSBvYmplY3QNCj4gPiBmb3INCj4gPiArICogdmFsaWRhdGlvbiBt ZW1vcnkgcmVzZXJ2YXRpb24NCj4gPiArICogQGN0eDogVGhlIHZhbGlkYXRpb24gY29udGV4dA0K PiA+ICsgKiBAdm06IFBvaW50ZXIgdG8gYSBzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25fbWVtDQo+ID4g KyAqDQo+ID4gKyAqIE11c3QgYmUgc2V0IGJlZm9yZSB0aGUgZmlyc3QgYXR0ZW1wdCB0byBhbGxv Y2F0ZSB2YWxpZGF0aW9uDQo+ID4gbWVtb3J5Lg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIGlubGlu ZSB2b2lkDQo+ID4gK3Ztd192YWxpZGF0aW9uX3NldF92YWxfbWVtKHN0cnVjdCB2bXdfdmFsaWRh dGlvbl9jb250ZXh0ICpjdHgsDQo+ID4gKwkJCSAgIHN0cnVjdCB2bXdfdmFsaWRhdGlvbl9tZW0g KnZtKQ0KPiA+ICt7DQo+ID4gKwljdHgtPnZtID0gdm07DQo+ID4gK30NCj4gPiArDQo+ID4gIC8q Kg0KPiA+ICAgKiB2bXdfdmFsaWRhdGlvbl9zZXRfaHQgLSBSZWdpc3RlciBhIGhhc2ggdGFibGUg Zm9yIGR1cGxpY2F0ZQ0KPiA+IGZpbmRpbmcNCj4gPiAgICogQGN0eDogVGhlIHZhbGlkYXRpb24g Y29udGV4dA0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==