From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 16/23] drm/i915: Sanitize the shared DPLL reserve/release interface Date: Tue, 25 Jun 2019 16:53:01 +0300 Message-ID: <20190625135301.GE5942@intel.com> References: <20190620140600.11357-1-imre.deak@intel.com> <20190620140600.11357-17-imre.deak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6C406E0FA for ; Tue, 25 Jun 2019 13:53:04 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190620140600.11357-17-imre.deak@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Imre Deak Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBKdW4gMjAsIDIwMTkgYXQgMDU6MDU6NTNQTSArMDMwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IEZvciBjb25zaXN0ZW5jeSBzL2ludGVsX2dldF9zaGFyZWRfZHBsbCgpL2ludGVsX3Jlc2Vy dmVfc2hhcmVkX2RwbGxzKCkvCj4gdG8gYmV0dGVyIG1hdGNoIGludGVsX3JlbGVhc2Vfc2hhcmVk X2RwbGxzKCkuIEFsc28sIHBhc3MgdG8gdGhlCj4gcmVzZXJ2ZS9yZWxlYXNlIGFuZCBnZXRfZHBs bHMvcHV0X2RwbGxzIGhvb2tzIHRoZSBpbnRlbF9hdG9taWNfc3RhdGUgYW5kCj4gQ1JUQyBvYmpl Y3QsIHRoYXQgd2F5IHRoZXNlIGZ1bmN0aW9ucyBjYW4gbG9vayB1cCB0aGUgb2xkIG9yIG5ldyBz dGF0ZQo+IGFzIG5lZWRlZC4KPiAKPiBBbHNvIHJlbGVhc2UgdGhlIFBMTHMgZnJvbSB0aGUgYXRv bWljIHN0YXRlIHZpYSBhIG5ldwo+IHB1dF9kcGxscy0+aW50ZWxfdW5yZWZlcmVuY2Vfc2hhcmVk X2RwbGwoKSBjYWxsIGNoYWluIGZvciBiZXR0ZXIKPiBzeW1tZXRyeSB3aXRoIHRoZSByZXNlcnZh dGlvbiB2aWEgdGhlCj4gZ2V0X2RwbGxzLT5pbnRlbF9yZWZlcmVuY2Vfc2hhcmVkX2RwbGwoKSBj YWxsIGNoYWluLgo+IAo+IFNpbmNlIG5vdGhpbmcgdXNlcyB0aGUgUExMIHJldHVybmVkIGJ5IGlu dGVsX3Jlc2VydmVfc2hhcmVkX2RwbGxzKCksCj4gbWFrZSBpdCByZXR1cm4gb25seSBhIGJvb2wu Cj4gCj4gV2hpbGUgYXQgaXQgYWxzbyBjbGFyaWZ5IHRoZSByZXNlcnZlL3JlbGVhc2UgZnVuY3Rp b24gZG9jYm9vayBoZWFkZXJzCj4gbWFraW5nIGl0IGNsZWFyIHRoYXQgbXVsdGlwbGUgRFBMTHMg d2lsbCBiZSByZXNlcnZlZC9yZWxlYXNlZCBhbmQKPiB3aGV0aGVyIHRoZSBuZXcgb3Igb2xkIGF0 b21pYyBDUlRDIHN0YXRlIGlzIGFmZmVjdGVkLgo+IAo+IFRoaXMgcmVmYWN0b3JpbmcgaXMgYWxz byBhIHByZXBhcmF0aW9uIGZvciBhIGZvbGxvdy11cCBjaGFuZ2UgdGhhdCBuZWVkcwo+IHRvIHJl c2VydmUgbXVsdGlwbGUgRFBMTHMuCj4gCj4gS3Vkb3MgdG8gVmlsbGUgZm9yIHRoZSBpZGVhIHRv IHBhc3MgaW50ZWxfYXRvbWljX3N0YXRlIGFyb3VuZCwgdG8gbWFrZQo+IHRoaW5ncyBjbGVhcmVy IGxvY2FsbHkgd2hlcmUgYW4gb2JqZWN0J3Mgb2xkL25ldyBhdG9taWMgc3RhdGUgaXMKPiByZXF1 aXJlZC4KPiAKPiBObyBmdW5jdGlvbmFsIGNoYW5nZXMuCj4gCj4gdjI6Cj4gLSBGaXggY2hlY2tw YXRjaCBpc3N1ZTogdHlwbyBpbiBjb2RlIGNvbW1lbnQuCj4gCj4gQ2M6IFZpbGxlIFN5cmrDpGzD pCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxh bmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJl LmRlYWtAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYyAgfCAgMTkgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kcGxsX21nci5jIHwgMjIxICsrKysrKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmggfCAgMTMgKy0KPiAgMyBmaWxlcyBjaGFu Z2VkLCAxNTMgaW5zZXJ0aW9ucygrKSwgMTAwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNDY4Y2E2ZDg0YmQ4 Li42ODgxMzc1MjQxNzkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwo+IEBAIC05NTA0LDYgKzk1MDQsOCBAQCBzdGF0aWMgaW50IGlyb25sYWtl X2NydGNfY29tcHV0ZV9jbG9jayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJCSAgICAg ICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gKwlz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9Cj4gKwkJdG9faW50ZWxfYXRvbWljX3N0 YXRlKGNydGNfc3RhdGUtPmJhc2Uuc3RhdGUpOwo+ICAJY29uc3Qgc3RydWN0IGludGVsX2xpbWl0 ICpsaW1pdDsKPiAgCWludCByZWZjbGsgPSAxMjAwMDA7Cj4gIAo+IEBAIC05NTQ1LDcgKzk1NDcs NyBAQCBzdGF0aWMgaW50IGlyb25sYWtlX2NydGNfY29tcHV0ZV9jbG9jayhzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKPiAgCj4gIAlpcm9ubGFrZV9jb21wdXRlX2RwbGwoY3J0YywgY3J0Y19zdGF0 ZSwgTlVMTCk7Cj4gIAo+IC0JaWYgKCFpbnRlbF9nZXRfc2hhcmVkX2RwbGwoY3J0Y19zdGF0ZSwg TlVMTCkpIHsKPiArCWlmICghaW50ZWxfcmVzZXJ2ZV9zaGFyZWRfZHBsbHMoc3RhdGUsIGNydGMs IE5VTEwpKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIGZpbmQgUExMIGZvciBwaXBl ICVjXG4iLAo+ICAJCQkgICAgICBwaXBlX25hbWUoY3J0Yy0+cGlwZSkpOwo+ICAJCXJldHVybiAt RUlOVkFMOwo+IEBAIC05OTI2LDcgKzk5MjgsNyBAQCBzdGF0aWMgaW50IGhhc3dlbGxfY3J0Y19j b21wdXRlX2Nsb2NrKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyID0KPiAgCQkJaW50ZWxfZ2V0X2NydGNfbmV3X2VuY29kZXIoc3RhdGUs IGNydGNfc3RhdGUpOwo+ICAKPiAtCQlpZiAoIWludGVsX2dldF9zaGFyZWRfZHBsbChjcnRjX3N0 YXRlLCBlbmNvZGVyKSkgewo+ICsJCWlmICghaW50ZWxfcmVzZXJ2ZV9zaGFyZWRfZHBsbHMoc3Rh dGUsIGNydGMsIGVuY29kZXIpKSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBmaW5k IFBMTCBmb3IgcGlwZSAlY1xuIiwKPiAgCQkJCSAgICAgIHBpcGVfbmFtZShjcnRjLT5waXBlKSk7 Cj4gIAkJCXJldHVybiAtRUlOVkFMOwo+IEBAIC0xMzE5NSwyNyArMTMxOTcsMjAgQEAgc3RhdGlj IHZvaWQgdXBkYXRlX3NjYW5saW5lX29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9jbGVhcl9wbGxzKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0Y19zdGF0ZTsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjOwo+ICAJaW50IGk7Cj4gIAo+ICAJaWYgKCFkZXZfcHJpdi0+ZGlzcGxheS5jcnRj X2NvbXB1dGVfY2xvY2spCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWZvcl9lYWNoX29sZG5ld19pbnRl bF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKPiAtCQkJCQkgICAg bmV3X2NydGNfc3RhdGUsIGkpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKm9sZF9k cGxsID0KPiAtCQkJb2xkX2NydGNfc3RhdGUtPnNoYXJlZF9kcGxsOwo+IC0KPiArCWZvcl9lYWNo X25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0ZSwgaSkg ewo+ICAJCWlmICghbmVlZHNfbW9kZXNldCgmbmV3X2NydGNfc3RhdGUtPmJhc2UpKQo+ICAJCQlj b250aW51ZTsKPiAgCj4gIAkJbmV3X2NydGNfc3RhdGUtPnNoYXJlZF9kcGxsID0gTlVMTDsKPiAg Cj4gLQkJaWYgKCFvbGRfZHBsbCkKPiAtCQkJY29udGludWU7Cj4gLQo+IC0JCWludGVsX3JlbGVh c2Vfc2hhcmVkX2RwbGwob2xkX2RwbGwsIGNydGMsICZzdGF0ZS0+YmFzZSk7Cj4gKwkJaW50ZWxf cmVsZWFzZV9zaGFyZWRfZHBsbHMoc3RhdGUsIGNydGMpOwo+ICAJfQo+ICB9Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmMKPiBpbmRleCBiZjY2 MjYxYzhiZjAuLjNmYmM5NzU4NTFmYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2RwbGxfbWdyLmMKPiBAQCAtMzYsOSArMzYsMTAgQEAKPiAgICogVGhpcyBm aWxlIHByb3ZpZGVzIGFuIGFic3RyYWN0aW9uIG92ZXIgZGlzcGxheSBQTExzLiBUaGUgZnVuY3Rp b24KPiAgICogaW50ZWxfc2hhcmVkX2RwbGxfaW5pdCgpIGluaXRpYWxpemVzIHRoZSBQTExzIGZv ciB0aGUgZ2l2ZW4gcGxhdGZvcm0uICBUaGUKPiAgICogdXNlcnMgb2YgYSBQTEwgYXJlIHRyYWNr ZWQgYW5kIHRoYXQgdHJhY2tpbmcgaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBhdG9taWMKPiAtICog bW9kZXN0IGludGVyZmFjZS4gRHVyaW5nIGFuIGF0b21pYyBvcGVyYXRpb24sIGEgUExMIGNhbiBi ZSByZXF1ZXN0ZWQgZm9yIGEKPiAtICogZ2l2ZW4gQ1JUQyBhbmQgZW5jb2RlciBjb25maWd1cmF0 aW9uIGJ5IGNhbGxpbmcgaW50ZWxfZ2V0X3NoYXJlZF9kcGxsKCkgYW5kCj4gLSAqIGEgcHJldmlv dXNseSB1c2VkIFBMTCBjYW4gYmUgcmVsZWFzZWQgd2l0aCBpbnRlbF9yZWxlYXNlX3NoYXJlZF9k cGxsKCkuCj4gKyAqIG1vZHNldCBpbnRlcmZhY2UuIER1cmluZyBhbiBhdG9taWMgb3BlcmF0aW9u LCByZXF1aXJlZCBQTExzIGNhbiBiZSByZXNlcnZlZAo+ICsgKiBmb3IgYSBnaXZlbiBDUlRDIGFu ZCBlbmNvZGVyIGNvbmZpZ3VyYXRpb24gYnkgY2FsbGluZwo+ICsgKiBpbnRlbF9yZXNlcnZlX3No YXJlZF9kcGxscygpIGFuZCBwcmV2aW91c2x5IHJlc2VydmVkIFBMTHMgY2FuIGJlIHJlbGVhc2Vk Cj4gKyAqIHdpdGggaW50ZWxfcmVsZWFzZV9zaGFyZWRfZHBsbHMoKS4KPiAgICogQ2hhbmdlcyB0 byB0aGUgdXNlcnMgYXJlIGZpcnN0IHN0YWdlZCBpbiB0aGUgYXRvbWljIHN0YXRlLCBhbmQgdGhl biBtYWRlCj4gICAqIGVmZmVjdGl2ZSBieSBjYWxsaW5nIGludGVsX3NoYXJlZF9kcGxsX3N3YXBf c3RhdGUoKSBkdXJpbmcgdGhlIGF0b21pYwo+ICAgKiBjb21taXQgcGhhc2UuCj4gQEAgLTMwOSw2 ICszMTAsMjggQEAgaW50ZWxfcmVmZXJlbmNlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbCAqcGxsLAo+ICAJc2hhcmVkX2RwbGxbaWRdLmNydGNfbWFzayB8PSAxIDw8IGNydGMt PnBpcGU7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGludGVsX3VucmVmZXJlbmNlX3NoYXJlZF9k cGxsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkJCSAgY29uc3Qgc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCj4gKwkJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfc2hhcmVk X2RwbGwgKnBsbCkKPiArewo+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX3N0YXRlICpzaGFy ZWRfZHBsbDsKPiArCj4gKwlzaGFyZWRfZHBsbCA9IGludGVsX2F0b21pY19nZXRfc2hhcmVkX2Rw bGxfc3RhdGUoJnN0YXRlLT5iYXNlKTsKPiArCXNoYXJlZF9kcGxsW3BsbC0+aW5mby0+aWRdLmNy dGNfbWFzayAmPSB+KDEgPDwgY3J0Yy0+cGlwZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGlu dGVsX3B1dF9kcGxsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkgICBz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiArewo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUgPQo+ICsJCWludGVsX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUs IGNydGMpOwoKSSdtIHdvbmRlcmluZyBhIGJpdCB3aHkgd2UncmUgdXNpbmcgdGhlIG9sZCBjcnRj IHN0YXRlIGhlcmUuIFdlCmR1cGxpY2F0ZWQgdGhlIHN0YXRlIHNvIHNob3VsZG4ndCB0aGUgbmV3 IGNydGMgc3RhdGUgaGF2ZSB0aGUKc2FtZSBkcGxsIHN0aWxsIGF0IHRoaXMgcG9pbnQ/CgpEb2Vz bid0IHJlYWxseSBtYXR0ZXIgSSBzdXBwb3NlLiBOb3QgZXZlbiBzdXJlIHdoaWNoIHN0YXRlIHdv dWxkCmJlIG1vcmUgY29ycmVjdCBoZXJlLgoKQW55d2F5cywgdGhlIHBhdGNoIHNlZW1zIE9LLgpS ZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KCj4gKwo+ICsJaWYgKCFjcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCkKPiArCQlyZXR1cm47Cj4g Kwo+ICsJaW50ZWxfdW5yZWZlcmVuY2Vfc2hhcmVkX2RwbGwoc3RhdGUsIGNydGMsIGNydGNfc3Rh dGUtPnNoYXJlZF9kcGxsKTsKPiArfQo+ICsKPiAgLyoqCj4gICAqIGludGVsX3NoYXJlZF9kcGxs X3N3YXBfc3RhdGUgLSBtYWtlIGF0b21pYyBEUExMIGNvbmZpZ3VyYXRpb24gZWZmZWN0aXZlCj4g ICAqIEBzdGF0ZTogYXRvbWljIHN0YXRlCj4gQEAgLTQyMSwxMSArNDQ0LDEyIEBAIHN0YXRpYyB2 b2lkIGlieF9wY2hfZHBsbF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgCXVkZWxheSgyMDApOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsICoKPiAtaWJ4X2dldF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+IC0JICAgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiArc3RhdGljIGJv b2wgaWJ4X2dldF9kcGxsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkg c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gKwkJCSBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNy dGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSA9Cj4gKwkJaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICAJZW51bSBpbnRl bF9kcGxsX2lkIGk7Cj4gQEAgLTQ0NSwxMiArNDY5LDEyIEBAIGlieF9nZXRfZHBsbChzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCX0KPiAgCj4gIAlpZiAoIXBsbCkKPiAt CQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJLyogcmVmZXJlbmNlIHRo ZSBwbGwgKi8KPiAgCWludGVsX3JlZmVyZW5jZV9zaGFyZWRfZHBsbChwbGwsIGNydGNfc3RhdGUp Owo+ICAKPiAtCXJldHVybiBwbGw7Cj4gKwlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAgc3RhdGlj IHZvaWQgaWJ4X2R1bXBfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+IEBAIC04MjEsMTAgKzg0NSwxMiBAQCBoc3dfZGRpX2RwX2dldF9kcGxsKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJcmV0dXJuIHBsbDsKPiAgfQo+ICAKPiAtc3Rh dGljIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqCj4gLWhzd19nZXRfZHBsbChzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAtCSAgICAgc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIpCj4gK3N0YXRpYyBib29sIGhzd19nZXRfZHBsbChzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSwKPiArCQkJIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICsJCQkgc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIHsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlID0KPiArCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0 YXRlLCBjcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICAKPiAgCW1l bXNldCgmY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZSwgMCwKPiBAQCAtODM2LDcgKzg2Miw3IEBA IGhzd19nZXRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlw bGwgPSBoc3dfZGRpX2RwX2dldF9kcGxsKGNydGNfc3RhdGUpOwo+ICAJfSBlbHNlIGlmIChpbnRl bF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9BTkFMT0cpKSB7Cj4gIAkJ aWYgKFdBUk5fT04oY3J0Y19zdGF0ZS0+cG9ydF9jbG9jayAvIDIgIT0gMTM1MDAwKSkKPiAtCQkJ cmV0dXJuIE5VTEw7Cj4gKwkJCXJldHVybiBmYWxzZTsKPiAgCj4gIAkJY3J0Y19zdGF0ZS0+ZHBs bF9od19zdGF0ZS5zcGxsID0KPiAgCQkJU1BMTF9QTExfRU5BQkxFIHwgU1BMTF9GUkVRXzEzNTBN SHogfCBTUExMX1JFRl9NVVhFRF9TU0M7Cj4gQEAgLTg0NCwxNSArODcwLDE1IEBAIGhzd19nZXRf ZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlwbGwgPSBpbnRl bF9maW5kX3NoYXJlZF9kcGxsKGNydGNfc3RhdGUsCj4gIAkJCQkJICAgICBEUExMX0lEX1NQTEws IERQTExfSURfU1BMTCk7Cj4gIAl9IGVsc2Ugewo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJldHVy biBmYWxzZTsKPiAgCX0KPiAgCj4gIAlpZiAoIXBsbCkKPiAtCQlyZXR1cm4gTlVMTDsKPiArCQly ZXR1cm4gZmFsc2U7Cj4gIAo+ICAJaW50ZWxfcmVmZXJlbmNlX3NoYXJlZF9kcGxsKHBsbCwgY3J0 Y19zdGF0ZSk7Cj4gIAo+IC0JcmV0dXJuIHBsbDsKPiArCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdm9pZCBoc3dfZHVtcF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gQEAgLTEzODUsMTAgKzE0MTEsMTIgQEAgc2tsX2RkaV9kcF9zZXRfZHBsbF9o d19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCXJldHVybiB0 cnVlOwo+ICB9Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICoKPiAtc2ts X2dldF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IC0JICAgICBz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiArc3RhdGljIGJvb2wgc2tsX2dldF9kcGxs KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkgc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gKwkJCSBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgewo+ICsJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ICsJCWludGVsX2F0b21pY19n ZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+ICAJc3RydWN0IGludGVsX3NoYXJlZF9k cGxsICpwbGw7Cj4gIAlib29sIGJyZXQ7Cj4gIAo+IEBAIC0xMzk2LDE2ICsxNDI0LDE2IEBAIHNr bF9nZXRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlicmV0 ID0gc2tsX2RkaV9oZG1pX3BsbF9kaXZpZGVycyhjcnRjX3N0YXRlKTsKPiAgCQlpZiAoIWJyZXQp IHsKPiAgCQkJRFJNX0RFQlVHX0tNUygiQ291bGQgbm90IGdldCBIRE1JIHBsbCBkaXZpZGVycy5c biIpOwo+IC0JCQlyZXR1cm4gTlVMTDsKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICAJCX0KPiAgCX0g ZWxzZSBpZiAoaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihjcnRjX3N0YXRlKSkgewo+ICAJCWJy ZXQgPSBza2xfZGRpX2RwX3NldF9kcGxsX2h3X3N0YXRlKGNydGNfc3RhdGUpOwo+ICAJCWlmICgh YnJldCkgewo+ICAJCQlEUk1fREVCVUdfS01TKCJDb3VsZCBub3Qgc2V0IERQIGRwbGwgSFcgc3Rh dGUuXG4iKTsKPiAtCQkJcmV0dXJuIE5VTEw7Cj4gKwkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4g IAl9IGVsc2Ugewo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAg Cj4gIAlpZiAoaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRURQ KSkKPiBAQCAtMTQxNywxMSArMTQ0NSwxMSBAQCBza2xfZ2V0X2RwbGwoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkJICAgICBEUExMX0lEX1NLTF9EUExMMSwKPiAg CQkJCQkgICAgIERQTExfSURfU0tMX0RQTEwzKTsKPiAgCWlmICghcGxsKQo+IC0JCXJldHVybiBO VUxMOwo+ICsJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlpbnRlbF9yZWZlcmVuY2Vfc2hhcmVkX2Rw bGwocGxsLCBjcnRjX3N0YXRlKTsKPiAgCj4gLQlyZXR1cm4gcGxsOwo+ICsJcmV0dXJuIHRydWU7 Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIHNrbF9kdW1wX2h3X3N0YXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtMTgyNywyMiArMTg1NSwyMyBAQCBieHRfZGRpX2hk bWlfc2V0X2RwbGxfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gIAlyZXR1cm4gYnh0X2RkaV9zZXRfZHBsbF9od19zdGF0ZShjcnRjX3N0YXRlLCAmY2xrX2Rp dik7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKgo+IC1ieHRf Z2V0X2RwbGwoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gLQkgICAgIHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICtzdGF0aWMgYm9vbCBieHRfZ2V0X2RwbGwo c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gKwkJCSBzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiArCQkJIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KPiArCQlpbnRl bF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7Cj4gIAllbnVtIGludGVsX2RwbGxfaWQgaWQ7Cj4g IAo+ICAJaWYgKGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0hE TUkpICYmCj4gIAkgICAgIWJ4dF9kZGlfaGRtaV9zZXRfZHBsbF9od19zdGF0ZShjcnRjX3N0YXRl KSkKPiAtCQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJaWYgKGludGVs X2NydGNfaGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkgJiYKPiAgCSAgICAhYnh0X2RkaV9kcF9z ZXRfZHBsbF9od19zdGF0ZShjcnRjX3N0YXRlKSkKPiAtCQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1 cm4gZmFsc2U7Cj4gIAo+ICAJLyogMToxIG1hcHBpbmcgYmV0d2VlbiBwb3J0cyBhbmQgUExMcyAq Lwo+ICAJaWQgPSAoZW51bSBpbnRlbF9kcGxsX2lkKSBlbmNvZGVyLT5wb3J0Owo+IEBAIC0xODUz LDcgKzE4ODIsNyBAQCBieHRfZ2V0X2RwbGwoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCj4gIAo+ICAJaW50ZWxfcmVmZXJlbmNlX3NoYXJlZF9kcGxsKHBsbCwgY3J0Y19zdGF0 ZSk7Cj4gIAo+IC0JcmV0dXJuIHBsbDsKPiArCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+ICBzdGF0 aWMgdm9pZCBieHRfZHVtcF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gQEAgLTE4ODQsOCArMTkxMywxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX3No YXJlZF9kcGxsX2Z1bmNzIGJ4dF9kZGlfcGxsX2Z1bmNzID0gewo+ICBzdHJ1Y3QgaW50ZWxfZHBs bF9tZ3Igewo+ICAJY29uc3Qgc3RydWN0IGRwbGxfaW5mbyAqZHBsbF9pbmZvOwo+ICAKPiAtCXN0 cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqKCpnZXRfZHBsbCkoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gLQkJCQkJICAgICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIpOwo+ICsJYm9vbCAoKmdldF9kcGxscykoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCj4gKwkJCSAgc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gKwkJCSAgc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpOwo+ICsJdm9pZCAoKnB1dF9kcGxscykoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUsCj4gKwkJCSAgc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ICAK PiAgCXZvaWQgKCpkdW1wX2h3X3N0YXRlKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlICpod19zdGF0 ZSk7Cj4gQEAgLTE4OTksNyArMTkzMSw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHBsbF9pbmZv IHBjaF9wbGxzW10gPSB7Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RwbGxfbWdy IHBjaF9wbGxfbWdyID0gewo+ICAJLmRwbGxfaW5mbyA9IHBjaF9wbGxzLAo+IC0JLmdldF9kcGxs ID0gaWJ4X2dldF9kcGxsLAo+ICsJLmdldF9kcGxscyA9IGlieF9nZXRfZHBsbCwKPiArCS5wdXRf ZHBsbHMgPSBpbnRlbF9wdXRfZHBsbCwKPiAgCS5kdW1wX2h3X3N0YXRlID0gaWJ4X2R1bXBfaHdf c3RhdGUsCj4gIH07Cj4gIAo+IEBAIC0xOTE1LDcgKzE5NDgsOCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGRwbGxfaW5mbyBoc3dfcGxsc1tdID0gewo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBp bnRlbF9kcGxsX21nciBoc3dfcGxsX21nciA9IHsKPiAgCS5kcGxsX2luZm8gPSBoc3dfcGxscywK PiAtCS5nZXRfZHBsbCA9IGhzd19nZXRfZHBsbCwKPiArCS5nZXRfZHBsbHMgPSBoc3dfZ2V0X2Rw bGwsCj4gKwkucHV0X2RwbGxzID0gaW50ZWxfcHV0X2RwbGwsCj4gIAkuZHVtcF9od19zdGF0ZSA9 IGhzd19kdW1wX2h3X3N0YXRlLAo+ICB9Owo+ICAKPiBAQCAtMTkyOSw3ICsxOTYzLDggQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcGxsX2luZm8gc2tsX3BsbHNbXSA9IHsKPiAgCj4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaW50ZWxfZHBsbF9tZ3Igc2tsX3BsbF9tZ3IgPSB7Cj4gIAkuZHBsbF9pbmZv ID0gc2tsX3BsbHMsCj4gLQkuZ2V0X2RwbGwgPSBza2xfZ2V0X2RwbGwsCj4gKwkuZ2V0X2RwbGxz ID0gc2tsX2dldF9kcGxsLAo+ICsJLnB1dF9kcGxscyA9IGludGVsX3B1dF9kcGxsLAo+ICAJLmR1 bXBfaHdfc3RhdGUgPSBza2xfZHVtcF9od19zdGF0ZSwKPiAgfTsKPiAgCj4gQEAgLTE5NDIsNyAr MTk3Nyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHBsbF9pbmZvIGJ4dF9wbGxzW10gPSB7Cj4g IAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2RwbGxfbWdyIGJ4dF9wbGxfbWdyID0gewo+ ICAJLmRwbGxfaW5mbyA9IGJ4dF9wbGxzLAo+IC0JLmdldF9kcGxsID0gYnh0X2dldF9kcGxsLAo+ ICsJLmdldF9kcGxscyA9IGJ4dF9nZXRfZHBsbCwKPiArCS5wdXRfZHBsbHMgPSBpbnRlbF9wdXRf ZHBsbCwKPiAgCS5kdW1wX2h3X3N0YXRlID0gYnh0X2R1bXBfaHdfc3RhdGUsCj4gIH07Cj4gIAo+ IEBAIC0yMzMyLDEwICsyMzY4LDEyIEBAIGNubF9kZGlfZHBfc2V0X2RwbGxfaHdfc3RhdGUoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ ICAKPiAtc3RhdGljIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqCj4gLWNubF9nZXRfZHBsbChz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAtCSAgICAgc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpCj4gK3N0YXRpYyBib29sIGNubF9nZXRfZHBsbChzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ ICsJCQkgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIHsKPiArCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KPiArCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRj X3N0YXRlKHN0YXRlLCBjcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ ICAJYm9vbCBicmV0Owo+ICAKPiBAQCAtMjM0MywxOCArMjM4MSwxOCBAQCBjbmxfZ2V0X2RwbGwo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJYnJldCA9IGNubF9kZGlf aGRtaV9wbGxfZGl2aWRlcnMoY3J0Y19zdGF0ZSk7Cj4gIAkJaWYgKCFicmV0KSB7Cj4gIAkJCURS TV9ERUJVR19LTVMoIkNvdWxkIG5vdCBnZXQgSERNSSBwbGwgZGl2aWRlcnMuXG4iKTsKPiAtCQkJ cmV0dXJuIE5VTEw7Cj4gKwkJCXJldHVybiBmYWxzZTsKPiAgCQl9Cj4gIAl9IGVsc2UgaWYgKGlu dGVsX2NydGNfaGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkpIHsKPiAgCQlicmV0ID0gY25sX2Rk aV9kcF9zZXRfZHBsbF9od19zdGF0ZShjcnRjX3N0YXRlKTsKPiAgCQlpZiAoIWJyZXQpIHsKPiAg CQkJRFJNX0RFQlVHX0tNUygiQ291bGQgbm90IHNldCBEUCBkcGxsIEhXIHN0YXRlLlxuIik7Cj4g LQkJCXJldHVybiBOVUxMOwo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gIAkJfQo+ICAJfSBlbHNlIHsK PiAgCQlEUk1fREVCVUdfS01TKCJTa2lwIERQTEwgc2V0dXAgZm9yIG91dHB1dF90eXBlcyAweCV4 XG4iLAo+ICAJCQkgICAgICBjcnRjX3N0YXRlLT5vdXRwdXRfdHlwZXMpOwo+IC0JCXJldHVybiBO VUxMOwo+ICsJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAgCj4gIAlwbGwgPSBpbnRlbF9maW5kX3No YXJlZF9kcGxsKGNydGNfc3RhdGUsCj4gQEAgLTIzNjIsMTIgKzI0MDAsMTIgQEAgY25sX2dldF9k cGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJICAgICBEUExM X0lEX1NLTF9EUExMMik7Cj4gIAlpZiAoIXBsbCkgewo+ICAJCURSTV9ERUJVR19LTVMoIk5vIFBM TCBzZWxlY3RlZFxuIik7Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICAJ fQo+ICAKPiAgCWludGVsX3JlZmVyZW5jZV9zaGFyZWRfZHBsbChwbGwsIGNydGNfc3RhdGUpOwo+ ICAKPiAtCXJldHVybiBwbGw7Cj4gKwlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAgc3RhdGljIHZv aWQgY25sX2R1bXBfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ IEBAIC0yMzk0LDcgKzI0MzIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRwbGxfaW5mbyBjbmxf cGxsc1tdID0gewo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxsX21nciBjbmxf cGxsX21nciA9IHsKPiAgCS5kcGxsX2luZm8gPSBjbmxfcGxscywKPiAtCS5nZXRfZHBsbCA9IGNu bF9nZXRfZHBsbCwKPiArCS5nZXRfZHBsbHMgPSBjbmxfZ2V0X2RwbGwsCj4gKwkucHV0X2RwbGxz ID0gaW50ZWxfcHV0X2RwbGwsCj4gIAkuZHVtcF9od19zdGF0ZSA9IGNubF9kdW1wX2h3X3N0YXRl LAo+ICB9Owo+ICAKPiBAQCAtMjc5MiwxMSArMjgzMSwxMyBAQCBzdGF0aWMgYm9vbCBpY2xfY2Fs Y19tZ19wbGxfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAly ZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAq Cj4gLWljbF9nZXRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAt CSAgICAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gK3N0YXRpYyBib29sIGljbF9n ZXRfZHBsbHMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gKwkJCSAgc3RydWN0 IGludGVsX2NydGMgKmNydGMsCj4gKwkJCSAgc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIp Cj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUgPQo+ICsJCWludGVsX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUo c3RhdGUsIGNydGMpOwo+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQ7Cj4gIAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPiAgCWVudW0gcG9ydCBwb3J0 ID0gZW5jb2Rlci0+cG9ydDsKPiBAQCAtMjgzMSwyNCArMjg3MiwyNCBAQCBpY2xfZ2V0X2RwbGwo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJfQo+ICAJfSBlbHNlIHsK PiAgCQlNSVNTSU5HX0NBU0UocG9ydCk7Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0dXJuIGZh bHNlOwo+ICAJfQo+ICAKPiAgCWlmICghcmV0KSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygiQ291bGQg bm90IGNhbGN1bGF0ZSBQTEwgc3RhdGUuXG4iKTsKPiAtCQlyZXR1cm4gTlVMTDsKPiArCQlyZXR1 cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+ICAKPiAgCXBsbCA9IGludGVsX2ZpbmRfc2hhcmVkX2RwbGwo Y3J0Y19zdGF0ZSwgbWluLCBtYXgpOwo+ICAJaWYgKCFwbGwpIHsKPiAgCQlEUk1fREVCVUdfS01T KCJObyBQTEwgc2VsZWN0ZWRcbiIpOwo+IC0JCXJldHVybiBOVUxMOwo+ICsJCXJldHVybiBmYWxz ZTsKPiAgCX0KPiAgCj4gIAlpbnRlbF9yZWZlcmVuY2Vfc2hhcmVkX2RwbGwocGxsLCBjcnRjX3N0 YXRlKTsKPiAgCj4gLQlyZXR1cm4gcGxsOwo+ICsJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4gIHN0 YXRpYyBib29sIG1nX3BsbF9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+IEBAIC0zMjIzLDcgKzMyNjQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRwbGxf aW5mbyBpY2xfcGxsc1tdID0gewo+ICAKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9kcGxs X21nciBpY2xfcGxsX21nciA9IHsKPiAgCS5kcGxsX2luZm8gPSBpY2xfcGxscywKPiAtCS5nZXRf ZHBsbCA9IGljbF9nZXRfZHBsbCwKPiArCS5nZXRfZHBsbHMgPSBpY2xfZ2V0X2RwbGxzLAo+ICsJ LnB1dF9kcGxscyA9IGludGVsX3B1dF9kcGxsLAo+ICAJLmR1bXBfaHdfc3RhdGUgPSBpY2xfZHVt cF9od19zdGF0ZSwKPiAgfTsKPiAgCj4gQEAgLTMyMzUsNyArMzI3Nyw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHBsbF9pbmZvIGVobF9wbGxzW10gPSB7Cj4gIAo+ICBzdGF0aWMgY29uc3Qgc3Ry dWN0IGludGVsX2RwbGxfbWdyIGVobF9wbGxfbWdyID0gewo+ICAJLmRwbGxfaW5mbyA9IGVobF9w bGxzLAo+IC0JLmdldF9kcGxsID0gaWNsX2dldF9kcGxsLAo+ICsJLmdldF9kcGxscyA9IGljbF9n ZXRfZHBsbHMsCj4gKwkucHV0X2RwbGxzID0gaW50ZWxfcHV0X2RwbGwsCj4gIAkuZHVtcF9od19z dGF0ZSA9IGljbF9kdW1wX2h3X3N0YXRlLAo+ICB9Owo+ICAKPiBAQCAtMzI4Nyw1MCArMzMzMCw2 NCBAQCB2b2lkIGludGVsX3NoYXJlZF9kcGxsX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgfQo+ICAKPiAgLyoqCj4gLSAqIGludGVsX2dldF9zaGFyZWRfZHBsbCAtIGdldCBhIHNoYXJl ZCBEUExMIGZvciBDUlRDIGFuZCBlbmNvZGVyIGNvbWJpbmF0aW9uCj4gLSAqIEBjcnRjX3N0YXRl OiBhdG9taWMgc3RhdGUgZm9yIHRoZSBjcnRjCj4gKyAqIGludGVsX3Jlc2VydmVfc2hhcmVkX2Rw bGxzIC0gcmVzZXJ2ZSBEUExMcyBmb3IgQ1JUQyBhbmQgZW5jb2RlciBjb21iaW5hdGlvbgo+ICsg KiBAc3RhdGU6IGF0b21pYyBzdGF0ZQo+ICsgKiBAY3J0YzogQ1JUQyB0byByZXNlcnZlIERQTExz IGZvcgo+ICAgKiBAZW5jb2RlcjogZW5jb2Rlcgo+ICAgKgo+IC0gKiBGaW5kIGFuIGFwcHJvcHJp YXRlIERQTEwgZm9yIHRoZSBnaXZlbiBDUlRDIGFuZCBlbmNvZGVyIGNvbWJpbmF0aW9uLiBBCj4g LSAqIHJlZmVyZW5jZSBmcm9tIHRoZSBAY3J0Y19zdGF0ZSB0byB0aGUgcmV0dXJuZWQgcGxsIGlz IHJlZ2lzdGVyZWQgaW4gdGhlCj4gLSAqIGF0b21pYyBzdGF0ZS4gVGhhdCBjb25maWd1cmF0aW9u IGlzIG1hZGUgZWZmZWN0aXZlIGJ5IGNhbGxpbmcKPiAtICogaW50ZWxfc2hhcmVkX2RwbGxfc3dh cF9zdGF0ZSgpLiBUaGUgcmVmZXJlbmNlIHNob3VsZCBiZSByZWxlYXNlZCBieSBjYWxsaW5nCj4g LSAqIGludGVsX3JlbGVhc2Vfc2hhcmVkX2RwbGwoKS4KPiArICogVGhpcyBmdW5jdGlvbiByZXNl cnZlcyBhbGwgcmVxdWlyZWQgRFBMTHMgZm9yIHRoZSBnaXZlbiBDUlRDIGFuZCBlbmNvZGVyCj4g KyAqIGNvbWJpbmF0aW9uIGluIHRoZSBjdXJyZW50IGF0b21pYyBjb21taXQgQHN0YXRlIGFuZCB0 aGUgbmV3IEBjcnRjIGF0b21pYwo+ICsgKiBzdGF0ZS4KPiArICoKPiArICogVGhlIG5ldyBjb25m aWd1cmF0aW9uIGluIHRoZSBhdG9taWMgY29tbWl0IEBzdGF0ZSBpcyBtYWRlIGVmZmVjdGl2ZSBi eQo+ICsgKiBjYWxsaW5nIGludGVsX3NoYXJlZF9kcGxsX3N3YXBfc3RhdGUoKS4KPiArICoKPiAr ICogVGhlIHJlc2VydmVkIERQTExzIHNob3VsZCBiZSByZWxlYXNlZCBieSBjYWxsaW5nCj4gKyAq IGludGVsX3JlbGVhc2Vfc2hhcmVkX2RwbGxzKCkuCj4gICAqCj4gICAqIFJldHVybnM6Cj4gLSAq IEEgc2hhcmVkIERQTEwgdG8gYmUgdXNlZCBieSBAY3J0Y19zdGF0ZSBhbmQgQGVuY29kZXIuCj4g KyAqIFRydWUgaWYgYWxsIHJlcXVpcmVkIERQTExzIHdlcmUgc3VjY2Vzc2Z1bGx5IHJlc2VydmVk Lgo+ICAgKi8KPiAtc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICoKPiAtaW50ZWxfZ2V0X3NoYXJl ZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+IC0JCSAgICAgIHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICtib29sIGludGVsX3Jlc2VydmVfc2hhcmVk X2RwbGxzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkJc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAg ewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0 YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfZHBs bF9tZ3IgKmRwbGxfbWdyID0gZGV2X3ByaXYtPmRwbGxfbWdyOwo+ICAKPiAgCWlmIChXQVJOX09O KCFkcGxsX21ncikpCj4gLQkJcmV0dXJuIE5VTEw7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICAKPiAt CXJldHVybiBkcGxsX21nci0+Z2V0X2RwbGwoY3J0Y19zdGF0ZSwgZW5jb2Rlcik7Cj4gKwlyZXR1 cm4gZHBsbF9tZ3ItPmdldF9kcGxscyhzdGF0ZSwgY3J0YywgZW5jb2Rlcik7Cj4gIH0KPiAgCj4g IC8qKgo+IC0gKiBpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxsIC0gZW5kIHVzZSBvZiBEUExMIGJ5 IENSVEMgaW4gYXRvbWljIHN0YXRlCj4gLSAqIEBkcGxsOiBkcGxsIGluIHVzZSBieSBAY3J0Ywo+ IC0gKiBAY3J0YzogY3J0Ywo+ICsgKiBpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxscyAtIGVuZCB1 c2Ugb2YgRFBMTHMgYnkgQ1JUQyBpbiBhdG9taWMgc3RhdGUKPiAgICogQHN0YXRlOiBhdG9taWMg c3RhdGUKPiArICogQGNydGM6IGNydGMgZnJvbSB3aGljaCB0aGUgRFBMTHMgYXJlIHRvIGJlIHJl bGVhc2VkCj4gICAqCj4gLSAqIFRoaXMgZnVuY3Rpb24gcmVsZWFzZXMgdGhlIHJlZmVyZW5jZSBm cm9tIEBjcnRjIHRvIEBkcGxsIGZyb20gdGhlCj4gLSAqIGF0b21pYyBAc3RhdGUuIFRoZSBuZXcg Y29uZmlndXJhdGlvbiBpcyBtYWRlIGVmZmVjdGl2ZSBieSBjYWxsaW5nCj4gLSAqIGludGVsX3No YXJlZF9kcGxsX3N3YXBfc3RhdGUoKS4KPiArICogVGhpcyBmdW5jdGlvbiByZWxlYXNlcyBhbGwg RFBMTHMgcmVzZXJ2ZWQgYnkgaW50ZWxfcmVzZXJ2ZV9zaGFyZWRfZHBsbHMoKQo+ICsgKiBmcm9t IHRoZSBjdXJyZW50IGF0b21pYyBjb21taXQgQHN0YXRlIGFuZCB0aGUgb2xkIEBjcnRjIGF0b21p YyBzdGF0ZS4KPiArICoKPiArICogVGhlIG5ldyBjb25maWd1cmF0aW9uIGluIHRoZSBhdG9taWMg Y29tbWl0IEBzdGF0ZSBpcyBtYWRlIGVmZmVjdGl2ZSBieQo+ICsgKiBjYWxsaW5nIGludGVsX3No YXJlZF9kcGxsX3N3YXBfc3RhdGUoKS4KPiAgICovCj4gLXZvaWQgaW50ZWxfcmVsZWFzZV9zaGFy ZWRfZHBsbChzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmRwbGwsCj4gLQkJCSAgICAgICBzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAtCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSkKPiArdm9pZCBpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxscyhzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICB7 Cj4gLQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfc3RhdGUgKnNoYXJlZF9kcGxsX3N0YXRlOwo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFz ZS5kZXYpOwo+ICsJY29uc3Qgc3RydWN0IGludGVsX2RwbGxfbWdyICpkcGxsX21nciA9IGRldl9w cml2LT5kcGxsX21ncjsKPiArCj4gKwkvKgo+ICsJICogRklYTUU6IHRoaXMgZnVuY3Rpb24gaXMg Y2FsbGVkIGZvciBldmVyeSBwbGF0Zm9ybSBoYXZpbmcgYQo+ICsJICogY29tcHV0ZV9jbG9jayBo b29rLCBldmVuIHRob3VnaCB0aGUgcGxhdGZvcm0gZG9lc24ndCB5ZXQgc3VwcG9ydAo+ICsJICog dGhlIHNoYXJlZCBEUExMIGZyYW1ld29yayBhbmQgaW50ZWxfcmVzZXJ2ZV9zaGFyZWRfZHBsbHMo KSBpcyBub3QKPiArCSAqIGNhbGxlZCBvbiB0aG9zZS4KPiArCSAqLwo+ICsJaWYgKCFkcGxsX21n cikKPiArCQlyZXR1cm47Cj4gIAo+IC0Jc2hhcmVkX2RwbGxfc3RhdGUgPSBpbnRlbF9hdG9taWNf Z2V0X3NoYXJlZF9kcGxsX3N0YXRlKHN0YXRlKTsKPiAtCXNoYXJlZF9kcGxsX3N0YXRlW2RwbGwt PmluZm8tPmlkXS5jcnRjX21hc2sgJj0gfigxIDw8IGNydGMtPnBpcGUpOwo+ICsJZHBsbF9tZ3It PnB1dF9kcGxscyhzdGF0ZSwgY3J0Yyk7Cj4gIH0KPiAgCj4gIC8qKgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmgKPiBpbmRleCBkMDU3MDQxNGYzZDEu LjE2ZGRhYjEzODU3NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RwbGxfbWdyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2RwbGxfbWdyLmgKPiBAQCAtMzksNiArMzksNyBAQAo+ICBzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZTsKPiAgc3RydWN0IGRybV9kZXZpY2U7Cj4gIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ ICtzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlOwo+ICBzdHJ1Y3QgaW50ZWxfY3J0YzsKPiAgc3Ry dWN0IGludGVsX2NydGNfc3RhdGU7Cj4gIHN0cnVjdCBpbnRlbF9lbmNvZGVyOwo+IEBAIC0xOTUs NyArMTk2LDcgQEAgc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUgewo+ICAgKiBmdXR1cmUgc3Rh dGUgd2hpY2ggd291bGQgYmUgYXBwbGllZCBieSBhbiBhdG9taWMgbW9kZSBzZXQgKHN0b3JlZCBp bgo+ICAgKiBhIHN0cnVjdCAmaW50ZWxfYXRvbWljX3N0YXRlKS4KPiAgICoKPiAtICogU2VlIGFs c28gaW50ZWxfZ2V0X3NoYXJlZF9kcGxsKCkgYW5kIGludGVsX3JlbGVhc2Vfc2hhcmVkX2RwbGwo KS4KPiArICogU2VlIGFsc28gaW50ZWxfcmVzZXJ2ZV9zaGFyZWRfZHBsbHMoKSBhbmQgaW50ZWxf cmVsZWFzZV9zaGFyZWRfZHBsbHMoKS4KPiAgICovCj4gIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBs bF9zdGF0ZSB7Cj4gIAkvKioKPiBAQCAtMzMxLDExICszMzIsMTEgQEAgdm9pZCBhc3NlcnRfc2hh cmVkX2RwbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQlib29sIHN0 YXRlKTsKPiAgI2RlZmluZSBhc3NlcnRfc2hhcmVkX2RwbGxfZW5hYmxlZChkLCBwKSBhc3NlcnRf c2hhcmVkX2RwbGwoZCwgcCwgdHJ1ZSkKPiAgI2RlZmluZSBhc3NlcnRfc2hhcmVkX2RwbGxfZGlz YWJsZWQoZCwgcCkgYXNzZXJ0X3NoYXJlZF9kcGxsKGQsIHAsIGZhbHNlKQo+IC1zdHJ1Y3QgaW50 ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dldF9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqc3RhdGUsCj4gLQkJCQkJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKTsKPiAt dm9pZCBpbnRlbF9yZWxlYXNlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAq ZHBsbCwKPiAtCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+IC0JCQkgICAgICAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiArYm9vbCBpbnRlbF9yZXNlcnZlX3No YXJlZF9kcGxscyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+ICsJCQkJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIp Owo+ICt2b2lkIGludGVsX3JlbGVhc2Vfc2hhcmVkX2RwbGxzKHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKnN0YXRlLAo+ICsJCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ICB2b2lkIGlu dGVsX3ByZXBhcmVfc2hhcmVkX2RwbGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpOwo+ICB2b2lkIGludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gIHZvaWQgaW50ZWxfZGlzYWJsZV9zaGFy ZWRfZHBsbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gLS0g Cj4gMi4xNy4xCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==