From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC 2/3] drm/gem: Add drm_gem_object_funcs Date: Sat, 22 Sep 2018 12:41:48 +0200 Message-ID: <20180922104148.GQ11082@phenom.ffwll.local> References: <20180921164230.51838-1-noralf@tronnes.org> <20180921164230.51838-3-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 64E496E043 for ; Sat, 22 Sep 2018 10:41:53 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id u23so3505118edx.10 for ; Sat, 22 Sep 2018 03:41:53 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20180921164230.51838-3-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBTZXAgMjEsIDIwMTggYXQgMDY6NDI6MjlQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IFRoaXMgYWRkcyBhbiBvcHRpb25hbCBmdW5jdGlvbiB0YWJsZSBvbiBHRU0gb2Jq ZWN0cy4KPiBUaGUgbWFpbiBiZW5lZml0IGlzIGZvciBkcml2ZXJzIHRoYXQgc3VwcG9ydCBtb3Jl IHRoYW4gb25lIHR5cGUgb2YKPiBtZW1vcnkgKHNobWVtLHZyYW0sY21hKSBmb3IgdGhlaXIgYnVm ZmVycyBkZXBlbmRpbmcgb24gdGhlIGhhcmR3YXJlIGl0Cj4gcnVucyBvbi4gV2l0aCB0aGUgY2Fs bGJhY2tzIGF0dGFjaGVkIHRvIHRoZSBHRU0gb2JqZWN0IGl0c2VsZiwgaXQgaXMKPiBlYXNpZXIg dG8gaGF2ZSBjb3JlIGhlbHBlcnMgZm9yIHRoZSB0aGUgdmFyaW91cyBidWZmZXIgdHlwZXMuIFRo ZSBkcml2ZXIKPiBvbmx5IGhhcyB0byBtYWtlIHRoZSBkZWNpc2lvbiBhYm91dCBidWZmZXIgdHlw ZSBvbiBHRU0gb2JqZWN0IGNyZWF0aW9uCj4gYW5kIGFsbCBvdGhlciBjYWxsYmFja3MgY2FuIGJl IGhhbmRsZWQgYnkgdGhlIGNob3NlbiBoZWxwZXIuCj4gCj4gZHJtX2RyaXZlci0+Z2VtX3ByaW1l X3Jlc19vYmogaGFzIG5vdCBiZWVuIGFkZGVkIHNpbmNlIHRoZXJlJ3MgYSB0b2RvIHRvCj4gcHV0 IGEgcmVzZXJ2YXRpb25fb2JqZWN0IGludG8gZHJtX2dlbV9vYmplY3QuCj4gCj4gVGhlIGluZGl2 aWR1YWwgZHJtX2RyaXZlciBjYWxsYmFja3MgdGFrZSBwcmlvcml0eSBvdmVyIHRoZSBHRU0gYXR0 YWNoZWQKPiBjYWxsYmFja3MuCgpJJ2QgZG8gdGhpcyB0aGUgb3RoZXIgd2F5IHJvdW5kLCBtYWtl IHRoZSBuZXcgZ2VtIGNhbGxiYWNrcyB0aGUgY2xlYXJseQpmYXZvdXJlZCBvcHRpb24uCgo+IFNp Z25lZC1vZmYtYnk6IE5vcmFsZiBUcsO4bm5lcyA8bm9yYWxmQHRyb25uZXMub3JnPgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jICAgIHwgIDEyICsrLS0KPiAgZHJpdmVycy9n cHUvZHJtL2RybV9mYl9oZWxwZXIuYyB8ICAgOCArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9n ZW0uYyAgICAgICB8IDEwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gIGRyaXZl cnMvZ3B1L2RybS9kcm1fcHJpbWUuYyAgICAgfCAgNDAgKysrKysrLS0tLS0tCj4gIGluY2x1ZGUv ZHJtL2RybV9nZW0uaCAgICAgICAgICAgfCAxMzggKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDI3MiBpbnNlcnRpb25zKCspLCAzNCBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQu YyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMKPiBpbmRleCAxN2Q5YTY0ZTg4NWUuLmVj YTczMzE3NjJlNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jbGllbnQuYwo+IEBAIC04MCw4ICs4MCw3IEBAIGlu dCBkcm1fY2xpZW50X25ldyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2NsaWVu dF9kZXYgKmNsaWVudCwKPiAgewo+ICAJaW50IHJldDsKPiAgCj4gLQlpZiAoIWRybV9jb3JlX2No ZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkgfHwKPiAtCSAgICAhZGV2LT5kcml2ZXIt PmR1bWJfY3JlYXRlIHx8ICFkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3ZtYXApCj4gKwlpZiAoIWRy bV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfTU9ERVNFVCkgfHwgIWRldi0+ZHJpdmVy LT5kdW1iX2NyZWF0ZSkKPiAgCQlyZXR1cm4gLUVPUE5PVFNVUFA7CgpJIGd1ZXNzIHRoZSAtPmdl bV9wcmltZV92bWFwIGNoZWNrIGdvdCBsb3N0LCBuZWVkcyB0byBiZSByZWFkZGVkIHNvbWV3aGVy ZQpJIHRoaW5rLgoKPiAgCj4gIAlpZiAoZnVuY3MgJiYgIXRyeV9tb2R1bGVfZ2V0KGZ1bmNzLT5v d25lcikpCj4gQEAgLTIxMiw4ICsyMTEsNyBAQCBzdGF0aWMgdm9pZCBkcm1fY2xpZW50X2J1ZmZl cl9kZWxldGUoc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXIpCj4gIHsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBidWZmZXItPmNsaWVudC0+ZGV2Owo+ICAKPiAtCWlmIChidWZm ZXItPnZhZGRyICYmIGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdnVubWFwKQo+IC0JCWRldi0+ZHJp dmVyLT5nZW1fcHJpbWVfdnVubWFwKGJ1ZmZlci0+Z2VtLCBidWZmZXItPnZhZGRyKTsKPiArCWRy bV9nZW1fdnVubWFwKGJ1ZmZlci0+Z2VtLCBidWZmZXItPnZhZGRyKTsKPiAgCj4gIAlpZiAoYnVm ZmVyLT5nZW0pCj4gIAkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKGJ1ZmZlci0+Z2VtKTsK PiBAQCAtMjY2LDkgKzI2NCw5IEBAIGRybV9jbGllbnRfYnVmZmVyX2NyZWF0ZShzdHJ1Y3QgZHJt X2NsaWVudF9kZXYgKmNsaWVudCwgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0LCB1Cj4gIAkgKiBmZF9p bnN0YWxsIHN0ZXAgb3V0IG9mIHRoZSBkcml2ZXIgYmFja2VuZCBob29rcywgdG8gbWFrZSB0aGF0 Cj4gIAkgKiBmaW5hbCBzdGVwIG9wdGlvbmFsIGZvciBpbnRlcm5hbCB1c2Vycy4KPiAgCSAqLwo+ IC0JdmFkZHIgPSBkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3ZtYXAob2JqKTsKPiAtCWlmICghdmFk ZHIpIHsKPiAtCQlyZXQgPSAtRU5PTUVNOwo+ICsJdmFkZHIgPSBkcm1fZ2VtX3ZtYXAob2JqKTsK PiArCWlmIChJU19FUlIodmFkZHIpKSB7Cj4gKwkJcmV0ID0gUFRSX0VSUih2YWRkcik7Cj4gIAkJ Z290byBlcnJfZGVsZXRlOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiBpbmRl eCA4ZTk1ZDBmN2M3MWQuLjY2OTY5ZjBmYWNiYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZiX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIu Ywo+IEBAIC0zOCw2ICszOCw3IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAjaW5jbHVk ZSA8ZHJtL2RybV9jcnRjLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgo+ICsj aW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIu aD4KPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0 b21pY19oZWxwZXIuaD4KPiBAQCAtMzAxMCw5ICszMDExLDEyIEBAIHN0YXRpYyB2b2lkIGRybV9m YmRldl9mYl9kZXN0cm95KHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ICBzdGF0aWMgaW50IGRybV9m YmRldl9mYl9tbWFwKHN0cnVjdCBmYl9pbmZvICppbmZvLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSkKPiAgewo+ICAJc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciA9IGluZm8tPnBh cjsKPiArCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gZmJfaGVscGVyLT5idWZmZXItPmdl bTsKPiAgCj4gLQlpZiAoZmJfaGVscGVyLT5kZXYtPmRyaXZlci0+Z2VtX3ByaW1lX21tYXApCj4g LQkJcmV0dXJuIGZiX2hlbHBlci0+ZGV2LT5kcml2ZXItPmdlbV9wcmltZV9tbWFwKGZiX2hlbHBl ci0+YnVmZmVyLT5nZW0sIHZtYSk7Cj4gKwlpZiAob2JqLT5kZXYtPmRyaXZlci0+Z2VtX3ByaW1l X21tYXApCj4gKwkJcmV0dXJuIG9iai0+ZGV2LT5kcml2ZXItPmdlbV9wcmltZV9tbWFwKG9iaiwg dm1hKTsKPiArCWVsc2UgaWYgKG9iai0+ZnVuY3MgJiYgb2JqLT5mdW5jcy0+bW1hcCkKPiArCQly ZXR1cm4gZHJtX2dlbV9tbWFwX29iaihvYmosIG9iai0+c2l6ZSwgdm1hKTsKPiAgCWVsc2UKPiAg CQlyZXR1cm4gLUVOT0RFVjsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYwo+IGluZGV4IDUxMjA3OGViZDk3Yi4u N2RhMjU0OTY2N2NlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbS5jCj4gQEAgLTI1OSw2ICsyNTksOCBAQCBkcm1f Z2VtX29iamVjdF9yZWxlYXNlX2hhbmRsZShpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkK PiAgCj4gIAlpZiAoZGV2LT5kcml2ZXItPmdlbV9jbG9zZV9vYmplY3QpCj4gIAkJZGV2LT5kcml2 ZXItPmdlbV9jbG9zZV9vYmplY3Qob2JqLCBmaWxlX3ByaXYpOwo+ICsJZWxzZSBpZiAob2JqLT5m dW5jcyAmJiBvYmotPmZ1bmNzLT5jbG9zZSkKPiArCQlvYmotPmZ1bmNzLT5jbG9zZShvYmosIGZp bGVfcHJpdik7Cj4gIAo+ICAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJf UFJJTUUpKQo+ICAJCWRybV9nZW1fcmVtb3ZlX3ByaW1lX2hhbmRsZXMob2JqLCBmaWxlX3ByaXYp Owo+IEBAIC00MTQsNiArNDE2LDEwIEBAIGRybV9nZW1faGFuZGxlX2NyZWF0ZV90YWlsKHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2LAo+ICAJCXJldCA9IGRldi0+ZHJpdmVyLT5nZW1fb3Blbl9v YmplY3Qob2JqLCBmaWxlX3ByaXYpOwo+ICAJCWlmIChyZXQpCj4gIAkJCWdvdG8gZXJyX3Jldm9r ZTsKPiArCX0gZWxzZSBpZiAob2JqLT5mdW5jcyAmJiBvYmotPmZ1bmNzLT5vcGVuKSB7Cj4gKwkJ cmV0ID0gb2JqLT5mdW5jcy0+b3BlbihvYmosIGZpbGVfcHJpdik7Cj4gKwkJaWYgKHJldCkKPiAr CQkJZ290byBlcnJfcmV2b2tlOwo+ICAJfQo+ICAKPiAgCSpoYW5kbGVwID0gaGFuZGxlOwo+IEBA IC04NDEsNiArODQ3LDggQEAgZHJtX2dlbV9vYmplY3RfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikK PiAgCQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldi0+c3RydWN0X211dGV4KSk7Cj4gIAo+ ICAJCWRldi0+ZHJpdmVyLT5nZW1fZnJlZV9vYmplY3Qob2JqKTsKPiArCX0gZWxzZSBpZiAob2Jq LT5mdW5jcykgewo+ICsJCW9iai0+ZnVuY3MtPmZyZWUob2JqKTsKPiAgCX0KPiAgfQo+ICBFWFBP UlRfU1lNQk9MKGRybV9nZW1fb2JqZWN0X2ZyZWUpOwo+IEBAIC04NjQsMTMgKzg3MiwxMyBAQCBk cm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4g IAo+ICAJZGV2ID0gb2JqLT5kZXY7Cj4gIAo+IC0JaWYgKGRldi0+ZHJpdmVyLT5nZW1fZnJlZV9v YmplY3RfdW5sb2NrZWQpIHsKPiAtCQlrcmVmX3B1dCgmb2JqLT5yZWZjb3VudCwgZHJtX2dlbV9v YmplY3RfZnJlZSk7Cj4gLQl9IGVsc2Ugewo+ICsJaWYgKGRldi0+ZHJpdmVyLT5nZW1fZnJlZV9v YmplY3QpIHsKPiAgCQltaWdodF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAkJaWYgKGty ZWZfcHV0X211dGV4KCZvYmotPnJlZmNvdW50LCBkcm1fZ2VtX29iamVjdF9mcmVlLAo+ICAJCQkJ JmRldi0+c3RydWN0X211dGV4KSkKPiAgCQkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Cj4gKwl9IGVsc2Ugewo+ICsJCWtyZWZfcHV0KCZvYmotPnJlZmNvdW50LCBkcm1fZ2VtX29i amVjdF9mcmVlKTsKPiAgCX0KPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fb2JqZWN0X3B1 dF91bmxvY2tlZCk7Cj4gQEAgLTk1NSwyMCArOTYzLDMwIEBAIGludCBkcm1fZ2VtX21tYXBfb2Jq KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBsb25nIG9ial9zaXplLAo+ICAJ CSAgICAgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBvYmotPmRldjsKPiArCWludCByZXQ7Cj4gIAo+ICAJLyogQ2hlY2sgZm9yIHZh bGlkIHNpemUuICovCj4gIAlpZiAob2JqX3NpemUgPCB2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3Rh cnQpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IC0JaWYgKCFkZXYtPmRyaXZlci0+Z2VtX3Zt X29wcykKPiArCWlmIChkZXYtPmRyaXZlci0+Z2VtX3ZtX29wcykKPiArCQl2bWEtPnZtX29wcyA9 IGRldi0+ZHJpdmVyLT5nZW1fdm1fb3BzOwo+ICsJZWxzZSBpZiAob2JqLT5mdW5jcyAmJiBvYmot PmZ1bmNzLT52bV9vcHMpCj4gKwkJdm1hLT52bV9vcHMgPSBvYmotPmZ1bmNzLT52bV9vcHM7Cj4g KwllbHNlCj4gIAkJcmV0dXJuIC1FSU5WQUw7CgpBIGJpdCBhIGJpa2VzaGVkLCBidXQgaWYgd2Ug Z28gd2l0aCB0aGVzZSBuZXcgb3BzLCBJJ2QgcHV0IHRoZW0gZmlyc3QgaW4KYWxsIHRoZSBpZiBs YWRkZXJzLiBNYWtlcyBpdCBhIGJpdCBjbGVhcmVyIHdoaWxlIHJlYWRpbmcgdGhhdCB0aGV5J3Jl IHRoZQpyZWNvbW1lbmRlZCBvcHRpb24uCj4gIAo+ICAJdm1hLT52bV9mbGFncyB8PSBWTV9JTyB8 IFZNX1BGTk1BUCB8IFZNX0RPTlRFWFBBTkQgfCBWTV9ET05URFVNUDsKPiAtCXZtYS0+dm1fb3Bz ID0gZGV2LT5kcml2ZXItPmdlbV92bV9vcHM7Cj4gIAl2bWEtPnZtX3ByaXZhdGVfZGF0YSA9IG9i ajsKPiAgCXZtYS0+dm1fcGFnZV9wcm90ID0gcGdwcm90X3dyaXRlY29tYmluZSh2bV9nZXRfcGFn ZV9wcm90KHZtYS0+dm1fZmxhZ3MpKTsKPiAgCXZtYS0+dm1fcGFnZV9wcm90ID0gcGdwcm90X2Rl Y3J5cHRlZCh2bWEtPnZtX3BhZ2VfcHJvdCk7Cj4gIAo+ICsJaWYgKG9iai0+ZnVuY3MgJiYgb2Jq LT5mdW5jcy0+bW1hcCkgewo+ICsJCXJldCA9IG9iai0+ZnVuY3MtPm1tYXAob2JqLCB2bWEpOwo+ ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9CgpJJ20gY29uZnVzZWQgYWJvdXQg dGhpcyBvbmUgaGVyZSAuLi4gdGhpcyBpcyBmb3IgcHJpbWUgbW1hcCBvbmx5IGlpcmMuCgo+ICsK PiAgCS8qIFRha2UgYSByZWYgZm9yIHRoaXMgbWFwcGluZyBvZiB0aGUgb2JqZWN0LCBzbyB0aGF0 IHRoZSBmYXVsdAo+ICAJICogaGFuZGxlciBjYW4gZGVyZWZlcmVuY2UgdGhlIG1tYXAgb2Zmc2V0 J3MgcG9pbnRlciB0byB0aGUgb2JqZWN0Lgo+ICAJICogVGhpcyByZWZlcmVuY2UgaXMgY2xlYW5l ZCB1cCBieSB0aGUgY29ycmVzcG9uZGluZyB2bV9jbG9zZQo+IEBAIC0xMDY4LDQgKzEwODYsODQg QEAgdm9pZCBkcm1fZ2VtX3ByaW50X2luZm8oc3RydWN0IGRybV9wcmludGVyICpwLCB1bnNpZ25l ZCBpbnQgaW5kZW50LAo+ICAKPiAgCWlmIChvYmotPmRldi0+ZHJpdmVyLT5nZW1fcHJpbnRfaW5m bykKPiAgCQlvYmotPmRldi0+ZHJpdmVyLT5nZW1fcHJpbnRfaW5mbyhwLCBpbmRlbnQsIG9iaik7 Cj4gKwllbHNlIGlmIChvYmotPmZ1bmNzICYmIG9iai0+ZnVuY3MtPnByaW50X2luZm8pCj4gKwkJ b2JqLT5mdW5jcy0+cHJpbnRfaW5mbyhwLCBpbmRlbnQsIG9iaik7Cj4gIH0KPiArCj4gKy8qKgo+ ICsgKiBkcm1fZ2VtX3BpbiAtIFBpbiBiYWNraW5nIGJ1ZmZlciBpbiBtZW1vcnkKPiArICogQG9i ajogR0VNIG9iamVjdAo+ICsgKgo+ICsgKiBNYWtlIHN1cmUgdGhlIGJhY2tpbmcgYnVmZmVyIGlz IHBpbm5lZCBpbiBtZW1vcnkuCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIDAgb24gc3VjY2Vz cyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK2ludCBkcm1f Z2VtX3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikKPiArewo+ICsJaWYgKG9iai0+ZGV2 LT5kcml2ZXItPmdlbV9wcmltZV9waW4pCj4gKwkJcmV0dXJuIG9iai0+ZGV2LT5kcml2ZXItPmdl bV9wcmltZV9waW4ob2JqKTsKPiArCWVsc2UgaWYgKG9iai0+ZnVuY3MgJiYgb2JqLT5mdW5jcy0+ cGluKQo+ICsJCXJldHVybiBvYmotPmZ1bmNzLT5waW4ob2JqKTsKPiArCWVsc2UKPiArCQlyZXR1 cm4gMDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9nZW1fcGluKTsKPiArCj4gKy8qKgo+ICsg KiBkcm1fZ2VtX3BpbiAtIFVucGluIGJhY2tpbmcgYnVmZmVyIGZyb20gbWVtb3J5Cj4gKyAqIEBv Ymo6IEdFTSBvYmplY3QKPiArICoKPiArICogUmVsYXggdGhlIHJlcXVpcmVtZW50IHRoYXQgdGhl IGJhY2tpbmcgYnVmZmVyIGlzIHBpbm5lZCBpbiBtZW1vcnkuCj4gKyAqLwo+ICt2b2lkIGRybV9n ZW1fdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gK3sKPiArCWlmIChvYmotPmRl di0+ZHJpdmVyLT5nZW1fcHJpbWVfdW5waW4pCj4gKwkJb2JqLT5kZXYtPmRyaXZlci0+Z2VtX3By aW1lX3VucGluKG9iaik7Cj4gKwllbHNlIGlmIChvYmotPmZ1bmNzICYmIG9iai0+ZnVuY3MtPnVu cGluKQo+ICsJCW9iai0+ZnVuY3MtPnVucGluKG9iaik7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChk cm1fZ2VtX3VucGluKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fZ2VtX3ZtYXAgLSBNYXAgYnVmZmVy IGludG8ga2VybmVsIHZpcnR1YWwgYWRkcmVzcyBzcGFjZQo+ICsgKiBAb2JqOiBHRU0gb2JqZWN0 Cj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIEEgdmlydHVhbCBwb2ludGVyIHRvIGEgbmV3bHkg Y3JlYXRlZCBHRU0gb2JqZWN0IG9yIGFuIEVSUl9QVFItZW5jb2RlZCBuZWdhdGl2ZQo+ICsgKiBl cnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICt2b2lkICpkcm1fZ2VtX3ZtYXAoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gK3sKPiArCXZvaWQgKnZhZGRyOwo+ICsKPiArCWlmIChv YmotPmRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdm1hcCkKPiArCQl2YWRkciA9IG9iai0+ZGV2LT5k cml2ZXItPmdlbV9wcmltZV92bWFwKG9iaik7Cj4gKwllbHNlIGlmIChvYmotPmZ1bmNzICYmIG9i ai0+ZnVuY3MtPnZtYXApCj4gKwkJdmFkZHIgPSBvYmotPmZ1bmNzLT52bWFwKG9iaik7Cj4gKwll bHNlCj4gKwkJdmFkZHIgPSBFUlJfUFRSKC1FT1BOT1RTVVBQKTsKPiArCj4gKwlpZiAoIXZhZGRy KQo+ICsJCXZhZGRyID0gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gKwlyZXR1cm4gdmFkZHI7Cj4g K30KPiArRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3ZtYXApOwo+ICsKPiArLyoqCj4gKyAqIGRybV9n ZW1fdnVubWFwIC0gUmVtb3ZlIGJ1ZmZlciBtYXBwaW5nIGZyb20ga2VybmVsIHZpcnR1YWwgYWRk cmVzcyBzcGFjZQo+ICsgKiBAb2JqOiBHRU0gb2JqZWN0Cj4gKyAqIEB2YWRkcjogVmlydHVhbCBh ZGRyZXNzIChjYW4gYmUgTlVMTCkKPiArICovCj4gK3ZvaWQgZHJtX2dlbV92dW5tYXAoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKQo+ICt7Cj4gKwlpZiAoIXZhZGRyKQo+ ICsJCXJldHVybjsKPiArCj4gKwlpZiAob2JqLT5kZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Z1bm1h cCkKPiArCQlvYmotPmRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdnVubWFwKG9iaiwgdmFkZHIpOwo+ ICsJZWxzZSBpZiAob2JqLT5mdW5jcyAmJiBvYmotPmZ1bmNzLT52dW5tYXApCj4gKwkJb2JqLT5m dW5jcy0+dnVubWFwKG9iaiwgdmFkZHIpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2dlbV92 dW5tYXApOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMKPiBpbmRleCA2NzIxNTcxNzQ5ZmYuLjdmNWM5NTAwMTM2 YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX3ByaW1lLmMKPiBAQCAtMTk5LDcgKzE5OSw2IEBAIGludCBkcm1fZ2Vt X21hcF9hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4gIHsKPiAgCXN0cnVjdCBkcm1f cHJpbWVfYXR0YWNobWVudCAqcHJpbWVfYXR0YWNoOwo+ICAJc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmogPSBkbWFfYnVmLT5wcml2Owo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ ZGV2Owo+ICAKPiAgCXByaW1lX2F0dGFjaCA9IGt6YWxsb2Moc2l6ZW9mKCpwcmltZV9hdHRhY2gp LCBHRlBfS0VSTkVMKTsKPiAgCWlmICghcHJpbWVfYXR0YWNoKQo+IEBAIC0yMDgsMTAgKzIwNyw3 IEBAIGludCBkcm1fZ2VtX21hcF9hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4gIAlw cmltZV9hdHRhY2gtPmRpciA9IERNQV9OT05FOwo+ICAJYXR0YWNoLT5wcml2ID0gcHJpbWVfYXR0 YWNoOwo+ICAKPiAtCWlmICghZGV2LT5kcml2ZXItPmdlbV9wcmltZV9waW4pCj4gLQkJcmV0dXJu IDA7Cj4gLQo+IC0JcmV0dXJuIGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfcGluKG9iaik7Cj4gKwly ZXR1cm4gZHJtX2dlbV9waW4ob2JqKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fbWFw X2F0dGFjaCk7Cj4gIAo+IEBAIC0yMjgsNyArMjI0LDYgQEAgdm9pZCBkcm1fZ2VtX21hcF9kZXRh Y2goc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4gIHsKPiAgCXN0cnVjdCBkcm1fcHJpbWVfYXR0 YWNobWVudCAqcHJpbWVfYXR0YWNoID0gYXR0YWNoLT5wcml2Owo+ICAJc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmogPSBkbWFfYnVmLT5wcml2Owo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IG9iai0+ZGV2Owo+ICAKPiAgCWlmIChwcmltZV9hdHRhY2gpIHsKPiAgCQlzdHJ1Y3Qgc2dfdGFi bGUgKnNndCA9IHByaW1lX2F0dGFjaC0+c2d0Owo+IEBAIC0yNDcsOCArMjQyLDcgQEAgdm9pZCBk cm1fZ2VtX21hcF9kZXRhY2goc3RydWN0IGRtYV9idWYgKmRtYV9idWYsCj4gIAkJYXR0YWNoLT5w cml2ID0gTlVMTDsKPiAgCX0KPiAgCj4gLQlpZiAoZGV2LT5kcml2ZXItPmdlbV9wcmltZV91bnBp bikKPiAtCQlkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3VucGluKG9iaik7Cj4gKwlkcm1fZ2VtX3Vu cGluKG9iaik7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX21hcF9kZXRhY2gpOwo+ICAK PiBAQCAtMzEwLDcgKzMwNCwxMCBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRybV9nZW1fbWFwX2RtYV9i dWYoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ICAJaWYgKFdBUk5fT04ocHJp bWVfYXR0YWNoLT5kaXIgIT0gRE1BX05PTkUpKQo+ICAJCXJldHVybiBFUlJfUFRSKC1FQlVTWSk7 Cj4gIAo+IC0Jc2d0ID0gb2JqLT5kZXYtPmRyaXZlci0+Z2VtX3ByaW1lX2dldF9zZ190YWJsZShv YmopOwoKSSB0aGluayBpZiB3ZSBqdXN0IGNoZWNrIGZvciBvYmotPmZ1bmNzIGhlcmUgYW5kIHRo ZW4gdW5jb25kaXRpb25hbGx5CmNhbGwsIHdlIGF2b2lkIGEgYnVuY2ggb2YgcG9pbnRlciBjaGFz aW5nIGZvciB0aGUgbmV3IHJlY29tbWVuZGVkIHBhdGggOi0pCgo+ICsJaWYgKG9iai0+ZGV2LT5k cml2ZXItPmdlbV9wcmltZV9nZXRfc2dfdGFibGUpCj4gKwkJc2d0ID0gb2JqLT5kZXYtPmRyaXZl ci0+Z2VtX3ByaW1lX2dldF9zZ190YWJsZShvYmopOwo+ICsJZWxzZQo+ICsJCXNndCA9IG9iai0+ ZnVuY3MtPmdldF9zZ190YWJsZShvYmopOwo+ICAKPiAgCWlmICghSVNfRVJSKHNndCkpIHsKPiAg CQlpZiAoIWRtYV9tYXBfc2dfYXR0cnMoYXR0YWNoLT5kZXYsIHNndC0+c2dsLCBzZ3QtPm5lbnRz LCBkaXIsCj4gQEAgLTQwNiwxMiArNDAzLDEzIEBAIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9kbWFi dWZfcmVsZWFzZSk7Cj4gIHZvaWQgKmRybV9nZW1fZG1hYnVmX3ZtYXAoc3RydWN0IGRtYV9idWYg KmRtYV9idWYpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gZG1hX2J1Zi0+ cHJpdjsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsKPiArCXZvaWQgKnZh ZGRyOwo+ICAKPiAtCWlmIChkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3ZtYXApCj4gLQkJcmV0dXJu IGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdm1hcChvYmopOwo+IC0JZWxzZQo+IC0JCXJldHVybiBO VUxMOwo+ICsJdmFkZHIgPSBkcm1fZ2VtX3ZtYXAob2JqKTsKPiArCWlmIChJU19FUlIodmFkZHIp KQo+ICsJCXZhZGRyID0gTlVMTDsKPiArCj4gKwlyZXR1cm4gdmFkZHI7Cj4gIH0KPiAgRVhQT1JU X1NZTUJPTChkcm1fZ2VtX2RtYWJ1Zl92bWFwKTsKPiAgCj4gQEAgLTQyNiwxMCArNDI0LDggQEAg RVhQT1JUX1NZTUJPTChkcm1fZ2VtX2RtYWJ1Zl92bWFwKTsKPiAgdm9pZCBkcm1fZ2VtX2RtYWJ1 Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHZvaWQgKnZhZGRyKQo+ICB7Cj4gIAlz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9IGRtYV9idWYtPnByaXY7Cj4gLQlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gb2JqLT5kZXY7Cj4gIAo+IC0JaWYgKGRldi0+ZHJpdmVyLT5nZW1fcHJp bWVfdnVubWFwKQo+IC0JCWRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfdnVubWFwKG9iaiwgdmFkZHIp Owo+ICsJZHJtX2dlbV92dW5tYXAob2JqLCB2YWRkcik7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChk cm1fZ2VtX2RtYWJ1Zl92dW5tYXApOwo+ICAKPiBAQCAtNDc2LDEwICs0NzIsMTIgQEAgaW50IGRy bV9nZW1fZG1hYnVmX21tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hKQo+ICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmLT5w cml2Owo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+ZGV2Owo+ICAKPiAtCWlmICgh ZGV2LT5kcml2ZXItPmdlbV9wcmltZV9tbWFwKQo+ICsJaWYgKGRldi0+ZHJpdmVyLT5nZW1fcHJp bWVfbW1hcCkKPiArCQlyZXR1cm4gZGV2LT5kcml2ZXItPmdlbV9wcmltZV9tbWFwKG9iaiwgdm1h KTsKPiArCWVsc2UgaWYgKG9iai0+ZnVuY3MgJiYgb2JqLT5mdW5jcy0+bW1hcCkKPiArCQlyZXR1 cm4gZHJtX2dlbV9tbWFwX29iaihvYmosIG9iai0+c2l6ZSwgdm1hKTsKPiArCWVsc2UKPiAgCQly ZXR1cm4gLUVOT1NZUzsKPiAtCj4gLQlyZXR1cm4gZGV2LT5kcml2ZXItPmdlbV9wcmltZV9tbWFw KG9iaiwgdm1hKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fZG1hYnVmX21tYXApOwo+ ICAKPiBAQCAtNTYxLDYgKzU1OSw4IEBAIHN0YXRpYyBzdHJ1Y3QgZG1hX2J1ZiAqZXhwb3J0X2Fu ZF9yZWdpc3Rlcl9vYmplY3Qoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCj4gIAlpZiAoZGV2 LT5kcml2ZXItPmdlbV9wcmltZV9leHBvcnQpCj4gIAkJZG1hYnVmID0gZGV2LT5kcml2ZXItPmdl bV9wcmltZV9leHBvcnQoZGV2LCBvYmosIGZsYWdzKTsKPiArCWVsc2UgaWYgKG9iai0+ZnVuY3Mg JiYgb2JqLT5mdW5jcy0+ZXhwb3J0KQo+ICsJCWRtYWJ1ZiA9IG9iai0+ZnVuY3MtPmV4cG9ydChv YmosIGZsYWdzKTsKPiAgCWVsc2UKPiAgCQlkbWFidWYgPSBkcm1fZ2VtX3ByaW1lX2V4cG9ydChk ZXYsIG9iaiwgZmxhZ3MpOwo+ICAJaWYgKElTX0VSUihkbWFidWYpKSB7Cj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvZHJtL2RybV9nZW0uaCBiL2luY2x1ZGUvZHJtL2RybV9nZW0uaAo+IGluZGV4IDM1 ODNiOThhMTcxOC4uM2FlMzY2NWJmNGU3IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9n ZW0uaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9nZW0uaAo+IEBAIC0zOCw2ICszOCwxMzAgQEAK PiAgCj4gICNpbmNsdWRlIDxkcm0vZHJtX3ZtYV9tYW5hZ2VyLmg+Cj4gIAo+ICtzdHJ1Y3QgZHJt X2dlbV9vYmplY3Q7Cj4gKwo+ICsvKioKPiArICogc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1bmNz IC0gR0VNIG9iamVjdCBmdW5jdGlvbnMKPiArICovCj4gK3N0cnVjdCBkcm1fZ2VtX29iamVjdF9m dW5jcyB7Cj4gKwkvKioKPiArCSAqIEBmcmVlOgo+ICsJICoKPiArCSAqIERlY29uc3RydWN0b3Ig Zm9yIGRybV9nZW1fb2JqZWN0cy4KPiArCSAqCj4gKwkgKiBUaGlzIGNhbGxiYWNrIGlzIG1hbmRh dG9yeS4KPiArCSAqLwo+ICsJdm9pZCAoKmZyZWUpKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq KTsKPiArCj4gKwkvKioKPiArCSAqIEBvcGVuOgo+ICsJICoKPiArCSAqIENhbGxlZCB1cG9uIEdF TSBoYW5kbGUgY3JlYXRpb24uCj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25h bC4KPiArCSAqLwo+ICsJaW50ICgqb3Blbikoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZSk7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAY2xvc2Vfb2JqZWN0OgoK QGNsb3NlOgoKPiArCSAqCj4gKwkgKiBDYWxsZWQgdXBvbiBHRU0gaGFuZGxlIHJlbGVhc2UuCj4g KwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4KPiArCSAqLwo+ICsJdm9pZCAo KmNsb3NlKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRybV9maWxlICpmaWxl KTsKPiArCj4gKwkvKioKPiArCSAqIEBwcmludF9pbmZvOgo+ICsJICoKPiArCSAqIElmIGRyaXZl ciBzdWJjbGFzc2VzIHN0cnVjdCAmZHJtX2dlbV9vYmplY3QsIGl0IGNhbiBpbXBsZW1lbnQgdGhp cwo+ICsJICogb3B0aW9uYWwgaG9vayBmb3IgcHJpbnRpbmcgYWRkaXRpb25hbCBkcml2ZXIgc3Bl Y2lmaWMgaW5mby4KPiArCSAqCj4gKwkgKiBkcm1fcHJpbnRmX2luZGVudCgpIHNob3VsZCBiZSB1 c2VkIGluIHRoZSBjYWxsYmFjayBwYXNzaW5nIGl0IHRoZQo+ICsJICogaW5kZW50IGFyZ3VtZW50 Lgo+ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIGZyb20gZHJtX2dlbV9wcmlu dF9pbmZvKCkuCj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4KPiArCSAq Lwo+ICsJdm9pZCAoKnByaW50X2luZm8pKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgdW5zaWduZWQg aW50IGluZGVudCwKPiArCQkJICAgY29uc3Qgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ ICsKPiArCS8qKgo+ICsJICogQGV4cG9ydDoKPiArCSAqCj4gKwkgKiBFeHBvcnQgYmFja2luZyBi dWZmZXIgYXMgYSAmZG1hX2J1Zi4KPiArCSAqIElmIHRoaXMgaXMgbm90IHNldCBkcm1fZ2VtX3By aW1lX2V4cG9ydCgpIGlzIHVzZWQuCj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRp b25hbC4KPiArCSAqLwo+ICsJc3RydWN0IGRtYV9idWYgKigqZXhwb3J0KShzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaiwgaW50IGZsYWdzKTsKPiArCj4gKwkvKgo+ICsJICogQHBpbjoKPiArCSAq Cj4gKwkgKiBQaW4gYmFja2luZyBidWZmZXIgaW4gbWVtb3J5Lgo+ICsJICoKPiArCSAqIFRoaXMg Y2FsbGJhY2sgaXMgb3B0aW9uYWwuCj4gKwkgKi8KPiArCWludCAoKnBpbikoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopOwo+ICsKPiArCS8qCj4gKwkgKiBAdW5waW46Cj4gKwkgKgo+ICsJICog VW5waW4gYmFja2luZyBidWZmZXIuCj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRp b25hbC4KPiArCSAqLwo+ICsJdm9pZCAoKnVucGluKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aik7Cj4gKwo+ICsJLyoKPiArCSAqIEBnZXRfc2dfdGFibGU6Cj4gKwkgKgo+ICsJICogUmV0dXJu cyBhIFNjYXR0ZXItR2F0aGVyIHRhYmxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWZmZXIuCj4g KwkgKiBVc2VkIHdoZW4gZXhwb3J0aW5nIGEgYnVmZmVyLgo+ICsJICoKPiArCSAqIFRoaXMgY2Fs bGJhY2sgaXMgbWFuZGF0b3J5IGlmIGJ1ZmZlciBleHBvcnQgaXMgc3VwcG9ydGVkLgo+ICsJICov Cj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKigqZ2V0X3NnX3RhYmxlKShzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaik7Cj4gKwo+ICsJLyoKPiArCSAqIEB2bWFwOgo+ICsJICoKPiArCSAqIFJldHVybnMg YSB2aXJ0dWFsIGFkZHJlc3MgZm9yIHRoZSBidWZmZXIuCj4gKwkgKgo+ICsJICogVGhpcyBjYWxs YmFjayBpcyBvcHRpb25hbC4KPiArCSAqLwo+ICsJdm9pZCAqKCp2bWFwKShzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaik7Cj4gKwo+ICsJLyoKPiArCSAqIEB2dW5tYXA6Cj4gKwkgKgo+ICsJICog UmVsZWFzZXMgdGhlIHRoZSBhZGRyZXNzIHByZXZpb3VzbHkgcmV0dXJuZWQgYnkgQHZtYXAuCj4g KwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4KPiArCSAqLwo+ICsJdm9pZCAo KnZ1bm1hcCkoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHZvaWQgKnZhZGRyKTsKPiArCj4g KwkvKgo+ICsJICogQG1tYXA6Cj4gKwkgKgo+ICsJICogU2V0dXAgdXNlcnNwYWNlIG1hcHBpbmcg d2l0aCB0aGUgZ2l2ZW4gdm1hLgo+ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9u YWwuCj4gKwkgKi8KPiArCWludCAoKm1tYXApKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSk7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAdm1fb3BzOgo+ ICsJICoKPiArCSAqIFZpcnR1YWwgbWVtb3J5IG9wZXJhdGlvbnMgdXNlZCB3aXRoIG1tYXAuCj4g KwkgKgo+ICsJICogVGhpcyBpcyBvcHRpb25hbCBidXQgbmVjZXNzYXJ5IGZvciBtbWFwIHN1cHBv cnQuCj4gKwkgKi8KPiArCWNvbnN0IHN0cnVjdCB2bV9vcGVyYXRpb25zX3N0cnVjdCAqdm1fb3Bz Owo+ICt9OwoKSSB0aGluayBmbGVzaGluZyBvdXQgdGhlIGRvY3MgYSBiaXQgaXMgYSBnb29kIG9w cG9ydHVuaXR5IGhlcmUgKGFuZCBhZGRpbmcKbGlua3MgdG8gdGhlIG9sZCBwbGFjZSB0aGF0IHRo ZSBuZXcgb25lcyByZWNvbW1lbmRlZCkuIEJ1dCBwcm9iYWJseSBiZXN0CmluIGZvbGxvdy11cCBw YXRjaGVzLgoKPiArCj4gIC8qKgo+ICAgKiBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgLSBHRU0gYnVm ZmVyIG9iamVjdAo+ICAgKgo+IEBAIC0xNDYsNiArMjcwLDE1IEBAIHN0cnVjdCBkcm1fZ2VtX29i amVjdCB7Cj4gIAkgKiBzaW1wbHkgbGVhdmUgaXQgYXMgTlVMTC4KPiAgCSAqLwo+ICAJc3RydWN0 IGRtYV9idWZfYXR0YWNobWVudCAqaW1wb3J0X2F0dGFjaDsKPiArCj4gKwkvKgo+ICsJICogQGZ1 bmNzOgo+ICsJICoKPiArCSAqIE9wdGlvbmFsIEdFTSBvYmplY3QgZnVuY3Rpb25zLiBJZiB0aGlz IGlzIHNldCwgaXQgd2lsbCBiZSB1c2VkIGlmIHRoZQo+ICsJICogY29ycmVzcG9uZGluZyAmZHJt X2RyaXZlciBHRU0gY2FsbGJhY2sgaXMgbm90IHNldC4KCk1heWJlIGFsc28gaGVyZSBhIG5vdGUg dGhhdCB0aGlzIGlzIHJlY29tbWVuZGVkIG92ZXIgdGhlIGNhbGxiYWNrcyBpbgomZHJtX2RyaXZl ci4KCkFzaWRlIGZyb20gYWxsIHRoZSB0aW55IHN0eWxlIHN1Z2dlc3Rpb25zLCBJIHJlYWxseSBs aWtlIHRoaXMuCi1EYW5pZWwKCj4gKwkgKgo+ICsJICovCj4gKwljb25zdCBzdHJ1Y3QgZHJtX2dl bV9vYmplY3RfZnVuY3MgKmZ1bmNzOwo+ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTI5Myw0ICs0MjYs OSBAQCBpbnQgZHJtX2dlbV9kdW1iX2Rlc3Ryb3koc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICAJ CQkgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJIHVpbnQzMl90IGhhbmRsZSk7Cj4gIAo+ ICtpbnQgZHJtX2dlbV9waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ICt2b2lkIGRy bV9nZW1fdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ICt2b2lkICpkcm1fZ2Vt X3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+ICt2b2lkIGRybV9nZW1fdnVubWFw KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCB2b2lkICp2YWRkcik7Cj4gKwo+ICAjZW5kaWYg LyogX19EUk1fR0VNX0hfXyAqLwo+IC0tIAo+IDIuMTUuMQo+IAo+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+ IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=