From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Thompson Subject: Re: [PATCH v2] dma-buf: cleanup dma_buf_export() to make it easily extensible Date: Wed, 28 Jan 2015 11:20:50 +0000 Message-ID: <54C8C612.1030701@linaro.org> References: <1422424845-14906-1-git-send-email-sumit.semwal@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1422424845-14906-1-git-send-email-sumit.semwal@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Sumit Semwal , linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, linux-arm-kernel@lists.infradead.org, rmk+kernel@arm.linux.org.uk, airlied@linux.ie, kgene@kernel.org, daniel.vetter@intel.com, thierry.reding@gmail.com, pawel@osciak.com, m.szyprowski@samsung.com, mchehab@osg.samsung.com, gregkh@linuxfoundation.org Cc: linux-tegra@vger.kernel.org, intel-gfx@lists.freedesktop.org, linaro-kernel@lists.linaro.org List-Id: intel-gfx@lists.freedesktop.org T24gMjgvMDEvMTUgMDY6MDAsIFN1bWl0IFNlbXdhbCB3cm90ZToKPiBBdCBwcmVzZW50LCBkbWFf YnVmX2V4cG9ydCgpIHRha2VzIGEgc2VyaWVzIG9mIHBhcmFtZXRlcnMsIHdoaWNoCj4gbWFrZXMg aXQgZGlmZmljdWx0IHRvIGFkZCBhbnkgbmV3IHBhcmFtZXRlcnMgZm9yIGV4cG9ydGVycywgaWYg cmVxdWlyZWQuCj4gCj4gTWFrZSBpdCBzaW1wbGVyIGJ5IG1vdmluZyBhbGwgdGhlc2UgcGFyYW1l dGVycyBpbnRvIGEgc3RydWN0LCBhbmQgcGFzcwo+IHRoZSBzdHJ1Y3QgKiBhcyBwYXJhbWV0ZXIg dG8gZG1hX2J1Zl9leHBvcnQoKS4KPiAKPiBXaGlsZSBhdCBpdCwgdW5pdGUgZG1hX2J1Zl9leHBv cnRfbmFtZWQoKSB3aXRoIGRtYV9idWZfZXhwb3J0KCksIGFuZAo+IGNoYW5nZSBhbGwgY2FsbGVy cyBhY2NvcmRpbmdseS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBTdW1pdCBTZW13YWwgPHN1bWl0LnNl bXdhbEBsaW5hcm8ub3JnPgo+IC0tLQo+IHYyOiBhZGQgbWFjcm8gdG8gemVybyBvdXQgbG9jYWwg c3RydWN0LCBhbmQgZmlsbCBLQlVJTERfTU9ETkFNRSBieSBkZWZhdWx0Cj4gCj4gIGRyaXZlcnMv ZG1hLWJ1Zi9kbWEtYnVmLmMgICAgICAgICAgICAgICAgICAgICAgfCA0NyArKysrKysrKysrKysr LS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYyAgICAg ICAgICAgIHwgMTAgKysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYyAgICAgICAg ICAgICAgICAgICAgfCAxMiArKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X2RybV9kbWFidWYuYyAgICAgfCAgOSArKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9kbWFidWYuYyAgICAgICAgIHwgMTAgKysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9vbWFw ZHJtL29tYXBfZ2VtX2RtYWJ1Zi5jICAgICAgfCAgOSArKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0v dGVncmEvZ2VtLmMgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKy0tCj4gIGRyaXZlcnMvZ3B1 L2RybS90dG0vdHRtX29iamVjdC5jICAgICAgICAgICAgICAgfCAgOSArKystLQo+ICBkcml2ZXJz L2dwdS9kcm0vdWRsL3VkbF9kbWFidWYuYyAgICAgICAgICAgICAgIHwgIDkgKysrKy0KPiAgZHJp dmVycy9tZWRpYS92NGwyLWNvcmUvdmlkZW9idWYyLWRtYS1jb250aWcuYyB8ICA4ICsrKystCj4g IGRyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVvYnVmMi1kbWEtc2cuYyAgICAgfCAgOCArKysr LQo+ICBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItdm1hbGxvYy5jICAgIHwgIDgg KysrKy0KPiAgZHJpdmVycy9zdGFnaW5nL2FuZHJvaWQvaW9uL2lvbi5jICAgICAgICAgICAgICB8 ICA5ICsrKy0tCj4gIGluY2x1ZGUvbGludXgvZG1hLWJ1Zi5oICAgICAgICAgICAgICAgICAgICAg ICAgfCAzNSArKysrKysrKysrKysrKystLS0tCj4gIDE0IGZpbGVzIGNoYW5nZWQsIDE0MyBpbnNl cnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEt YnVmL2RtYS1idWYuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtYnVmLmMKPiBpbmRleCA1YmUyMjVj MmJhOTguLjZkM2RmM2RkOTMxMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1 Zi5jCj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+IEBAIC0yNjUsNyArMjY1LDcg QEAgc3RhdGljIGlubGluZSBpbnQgaXNfZG1hX2J1Zl9maWxlKHN0cnVjdCBmaWxlICpmaWxlKQo+ ICB9Cj4gIAo+ICAvKioKPiAtICogZG1hX2J1Zl9leHBvcnRfbmFtZWQgLSBDcmVhdGVzIGEgbmV3 IGRtYV9idWYsIGFuZCBhc3NvY2lhdGVzIGFuIGFub24gZmlsZQo+ICsgKiBkbWFfYnVmX2V4cG9y dCAtIENyZWF0ZXMgYSBuZXcgZG1hX2J1ZiwgYW5kIGFzc29jaWF0ZXMgYW4gYW5vbiBmaWxlCj4g ICAqIHdpdGggdGhpcyBidWZmZXIsIHNvIGl0IGNhbiBiZSBleHBvcnRlZC4KPiAgICogQWxzbyBj b25uZWN0IHRoZSBhbGxvY2F0b3Igc3BlY2lmaWMgZGF0YSBhbmQgb3BzIHRvIHRoZSBidWZmZXIu Cj4gICAqIEFkZGl0aW9uYWxseSwgcHJvdmlkZSBhIG5hbWUgc3RyaW5nIGZvciBleHBvcnRlcjsg dXNlZnVsIGluIGRlYnVnZ2luZy4KPiBAQCAtMjc3LDMxICsyNzcsMzIgQEAgc3RhdGljIGlubGlu ZSBpbnQgaXNfZG1hX2J1Zl9maWxlKHN0cnVjdCBmaWxlICpmaWxlKQo+ICAgKiBAZXhwX25hbWU6 CVtpbl0JbmFtZSBvZiB0aGUgZXhwb3J0aW5nIG1vZHVsZSAtIHVzZWZ1bCBmb3IgZGVidWdnaW5n Lgo+ICAgKiBAcmVzdjoJW2luXQlyZXNlcnZhdGlvbi1vYmplY3QsIE5VTEwgdG8gYWxsb2NhdGUg ZGVmYXVsdCBvbmUuCj4gICAqCj4gKyAqIEFsbCB0aGUgYWJvdmUgaW5mbyBjb21lcyBmcm9tIHN0 cnVjdCBkbWFfYnVmX2V4cG9ydF9pbmZvLgo+ICsgKgo+ICAgKiBSZXR1cm5zLCBvbiBzdWNjZXNz LCBhIG5ld2x5IGNyZWF0ZWQgZG1hX2J1ZiBvYmplY3QsIHdoaWNoIHdyYXBzIHRoZQo+ICAgKiBz dXBwbGllZCBwcml2YXRlIGRhdGEgYW5kIG9wZXJhdGlvbnMgZm9yIGRtYV9idWZfb3BzLiBPbiBl aXRoZXIgbWlzc2luZwo+ICAgKiBvcHMsIG9yIGVycm9yIGluIGFsbG9jYXRpbmcgc3RydWN0IGRt YV9idWYsIHdpbGwgcmV0dXJuIG5lZ2F0aXZlIGVycm9yLgo+ICAgKgo+ICAgKi8KPiAtc3RydWN0 IGRtYV9idWYgKmRtYV9idWZfZXhwb3J0X25hbWVkKHZvaWQgKnByaXYsIGNvbnN0IHN0cnVjdCBk bWFfYnVmX29wcyAqb3BzLAo+IC0JCQkJc2l6ZV90IHNpemUsIGludCBmbGFncywgY29uc3QgY2hh ciAqZXhwX25hbWUsCj4gLQkJCQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2KQo+ICtz dHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnQoc3RydWN0IGRtYV9idWZfZXhwb3J0X2luZm8g KmV4cF9pbmZvKQo+ICB7Cj4gIAlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwo+ICAJc3RydWN0IGZp bGUgKmZpbGU7Cj4gIAlzaXplX3QgYWxsb2Nfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZG1hX2J1Zik7 Cj4gLQlpZiAoIXJlc3YpCj4gKwlpZiAoIWV4cF9pbmZvLT5yZXN2KQo+ICAJCWFsbG9jX3NpemUg Kz0gc2l6ZW9mKHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QpOwo+ICAJZWxzZQo+ICAJCS8qIHBy ZXZlbnQgJmRtYV9idWZbMV0gPT0gZG1hX2J1Zi0+cmVzdiAqLwo+ICAJCWFsbG9jX3NpemUgKz0g MTsKPiAgCj4gLQlpZiAoV0FSTl9PTighcHJpdiB8fCAhb3BzCj4gLQkJCSAgfHwgIW9wcy0+bWFw X2RtYV9idWYKPiAtCQkJICB8fCAhb3BzLT51bm1hcF9kbWFfYnVmCj4gLQkJCSAgfHwgIW9wcy0+ cmVsZWFzZQo+IC0JCQkgIHx8ICFvcHMtPmttYXBfYXRvbWljCj4gLQkJCSAgfHwgIW9wcy0+a21h cAo+IC0JCQkgIHx8ICFvcHMtPm1tYXApKSB7Cj4gKwlpZiAoV0FSTl9PTighZXhwX2luZm8tPnBy aXYKPiArCQkJICB8fCAhZXhwX2luZm8tPm9wcwo+ICsJCQkgIHx8ICFleHBfaW5mby0+b3BzLT5t YXBfZG1hX2J1Zgo+ICsJCQkgIHx8ICFleHBfaW5mby0+b3BzLT51bm1hcF9kbWFfYnVmCj4gKwkJ CSAgfHwgIWV4cF9pbmZvLT5vcHMtPnJlbGVhc2UKPiArCQkJICB8fCAhZXhwX2luZm8tPm9wcy0+ a21hcF9hdG9taWMKPiArCQkJICB8fCAhZXhwX2luZm8tPm9wcy0+a21hcAo+ICsJCQkgIHx8ICFl eHBfaW5mby0+b3BzLT5tbWFwKSkgewo+ICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICAJ fQo+ICAKPiBAQCAtMzA5LDIxICszMTAsMjIgQEAgc3RydWN0IGRtYV9idWYgKmRtYV9idWZfZXhw b3J0X25hbWVkKHZvaWQgKnByaXYsIGNvbnN0IHN0cnVjdCBkbWFfYnVmX29wcyAqb3BzLAo+ICAJ aWYgKGRtYWJ1ZiA9PSBOVUxMKQo+ICAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICAKPiAt CWRtYWJ1Zi0+cHJpdiA9IHByaXY7Cj4gLQlkbWFidWYtPm9wcyA9IG9wczsKPiAtCWRtYWJ1Zi0+ c2l6ZSA9IHNpemU7Cj4gLQlkbWFidWYtPmV4cF9uYW1lID0gZXhwX25hbWU7Cj4gKwlkbWFidWYt PnByaXYgPSBleHBfaW5mby0+cHJpdjsKPiArCWRtYWJ1Zi0+b3BzID0gZXhwX2luZm8tPm9wczsK PiArCWRtYWJ1Zi0+c2l6ZSA9IGV4cF9pbmZvLT5zaXplOwo+ICsJZG1hYnVmLT5leHBfbmFtZSA9 IGV4cF9pbmZvLT5leHBfbmFtZTsKPiAgCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmRtYWJ1Zi0+cG9s bCk7Cj4gIAlkbWFidWYtPmNiX2V4Y2wucG9sbCA9IGRtYWJ1Zi0+Y2Jfc2hhcmVkLnBvbGwgPSAm ZG1hYnVmLT5wb2xsOwo+ICAJZG1hYnVmLT5jYl9leGNsLmFjdGl2ZSA9IGRtYWJ1Zi0+Y2Jfc2hh cmVkLmFjdGl2ZSA9IDA7Cj4gIAo+IC0JaWYgKCFyZXN2KSB7Cj4gLQkJcmVzdiA9IChzdHJ1Y3Qg cmVzZXJ2YXRpb25fb2JqZWN0ICopJmRtYWJ1ZlsxXTsKPiAtCQlyZXNlcnZhdGlvbl9vYmplY3Rf aW5pdChyZXN2KTsKPiArCWlmICghZXhwX2luZm8tPnJlc3YpIHsKPiArCQlleHBfaW5mby0+cmVz diA9IChzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICopJmRtYWJ1ZlsxXTsKPiArCQlyZXNlcnZh dGlvbl9vYmplY3RfaW5pdChleHBfaW5mby0+cmVzdik7Cj4gIAl9Cj4gLQlkbWFidWYtPnJlc3Yg PSByZXN2Owo+ICsJZG1hYnVmLT5yZXN2ID0gZXhwX2luZm8tPnJlc3Y7Cj4gIAo+IC0JZmlsZSA9 IGFub25faW5vZGVfZ2V0ZmlsZSgiZG1hYnVmIiwgJmRtYV9idWZfZm9wcywgZG1hYnVmLCBmbGFn cyk7Cj4gKwlmaWxlID0gYW5vbl9pbm9kZV9nZXRmaWxlKCJkbWFidWYiLCAmZG1hX2J1Zl9mb3Bz LCBkbWFidWYsCj4gKwkJCQkJZXhwX2luZm8tPmZsYWdzKTsKPiAgCWlmIChJU19FUlIoZmlsZSkp IHsKPiAgCQlrZnJlZShkbWFidWYpOwo+ICAJCXJldHVybiBFUlJfQ0FTVChmaWxlKTsKPiBAQCAt MzQxLDggKzM0Myw3IEBAIHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmX2V4cG9ydF9uYW1lZCh2b2lk ICpwcml2LCBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgKm9wcywKPiAgCj4gIAlyZXR1cm4gZG1h YnVmOwo+ICB9Cj4gLUVYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfZXhwb3J0X25hbWVkKTsKPiAt Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfZXhwb3J0KTsKPiAgCj4gIC8qKgo+ICAgKiBk bWFfYnVmX2ZkIC0gcmV0dXJucyBhIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGdpdmVuIGRtYV9i dWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfZ2VtLmMgYi9k cml2ZXJzL2dwdS9kcm0vYXJtYWRhL2FybWFkYV9nZW0uYwo+IGluZGV4IGVmNWZlZWVjZWM4NC4u NTgwZTEwYWNhYTNhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm1hZGEvYXJtYWRh X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybWFkYS9hcm1hZGFfZ2VtLmMKPiBAQCAt NTM4LDggKzUzOCwxNCBAQCBzdHJ1Y3QgZG1hX2J1ZiAqCj4gIGFybWFkYV9nZW1fcHJpbWVfZXhw b3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAo+ ICAJaW50IGZsYWdzKQo+ICB7Cj4gLQlyZXR1cm4gZG1hX2J1Zl9leHBvcnQob2JqLCAmYXJtYWRh X2dlbV9wcmltZV9kbWFidWZfb3BzLCBvYmotPnNpemUsCj4gLQkJCSAgICAgIE9fUkRXUiwgTlVM TCk7Cj4gKwlERUZJTkVfRE1BX0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbyk7Cj4gKwo+ICsJZXhw X2luZm8ub3BzID0gJmFybWFkYV9nZW1fcHJpbWVfZG1hYnVmX29wczsKPiArCWV4cF9pbmZvLnNp emUgPSBvYmotPnNpemU7Cj4gKwlleHBfaW5mby5mbGFncyA9IE9fUkRXUjsKPiArCWV4cF9pbmZv LnByaXYgPSBvYmo7Cj4gKwo+ICsJcmV0dXJuIGRtYV9idWZfZXhwb3J0KCZleHBfaW5mbyk7Cj4g IH0KPiAgCj4gIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYwo+IGluZGV4 IDc0ODJiMDZjZDA4Zi4uN2ZlYzE5MWI0NWY3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fcHJpbWUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYwo+IEBAIC0z MzksMTMgKzMzOSwxNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9idWZfb3BzIGRybV9nZW1f cHJpbWVfZG1hYnVmX29wcyA9ICB7Cj4gIHN0cnVjdCBkbWFfYnVmICpkcm1fZ2VtX3ByaW1lX2V4 cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaiwgaW50IGZsYWdzKQo+ICB7Cj4gLQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0 ICpyb2JqID0gTlVMTDsKPiArCURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4cF9pbmZvKTsK PiArCj4gKwlleHBfaW5mby5vcHMgPSAmZHJtX2dlbV9wcmltZV9kbWFidWZfb3BzOwo+ICsJZXhw X2luZm8uc2l6ZSA9IG9iai0+c2l6ZTsKPiArCWV4cF9pbmZvLmZsYWdzID0gZmxhZ3M7Cj4gKwll eHBfaW5mby5wcml2ID0gb2JqOwo+ICAKPiAgCWlmIChkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Jl c19vYmopCj4gLQkJcm9iaiA9IGRldi0+ZHJpdmVyLT5nZW1fcHJpbWVfcmVzX29iaihvYmopOwo+ ICsJCWV4cF9pbmZvLnJlc3YgPSBkZXYtPmRyaXZlci0+Z2VtX3ByaW1lX3Jlc19vYmoob2JqKTsK PiAgCj4gLQlyZXR1cm4gZG1hX2J1Zl9leHBvcnQob2JqLCAmZHJtX2dlbV9wcmltZV9kbWFidWZf b3BzLCBvYmotPnNpemUsCj4gLQkJCSAgICAgIGZsYWdzLCByb2JqKTsKPiArCXJldHVybiBkbWFf YnVmX2V4cG9ydCgmZXhwX2luZm8pOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9wcmlt ZV9leHBvcnQpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlu b3NfZHJtX2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RtYWJ1 Zi5jCj4gaW5kZXggNjAxOTJlZDU0NGYwLi5mYzI5M2ExNzlmMzYgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RtYWJ1Zi5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RtYWJ1Zi5jCj4gQEAgLTE4NSw5ICsxODUsMTQgQEAg c3RydWN0IGRtYV9idWYgKmV4eW5vc19kbWFidWZfcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2 aWNlICpkcm1fZGV2LAo+ICAJCQkJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIGludCBmbGFn cykKPiAgewo+ICAJc3RydWN0IGV4eW5vc19kcm1fZ2VtX29iaiAqZXh5bm9zX2dlbV9vYmogPSB0 b19leHlub3NfZ2VtX29iaihvYmopOwo+ICsJREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oZXhw X2luZm8pOwo+ICAKPiAtCXJldHVybiBkbWFfYnVmX2V4cG9ydChvYmosICZleHlub3NfZG1hYnVm X29wcywKPiAtCQkJCWV4eW5vc19nZW1fb2JqLT5iYXNlLnNpemUsIGZsYWdzLCBOVUxMKTsKPiAr CWV4cF9pbmZvLm9wcyA9ICZleHlub3NfZG1hYnVmX29wczsKPiArCWV4cF9pbmZvLnNpemUgPSBl eHlub3NfZ2VtX29iai0+YmFzZS5zaXplOwo+ICsJZXhwX2luZm8uZmxhZ3MgPSBmbGFnczsKPiAr CWV4cF9pbmZvLnByaXYgPSBvYmo7Cj4gKwo+ICsJcmV0dXJuIGRtYV9idWZfZXhwb3J0KCZleHBf aW5mbyk7Cj4gIH0KPiAgCj4gIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZXh5bm9zX2RtYWJ1Zl9w cmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZG1hYnVmLmMKPiBpbmRleCA4MmExZjRiNTc3NzguLjc5OThkYTI3YzUwMCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jCj4gQEAgLTIzMCw2ICsy MzAsMTMgQEAgc3RydWN0IGRtYV9idWYgKmk5MTVfZ2VtX3ByaW1lX2V4cG9ydChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAJCQkJICAgICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2Jq LCBpbnQgZmxhZ3MpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB0 b19pbnRlbF9ibyhnZW1fb2JqKTsKPiArCURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4cF9p bmZvKTsKPiArCj4gKwlleHBfaW5mby5vcHMgPSAmaTkxNV9kbWFidWZfb3BzOwo+ICsJZXhwX2lu Zm8uc2l6ZSA9IGdlbV9vYmotPnNpemU7Cj4gKwlleHBfaW5mby5mbGFncyA9IGZsYWdzOwo+ICsJ ZXhwX2luZm8ucHJpdiA9IGdlbV9vYmo7Cj4gKwo+ICAKPiAgCWlmIChvYmotPm9wcy0+ZG1hYnVm X2V4cG9ydCkgewo+ICAJCWludCByZXQgPSBvYmotPm9wcy0+ZG1hYnVmX2V4cG9ydChvYmopOwo+ IEBAIC0yMzcsOCArMjQ0LDcgQEAgc3RydWN0IGRtYV9idWYgKmk5MTVfZ2VtX3ByaW1lX2V4cG9y dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAJ fQo+ICAKPiAtCXJldHVybiBkbWFfYnVmX2V4cG9ydChnZW1fb2JqLCAmaTkxNV9kbWFidWZfb3Bz LCBnZW1fb2JqLT5zaXplLCBmbGFncywKPiAtCQkJICAgICAgTlVMTCk7Cj4gKwlyZXR1cm4gZG1h X2J1Zl9leHBvcnQoJmV4cF9pbmZvKTsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBpOTE1X2dlbV9v YmplY3RfZ2V0X3BhZ2VzX2RtYWJ1ZihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFwX2dlbV9kbWFidWYuYyBi L2RyaXZlcnMvZ3B1L2RybS9vbWFwZHJtL29tYXBfZ2VtX2RtYWJ1Zi5jCj4gaW5kZXggYTJkYmZi MTczN2I0Li41ODc0YzU4ZTcyYzEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL29tYXBk cm0vb21hcF9nZW1fZG1hYnVmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vb21hcGRybS9vbWFw X2dlbV9kbWFidWYuYwo+IEBAIC0xNzEsNyArMTcxLDE0IEBAIHN0YXRpYyBzdHJ1Y3QgZG1hX2J1 Zl9vcHMgb21hcF9kbWFidWZfb3BzID0gewo+ICBzdHJ1Y3QgZG1hX2J1ZiAqb21hcF9nZW1fcHJp bWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpvYmosIGludCBmbGFncykKPiAgewo+IC0JcmV0dXJuIGRtYV9idWZfZXhwb3J0KG9iaiwg Jm9tYXBfZG1hYnVmX29wcywgb2JqLT5zaXplLCBmbGFncywgTlVMTCk7Cj4gKwlERUZJTkVfRE1B X0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbyk7Cj4gKwo+ICsJZXhwX2luZm8ub3BzID0gJm9tYXBf ZG1hYnVmX29wczsKPiArCWV4cF9pbmZvLnNpemUgPSBvYmotPnNpemU7Cj4gKwlleHBfaW5mby5m bGFncyA9IGZsYWdzOwo+ICsJZXhwX2luZm8ucHJpdiA9IG9iajsKPiArCj4gKwlyZXR1cm4gZG1h X2J1Zl9leHBvcnQoJmV4cF9pbmZvKTsKPiAgfQo+ICAKPiAgc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvbWFwX2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3Jh L2dlbS5jCj4gaW5kZXggODc3N2I3Zjc1NzkxLi4xZjg5NWI5NTNmOGYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3Jh L2dlbS5jCj4gQEAgLTY1OCw4ICs2NTgsMTQgQEAgc3RydWN0IGRtYV9idWYgKnRlZ3JhX2dlbV9w cmltZV9leHBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKPiAgCQkJCSAgICAgICBzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKmdlbSwKPiAgCQkJCSAgICAgICBpbnQgZmxhZ3MpCj4gIHsKPiAtCXJl dHVybiBkbWFfYnVmX2V4cG9ydChnZW0sICZ0ZWdyYV9nZW1fcHJpbWVfZG1hYnVmX29wcywgZ2Vt LT5zaXplLAo+IC0JCQkgICAgICBmbGFncywgTlVMTCk7Cj4gKwlERUZJTkVfRE1BX0JVRl9FWFBP UlRfSU5GTyhleHBfaW5mbyk7Cj4gKwo+ICsJZXhwX2luZm8ub3BzID0gJnRlZ3JhX2dlbV9wcmlt ZV9kbWFidWZfb3BzOwo+ICsJZXhwX2luZm8uc2l6ZSA9IGdlbS0+c2l6ZTsKPiArCWV4cF9pbmZv LmZsYWdzID0gZmxhZ3M7Cj4gKwlleHBfaW5mby5wcml2ID0gZ2VtOwo+ICsKPiArCXJldHVybiBk bWFfYnVmX2V4cG9ydCgmZXhwX2luZm8pOwo+ICB9Cj4gIAo+ICBzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKnRlZ3JhX2dlbV9wcmltZV9pbXBvcnQoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fb2JqZWN0LmMgYi9kcml2ZXJzL2dwdS9k cm0vdHRtL3R0bV9vYmplY3QuYwo+IGluZGV4IDEyYzg3MTEwZGIzYS4uNGY1ZmE4ZDY1ZmU5IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX29iamVjdC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3R0bS90dG1fb2JqZWN0LmMKPiBAQCAtNjgzLDYgKzY4MywxMiBAQCBpbnQg dHRtX3ByaW1lX2hhbmRsZV90b19mZChzdHJ1Y3QgdHRtX29iamVjdF9maWxlICp0ZmlsZSwKPiAg Cj4gIAlkbWFfYnVmID0gcHJpbWUtPmRtYV9idWY7Cj4gIAlpZiAoIWRtYV9idWYgfHwgIWdldF9k bWFfYnVmX3VubGVzc19kb29tZWQoZG1hX2J1ZikpIHsKPiArCQlERUZJTkVfRE1BX0JVRl9FWFBP UlRfSU5GTyhleHBfaW5mbyk7Cj4gKwo+ICsJCWV4cF9pbmZvLm9wcyA9ICZ0ZGV2LT5vcHM7Cj4g KwkJZXhwX2luZm8uc2l6ZSA9IHByaW1lLT5zaXplOwo+ICsJCWV4cF9pbmZvLmZsYWdzID0gZmxh Z3M7Cj4gKwkJZXhwX2luZm8ucHJpdiA9IHByaW1lOwo+ICAKPiAgCQkvKgo+ICAJCSAqIE5lZWQg dG8gY3JlYXRlIGEgbmV3IGRtYV9idWYsIHdpdGggbWVtb3J5IGFjY291bnRpbmcuCj4gQEAgLTY5 NCw4ICs3MDAsNyBAQCBpbnQgdHRtX3ByaW1lX2hhbmRsZV90b19mZChzdHJ1Y3QgdHRtX29iamVj dF9maWxlICp0ZmlsZSwKPiAgCQkJZ290byBvdXRfdW5yZWY7Cj4gIAkJfQo+ICAKPiAtCQlkbWFf YnVmID0gZG1hX2J1Zl9leHBvcnQocHJpbWUsICZ0ZGV2LT5vcHMsCj4gLQkJCQkJIHByaW1lLT5z aXplLCBmbGFncywgTlVMTCk7Cj4gKwkJZG1hX2J1ZiA9IGRtYV9idWZfZXhwb3J0KCZleHBfaW5m byk7Cj4gIAkJaWYgKElTX0VSUihkbWFfYnVmKSkgewo+ICAJCQlyZXQgPSBQVFJfRVJSKGRtYV9i dWYpOwo+ICAJCQl0dG1fbWVtX2dsb2JhbF9mcmVlKHRkZXYtPm1lbV9nbG9iLAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9kbWFidWYuYyBiL2RyaXZlcnMvZ3B1L2RybS91 ZGwvdWRsX2RtYWJ1Zi5jCj4gaW5kZXggYWM4YTY2YjRkZmMyLi5lMjI0M2VkZDFjZTMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfZG1hYnVmLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vdWRsL3VkbF9kbWFidWYuYwo+IEBAIC0yMDIsNyArMjAyLDE0IEBAIHN0YXRpYyBz dHJ1Y3QgZG1hX2J1Zl9vcHMgdWRsX2RtYWJ1Zl9vcHMgPSB7Cj4gIHN0cnVjdCBkbWFfYnVmICp1 ZGxfZ2VtX3ByaW1lX2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJICAgICBz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgaW50IGZsYWdzKQo+ICB7Cj4gLQlyZXR1cm4gZG1h X2J1Zl9leHBvcnQob2JqLCAmdWRsX2RtYWJ1Zl9vcHMsIG9iai0+c2l6ZSwgZmxhZ3MsIE5VTEwp Owo+ICsJREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oZXhwX2luZm8pOwo+ICsKPiArCWV4cF9p bmZvLm9wcyA9ICZ1ZGxfZG1hYnVmX29wczsKPiArCWV4cF9pbmZvLnNpemUgPSBvYmotPnNpemU7 Cj4gKwlleHBfaW5mby5mbGFncyA9IGZsYWdzOwo+ICsJZXhwX2luZm8ucHJpdiA9IG9iajsKPiAr Cj4gKwlyZXR1cm4gZG1hX2J1Zl9leHBvcnQoJmV4cF9pbmZvKTsKPiAgfQo+ICAKPiAgc3RhdGlj IGludCB1ZGxfcHJpbWVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVvYnVmMi1kbWEtY29udGlnLmMgYi9kcml2 ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItZG1hLWNvbnRpZy5jCj4gaW5kZXggYjQ4MWQy MGM4MzcyLi40YWQ5MmExNDc5MTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9tZWRpYS92NGwyLWNv cmUvdmlkZW9idWYyLWRtYS1jb250aWcuYwo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3Jl L3ZpZGVvYnVmMi1kbWEtY29udGlnLmMKPiBAQCAtNDAyLDYgKzQwMiwxMiBAQCBzdGF0aWMgc3Ry dWN0IGRtYV9idWYgKnZiMl9kY19nZXRfZG1hYnVmKHZvaWQgKmJ1Zl9wcml2LCB1bnNpZ25lZCBs b25nIGZsYWdzKQo+ICB7Cj4gIAlzdHJ1Y3QgdmIyX2RjX2J1ZiAqYnVmID0gYnVmX3ByaXY7Cj4g IAlzdHJ1Y3QgZG1hX2J1ZiAqZGJ1ZjsKPiArCURFRklORV9ETUFfQlVGX0VYUE9SVF9JTkZPKGV4 cF9pbmZvKTsKPiArCj4gKwlleHBfaW5mby5vcHMgPSAmdmIyX2RjX2RtYWJ1Zl9vcHM7Cj4gKwll eHBfaW5mby5zaXplID0gYnVmLT5zaXplOwo+ICsJZXhwX2luZm8uZmxhZ3MgPSBmbGFnczsKPiAr CWV4cF9pbmZvLnByaXYgPSBidWY7Cj4gIAo+ICAJaWYgKCFidWYtPnNndF9iYXNlKQo+ICAJCWJ1 Zi0+c2d0X2Jhc2UgPSB2YjJfZGNfZ2V0X2Jhc2Vfc2d0KGJ1Zik7Cj4gQEAgLTQwOSw3ICs0MTUs NyBAQCBzdGF0aWMgc3RydWN0IGRtYV9idWYgKnZiMl9kY19nZXRfZG1hYnVmKHZvaWQgKmJ1Zl9w cml2LCB1bnNpZ25lZCBsb25nIGZsYWdzKQo+ICAJaWYgKFdBUk5fT04oIWJ1Zi0+c2d0X2Jhc2Up KQo+ICAJCXJldHVybiBOVUxMOwo+ICAKPiAtCWRidWYgPSBkbWFfYnVmX2V4cG9ydChidWYsICZ2 YjJfZGNfZG1hYnVmX29wcywgYnVmLT5zaXplLCBmbGFncywgTlVMTCk7Cj4gKwlkYnVmID0gZG1h X2J1Zl9leHBvcnQoJmV4cF9pbmZvKTsKPiAgCWlmIChJU19FUlIoZGJ1ZikpCj4gIAkJcmV0dXJu IE5VTEw7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1 ZjItZG1hLXNnLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItZG1hLXNnLmMK PiBpbmRleCBiMTgzOGFiYjZkMDAuLjQ1YzcwOGU0NjNiOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItZG1hLXNnLmMKPiArKysgYi9kcml2ZXJzL21lZGlh L3Y0bDItY29yZS92aWRlb2J1ZjItZG1hLXNnLmMKPiBAQCAtNTgzLDExICs1ODMsMTcgQEAgc3Rh dGljIHN0cnVjdCBkbWFfYnVmICp2YjJfZG1hX3NnX2dldF9kbWFidWYodm9pZCAqYnVmX3ByaXYs IHVuc2lnbmVkIGxvbmcgZmxhZ3MKPiAgewo+ICAJc3RydWN0IHZiMl9kbWFfc2dfYnVmICpidWYg PSBidWZfcHJpdjsKPiAgCXN0cnVjdCBkbWFfYnVmICpkYnVmOwo+ICsJREVGSU5FX0RNQV9CVUZf RVhQT1JUX0lORk8oZXhwX2luZm8pOwo+ICsKPiArCWV4cF9pbmZvLm9wcyA9ICZ2YjJfZG1hX3Nn X2RtYWJ1Zl9vcHM7Cj4gKwlleHBfaW5mby5zaXplID0gYnVmLT5zaXplOwo+ICsJZXhwX2luZm8u ZmxhZ3MgPSBmbGFnczsKPiArCWV4cF9pbmZvLnByaXYgPSBidWY7Cj4gIAo+ICAJaWYgKFdBUk5f T04oIWJ1Zi0+ZG1hX3NndCkpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+IC0JZGJ1ZiA9IGRtYV9i dWZfZXhwb3J0KGJ1ZiwgJnZiMl9kbWFfc2dfZG1hYnVmX29wcywgYnVmLT5zaXplLCBmbGFncywg TlVMTCk7Cj4gKwlkYnVmID0gZG1hX2J1Zl9leHBvcnQoJmV4cF9pbmZvKTsKPiAgCWlmIChJU19F UlIoZGJ1ZikpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21l ZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItdm1hbGxvYy5jIGIvZHJpdmVycy9tZWRpYS92NGwyLWNv cmUvdmlkZW9idWYyLXZtYWxsb2MuYwo+IGluZGV4IGZiYTk0NGU1MDIyNy4uOTkyYjFiNTk0MDlj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVvYnVmMi12bWFsbG9j LmMKPiArKysgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItdm1hbGxvYy5jCj4g QEAgLTM2NywxMSArMzY3LDE3IEBAIHN0YXRpYyBzdHJ1Y3QgZG1hX2J1ZiAqdmIyX3ZtYWxsb2Nf Z2V0X2RtYWJ1Zih2b2lkICpidWZfcHJpdiwgdW5zaWduZWQgbG9uZyBmbGFnCj4gIHsKPiAgCXN0 cnVjdCB2YjJfdm1hbGxvY19idWYgKmJ1ZiA9IGJ1Zl9wcml2Owo+ICAJc3RydWN0IGRtYV9idWYg KmRidWY7Cj4gKwlERUZJTkVfRE1BX0JVRl9FWFBPUlRfSU5GTyhleHBfaW5mbyk7Cj4gKwo+ICsJ ZXhwX2luZm8ub3BzID0gJnZiMl92bWFsbG9jX2RtYWJ1Zl9vcHM7Cj4gKwlleHBfaW5mby5zaXpl ID0gYnVmLT5zaXplOwo+ICsJZXhwX2luZm8uZmxhZ3MgPSBmbGFnczsKPiArCWV4cF9pbmZvLnBy aXYgPSBidWY7Cj4gIAo+ICAJaWYgKFdBUk5fT04oIWJ1Zi0+dmFkZHIpKQo+ICAJCXJldHVybiBO VUxMOwo+ICAKPiAtCWRidWYgPSBkbWFfYnVmX2V4cG9ydChidWYsICZ2YjJfdm1hbGxvY19kbWFi dWZfb3BzLCBidWYtPnNpemUsIGZsYWdzLCBOVUxMKTsKPiArCWRidWYgPSBkbWFfYnVmX2V4cG9y dCgmZXhwX2luZm8pOwo+ICAJaWYgKElTX0VSUihkYnVmKSkKPiAgCQlyZXR1cm4gTlVMTDsKPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYyBiL2RyaXZl cnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYwo+IGluZGV4IDI5NmQzNDc2NjBmYy4uYTQyOTdi ZThmMTJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYwo+ ICsrKyBiL2RyaXZlcnMvc3RhZ2luZy9hbmRyb2lkL2lvbi9pb24uYwo+IEBAIC0xMTA2LDYgKzEx MDYsMTIgQEAgc3RydWN0IGRtYV9idWYgKmlvbl9zaGFyZV9kbWFfYnVmKHN0cnVjdCBpb25fY2xp ZW50ICpjbGllbnQsCj4gIAlzdHJ1Y3QgaW9uX2J1ZmZlciAqYnVmZmVyOwo+ICAJc3RydWN0IGRt YV9idWYgKmRtYWJ1ZjsKPiAgCWJvb2wgdmFsaWRfaGFuZGxlOwo+ICsJREVGSU5FX0RNQV9CVUZf RVhQT1JUX0lORk8oZXhwX2luZm8pOwo+ICsKPiArCWV4cF9pbmZvLm9wcyA9ICZkbWFfYnVmX29w czsKPiArCWV4cF9pbmZvLnNpemUgPSBidWZmZXItPnNpemU7Cj4gKwlleHBfaW5mby5mbGFncyA9 IE9fUkRXUjsKPiArCWV4cF9pbmZvLnByaXYgPSBidWZmZXI7Cj4gIAo+ICAJbXV0ZXhfbG9jaygm Y2xpZW50LT5sb2NrKTsKPiAgCXZhbGlkX2hhbmRsZSA9IGlvbl9oYW5kbGVfdmFsaWRhdGUoY2xp ZW50LCBoYW5kbGUpOwo+IEBAIC0xMTE4LDggKzExMjQsNyBAQCBzdHJ1Y3QgZG1hX2J1ZiAqaW9u X3NoYXJlX2RtYV9idWYoc3RydWN0IGlvbl9jbGllbnQgKmNsaWVudCwKPiAgCWlvbl9idWZmZXJf Z2V0KGJ1ZmZlcik7Cj4gIAltdXRleF91bmxvY2soJmNsaWVudC0+bG9jayk7Cj4gIAo+IC0JZG1h YnVmID0gZG1hX2J1Zl9leHBvcnQoYnVmZmVyLCAmZG1hX2J1Zl9vcHMsIGJ1ZmZlci0+c2l6ZSwg T19SRFdSLAo+IC0JCQkJTlVMTCk7Cj4gKwlkbWFidWYgPSBkbWFfYnVmX2V4cG9ydCgmZXhwX2lu Zm8pOwo+ICAJaWYgKElTX0VSUihkbWFidWYpKSB7Cj4gIAkJaW9uX2J1ZmZlcl9wdXQoYnVmZmVy KTsKPiAgCQlyZXR1cm4gZG1hYnVmOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RtYS1i dWYuaCBiL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4gaW5kZXggNjk0ZTFmZTFjNGI0Li4yMmMy MWEyMjRlMzIgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKPiArKysgYi9p bmNsdWRlL2xpbnV4L2RtYS1idWYuaAo+IEBAIC0xNjMsNiArMTYzLDM0IEBAIHN0cnVjdCBkbWFf YnVmX2F0dGFjaG1lbnQgewo+ICB9Owo+ICAKPiAgLyoqCj4gKyAqIHN0cnVjdCBkbWFfYnVmX2V4 cG9ydF9pbmZvIC0gaG9sZHMgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGV4cG9ydCBhIGRtYV9idWYK PiArICogQGV4cF9uYW1lOgluYW1lIG9mIHRoZSBleHBvcnRpbmcgbW9kdWxlIC0gdXNlZnVsIGZv ciBkZWJ1Z2dpbmcuCj4gKyAqIEBvcHM6CUF0dGFjaCBhbGxvY2F0b3ItZGVmaW5lZCBkbWEgYnVm IG9wcyB0byB0aGUgbmV3IGJ1ZmZlcgo+ICsgKiBAc2l6ZToJU2l6ZSBvZiB0aGUgYnVmZmVyCj4g KyAqIEBmbGFnczoJbW9kZSBmbGFncyBmb3IgdGhlIGZpbGUKPiArICogQHJlc3Y6CXJlc2VydmF0 aW9uLW9iamVjdCwgTlVMTCB0byBhbGxvY2F0ZSBkZWZhdWx0IG9uZQo+ICsgKiBAcHJpdjoJQXR0 YWNoIHByaXZhdGUgZGF0YSBvZiBhbGxvY2F0b3IgdG8gdGhpcyBidWZmZXIKPiArICoKPiArICog VGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGV4cG9ydCB0 aGUgYnVmZmVyLiBVc2VkCj4gKyAqIHdpdGggZG1hX2J1Zl9leHBvcnQoKSBvbmx5Lgo+ICsgKi8K PiArc3RydWN0IGRtYV9idWZfZXhwb3J0X2luZm8gewo+ICsJY29uc3QgY2hhciAqZXhwX25hbWU7 Cj4gKwljb25zdCBzdHJ1Y3QgZG1hX2J1Zl9vcHMgKm9wczsKPiArCXNpemVfdCBzaXplOwo+ICsJ aW50IGZsYWdzOwo+ICsJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdjsKPiArCXZvaWQg KnByaXY7Cj4gK307Cj4gKwo+ICsvKioKPiArICogaGVscGVyIG1hY3JvIGZvciBleHBvcnRlcnM7 IHplcm9zIGFuZCBmaWxscyBpbiBtb3N0IGNvbW1vbiB2YWx1ZXMKPiArICovCj4gKyNkZWZpbmUg REVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oYSkJCQlcCj4gKwlzdHJ1Y3QgZG1hX2J1Zl9leHBv cnRfaW5mbyBhID0gezB9OwkJXAo+ICsJZXhwX2luZm8uZXhwX25hbWUgPSBLQlVJTERfTU9ETkFN RQo+ICsKClRoaXMgcmlza3MgZ2VuZXJhdGluZyBDOTkgd2FybmluZ3MgdW5sZXNzIHVzZWQgd2l0 aCBjYXJlIChhbmQgb25seSBvbmNlCnBlciBmdW5jdGlvbikuIFNob3VsZG4ndCB0aGlzIGJlIG1v cmUgbGlrZToKCiNkZWZpbmUgREVGSU5FX0RNQV9CVUZfRVhQT1JUX0lORk8oYSkgXAogICAgc3Ry dWN0IGRtYV9idWZfZXhwb3J0X2luZm8gYSA9IHsgLmV4cF9uYW1lID0gS0JVSUxEX01PRE5BTUUg fQoKCkRhbmllbC4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==