From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v5 3/5] drm/gem: Add drm_gem_object_funcs Date: Tue, 23 Oct 2018 15:46:13 +0200 Message-ID: <20181023134613.GR324@phenom.ffwll.local> References: <20181017130454.44292-1-noralf@tronnes.org> <20181017130454.44292-4-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: christian.koenig@amd.com Cc: intel-gfx@lists.freedesktop.org, Noralf =?iso-8859-1?Q?Tr=F8nnes?= , sam@ravnborg.org, david@lechnology.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBPY3QgMjIsIDIwMTggYXQgMDI6NTc6MjhQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBBbSAxNy4xMC4xOCB1bSAxNTowNCBzY2hyaWViIE5vcmFsZiBUcsO4bm5lczoK PiA+IFRoaXMgYWRkcyBhbiBvcHRpb25hbCBmdW5jdGlvbiB0YWJsZSBvbiBHRU0gb2JqZWN0cy4K PiA+IFRoZSBtYWluIGJlbmVmaXQgaXMgZm9yIGRyaXZlcnMgdGhhdCBzdXBwb3J0IG1vcmUgdGhh biBvbmUgdHlwZSBvZgo+ID4gbWVtb3J5IChzaG1lbSx2cmFtLGNtYSkgZm9yIHRoZWlyIGJ1ZmZl cnMgZGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZSBpdAo+ID4gcnVucyBvbi4gV2l0aCB0aGUgY2Fs bGJhY2tzIGF0dGFjaGVkIHRvIHRoZSBHRU0gb2JqZWN0IGl0c2VsZiwgaXQgaXMKPiA+IGVhc2ll ciB0byBoYXZlIGNvcmUgaGVscGVycyBmb3IgdGhlIHRoZSB2YXJpb3VzIGJ1ZmZlciB0eXBlcy4g VGhlIGRyaXZlcgo+ID4gb25seSBoYXMgdG8gbWFrZSB0aGUgZGVjaXNpb24gYWJvdXQgYnVmZmVy IHR5cGUgb24gR0VNIG9iamVjdCBjcmVhdGlvbgo+ID4gYW5kIGFsbCBvdGhlciBjYWxsYmFja3Mg Y2FuIGJlIGhhbmRsZWQgYnkgdGhlIGNob3NlbiBoZWxwZXIuCj4gPiAKPiA+IGRybV9kcml2ZXIt PmdlbV9wcmltZV9yZXNfb2JqIGhhcyBub3QgYmVlbiBhZGRlZCBzaW5jZSB0aGVyZSdzIGEgdG9k byB0bwo+ID4gcHV0IGEgcmVzZXJ2YXRpb25fb2JqZWN0IGludG8gZHJtX2dlbV9vYmplY3QuCj4g PiAKPiA+IHYyOiBEcm9wIGRybV9nZW1fb2JqZWN0X2Z1bmNzLT5wcmltZV9tbWFwIGluIGZhdm91 ciBvZgo+ID4gZHJtX2dlbV9wcmltZV9tbWFwKCkgKERhbmllbCBWZXR0ZXIpCj4gPiAKPiA+IHYx Ogo+ID4gLSBkcm1fZ2VtX29iamVjdF9mdW5jcy5tYXAgLT4gLnByaW1lX21hcCBsZXQgaXQgb25s eSBkbyBQUklNRSBtbWFwIGxpa2UKPiA+ICAgIHRoZSBmdW5jdGlvbiBpdCBzdXBlcnNlZWRzIChE YW5pZWwgVmV0dGVyKQo+ID4gLSBGbGlwIGFyb3VuZCB0aGUgaWYgbGFkZGVycyBhbmQgbWFrZSBv YmotPmZ1bmNzIHRoZSBmaXJzdCBjaG9pY2UKPiA+ICAgIGhpZ2hsaWdodGluZyB0aGUgZmFjdCB0 aGF0IHRoaXMgdGhlIG5ldyBkZWZhdWx0IHdheSBvZiBkb2luZyBpdAo+ID4gICAgKERhbmllbCBW ZXR0ZXIpCj4gCj4gV2VsbCBjb3VsZCB3ZSBwbGVhc2UgbWFrZSB0aGlzIG1hbmRhdG9yeSBhbmQg Y29udmVydCBkcml2ZXJzIGJpdCBieSBiaXQ/CgpZZWFoIEknbSBhbGwgZm9yIGFkZGluZyBhIG5l dyBlbnRyeSB0byB0b2RvLnJzdCBhbmQgZ2V0dGluZyB0aGlzIHJvbGxpbmcuCklmIHRoZXJlJ3Mg c3VwcG9ydCAod2hpY2ggc2VlbXMgc28pLgotRGFuaWVsCgo+IAo+IENocmlzdGlhbi4KPiAKPiA+ IAo+ID4gU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+ Cj4gPiBBY2tlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiA+ IC0tLQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jIHwgIDEyICsrLS0KPiA+ICAg ZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYyAgICB8IDEwOSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLQo+ID4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMgIHwgIDM0ICsr KysrKy0tLS0tCj4gPiAgIGluY2x1ZGUvZHJtL2RybV9nZW0uaCAgICAgICAgfCAxMzEgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gICA0IGZpbGVzIGNoYW5n ZWQsIDI1MiBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ns aWVudC5jCj4gPiBpbmRleCAxN2Q5YTY0ZTg4NWUuLmVjYTczMzE3NjJlNCAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fY2xpZW50LmMKPiA+IEBAIC04MCw4ICs4MCw3IEBAIGludCBkcm1fY2xpZW50X25ldyhz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVudCwKPiA+ ICAgewo+ID4gICAJaW50IHJldDsKPiA+IC0JaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRl diwgRFJJVkVSX01PREVTRVQpIHx8Cj4gPiAtCSAgICAhZGV2LT5kcml2ZXItPmR1bWJfY3JlYXRl IHx8ICFkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3ZtYXApCj4gPiArCWlmICghZHJtX2NvcmVfY2hl Y2tfZmVhdHVyZShkZXYsIERSSVZFUl9NT0RFU0VUKSB8fCAhZGV2LT5kcml2ZXItPmR1bWJfY3Jl YXRlKQo+ID4gICAJCXJldHVybiAtRU9QTk9UU1VQUDsKPiA+ICAgCWlmIChmdW5jcyAmJiAhdHJ5 X21vZHVsZV9nZXQoZnVuY3MtPm93bmVyKSkKPiA+IEBAIC0yMTIsOCArMjExLDcgQEAgc3RhdGlj IHZvaWQgZHJtX2NsaWVudF9idWZmZXJfZGVsZXRlKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAq YnVmZmVyKQo+ID4gICB7Cj4gPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gYnVmZmVyLT5j bGllbnQtPmRldjsKPiA+IC0JaWYgKGJ1ZmZlci0+dmFkZHIgJiYgZGV2LT5kcml2ZXItPmdlbV9w cmltZV92dW5tYXApCj4gPiAtCQlkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Z1bm1hcChidWZmZXIt PmdlbSwgYnVmZmVyLT52YWRkcik7Cj4gPiArCWRybV9nZW1fdnVubWFwKGJ1ZmZlci0+Z2VtLCBi dWZmZXItPnZhZGRyKTsKPiA+ICAgCWlmIChidWZmZXItPmdlbSkKPiA+ICAgCQlkcm1fZ2VtX29i amVjdF9wdXRfdW5sb2NrZWQoYnVmZmVyLT5nZW0pOwo+ID4gQEAgLTI2Niw5ICsyNjQsOSBAQCBk cm1fY2xpZW50X2J1ZmZlcl9jcmVhdGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGllbnQsIHUz MiB3aWR0aCwgdTMyIGhlaWdodCwgdQo+ID4gICAJICogZmRfaW5zdGFsbCBzdGVwIG91dCBvZiB0 aGUgZHJpdmVyIGJhY2tlbmQgaG9va3MsIHRvIG1ha2UgdGhhdAo+ID4gICAJICogZmluYWwgc3Rl cCBvcHRpb25hbCBmb3IgaW50ZXJuYWwgdXNlcnMuCj4gPiAgIAkgKi8KPiA+IC0JdmFkZHIgPSBk ZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3ZtYXAob2JqKTsKPiA+IC0JaWYgKCF2YWRkcikgewo+ID4g LQkJcmV0ID0gLUVOT01FTTsKPiA+ICsJdmFkZHIgPSBkcm1fZ2VtX3ZtYXAob2JqKTsKPiA+ICsJ aWYgKElTX0VSUih2YWRkcikpIHsKPiA+ICsJCXJldCA9IFBUUl9FUlIodmFkZHIpOwo+ID4gICAJ CWdvdG8gZXJyX2RlbGV0ZTsKPiA+ICAgCX0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYwo+ID4gaW5kZXggNTEyMDc4 ZWJkOTdiLi44YjU1ZWNlOTc5NjcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2dlbS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jCj4gPiBAQCAtMjU3LDcg KzI1Nyw5IEBAIGRybV9nZW1fb2JqZWN0X3JlbGVhc2VfaGFuZGxlKGludCBpZCwgdm9pZCAqcHRy LCB2b2lkICpkYXRhKQo+ID4gICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBwdHI7Cj4g PiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5kZXY7Cj4gPiAtCWlmIChkZXYtPmRy aXZlci0+Z2VtX2Nsb3NlX29iamVjdCkKPiA+ICsJaWYgKG9iai0+ZnVuY3MgJiYgb2JqLT5mdW5j cy0+Y2xvc2UpCj4gPiArCQlvYmotPmZ1bmNzLT5jbG9zZShvYmosIGZpbGVfcHJpdik7Cj4gPiAr CWVsc2UgaWYgKGRldi0+ZHJpdmVyLT5nZW1fY2xvc2Vfb2JqZWN0KQo+ID4gICAJCWRldi0+ZHJp dmVyLT5nZW1fY2xvc2Vfb2JqZWN0KG9iaiwgZmlsZV9wcml2KTsKPiA+ICAgCWlmIChkcm1fY29y ZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BSSU1FKSkKPiA+IEBAIC00MTAsNyArNDEyLDEx IEBAIGRybV9nZW1faGFuZGxlX2NyZWF0ZV90YWlsKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 LAo+ID4gICAJaWYgKHJldCkKPiA+ICAgCQlnb3RvIGVycl9yZW1vdmU7Cj4gPiAtCWlmIChkZXYt PmRyaXZlci0+Z2VtX29wZW5fb2JqZWN0KSB7Cj4gPiArCWlmIChvYmotPmZ1bmNzICYmIG9iai0+ ZnVuY3MtPm9wZW4pIHsKPiA+ICsJCXJldCA9IG9iai0+ZnVuY3MtPm9wZW4ob2JqLCBmaWxlX3By aXYpOwo+ID4gKwkJaWYgKHJldCkKPiA+ICsJCQlnb3RvIGVycl9yZXZva2U7Cj4gPiArCX0gZWxz ZSBpZiAoZGV2LT5kcml2ZXItPmdlbV9vcGVuX29iamVjdCkgewo+ID4gICAJCXJldCA9IGRldi0+ ZHJpdmVyLT5nZW1fb3Blbl9vYmplY3Qob2JqLCBmaWxlX3ByaXYpOwo+ID4gICAJCWlmIChyZXQp Cj4gPiAgIAkJCWdvdG8gZXJyX3Jldm9rZTsKPiA+IEBAIC04MzUsNyArODQxLDkgQEAgZHJtX2dl bV9vYmplY3RfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikKPiA+ICAgCQljb250YWluZXJfb2Yoa3Jl Ziwgc3RydWN0IGRybV9nZW1fb2JqZWN0LCByZWZjb3VudCk7Cj4gPiAgIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gb2JqLT5kZXY7Cj4gPiAtCWlmIChkZXYtPmRyaXZlci0+Z2VtX2ZyZWVfb2Jq ZWN0X3VubG9ja2VkKSB7Cj4gPiArCWlmIChvYmotPmZ1bmNzKSB7Cj4gPiArCQlvYmotPmZ1bmNz LT5mcmVlKG9iaik7Cj4gPiArCX0gZWxzZSBpZiAoZGV2LT5kcml2ZXItPmdlbV9mcmVlX29iamVj dF91bmxvY2tlZCkgewo+ID4gICAJCWRldi0+ZHJpdmVyLT5nZW1fZnJlZV9vYmplY3RfdW5sb2Nr ZWQob2JqKTsKPiA+ICAgCX0gZWxzZSBpZiAoZGV2LT5kcml2ZXItPmdlbV9mcmVlX29iamVjdCkg ewo+ID4gICAJCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2LT5zdHJ1Y3RfbXV0ZXgpKTsK PiA+IEBAIC04NjQsMTMgKzg3MiwxMyBAQCBkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gPiAgIAlkZXYgPSBvYmotPmRldjsKPiA+IC0JaWYg KGRldi0+ZHJpdmVyLT5nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQpIHsKPiA+IC0JCWtyZWZfcHV0 KCZvYmotPnJlZmNvdW50LCBkcm1fZ2VtX29iamVjdF9mcmVlKTsKPiA+IC0JfSBlbHNlIHsKPiA+ ICsJaWYgKGRldi0+ZHJpdmVyLT5nZW1fZnJlZV9vYmplY3QpIHsKPiA+ICAgCQltaWdodF9sb2Nr KCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiAgIAkJaWYgKGtyZWZfcHV0X211dGV4KCZvYmotPnJl ZmNvdW50LCBkcm1fZ2VtX29iamVjdF9mcmVlLAo+ID4gICAJCQkJJmRldi0+c3RydWN0X211dGV4 KSkKPiA+ICAgCQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiArCX0gZWxz ZSB7Cj4gPiArCQlrcmVmX3B1dCgmb2JqLT5yZWZjb3VudCwgZHJtX2dlbV9vYmplY3RfZnJlZSk7 Cj4gPiAgIAl9Cj4gPiAgIH0KPiA+ICAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX29iamVjdF9wdXRf dW5sb2NrZWQpOwo+ID4gQEAgLTk2MCwxMSArOTY4LDE0IEBAIGludCBkcm1fZ2VtX21tYXBfb2Jq KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBsb25nIG9ial9zaXplLAo+ID4g ICAJaWYgKG9ial9zaXplIDwgdm1hLT52bV9lbmQgLSB2bWEtPnZtX3N0YXJ0KQo+ID4gICAJCXJl dHVybiAtRUlOVkFMOwo+ID4gLQlpZiAoIWRldi0+ZHJpdmVyLT5nZW1fdm1fb3BzKQo+ID4gKwlp ZiAob2JqLT5mdW5jcyAmJiBvYmotPmZ1bmNzLT52bV9vcHMpCj4gPiArCQl2bWEtPnZtX29wcyA9 IG9iai0+ZnVuY3MtPnZtX29wczsKPiA+ICsJZWxzZSBpZiAoZGV2LT5kcml2ZXItPmdlbV92bV9v cHMpCj4gPiArCQl2bWEtPnZtX29wcyA9IGRldi0+ZHJpdmVyLT5nZW1fdm1fb3BzOwo+ID4gKwll bHNlCj4gPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPiAgIAl2bWEtPnZtX2ZsYWdzIHw9IFZNX0lP IHwgVk1fUEZOTUFQIHwgVk1fRE9OVEVYUEFORCB8IFZNX0RPTlREVU1QOwo+ID4gLQl2bWEtPnZt X29wcyA9IGRldi0+ZHJpdmVyLT5nZW1fdm1fb3BzOwo+ID4gICAJdm1hLT52bV9wcml2YXRlX2Rh dGEgPSBvYmo7Cj4gPiAgIAl2bWEtPnZtX3BhZ2VfcHJvdCA9IHBncHJvdF93cml0ZWNvbWJpbmUo dm1fZ2V0X3BhZ2VfcHJvdCh2bWEtPnZtX2ZsYWdzKSk7Cj4gPiAgIAl2bWEtPnZtX3BhZ2VfcHJv dCA9IHBncHJvdF9kZWNyeXB0ZWQodm1hLT52bV9wYWdlX3Byb3QpOwo+ID4gQEAgLTEwNjYsNiAr MTA3Nyw4NiBAQCB2b2lkIGRybV9nZW1fcHJpbnRfaW5mbyhzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAs IHVuc2lnbmVkIGludCBpbmRlbnQsCj4gPiAgIAlkcm1fcHJpbnRmX2luZGVudChwLCBpbmRlbnQs ICJpbXBvcnRlZD0lc1xuIiwKPiA+ICAgCQkJICBvYmotPmltcG9ydF9hdHRhY2ggPyAieWVzIiA6 ICJubyIpOwo+ID4gLQlpZiAob2JqLT5kZXYtPmRyaXZlci0+Z2VtX3ByaW50X2luZm8pCj4gPiAr CWlmIChvYmotPmZ1bmNzICYmIG9iai0+ZnVuY3MtPnByaW50X2luZm8pCj4gPiArCQlvYmotPmZ1 bmNzLT5wcmludF9pbmZvKHAsIGluZGVudCwgb2JqKTsKPiA+ICsJZWxzZSBpZiAob2JqLT5kZXYt PmRyaXZlci0+Z2VtX3ByaW50X2luZm8pCj4gPiAgIAkJb2JqLT5kZXYtPmRyaXZlci0+Z2VtX3By aW50X2luZm8ocCwgaW5kZW50LCBvYmopOwo+ID4gICB9Cj4gPiArCj4gPiArLyoqCj4gPiArICog ZHJtX2dlbV9waW4gLSBQaW4gYmFja2luZyBidWZmZXIgaW4gbWVtb3J5Cj4gPiArICogQG9iajog R0VNIG9iamVjdAo+ID4gKyAqCj4gPiArICogTWFrZSBzdXJlIHRoZSBiYWNraW5nIGJ1ZmZlciBp cyBwaW5uZWQgaW4gbWVtb3J5Lgo+ID4gKyAqCj4gPiArICogUmV0dXJuczoKPiA+ICsgKiAwIG9u IHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gPiArICovCj4g PiAraW50IGRybV9nZW1fcGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQo+ID4gK3sKPiA+ ICsJaWYgKG9iai0+ZnVuY3MgJiYgb2JqLT5mdW5jcy0+cGluKQo+ID4gKwkJcmV0dXJuIG9iai0+ ZnVuY3MtPnBpbihvYmopOwo+ID4gKwllbHNlIGlmIChvYmotPmRldi0+ZHJpdmVyLT5nZW1fcHJp bWVfcGluKQo+ID4gKwkJcmV0dXJuIG9iai0+ZGV2LT5kcml2ZXItPmdlbV9wcmltZV9waW4ob2Jq KTsKPiA+ICsJZWxzZQo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1CT0wo ZHJtX2dlbV9waW4pOwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGRybV9nZW1fdW5waW4gLSBVbnBp biBiYWNraW5nIGJ1ZmZlciBmcm9tIG1lbW9yeQo+ID4gKyAqIEBvYmo6IEdFTSBvYmplY3QKPiA+ ICsgKgo+ID4gKyAqIFJlbGF4IHRoZSByZXF1aXJlbWVudCB0aGF0IHRoZSBiYWNraW5nIGJ1ZmZl ciBpcyBwaW5uZWQgaW4gbWVtb3J5Lgo+ID4gKyAqLwo+ID4gK3ZvaWQgZHJtX2dlbV91bnBpbihz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiA+ICt7Cj4gPiArCWlmIChvYmotPmZ1bmNzICYm IG9iai0+ZnVuY3MtPnVucGluKQo+ID4gKwkJb2JqLT5mdW5jcy0+dW5waW4ob2JqKTsKPiA+ICsJ ZWxzZSBpZiAob2JqLT5kZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3VucGluKQo+ID4gKwkJb2JqLT5k ZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3VucGluKG9iaik7Cj4gPiArfQo+ID4gK0VYUE9SVF9TWU1C T0woZHJtX2dlbV91bnBpbik7Cj4gPiArCj4gPiArLyoqCj4gPiArICogZHJtX2dlbV92bWFwIC0g TWFwIGJ1ZmZlciBpbnRvIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3Mgc3BhY2UKPiA+ICsgKiBAb2Jq OiBHRU0gb2JqZWN0Cj4gPiArICoKPiA+ICsgKiBSZXR1cm5zOgo+ID4gKyAqIEEgdmlydHVhbCBw b2ludGVyIHRvIGEgbmV3bHkgY3JlYXRlZCBHRU0gb2JqZWN0IG9yIGFuIEVSUl9QVFItZW5jb2Rl ZCBuZWdhdGl2ZQo+ID4gKyAqIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiA+ICsgKi8KPiA+ICt2 b2lkICpkcm1fZ2VtX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gPiArewo+ID4g Kwl2b2lkICp2YWRkcjsKPiA+ICsKPiA+ICsJaWYgKG9iai0+ZnVuY3MgJiYgb2JqLT5mdW5jcy0+ dm1hcCkKPiA+ICsJCXZhZGRyID0gb2JqLT5mdW5jcy0+dm1hcChvYmopOwo+ID4gKwllbHNlIGlm IChvYmotPmRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdm1hcCkKPiA+ICsJCXZhZGRyID0gb2JqLT5k ZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3ZtYXAob2JqKTsKPiA+ICsJZWxzZQo+ID4gKwkJdmFkZHIg PSBFUlJfUFRSKC1FT1BOT1RTVVBQKTsKPiA+ICsKPiA+ICsJaWYgKCF2YWRkcikKPiA+ICsJCXZh ZGRyID0gRVJSX1BUUigtRU5PTUVNKTsKPiA+ICsKPiA+ICsJcmV0dXJuIHZhZGRyOwo+ID4gK30K PiA+ICtFWFBPUlRfU1lNQk9MKGRybV9nZW1fdm1hcCk7Cj4gPiArCj4gPiArLyoqCj4gPiArICog ZHJtX2dlbV92dW5tYXAgLSBSZW1vdmUgYnVmZmVyIG1hcHBpbmcgZnJvbSBrZXJuZWwgdmlydHVh bCBhZGRyZXNzIHNwYWNlCj4gPiArICogQG9iajogR0VNIG9iamVjdAo+ID4gKyAqIEB2YWRkcjog VmlydHVhbCBhZGRyZXNzIChjYW4gYmUgTlVMTCkKPiA+ICsgKi8KPiA+ICt2b2lkIGRybV9nZW1f dnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcikKPiA+ICt7Cj4g PiArCWlmICghdmFkZHIpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiArCWlmIChvYmotPmZ1bmNz ICYmIG9iai0+ZnVuY3MtPnZ1bm1hcCkKPiA+ICsJCW9iai0+ZnVuY3MtPnZ1bm1hcChvYmosIHZh ZGRyKTsKPiA+ICsJZWxzZSBpZiAob2JqLT5kZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Z1bm1hcCkK PiA+ICsJCW9iai0+ZGV2LT5kcml2ZXItPmdlbV9wcmltZV92dW5tYXAob2JqLCB2YWRkcik7Cj4g PiArfQo+ID4gK0VYUE9SVF9TWU1CT0woZHJtX2dlbV92dW5tYXApOwo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUu Ywo+ID4gaW5kZXggNDJhYmY5OGMxZDRhLi5lMGFiNTIxM2VmYTcgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f cHJpbWUuYwo+ID4gQEAgLTE5OSw3ICsxOTksNiBAQCBpbnQgZHJtX2dlbV9tYXBfYXR0YWNoKHN0 cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ID4gICB7Cj4gPiAgIAlzdHJ1Y3QgZHJtX3ByaW1lX2F0 dGFjaG1lbnQgKnByaW1lX2F0dGFjaDsKPiA+ICAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq ID0gZG1hX2J1Zi0+cHJpdjsKPiA+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2 Owo+ID4gICAJcHJpbWVfYXR0YWNoID0ga3phbGxvYyhzaXplb2YoKnByaW1lX2F0dGFjaCksIEdG UF9LRVJORUwpOwo+ID4gICAJaWYgKCFwcmltZV9hdHRhY2gpCj4gPiBAQCAtMjA4LDEwICsyMDcs NyBAQCBpbnQgZHJtX2dlbV9tYXBfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLAo+ID4g ICAJcHJpbWVfYXR0YWNoLT5kaXIgPSBETUFfTk9ORTsKPiA+ICAgCWF0dGFjaC0+cHJpdiA9IHBy aW1lX2F0dGFjaDsKPiA+IC0JaWYgKCFkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3BpbikKPiA+IC0J CXJldHVybiAwOwo+ID4gLQo+ID4gLQlyZXR1cm4gZGV2LT5kcml2ZXItPmdlbV9wcmltZV9waW4o b2JqKTsKPiA+ICsJcmV0dXJuIGRybV9nZW1fcGluKG9iaik7Cj4gPiAgIH0KPiA+ICAgRVhQT1JU X1NZTUJPTChkcm1fZ2VtX21hcF9hdHRhY2gpOwo+ID4gQEAgLTIyOCw3ICsyMjQsNiBAQCB2b2lk IGRybV9nZW1fbWFwX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKPiA+ICAgewo+ID4g ICAJc3RydWN0IGRybV9wcmltZV9hdHRhY2htZW50ICpwcmltZV9hdHRhY2ggPSBhdHRhY2gtPnBy aXY7Cj4gPiAgIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IGRtYV9idWYtPnByaXY7Cj4g PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsKPiA+ICAgCWlmIChwcmltZV9h dHRhY2gpIHsKPiA+ICAgCQlzdHJ1Y3Qgc2dfdGFibGUgKnNndCA9IHByaW1lX2F0dGFjaC0+c2d0 Owo+ID4gQEAgLTI0Nyw4ICsyNDIsNyBAQCB2b2lkIGRybV9nZW1fbWFwX2RldGFjaChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hX2J1ZiwKPiA+ICAgCQlhdHRhY2gtPnByaXYgPSBOVUxMOwo+ID4gICAJfQo+ ID4gLQlpZiAoZGV2LT5kcml2ZXItPmdlbV9wcmltZV91bnBpbikKPiA+IC0JCWRldi0+ZHJpdmVy LT5nZW1fcHJpbWVfdW5waW4ob2JqKTsKPiA+ICsJZHJtX2dlbV91bnBpbihvYmopOwo+ID4gICB9 Cj4gPiAgIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9tYXBfZGV0YWNoKTsKPiA+IEBAIC0zMTAsNyAr MzA0LDEwIEBAIHN0cnVjdCBzZ190YWJsZSAqZHJtX2dlbV9tYXBfZG1hX2J1ZihzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICphdHRhY2gsCj4gPiAgIAlpZiAoV0FSTl9PTihwcmltZV9hdHRhY2gt PmRpciAhPSBETUFfTk9ORSkpCj4gPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVCVVNZKTsKPiA+IC0J c2d0ID0gb2JqLT5kZXYtPmRyaXZlci0+Z2VtX3ByaW1lX2dldF9zZ190YWJsZShvYmopOwo+ID4g KwlpZiAob2JqLT5mdW5jcykKPiA+ICsJCXNndCA9IG9iai0+ZnVuY3MtPmdldF9zZ190YWJsZShv YmopOwo+ID4gKwllbHNlCj4gPiArCQlzZ3QgPSBvYmotPmRldi0+ZHJpdmVyLT5nZW1fcHJpbWVf Z2V0X3NnX3RhYmxlKG9iaik7Cj4gPiAgIAlpZiAoIUlTX0VSUihzZ3QpKSB7Cj4gPiAgIAkJaWYg KCFkbWFfbWFwX3NnX2F0dHJzKGF0dGFjaC0+ZGV2LCBzZ3QtPnNnbCwgc2d0LT5uZW50cywgZGly LAo+ID4gQEAgLTQwNiwxMiArNDAzLDEzIEBAIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9kbWFidWZf cmVsZWFzZSk7Cj4gPiAgIHZvaWQgKmRybV9nZW1fZG1hYnVmX3ZtYXAoc3RydWN0IGRtYV9idWYg KmRtYV9idWYpCj4gPiAgIHsKPiA+ICAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gZG1h X2J1Zi0+cHJpdjsKPiA+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2Owo+ID4g Kwl2b2lkICp2YWRkcjsKPiA+IC0JaWYgKGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdm1hcCkKPiA+ IC0JCXJldHVybiBkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3ZtYXAob2JqKTsKPiA+IC0JZWxzZQo+ ID4gLQkJcmV0dXJuIE5VTEw7Cj4gPiArCXZhZGRyID0gZHJtX2dlbV92bWFwKG9iaik7Cj4gPiAr CWlmIChJU19FUlIodmFkZHIpKQo+ID4gKwkJdmFkZHIgPSBOVUxMOwo+ID4gKwo+ID4gKwlyZXR1 cm4gdmFkZHI7Cj4gPiAgIH0KPiA+ICAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX2RtYWJ1Zl92bWFw KTsKPiA+IEBAIC00MjYsMTAgKzQyNCw4IEBAIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9kbWFidWZf dm1hcCk7Cj4gPiAgIHZvaWQgZHJtX2dlbV9kbWFidWZfdnVubWFwKHN0cnVjdCBkbWFfYnVmICpk bWFfYnVmLCB2b2lkICp2YWRkcikKPiA+ICAgewo+ID4gICAJc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmogPSBkbWFfYnVmLT5wcml2Owo+ID4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2Jq LT5kZXY7Cj4gPiAtCWlmIChkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Z1bm1hcCkKPiA+IC0JCWRl di0+ZHJpdmVyLT5nZW1fcHJpbWVfdnVubWFwKG9iaiwgdmFkZHIpOwo+ID4gKwlkcm1fZ2VtX3Z1 bm1hcChvYmosIHZhZGRyKTsKPiA+ICAgfQo+ID4gICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fZG1h YnVmX3Z1bm1hcCk7Cj4gPiBAQCAtNTI5LDcgKzUyNSw5IEBAIHN0YXRpYyBzdHJ1Y3QgZG1hX2J1 ZiAqZXhwb3J0X2FuZF9yZWdpc3Rlcl9vYmplY3Qoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ ICAgCQlyZXR1cm4gZG1hYnVmOwo+ID4gICAJfQo+ID4gLQlpZiAoZGV2LT5kcml2ZXItPmdlbV9w cmltZV9leHBvcnQpCj4gPiArCWlmIChvYmotPmZ1bmNzICYmIG9iai0+ZnVuY3MtPmV4cG9ydCkK PiA+ICsJCWRtYWJ1ZiA9IG9iai0+ZnVuY3MtPmV4cG9ydChvYmosIGZsYWdzKTsKPiA+ICsJZWxz ZSBpZiAoZGV2LT5kcml2ZXItPmdlbV9wcmltZV9leHBvcnQpCj4gPiAgIAkJZG1hYnVmID0gZGV2 LT5kcml2ZXItPmdlbV9wcmltZV9leHBvcnQoZGV2LCBvYmosIGZsYWdzKTsKPiA+ICAgCWVsc2UK PiA+ICAgCQlkbWFidWYgPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydChkZXYsIG9iaiwgZmxhZ3MpOwo+ ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9nZW0uaCBiL2luY2x1ZGUvZHJtL2RybV9n ZW0uaAo+ID4gaW5kZXggMzU4M2I5OGExNzE4Li5mNDY2Y2U1YmRlMGUgMTAwNjQ0Cj4gPiAtLS0g YS9pbmNsdWRlL2RybS9kcm1fZ2VtLmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9nZW0uaAo+ ID4gQEAgLTM4LDYgKzM4LDEyMSBAQAo+ID4gICAjaW5jbHVkZSA8ZHJtL2RybV92bWFfbWFuYWdl ci5oPgo+ID4gK3N0cnVjdCBkcm1fZ2VtX29iamVjdDsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBz dHJ1Y3QgZHJtX2dlbV9vYmplY3RfZnVuY3MgLSBHRU0gb2JqZWN0IGZ1bmN0aW9ucwo+ID4gKyAq Lwo+ID4gK3N0cnVjdCBkcm1fZ2VtX29iamVjdF9mdW5jcyB7Cj4gPiArCS8qKgo+ID4gKwkgKiBA ZnJlZToKPiA+ICsJICoKPiA+ICsJICogRGVjb25zdHJ1Y3RvciBmb3IgZHJtX2dlbV9vYmplY3Rz Lgo+ID4gKwkgKgo+ID4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG1hbmRhdG9yeS4KPiA+ICsJICov Cj4gPiArCXZvaWQgKCpmcmVlKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gPiArCj4g PiArCS8qKgo+ID4gKwkgKiBAb3BlbjoKPiA+ICsJICoKPiA+ICsJICogQ2FsbGVkIHVwb24gR0VN IGhhbmRsZSBjcmVhdGlvbi4KPiA+ICsJICoKPiA+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRp b25hbC4KPiA+ICsJICovCj4gPiArCWludCAoKm9wZW4pKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwo+ID4gKwo+ID4gKwkvKioKPiA+ICsJICogQGNs b3NlOgo+ID4gKwkgKgo+ID4gKwkgKiBDYWxsZWQgdXBvbiBHRU0gaGFuZGxlIHJlbGVhc2UuCj4g PiArCSAqCj4gPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gPiArCSAqLwo+ID4g Kwl2b2lkICgqY2xvc2UpKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGUpOwo+ID4gKwo+ID4gKwkvKioKPiA+ICsJICogQHByaW50X2luZm86Cj4gPiArCSAq Cj4gPiArCSAqIElmIGRyaXZlciBzdWJjbGFzc2VzIHN0cnVjdCAmZHJtX2dlbV9vYmplY3QsIGl0 IGNhbiBpbXBsZW1lbnQgdGhpcwo+ID4gKwkgKiBvcHRpb25hbCBob29rIGZvciBwcmludGluZyBh ZGRpdGlvbmFsIGRyaXZlciBzcGVjaWZpYyBpbmZvLgo+ID4gKwkgKgo+ID4gKwkgKiBkcm1fcHJp bnRmX2luZGVudCgpIHNob3VsZCBiZSB1c2VkIGluIHRoZSBjYWxsYmFjayBwYXNzaW5nIGl0IHRo ZQo+ID4gKwkgKiBpbmRlbnQgYXJndW1lbnQuCj4gPiArCSAqCj4gPiArCSAqIFRoaXMgY2FsbGJh Y2sgaXMgY2FsbGVkIGZyb20gZHJtX2dlbV9wcmludF9pbmZvKCkuCj4gPiArCSAqCj4gPiArCSAq IFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gPiArCSAqLwo+ID4gKwl2b2lkICgqcHJpbnRf aW5mbykoc3RydWN0IGRybV9wcmludGVyICpwLCB1bnNpZ25lZCBpbnQgaW5kZW50LAo+ID4gKwkJ CSAgIGNvbnN0IHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiA+ICsKPiA+ICsJLyoqCj4g PiArCSAqIEBleHBvcnQ6Cj4gPiArCSAqCj4gPiArCSAqIEV4cG9ydCBiYWNraW5nIGJ1ZmZlciBh cyBhICZkbWFfYnVmLgo+ID4gKwkgKiBJZiB0aGlzIGlzIG5vdCBzZXQgZHJtX2dlbV9wcmltZV9l eHBvcnQoKSBpcyB1c2VkLgo+ID4gKwkgKgo+ID4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlv bmFsLgo+ID4gKwkgKi8KPiA+ICsJc3RydWN0IGRtYV9idWYgKigqZXhwb3J0KShzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaiwgaW50IGZsYWdzKTsKPiA+ICsKPiA+ICsJLyoqCj4gPiArCSAqIEBw aW46Cj4gPiArCSAqCj4gPiArCSAqIFBpbiBiYWNraW5nIGJ1ZmZlciBpbiBtZW1vcnkuCj4gPiAr CSAqCj4gPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gPiArCSAqLwo+ID4gKwlp bnQgKCpwaW4pKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiA+ICsKPiA+ICsJLyoqCj4g PiArCSAqIEB1bnBpbjoKPiA+ICsJICoKPiA+ICsJICogVW5waW4gYmFja2luZyBidWZmZXIuCj4g PiArCSAqCj4gPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gPiArCSAqLwo+ID4g Kwl2b2lkICgqdW5waW4pKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsKPiA+ICsKPiA+ICsJ LyoqCj4gPiArCSAqIEBnZXRfc2dfdGFibGU6Cj4gPiArCSAqCj4gPiArCSAqIFJldHVybnMgYSBT Y2F0dGVyLUdhdGhlciB0YWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVmZmVyLgo+ID4gKwkg KiBVc2VkIHdoZW4gZXhwb3J0aW5nIGEgYnVmZmVyLgo+ID4gKwkgKgo+ID4gKwkgKiBUaGlzIGNh bGxiYWNrIGlzIG1hbmRhdG9yeSBpZiBidWZmZXIgZXhwb3J0IGlzIHN1cHBvcnRlZC4KPiA+ICsJ ICovCj4gPiArCXN0cnVjdCBzZ190YWJsZSAqKCpnZXRfc2dfdGFibGUpKHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqKTsKPiA+ICsKPiA+ICsJLyoqCj4gPiArCSAqIEB2bWFwOgo+ID4gKwkgKgo+ ID4gKwkgKiBSZXR1cm5zIGEgdmlydHVhbCBhZGRyZXNzIGZvciB0aGUgYnVmZmVyLgo+ID4gKwkg Kgo+ID4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG9wdGlvbmFsLgo+ID4gKwkgKi8KPiA+ICsJdm9p ZCAqKCp2bWFwKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7Cj4gPiArCj4gPiArCS8qKgo+ ID4gKwkgKiBAdnVubWFwOgo+ID4gKwkgKgo+ID4gKwkgKiBSZWxlYXNlcyB0aGUgdGhlIGFkZHJl c3MgcHJldmlvdXNseSByZXR1cm5lZCBieSBAdm1hcC4KPiA+ICsJICoKPiA+ICsJICogVGhpcyBj YWxsYmFjayBpcyBvcHRpb25hbC4KPiA+ICsJICovCj4gPiArCXZvaWQgKCp2dW5tYXApKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcik7Cj4gPiArCj4gPiArCS8qKgo+ID4g KwkgKiBAdm1fb3BzOgo+ID4gKwkgKgo+ID4gKwkgKiBWaXJ0dWFsIG1lbW9yeSBvcGVyYXRpb25z IHVzZWQgd2l0aCBtbWFwLgo+ID4gKwkgKgo+ID4gKwkgKiBUaGlzIGlzIG9wdGlvbmFsIGJ1dCBu ZWNlc3NhcnkgZm9yIG1tYXAgc3VwcG9ydC4KPiA+ICsJICovCj4gPiArCWNvbnN0IHN0cnVjdCB2 bV9vcGVyYXRpb25zX3N0cnVjdCAqdm1fb3BzOwo+ID4gK307Cj4gPiArCj4gPiAgIC8qKgo+ID4g ICAgKiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgLSBHRU0gYnVmZmVyIG9iamVjdAo+ID4gICAgKgo+ ID4gQEAgLTE0Niw2ICsyNjEsMTcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0IHsKPiA+ICAgCSAq IHNpbXBseSBsZWF2ZSBpdCBhcyBOVUxMLgo+ID4gICAJICovCj4gPiAgIAlzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50ICppbXBvcnRfYXR0YWNoOwo+ID4gKwo+ID4gKwkvKioKPiA+ICsJICogQGZ1 bmNzOgo+ID4gKwkgKgo+ID4gKwkgKiBPcHRpb25hbCBHRU0gb2JqZWN0IGZ1bmN0aW9ucy4gSWYg dGhpcyBpcyBzZXQsIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZQo+ID4gKwkgKiBjb3Jy ZXNwb25kaW5nICZkcm1fZHJpdmVyIEdFTSBjYWxsYmFja3MuCj4gPiArCSAqCj4gPiArCSAqIE5l dyBkcml2ZXJzIHNob3VsZCB1c2UgdGhpcy4KPiA+ICsJICoKPiA+ICsJICovCj4gPiArCWNvbnN0 IHN0cnVjdCBkcm1fZ2VtX29iamVjdF9mdW5jcyAqZnVuY3M7Cj4gPiAgIH07Cj4gPiAgIC8qKgo+ ID4gQEAgLTI5Myw0ICs0MTksOSBAQCBpbnQgZHJtX2dlbV9kdW1iX2Rlc3Ryb3koc3RydWN0IGRy bV9maWxlICpmaWxlLAo+ID4gICAJCQkgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAgCQkJ IHVpbnQzMl90IGhhbmRsZSk7Cj4gPiAraW50IGRybV9nZW1fcGluKHN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqKTsKPiA+ICt2b2lkIGRybV9nZW1fdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmopOwo+ID4gK3ZvaWQgKmRybV9nZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aik7Cj4gPiArdm9pZCBkcm1fZ2VtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwg dm9pZCAqdmFkZHIpOwo+ID4gKwo+ID4gICAjZW5kaWYgLyogX19EUk1fR0VNX0hfXyAqLwo+IAo+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRl dmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0g CkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6 Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=