From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: Re: [PATCH 1/5] drm/i915: Refactor work that can sleep out of commit (v5) Date: Mon, 22 Dec 2014 16:12:34 +0200 Message-ID: <549826D2.1080100@gmail.com> References: <1418689401-22957-1-git-send-email-matthew.d.roper@intel.com> <1418689401-22957-2-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id B08136E065 for ; Mon, 22 Dec 2014 06:12:34 -0800 (PST) In-Reply-To: <1418689401-22957-2-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMTIvMTYvMjAxNCAwMjoyMyBBTSwgTWF0dCBSb3BlciB3cm90ZToKPiBPbmNlIHdlIGludGVn cmF0ZSBvdXIgd29yayBpbnRvIHRoZSBhdG9taWMgcGlwZWxpbmUsIHBsYW5lIGNvbW1pdAo+IG9w ZXJhdGlvbnMgd2lsbCBuZWVkIHRvIGhhcHBlbiB3aXRoIGludGVycnVwdHMgZGlzYWJsZWQsIGR1 ZSB0byB2YmxhbmsKPiBldmFzaW9uLiAgT3VyIGNvbW1pdCBmdW5jdGlvbnMgdG9kYXkgaW5jbHVk ZSBzbGVlcGFibGUgd29yaywgc28gdGhvc2UKPiBvcGVyYXRpb25zIG5lZWQgdG8gYmUgc3BsaXQg b3V0IGFuZCBydW4gZWl0aGVyIGJlZm9yZSBvciBhZnRlciB0aGUKPiBhdG9taWMgcmVnaXN0ZXIg cHJvZ3JhbW1pbmcuCj4KPiBUaGUgc29sdXRpb24gaGVyZSBjYWxjdWxhdGVzIHdoaWNoIG9mIHRo b3NlIG9wZXJhdGlvbnMgd2lsbCBuZWVkIHRvIGJlCj4gcGVyZm9ybWVkIGR1cmluZyB0aGUgJ2No ZWNrJyBwaGFzZSBhbmQgc2V0cyBmbGFncyBpbiBhbiBpbnRlbF9jcnRjCj4gc3ViLXN0cnVjdC4g IE5ldyBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdCgpIGFuZAo+IGludGVsX2ZpbmlzaF9jcnRjX2Nv bW1pdCgpIGZ1bmN0aW9ucyBhcmUgYWRkZWQgYmVmb3JlIGFuZCBhZnRlciB0aGUKPiBhY3R1YWwg cmVnaXN0ZXIgcHJvZ3JhbW1pbmc7IHRoZXNlIHdpbGwgZXZlbnR1YWxseSBiZSBjYWxsZWQgZnJv bSB0aGUKPiBhdG9taWMgcGxhbmUgaGVscGVyJ3MgLmF0b21pY19iZWdpbigpIGFuZCAuYXRvbWlj X2VuZCgpIGVudHJ5cG9pbnRzLgo+Cj4gdjI6IEZpeCBicm9rZW4gc3ByaXRlIGNvZGUgc3BsaXQK Pgo+IHYzOiBNYWtlIHRoZSBwcmUvcG9zdCBjb21taXQgd29yayBjcnRjLWJhc2VkIHRvIG1hdGNo IGhvdyB3ZSBldmVudHVhbGx5Cj4gICAgICB3YW50IHRoaXMgdG8gYmUgY2FsbGVkIGZyb20gdGhl IGF0b21pYyBwbGFuZSBoZWxwZXJzLgo+Cj4gdjQ6IFNvbWUgcGxhdGZvcm1zIHRoYXQgaGF2ZW4n dCBoYWQgdGhlaXIgd2F0ZXJtYXJrIGNvZGUgcmV3b3JrZWQgd2VyZQo+ICAgICAgd2FpdGluZyBm b3IgdmJsYW5rLCB0aGVuIGNhbGxpbmcgdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzIGluIHRoZWly Cj4gICAgICBwbGF0Zm9ybS1zcGVjaWZpYyBkaXNhYmxlIGNvZGUuICBUaGVzZSBhbHNvIG5lZWQg dG8gYmUgZmxhZ2dlZCBvdXQKPiAgICAgIG9mIHRoZSBjcml0aWNhbCBzZWN0aW9uLgo+Cj4gdjU6 IFNwcml0ZSBwbGFuZSB0ZXN0IGZvciBwcmltYXJ5IHNob3cvaGlkZSBzaG91bGQganVzdCBzZXQg dGhlIGZsYWcgdG8KPiAgICAgIHdhaXQgZm9yIHBlbmRpbmcgZmxpcHMsIG5vdCBhY3R1YWxseSBw ZXJmb3JtIHRoZSB3YWl0LiAgKEFuZGVyKQo+Cj4gU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8 bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyB8IDE4MCArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDMxICsrKysrKwo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgIDc4ICsrKysrKy0tLS0t LS0tLQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygrKSwgMTExIGRlbGV0aW9u cygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDMwNDRhZjUu LjVkOTAxMTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEx NzM3LDcgKzExNzM3LDExIEBAIHN0YXRpYyBpbnQKPiAgIGludGVsX2NoZWNrX3ByaW1hcnlfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJCQkgIHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqc3RhdGUpCj4gICB7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRl djsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7Cj4gICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCXN0 cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4g ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKPiAgIAlzdHJ1 Y3QgZHJtX3JlY3QgKmRlc3QgPSAmc3RhdGUtPmRzdDsKPiAgIAlzdHJ1Y3QgZHJtX3JlY3QgKnNy YyA9ICZzdGF0ZS0+c3JjOwo+IEBAIC0xMTc1OCw2ICsxMTc2Miw0MCBAQCBpbnRlbF9jaGVja19w cmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCQlyZXR1cm4gLUVCVVNZ Owo+ICAgCX0KPgo+ICsJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewo+ICsJCS8qCj4gKwkJICog RkJDIGRvZXMgbm90IHdvcmsgb24gc29tZSBwbGF0Zm9ybXMgZm9yIHJvdGF0ZWQKPiArCQkgKiBw bGFuZXMsIHNvIGRpc2FibGUgaXQgd2hlbiByb3RhdGlvbiBpcyBub3QgMCBhbmQKPiArCQkgKiB1 cGRhdGUgaXQgd2hlbiByb3RhdGlvbiBpcyBzZXQgYmFjayB0byAwLgo+ICsJCSAqCj4gKwkJICog RklYTUU6IFRoaXMgaXMgcmVkdW5kYW50IHdpdGggdGhlIGZiYyB1cGRhdGUgZG9uZSBpbgo+ICsJ CSAqIHRoZSBwcmltYXJ5IHBsYW5lIGVuYWJsZSBmdW5jdGlvbiBleGNlcHQgdGhhdCB0aGF0Cj4g KwkJICogb25lIGlzIGRvbmUgdG9vIGxhdGUuIFdlIGV2ZW50dWFsbHkgbmVlZCB0byB1bmlmeQo+ ICsJCSAqIHRoaXMuCj4gKwkJICovCj4gKwkJaWYgKGludGVsX2NydGMtPnByaW1hcnlfZW5hYmxl ZCAmJgo+ICsJCSAgICBJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA0ICYmICFJU19HNFgoZGV2KSAm Jgo+ICsJCSAgICBkZXZfcHJpdi0+ZmJjLnBsYW5lID09IGludGVsX2NydGMtPnBsYW5lICYmCj4g KwkJICAgIGludGVsX3BsYW5lLT5yb3RhdGlvbiAhPSBCSVQoRFJNX1JPVEFURV8wKSkgewo+ICsJ CQlpbnRlbF9jcnRjLT5hdG9taWMuZGlzYWJsZV9mYmMgPSB0cnVlOwo+ICsJCX0KPiArCj4gKwkJ aWYgKHN0YXRlLT52aXNpYmxlKSB7Cj4gKwkJCS8qCj4gKwkJCSAqIEJEVyBzaWduYWxzIGZsaXAg ZG9uZSBpbW1lZGlhdGVseSBpZiB0aGUgcGxhbmUKPiArCQkJICogaXMgZGlzYWJsZWQsIGV2ZW4g aWYgdGhlIHBsYW5lIGVuYWJsZSBpcyBhbHJlYWR5Cj4gKwkJCSAqIGFybWVkIHRvIG9jY3VyIGF0 IHRoZSBuZXh0IHZibGFuayA6KAo+ICsJCQkgKi8KPiArCQkJaWYgKElTX0JST0FEV0VMTChkZXYp ICYmICFpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQpCj4gKwkJCQlpbnRlbF9jcnRjLT5hdG9t aWMud2FpdF92YmxhbmsgPSB0cnVlOwo+ICsJCX0KPiArCj4gKwkJaW50ZWxfY3J0Yy0+YXRvbWlj LmZiX2JpdHMgfD0KPiArCQkJSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShpbnRlbF9jcnRjLT5w aXBlKTsKPiArCj4gKwkJaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV9mYmMgPSB0cnVlOwo+ICsJ fQo+ICsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPgo+IEBAIC0xMTc3MywxOCArMTE4MTEsNiBAQCBp bnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPiAgIAlz dHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ ICAgCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5zcmM7Cj4gLQllbnVtIHBpcGUgcGlw ZSA9IGludGVsX3BsYW5lLT5waXBlOwo+IC0KPiAtCWlmICghZmIpIHsKPiAtCQkvKgo+IC0JCSAq ICdwcmVwYXJlJyBpcyBuZXZlciBjYWxsZWQgd2hlbiBwbGFuZSBpcyBiZWluZyBkaXNhYmxlZCwg c28KPiAtCQkgKiB3ZSBuZWVkIHRvIGhhbmRsZSBmcm9udGJ1ZmZlciB0cmFja2luZyBoZXJlCj4g LQkJICovCj4gLQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JCWk5MTVfZ2Vt X3RyYWNrX2ZiKGludGVsX2ZiX29iaihwbGFuZS0+ZmIpLCBOVUxMLAo+IC0JCQkJICBJTlRFTF9G Uk9OVEJVRkZFUl9QUklNQVJZKHBpcGUpKTsKPiAtCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0 X211dGV4KTsKPiAtCX0KPgo+ICAgCXBsYW5lLT5mYiA9IGZiOwo+ICAgCWNydGMtPnggPSBzcmMt PngxID4+IDE2Owo+IEBAIC0xMTgwMSwyNiArMTE4MjcsNyBAQCBpbnRlbF9jb21taXRfcHJpbWFy eV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlpbnRlbF9wbGFuZS0+b2JqID0g b2JqOwo+Cj4gICAJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkgewo+IC0JCS8qCj4gLQkJICogRkJD IGRvZXMgbm90IHdvcmsgb24gc29tZSBwbGF0Zm9ybXMgZm9yIHJvdGF0ZWQKPiAtCQkgKiBwbGFu ZXMsIHNvIGRpc2FibGUgaXQgd2hlbiByb3RhdGlvbiBpcyBub3QgMCBhbmQKPiAtCQkgKiB1cGRh dGUgaXQgd2hlbiByb3RhdGlvbiBpcyBzZXQgYmFjayB0byAwLgo+IC0JCSAqCj4gLQkJICogRklY TUU6IFRoaXMgaXMgcmVkdW5kYW50IHdpdGggdGhlIGZiYyB1cGRhdGUgZG9uZSBpbgo+IC0JCSAq IHRoZSBwcmltYXJ5IHBsYW5lIGVuYWJsZSBmdW5jdGlvbiBleGNlcHQgdGhhdCB0aGF0Cj4gLQkJ ICogb25lIGlzIGRvbmUgdG9vIGxhdGUuIFdlIGV2ZW50dWFsbHkgbmVlZCB0byB1bmlmeQo+IC0J CSAqIHRoaXMuCj4gLQkJICovCj4gLQkJaWYgKGludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCAm Jgo+IC0JCSAgICBJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA0ICYmICFJU19HNFgoZGV2KSAmJgo+ IC0JCSAgICBkZXZfcHJpdi0+ZmJjLnBsYW5lID09IGludGVsX2NydGMtPnBsYW5lICYmCj4gLQkJ ICAgIGludGVsX3BsYW5lLT5yb3RhdGlvbiAhPSBCSVQoRFJNX1JPVEFURV8wKSkgewo+IC0JCQlp bnRlbF9mYmNfZGlzYWJsZShkZXYpOwo+IC0JCX0KPiAtCj4gICAJCWlmIChzdGF0ZS0+dmlzaWJs ZSkgewo+IC0JCQlib29sIHdhc19lbmFibGVkID0gaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVk Owo+IC0KPiAgIAkJCS8qIEZJWE1FOiBraWxsIHRoaXMgZmFzdGJvb3QgaGFjayAqLwo+ICAgCQkJ aW50ZWxfdXBkYXRlX3BpcGVfc2l6ZShpbnRlbF9jcnRjKTsKPgo+IEBAIC0xMTgyOCwxNCArMTE4 MzUsNiBAQCBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPgo+ICAgCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUoY3J0Yywg cGxhbmUtPmZiLAo+ICAgCQkJCQljcnRjLT54LCBjcnRjLT55KTsKPiAtCj4gLQkJCS8qCj4gLQkJ CSAqIEJEVyBzaWduYWxzIGZsaXAgZG9uZSBpbW1lZGlhdGVseSBpZiB0aGUgcGxhbmUKPiAtCQkJ ICogaXMgZGlzYWJsZWQsIGV2ZW4gaWYgdGhlIHBsYW5lIGVuYWJsZSBpcyBhbHJlYWR5Cj4gLQkJ CSAqIGFybWVkIHRvIG9jY3VyIGF0IHRoZSBuZXh0IHZibGFuayA6KAo+IC0JCQkgKi8KPiAtCQkJ aWYgKElTX0JST0FEV0VMTChkZXYpICYmICF3YXNfZW5hYmxlZCkKPiAtCQkJCWludGVsX3dhaXRf Zm9yX3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBpcGUpOwo+ICAgCQl9IGVsc2Ugewo+ICAgCQkJ LyoKPiAgIAkJCSAqIElmIGNsaXBwaW5nIHJlc3VsdHMgaW4gYSBub24tdmlzaWJsZSBwcmltYXJ5 IHBsYW5lLAo+IEBAIC0xMTg0NiwxMyArMTE4NDUsNTAgQEAgaW50ZWxfY29tbWl0X3ByaW1hcnlf cGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJCQkgKi8KPiAgIAkJCWludGVsX2Rp c2FibGVfcHJpbWFyeV9od19wbGFuZShwbGFuZSwgY3J0Yyk7Cj4gICAJCX0KPiArCX0KPiArfQo+ Cj4gLQkJaW50ZWxfZnJvbnRidWZmZXJfZmxpcChkZXYsIElOVEVMX0ZST05UQlVGRkVSX1BSSU1B UlkocGlwZSkpOwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5k ZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gKwo+ICsJaWYgKGludGVsX2NydGMtPmF0b21pYy5kaXNhYmxlX2ZiYykKPiArCQlpbnRl bF9mYmNfZGlzYWJsZShkZXYpOwo+ICsKPiArCWlmIChpbnRlbF9jcnRjLT5hdG9taWMucHJlX2Rp c2FibGVfcHJpbWFyeSkKPiArCQlpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KGNydGMpOwo+ICsK PiArCWlmIChpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtKQo+ICsJCWludGVsX3VwZGF0ZV93 YXRlcm1hcmtzKGNydGMpOwo+ICt9Cj4KPiArc3RhdGljIHZvaWQgaW50ZWxfZmluaXNoX2NydGNf Y29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNydGMtPmRldjsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnA7Cj4gKwo+ICsJaWYgKGlu dGVsX2NydGMtPmF0b21pYy53YWl0X3ZibGFuaykKPiArCQlpbnRlbF93YWl0X2Zvcl92Ymxhbmso ZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsKPiArCj4gKwlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwKGRl diwgaW50ZWxfY3J0Yy0+YXRvbWljLmZiX2JpdHMpOwo+ICsKPiArCWlmIChpbnRlbF9jcnRjLT5h dG9taWMudXBkYXRlX2ZiYykgewo+ICAgCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gICAJCWludGVsX2ZiY191cGRhdGUoZGV2KTsKPiAgIAkJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0 cnVjdF9tdXRleCk7Cj4gICAJfQo+ICsKPiArCWlmIChpbnRlbF9jcnRjLT5hdG9taWMucG9zdF9l bmFibGVfcHJpbWFyeSkKPiArCQlpbnRlbF9wb3N0X2VuYWJsZV9wcmltYXJ5KGNydGMpOwo+ICsK PiArCWRybV9mb3JfZWFjaF9sZWdhY3lfcGxhbmUocCwgJmRldi0+bW9kZV9jb25maWcucGxhbmVf bGlzdCkKPiArCQlpZiAoaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJr cyAmIGRybV9wbGFuZV9pbmRleChwKSkKPiArCQkJaW50ZWxfdXBkYXRlX3Nwcml0ZV93YXRlcm1h cmtzKHAsIGNydGMsIDAsIDAsIDAsCj4gKwkJCQkJCSAgICAgICBmYWxzZSwgZmFsc2UpOwo+ICsK PiArCW1lbXNldCgmaW50ZWxfY3J0Yy0+YXRvbWljLCAwLCBzaXplb2YoaW50ZWxfY3J0Yy0+YXRv bWljKSk7Cj4gICB9Cj4KPiAgIGludAo+IEBAIC0xMTg2NCw3ICsxMTkwMCw3IEBAIGludGVsX3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ICAgewo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2Owo+ICAgCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9IHBsYW5lLT5mYjsKPiAtCXN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSBzdGF0ZTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSBzdGF0ZSA9 IHt7IDAgfX07Cj4gICAJc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lKTsKPiAgIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Yyk7Cj4gICAJaW50IHJldDsKPiBAQCAtMTE5MDIsNyArMTE5MzgsMzMgQEAg aW50ZWxfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gICAJCQlyZXR1cm4gcmV0Owo+ICAgCX0KPgo+ICsJaWYgKCFzdGF0ZS5iYXNl LmZiKSB7Cj4gKwkJdW5zaWduZWQgZmJfYml0cyA9IDA7Cj4gKwo+ICsJCXN3aXRjaCAocGxhbmUt PnR5cGUpIHsKPiArCQljYXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6Cj4gKwkJCWZiX2JpdHMg PSBJTlRFTF9GUk9OVEJVRkZFUl9QUklNQVJZKGludGVsX3BsYW5lLT5waXBlKTsKPiArCQkJYnJl YWs7Cj4gKwkJY2FzZSBEUk1fUExBTkVfVFlQRV9DVVJTT1I6Cj4gKwkJCWZiX2JpdHMgPSBJTlRF TF9GUk9OVEJVRkZFUl9DVVJTT1IoaW50ZWxfcGxhbmUtPnBpcGUpOwo+ICsJCQlicmVhazsKPiAr CQljYXNlIERSTV9QTEFORV9UWVBFX09WRVJMQVk6Cj4gKwkJCWZiX2JpdHMgPSBJTlRFTF9GUk9O VEJVRkZFUl9TUFJJVEUoaW50ZWxfcGxhbmUtPnBpcGUpOwo+ICsJCQlicmVhazsKPiArCQl9Cj4g Kwo+ICsJCS8qCj4gKwkJICogJ3ByZXBhcmUnIGlzIG5ldmVyIGNhbGxlZCB3aGVuIHBsYW5lIGlz IGJlaW5nIGRpc2FibGVkLCBzbwo+ICsJCSAqIHdlIG5lZWQgdG8gaGFuZGxlIGZyb250YnVmZmVy IHRyYWNraW5nIGhlcmUKPiArCQkgKi8KPiArCQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Cj4gKwkJaTkxNV9nZW1fdHJhY2tfZmIoaW50ZWxfZmJfb2JqKHBsYW5lLT5mYiksIE5VTEws IGZiX2JpdHMpOwo+ICsJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICsJfQo+ ICsKPiArCWludGVsX2JlZ2luX2NydGNfY29tbWl0KGNydGMpOwo+ICAgCWludGVsX3BsYW5lLT5j b21taXRfcGxhbmUocGxhbmUsICZzdGF0ZSk7Cj4gKwlpbnRlbF9maW5pc2hfY3J0Y19jb21taXQo Y3J0Yyk7CgpUaGlzIG5lZWRzIHRvIGJlIHJlYmFzZWQgb24gdG9wIG9mIHRoZSBwYXRjaCB0aGF0 IGFkZGVkIHRoZSAKaW50ZWxfcnVudGltZV9wbV9nZXQoKSBhbmQgX3B1dCgpIGNhbGxzIGhlcmUu CgoKPiAgIAlpZiAoZmIgIT0gb2xkX2ZiICYmIG9sZF9mYikgewo+ICAgCQlpZiAoaW50ZWxfY3J0 Yy0+YWN0aXZlKQo+IEBAIC0xMjAwOSw2ICsxMjA3MSw3IEBAIGludGVsX2NoZWNrX2N1cnNvcl9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9 ICZzdGF0ZS0+c3JjOwo+ICAgCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqY2xpcCA9ICZzdGF0ZS0+ Y2xpcDsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gaW50ZWxfZmJfb2Jq KGZiKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjKTsKPiAgIAlpbnQgY3J0Y193LCBjcnRjX2g7Cj4gICAJdW5zaWduZWQgc3RyaWRlOwo+ICAg CWludCByZXQ7Cj4gQEAgLTEyMDI0LDcgKzEyMDg3LDcgQEAgaW50ZWxfY2hlY2tfY3Vyc29yX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+Cj4gICAJLyogaWYgd2Ugd2FudCB0byB0dXJu IG9mZiB0aGUgY3Vyc29yIGlnbm9yZSB3aWR0aCBhbmQgaGVpZ2h0ICovCj4gICAJaWYgKCFvYmop Cj4gLQkJcmV0dXJuIDA7Cj4gKwkJZ290byBmaW5pc2g7Cj4KPiAgIAkvKiBDaGVjayBmb3Igd2hp Y2ggY3Vyc29yIHR5cGVzIHdlIHN1cHBvcnQgKi8KPiAgIAljcnRjX3cgPSBkcm1fcmVjdF93aWR0 aCgmc3RhdGUtPm9yaWdfZHN0KTsKPiBAQCAtMTIwNTEsNiArMTIxMTQsMTYgQEAgaW50ZWxfY2hl Y2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCX0KPiAgIAltdXRl eF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPgo+ICtmaW5pc2g6Cj4gKwlpZiAoaW50ZWxf Y3J0Yy0+YWN0aXZlKSB7Cj4gKwkJaWYgKGludGVsX2NydGMtPmN1cnNvcl93aWR0aCAhPQo+ICsJ CSAgICBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KSkKPiArCQkJaW50ZWxfY3J0Yy0+ YXRvbWljLnVwZGF0ZV93bSA9IHRydWU7Cj4gKwo+ICsJCWludGVsX2NydGMtPmF0b21pYy5mYl9i aXRzIHw9Cj4gKwkJCUlOVEVMX0ZST05UQlVGRkVSX0NVUlNPUihpbnRlbF9jcnRjLT5waXBlKTsK PiArCX0KPiArCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPgo+IEBAIC0xMjA2Myw5ICsxMjEzNiw2 IEBAIGludGVsX2NvbW1pdF9jdXJzb3JfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4g ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ ICAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZSk7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihz dGF0ZS0+YmFzZS5mYik7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2xkX29iaiA9 IGludGVsX2ZiX29iaihwbGFuZS0+ZmIpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRj LT5waXBlOwo+IC0JdW5zaWduZWQgb2xkX3dpZHRoOwo+ICAgCXVpbnQzMl90IGFkZHI7Cj4KPiAg IAlwbGFuZS0+ZmIgPSBzdGF0ZS0+YmFzZS5mYjsKPiBAQCAtMTIwODUsMTcgKzEyMTU1LDYgQEAg aW50ZWxfY29tbWl0X2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlp ZiAoaW50ZWxfY3J0Yy0+Y3Vyc29yX2JvID09IG9iaikKPiAgIAkJZ290byB1cGRhdGU7Cj4KPiAt CS8qCj4gLQkgKiAncHJlcGFyZScgaXMgb25seSBjYWxsZWQgd2hlbiBmYiAhPSBOVUxMOyB3ZSBz dGlsbCBuZWVkIHRvIHVwZGF0ZQo+IC0JICogZnJvbnRidWZmZXIgdHJhY2tpbmcgZm9yIHRoZSAn ZGlzYWJsZScgY2FzZSBoZXJlLgo+IC0JICovCj4gLQlpZiAoIW9iaikgewo+IC0JCW11dGV4X2xv Y2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCQlpOTE1X2dlbV90cmFja19mYihvbGRfb2JqLCBO VUxMLAo+IC0JCQkJICBJTlRFTF9GUk9OVEJVRkZFUl9DVVJTT1IocGlwZSkpOwo+IC0JCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JfQo+IC0KPiAgIAlpZiAoIW9iaikKPiAg IAkJYWRkciA9IDA7Cj4gICAJZWxzZSBpZiAoIUlOVEVMX0lORk8oZGV2KS0+Y3Vyc29yX25lZWRz X3BoeXNpY2FsKQo+IEBAIC0xMjEwNiwxOCArMTIxNjUsMTEgQEAgaW50ZWxfY29tbWl0X2N1cnNv cl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlpbnRlbF9jcnRjLT5jdXJzb3Jf YWRkciA9IGFkZHI7Cj4gICAJaW50ZWxfY3J0Yy0+Y3Vyc29yX2JvID0gb2JqOwo+ICAgdXBkYXRl Ogo+IC0Jb2xkX3dpZHRoID0gaW50ZWxfY3J0Yy0+Y3Vyc29yX3dpZHRoOwo+IC0KPiAgIAlpbnRl bF9jcnRjLT5jdXJzb3Jfd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmc3RhdGUtPm9yaWdfZHN0KTsK PiAgIAlpbnRlbF9jcnRjLT5jdXJzb3JfaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+ b3JpZ19kc3QpOwo+Cj4gLQlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Cj4gLQkJaWYgKG9sZF93 aWR0aCAhPSBpbnRlbF9jcnRjLT5jdXJzb3Jfd2lkdGgpCj4gLQkJCWludGVsX3VwZGF0ZV93YXRl cm1hcmtzKGNydGMpOwo+ICsJaWYgKGludGVsX2NydGMtPmFjdGl2ZSkKPiAgIAkJaW50ZWxfY3J0 Y191cGRhdGVfY3Vyc29yKGNydGMsIHN0YXRlLT52aXNpYmxlKTsKPiAtCj4gLQkJaW50ZWxfZnJv bnRidWZmZXJfZmxpcChkZXYsIElOVEVMX0ZST05UQlVGRkVSX0NVUlNPUihwaXBlKSk7Cj4gLQl9 Cj4gICB9Cj4KPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGludGVsX2N1 cnNvcl9wbGFuZV9mdW5jcyA9IHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDU4 OGI2MTguLmEwM2JkNzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0yNTEs NiArMjUxLDEyIEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7Cj4gICAJc3RydWN0IGRybV9y ZWN0IG9yaWdfc3JjOwo+ICAgCXN0cnVjdCBkcm1fcmVjdCBvcmlnX2RzdDsKPiAgIAlib29sIHZp c2libGU7Cj4gKwo+ICsJLyoKPiArCSAqIHVzZWQgb25seSBmb3Igc3ByaXRlIHBsYW5lcyB0byBk ZXRlcm1pbmUgd2hlbiB0byBpbXBsaWNpdGx5Cj4gKwkgKiBlbmFibGUvZGlzYWJsZSB0aGUgcHJp bWFyeSBwbGFuZQo+ICsJICovCj4gKwlib29sIGhpZGVzX3ByaW1hcnk7Cj4gICB9Owo+Cj4gICBz dHJ1Y3QgaW50ZWxfcGxhbmVfY29uZmlnIHsKPiBAQCAtNDE1LDYgKzQyMSwyNyBAQCBzdHJ1Y3Qg c2tsX3BpcGVfd20gewo+ICAgCXVpbnQzMl90IGxpbmV0aW1lOwo+ICAgfTsKPgo+ICsvKgo+ICsg KiBUcmFja2luZyBvZiBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBwZXJmb3JtZWQgYXQgdGhl IGJlZ2lubmluZy9lbmQgb2YgYW4KPiArICogYXRvbWljIGNvbW1pdCwgb3V0c2lkZSB0aGUgYXRv bWljIHNlY3Rpb24gd2hlcmUgaW50ZXJydXB0cyBhcmUgZGlzYWJsZWQuCj4gKyAqIFRoZXNlIGFy ZSBnZW5lcmFsbHkgb3BlcmF0aW9ucyB0aGF0IGdyYWIgbXV0ZXhlcyBvciBtaWdodCBvdGhlcndp c2Ugc2xlZXAKPiArICogYW5kIHRodXMgY2FuJ3QgYmUgcnVuIHdpdGggaW50ZXJydXB0cyBkaXNh YmxlZC4KPiArICovCj4gK3N0cnVjdCBpbnRlbF9jcnRjX2F0b21pY19jb21taXQgewo+ICsJLyog U2xlZXBhYmxlIG9wZXJhdGlvbnMgdG8gcGVyZm9ybSBiZWZvcmUgY29tbWl0ICovCj4gKwlib29s IHdhaXRfZm9yX2ZsaXBzOwoKSW4gaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoKSwgdGhlIHRocmVl IGZpZWxkcyBiZWxvdyBhcmUgaGFuZGxlZCwgYnV0IApub3QgdGhlIG9uZSBhYm92ZS4KCj4gKwli b29sIGRpc2FibGVfZmJjOwo+ICsJYm9vbCBwcmVfZGlzYWJsZV9wcmltYXJ5Owo+ICsJYm9vbCB1 cGRhdGVfd207Cj4gKwo+ICsJLyogU2xlZXBhYmxlIG9wZXJhdGlvbnMgdG8gcGVyZm9ybSBhZnRl ciBjb21taXQgKi8KPiArCXVuc2lnbmVkIGZiX2JpdHM7Cj4gKwlib29sIHdhaXRfdmJsYW5rOwo+ ICsJYm9vbCB1cGRhdGVfZmJjOwo+ICsJYm9vbCBwb3N0X2VuYWJsZV9wcmltYXJ5Owo+ICsJdW5z aWduZWQgdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzOwo+ICt9Owo+ICsKPiAgIHN0cnVjdCBpbnRl bF9jcnRjIHsKPiAgIAlzdHJ1Y3QgZHJtX2NydGMgYmFzZTsKPiAgIAllbnVtIHBpcGUgcGlwZTsK PiBAQCAtNDY4LDYgKzQ5NSw4IEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKPgo+ICAgCWludCBzY2Fu bGluZV9vZmZzZXQ7Cj4gICAJc3RydWN0IGludGVsX21taW9fZmxpcCBtbWlvX2ZsaXA7Cj4gKwo+ ICsJc3RydWN0IGludGVsX2NydGNfYXRvbWljX2NvbW1pdCBhdG9taWM7Cj4gICB9Owo+Cj4gICBz dHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVycyB7Cj4gQEAgLTEyMTMsNiArMTI0Miw4IEBA IGludCBpbnRlbF9zcHJpdGVfZ2V0X2NvbG9ya2V5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCj4gICBib29sIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAgCQkJICAgICB1aW50MzJfdCAqc3RhcnRfdmJsX2NvdW50KTsKPiAgIHZv aWQgaW50ZWxfcGlwZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCB1MzIgc3Rh cnRfdmJsX2NvdW50KTsKPiArdm9pZCBpbnRlbF9wb3N0X2VuYWJsZV9wcmltYXJ5KHN0cnVjdCBk cm1fY3J0YyAqY3J0Yyk7Cj4gK3ZvaWQgaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpOwo+Cj4gICAvKiBpbnRlbF90di5jICovCj4gICB2b2lkIGludGVsX3R2 X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKPiBpbmRleCBjMThlNTdkLi5mZjdkNmExIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKPiBAQCAtNzcxLDkgKzc3MSw4IEBAIGl2Yl9kaXNhYmxlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gICAJICogQXZvaWQg dW5kZXJydW5zIHdoZW4gZGlzYWJsaW5nIHRoZSBzcHJpdGUuCj4gICAJICogRklYTUUgcmVtb3Zl IG9uY2Ugd2F0ZXJtYXJrIHVwZGF0ZXMgYXJlIGRvbmUgcHJvcGVybHkuCj4gICAJICovCj4gLQlp bnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2LCBwaXBlKTsKPiAtCj4gLQlpbnRlbF91cGRhdGVfc3By aXRlX3dhdGVybWFya3MocGxhbmUsIGNydGMsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSk7Cj4gKwlp bnRlbF9jcnRjLT5hdG9taWMud2FpdF92YmxhbmsgPSB0cnVlOwo+ICsJaW50ZWxfY3J0Yy0+YXRv bWljLnVwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyB8PSAoMSA8PCBkcm1fcGxhbmVfaW5kZXgocGxh bmUpKTsKPiAgIH0KPgo+ICAgc3RhdGljIGludAo+IEBAIC05NzYsMTIgKzk3NSwxMSBAQCBpbGtf ZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICAgCSAqIEF2b2lkIHVuZGVycnVucyB3aGVuIGRpc2FibGluZyB0aGUgc3ByaXRlLgo+ ICAgCSAqIEZJWE1FIHJlbW92ZSBvbmNlIHdhdGVybWFyayB1cGRhdGVzIGFyZSBkb25lIHByb3Bl cmx5Lgo+ICAgCSAqLwo+IC0JaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldiwgcGlwZSk7Cj4gLQo+ IC0JaW50ZWxfdXBkYXRlX3Nwcml0ZV93YXRlcm1hcmtzKHBsYW5lLCBjcnRjLCAwLCAwLCAwLCBm YWxzZSwgZmFsc2UpOwo+ICsJaW50ZWxfY3J0Yy0+YXRvbWljLndhaXRfdmJsYW5rID0gdHJ1ZTsK PiArCWludGVsX2NydGMtPmF0b21pYy51cGRhdGVfc3ByaXRlX3dhdGVybWFya3MgfD0gKDEgPDwg ZHJtX3BsYW5lX2luZGV4KHBsYW5lKSk7Cj4gICB9Cj4KPiAtc3RhdGljIHZvaWQKPiArdm9pZAo+ ICAgaW50ZWxfcG9zdF9lbmFibGVfcHJpbWFyeShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gICB7 Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiBAQCAtMTAwOCw3ICsx MDA2LDcgQEAgaW50ZWxfcG9zdF9lbmFibGVfcHJpbWFyeShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp Cj4gICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICB9Cj4KPiAtc3RhdGlj IHZvaWQKPiArdm9pZAoKU2hvdWxkIHRoaXMgaGF2ZSBrZXJuZWwgZG9jPwoKPiAgIGludGVsX3By ZV9kaXNhYmxlX3ByaW1hcnkoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAgewo+ICAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gQEAgLTExMTMsNyArMTExMSw3IEBAIGlu dGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPgo+ICAgCWlm ICghZmIpIHsKPiAgIAkJc3RhdGUtPnZpc2libGUgPSBmYWxzZTsKPiAtCQlyZXR1cm4gMDsKPiAr CQlnb3RvIGZpbmlzaDsKPiAgIAl9Cj4KPiAgIAkvKiBEb24ndCBtb2RpZnkgYW5vdGhlciBwaXBl J3MgcGxhbmUgKi8KPiBAQCAtMTI2MCw2ICsxMjU4LDI5IEBAIGludGVsX2NoZWNrX3Nwcml0ZV9w bGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgIAlkc3QtPnkxID0gY3J0Y195Owo+ICAg CWRzdC0+eTIgPSBjcnRjX3kgKyBjcnRjX2g7Cj4KPiArZmluaXNoOgo+ICsJLyoKPiArCSAqIElm IHRoZSBzcHJpdGUgaXMgY29tcGxldGVseSBjb3ZlcmluZyB0aGUgcHJpbWFyeSBwbGFuZSwKPiAr CSAqIHdlIGNhbiBkaXNhYmxlIHRoZSBwcmltYXJ5IGFuZCBzYXZlIHBvd2VyLgo+ICsJICovCj4g KwlzdGF0ZS0+aGlkZXNfcHJpbWFyeSA9IGRybV9yZWN0X2VxdWFscyhkc3QsIGNsaXApICYmCj4g KwkJIWNvbG9ya2V5X2VuYWJsZWQoaW50ZWxfcGxhbmUpOwo+ICsJV0FSTl9PTihzdGF0ZS0+aGlk ZXNfcHJpbWFyeSAmJiAhc3RhdGUtPnZpc2libGUgJiYgaW50ZWxfY3J0Yy0+YWN0aXZlKTsKPiAr Cj4gKwlpZiAoaW50ZWxfY3J0Yy0+YWN0aXZlKSB7Cj4gKwkJaWYgKGludGVsX2NydGMtPnByaW1h cnlfZW5hYmxlZCA9PSBzdGF0ZS0+aGlkZXNfcHJpbWFyeSkKPiArCQkJaW50ZWxfY3J0Yy0+YXRv bWljLndhaXRfZm9yX2ZsaXBzID0gdHJ1ZTsKPiArCj4gKwkJaWYgKGludGVsX2NydGMtPnByaW1h cnlfZW5hYmxlZCAmJiBzdGF0ZS0+aGlkZXNfcHJpbWFyeSkKPiArCQkJaW50ZWxfY3J0Yy0+YXRv bWljLnByZV9kaXNhYmxlX3ByaW1hcnkgPSB0cnVlOwo+ICsKPiArCQlpbnRlbF9jcnRjLT5hdG9t aWMuZmJfYml0cyB8PQo+ICsJCQlJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUoaW50ZWxfY3J0Yy0+ cGlwZSk7Cj4gKwo+ICsJCWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkICYmICFzdGF0 ZS0+aGlkZXNfcHJpbWFyeSkKPiArCQkJaW50ZWxfY3J0Yy0+YXRvbWljLnBvc3RfZW5hYmxlX3By aW1hcnkgPSB0cnVlOwo+ICsJfQo+ICsKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPgo+IEBAIC0xMjY3 LDM3ICsxMjg4LDE0IEBAIHN0YXRpYyB2b2lkCj4gICBpbnRlbF9jb21taXRfc3ByaXRlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCQkJICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnN0YXRlKQo+ICAgewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7 Cj4gICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKPiAgIAlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gICAJc3Ry dWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAt CWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgIAlzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHN0YXRlLT5iYXNlLmZiOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAgCWludCBjcnRjX3gsIGNydGNfeTsKPiAg IAl1bnNpZ25lZCBpbnQgY3J0Y193LCBjcnRjX2g7Cj4gICAJdWludDMyX3Qgc3JjX3gsIHNyY195 LCBzcmNfdywgc3JjX2g7Cj4gLQlzdHJ1Y3QgZHJtX3JlY3QgKmRzdCA9ICZzdGF0ZS0+ZHN0Owo+ IC0JY29uc3Qgc3RydWN0IGRybV9yZWN0ICpjbGlwID0gJnN0YXRlLT5jbGlwOwo+IC0JYm9vbCBw cmltYXJ5X2VuYWJsZWQ7Cj4gLQo+IC0JLyoKPiAtCSAqICdwcmVwYXJlJyBpcyBuZXZlciBjYWxs ZWQgd2hlbiBwbGFuZSBpcyBiZWluZyBkaXNhYmxlZCwgc28gd2UgbmVlZAo+IC0JICogdG8gaGFu ZGxlIGZyb250YnVmZmVyIHRyYWNraW5nIGhlcmUKPiAtCSAqLwo+IC0JaWYgKCFmYikgewo+IC0J CW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCQlpOTE1X2dlbV90cmFja19mYihp bnRlbF9mYl9vYmoocGxhbmUtPmZiKSwgTlVMTCwKPiAtCQkJCSAgSU5URUxfRlJPTlRCVUZGRVJf U1BSSVRFKHBpcGUpKTsKPiAtCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAt CX0KPiAtCj4gLQkvKgo+IC0JICogSWYgdGhlIHNwcml0ZSBpcyBjb21wbGV0ZWx5IGNvdmVyaW5n IHRoZSBwcmltYXJ5IHBsYW5lLAo+IC0JICogd2UgY2FuIGRpc2FibGUgdGhlIHByaW1hcnkgYW5k IHNhdmUgcG93ZXIuCj4gLQkgKi8KPiAtCXByaW1hcnlfZW5hYmxlZCA9ICFkcm1fcmVjdF9lcXVh bHMoZHN0LCBjbGlwKSB8fCBjb2xvcmtleV9lbmFibGVkKGludGVsX3BsYW5lKTsKPiAtCVdBUk5f T04oIXByaW1hcnlfZW5hYmxlZCAmJiAhc3RhdGUtPnZpc2libGUgJiYgaW50ZWxfY3J0Yy0+YWN0 aXZlKTsKPgo+ICAgCWludGVsX3BsYW5lLT5jcnRjX3ggPSBzdGF0ZS0+b3JpZ19kc3QueDE7Cj4g ICAJaW50ZWxfcGxhbmUtPmNydGNfeSA9IHN0YXRlLT5vcmlnX2RzdC55MTsKPiBAQCAtMTMxMCwx NSArMTMwOCw3IEBAIGludGVsX2NvbW1pdF9zcHJpdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCj4gICAJaW50ZWxfcGxhbmUtPm9iaiA9IG9iajsKPgo+ICAgCWlmIChpbnRlbF9jcnRj LT5hY3RpdmUpIHsKPiAtCQlib29sIHByaW1hcnlfd2FzX2VuYWJsZWQgPSBpbnRlbF9jcnRjLT5w cmltYXJ5X2VuYWJsZWQ7Cj4gLQo+IC0JCWludGVsX2NydGMtPnByaW1hcnlfZW5hYmxlZCA9IHBy aW1hcnlfZW5hYmxlZDsKPiAtCj4gLQkJaWYgKHByaW1hcnlfd2FzX2VuYWJsZWQgIT0gcHJpbWFy eV9lbmFibGVkKQo+IC0JCQlpbnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMoY3J0Yyk7 CgpBcyBub3RlZCBhYm92ZSwgaXQgc2VlbXMgdGhhdCB0aGlzIHBhdGNoIHJlbW92ZXMgdGhlIHdh aXQgZm9yIHBlbmRpbmcgZmxpcHMuCgoKQW5kZXIKCj4gLQo+IC0JCWlmIChwcmltYXJ5X3dhc19l bmFibGVkICYmICFwcmltYXJ5X2VuYWJsZWQpCj4gLQkJCWludGVsX3ByZV9kaXNhYmxlX3ByaW1h cnkoY3J0Yyk7Cj4gKwkJaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkID0gIXN0YXRlLT5oaWRl c19wcmltYXJ5Owo+Cj4gICAJCWlmIChzdGF0ZS0+dmlzaWJsZSkgewo+ICAgCQkJY3J0Y194ID0g c3RhdGUtPmRzdC54MTsKPiBAQCAtMTMzNSwxMiArMTMyNSw2IEBAIGludGVsX2NvbW1pdF9zcHJp dGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gICAJCX0gZWxzZSB7Cj4gICAJCQlp bnRlbF9wbGFuZS0+ZGlzYWJsZV9wbGFuZShwbGFuZSwgY3J0Yyk7Cj4gICAJCX0KPiAtCj4gLQo+ IC0JCWludGVsX2Zyb250YnVmZmVyX2ZsaXAoZGV2LCBJTlRFTF9GUk9OVEJVRkZFUl9TUFJJVEUo cGlwZSkpOwo+IC0KPiAtCQlpZiAoIXByaW1hcnlfd2FzX2VuYWJsZWQgJiYgcHJpbWFyeV9lbmFi bGVkKQo+IC0JCQlpbnRlbF9wb3N0X2VuYWJsZV9wcmltYXJ5KGNydGMpOwo+ICAgCX0KPiAgIH0K Pgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=