From mboxrd@z Thu Jan 1 00:00:00 1970 From: Deepak Singh Rawat Subject: Re: [PATCH -fixes] drm/vmwgfx: Protect from excessive execbuf kernel memory allocations v2 Date: Wed, 12 Dec 2018 10:00:03 -0800 Message-ID: <33fb9e25c1e6863add677464ca5b9be02bee4671.camel@vmware.com> References: <20181212143528.3891-1-thellstrom@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EX13-EDG-OU-002.vmware.com (ex13-edg-ou-002.vmware.com [208.91.0.190]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9232C6EB04 for ; Wed, 12 Dec 2018 18:00:00 +0000 (UTC) In-Reply-To: <20181212143528.3891-1-thellstrom@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Hellstrom Cc: linux-graphics-maintainer@vmware.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCAyMDE4LTEyLTEyIGF0IDE1OjM1ICswMTAwLCBUaG9tYXMgSGVsbHN0cm9tIHdyb3Rl Ogo+IFdpdGggdGhlIG5ldyB2YWxpZGF0aW9uIGNvZGUsIGEgbWFsaWNpb3VzIHVzZXItc3BhY2Ug YXBwIGNvdWxkCj4gcG90ZW50aWFsbHkgc3VibWl0IGNvbW1hbmQgc3RyZWFtcyB3aXRoIGVub3Vn aCBidWZmZXItb2JqZWN0IGFuZAo+IHJlc291cmNlCj4gcmVmZXJlbmNlcyBpbiB0aGVtIHRvIGhh dmUgdGhlIHJlc3VsdGluZyBhbGxvY2F0ZWQgdmFsaWRpb24gbm9kZXMgYW5kCj4gcmVsb2NhdGlv bnMgbWFrZSB0aGUga2VybmVsIHJ1biBvdXQgb2YgR0ZQX0tFUk5FTCBtZW1vcnkuCj4gCj4gUHJv dGVjdCBmcm9tIHRoaXMgYnkgaGF2aW5nIHRoZSB2YWxpZGF0aW9uIGNvZGUgcmVzZXJ2ZSBUVE0g Z3JhcGhpY3MKPiBtZW1vcnkgd2hlbiBhbGxvY2F0aW5nLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFRo b21hcyBIZWxsc3Ryb20gPHRoZWxsc3Ryb21Adm13YXJlLmNvbT4KPiAtLS0KPiB2MjogUmVtb3Zl ZCBsZWZ0b3ZlciBkZWJ1ZyBwcmludG91dHMKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL3Ztd2dm eC92bXdnZnhfZHJ2LmMgICAgICAgIHwgIDQgKystCj4gIGRyaXZlcnMvZ3B1L2RybS92bXdnZngv dm13Z2Z4X2Rydi5oICAgICAgICB8ICA1ICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9leGVjYnVmLmMgICAgfCAgMiArKwo+ICBkcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dm eF90dG1fZ2x1ZS5jICAgfCAzNgo+ICsrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmMgfCAxOCArKysrKysrKysrLQo+ICBkcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmggfCAzNwo+ICsrKysrKysrKysr KysrKysrKysrKysKPiAgNiBmaWxlcyBjaGFuZ2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgMiBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf ZHJ2LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5jCj4gaW5kZXggNjFh ODRiOTU4ZDY3Li5kN2EyZGZiOGVlOWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zt d2dmeC92bXdnZnhfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9k cnYuYwo+IEBAIC00OSw2ICs0OSw4IEBACj4gIAo+ICAjZGVmaW5lIFZNV0dGWF9SRVBPICJJbiBU cmVlIgo+ICAKPiArI2RlZmluZSBWTVdHRlhfVkFMSURBVElPTl9NRU1fR1JBTiAoMTYqUEFHRV9T SVpFKQo+ICsKPiAgCj4gIC8qKgo+ICAgKiBGdWxseSBlbmNvZGVkIGRybSBjb21tYW5kcy4gTWln aHQgbW92ZSB0byB2bXdfZHJtLmgKPiBAQCAtOTE4LDcgKzkyMCw3IEBAIHN0YXRpYyBpbnQgdm13 X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlCj4gKmRldiwgdW5zaWduZWQgbG9uZyBjaGlw c2V0KQo+ICAJCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+Y2FwX2xvY2spOwo+ICAJfQo+ICAKPiAt Cj4gKwl2bXdfdmFsaWRhdGlvbl9tZW1faW5pdF90dG0oZGV2X3ByaXYsCj4gVk1XR0ZYX1ZBTElE QVRJT05fTUVNX0dSQU4pOwo+ICAJcmV0ID0gdm13X2ttc19pbml0KGRldl9wcml2KTsKPiAgCWlm ICh1bmxpa2VseShyZXQgIT0gMCkpCj4gIAkJZ290byBvdXRfbm9fa21zOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAo+IGIvZHJpdmVycy9ncHUvZHJt L3Ztd2dmeC92bXdnZnhfZHJ2LmgKPiBpbmRleCA1OWY2MTQyMjViY2QuLmFjYTk3NGIxNGI1NSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9kcnYuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5oCj4gQEAgLTYwNiw2ICs2MDYsOSBA QCBzdHJ1Y3Qgdm13X3ByaXZhdGUgewo+ICAKPiAgCXN0cnVjdCB2bXdfY21kYnVmX21hbiAqY21h bjsKPiAgCURFQ0xBUkVfQklUTUFQKGlycXRocmVhZF9wZW5kaW5nLCBWTVdfSVJRVEhSRUFEX01B WCk7Cj4gKwo+ICsJLyogVmFsaWRhdGlvbiBtZW1vcnkgcmVzZXJ2YXRpb24gKi8KPiArCXN0cnVj dCB2bXdfdmFsaWRhdGlvbl9tZW0gdnZtOwo+ICB9Owo+ICAKPiAgc3RhdGljIGlubGluZSBzdHJ1 Y3Qgdm13X3N1cmZhY2UgKnZtd19yZXNfdG9fc3JmKHN0cnVjdCB2bXdfcmVzb3VyY2UKPiAqcmVz KQo+IEBAIC04NDYsNiArODQ5LDggQEAgZXh0ZXJuIGludCB2bXdfdHRtX2dsb2JhbF9pbml0KHN0 cnVjdCB2bXdfcHJpdmF0ZQo+ICpkZXZfcHJpdik7Cj4gIGV4dGVybiB2b2lkIHZtd190dG1fZ2xv YmFsX3JlbGVhc2Uoc3RydWN0IHZtd19wcml2YXRlICpkZXZfcHJpdik7Cj4gIGV4dGVybiBpbnQg dm13X21tYXAoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsK PiAgCj4gK2V4dGVybiB2b2lkIHZtd192YWxpZGF0aW9uX21lbV9pbml0X3R0bShzdHJ1Y3Qgdm13 X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4gKwkJCQkJc2l6ZV90IGdyYW4pOwo+ICAvKioKPiAgICog VFRNIGJ1ZmZlciBvYmplY3QgZHJpdmVyIC0gdm13Z2Z4X3R0bV9idWZmZXIuYwo+ICAgKi8KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZXhlY2J1Zi5jCj4gYi9k cml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVjYnVmLmMKPiBpbmRleCAyNjA2NTBiYjU1 NjAuLmYyZDEzYTcyYzA1ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Zt d2dmeF9leGVjYnVmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF9leGVj YnVmLmMKPiBAQCAtMzgzNSw2ICszODM1LDggQEAgaW50IHZtd19leGVjYnVmX3Byb2Nlc3Moc3Ry dWN0IGRybV9maWxlCj4gKmZpbGVfcHJpdiwKPiAgCXN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmls ZSA9IE5VTEw7Cj4gIAlERUNMQVJFX1ZBTF9DT05URVhUKHZhbF9jdHgsICZzd19jb250ZXh0LT5y ZXNfaHQsIDEpOwo+ICAKPiArCXZtd192YWxpZGF0aW9uX3NldF92YWxfbWVtKCZ2YWxfY3R4LCAm ZGV2X3ByaXYtPnZ2bSk7Cj4gKwo+ICAJaWYgKGZsYWdzICYgRFJNX1ZNV19FWEVDQlVGX0ZMQUdf RVhQT1JUX0ZFTkNFX0ZEKSB7Cj4gIAkJb3V0X2ZlbmNlX2ZkID0gZ2V0X3VudXNlZF9mZF9mbGFn cyhPX0NMT0VYRUMpOwo+ICAJCWlmIChvdXRfZmVuY2VfZmQgPCAwKSB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3R0bV9nbHVlLmMKPiBiL2RyaXZlcnMvZ3B1 L2RybS92bXdnZngvdm13Z2Z4X3R0bV9nbHVlLmMKPiBpbmRleCA3YjFlNWE1Y2JkMmMuLmY4ODI0 NzA0NjcyMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF90dG1f Z2x1ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfdHRtX2dsdWUuYwo+ IEBAIC05NiwzICs5NiwzOSBAQCB2b2lkIHZtd190dG1fZ2xvYmFsX3JlbGVhc2Uoc3RydWN0IHZt d19wcml2YXRlCj4gKmRldl9wcml2KQo+ICAJZHJtX2dsb2JhbF9pdGVtX3VucmVmKCZkZXZfcHJp di0+Ym9fZ2xvYmFsX3JlZi5yZWYpOwo+ICAJZHJtX2dsb2JhbF9pdGVtX3VucmVmKCZkZXZfcHJp di0+bWVtX2dsb2JhbF9yZWYpOwo+ICB9Cj4gKwo+ICsvKiBzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25f bWVtIGNhbGxiYWNrICovCj4gK3N0YXRpYyBpbnQgdm13X3ZtdF9yZXNlcnZlKHN0cnVjdCB2bXdf dmFsaWRhdGlvbl9tZW0gKm0sIHNpemVfdAo+IHNpemUpCj4gK3sKPiArCXN0YXRpYyBzdHJ1Y3Qg dHRtX29wZXJhdGlvbl9jdHggY3R4ID0gey5pbnRlcnJ1cHRpYmxlID0gZmFsc2UsCj4gKwkJCQkJ ICAgICAgIC5ub193YWl0X2dwdSA9IGZhbHNlfTsKPiArCXN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBjb250YWluZXJfb2YobSwgc3RydWN0Cj4gdm13X3ByaXZhdGUsIHZ2bSk7Cj4gKwo+ ICsJcmV0dXJuIHR0bV9tZW1fZ2xvYmFsX2FsbG9jKHZtd19tZW1fZ2xvYihkZXZfcHJpdiksIHNp emUsCj4gJmN0eCk7Cj4gK30KPiArCj4gKy8qIHN0cnVjdCB2bXdfdmFsaWRhdGlvbl9tZW0gY2Fs bGJhY2sgKi8KPiArc3RhdGljIHZvaWQgdm13X3ZtdF91bnJlc2VydmUoc3RydWN0IHZtd192YWxp ZGF0aW9uX21lbSAqbSwgc2l6ZV90Cj4gc2l6ZSkKPiArewo+ICsJc3RydWN0IHZtd19wcml2YXRl ICpkZXZfcHJpdiA9IGNvbnRhaW5lcl9vZihtLCBzdHJ1Y3QKPiB2bXdfcHJpdmF0ZSwgdnZtKTsK PiArCj4gKwlyZXR1cm4gdHRtX21lbV9nbG9iYWxfZnJlZSh2bXdfbWVtX2dsb2IoZGV2X3ByaXYp LCBzaXplKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIHZtd192YWxpZGF0aW9uX21lbV9pbml0X3R0 bSAtIEludGVyZmFjZSB0aGUgdmFsaWRhdGlvbiBtZW1vcnkKPiB0cmFja2VyCj4gKyAqIHRvIHR0 bS4KPiArICogQGRldl9wcml2OiBQb2ludGVyIHRvIHN0cnVjdCB2bXdfcHJpdmF0ZS4gVGhlIHJl YXNvbiB3ZSBjaG9vc2UgYQo+IHZtdyBwcml2YXRlCj4gKyAqIHJhdGhlciB0aGFuIGEgc3RydWN0 IHZtd192YWxpZGF0aW9uX21lbSBpcyB0byBtYWtlIHN1cmUKPiBhc3N1bXB0aW9uIGluIHRoZQo+ ICsgKiBjYWxsYmFja3MgdGhhdCBzdHJ1Y3Qgdm13X3ByaXZhdGUgZGVyaXZlcyBmcm9tIHN0cnVj dAo+IHZtd192YWxpZGF0aW9uX21lbQo+ICsgKiBob2xkcyB0cnVlLgo+ICsgKiBAZ3JhbjogVGhl IHJlY29tbWVuZGVkIGFsbG9jYXRpb24gZ3JhbnVsYXJpdHkKPiArICovCj4gK3ZvaWQgdm13X3Zh bGlkYXRpb25fbWVtX2luaXRfdHRtKHN0cnVjdCB2bXdfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gc2l6 ZV90IGdyYW4pCj4gK3sKPiArCXN0cnVjdCB2bXdfdmFsaWRhdGlvbl9tZW0gKnZ2bSA9ICZkZXZf cHJpdi0+dnZtOwo+ICsKPiArCXZ2bS0+cmVzZXJ2ZV9tZW0gPSB2bXdfdm10X3Jlc2VydmU7Cj4g Kwl2dm0tPnVucmVzZXJ2ZV9tZW0gPSB2bXdfdm10X3VucmVzZXJ2ZTsKPiArCXZ2bS0+Z3JhbiA9 IGdyYW47Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhf dmFsaWRhdGlvbi5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9u LmMKPiBpbmRleCAxODQwMjVmYTkzOGUuLjFmODNiOTBmZDI1OSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vdm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vdm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmMKPiBAQCAtMTA0LDExICsxMDQsMjUgQEAg dm9pZCAqdm13X3ZhbGlkYXRpb25fbWVtX2FsbG9jKHN0cnVjdAo+IHZtd192YWxpZGF0aW9uX2Nv bnRleHQgKmN0eCwKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gIAlpZiAoY3R4LT5tZW1fc2l6ZV9s ZWZ0IDwgc2l6ZSkgewo+IC0JCXN0cnVjdCBwYWdlICpwYWdlID0gYWxsb2NfcGFnZShHRlBfS0VS TkVMIHwKPiBfX0dGUF9aRVJPKTsKPiArCQlzdHJ1Y3QgcGFnZSAqcGFnZTsKPiAgCj4gKwkJaWYg KGN0eC0+dm0gJiYgY3R4LT52bV9zaXplX2xlZnQgPCBQQUdFX1NJWkUpIHsKCkkgcXVpdGUgZGlk bid0IHVuZGVyc3RhbmQgdGhlIGxvZ2ljIGhlcmUgYnV0IGN0eC0+dm1fc2l6ZV9sZWZ0IGlzIHNl dAp0byBHUkFOIHNpemUgd2hpY2ggaXMgMTYgKiBQQUdFX1NJWkUgc28gaXQgd2lsbCBnbyBpbnNp ZGUgdGhpcwpjb25kaXRpb24gZm9yIG9uZSB0aW1lIG9ubHkuIElzIHRoYXQgd2hhdCBpcyBpbnRl bmRlZCBoZXJlPyBBbHNvIEkKZ3Vlc3MgdGhhdCBpcyB3aHkgbm90IHJlc2V0dGluZyBjdHgtPnZt X3NpemVfbGVmdCA/CgpPdGhlciB0aGFuIHRoYXQgbG9va3MgZ29vZCB0byBtZS4KCj4gKwkJCWlu dCByZXQgPSBjdHgtPnZtLT5yZXNlcnZlX21lbShjdHgtPnZtLCBjdHgtCj4gPnZtLT5ncmFuKTsK PiArCj4gKwkJCWlmIChyZXQpCj4gKwkJCQlyZXR1cm4gTlVMTDsKPiArCj4gKwkJCWN0eC0+dm1f c2l6ZV9sZWZ0ICs9IGN0eC0+dm0tPmdyYW47Cj4gKwkJCWN0eC0+dG90YWxfbWVtICs9IGN0eC0+ dm0tPmdyYW47Cj4gKwkJfQo+ICsKPiArCQlwYWdlID0gYWxsb2NfcGFnZShHRlBfS0VSTkVMIHwg X19HRlBfWkVSTyk7Cj4gIAkJaWYgKCFwYWdlKQo+ICAJCQlyZXR1cm4gTlVMTDsKPiAgCj4gKwkJ aWYgKGN0eC0+dm0pCj4gKwkJCWN0eC0+dm1fc2l6ZV9sZWZ0IC09IFBBR0VfU0laRTsKPiArCj4g IAkJbGlzdF9hZGRfdGFpbCgmcGFnZS0+bHJ1LCAmY3R4LT5wYWdlX2xpc3QpOwo+ICAJCWN0eC0+ cGFnZV9hZGRyZXNzID0gcGFnZV9hZGRyZXNzKHBhZ2UpOwo+ICAJCWN0eC0+bWVtX3NpemVfbGVm dCA9IFBBR0VfU0laRTsKPiBAQCAtMTM4LDYgKzE1Miw4IEBAIHN0YXRpYyB2b2lkIHZtd192YWxp ZGF0aW9uX21lbV9mcmVlKHN0cnVjdAo+IHZtd192YWxpZGF0aW9uX2NvbnRleHQgKmN0eCkKPiAg CX0KPiAgCj4gIAljdHgtPm1lbV9zaXplX2xlZnQgPSAwOwo+ICsJaWYgKGN0eC0+dm0gJiYgY3R4 LT50b3RhbF9tZW0pCj4gKwkJY3R4LT52bS0+dW5yZXNlcnZlX21lbShjdHgtPnZtLCBjdHgtPnRv dGFsX21lbSk7Cj4gIH0KPiAgCj4gIC8qKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dm13Z2Z4L3Ztd2dmeF92YWxpZGF0aW9uLmgKPiBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13 Z2Z4X3ZhbGlkYXRpb24uaAo+IGluZGV4IGI1N2UzMjkyYzM4Ni4uM2IzOTZmZWE0MGQ3IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3ZhbGlkYXRpb24uaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X3ZhbGlkYXRpb24uaAo+IEBAIC0zMyw2 ICszMywyMSBAQAo+ICAjaW5jbHVkZSA8bGludXgvd3dfbXV0ZXguaD4KPiAgI2luY2x1ZGUgPGRy bS90dG0vdHRtX2V4ZWNidWZfdXRpbC5oPgo+ICAKPiArLyoqCj4gKyAqIHN0cnVjdCB2bXdfdmFs aWRhdGlvbl9tZW0gLSBDdXN0b20gaW50ZXJmYWNlIHRvIHByb3ZpZGUgbWVtb3J5Cj4gcmVzZXJ2 YXRpb25zCj4gKyAqIGZvciB0aGUgdmFsaWRhdGlvbiBjb2RlLgo+ICsgKiBAcmVzZXJ2ZV9tZW06 IENhbGxiYWNrIHRvIHJlc2VydmUgbWVtb3J5Cj4gKyAqIEB1bnJlc2VydmVfbWVtOiBDYWxsYmFj ayB0byB1bnJlc2VydmUgbWVtb3J5Cj4gKyAqIEBncmFuOiBSZXNlcnZhdGlvbiBncmFudWxhcml0 eS4gQ29udGFpbnMgYSBoaW50IGhvdyBtdWNoIG1lbW9yeQo+IHNob3VsZAo+ICsgKiBiZSByZXNl cnZlZCBpbiBlYWNoIGNhbGwgdG8gQHJlc2VydmVfbWVtKCkuIEEgc2xvdyBpbXBsZW1lbnRhdGlv bgo+IG1heSB3YW50Cj4gKyAqIHJlc2VydmF0aW9uIHRvIGJlIGRvbmUgaW4gbGFyZ2UgYmF0Y2hl cy4KPiArICovCj4gK3N0cnVjdCB2bXdfdmFsaWRhdGlvbl9tZW0gewo+ICsJaW50ICgqcmVzZXJ2 ZV9tZW0pKHN0cnVjdCB2bXdfdmFsaWRhdGlvbl9tZW0gKm0sIHNpemVfdCBzaXplKTsKPiArCXZv aWQgKCp1bnJlc2VydmVfbWVtKShzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25fbWVtICptLCBzaXplX3QK PiBzaXplKTsKPiArCXNpemVfdCBncmFuOwo+ICt9Owo+ICsKPiAgLyoqCj4gICAqIHN0cnVjdCB2 bXdfdmFsaWRhdGlvbl9jb250ZXh0IC0gUGVyIGNvbW1hbmQgc3VibWlzc2lvbiB2YWxpZGF0aW9u Cj4gY29udGV4dAo+ICAgKiBAaHQ6IEhhc2ggdGFibGUgdXNlZCB0byBmaW5kIHJlc291cmNlLSBv ciBidWZmZXIgb2JqZWN0Cj4gZHVwbGljYXRlcwo+IEBAIC00Nyw2ICs2MiwxMCBAQAo+ICAgKiBi dWZmZXIgb2JqZWN0cwo+ICAgKiBAbWVtX3NpemVfbGVmdDogRnJlZSBtZW1vcnkgbGVmdCBpbiB0 aGUgbGFzdCBwYWdlIGluIEBwYWdlX2xpc3QKPiAgICogQHBhZ2VfYWRkcmVzczogS2VybmVsIHZp cnR1YWwgYWRkcmVzcyBvZiB0aGUgbGFzdCBwYWdlIGluCj4gQHBhZ2VfbGlzdAo+ICsgKiBAdm06 IEEgcG9pbnRlciB0byB0aGUgbWVtb3J5IHJlc2VydmF0aW9uIGludGVyZmFjZSBvciBOVUxMIGlm IG5vCj4gKyAqIG1lbW9yeSByZXNlcnZhdGlvbiBpcyBuZWVkZWQuCj4gKyAqIEB2bV9zaXplX2xl ZnQ6IEFtb3VudCBvZiByZXNlcnZlZCBtZW1vcnkgdGhhdCBzbyBmYXIgaGFzIG5vdCBiZWVuCj4g YWxsb2NhdGVkLgo+ICsgKiBAdG90YWxfbWVtOiBBbW91bnQgb2YgcmVzZXJ2ZWQgbWVtb3J5Lgo+ ICAgKi8KPiAgc3RydWN0IHZtd192YWxpZGF0aW9uX2NvbnRleHQgewo+ICAJc3RydWN0IGRybV9v cGVuX2hhc2ggKmh0Owo+IEBAIC01OSw2ICs3OCw5IEBAIHN0cnVjdCB2bXdfdmFsaWRhdGlvbl9j b250ZXh0IHsKPiAgCXVuc2lnbmVkIGludCBtZXJnZV9kdXBzOwo+ICAJdW5zaWduZWQgaW50IG1l bV9zaXplX2xlZnQ7Cj4gIAl1OCAqcGFnZV9hZGRyZXNzOwo+ICsJc3RydWN0IHZtd192YWxpZGF0 aW9uX21lbSAqdm07Cj4gKwlzaXplX3Qgdm1fc2l6ZV9sZWZ0Owo+ICsJc2l6ZV90IHRvdGFsX21l bTsKPiAgfTsKPiAgCj4gIHN0cnVjdCB2bXdfYnVmZmVyX29iamVjdDsKPiBAQCAtMTAxLDYgKzEy MywyMSBAQCB2bXdfdmFsaWRhdGlvbl9oYXNfYm9zKHN0cnVjdAo+IHZtd192YWxpZGF0aW9uX2Nv bnRleHQgKmN0eCkKPiAgCXJldHVybiAhbGlzdF9lbXB0eSgmY3R4LT5ib19saXN0KTsKPiAgfQo+ ICAKPiArLyoqCj4gKyAqIHZtd192YWxpZGF0aW9uX3NldF92YWxfbWVtIC0gUmVnaXN0ZXIgYSB2 YWxpZGF0aW9uIG1lbSBvYmplY3QgZm9yCj4gKyAqIHZhbGlkYXRpb24gbWVtb3J5IHJlc2VydmF0 aW9uCj4gKyAqIEBjdHg6IFRoZSB2YWxpZGF0aW9uIGNvbnRleHQKPiArICogQHZtOiBQb2ludGVy IHRvIGEgc3RydWN0IHZtd192YWxpZGF0aW9uX21lbQo+ICsgKgo+ICsgKiBNdXN0IGJlIHNldCBi ZWZvcmUgdGhlIGZpcnN0IGF0dGVtcHQgdG8gYWxsb2NhdGUgdmFsaWRhdGlvbgo+IG1lbW9yeS4K PiArICovCj4gK3N0YXRpYyBpbmxpbmUgdm9pZAo+ICt2bXdfdmFsaWRhdGlvbl9zZXRfdmFsX21l bShzdHJ1Y3Qgdm13X3ZhbGlkYXRpb25fY29udGV4dCAqY3R4LAo+ICsJCQkgICBzdHJ1Y3Qgdm13 X3ZhbGlkYXRpb25fbWVtICp2bSkKPiArewo+ICsJY3R4LT52bSA9IHZtOwo+ICt9Cj4gKwo+ICAv KioKPiAgICogdm13X3ZhbGlkYXRpb25fc2V0X2h0IC0gUmVnaXN0ZXIgYSBoYXNoIHRhYmxlIGZv ciBkdXBsaWNhdGUKPiBmaW5kaW5nCj4gICAqIEBjdHg6IFRoZSB2YWxpZGF0aW9uIGNvbnRleHQK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=