From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [CI 11/12] drm/i915: Perform automated conversions for plane uapi/hw split, base -> uapi. Date: Tue, 29 Oct 2019 17:43:23 +0200 Message-ID: <20191029154323.GB1208@intel.com> References: <20191029072229.27092-1-maarten.lankhorst@linux.intel.com> <20191029072229.27092-11-maarten.lankhorst@linux.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 0F4256E42D for ; Tue, 29 Oct 2019 15:43:28 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191029072229.27092-11-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBPY3QgMjksIDIwMTkgYXQgMDg6MjI6MjhBTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU3BsaXQgdXAgcGxhbmVfc3RhdGUtPmJhc2UgdG8gdWFwaS4gVGhpcyBpcyBk b25lIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGF0Y2gsCj4gcmFuIGFmdGVyIHRoZSBwcmV2aW91cyBj b21taXQgdGhhdCBzcGxpdHMgb3V0IGFueSBodyByZWZlcmVuY2VzOgo+IAo+IEBACj4gc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpUOwo+IGlkZW50aWZpZXIgeDsKPiBAQAo+IC1ULT5iYXNlLngK PiArVC0+dWFwaS54Cj4gCj4gQEAKPiBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKlQ7Cj4gQEAK PiAtVC0+YmFzZQo+ICtULT51YXBpCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9y c3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYyAgIHwgICAyICstCj4gIC4uLi9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8ICAzMiArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAyOTggKysrKysrKysrLS0t LS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMgICAgICB8 ICAxMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYyAg fCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyAg IHwgMTM2ICsrKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAg ICAgICAgICB8ICA1NyArKy0tCj4gIDcgZmlsZXMgY2hhbmdlZCwgMjcxIGluc2VydGlvbnMoKyks IDI2OCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYXRvbWljLmMKPiBpbmRleCBmYjQxMjZkZTk5NGQuLmNiNWM5MTRmNjI3ZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwo+IEBAIC0yOTksNyAr Mjk5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcihzdHJ1Y3QgaW50 ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGEKPiAgCWlmIChwbGFuZV9zdGF0ZSAmJiBw bGFuZV9zdGF0ZS0+aHcuZmIgJiYKPiAgCSAgICBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1hdC0+ aXNfeXV2ICYmCj4gIAkgICAgcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQtPm51bV9wbGFuZXMg PiAxKSB7Cj4gLQkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJCWlmIChJU19HRU4o ZGV2X3ByaXYsIDkpICYmCj4gIAkJICAgICFJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+ICAJ CQltb2RlID0gU0tMX1BTX1NDQUxFUl9NT0RFX05WMTI7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5jCj4gaW5kZXggY2FjMWQ2YWU2N2Y2 Li5iYTdkNTQyMWY3OTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiBAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lX2FsbG9jKHZvaWQpCj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7Cj4gIAl9Cj4gIAo+IC0JX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9yZXNldCgmcGxhbmUt PmJhc2UsICZwbGFuZV9zdGF0ZS0+YmFzZSk7Cj4gKwlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5l X3Jlc2V0KCZwbGFuZS0+YmFzZSwgJnBsYW5lX3N0YXRlLT51YXBpKTsKPiAgCXBsYW5lX3N0YXRl LT5zY2FsZXJfaWQgPSAtMTsKPiAgCj4gIAlyZXR1cm4gcGxhbmU7Cj4gQEAgLTg4LDEyICs4OCwx MiBAQCBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp Cj4gIAlpZiAoIWludGVsX3N0YXRlKQo+ICAJCXJldHVybiBOVUxMOwo+ICAKPiAtCV9fZHJtX2F0 b21pY19oZWxwZXJfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHBsYW5lLCAmaW50ZWxfc3RhdGUtPmJh c2UpOwo+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUs ICZpbnRlbF9zdGF0ZS0+dWFwaSk7Cj4gIAo+ICAJaW50ZWxfc3RhdGUtPnZtYSA9IE5VTEw7Cj4g IAlpbnRlbF9zdGF0ZS0+ZmxhZ3MgPSAwOwo+ICAKPiAtCXJldHVybiAmaW50ZWxfc3RhdGUtPmJh c2U7Cj4gKwlyZXR1cm4gJmludGVsX3N0YXRlLT51YXBpOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAt MTExLDcgKzExMSw3IEBAIGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0gdG9f aW50ZWxfcGxhbmVfc3RhdGUoc3RhdGUpOwo+ICAJV0FSTl9PTihwbGFuZV9zdGF0ZS0+dm1hKTsK PiAgCj4gLQlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoJnBsYW5lX3N0 YXRlLT5iYXNlKTsKPiArCV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSgm cGxhbmVfc3RhdGUtPnVhcGkpOwo+ICAJa2ZyZWUocGxhbmVfc3RhdGUpOwo+ICB9Cj4gIAo+IEBA IC0xMjEsNyArMTIxLDcgQEAgdW5zaWduZWQgaW50IGludGVsX3BsYW5lX2RhdGFfcmF0ZShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQgaW50 IGNwcDsKPiAgCj4gLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAoIXBs YW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJY3BwID0gZmIt PmZvcm1hdC0+Y3BwWzBdOwo+IEBAIC0xNDQsMTAgKzE0NCwxMCBAQCBib29sIGludGVsX3BsYW5l X2NhbGNfbWluX2NkY2xrKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYp Owo+ICAJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9Cj4gIAkJ aW50ZWxfYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwbGFuZV9zdGF0ZS0+YmFzZS5jcnRj KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwbGFuZV9zdGF0 ZS0+dWFwaS5jcnRjKTsKClRoaXMgbG9va3Mgd3JvbmcuIFNob3VsZCBiZSBody5jcnRjIEkgYmVs aWV2ZS4KCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAgCj4gLQlp ZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgfHwgIXBsYW5lLT5taW5fY2RjbGspCj4gKwlp ZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgfHwgIXBsYW5lLT5taW5fY2RjbGspCgpOb3Qg ZHVwbGljYXRpbmcgdmlzaWJsZSxzcmMsZHN0IGxlYWRzIHRvIHNsaWdodGx5IGNvbmZ1c2luZyBs b29raW5nCmNvZGUuIEkgd29uZGVyIGlmIGl0IHdvdWxkbid0IGJlIGJldHRlciB0byBqdXN0IGR1 cGxpY2F0ZSB0aG9zZSBhcwp3ZWxsLi4uCgo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAljcnRj X3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4g QEAgLTE4MSw3ICsxODEsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3Rh dGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJCQkJCWNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLAo+ICAJCQkJCXN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnBs YW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShuZXdf cGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBuZXdfcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTE5 MCw3ICsxOTAsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJbmV3X2NydGNfc3RhdGUt PmM4X3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7Cj4gIAluZXdfY3J0Y19zdGF0ZS0+ZGF0YV9y YXRlW3BsYW5lLT5pZF0gPSAwOwo+ICAJbmV3X2NydGNfc3RhdGUtPm1pbl9jZGNsa1twbGFuZS0+ aWRdID0gMDsKPiAtCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gZmFsc2U7Cj4gKwlu ZXdfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSA9IGZhbHNlOwo+ICAKPiAgCWlmICghbmV3X3Bs YW5lX3N0YXRlLT5ody5jcnRjICYmICFvbGRfcGxhbmVfc3RhdGUtPmh3LmNydGMpCj4gIAkJcmV0 dXJuIDA7Cj4gQEAgLTIwMCwxOCArMjAwLDE4IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hl Y2tfd2l0aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfCj4g IAkJcmV0dXJuIHJldDsKPiAgCj4gIAkvKiBGSVhNRSBwcmUtZzR4IGRvbid0IHdvcmsgbGlrZSB0 aGlzICovCj4gLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAobmV3 X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJbmV3X2NydGNfc3RhdGUtPmFjdGl2ZV9w bGFuZXMgfD0gQklUKHBsYW5lLT5pZCk7Cj4gIAo+IC0JaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFz ZS52aXNpYmxlICYmCj4gKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgJiYKPiAg CSAgICBkcm1fZm9ybWF0X2luZm9faXNfeXV2X3NlbWlwbGFuYXIoZmItPmZvcm1hdCkpCj4gIAkJ bmV3X2NydGNfc3RhdGUtPm52MTJfcGxhbmVzIHw9IEJJVChwbGFuZS0+aWQpOwo+ICAKPiAtCWlm IChuZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ICsJaWYgKG5ld19wbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlICYmCj4gIAkgICAgZmItPmZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JN QVRfQzgpCj4gIAkJbmV3X2NydGNfc3RhdGUtPmM4X3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsK PiAgCj4gLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgfHwgb2xkX3BsYW5lX3N0 YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUg fHwgb2xkX3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJbmV3X2NydGNfc3RhdGUtPnVw ZGF0ZV9wbGFuZXMgfD0gQklUKHBsYW5lLT5pZCk7Cj4gIAo+ICAJbmV3X2NydGNfc3RhdGUtPmRh dGFfcmF0ZVtwbGFuZS0+aWRdID0KPiBAQCAtMjQ2LDcgKzI0Niw3IEBAIGludCBpbnRlbF9wbGFu ZV9hdG9taWNfY2hlY2soc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAljb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gIAlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gIAo+IC0JbmV3X3BsYW5lX3N0YXRlLT5i YXNlLnZpc2libGUgPSBmYWxzZTsKPiArCW5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0g ZmFsc2U7Cj4gIAlpZiAoIWNydGMpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IEBAIC0zNTUsNyArMzU1 LDcgQEAgdm9pZCBza2xfdXBkYXRlX3BsYW5lc19vbl9jcnRjKHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKnN0YXRlLAo+ICAJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0 YXRlID0KPiAgCQkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5l KTsKPiAgCj4gLQkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSB7Cj4gKwkJaWYg KG5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSB7Cj4gIAkJCWludGVsX3VwZGF0ZV9wbGFu ZShwbGFuZSwgbmV3X2NydGNfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4gIAkJfSBlbHNlIGlm IChuZXdfcGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSkgewo+ICAJCQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKm1hc3RlciA9Cj4gQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIGk5eHhfdXBkYXRlX3BsYW5l c19vbl9jcnRjKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJCSAgICAhKHVw ZGF0ZV9tYXNrICYgQklUKHBsYW5lLT5pZCkpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJaWYg KG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChuZXdfcGxhbmVfc3RhdGUt PnVhcGkudmlzaWJsZSkKPiAgCQkJaW50ZWxfdXBkYXRlX3BsYW5lKHBsYW5lLCBuZXdfY3J0Y19z dGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsKPiAgCQllbHNlCj4gIAkJCWludGVsX2Rpc2FibGVfcGxh bmUocGxhbmUsIG5ld19jcnRjX3N0YXRlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGZiYmU2Zjc1MjcxNi4uOTFhMDU5ZTVmZGNiIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBA QCAtMjA4Miw3ICsyMDgyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9zdXJmX2FsaWdu bWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgCj4gIHN0YXRpYyBib29s IGludGVsX3BsYW5lX3VzZXNfZmVuY2UoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7 Cj4gIAo+ICAJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPCA0IHx8Cj4gQEAgLTIzOTEsNyAr MjM5MSw3IEBAIHN0YXRpYyB1MzIgaW50ZWxfcGxhbmVfY29tcHV0ZV9hbGlnbmVkX29mZnNldChp bnQgKngsIGludCAqeSwKPiAgCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnN0YXRlLAo+ICAJCQkJCSAgICAgIGludCBjb2xvcl9wbGFuZSkKPiAgewo+IC0Jc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHN0YXRlLT5iYXNlLnBs YW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShzdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGludGVsX3BsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlv biA9IHN0YXRlLT5ody5yb3RhdGlvbjsKPiBAQCAtMjU3OSw3ICsyNTc5LDcgQEAgaW50ZWxfZmJf c3RyaWRlX2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNv bG9yX3BsYW5lKQo+ICAKPiAgYm9vbCBpbnRlbF9wbGFuZV9jYW5fcmVtYXAoY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAr CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCBpOwo+IEBAIC0yNjE5LDcgKzI2MTksNyBA QCBib29sIGludGVsX3BsYW5lX2Nhbl9yZW1hcChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQo+ICAKPiAgc3RhdGljIGJvb2wgaW50ZWxfcGxhbmVfbmVlZHNfcmVt YXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0J c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5i YXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9 IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCXUzMiBzdHJpZGUsIG1heF9zdHJpZGU7Cj4g QEAgLTI2MjgsNyArMjYyOCw3IEBAIHN0YXRpYyBib29sIGludGVsX3BsYW5lX25lZWRzX3JlbWFw KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAkgKiBObyBy ZW1hcHBpbmcgZm9yIGludmlzaWJsZSBwbGFuZXMgc2luY2Ugd2UgZG9uJ3QgaGF2ZQo+ICAJICog YW4gYWN0dWFsIHNvdXJjZSB2aWV3cG9ydCB0byByZW1hcC4KPiAgCSAqLwo+IC0JaWYgKCFwbGFu ZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxl KQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlpZiAoIWludGVsX3BsYW5lX2Nhbl9yZW1hcChw bGFuZV9zdGF0ZSkpCj4gQEAgLTI4MTEsNyArMjgxMSw3IEBAIHN0YXRpYyB2b2lkCj4gIGludGVs X3BsYW5lX3JlbWFwX2d0dChzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUo cGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZS0+ZGV2KTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmh3LmZiOwo+ICAJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRv X2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKPiAgCXN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvICpp bmZvID0gJnBsYW5lX3N0YXRlLT52aWV3LnJvdGF0ZWQ7Cj4gQEAgLTI4MjYsMjAgKzI4MjYsMjAg QEAgaW50ZWxfcGxhbmVfcmVtYXBfZ3R0KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIAlwbGFuZV9zdGF0ZS0+dmlldy50eXBlID0gZHJtX3JvdGF0aW9uXzkwX29yXzI3 MChyb3RhdGlvbikgPwo+ICAJCUk5MTVfR0dUVF9WSUVXX1JPVEFURUQgOiBJOTE1X0dHVFRfVklF V19SRU1BUFBFRDsKPiAgCj4gLQlzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAx NjsKPiAtCXNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2Owo+IC0Jc3JjX3cg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAtCXNyY19o ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICsJc3Jj X3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7Cj4gKwlzcmNfeSA9IHBsYW5lX3N0 YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKPiArCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCj4gIAlXQVJOX09OKGlzX2Njc19tb2RpZmll cihmYi0+bW9kaWZpZXIpKTsKPiAgCj4gIAkvKiBNYWtlIHNyYyBjb29yZGluYXRlcyByZWxhdGl2 ZSB0byB0aGUgdmlld3BvcnQgKi8KPiAtCWRybV9yZWN0X3RyYW5zbGF0ZSgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjLAo+ICsJZHJtX3JlY3RfdHJhbnNsYXRlKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMs Cj4gIAkJCSAgIC0oc3JjX3ggPDwgMTYpLCAtKHNyY195IDw8IDE2KSk7Cj4gIAo+ICAJLyogUm90 YXRlIHNyYyBjb29yZGluYXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2aWV3ICovCj4gIAlpZiAo ZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCj4gLQkJZHJtX3JlY3Rfcm90YXRlKCZw bGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwkJZHJtX3JlY3Rfcm90YXRlKCZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmMsCj4gIAkJCQlzcmNfdyA8PCAxNiwgc3JjX2ggPDwgMTYsCj4gIAkJCQlEUk1fTU9E RV9ST1RBVEVfMjcwKTsKPiAgCj4gQEAgLTI5NTksNyArMjk1OSw3IEBAIGludGVsX3BsYW5lX2Nv bXB1dGVfZ3R0KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAo+ICAJ LyogUm90YXRlIHNyYyBjb29yZGluYXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2aWV3ICovCj4g IAlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCj4gLQkJZHJtX3JlY3Rfcm90 YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwkJZHJtX3JlY3Rfcm90YXRlKCZwbGFuZV9z dGF0ZS0+dWFwaS5zcmMsCj4gIAkJCQlmYi0+YmFzZS53aWR0aCA8PCAxNiwgZmItPmJhc2UuaGVp Z2h0IDw8IDE2LAo+ICAJCQkJRFJNX01PREVfUk9UQVRFXzI3MCk7Cj4gIAo+IEBAIC0zMTI3LDkg KzMxMjcsOSBAQCBpbnRlbF9zZXRfcGxhbmVfdmlzaWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSwKPiAgCQkJYm9vbCB2aXNpYmxlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l KTsKPiAgCj4gLQlwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gdmlzaWJsZTsKPiArCXBsYW5l X3N0YXRlLT51YXBpLnZpc2libGUgPSB2aXNpYmxlOwo+ICAKPiAgCWlmICh2aXNpYmxlKQo+ICAJ CWNydGNfc3RhdGUtPnVhcGkucGxhbmVfbWFzayB8PSBkcm1fcGxhbmVfbWFzaygmcGxhbmUtPmJh c2UpOwo+IEBAIC0zMjc1LDggKzMyNzUsOCBAQCBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2Jq KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJcGxhbmVfc3RhdGUtPmNydGNfdyA9 IGZiLT53aWR0aDsKPiAgCXBsYW5lX3N0YXRlLT5jcnRjX2ggPSBmYi0+aGVpZ2h0Owo+ICAKPiAt CWludGVsX3N0YXRlLT5iYXNlLnNyYyA9IGRybV9wbGFuZV9zdGF0ZV9zcmMocGxhbmVfc3RhdGUp Owo+IC0JaW50ZWxfc3RhdGUtPmJhc2UuZHN0ID0gZHJtX3BsYW5lX3N0YXRlX2Rlc3QocGxhbmVf c3RhdGUpOwo+ICsJaW50ZWxfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYyhw bGFuZV9zdGF0ZSk7Cj4gKwlpbnRlbF9zdGF0ZS0+dWFwaS5kc3QgPSBkcm1fcGxhbmVfc3RhdGVf ZGVzdChwbGFuZV9zdGF0ZSk7Cj4gIAo+ICAJaWYgKHBsYW5lX2NvbmZpZy0+dGlsaW5nKQo+ICAJ CWRldl9wcml2LT5wcmVzZXJ2ZV9iaW9zX3N3aXp6bGUgPSB0cnVlOwo+IEBAIC0zNDExLDEzICsz NDExLDEzIEBAIHN0YXRpYyBib29sIHNrbF9jaGVja19tYWluX2Njc19jb29yZGluYXRlcyhzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlCj4gIAo+ICBzdGF0aWMgaW50IHNrbF9j aGVja19tYWluX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK PiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVu c2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAtCWludCB4 ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2Owo+IC0JaW50IHkgPSBwbGFuZV9zdGF0 ZS0+YmFzZS5zcmMueTEgPj4gMTY7Cj4gLQlpbnQgdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0JaW50IGggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwlpbnQgeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNy Yy54MSA+PiAxNjsKPiArCWludCB5ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2Owo+ ICsJaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsK PiArCWludCBoID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2 Owo+ICAJaW50IG1heF93aWR0aDsKPiAgCWludCBtYXhfaGVpZ2h0Owo+ICAJdTMyIGFsaWdubWVu dCwgb2Zmc2V0LCBhdXhfb2Zmc2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNl dDsKPiBAQCAtMzUwMCw3ICszNTAwLDcgQEAgc3RhdGljIGludCBza2xfY2hlY2tfbWFpbl9zdXJm YWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAkgKiBQdXQgdGhl IGZpbmFsIGNvb3JkaW5hdGVzIGJhY2sgc28gdGhhdCB0aGUgc3JjCj4gIAkgKiBjb29yZGluYXRl IGNoZWNrcyB3aWxsIHNlZSB0aGUgcmlnaHQgdmFsdWVzLgo+ICAJICovCj4gLQlkcm1fcmVjdF90 cmFuc2xhdGVfdG8oJnBsYW5lX3N0YXRlLT5iYXNlLnNyYywKPiArCWRybV9yZWN0X3RyYW5zbGF0 ZV90bygmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAo+ICAJCQkgICAgICB4IDw8IDE2LCB5IDw8IDE2 KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtMzUxMiwxMCArMzUxMiwxMCBAQCBzdGF0aWMgaW50 IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCj4gIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90 YXRpb247Cj4gIAlpbnQgbWF4X3dpZHRoID0gc2tsX21heF9wbGFuZV93aWR0aChmYiwgMSwgcm90 YXRpb24pOwo+ICAJaW50IG1heF9oZWlnaHQgPSA0MDk2Owo+IC0JaW50IHggPSBwbGFuZV9zdGF0 ZS0+YmFzZS5zcmMueDEgPj4gMTc7Cj4gLQlpbnQgeSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55 MSA+PiAxNzsKPiAtCWludCB3ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNy YykgPj4gMTc7Cj4gLQlpbnQgaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uu c3JjKSA+PiAxNzsKPiArCWludCB4ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngxID4+IDE3Owo+ ICsJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTc7Cj4gKwlpbnQgdyA9IGRy bV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE3Owo+ICsJaW50IGggPSBk cm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTc7Cj4gIAl1MzIgb2Zm c2V0Owo+ICAKPiAgCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgcGxhbmVfc3RhdGUsIDEp Owo+IEBAIC0zNTM4LDggKzM1MzgsOCBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9z dXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHN0YXRpYyBp bnQgc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5ody5mYjsKPiAtCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54 MSA+PiAxNjsKPiAtCWludCBzcmNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsK PiArCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNjsKPiArCWludCBz cmNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKPiAgCWludCBoc3ViID0gZmIt PmZvcm1hdC0+aHN1YjsKPiAgCWludCB2c3ViID0gZmItPmZvcm1hdC0+dnN1YjsKPiAgCWludCB4 ID0gc3JjX3ggLyBoc3ViOwo+IEBAIC0zNTY1LDcgKzM1NjUsNyBAQCBpbnQgc2tsX2NoZWNrX3Bs YW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCWlm IChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJcmV0dXJuIDA7 Cj4gIAo+ICAJLyoKPiBAQCAtMzY4OSw3ICszNjg5LDcgQEAgc3RhdGljIHUzMiBpOXh4X3BsYW5l X2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICBj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwo+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0 aW9uOwo+ICAJdTMyIGRzcGNudHI7Cj4gQEAgLTM3NDYsNyArMzc0Niw3IEBAIHN0YXRpYyB1MzIg aTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIGludCBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRvX2k5 MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCBzcmNfeCwgc3JjX3ks IHNyY193Owo+ICAJdTMyIG9mZnNldDsKPiBAQCAtMzc1NiwxMiArMzc1NiwxMiBAQCBpbnQgaTl4 eF9jaGVja19wbGFuZV9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0 ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJ CXJldHVybiAwOwo+ICAKPiAtCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5i YXNlLnNyYykgPj4gMTY7Cj4gLQlzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAx NjsKPiAtCXNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2Owo+ICsJc3JjX3cg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCXNyY194 ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngxID4+IDE2Owo+ICsJc3JjX3kgPSBwbGFuZV9zdGF0 ZS0+dWFwaS5zcmMueTEgPj4gMTY7Cj4gIAo+ICAJLyogVW5kb2N1bWVudGVkIGhhcmR3YXJlIGxp bWl0IG9uIGk5NjUvZzR4L3Zsdi9jaHYgKi8KPiAgCWlmIChIQVNfR01DSChkZXZfcHJpdikgJiYg ZmItPmZvcm1hdC0+Y3BwWzBdID09IDggJiYgc3JjX3cgPiAyMDQ4KQo+IEBAIC0zNzc5LDE0ICsz Nzc5LDE0IEBAIGludCBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCSAqIFB1dCB0aGUgZmluYWwgY29vcmRpbmF0ZXMgYmFj ayBzbyB0aGF0IHRoZSBzcmMKPiAgCSAqIGNvb3JkaW5hdGUgY2hlY2tzIHdpbGwgc2VlIHRoZSBy aWdodCB2YWx1ZXMuCj4gIAkgKi8KPiAtCWRybV9yZWN0X3RyYW5zbGF0ZV90bygmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjLAo+ICsJZHJtX3JlY3RfdHJhbnNsYXRlX3RvKCZwbGFuZV9zdGF0ZS0+dWFw aS5zcmMsCj4gIAkJCSAgICAgIHNyY194IDw8IDE2LCBzcmNfeSA8PCAxNik7Cj4gIAo+ICAJLyog SFNXL0JEVyBkbyB0aGlzIGF1dG9tYWdpY2FsbHkgaW4gaGFyZHdhcmUgKi8KPiAgCWlmICghSVNf SEFTV0VMTChkZXZfcHJpdikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAgCQl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gLQkJaW50IHNy Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQkJ aW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2 Owo+ICsJCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE2Owo+ICsJCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVh cGkuc3JjKSA+PiAxNjsKPiAgCj4gIAkJaWYgKHJvdGF0aW9uICYgRFJNX01PREVfUk9UQVRFXzE4 MCkgewo+ICAJCQlzcmNfeCArPSBzcmNfdyAtIDE7Cj4gQEAgLTM4MjMsMTQgKzM4MjMsMTQgQEAg c3RhdGljIGludAo+ICBpOXh4X3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCWludCByZXQ7Cj4gIAo+ICAJ cmV0ID0gY2h2X3BsYW5lX2NoZWNrX3JvdGF0aW9uKHBsYW5lX3N0YXRlKTsKPiAgCWlmIChyZXQp Cj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19w bGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBl cl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgJmNydGNf c3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ICAJ CQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiBAQCAtMzg0Myw3ICszODQzLDcg QEAgaTl4eF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpZiAoIXBsYW5lX3N0YXRlLT5i YXNlLnZpc2libGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJcmV0 dXJuIDA7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5hdGVzKHBs YW5lX3N0YXRlKTsKPiBAQCAtMzg2NCwxMCArMzg2NCwxMCBAQCBzdGF0aWMgdm9pZCBpOXh4X3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJdTMyIGxpbmVhcl9vZmZz ZXQ7Cj4gIAlpbnQgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54Owo+ICAJaW50IHkg PSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKPiAtCWludCBjcnRjX3ggPSBwbGFuZV9z dGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0 LnkxOwo+IC0JaW50IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5k c3QpOwo+IC0JaW50IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uu ZHN0KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7Cj4gKwlpbnQg Y3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ICsJaW50IGNydGNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJaW50IGNydGNfaCA9IGRybV9y ZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCXVuc2lnbmVkIGxvbmcgaXJx ZmxhZ3M7Cj4gIAl1MzIgZHNwYWRkcl9vZmZzZXQ7Cj4gIAl1MzIgZHNwY250cjsKPiBAQCAtNDIy MSw3ICs0MjIxLDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PQo+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkx NShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQgaW50IHJvdGF0 aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRl bF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiBAQCAtNDI3Nyw5 ICs0Mjc3LDkgQEAgdTMyIGdsa19wbGFuZV9jb2xvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiArCQl0b19p OTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJ c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51 YXBpLnBsYW5lKTsKPiAgCXUzMiBwbGFuZV9jb2xvcl9jdGwgPSAwOwo+ICAKPiAgCXBsYW5lX2Nv bG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9HQU1NQV9ESVNBQkxFOwo+IEBAIC01NjIzLDEx ICs1NjIzLDExIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfcGxhbmUoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgICBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3Bs YW5lID0KPiAtCQl0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwkJ dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9wbGFuZS0+YmFzZS5kZXYpOwo+ ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlp bnQgcmV0Owo+IC0JYm9vbCBmb3JjZV9kZXRhY2ggPSAhZmIgfHwgIXBsYW5lX3N0YXRlLT5iYXNl LnZpc2libGU7Cj4gKwlib29sIGZvcmNlX2RldGFjaCA9ICFmYiB8fCAhcGxhbmVfc3RhdGUtPnVh cGkudmlzaWJsZTsKPiAgCWJvb2wgbmVlZF9zY2FsZXIgPSBmYWxzZTsKPiAgCj4gIAkvKiBQcmUt Z2VuMTEgYW5kIFNEUiBwbGFuZXMgYWx3YXlzIG5lZWQgYSBzY2FsZXIgZm9yIHBsYW5hciBmb3Jt YXRzLiAqLwo+IEBAIC01NjM4LDEwICs1NjM4LDEwIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9z Y2FsZXJfcGxhbmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlyZXQg PSBza2xfdXBkYXRlX3NjYWxlcihjcnRjX3N0YXRlLCBmb3JjZV9kZXRhY2gsCj4gIAkJCQlkcm1f cGxhbmVfaW5kZXgoJmludGVsX3BsYW5lLT5iYXNlKSwKPiAgCQkJCSZwbGFuZV9zdGF0ZS0+c2Nh bGVyX2lkLAo+IC0JCQkJZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4g MTYsCj4gLQkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTYs Cj4gLQkJCQlkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKPiAtCQkJCWRy bV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKPiArCQkJCWRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2LAo+ICsJCQkJZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2LAo+ICsJCQkJZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT51YXBpLmRzdCksCj4gKwkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRl LT51YXBpLmRzdCksCj4gIAkJCQlmYiA/IGZiLT5mb3JtYXQgOiBOVUxMLCBuZWVkX3NjYWxlcik7 Cj4gIAo+ICAJaWYgKHJldCB8fCBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkIDwgMCkKPiBAQCAtNjA1 Nyw3ICs2MDU3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIAkJICogU28gZGlzYWJsZSB1bmRl cnJ1biByZXBvcnRpbmcgYmVmb3JlIGFsbCB0aGUgcGxhbmVzIGdldCBkaXNhYmxlZC4KPiAgCQkg Ki8KPiAgCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSAmJiBvbGRfcHJpbWFyeV9zdGF0ZS0+dmlz aWJsZSAmJgo+IC0JCSAgICAobW9kZXNldCB8fCAhbmV3X3ByaW1hcnlfc3RhdGUtPmJhc2Uudmlz aWJsZSkpCj4gKwkJICAgIChtb2Rlc2V0IHx8ICFuZXdfcHJpbWFyeV9zdGF0ZS0+dWFwaS52aXNp YmxlKSkKPiAgCQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJp diwgY3J0Yy0+cGlwZSwgZmFsc2UpOwo+ICAJfQo+ICAKPiBAQCAtNjE0NCw3ICs2MTQ0LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSwKPiAgCj4gIAkJaW50ZWxfZGlzYWJsZV9wbGFuZShwbGFuZSwgbmV3X2Ny dGNfc3RhdGUpOwo+ICAKPiAtCQlpZiAob2xkX3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4g KwkJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCQlmYl9iaXRzIHw9IHBs YW5lLT5mcm9udGJ1ZmZlcl9iaXQ7Cj4gIAl9Cj4gIAo+IEBAIC03MTUzLDcgKzcxNTMsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQo+ ICAJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7Cj4gIAo+IC0JCWlm IChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChwbGFuZV9zdGF0ZS0+dWFwaS52 aXNpYmxlKQo+ICAJCQlpbnRlbF9wbGFuZV9kaXNhYmxlX25vYXRvbWljKGludGVsX2NydGMsIHBs YW5lKTsKPiAgCX0KPiAgCj4gQEAgLTEwNzI4LDcgKzEwNzI4LDcgQEAgc3RhdGljIGJvb2wgaGFz d2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIHN0YXRpYyB1 MzIgaW50ZWxfY3Vyc29yX2Jhc2UoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAt CQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRvX2k5MTUocGxh bmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJdTMyIGJhc2U7Cj4gQEAgLTEw NzQzLDggKzEwNzQzLDggQEAgc3RhdGljIHUzMiBpbnRlbF9jdXJzb3JfYmFzZShjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAKPiAgc3RhdGljIHUzMiBpbnRl bF9jdXJzb3JfcG9zaXRpb24oY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKPiAgewo+IC0JaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQg eSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKPiArCWludCB4ID0gcGxhbmVfc3RhdGUtPnVh cGkuZHN0LngxOwo+ICsJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7Cj4gIAl1MzIg cG9zID0gMDsKPiAgCj4gIAlpZiAoeCA8IDApIHsKPiBAQCAtMTA3NjUsOSArMTA3NjUsOSBAQCBz dGF0aWMgdTMyIGludGVsX2N1cnNvcl9wb3NpdGlvbihjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQo+ICBzdGF0aWMgYm9vbCBpbnRlbF9jdXJzb3Jfc2l6ZV9vayhj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAljb25z dCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPQo+IC0JCSZwbGFuZV9zdGF0ZS0+YmFz ZS5wbGFuZS0+ZGV2LT5tb2RlX2NvbmZpZzsKPiAtCWludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JaW50IGhlaWdodCA9IGRybV9yZWN0X2hlaWdo dCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCQkmcGxhbmVfc3RhdGUtPnVhcGkucGxhbmUt PmRldi0+bW9kZV9jb25maWc7Cj4gKwlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPnVhcGkuZHN0KTsKPiArCWludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT51YXBpLmRzdCk7Cj4gIAo+ICAJcmV0dXJuIHdpZHRoID4gMCAmJiB3aWR0aCA8PSBj b25maWctPmN1cnNvcl93aWR0aCAmJgo+ICAJCWhlaWdodCA+IDAgJiYgaGVpZ2h0IDw9IGNvbmZp Zy0+Y3Vyc29yX2hlaWdodDsKPiBAQCAtMTA3NzYsNyArMTA3NzYsNyBAQCBzdGF0aWMgYm9vbCBp bnRlbF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICBzdGF0aWMgaW50IGludGVsX2N1cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ ZGV2KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ICAJdW5z aWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJaW50IHNy Y194LCBzcmNfeTsKPiAgCXUzMiBvZmZzZXQ7Cj4gQEAgLTEwNzg2LDExICsxMDc4NiwxMSBAQCBz dGF0aWMgaW50IGludGVsX2N1cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0J aWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFw aS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCXNyY194ID0gcGxhbmVfc3RhdGUtPmJh c2Uuc3JjLngxID4+IDE2Owo+IC0Jc3JjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4g MTY7Cj4gKwlzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNjsKPiArCXNyY195 ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2Owo+ICAKPiAgCWludGVsX2FkZF9mYl9v ZmZzZXRzKCZzcmNfeCwgJnNyY195LCBwbGFuZV9zdGF0ZSwgMCk7Cj4gIAlvZmZzZXQgPSBpbnRl bF9wbGFuZV9jb21wdXRlX2FsaWduZWRfb2Zmc2V0KCZzcmNfeCwgJnNyY195LAo+IEBAIC0xMDgw NSwxNCArMTA4MDUsMTQgQEAgc3RhdGljIGludCBpbnRlbF9jdXJzb3JfY2hlY2tfc3VyZmFjZShz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAJICogUHV0IHRoZSBmaW5h bCBjb29yZGluYXRlcyBiYWNrIHNvIHRoYXQgdGhlIHNyYwo+ICAJICogY29vcmRpbmF0ZSBjaGVj a3Mgd2lsbCBzZWUgdGhlIHJpZ2h0IHZhbHVlcy4KPiAgCSAqLwo+IC0JZHJtX3JlY3RfdHJhbnNs YXRlX3RvKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwlkcm1fcmVjdF90cmFuc2xhdGVfdG8o JnBsYW5lX3N0YXRlLT51YXBpLnNyYywKPiAgCQkJICAgICAgc3JjX3ggPDwgMTYsIHNyY195IDw8 IDE2KTsKPiAgCj4gIAkvKiBJTEsrIGRvIHRoaXMgYXV0b21hZ2ljYWxseSBpbiBoYXJkd2FyZSAq Lwo+ICAJaWYgKEhBU19HTUNIKGRldl9wcml2KSAmJiByb3RhdGlvbiAmIERSTV9NT0RFX1JPVEFU RV8xODApIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKPiAtCQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKPiAtCQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwkJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgo JnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwkJaW50IHNyY19oID0gZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICAKPiAgCQlvZmZzZXQgKz0g KHNyY19oICogc3JjX3cgLSAxKSAqIGZiLT5mb3JtYXQtPmNwcFswXTsKPiAgCX0KPiBAQCAtMTA4 MzUsNyArMTA4MzUsNyBAQCBzdGF0aWMgaW50IGludGVsX2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAg Cj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3Rh dGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgm cGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGksCj4gIAkJCQkJ CSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ICAJCQkJCQkgIERSTV9QTEFORV9IRUxQ RVJfTk9fU0NBTElORywKPiBAQCAtMTA4NDQsMTQgKzEwODQ0LDE0IEBAIHN0YXRpYyBpbnQgaW50 ZWxfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+ICAJLyogVXNlIHRoZSB1bmNsaXBwZWQgc3JjL2RzdCByZWN0YW5n bGVzLCB3aGljaCB3ZSBwcm9ncmFtIHRvIGh3ICovCj4gLQlwbGFuZV9zdGF0ZS0+YmFzZS5zcmMg PSBkcm1fcGxhbmVfc3RhdGVfc3JjKCZwbGFuZV9zdGF0ZS0+YmFzZSk7Cj4gLQlwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QgPSBkcm1fcGxhbmVfc3RhdGVfZGVzdCgmcGxhbmVfc3RhdGUtPmJhc2UpOwo+ ICsJcGxhbmVfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYygmcGxhbmVfc3Rh dGUtPnVhcGkpOwo+ICsJcGxhbmVfc3RhdGUtPnVhcGkuZHN0ID0gZHJtX3BsYW5lX3N0YXRlX2Rl c3QoJnBsYW5lX3N0YXRlLT51YXBpKTsKPiAgCj4gIAlyZXQgPSBpbnRlbF9jdXJzb3JfY2hlY2tf c3VyZmFjZShwbGFuZV9zdGF0ZSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+ IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+ dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9IGludGVsX3BsYW5lX2No ZWNrX3NyY19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSk7Cj4gQEAgLTEwODg5LDcgKzEwODg5LDcg QEAgc3RhdGljIHUzMiBpODQ1X2N1cnNvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gIAo+ICBzdGF0aWMgYm9vbCBpODQ1X2N1cnNvcl9zaXplX29rKGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCWludCB3 aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJaW50IHdp ZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gIAo+ICAJLyoK PiAgCSAqIDg0NWcvODY1ZyBhcmUgb25seSBsaW1pdGVkIGJ5IHRoZSB3aWR0aCBvZiB0aGVpciBj dXJzb3JzLAo+IEBAIC0xMDkxNSwxMiArMTA5MTUsMTIgQEAgc3RhdGljIGludCBpODQ1X2NoZWNr X2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCS8qIENoZWNr IGZvciB3aGljaCBjdXJzb3IgdHlwZXMgd2Ugc3VwcG9ydCAqLwo+ICAJaWYgKCFpODQ1X2N1cnNv cl9zaXplX29rKHBsYW5lX3N0YXRlKSkgewo+ICAJCURSTV9ERUJVRygiQ3Vyc29yIGRpbWVuc2lv biAlZHglZCBub3Qgc3VwcG9ydGVkXG4iLAo+IC0JCQkgIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5kc3QpLAo+IC0JCQkgIGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJh c2UuZHN0KSk7Cj4gKwkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCks Cj4gKwkJCSAgZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpKTsKPiAgCQly ZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlXQVJOX09OKHBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUgJiYKPiArCVdBUk5fT04ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAmJgo+ICAJCXBs YW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5zdHJpZGUgIT0gZmItPnBpdGNoZXNbMF0pOwo+ICAK PiAgCXN3aXRjaCAoZmItPnBpdGNoZXNbMF0pIHsKPiBAQCAtMTA5NDgsOSArMTA5NDgsOSBAQCBz dGF0aWMgdm9pZCBpODQ1X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK PiAgCXUzMiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9IDAsIHNpemUgPSAwOwo+ICAJdW5zaWdu ZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkgewo+IC0JCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpOwo+IC0JCXVuc2lnbmVkIGludCBoZWlnaHQgPSBkcm1f cmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gKwlpZiAocGxhbmVfc3RhdGUg JiYgcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewo+ICsJCXVuc2lnbmVkIGludCB3aWR0aCA9 IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpOwo+ICsJCXVuc2lnbmVkIGlu dCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gIAo+ ICAJCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwKPiAgCQkJaTg0NV9jdXJzb3JfY3RsX2NydGMo Y3J0Y19zdGF0ZSk7Cj4gQEAgLTExMDQ2LDEzICsxMTA0NiwxMyBAQCBzdGF0aWMgdTMyIGk5eHhf Y3Vyc29yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAtCQl0b19pOTE1KHBsYW5l X3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGku cGxhbmUtPmRldik7Cj4gIAl1MzIgY250bCA9IDA7Cj4gIAo+ICAJaWYgKElTX0dFTihkZXZfcHJp diwgNikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiAgCQljbnRsIHw9IE1DVVJTT1JfVFJJ Q0tMRV9GRUVEX0RJU0FCTEU7Cj4gIAo+IC0Jc3dpdGNoIChkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPmJhc2UuZHN0KSkgewo+ICsJc3dpdGNoIChkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPnVhcGkuZHN0KSkgewo+ICAJY2FzZSA2NDoKPiAgCQljbnRsIHw9IE1DVVJTT1JfTU9ERV82 NF9BUkdCX0FYOwo+ICAJCWJyZWFrOwo+IEBAIC0xMTA2Myw3ICsxMTA2Myw3IEBAIHN0YXRpYyB1 MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ICAJCWNudGwgfD0gTUNVUlNPUl9NT0RFXzI1Nl9BUkdCX0FYOwo+ICAJCWJyZWFrOwo+ ICAJZGVmYXVsdDoKPiAtCQlNSVNTSU5HX0NBU0UoZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT5iYXNlLmRzdCkpOwo+ICsJCU1JU1NJTkdfQ0FTRShkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPnVhcGkuZHN0KSk7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gIAo+IEBAIC0xMTA3Niw5ICsx MTA3Niw5IEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgYm9vbCBpOXh4X2N1cnNvcl9zaXplX29r KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiAtCWludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JaW50IGhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l LT5kZXYpOwo+ICsJaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBp LmRzdCk7Cj4gKwlpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFw aS5kc3QpOwo+ICAKPiAgCWlmICghaW50ZWxfY3Vyc29yX3NpemVfb2socGxhbmVfc3RhdGUpKQo+ ICAJCXJldHVybiBmYWxzZTsKPiBAQCAtMTExMTQsNyArMTExMTQsNyBAQCBzdGF0aWMgYm9vbCBp OXh4X2N1cnNvcl9zaXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gQEAgLTExMTMxLDE5ICsxMTEz MSwxOSBAQCBzdGF0aWMgaW50IGk5eHhfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJLyogQ2hlY2sgZm9yIHdoaWNoIGN1cnNvciB0eXBlcyB3ZSBz dXBwb3J0ICovCj4gIAlpZiAoIWk5eHhfY3Vyc29yX3NpemVfb2socGxhbmVfc3RhdGUpKSB7Cj4g IAkJRFJNX0RFQlVHKCJDdXJzb3IgZGltZW5zaW9uICVkeCVkIG5vdCBzdXBwb3J0ZWRcbiIsCj4g LQkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCksCj4gLQkJCSAgZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKPiArCQkJICBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKPiArCQkJICBkcm1fcmVjdF9oZWlnaHQoJnBs YW5lX3N0YXRlLT51YXBpLmRzdCkpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiAt CVdBUk5fT04ocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ICsJV0FSTl9PTihwbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlICYmCj4gIAkJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0 cmlkZSAhPSBmYi0+cGl0Y2hlc1swXSk7Cj4gIAo+ICAJaWYgKGZiLT5waXRjaGVzWzBdICE9Cj4g LQkgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkgKiBmYi0+Zm9ybWF0 LT5jcHBbMF0pIHsKPiArCSAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 KSAqIGZiLT5mb3JtYXQtPmNwcFswXSkgewo+ICAJCURSTV9ERUJVR19LTVMoIkludmFsaWQgY3Vy c29yIHN0cmlkZSAoJXUpIChjdXJzb3Igd2lkdGggJWQpXG4iLAo+ICAJCQkgICAgICBmYi0+cGl0 Y2hlc1swXSwKPiAtCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRz dCkpOwo+ICsJCQkgICAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSk7 Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IEBAIC0xMTE1OCw3ICsxMTE1OCw3IEBA IHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gIAkgKiBSZWZ1c2UgdGhlIHB1dCB0aGUgY3Vyc29yIGludG8gdGhhdCBjb21w cm9taXNlZCBwb3NpdGlvbi4KPiAgCSAqLwo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYp ICYmIHBpcGUgPT0gUElQRV9DICYmCj4gLQkgICAgcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAm JiBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDEgPCAwKSB7Cj4gKwkgICAgcGxhbmVfc3RhdGUtPnVh cGkudmlzaWJsZSAmJiBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDEgPCAwKSB7Cj4gIAkJRFJNX0RF QlVHX0tNUygiQ0hWIGN1cnNvciBDIG5vdCBhbGxvd2VkIHRvIHN0cmFkZGxlIHRoZSBsZWZ0IHNj cmVlbiBlZGdlXG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiBAQCAtMTExNzcsOSAr MTExNzcsOSBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwKPiAgCXUzMiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9IDAsIGZiY19jdGwg PSAwOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUg JiYgcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkgewo+IC0JCXVuc2lnbmVkIHdpZHRoID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gLQkJdW5zaWduZWQgaGVpZ2h0 ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJaWYgKHBsYW5l X3N0YXRlICYmIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpIHsKPiArCQl1bnNpZ25lZCB3aWR0 aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJCXVuc2lnbmVk IGhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCj4g IAkJY250bCA9IHBsYW5lX3N0YXRlLT5jdGwgfAo+ICAJCQlpOXh4X2N1cnNvcl9jdGxfY3J0Yyhj cnRjX3N0YXRlKTsKPiBAQCAtMTE3MTcsNyArMTE3MTcsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF93 bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1ciwKPiAgCQkJ CSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ldykKPiAgewo+ICAJLyogVXBkYXRlIHdhdGVy bWFya3Mgb24gdGlsaW5nIG9yIHNpemUgY2hhbmdlcy4gKi8KPiAtCWlmIChuZXctPmJhc2Uudmlz aWJsZSAhPSBjdXItPmJhc2UudmlzaWJsZSkKPiArCWlmIChuZXctPnVhcGkudmlzaWJsZSAhPSBj dXItPnVhcGkudmlzaWJsZSkKPiAgCQlyZXR1cm4gdHJ1ZTsKPiAgCj4gIAlpZiAoIWN1ci0+aHcu ZmIgfHwgIW5ldy0+aHcuZmIpCj4gQEAgLTExNzI1LDEwICsxMTcyNSwxMCBAQCBzdGF0aWMgYm9v bCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1 ciwKPiAgCj4gIAlpZiAoY3VyLT5ody5mYi0+bW9kaWZpZXIgIT0gbmV3LT5ody5mYi0+bW9kaWZp ZXIgfHwKPiAgCSAgICBjdXItPmh3LnJvdGF0aW9uICE9IG5ldy0+aHcucm90YXRpb24gfHwKPiAt CSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT5iYXNlLnNyYykgIT0gZHJtX3JlY3Rfd2lkdGgoJmN1 ci0+YmFzZS5zcmMpIHx8Cj4gLQkgICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPmJhc2Uuc3JjKSAh PSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+YmFzZS5zcmMpIHx8Cj4gLQkgICAgZHJtX3JlY3Rfd2lk dGgoJm5ldy0+YmFzZS5kc3QpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2UuZHN0KSB8fAo+ IC0JICAgIGRybV9yZWN0X2hlaWdodCgmbmV3LT5iYXNlLmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0 KCZjdXItPmJhc2UuZHN0KSkKPiArCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT51YXBpLnNyYykg IT0gZHJtX3JlY3Rfd2lkdGgoJmN1ci0+dWFwaS5zcmMpIHx8Cj4gKwkgICAgZHJtX3JlY3RfaGVp Z2h0KCZuZXctPnVhcGkuc3JjKSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+dWFwaS5zcmMpIHx8 Cj4gKwkgICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+dWFwaS5kc3QpICE9IGRybV9yZWN0X3dpZHRo KCZjdXItPnVhcGkuZHN0KSB8fAo+ICsJICAgIGRybV9yZWN0X2hlaWdodCgmbmV3LT51YXBpLmRz dCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZjdXItPnVhcGkuZHN0KSkKPiAgCQlyZXR1cm4gdHJ1ZTsK PiAgCj4gIAlyZXR1cm4gZmFsc2U7Cj4gQEAgLTExNzM2LDEwICsxMTczNiwxMCBAQCBzdGF0aWMg Ym9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KmN1ciwKPiAgCj4gIHN0YXRpYyBib29sIG5lZWRzX3NjYWxpbmcoY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0JaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgo JnN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JnN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlpbnQgZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgm c3RhdGUtPmJhc2UuZHN0KTsKPiAtCWludCBkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUt PmJhc2UuZHN0KTsKPiArCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+dWFwaS5z cmMpID4+IDE2Owo+ICsJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+dWFwaS5z cmMpID4+IDE2Owo+ICsJaW50IGRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT51YXBpLmRz dCk7Cj4gKwlpbnQgZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT51YXBpLmRzdCk7Cj4g IAo+ICAJcmV0dXJuIChzcmNfdyAhPSBkc3RfdyB8fCBzcmNfaCAhPSBkc3RfaCk7Cj4gIH0KPiBA QCAtMTE3NTAsNyArMTE3NTAsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdl cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdAo+ICAJCQkJICAg IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWJvb2wgbW9kZV9jaGFu Z2VkID0gbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKTsKPiAgCWJvb2wgd2FzX2NydGNfZW5hYmxl ZCA9IG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmU7Cj4gQEAgLTExNzY0LDggKzExNzY0LDggQEAg aW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCQkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gLQl3 YXNfdmlzaWJsZSA9IG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlOwo+IC0JdmlzaWJsZSA9 IHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7Cj4gKwl3YXNfdmlzaWJsZSA9IG9sZF9wbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlOwo+ICsJdmlzaWJsZSA9IHBsYW5lX3N0YXRlLT51YXBpLnZpc2li bGU7Cj4gIAo+ICAJaWYgKCF3YXNfY3J0Y19lbmFibGVkICYmIFdBUk5fT04od2FzX3Zpc2libGUp KQo+ICAJCXdhc192aXNpYmxlID0gZmFsc2U7Cj4gQEAgLTExNzgxLDcgKzExNzgxLDcgQEAgaW50 IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCSAqIG9ubHkgY29tYmluZSB0aGUgcmVzdWx0cyBmcm9t IGFsbCBwbGFuZXMgaW4gdGhlIGN1cnJlbnQgcGxhY2U/Cj4gIAkgKi8KPiAgCWlmICghaXNfY3J0 Y19lbmFibGVkKSB7Cj4gLQkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IHZpc2libGUgPSBm YWxzZTsKPiArCQlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gdmlzaWJsZSA9IGZhbHNlOwo+ ICAJCWNydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXMgJj0gfkJJVChwbGFuZS0+aWQpOwo+ICAJCWNy dGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRdID0gMDsKPiAgCQljcnRjX3N0YXRlLT5taW5f Y2RjbGtbcGxhbmUtPmlkXSA9IDA7Cj4gQEAgLTExOTQxLDcgKzExOTQxLDcgQEAgc3RhdGljIGlu dCBpY2xfY2hlY2tfbnYxMl9wbGFuZXMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlwbGFuZV9zdGF0ZS0+cGxhbmFyX2xpbmtlZF9w bGFuZSA9IE5VTEw7Cj4gLQkJaWYgKHBsYW5lX3N0YXRlLT5wbGFuYXJfc2xhdmUgJiYgIXBsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUpIHsKPiArCQlpZiAocGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2 ZSAmJiAhcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewo+ICAJCQljcnRjX3N0YXRlLT5hY3Rp dmVfcGxhbmVzICY9IH5CSVQocGxhbmUtPmlkKTsKPiAgCQkJY3J0Y19zdGF0ZS0+dXBkYXRlX3Bs YW5lcyB8PSBCSVQocGxhbmUtPmlkKTsKPiAgCQl9Cj4gQEAgLTEyMzU1LDE0ICsxMjM1NSwxNCBA QCBzdGF0aWMgY29uc3QgY2hhciAqb3V0cHV0X2Zvcm1hdHMoZW51bSBpbnRlbF9vdXRwdXRfZm9y bWF0IGZvcm1hdCkKPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGxhbmVfc3RhdGUoY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBs YW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZv cm1hdF9uYW1lOwo+ICAKPiAgCWlmICghZmIpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJbUExBTkU6 JWQ6JXNdIGZiOiBbTk9GQl0sIHZpc2libGU6ICVzXG4iLAo+ICAJCQkgICAgICBwbGFuZS0+YmFz ZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5uYW1lLAo+IC0JCQkgICAgICB5ZXNubyhwbGFuZV9zdGF0 ZS0+YmFzZS52aXNpYmxlKSk7Cj4gKwkJCSAgICAgIHllc25vKHBsYW5lX3N0YXRlLT51YXBpLnZp c2libGUpKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IEBAIC0xMjM3MCwxMyArMTIzNzAsMTMg QEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9wbGFuZV9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAJCSAgICAgIHBsYW5lLT5iYXNlLmJhc2UuaWQs IHBsYW5lLT5iYXNlLm5hbWUsCj4gIAkJICAgICAgZmItPmJhc2UuaWQsIGZiLT53aWR0aCwgZmIt PmhlaWdodCwKPiAgCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5mb3JtYXQtPmZvcm1h dCwgJmZvcm1hdF9uYW1lKSwKPiAtCQkgICAgICB5ZXNubyhwbGFuZV9zdGF0ZS0+YmFzZS52aXNp YmxlKSk7Cj4gKwkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkpOwo+ICAJ RFJNX0RFQlVHX0tNUygiXHRyb3RhdGlvbjogMHgleCwgc2NhbGVyOiAlZFxuIiwKPiAgCQkgICAg ICBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb24sIHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQpOwo+IC0J aWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAocGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSkKPiAgCQlEUk1fREVCVUdfS01TKCJcdHNyYzogIiBEUk1fUkVDVF9GUF9GTVQgIiBk c3Q6ICIgRFJNX1JFQ1RfRk1UICJcbiIsCj4gLQkJCSAgICAgIERSTV9SRUNUX0ZQX0FSRygmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSwKPiAtCQkJICAgICAgRFJNX1JFQ1RfQVJHKCZwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QpKTsKPiArCQkJICAgICAgRFJNX1JFQ1RfRlBfQVJHKCZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmMpLAo+ICsJCQkgICAgICBEUk1fUkVDVF9BUkcoJnBsYW5lX3N0YXRlLT51YXBpLmRz dCkpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiBAQCAtMTM1ODIsNyArMTM1 ODIsNyBAQCBpbnRlbF92ZXJpZnlfcGxhbmVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwK PiAgCQkJCQkgIHBsYW5lX3N0YXRlLCBpKQo+ICAJCWFzc2VydF9wbGFuZShwbGFuZSwgcGxhbmVf c3RhdGUtPnBsYW5hcl9zbGF2ZSB8fAo+IC0JCQkgICAgIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2li bGUpOwo+ICsJCQkgICAgIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpOwo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZAo+IEBAIC0xNTA0NCw3ICsxNTA0NCw3IEBAIHN0YXRpYyB2b2lkIGFkZF9ycHNf Ym9vc3RfYWZ0ZXJfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIHN0YXRpYyBp bnQgaW50ZWxfcGxhbmVfcGluX2ZiKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlzdHJ1Y3Qg aTkxNV92bWEgKnZtYTsKPiBAQCAtMTUxMDksNyArMTUxMDksNyBAQCBpbnRlbF9wcmVwYXJlX3Bs YW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpuZXdfcGxhbmVfc3RhdGUgPQo+ICAJCXRvX2ludGVsX3BsYW5lX3N0YXRlKF9uZXdfcGxh bmVfc3RhdGUpOwo+ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+ IC0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfcGxhbmVfc3RhdGUtPmJhc2Uuc3RhdGUpOwo+ ICsJCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfcGxhbmVfc3RhdGUtPnVhcGkuc3RhdGUpOwo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2 KTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3X3BsYW5lX3N0YXRlLT5ody5m YjsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIp Owo+IEBAIC0xNTE0Miw5ICsxNTE0Miw5IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWlmIChuZXdfcGxhbmVfc3Rh dGUtPmJhc2UuZmVuY2UpIHsgLyogZXhwbGljaXQgZmVuY2luZyAqLwo+ICsJaWYgKG5ld19wbGFu ZV9zdGF0ZS0+dWFwaS5mZW5jZSkgeyAvKiBleHBsaWNpdCBmZW5jaW5nICovCj4gIAkJcmV0ID0g aTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoJmludGVsX3N0YXRlLT5jb21taXRfcmVhZHks Cj4gLQkJCQkJCSAgICBuZXdfcGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UsCj4gKwkJCQkJCSAgICBu ZXdfcGxhbmVfc3RhdGUtPnVhcGkuZmVuY2UsCj4gIAkJCQkJCSAgICBJOTE1X0ZFTkNFX1RJTUVP VVQsCj4gIAkJCQkJCSAgICBHRlBfS0VSTkVMKTsKPiAgCQlpZiAocmV0IDwgMCkKPiBAQCAtMTUx NjcsNyArMTUxNjcsNyBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ICAJZmJfb2JqX2J1bXBfcmVuZGVyX3ByaW9yaXR5KG9iaik7Cj4gIAlpbnRlbF9m cm9udGJ1ZmZlcl9mbHVzaChvYmotPmZyb250YnVmZmVyLCBPUklHSU5fRElSVFlGQik7Cj4gIAo+ IC0JaWYgKCFuZXdfcGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UpIHsgLyogaW1wbGljaXQgZmVuY2lu ZyAqLwo+ICsJaWYgKCFuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZmVuY2UpIHsgLyogaW1wbGljaXQg ZmVuY2luZyAqLwo+ICAJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwo+ICAKPiAgCQlyZXQgPSBp OTE1X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKCZpbnRlbF9zdGF0ZS0+Y29tbWl0X3JlYWR5 LAo+IEBAIC0xNTE4NSw3ICsxNTE4NSw3IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJfQo+ICAJfSBlbHNlIHsKPiAgCQlhZGRfcnBzX2Jvb3N0 X2FmdGVyX3ZibGFuayhuZXdfcGxhbmVfc3RhdGUtPmh3LmNydGMsCj4gLQkJCQkJICAgbmV3X3Bs YW5lX3N0YXRlLT5iYXNlLmZlbmNlKTsKPiArCQkJCQkgICBuZXdfcGxhbmVfc3RhdGUtPnVhcGku ZmVuY2UpOwo+ICAJfQo+ICAKPiAgCS8qCj4gQEAgLTE1MjE4LDcgKzE1MjE4LDcgQEAgaW50ZWxf Y2xlYW51cF9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCXN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlID0KPiAgCQl0b19pbnRlbF9wbGFuZV9zdGF0 ZShfb2xkX3BsYW5lX3N0YXRlKTsKPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVs X3N0YXRlID0KPiAtCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3BsYW5lX3N0YXRlLT5iYXNl LnN0YXRlKTsKPiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3BsYW5lX3N0YXRlLT51YXBp LnN0YXRlKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmRldik7Cj4gIAo+ICAJaWYgKGludGVsX3N0YXRlLT5ycHNfaW50ZXJhY3RpdmUpIHsK PiBAQCAtMTUzNTAsOCArMTUzNTAsOCBAQCBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZShzdHJ1 Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gIAkgKiB0aGUgcGxhbmUuICBUaGlzIHByZXZlbnRzIG91 ciBhc3luYyB1cGRhdGUncyBjaGFuZ2VzIGZyb20gZ2V0dGluZwo+ICAJICogb3ZlcnJpZGRlbiBi eSBhIHByZXZpb3VzIHN5bmNocm9ub3VzIHVwZGF0ZSdzIHN0YXRlLgo+ICAJICovCj4gLQlpZiAo b2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNvbW1pdCAmJgo+IC0JICAgICF0cnlfd2FpdF9mb3JfY29t cGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNvbW1pdC0+aHdfZG9uZSkpCj4gKwlpZiAo b2xkX3BsYW5lX3N0YXRlLT51YXBpLmNvbW1pdCAmJgo+ICsJICAgICF0cnlfd2FpdF9mb3JfY29t cGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT51YXBpLmNvbW1pdC0+aHdfZG9uZSkpCj4gIAkJZ290 byBzbG93Owo+ICAKPiAgCS8qCj4gQEAgLTE1MzYwLDEwICsxNTM2MCwxMCBAQCBpbnRlbF9sZWdh Y3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gIAkgKiBpbiB0aGUg ZmFzdHBhdGguCj4gIAkgKi8KPiAgCWlmIChvbGRfcGxhbmVfc3RhdGUtPnVhcGkuY3J0YyAhPSAm Y3J0Yy0+YmFzZSB8fAo+IC0JICAgIG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfdyAhPSBzcmNf dyB8fAo+IC0JICAgIG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfaCAhPSBzcmNfaCB8fAo+IC0J ICAgIG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3cgIT0gY3J0Y193IHx8Cj4gLQkgICAgb2xk X3BsYW5lX3N0YXRlLT5iYXNlLmNydGNfaCAhPSBjcnRjX2ggfHwKPiArCSAgICBvbGRfcGxhbmVf c3RhdGUtPnVhcGkuc3JjX3cgIT0gc3JjX3cgfHwKPiArCSAgICBvbGRfcGxhbmVfc3RhdGUtPnVh cGkuc3JjX2ggIT0gc3JjX2ggfHwKPiArCSAgICBvbGRfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Y193 ICE9IGNydGNfdyB8fAo+ICsJICAgIG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjX2ggIT0gY3J0 Y19oIHx8CgpUaGVzZSBzaG91bGQgaGF2ZSBtYXliZSBiZWVuIGluIHRoZSBwYXRjaCB0aGF0IGNv bnZlcnRlZCB0aGUKdWFwaS5mYiBhbmQgdWFwaS5jcnRjIGFscmVhZHkuCgpOb3Qgc3VyZSBob3cg d2UncmUgZ29pbmcgdG8gbWFrZSB0aGlzIHN0dWZmIHdvcmsgd2l0aCBiaWdqb2luZXIsIGJ1dAps ZXQncyBjcm9zcyB0aGF0IGJyaWRnZSB3aGVuIHdlIGNvbWUgdG8gaXQuCgpSZXN0IG9mIHRoZSBw YXRjaCBsZ3RtLgoKPiAgCSAgICAhb2xkX3BsYW5lX3N0YXRlLT51YXBpLmZiICE9ICFmYikKPiAg CQlnb3RvIHNsb3c7Cj4gIAo+IEBAIC0xNTM3NywxNiArMTUzNzcsMTYgQEAgaW50ZWxfbGVnYWN5 X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAo+ICAJCWdvdG8gb3V0X2Zy ZWU7Cj4gIAl9Cj4gIAo+IC0JZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5lKCZuZXdfcGxhbmVf c3RhdGUtPmJhc2UsIGZiKTsKPiArCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFuZSgmbmV3X3Bs YW5lX3N0YXRlLT51YXBpLCBmYik7Cj4gIAo+IC0JbmV3X3BsYW5lX3N0YXRlLT5iYXNlLnNyY194 ID0gc3JjX3g7Cj4gLQluZXdfcGxhbmVfc3RhdGUtPmJhc2Uuc3JjX3kgPSBzcmNfeTsKPiAtCW5l d19wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfdyA9IHNyY193Owo+IC0JbmV3X3BsYW5lX3N0YXRlLT5i YXNlLnNyY19oID0gc3JjX2g7Cj4gLQluZXdfcGxhbmVfc3RhdGUtPmJhc2UuY3J0Y194ID0gY3J0 Y194Owo+IC0JbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmNydGNfeSA9IGNydGNfeTsKPiAtCW5ld19w bGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3cgPSBjcnRjX3c7Cj4gLQluZXdfcGxhbmVfc3RhdGUtPmJh c2UuY3J0Y19oID0gY3J0Y19oOwo+ICsJbmV3X3BsYW5lX3N0YXRlLT51YXBpLnNyY194ID0gc3Jj X3g7Cj4gKwluZXdfcGxhbmVfc3RhdGUtPnVhcGkuc3JjX3kgPSBzcmNfeTsKPiArCW5ld19wbGFu ZV9zdGF0ZS0+dWFwaS5zcmNfdyA9IHNyY193Owo+ICsJbmV3X3BsYW5lX3N0YXRlLT51YXBpLnNy Y19oID0gc3JjX2g7Cj4gKwluZXdfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Y194ID0gY3J0Y194Owo+ ICsJbmV3X3BsYW5lX3N0YXRlLT51YXBpLmNydGNfeSA9IGNydGNfeTsKPiArCW5ld19wbGFuZV9z dGF0ZS0+dWFwaS5jcnRjX3cgPSBjcnRjX3c7Cj4gKwluZXdfcGxhbmVfc3RhdGUtPnVhcGkuY3J0 Y19oID0gY3J0Y19oOwo+ICAKPiAgCXJldCA9IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRo X3N0YXRlKGNydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLAo+ICAJCQkJCQkgIG9sZF9wbGFuZV9z dGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsKPiBAQCAtMTU0MDQsNyArMTU0MDQsNyBAQCBpbnRlbF9s ZWdhY3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gIAkJCQlwbGFu ZS0+ZnJvbnRidWZmZXJfYml0KTsKPiAgCj4gIAkvKiBTd2FwIHBsYW5lIHN0YXRlICovCj4gLQlw bGFuZS0+YmFzZS5zdGF0ZSA9ICZuZXdfcGxhbmVfc3RhdGUtPmJhc2U7Cj4gKwlwbGFuZS0+YmFz ZS5zdGF0ZSA9ICZuZXdfcGxhbmVfc3RhdGUtPnVhcGk7Cj4gIAo+ICAJLyoKPiAgCSAqIFdlIGNh bm5vdCBzd2FwIGNydGNfc3RhdGUgYXMgaXQgbWF5IGJlIGluIHVzZSBieSBhbiBhdG9taWMgY29t bWl0IG9yCj4gQEAgLTE1NDE4LDcgKzE1NDE4LDcgQEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRh dGUoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAo+ICAJICovCj4gIAljcnRjX3N0YXRlLT5hY3Rp dmVfcGxhbmVzID0gbmV3X2NydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXM7Cj4gIAo+IC0JaWYgKG5l d19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFw aS52aXNpYmxlKQo+ICAJCWludGVsX3VwZGF0ZV9wbGFuZShwbGFuZSwgY3J0Y19zdGF0ZSwgbmV3 X3BsYW5lX3N0YXRlKTsKPiAgCWVsc2UKPiAgCQlpbnRlbF9kaXNhYmxlX3BsYW5lKHBsYW5lLCBj cnRjX3N0YXRlKTsKPiBAQCAtMTU0MjksOSArMTU0MjksMTEgQEAgaW50ZWxfbGVnYWN5X2N1cnNv cl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAo+ICAJaWYgKG5ld19jcnRjX3N0YXRl KQo+ICAJCWludGVsX2NydGNfZGVzdHJveV9zdGF0ZSgmY3J0Yy0+YmFzZSwgJm5ld19jcnRjX3N0 YXRlLT51YXBpKTsKPiAgCWlmIChyZXQpCj4gLQkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSgm cGxhbmUtPmJhc2UsICZuZXdfcGxhbmVfc3RhdGUtPmJhc2UpOwo+ICsJCWludGVsX3BsYW5lX2Rl c3Ryb3lfc3RhdGUoJnBsYW5lLT5iYXNlLAo+ICsJCQkJCSAgJm5ld19wbGFuZV9zdGF0ZS0+dWFw aSk7Cj4gIAllbHNlCj4gLQkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSgmcGxhbmUtPmJhc2Us ICZvbGRfcGxhbmVfc3RhdGUtPmJhc2UpOwo+ICsJCWludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUo JnBsYW5lLT5iYXNlLAo+ICsJCQkJCSAgJm9sZF9wbGFuZV9zdGF0ZS0+dWFwaSk7Cj4gIAlyZXR1 cm4gcmV0Owo+ICAKPiAgc2xvdzoKPiBAQCAtMTcxNTcsNyArMTcxNTksNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQljb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiAgCQkJCXRvX2ludGVs X3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKPiAgCj4gLQkJCWlmIChwbGFuZV9zdGF0 ZS0+YmFzZS52aXNpYmxlICYmCj4gKwkJCWlmIChwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlICYm Cj4gIAkJCSAgICBwbGFuZS0+YmFzZS50eXBlICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4g IAkJCQlpbnRlbF9wbGFuZV9kaXNhYmxlX25vYXRvbWljKGNydGMsIHBsYW5lKTsKPiAgCQl9Cj4g QEAgLTE3NDg4LDE0ICsxNzQ5MCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRv dXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJICogRklYTUUgZG9uJ3Qg aGF2ZSB0aGUgZmIgeWV0LCBzbyBjYW4ndAo+ICAJCQkgKiB1c2UgaW50ZWxfcGxhbmVfZGF0YV9y YXRlKCkgOigKPiAgCQkJICovCj4gLQkJCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ ICsJCQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQkJCWNydGNfc3RhdGUtPmRh dGFfcmF0ZVtwbGFuZS0+aWRdID0KPiAgCQkJCQk0ICogY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsK PiAgCQkJLyoKPiAgCQkJICogRklYTUUgZG9uJ3QgaGF2ZSB0aGUgZmIgeWV0LCBzbyBjYW4ndAo+ ICAJCQkgKiB1c2UgcGxhbmUtPm1pbl9jZGNsaygpIDooCj4gIAkJCSAqLwo+IC0JCQlpZiAocGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJiBwbGFuZS0+bWluX2NkY2xrKSB7Cj4gKwkJCWlmIChw bGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlICYmIHBsYW5lLT5taW5fY2RjbGspIHsKPiAgCQkJCWlm IChjcnRjX3N0YXRlLT5kb3VibGVfd2lkZSB8fAo+ICAJCQkJICAgIElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJCQkJY3J0Y19zdGF0ZS0+ bWluX2NkY2xrW3BsYW5lLT5pZF0gPQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9mYmMuYwo+IGluZGV4IDNlYThkMDEwZGI2Yy4uOTJjN2ViMjQzNTU5IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jCj4gQEAgLTQzMCw3ICs0MzAsNyBAQCBz dGF0aWMgYm9vbCBtdWx0aXBsZV9waXBlc19vayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAg CWlmICghbm9fZmJjX29uX211bHRpcGxlX3BpcGVzKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gdHJ1 ZTsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCWlmIChwbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCWZiYy0+dmlzaWJsZV9waXBlc19tYXNrIHw9ICgxIDw8 IHBpcGUpOwo+ICAJZWxzZQo+ICAJCWZiYy0+dmlzaWJsZV9waXBlc19tYXNrICY9IH4oMSA8PCBw aXBlKTsKPiBAQCAtNjc3LDEyICs2NzcsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmJjX3VwZGF0 ZV9zdGF0ZV9jYWNoZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCSAqIHRoZSA5MC8yNzAg ZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKPiAgCSAqIEdUVCBtYXBw aW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2NvdW50IGZvciByb3RhdGlvbiBoZXJlLgo+ICAJICov Cj4gLQljYWNoZS0+cGxhbmUuc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJh c2Uuc3JjKSA+PiAxNjsKPiAtCWNhY2hlLT5wbGFuZS5zcmNfaCA9IGRybV9yZWN0X2hlaWdodCgm cGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAtCWNhY2hlLT5wbGFuZS52aXNpYmxlID0g cGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZTsKPiArCWNhY2hlLT5wbGFuZS5zcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJY2FjaGUtPnBsYW5l LnNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ ICsJY2FjaGUtPnBsYW5lLnZpc2libGUgPSBwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwo+ICAJ Y2FjaGUtPnBsYW5lLmFkanVzdGVkX3ggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueDsK PiAgCWNhY2hlLT5wbGFuZS5hZGp1c3RlZF95ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBd Lnk7Cj4gLQljYWNoZS0+cGxhbmUueSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsK PiArCWNhY2hlLT5wbGFuZS55ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2Owo+ICAK PiAgCWNhY2hlLT5wbGFuZS5waXhlbF9ibGVuZF9tb2RlID0gcGxhbmVfc3RhdGUtPmh3LnBpeGVs X2JsZW5kX21vZGU7Cj4gIAo+IEBAIC0xMDUyLDcgKzEwNTIsNyBAQCB2b2lkIGludGVsX2ZiY19j aG9vc2VfY3J0YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJaWYgKCFw bGFuZS0+aGFzX2ZiYykKPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWlmICghcGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkKPiArCQlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJ CWNvbnRpbnVlOwo+ICAKPiAgCQljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0 Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9vdmVybGF5LmMKPiBpbmRleCA0NmUzZDZjZjU5NzYuLjhjZmI3ODVlNzYxYyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jCj4gQEAgLTY2 OCw3ICs2NjgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfY29sb3JrZXkoc3RydWN0IGludGVsX292 ZXJsYXkgKm92ZXJsYXksCj4gIAlpZiAob3ZlcmxheS0+Y29sb3Jfa2V5X2VuYWJsZWQpCj4gIAkJ ZmxhZ3MgfD0gRFNUX0tFWV9FTkFCTEU7Cj4gIAo+IC0JaWYgKHN0YXRlLT5iYXNlLnZpc2libGUp Cj4gKwlpZiAoc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQlmb3JtYXQgPSBzdGF0ZS0+aHcuZmIt PmZvcm1hdC0+Zm9ybWF0Owo+ICAKPiAgCXN3aXRjaCAoZm9ybWF0KSB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggYjIxMTZkMTIzNTQ4Li5l Zjc0MDlmNjk1ZjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf c3ByaXRlLmMKPiBAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfZW5k KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPiAgCj4gIGludCBpbnRl bF9wbGFuZV9jaGVja19zdHJpZGUoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2ln bmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCXUzMiBzdHJp ZGUsIG1heF9zdHJpZGU7Cj4gQEAgLTI1Miw3ICsyNTIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfY2hl Y2tfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4g IAkgKiBraWNrIGluIGR1ZSB0aGUgcGxhbmUgYmVpbmcgaW52aXNpYmxlLgo+ICAJICovCj4gIAlp ZiAoaW50ZWxfcGxhbmVfY2FuX3JlbWFwKHBsYW5lX3N0YXRlKSAmJgo+IC0JICAgICFwbGFuZV9z dGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJICAgICFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ ICAJCXJldHVybiAwOwo+ICAKPiAgCS8qIEZJWE1FIG90aGVyIGNvbG9yIHBsYW5lcz8gKi8KPiBA QCAtMjczLDcgKzI3Myw3IEBAIGludCBpbnRlbF9wbGFuZV9jaGVja19zdHJpZGUoY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgaW50IGludGVsX3BsYW5lX2No ZWNrX3NyY19jb29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5ody5mYjsKPiAtCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5lX3N0YXRlLT5iYXNlLnNy YzsKPiArCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5lX3N0YXRlLT51YXBpLnNyYzsKPiAg CXUzMiBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaCwgaHN1YiwgdnN1YjsKPiAgCWJvb2wgcm90 YXRlZCA9IGRybV9yb3RhdGlvbl85MF9vcl8yNzAocGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uKTsK PiAgCj4gQEAgLTMyOCw3ICszMjgsNyBAQCBza2xfcGxhbmVfcmF0aW8oY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQl1bnNpZ25lZCBpbnQgKm51bSwgdW5zaWduZWQgaW50 ICpkZW4pCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7 Cj4gIAo+ICAJaWYgKGZiLT5mb3JtYXQtPmNwcFswXSA9PSA4KSB7Cj4gQEAgLTM0OCw3ICszNDgs NyBAQCBza2xfcGxhbmVfcmF0aW8oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCj4gIHN0YXRpYyBpbnQgc2tsX3BsYW5lX21pbl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRl LT51YXBpLnBsYW5lLT5kZXYpOwo+ICAJdW5zaWduZWQgaW50IHBpeGVsX3JhdGUgPSBjcnRjX3N0 YXRlLT5waXhlbF9yYXRlOwo+ICAJdW5zaWduZWQgaW50IHNyY193LCBzcmNfaCwgZHN0X3csIGRz dF9oOwo+ICAJdW5zaWduZWQgaW50IG51bSwgZGVuOwo+IEBAIC0zNTksMTAgKzM1OSwxMCBAQCBz dGF0aWMgaW50IHNrbF9wbGFuZV9taW5fY2RjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19H RU1JTklMQUtFKGRldl9wcml2KSkKPiAgCQlkZW4gKj0gMjsKPiAgCj4gLQlzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0Jc3JjX2ggPSBkcm1f cmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlkc3RfdyA9IGRy bV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JZHN0X2ggPSBkcm1fcmVj dF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gKwlzcmNfdyA9IGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJc3JjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwlkc3RfdyA9IGRybV9yZWN0 X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJZHN0X2ggPSBkcm1fcmVjdF9oZWln aHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gIAo+ICAJLyogRG93bnNjYWxpbmcgbGltaXRz IHRoZSBtYXhpbXVtIHBpeGVsIHJhdGUgKi8KPiAgCWRzdF93ID0gbWluKHNyY193LCBkc3Rfdyk7 Cj4gQEAgLTQwMSwxOSArNDAxLDE5IEBAIHNrbF9wcm9ncmFtX3NjYWxlcihzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lLAo+ICAJaW50IHNjYWxlcl9pZCA9IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQ7 Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfc2NhbGVyICpzY2FsZXIgPQo+ICAJCSZjcnRjX3N0YXRl LT5zY2FsZXJfc3RhdGUuc2NhbGVyc1tzY2FsZXJfaWRdOwo+IC0JaW50IGNydGNfeCA9IHBsYW5l X3N0YXRlLT5iYXNlLmRzdC54MTsKPiAtCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5k c3QueTE7Cj4gLQl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNl LmRzdCk7Cj4gLQl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QpOwo+ICsJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC54MTsKPiArCWlu dCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7Cj4gKwl1MzIgY3J0Y193ID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gKwl1MzIgY3J0Y19oID0gZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICAJdTE2IHlfaHBoYXNlLCB1 dl9yZ2JfaHBoYXNlOwo+ICAJdTE2IHlfdnBoYXNlLCB1dl9yZ2JfdnBoYXNlOwo+ICAJaW50IGhz Y2FsZSwgdnNjYWxlOwo+ICAKPiAtCWhzY2FsZSA9IGRybV9yZWN0X2NhbGNfaHNjYWxlKCZwbGFu ZV9zdGF0ZS0+YmFzZS5zcmMsCj4gLQkJCQkgICAgICAmcGxhbmVfc3RhdGUtPmJhc2UuZHN0LAo+ ICsJaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUoJnBsYW5lX3N0YXRlLT51YXBpLnNyYywK PiArCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QsCj4gIAkJCQkgICAgICAwLCBJTlRf TUFYKTsKPiAtCXZzY2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxlKCZwbGFuZV9zdGF0ZS0+YmFz ZS5zcmMsCj4gLQkJCQkgICAgICAmcGxhbmVfc3RhdGUtPmJhc2UuZHN0LAo+ICsJdnNjYWxlID0g ZHJtX3JlY3RfY2FsY192c2NhbGUoJnBsYW5lX3N0YXRlLT51YXBpLnNyYywKPiArCQkJCSAgICAg ICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QsCj4gIAkJCQkgICAgICAwLCBJTlRfTUFYKTsKPiAgCj4g IAkvKiBUT0RPOiBoYW5kbGUgc3ViLXBpeGVsIGNvb3JkaW5hdGVzICovCj4gQEAgLTU4NCwxMiAr NTg0LDEyIEBAIHNrbF9wcm9ncmFtX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4g IAl1MzIgc3VyZl9hZGRyID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW2NvbG9yX3BsYW5lXS5v ZmZzZXQ7Cj4gIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShwbGFuZV9zdGF0ZSwgY29s b3JfcGxhbmUpOwo+ICAJdTMyIGF1eF9zdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRlKHBsYW5lX3N0 YXRlLCAxKTsKPiAtCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlp bnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwo+ICsJaW50IGNydGNfeCA9IHBs YW5lX3N0YXRlLT51YXBpLmRzdC54MTsKPiArCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFw aS5kc3QueTE7Cj4gIAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9wbGFu ZV0ueDsKPiAgCXUzMiB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW2NvbG9yX3BsYW5lXS55 Owo+IC0JdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykg Pj4gMTY7Cj4gLQl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNl LnNyYykgPj4gMTY7Cj4gKwl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PnVhcGkuc3JjKSA+PiAxNjsKPiArCXUzMiBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2VkID0g cGxhbmVfc3RhdGUtPnBsYW5hcl9saW5rZWRfcGxhbmU7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXU4IGFscGhhID0gcGxhbmVf c3RhdGUtPmh3LmFscGhhID4+IDg7Cj4gQEAgLTc2Niw3ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBp OXh4X3BsYW5lX2xpbmVhcl9nYW1tYSh1MTYgZ2FtbWFbOF0pCj4gIHN0YXRpYyB2b2lkCj4gIGNo dl91cGRhdGVfY3NjKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9f aW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAllbnVt IHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwo+IEBAIC04MjUsNyArODI1LDcgQEAgY2h2 X3VwZGF0ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK PiAgc3RhdGljIHZvaWQKPiAgdmx2X3VwZGF0ZV9jbHJjKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUp Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ YmFzZS5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9z dGF0ZS0+aHcuZmI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+IEBAIC0xMDE5 LDcgKzEwMTksNyBAQCBzdGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAKPiAgc3RhdGljIHZvaWQgdmx2X3VwZGF0ZV9n YW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJZW51bSBwaXBlIHBp cGUgPSBwbGFuZS0+cGlwZTsKPiBAQCAtMTA1MywxMCArMTA1MywxMCBAQCB2bHZfdXBkYXRlX3Bs YW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBw bGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zmc2V0Owo+ICAJdTMyIGxpbmVhcl9vZmZzZXQ7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5l X3N0YXRlLT5ja2V5Owo+IC0JaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsK PiAtCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueTE7Cj4gLQl1MzIgY3J0Y193 ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gLQl1MzIgY3J0Y19o ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJaW50IGNydGNf eCA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC54MTsKPiArCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0 ZS0+dWFwaS5kc3QueTE7Cj4gKwl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT51YXBpLmRzdCk7Cj4gKwl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOwo+ICAJdTMyIHggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0u eDsKPiAgCXUzMiB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnk7Cj4gIAl1bnNpZ25l ZCBsb25nIGlycWZsYWdzOwo+IEBAIC0xMjQ1LDggKzEyNDUsOCBAQCBzdGF0aWMgaW50IGl2Yl9z cHJpdGVfbWluX2NkY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAo+ICAJICovCj4gIAlwaXhlbF9yYXRlID0gY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsKPiAgCj4g LQlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ IC0JZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCXNy Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwlk c3RfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICAKPiAgCWlm IChzcmNfdyAhPSBkc3RfdykKPiAgCQlpdmJfcGxhbmVfcmF0aW9fc2NhbGluZyhjcnRjX3N0YXRl LCBwbGFuZV9zdGF0ZSwgJm51bSwgJmRlbik7Cj4gQEAgLTEzMjAsNyArMTMyMCw3IEBAIHN0YXRp YyB1MzIgaXZiX3Nwcml0ZV9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAgc3RhdGljIGJvb2wgaXZiX25lZWRfc3ByaXRlX2dhbW1hKGNvbnN0IHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5w bGFuZS0+ZGV2KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7 Cj4gIAo+ICAJcmV0dXJuIGZiLT5mb3JtYXQtPmNwcFswXSA9PSA4ICYmCj4gQEAgLTEzMzEsNyAr MTMzMSw3IEBAIHN0YXRpYyB1MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRv X2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCBy b3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1f aW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gQEAgLTE0 MjIsNyArMTQyMiw3IEBAIHN0YXRpYyB2b2lkIGl2Yl9zcHJpdGVfbGluZWFyX2dhbW1hKGNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gIAo+ICBzdGF0aWMgdm9p ZCBpdmJfdXBkYXRlX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJ ZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiAgCXUxNiBnYW1tYVsxOF07Cj4gQEAgLTE0 NjEsMTQgKzE0NjEsMTQgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAo+ICAJdTMyIHNwcnN1cmZfb2Zmc2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBd Lm9mZnNldDsKPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Owo+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRl bF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiAtCWludCBjcnRj X3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0Y195ID0gcGxhbmVfc3Rh dGUtPmJhc2UuZHN0LnkxOwo+IC0JdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5kc3QpOwo+IC0JdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPmJhc2UuZHN0KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3Qu eDE7Cj4gKwlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ICsJdTMyIGNy dGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJdTMyIGNy dGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCXUzMiB4 ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7Cj4gIAl1MzIgeSA9IHBsYW5lX3N0YXRl LT5jb2xvcl9wbGFuZVswXS55Owo+IC0JdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwl1MzIgc3JjX3cgPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCXUzMiBzcmNfaCA9IGRybV9y ZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCXUzMiBzcHJjdGws IHNwcnNjYWxlID0gMDsKPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gIAo+IEBAIC0xNTgx LDggKzE1ODEsOCBAQCBzdGF0aWMgaW50IGc0eF9zcHJpdGVfbWluX2NkY2xrKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJcGl4ZWxfcmF0ZSA9IGNydGNfc3Rh dGUtPnBpeGVsX3JhdGU7Cj4gIAo+ICAJLyogSG9yaXpvbnRhbCBkb3duc2NhbGluZyBsaW1pdHMg dGhlIG1heGltdW0gcGl4ZWwgcmF0ZSAqLwo+IC0JaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2Nh bGUoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYywKPiAtCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QsCj4gKwloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2FsZSgmcGxhbmVfc3RhdGUtPnVh cGkuc3JjLAo+ICsJCQkJICAgICAgJnBsYW5lX3N0YXRlLT51YXBpLmRzdCwKPiAgCQkJCSAgICAg IDAsIElOVF9NQVgpOwo+ICAJaWYgKGhzY2FsZSA8IDB4MTAwMDApCj4gIAkJcmV0dXJuIHBpeGVs X3JhdGU7Cj4gQEAgLTE2MzYsNyArMTYzNiw3IEBAIHN0YXRpYyB1MzIgZzR4X3Nwcml0ZV9jdGwo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgY29uc3Qg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNl LnBsYW5lLT5kZXYpOwo+ICsJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsK PiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVf c3RhdGUtPmNrZXk7Cj4gQEAgLTE2OTksNyArMTY5OSw3IEBAIHN0YXRpYyB1MzIgZzR4X3Nwcml0 ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICBz dGF0aWMgdm9pZCBnNHhfdXBkYXRlX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5k ZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+IEBAIC0xNzMxLDcgKzE3 MzEsNyBAQCBzdGF0aWMgdm9pZCBpbGtfc3ByaXRlX2xpbmVhcl9nYW1tYSh1MTYgZ2FtbWFbMTdd KQo+ICAKPiAgc3RhdGljIHZvaWQgaWxrX3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBs YW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxh bmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmh3LmZiOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiBAQCAt MTc2NywxNCArMTc2NywxNCBAQCBnNHhfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUsCj4gIAl1MzIgZHZzc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVb MF0ub2Zmc2V0Owo+ICAJdTMyIGxpbmVhcl9vZmZzZXQ7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2lu dGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5Owo+IC0JaW50IGNy dGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKPiAtCWludCBjcnRjX3kgPSBwbGFuZV9z dGF0ZS0+YmFzZS5kc3QueTE7Cj4gLQl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLmRzdCk7Cj4gLQl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFu ZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLmRz dC54MTsKPiArCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7Cj4gKwl1MzIg Y3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gKwl1MzIg Y3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICAJdTMy IHggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueDsKPiAgCXUzMiB5ID0gcGxhbmVfc3Rh dGUtPmNvbG9yX3BsYW5lWzBdLnk7Cj4gLQl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAtCXUzMiBzcmNfaCA9IGRybV9yZWN0X2hlaWdo dCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiArCXUzMiBzcmNfdyA9IGRybV9yZWN0 X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJdTMyIHNyY19oID0gZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICAJdTMyIGR2c2Nu dHIsIGR2c3NjYWxlID0gMDsKPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gIAo+IEBAIC0x ODg4LDggKzE4ODgsOCBAQCBnNHhfc3ByaXRlX2NoZWNrX3NjYWxpbmcoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5ody5mYjsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5l X3N0YXRlLT5iYXNlLnNyYzsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5l X3N0YXRlLT5iYXNlLmRzdDsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5l X3N0YXRlLT51YXBpLnNyYzsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5l X3N0YXRlLT51YXBpLmRzdDsKPiAgCWludCBzcmNfeCwgc3JjX3csIHNyY19oLCBjcnRjX3csIGNy dGNfaDsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0K PiAgCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiBAQCAtMTk0OCw3ICsxOTQ4LDcg QEAgc3RhdGljIGludAo+ICBnNHhfc3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICAJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRv X2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWludCBt aW5fc2NhbGUgPSBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7Cj4gIAlpbnQgbWF4X3NjYWxl ID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwo+IEBAIC0xOTY0LDcgKzE5NjQsNyBAQCBn NHhfc3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CX0KPiAgCX0KPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0 ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19w bGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVh cGksCj4gIAkJCQkJCSAgbWluX3NjYWxlLCBtYXhfc2NhbGUsCj4gIAkJCQkJCSAgdHJ1ZSwgdHJ1 ZSk7Cj4gQEAgLTE5NzUsNyArMTk3NSw3IEBAIGc0eF9zcHJpdGVfY2hlY2soc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4g IAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9IGludGVsX3BsYW5l X2NoZWNrX3NyY19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSk7Cj4gQEAgLTE5OTYsNyArMTk5Niw3 IEBAIGc0eF9zcHJpdGVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIAo+ICBpbnQgY2h2X3BsYW5lX2NoZWNrX3JvdGF0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxh bmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFu ZS0+YmFzZS5kZXYpOwo+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3 LnJvdGF0aW9uOwo+ICAKPiBAQCAtMjAyMSw3ICsyMDIxLDcgQEAgdmx2X3Nwcml0ZV9jaGVjayhz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0 dXJuIHJldDsKPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0 ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19w bGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVh cGksCj4gIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ICAJCQkJCQkgIERS TV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiBAQCAtMjAzMyw3ICsyMDMzLDcgQEAgdmx2X3Nw cml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChy ZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2li bGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJcmV0dXJuIDA7Cj4g IAo+ICAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRl KTsKPiBAQCAtMjA0OCw3ICsyMDQ4LDcgQEAgdmx2X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfZmIo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5w bGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1bnNpZ25lZCBpbnQgcm90YXRp b24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gQEAgLTIxMjMsOSArMjEyMyw5IEBAIHN0 YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2RzdF9jb29yZGluYXRlcyhjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zCj4gIAkJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+IC0J aW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKPiAtCWludCBjcnRjX3cgPSBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCQl0b19pOTE1KHBsYW5l X3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ICsJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT51 YXBpLmRzdC54MTsKPiArCWludCBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PnVhcGkuZHN0KTsKPiAgCWludCBwaXBlX3NyY193ID0gY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdzsK PiAgCj4gIAkvKgo+IEBAIC0yMTUzLDcgKzIxNTMsNyBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9j aGVja19udjEyX3JvdGF0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf cwo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3Rh dGlvbjsKPiAtCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5z cmMpID4+IDE2Owo+ICsJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51 YXBpLnNyYykgPj4gMTY7Cj4gIAo+ICAJLyogRGlzcGxheSBXQSAjMTEwNiAqLwo+ICAJaWYgKGRy bV9mb3JtYXRfaW5mb19pc195dXZfc2VtaXBsYW5hcihmYi0+Zm9ybWF0KSAmJiBzcmNfdyAmIDMg JiYKPiBAQCAtMjE4NSw3ICsyMTg1LDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVfbWF4X3NjYWxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgc3RhdGljIGludCBza2xfcGxh bmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgIHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3Rh dGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlpbnQgbWluX3NjYWxlID0gRFJNX1BMQU5F X0hFTFBFUl9OT19TQ0FMSU5HOwo+IEBAIC0yMjAyLDcgKzIyMDIsNyBAQCBzdGF0aWMgaW50IHNr bF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlt YXhfc2NhbGUgPSBza2xfcGxhbmVfbWF4X3NjYWxlKGRldl9wcml2LCBmYik7Cj4gIAl9Cj4gIAo+ IC0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRl LT5iYXNlLAo+ICsJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBs YW5lX3N0YXRlLT51YXBpLAo+ICAJCQkJCQkgICZjcnRjX3N0YXRlLT51YXBpLAo+ICAJCQkJCQkg IG1pbl9zY2FsZSwgbWF4X3NjYWxlLAo+ICAJCQkJCQkgIHRydWUsIHRydWUpOwo+IEBAIC0yMjEz LDcgKzIyMTMsNyBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4g LQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51 YXBpLnZpc2libGUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJcmV0ID0gc2tsX3BsYW5lX2NoZWNr X2RzdF9jb29yZGluYXRlcyhjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gQEAgLTIyMzAsNyAr MjIzMCw3IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAKPiAgCS8qIEhXIG9ubHkgaGFzIDggYml0cyBwaXhlbCBwcmVj aXNpb24sIGRpc2FibGUgcGxhbmUgaWYgaW52aXNpYmxlICovCj4gIAlpZiAoIShwbGFuZV9zdGF0 ZS0+aHcuYWxwaGEgPj4gOCkpCj4gLQkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNl Owo+ICsJCXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgPSBmYWxzZTsKPiAgCj4gIAlwbGFuZV9z dGF0ZS0+Y3RsID0gc2tsX3BsYW5lX2N0bChjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gIAo+ IEBAIC0yMjQ5LDcgKzIyNDksNyBAQCBzdGF0aWMgYm9vbCBoYXNfZHN0X2tleV9pbl9wcmltYXJ5 X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgc3RhdGljIHZvaWQg aW50ZWxfcGxhbmVfc2V0X2NrZXkoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSwKPiAgCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqc2V0KQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBk cm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDI1YThlMjBkMjExMi4uZTdkYTRiNTEzNGIy IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTc4Niw3ICs3ODYsNyBAQCBzdGF0 aWMgaW50IGludGVsX3dtX251bV9sZXZlbHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICBzdGF0aWMgYm9vbCBpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJICAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5w bGFuZSk7Cj4gIAo+ICAJLyogRklYTUUgY2hlY2sgdGhlICdlbmFibGUnIGluc3RlYWQgKi8KPiAg CWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQo+IEBAIC04MDMsNyArODAzLDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChwbGFuZS0+aWQgPT0gUExBTkVfQ1VSU09SKQo+ICAJCXJl dHVybiBwbGFuZV9zdGF0ZS0+aHcuZmIgIT0gTlVMTDsKPiAgCWVsc2UKPiAtCQlyZXR1cm4gcGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZTsKPiArCQlyZXR1cm4gcGxhbmVfc3RhdGUtPnVhcGkudmlz aWJsZTsKPiAgfQo+ICAKPiAgc3RhdGljIHN0cnVjdCBpbnRlbF9jcnRjICpzaW5nbGVfZW5hYmxl ZF9jcnRjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBAQCAtMTA3NSw3ICsx MDc1LDcgQEAgc3RhdGljIHUxNiBnNHhfY29tcHV0ZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlLAo+ICAJCQkgIGludCBsZXZlbCkKPiAgewo+IC0Jc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsK PiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gIAkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4g QEAgLTExMDgsNyArMTEwOCw3IEBAIHN0YXRpYyB1MTYgZzR4X2NvbXB1dGVfd20oY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAljbG9jayA9IGFkanVzdGVkX21v ZGUtPmNydGNfY2xvY2s7Cj4gIAlodG90YWwgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbDsK PiAgCj4gLQl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ ICsJd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCj4g IAlpZiAocGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikgewo+ICAJCXdtID0gaW50ZWxfd21fbWV0 aG9kMihjbG9jaywgaHRvdGFsLCB3aWR0aCwgY3BwLCBsYXRlbmN5KTsKPiBAQCAtMTE3NCw3ICsx MTc0LDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9mYmNfd20oY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyBib29sIGc0eF9yYXdfcGxhbmVfd21f Y29tcHV0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSAgICAg Y29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNl LnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlpbnQgbnVtX2xldmVscyA9IGludGVsX3dtX251 bV9sZXZlbHModG9faTkxNShwbGFuZS0+YmFzZS5kZXYpKTsKPiAgCWVudW0gcGxhbmVfaWQgcGxh bmVfaWQgPSBwbGFuZS0+aWQ7Cj4gIAlib29sIGRpcnR5ID0gZmFsc2U7Cj4gQEAgLTE1ODEsNyAr MTU4MSw3IEBAIHN0YXRpYyB1MTYgdmx2X2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlLAo+ICAJCQkJaW50IGxldmVsKQo+ICB7Cj4gLQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxh bmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAgCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZTsKPiBAQCAtMTc1MSw3ICsxNzUxLDcgQEAgc3RhdGljIGJvb2wgdmx2X3Jhd19wbGFuZV93bV9z ZXQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyBib29sIHZs dl9yYXdfcGxhbmVfd21fY29tcHV0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAllbnVtIHBsYW5lX2lk IHBsYW5lX2lkID0gcGxhbmUtPmlkOwo+ICAJaW50IG51bV9sZXZlbHMgPSBpbnRlbF93bV9udW1f bGV2ZWxzKHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KSk7Cj4gIAlpbnQgbGV2ZWw7Cj4gQEAgLTI0 ODQsNyArMjQ4NCw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAKPiAgCW1ldGhvZDIgPSBpbGtfd21f bWV0aG9kMihjcnRjX3N0YXRlLT5waXhlbF9yYXRlLAo+ICAJCQkJIGNydGNfc3RhdGUtPmh3LmFk anVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gLQkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLmRzdCksCj4gKwkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBp LmRzdCksCj4gIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwo+ICAKPiAgCXJldHVybiBtaW4obWV0aG9k MSwgbWV0aG9kMik7Cj4gQEAgLTI1MTIsNyArMjUxMiw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1 dGVfc3ByX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ bWV0aG9kMSA9IGlsa193bV9tZXRob2QxKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsIGNwcCwgbWVt X3ZhbHVlKTsKPiAgCW1ldGhvZDIgPSBpbGtfd21fbWV0aG9kMihjcnRjX3N0YXRlLT5waXhlbF9y YXRlLAo+ICAJCQkJIGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4g LQkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCksCj4gKwkJCQkgZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCksCj4gIAkJCQkgY3BwLCBtZW1fdmFs dWUpOwo+ICAJcmV0dXJuIG1pbihtZXRob2QxLCBtZXRob2QyKTsKPiAgfQo+IEBAIC0yNTM3LDcg KzI1MzcsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX2N1cl93bShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAlyZXR1cm4gaWxrX3dtX21ldGhvZDIo Y3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSwKPiAgCQkJICAgICAgY3J0Y19zdGF0ZS0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2h0b3RhbCwKPiAtCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLmRzdCksCj4gKwkJCSAgICAgIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+ dWFwaS5kc3QpLAo+ICAJCQkgICAgICBjcHAsIG1lbV92YWx1ZSk7Cj4gIH0KPiAgCj4gQEAgLTI1 NTMsNyArMjU1Myw4IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAKPiAgCWNwcCA9IHBsYW5lX3N0YXRl LT5ody5mYi0+Zm9ybWF0LT5jcHBbMF07Cj4gIAo+IC0JcmV0dXJuIGlsa193bV9mYmMocHJpX3Zh bCwgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCksIGNwcCk7Cj4gKwlyZXR1 cm4gaWxrX3dtX2ZiYyhwcmlfdmFsLCBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGku ZHN0KSwKPiArCQkJICBjcHApOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdW5zaWduZWQgaW50Cj4gQEAg LTMwOTcsMTAgKzMwOTgsMTAgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAKPiAgCXBpcGVfd20tPnBpcGVfZW5h YmxlZCA9IGNydGNfc3RhdGUtPmh3LmFjdGl2ZTsKPiAgCWlmIChzcHJzdGF0ZSkgewo+IC0JCXBp cGVfd20tPnNwcml0ZXNfZW5hYmxlZCA9IHNwcnN0YXRlLT5iYXNlLnZpc2libGU7Cj4gLQkJcGlw ZV93bS0+c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0+YmFzZS52aXNpYmxlICYmCj4gLQkJCShk cm1fcmVjdF93aWR0aCgmc3Byc3RhdGUtPmJhc2UuZHN0KSAhPSBkcm1fcmVjdF93aWR0aCgmc3By c3RhdGUtPmJhc2Uuc3JjKSA+PiAxNiB8fAo+IC0JCQkgZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0 ZS0+YmFzZS5kc3QpICE9IGRybV9yZWN0X2hlaWdodCgmc3Byc3RhdGUtPmJhc2Uuc3JjKSA+PiAx Nik7Cj4gKwkJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnVhcGkudmlzaWJs ZTsKPiArCQlwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9IHNwcnN0YXRlLT51YXBpLnZpc2libGUg JiYKPiArCQkJKGRybV9yZWN0X3dpZHRoKCZzcHJzdGF0ZS0+dWFwaS5kc3QpICE9IGRybV9yZWN0 X3dpZHRoKCZzcHJzdGF0ZS0+dWFwaS5zcmMpID4+IDE2IHx8Cj4gKwkJCSBkcm1fcmVjdF9oZWln aHQoJnNwcnN0YXRlLT51YXBpLmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+dWFw aS5zcmMpID4+IDE2KTsKPiAgCX0KPiAgCj4gIAl1c2FibGVfbGV2ZWwgPSBtYXhfbGV2ZWw7Cj4g QEAgLTQwNzIsMTAgKzQwNzMsMTAgQEAgc2tsX3BsYW5lX2Rvd25zY2FsZV9hbW91bnQoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkgKgo+ICAJICogbi5iLiwg c3JjIGlzIDE2LjE2IGZpeGVkIHBvaW50LCBkc3QgaXMgd2hvbGUgaW50ZWdlci4KPiAgCSAqLwo+ IC0Jc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsK PiAtCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2 Owo+IC0JZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiAt CWRzdF9oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJc3Jj X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCXNy Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJ ZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiArCWRzdF9o ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICAKPiAgCWZwX3df cmF0aW8gPSBkaXZfZml4ZWQxNihzcmNfdywgZHN0X3cpOwo+ICAJZnBfaF9yYXRpbyA9IGRpdl9m aXhlZDE2KHNyY19oLCBkc3RfaCk7Cj4gQEAgLTQwOTAsMTQgKzQwOTEsMTQgQEAgc2tsX3BsYW5l X3JlbGF0aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiAgCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlLAo+ICAJCQkgICAgIGludCBjb2xvcl9wbGFuZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAr CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l X3N0YXRlLT5ody5mYjsKPiAgCXUzMiBkYXRhX3JhdGU7Cj4gIAl1MzIgd2lkdGggPSAwLCBoZWln aHQgPSAwOwo+ICAJdWludF9maXhlZF8xNl8xNl90IGRvd25fc2NhbGVfYW1vdW50Owo+ICAJdTY0 IHJhdGU7Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFw bGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCWlmIChwbGFu ZS0+aWQgPT0gUExBTkVfQ1VSU09SKQo+IEBAIC00MTEyLDggKzQxMTMsOCBAQCBza2xfcGxhbmVf cmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ICAJICogdGhlIDkwLzI3MCBkZWdyZWUgcGxhbmUgcm90YXRpb24gY2FzZXMgKHRvIG1h dGNoIHRoZQo+ICAJICogR1RUIG1hcHBpbmcpLCBoZW5jZSBubyBuZWVkIHRvIGFjY291bnQgZm9y IHJvdGF0aW9uIGhlcmUuCj4gIAkgKi8KPiAtCXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQloZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBs YW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICAKPiAgCS8qIFVWIHBsYW5lIGRvZXMg MS8yIHBpeGVsIHN1Yi1zYW1wbGluZyAqLwo+ICAJaWYgKGNvbG9yX3BsYW5lID09IDEpIHsKPiBA QCAtNDYyMCw3ICs0NjIxLDcgQEAgc2tsX2NvbXB1dGVfcGxhbmVfd21fcGFyYW1zKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJICogdGhlIDkwLzI3MCBkZWdy ZWUgcGxhbmUgcm90YXRpb24gY2FzZXMgKHRvIG1hdGNoIHRoZQo+ICAJICogR1RUIG1hcHBpbmcp LCBoZW5jZSBubyBuZWVkIHRvIGFjY291bnQgZm9yIHJvdGF0aW9uIGhlcmUuCj4gIAkgKi8KPiAt CXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4g Kwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ ICAKPiAgCXJldHVybiBza2xfY29tcHV0ZV93bV9wYXJhbXMoY3J0Y19zdGF0ZSwgd2lkdGgsCj4g IAkJCQkgICAgIGZiLT5mb3JtYXQsIGZiLT5tb2RpZmllciwKPiBAQCAtNDkwMiw3ICs0OTAzLDcg QEAgc3RhdGljIGludCBza2xfYnVpbGRfcGxhbmVfd21fdXYoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBp LnBsYW5lKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3Rh dGUtPmh3LmZiOwo+ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiAgCWlu dCByZXQ7Cj4gQEAgLTQ5MjgsNyArNDkyOSw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5l X3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgaW50IGlj bF9idWlsZF9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAg ewo+IC0JZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKS0+aWQ7Cj4gKwllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxf cGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpLT5pZDsKPiAgCWludCByZXQ7Cj4gIAo+ICAJ LyogV2F0ZXJtYXJrcyBjYWxjdWxhdGVkIGluIG1hc3RlciAqLwo+IEBAIC01OTMwLDcgKzU5MzEs NyBAQCB2b2lkIGc0eF93bV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiAgCQlpbnQgbGV2 ZWw7Cj4gIAo+IC0JCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChwbGFu ZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJZm9yIChsZXZl bCA9IDA7IGxldmVsIDwgMzsgbGV2ZWwrKykgewo+IEBAIC02MDg1LDcgKzYwODYsNyBAQCB2b2lk IHZsdl93bV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJ ZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiAgCQlpbnQgbGV2ZWw7Cj4gIAo+ IC0JCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChwbGFuZV9zdGF0ZS0+ dWFwaS52aXNpYmxlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJZm9yIChsZXZlbCA9IDA7IGxl dmVsIDwgd21fc3RhdGUtPm51bV9sZXZlbHM7IGxldmVsKyspIHsKPiAtLSAKPiAyLjIzLjAKPiAK PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0t IApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.4 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92852CA9EC4 for ; Tue, 29 Oct 2019 15:43:29 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 726E820874 for ; Tue, 29 Oct 2019 15:43:29 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 726E820874 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0384D6E42D; Tue, 29 Oct 2019 15:43:29 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0F4256E42D for ; Tue, 29 Oct 2019 15:43:28 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Oct 2019 08:43:27 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,244,1569308400"; d="scan'208";a="189983213" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga007.jf.intel.com with SMTP; 29 Oct 2019 08:43:24 -0700 Received: by stinkbox (sSMTP sendmail emulation); Tue, 29 Oct 2019 17:43:23 +0200 Date: Tue, 29 Oct 2019 17:43:23 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maarten Lankhorst Message-ID: <20191029154323.GB1208@intel.com> References: <20191029072229.27092-1-maarten.lankhorst@linux.intel.com> <20191029072229.27092-11-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191029072229.27092-11-maarten.lankhorst@linux.intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Intel-gfx] [CI 11/12] drm/i915: Perform automated conversions for plane uapi/hw split, base -> uapi. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191029154323.nmEKiI1zLE3xFpT6IgtKFUM5UYpJCNYeYlMacI8G_As@z> T24gVHVlLCBPY3QgMjksIDIwMTkgYXQgMDg6MjI6MjhBTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU3BsaXQgdXAgcGxhbmVfc3RhdGUtPmJhc2UgdG8gdWFwaS4gVGhpcyBpcyBk b25lIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGF0Y2gsCj4gcmFuIGFmdGVyIHRoZSBwcmV2aW91cyBj b21taXQgdGhhdCBzcGxpdHMgb3V0IGFueSBodyByZWZlcmVuY2VzOgo+IAo+IEBACj4gc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpUOwo+IGlkZW50aWZpZXIgeDsKPiBAQAo+IC1ULT5iYXNlLngK PiArVC0+dWFwaS54Cj4gCj4gQEAKPiBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKlQ7Cj4gQEAK PiAtVC0+YmFzZQo+ICtULT51YXBpCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9y c3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYyAgIHwgICAyICstCj4gIC4uLi9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8ICAzMiArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAyOTggKysrKysrKysrLS0t LS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMgICAgICB8 ICAxMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYyAg fCAgIDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyAg IHwgMTM2ICsrKystLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAg ICAgICAgICB8ICA1NyArKy0tCj4gIDcgZmlsZXMgY2hhbmdlZCwgMjcxIGluc2VydGlvbnMoKyks IDI2OCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYXRvbWljLmMKPiBpbmRleCBmYjQxMjZkZTk5NGQuLmNiNWM5MTRmNjI3ZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwo+IEBAIC0yOTksNyAr Mjk5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcihzdHJ1Y3QgaW50 ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGEKPiAgCWlmIChwbGFuZV9zdGF0ZSAmJiBw bGFuZV9zdGF0ZS0+aHcuZmIgJiYKPiAgCSAgICBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1hdC0+ aXNfeXV2ICYmCj4gIAkgICAgcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQtPm51bV9wbGFuZXMg PiAxKSB7Cj4gLQkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJCWlmIChJU19HRU4o ZGV2X3ByaXYsIDkpICYmCj4gIAkJICAgICFJU19HRU1JTklMQUtFKGRldl9wcml2KSkgewo+ICAJ CQltb2RlID0gU0tMX1BTX1NDQUxFUl9NT0RFX05WMTI7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5jCj4gaW5kZXggY2FjMWQ2YWU2N2Y2 Li5iYTdkNTQyMWY3OTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiBAQCAtNTYsNyArNTYsNyBAQCBzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lX2FsbG9jKHZvaWQpCj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7Cj4gIAl9Cj4gIAo+IC0JX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9yZXNldCgmcGxhbmUt PmJhc2UsICZwbGFuZV9zdGF0ZS0+YmFzZSk7Cj4gKwlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5l X3Jlc2V0KCZwbGFuZS0+YmFzZSwgJnBsYW5lX3N0YXRlLT51YXBpKTsKPiAgCXBsYW5lX3N0YXRl LT5zY2FsZXJfaWQgPSAtMTsKPiAgCj4gIAlyZXR1cm4gcGxhbmU7Cj4gQEAgLTg4LDEyICs4OCwx MiBAQCBpbnRlbF9wbGFuZV9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUp Cj4gIAlpZiAoIWludGVsX3N0YXRlKQo+ICAJCXJldHVybiBOVUxMOwo+ICAKPiAtCV9fZHJtX2F0 b21pY19oZWxwZXJfcGxhbmVfZHVwbGljYXRlX3N0YXRlKHBsYW5lLCAmaW50ZWxfc3RhdGUtPmJh c2UpOwo+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kdXBsaWNhdGVfc3RhdGUocGxhbmUs ICZpbnRlbF9zdGF0ZS0+dWFwaSk7Cj4gIAo+ICAJaW50ZWxfc3RhdGUtPnZtYSA9IE5VTEw7Cj4g IAlpbnRlbF9zdGF0ZS0+ZmxhZ3MgPSAwOwo+ICAKPiAtCXJldHVybiAmaW50ZWxfc3RhdGUtPmJh c2U7Cj4gKwlyZXR1cm4gJmludGVsX3N0YXRlLT51YXBpOwo+ICB9Cj4gIAo+ICAvKioKPiBAQCAt MTExLDcgKzExMSw3IEBAIGludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wbGFu ZSAqcGxhbmUsCj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0gdG9f aW50ZWxfcGxhbmVfc3RhdGUoc3RhdGUpOwo+ICAJV0FSTl9PTihwbGFuZV9zdGF0ZS0+dm1hKTsK PiAgCj4gLQlfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoJnBsYW5lX3N0 YXRlLT5iYXNlKTsKPiArCV9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSgm cGxhbmVfc3RhdGUtPnVhcGkpOwo+ICAJa2ZyZWUocGxhbmVfc3RhdGUpOwo+ICB9Cj4gIAo+IEBA IC0xMjEsNyArMTIxLDcgQEAgdW5zaWduZWQgaW50IGludGVsX3BsYW5lX2RhdGFfcmF0ZShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQgaW50 IGNwcDsKPiAgCj4gLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAoIXBs YW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJY3BwID0gZmIt PmZvcm1hdC0+Y3BwWzBdOwo+IEBAIC0xNDQsMTAgKzE0NCwxMCBAQCBib29sIGludGVsX3BsYW5l X2NhbGNfbWluX2NkY2xrKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYp Owo+ICAJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSA9Cj4gIAkJ aW50ZWxfYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwbGFuZV9zdGF0ZS0+YmFzZS5jcnRj KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwbGFuZV9zdGF0 ZS0+dWFwaS5jcnRjKTsKClRoaXMgbG9va3Mgd3JvbmcuIFNob3VsZCBiZSBody5jcnRjIEkgYmVs aWV2ZS4KCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAgCj4gLQlp ZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgfHwgIXBsYW5lLT5taW5fY2RjbGspCj4gKwlp ZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgfHwgIXBsYW5lLT5taW5fY2RjbGspCgpOb3Qg ZHVwbGljYXRpbmcgdmlzaWJsZSxzcmMsZHN0IGxlYWRzIHRvIHNsaWdodGx5IGNvbmZ1c2luZyBs b29raW5nCmNvZGUuIEkgd29uZGVyIGlmIGl0IHdvdWxkbid0IGJlIGJldHRlciB0byBqdXN0IGR1 cGxpY2F0ZSB0aG9zZSBhcwp3ZWxsLi4uCgo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAljcnRj X3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4g QEAgLTE4MSw3ICsxODEsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3Rh dGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJCQkJCWNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlLAo+ICAJCQkJCXN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnBs YW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShuZXdf cGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBuZXdfcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTE5 MCw3ICsxOTAsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJbmV3X2NydGNfc3RhdGUt PmM4X3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7Cj4gIAluZXdfY3J0Y19zdGF0ZS0+ZGF0YV9y YXRlW3BsYW5lLT5pZF0gPSAwOwo+ICAJbmV3X2NydGNfc3RhdGUtPm1pbl9jZGNsa1twbGFuZS0+ aWRdID0gMDsKPiAtCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gZmFsc2U7Cj4gKwlu ZXdfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSA9IGZhbHNlOwo+ICAKPiAgCWlmICghbmV3X3Bs YW5lX3N0YXRlLT5ody5jcnRjICYmICFvbGRfcGxhbmVfc3RhdGUtPmh3LmNydGMpCj4gIAkJcmV0 dXJuIDA7Cj4gQEAgLTIwMCwxOCArMjAwLDE4IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hl Y2tfd2l0aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfCj4g IAkJcmV0dXJuIHJldDsKPiAgCj4gIAkvKiBGSVhNRSBwcmUtZzR4IGRvbid0IHdvcmsgbGlrZSB0 aGlzICovCj4gLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAobmV3 X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJbmV3X2NydGNfc3RhdGUtPmFjdGl2ZV9w bGFuZXMgfD0gQklUKHBsYW5lLT5pZCk7Cj4gIAo+IC0JaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFz ZS52aXNpYmxlICYmCj4gKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgJiYKPiAg CSAgICBkcm1fZm9ybWF0X2luZm9faXNfeXV2X3NlbWlwbGFuYXIoZmItPmZvcm1hdCkpCj4gIAkJ bmV3X2NydGNfc3RhdGUtPm52MTJfcGxhbmVzIHw9IEJJVChwbGFuZS0+aWQpOwo+ICAKPiAtCWlm IChuZXdfcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ICsJaWYgKG5ld19wbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlICYmCj4gIAkgICAgZmItPmZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JN QVRfQzgpCj4gIAkJbmV3X2NydGNfc3RhdGUtPmM4X3BsYW5lcyB8PSBCSVQocGxhbmUtPmlkKTsK PiAgCj4gLQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgfHwgb2xkX3BsYW5lX3N0 YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUg fHwgb2xkX3BsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJbmV3X2NydGNfc3RhdGUtPnVw ZGF0ZV9wbGFuZXMgfD0gQklUKHBsYW5lLT5pZCk7Cj4gIAo+ICAJbmV3X2NydGNfc3RhdGUtPmRh dGFfcmF0ZVtwbGFuZS0+aWRdID0KPiBAQCAtMjQ2LDcgKzI0Niw3IEBAIGludCBpbnRlbF9wbGFu ZV9hdG9taWNfY2hlY2soc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAljb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Cj4gIAlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gIAo+IC0JbmV3X3BsYW5lX3N0YXRlLT5i YXNlLnZpc2libGUgPSBmYWxzZTsKPiArCW5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0g ZmFsc2U7Cj4gIAlpZiAoIWNydGMpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IEBAIC0zNTUsNyArMzU1 LDcgQEAgdm9pZCBza2xfdXBkYXRlX3BsYW5lc19vbl9jcnRjKHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKnN0YXRlLAo+ICAJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0 YXRlID0KPiAgCQkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5l KTsKPiAgCj4gLQkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKSB7Cj4gKwkJaWYg KG5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKSB7Cj4gIAkJCWludGVsX3VwZGF0ZV9wbGFu ZShwbGFuZSwgbmV3X2NydGNfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSk7Cj4gIAkJfSBlbHNlIGlm IChuZXdfcGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2ZSkgewo+ICAJCQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKm1hc3RlciA9Cj4gQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIGk5eHhfdXBkYXRlX3BsYW5l c19vbl9jcnRjKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJCSAgICAhKHVw ZGF0ZV9tYXNrICYgQklUKHBsYW5lLT5pZCkpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJaWYg KG5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChuZXdfcGxhbmVfc3RhdGUt PnVhcGkudmlzaWJsZSkKPiAgCQkJaW50ZWxfdXBkYXRlX3BsYW5lKHBsYW5lLCBuZXdfY3J0Y19z dGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsKPiAgCQllbHNlCj4gIAkJCWludGVsX2Rpc2FibGVfcGxh bmUocGxhbmUsIG5ld19jcnRjX3N0YXRlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGZiYmU2Zjc1MjcxNi4uOTFhMDU5ZTVmZGNiIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBA QCAtMjA4Miw3ICsyMDgyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9zdXJmX2FsaWdu bWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAgCj4gIHN0YXRpYyBib29s IGludGVsX3BsYW5lX3VzZXNfZmVuY2UoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7 Cj4gIAo+ICAJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPCA0IHx8Cj4gQEAgLTIzOTEsNyAr MjM5MSw3IEBAIHN0YXRpYyB1MzIgaW50ZWxfcGxhbmVfY29tcHV0ZV9hbGlnbmVkX29mZnNldChp bnQgKngsIGludCAqeSwKPiAgCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnN0YXRlLAo+ICAJCQkJCSAgICAgIGludCBjb2xvcl9wbGFuZSkKPiAgewo+IC0Jc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHN0YXRlLT5iYXNlLnBs YW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShzdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGludGVsX3BsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlv biA9IHN0YXRlLT5ody5yb3RhdGlvbjsKPiBAQCAtMjU3OSw3ICsyNTc5LDcgQEAgaW50ZWxfZmJf c3RyaWRlX2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNv bG9yX3BsYW5lKQo+ICAKPiAgYm9vbCBpbnRlbF9wbGFuZV9jYW5fcmVtYXAoY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAr CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCBpOwo+IEBAIC0yNjE5LDcgKzI2MTksNyBA QCBib29sIGludGVsX3BsYW5lX2Nhbl9yZW1hcChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQo+ICAKPiAgc3RhdGljIGJvb2wgaW50ZWxfcGxhbmVfbmVlZHNfcmVt YXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0J c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5i YXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9 IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCXUzMiBzdHJpZGUsIG1heF9zdHJpZGU7Cj4g QEAgLTI2MjgsNyArMjYyOCw3IEBAIHN0YXRpYyBib29sIGludGVsX3BsYW5lX25lZWRzX3JlbWFw KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAkgKiBObyBy ZW1hcHBpbmcgZm9yIGludmlzaWJsZSBwbGFuZXMgc2luY2Ugd2UgZG9uJ3QgaGF2ZQo+ICAJICog YW4gYWN0dWFsIHNvdXJjZSB2aWV3cG9ydCB0byByZW1hcC4KPiAgCSAqLwo+IC0JaWYgKCFwbGFu ZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxl KQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlpZiAoIWludGVsX3BsYW5lX2Nhbl9yZW1hcChw bGFuZV9zdGF0ZSkpCj4gQEAgLTI4MTEsNyArMjgxMSw3IEBAIHN0YXRpYyB2b2lkCj4gIGludGVs X3BsYW5lX3JlbWFwX2d0dChzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUo cGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZS0+ZGV2KTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmh3LmZiOwo+ICAJc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYiA9IHRv X2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKPiAgCXN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvICpp bmZvID0gJnBsYW5lX3N0YXRlLT52aWV3LnJvdGF0ZWQ7Cj4gQEAgLTI4MjYsMjAgKzI4MjYsMjAg QEAgaW50ZWxfcGxhbmVfcmVtYXBfZ3R0KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIAlwbGFuZV9zdGF0ZS0+dmlldy50eXBlID0gZHJtX3JvdGF0aW9uXzkwX29yXzI3 MChyb3RhdGlvbikgPwo+ICAJCUk5MTVfR0dUVF9WSUVXX1JPVEFURUQgOiBJOTE1X0dHVFRfVklF V19SRU1BUFBFRDsKPiAgCj4gLQlzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAx NjsKPiAtCXNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2Owo+IC0Jc3JjX3cg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAtCXNyY19o ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICsJc3Jj X3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7Cj4gKwlzcmNfeSA9IHBsYW5lX3N0 YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKPiArCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCj4gIAlXQVJOX09OKGlzX2Njc19tb2RpZmll cihmYi0+bW9kaWZpZXIpKTsKPiAgCj4gIAkvKiBNYWtlIHNyYyBjb29yZGluYXRlcyByZWxhdGl2 ZSB0byB0aGUgdmlld3BvcnQgKi8KPiAtCWRybV9yZWN0X3RyYW5zbGF0ZSgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjLAo+ICsJZHJtX3JlY3RfdHJhbnNsYXRlKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMs Cj4gIAkJCSAgIC0oc3JjX3ggPDwgMTYpLCAtKHNyY195IDw8IDE2KSk7Cj4gIAo+ICAJLyogUm90 YXRlIHNyYyBjb29yZGluYXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2aWV3ICovCj4gIAlpZiAo ZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCj4gLQkJZHJtX3JlY3Rfcm90YXRlKCZw bGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwkJZHJtX3JlY3Rfcm90YXRlKCZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmMsCj4gIAkJCQlzcmNfdyA8PCAxNiwgc3JjX2ggPDwgMTYsCj4gIAkJCQlEUk1fTU9E RV9ST1RBVEVfMjcwKTsKPiAgCj4gQEAgLTI5NTksNyArMjk1OSw3IEBAIGludGVsX3BsYW5lX2Nv bXB1dGVfZ3R0KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAo+ICAJ LyogUm90YXRlIHNyYyBjb29yZGluYXRlcyB0byBtYXRjaCByb3RhdGVkIEdUVCB2aWV3ICovCj4g IAlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikpCj4gLQkJZHJtX3JlY3Rfcm90 YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwkJZHJtX3JlY3Rfcm90YXRlKCZwbGFuZV9z dGF0ZS0+dWFwaS5zcmMsCj4gIAkJCQlmYi0+YmFzZS53aWR0aCA8PCAxNiwgZmItPmJhc2UuaGVp Z2h0IDw8IDE2LAo+ICAJCQkJRFJNX01PREVfUk9UQVRFXzI3MCk7Cj4gIAo+IEBAIC0zMTI3LDkg KzMxMjcsOSBAQCBpbnRlbF9zZXRfcGxhbmVfdmlzaWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSwKPiAgCQkJYm9vbCB2aXNpYmxlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l KTsKPiAgCj4gLQlwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gdmlzaWJsZTsKPiArCXBsYW5l X3N0YXRlLT51YXBpLnZpc2libGUgPSB2aXNpYmxlOwo+ICAKPiAgCWlmICh2aXNpYmxlKQo+ICAJ CWNydGNfc3RhdGUtPnVhcGkucGxhbmVfbWFzayB8PSBkcm1fcGxhbmVfbWFzaygmcGxhbmUtPmJh c2UpOwo+IEBAIC0zMjc1LDggKzMyNzUsOCBAQCBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2Jq KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJcGxhbmVfc3RhdGUtPmNydGNfdyA9 IGZiLT53aWR0aDsKPiAgCXBsYW5lX3N0YXRlLT5jcnRjX2ggPSBmYi0+aGVpZ2h0Owo+ICAKPiAt CWludGVsX3N0YXRlLT5iYXNlLnNyYyA9IGRybV9wbGFuZV9zdGF0ZV9zcmMocGxhbmVfc3RhdGUp Owo+IC0JaW50ZWxfc3RhdGUtPmJhc2UuZHN0ID0gZHJtX3BsYW5lX3N0YXRlX2Rlc3QocGxhbmVf c3RhdGUpOwo+ICsJaW50ZWxfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYyhw bGFuZV9zdGF0ZSk7Cj4gKwlpbnRlbF9zdGF0ZS0+dWFwaS5kc3QgPSBkcm1fcGxhbmVfc3RhdGVf ZGVzdChwbGFuZV9zdGF0ZSk7Cj4gIAo+ICAJaWYgKHBsYW5lX2NvbmZpZy0+dGlsaW5nKQo+ICAJ CWRldl9wcml2LT5wcmVzZXJ2ZV9iaW9zX3N3aXp6bGUgPSB0cnVlOwo+IEBAIC0zNDExLDEzICsz NDExLDEzIEBAIHN0YXRpYyBib29sIHNrbF9jaGVja19tYWluX2Njc19jb29yZGluYXRlcyhzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlCj4gIAo+ICBzdGF0aWMgaW50IHNrbF9j aGVja19tYWluX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK PiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVu c2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAtCWludCB4 ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE2Owo+IC0JaW50IHkgPSBwbGFuZV9zdGF0 ZS0+YmFzZS5zcmMueTEgPj4gMTY7Cj4gLQlpbnQgdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0JaW50IGggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwlpbnQgeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNy Yy54MSA+PiAxNjsKPiArCWludCB5ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2Owo+ ICsJaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsK PiArCWludCBoID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2 Owo+ICAJaW50IG1heF93aWR0aDsKPiAgCWludCBtYXhfaGVpZ2h0Owo+ICAJdTMyIGFsaWdubWVu dCwgb2Zmc2V0LCBhdXhfb2Zmc2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNl dDsKPiBAQCAtMzUwMCw3ICszNTAwLDcgQEAgc3RhdGljIGludCBza2xfY2hlY2tfbWFpbl9zdXJm YWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAkgKiBQdXQgdGhl IGZpbmFsIGNvb3JkaW5hdGVzIGJhY2sgc28gdGhhdCB0aGUgc3JjCj4gIAkgKiBjb29yZGluYXRl IGNoZWNrcyB3aWxsIHNlZSB0aGUgcmlnaHQgdmFsdWVzLgo+ICAJICovCj4gLQlkcm1fcmVjdF90 cmFuc2xhdGVfdG8oJnBsYW5lX3N0YXRlLT5iYXNlLnNyYywKPiArCWRybV9yZWN0X3RyYW5zbGF0 ZV90bygmcGxhbmVfc3RhdGUtPnVhcGkuc3JjLAo+ICAJCQkgICAgICB4IDw8IDE2LCB5IDw8IDE2 KTsKPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtMzUxMiwxMCArMzUxMiwxMCBAQCBzdGF0aWMgaW50 IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUpCj4gIAl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90 YXRpb247Cj4gIAlpbnQgbWF4X3dpZHRoID0gc2tsX21heF9wbGFuZV93aWR0aChmYiwgMSwgcm90 YXRpb24pOwo+ICAJaW50IG1heF9oZWlnaHQgPSA0MDk2Owo+IC0JaW50IHggPSBwbGFuZV9zdGF0 ZS0+YmFzZS5zcmMueDEgPj4gMTc7Cj4gLQlpbnQgeSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55 MSA+PiAxNzsKPiAtCWludCB3ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNy YykgPj4gMTc7Cj4gLQlpbnQgaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uu c3JjKSA+PiAxNzsKPiArCWludCB4ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngxID4+IDE3Owo+ ICsJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTc7Cj4gKwlpbnQgdyA9IGRy bV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE3Owo+ICsJaW50IGggPSBk cm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTc7Cj4gIAl1MzIgb2Zm c2V0Owo+ICAKPiAgCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgcGxhbmVfc3RhdGUsIDEp Owo+IEBAIC0zNTM4LDggKzM1MzgsOCBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9z dXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHN0YXRpYyBp bnQgc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5ody5mYjsKPiAtCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54 MSA+PiAxNjsKPiAtCWludCBzcmNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsK PiArCWludCBzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNjsKPiArCWludCBz cmNfeSA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNjsKPiAgCWludCBoc3ViID0gZmIt PmZvcm1hdC0+aHN1YjsKPiAgCWludCB2c3ViID0gZmItPmZvcm1hdC0+dnN1YjsKPiAgCWludCB4 ID0gc3JjX3ggLyBoc3ViOwo+IEBAIC0zNTY1LDcgKzM1NjUsNyBAQCBpbnQgc2tsX2NoZWNrX3Bs YW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCWlm IChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJcmV0dXJuIDA7 Cj4gIAo+ICAJLyoKPiBAQCAtMzY4OSw3ICszNjg5LDcgQEAgc3RhdGljIHUzMiBpOXh4X3BsYW5l X2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICBj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwo+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0 aW9uOwo+ICAJdTMyIGRzcGNudHI7Cj4gQEAgLTM3NDYsNyArMzc0Niw3IEBAIHN0YXRpYyB1MzIg aTl4eF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIGludCBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRvX2k5 MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCBzcmNfeCwgc3JjX3ks IHNyY193Owo+ICAJdTMyIG9mZnNldDsKPiBAQCAtMzc1NiwxMiArMzc1NiwxMiBAQCBpbnQgaTl4 eF9jaGVja19wbGFuZV9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0 ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJ CXJldHVybiAwOwo+ICAKPiAtCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5i YXNlLnNyYykgPj4gMTY7Cj4gLQlzcmNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAx NjsKPiAtCXNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2Owo+ICsJc3JjX3cg PSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCXNyY194 ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLngxID4+IDE2Owo+ICsJc3JjX3kgPSBwbGFuZV9zdGF0 ZS0+dWFwaS5zcmMueTEgPj4gMTY7Cj4gIAo+ICAJLyogVW5kb2N1bWVudGVkIGhhcmR3YXJlIGxp bWl0IG9uIGk5NjUvZzR4L3Zsdi9jaHYgKi8KPiAgCWlmIChIQVNfR01DSChkZXZfcHJpdikgJiYg ZmItPmZvcm1hdC0+Y3BwWzBdID09IDggJiYgc3JjX3cgPiAyMDQ4KQo+IEBAIC0zNzc5LDE0ICsz Nzc5LDE0IEBAIGludCBpOXh4X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCSAqIFB1dCB0aGUgZmluYWwgY29vcmRpbmF0ZXMgYmFj ayBzbyB0aGF0IHRoZSBzcmMKPiAgCSAqIGNvb3JkaW5hdGUgY2hlY2tzIHdpbGwgc2VlIHRoZSBy aWdodCB2YWx1ZXMuCj4gIAkgKi8KPiAtCWRybV9yZWN0X3RyYW5zbGF0ZV90bygmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjLAo+ICsJZHJtX3JlY3RfdHJhbnNsYXRlX3RvKCZwbGFuZV9zdGF0ZS0+dWFw aS5zcmMsCj4gIAkJCSAgICAgIHNyY194IDw8IDE2LCBzcmNfeSA8PCAxNik7Cj4gIAo+ICAJLyog SFNXL0JEVyBkbyB0aGlzIGF1dG9tYWdpY2FsbHkgaW4gaGFyZHdhcmUgKi8KPiAgCWlmICghSVNf SEFTV0VMTChkZXZfcHJpdikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAgCQl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gLQkJaW50IHNy Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQkJ aW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2 Owo+ICsJCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE2Owo+ICsJCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVh cGkuc3JjKSA+PiAxNjsKPiAgCj4gIAkJaWYgKHJvdGF0aW9uICYgRFJNX01PREVfUk9UQVRFXzE4 MCkgewo+ICAJCQlzcmNfeCArPSBzcmNfdyAtIDE7Cj4gQEAgLTM4MjMsMTQgKzM4MjMsMTQgQEAg c3RhdGljIGludAo+ICBpOXh4X3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCWludCByZXQ7Cj4gIAo+ICAJ cmV0ID0gY2h2X3BsYW5lX2NoZWNrX3JvdGF0aW9uKHBsYW5lX3N0YXRlKTsKPiAgCWlmIChyZXQp Cj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19w bGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBl cl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgJmNydGNf c3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ICAJ CQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiBAQCAtMzg0Myw3ICszODQzLDcg QEAgaTl4eF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpZiAoIXBsYW5lX3N0YXRlLT5i YXNlLnZpc2libGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJcmV0 dXJuIDA7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5hdGVzKHBs YW5lX3N0YXRlKTsKPiBAQCAtMzg2NCwxMCArMzg2NCwxMCBAQCBzdGF0aWMgdm9pZCBpOXh4X3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJdTMyIGxpbmVhcl9vZmZz ZXQ7Cj4gIAlpbnQgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS54Owo+ICAJaW50IHkg PSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueTsKPiAtCWludCBjcnRjX3ggPSBwbGFuZV9z dGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0 LnkxOwo+IC0JaW50IGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5k c3QpOwo+IC0JaW50IGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uu ZHN0KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7Cj4gKwlpbnQg Y3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ICsJaW50IGNydGNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJaW50IGNydGNfaCA9IGRybV9y ZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCXVuc2lnbmVkIGxvbmcgaXJx ZmxhZ3M7Cj4gIAl1MzIgZHNwYWRkcl9vZmZzZXQ7Cj4gIAl1MzIgZHNwY250cjsKPiBAQCAtNDIy MSw3ICs0MjIxLDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PQo+IC0JCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gKwkJdG9faTkx NShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQgaW50IHJvdGF0 aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRl bF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiBAQCAtNDI3Nyw5 ICs0Mjc3LDkgQEAgdTMyIGdsa19wbGFuZV9jb2xvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiArCQl0b19p OTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJ c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51 YXBpLnBsYW5lKTsKPiAgCXUzMiBwbGFuZV9jb2xvcl9jdGwgPSAwOwo+ICAKPiAgCXBsYW5lX2Nv bG9yX2N0bCB8PSBQTEFORV9DT0xPUl9QTEFORV9HQU1NQV9ESVNBQkxFOwo+IEBAIC01NjIzLDEx ICs1NjIzLDExIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9zY2FsZXJfcGxhbmUoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgICBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3Bs YW5lID0KPiAtCQl0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwkJ dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9wbGFuZS0+YmFzZS5kZXYpOwo+ ICAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlp bnQgcmV0Owo+IC0JYm9vbCBmb3JjZV9kZXRhY2ggPSAhZmIgfHwgIXBsYW5lX3N0YXRlLT5iYXNl LnZpc2libGU7Cj4gKwlib29sIGZvcmNlX2RldGFjaCA9ICFmYiB8fCAhcGxhbmVfc3RhdGUtPnVh cGkudmlzaWJsZTsKPiAgCWJvb2wgbmVlZF9zY2FsZXIgPSBmYWxzZTsKPiAgCj4gIAkvKiBQcmUt Z2VuMTEgYW5kIFNEUiBwbGFuZXMgYWx3YXlzIG5lZWQgYSBzY2FsZXIgZm9yIHBsYW5hciBmb3Jt YXRzLiAqLwo+IEBAIC01NjM4LDEwICs1NjM4LDEwIEBAIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9z Y2FsZXJfcGxhbmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlyZXQg PSBza2xfdXBkYXRlX3NjYWxlcihjcnRjX3N0YXRlLCBmb3JjZV9kZXRhY2gsCj4gIAkJCQlkcm1f cGxhbmVfaW5kZXgoJmludGVsX3BsYW5lLT5iYXNlKSwKPiAgCQkJCSZwbGFuZV9zdGF0ZS0+c2Nh bGVyX2lkLAo+IC0JCQkJZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4g MTYsCj4gLQkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTYs Cj4gLQkJCQlkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKPiAtCQkJCWRy bV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKPiArCQkJCWRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2LAo+ICsJCQkJZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2LAo+ICsJCQkJZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT51YXBpLmRzdCksCj4gKwkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRl LT51YXBpLmRzdCksCj4gIAkJCQlmYiA/IGZiLT5mb3JtYXQgOiBOVUxMLCBuZWVkX3NjYWxlcik7 Cj4gIAo+ICAJaWYgKHJldCB8fCBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkIDwgMCkKPiBAQCAtNjA1 Nyw3ICs2MDU3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIAkJICogU28gZGlzYWJsZSB1bmRl cnJ1biByZXBvcnRpbmcgYmVmb3JlIGFsbCB0aGUgcGxhbmVzIGdldCBkaXNhYmxlZC4KPiAgCQkg Ki8KPiAgCQlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSAmJiBvbGRfcHJpbWFyeV9zdGF0ZS0+dmlz aWJsZSAmJgo+IC0JCSAgICAobW9kZXNldCB8fCAhbmV3X3ByaW1hcnlfc3RhdGUtPmJhc2Uudmlz aWJsZSkpCj4gKwkJICAgIChtb2Rlc2V0IHx8ICFuZXdfcHJpbWFyeV9zdGF0ZS0+dWFwaS52aXNp YmxlKSkKPiAgCQkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJp diwgY3J0Yy0+cGlwZSwgZmFsc2UpOwo+ICAJfQo+ICAKPiBAQCAtNjE0NCw3ICs2MTQ0LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSwKPiAgCj4gIAkJaW50ZWxfZGlzYWJsZV9wbGFuZShwbGFuZSwgbmV3X2Ny dGNfc3RhdGUpOwo+ICAKPiAtCQlpZiAob2xkX3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4g KwkJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCQlmYl9iaXRzIHw9IHBs YW5lLT5mcm9udGJ1ZmZlcl9iaXQ7Cj4gIAl9Cj4gIAo+IEBAIC03MTUzLDcgKzcxNTMsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICAJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQo+ ICAJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+YmFzZS5zdGF0ZSk7Cj4gIAo+IC0JCWlm IChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChwbGFuZV9zdGF0ZS0+dWFwaS52 aXNpYmxlKQo+ICAJCQlpbnRlbF9wbGFuZV9kaXNhYmxlX25vYXRvbWljKGludGVsX2NydGMsIHBs YW5lKTsKPiAgCX0KPiAgCj4gQEAgLTEwNzI4LDcgKzEwNzI4LDcgQEAgc3RhdGljIGJvb2wgaGFz d2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIHN0YXRpYyB1 MzIgaW50ZWxfY3Vyc29yX2Jhc2UoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAt CQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRvX2k5MTUocGxh bmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJdTMyIGJhc2U7Cj4gQEAgLTEw NzQzLDggKzEwNzQzLDggQEAgc3RhdGljIHUzMiBpbnRlbF9jdXJzb3JfYmFzZShjb25zdCBzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAKPiAgc3RhdGljIHUzMiBpbnRl bF9jdXJzb3JfcG9zaXRpb24oY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKPiAgewo+IC0JaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQg eSA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC55MTsKPiArCWludCB4ID0gcGxhbmVfc3RhdGUtPnVh cGkuZHN0LngxOwo+ICsJaW50IHkgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7Cj4gIAl1MzIg cG9zID0gMDsKPiAgCj4gIAlpZiAoeCA8IDApIHsKPiBAQCAtMTA3NjUsOSArMTA3NjUsOSBAQCBz dGF0aWMgdTMyIGludGVsX2N1cnNvcl9wb3NpdGlvbihjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQo+ICBzdGF0aWMgYm9vbCBpbnRlbF9jdXJzb3Jfc2l6ZV9vayhj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAljb25z dCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPQo+IC0JCSZwbGFuZV9zdGF0ZS0+YmFz ZS5wbGFuZS0+ZGV2LT5tb2RlX2NvbmZpZzsKPiAtCWludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JaW50IGhlaWdodCA9IGRybV9yZWN0X2hlaWdo dCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCQkmcGxhbmVfc3RhdGUtPnVhcGkucGxhbmUt PmRldi0+bW9kZV9jb25maWc7Cj4gKwlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPnVhcGkuZHN0KTsKPiArCWludCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT51YXBpLmRzdCk7Cj4gIAo+ICAJcmV0dXJuIHdpZHRoID4gMCAmJiB3aWR0aCA8PSBj b25maWctPmN1cnNvcl93aWR0aCAmJgo+ICAJCWhlaWdodCA+IDAgJiYgaGVpZ2h0IDw9IGNvbmZp Zy0+Y3Vyc29yX2hlaWdodDsKPiBAQCAtMTA3NzYsNyArMTA3NzYsNyBAQCBzdGF0aWMgYm9vbCBp bnRlbF9jdXJzb3Jfc2l6ZV9vayhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICBzdGF0aWMgaW50IGludGVsX2N1cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ ZGV2KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ICAJdW5z aWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJaW50IHNy Y194LCBzcmNfeTsKPiAgCXUzMiBvZmZzZXQ7Cj4gQEAgLTEwNzg2LDExICsxMDc4NiwxMSBAQCBz dGF0aWMgaW50IGludGVsX2N1cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0J aWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+dWFw aS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCXNyY194ID0gcGxhbmVfc3RhdGUtPmJh c2Uuc3JjLngxID4+IDE2Owo+IC0Jc3JjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4g MTY7Cj4gKwlzcmNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNjsKPiArCXNyY195 ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2Owo+ICAKPiAgCWludGVsX2FkZF9mYl9v ZmZzZXRzKCZzcmNfeCwgJnNyY195LCBwbGFuZV9zdGF0ZSwgMCk7Cj4gIAlvZmZzZXQgPSBpbnRl bF9wbGFuZV9jb21wdXRlX2FsaWduZWRfb2Zmc2V0KCZzcmNfeCwgJnNyY195LAo+IEBAIC0xMDgw NSwxNCArMTA4MDUsMTQgQEAgc3RhdGljIGludCBpbnRlbF9jdXJzb3JfY2hlY2tfc3VyZmFjZShz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAJICogUHV0IHRoZSBmaW5h bCBjb29yZGluYXRlcyBiYWNrIHNvIHRoYXQgdGhlIHNyYwo+ICAJICogY29vcmRpbmF0ZSBjaGVj a3Mgd2lsbCBzZWUgdGhlIHJpZ2h0IHZhbHVlcy4KPiAgCSAqLwo+IC0JZHJtX3JlY3RfdHJhbnNs YXRlX3RvKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMsCj4gKwlkcm1fcmVjdF90cmFuc2xhdGVfdG8o JnBsYW5lX3N0YXRlLT51YXBpLnNyYywKPiAgCQkJICAgICAgc3JjX3ggPDwgMTYsIHNyY195IDw8 IDE2KTsKPiAgCj4gIAkvKiBJTEsrIGRvIHRoaXMgYXV0b21hZ2ljYWxseSBpbiBoYXJkd2FyZSAq Lwo+ICAJaWYgKEhBU19HTUNIKGRldl9wcml2KSAmJiByb3RhdGlvbiAmIERSTV9NT0RFX1JPVEFU RV8xODApIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKPiAtCQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKPiAtCQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwkJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgo JnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwkJaW50IHNyY19oID0gZHJtX3JlY3Rf aGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICAKPiAgCQlvZmZzZXQgKz0g KHNyY19oICogc3JjX3cgLSAxKSAqIGZiLT5mb3JtYXQtPmNwcFswXTsKPiAgCX0KPiBAQCAtMTA4 MzUsNyArMTA4MzUsNyBAQCBzdGF0aWMgaW50IGludGVsX2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAg Cj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgmcGxhbmVfc3Rh dGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgm cGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGksCj4gIAkJCQkJ CSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ICAJCQkJCQkgIERSTV9QTEFORV9IRUxQ RVJfTk9fU0NBTElORywKPiBAQCAtMTA4NDQsMTQgKzEwODQ0LDE0IEBAIHN0YXRpYyBpbnQgaW50 ZWxfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+ICAJLyogVXNlIHRoZSB1bmNsaXBwZWQgc3JjL2RzdCByZWN0YW5n bGVzLCB3aGljaCB3ZSBwcm9ncmFtIHRvIGh3ICovCj4gLQlwbGFuZV9zdGF0ZS0+YmFzZS5zcmMg PSBkcm1fcGxhbmVfc3RhdGVfc3JjKCZwbGFuZV9zdGF0ZS0+YmFzZSk7Cj4gLQlwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QgPSBkcm1fcGxhbmVfc3RhdGVfZGVzdCgmcGxhbmVfc3RhdGUtPmJhc2UpOwo+ ICsJcGxhbmVfc3RhdGUtPnVhcGkuc3JjID0gZHJtX3BsYW5lX3N0YXRlX3NyYygmcGxhbmVfc3Rh dGUtPnVhcGkpOwo+ICsJcGxhbmVfc3RhdGUtPnVhcGkuZHN0ID0gZHJtX3BsYW5lX3N0YXRlX2Rl c3QoJnBsYW5lX3N0YXRlLT51YXBpKTsKPiAgCj4gIAlyZXQgPSBpbnRlbF9jdXJzb3JfY2hlY2tf c3VyZmFjZShwbGFuZV9zdGF0ZSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+ IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+ dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9IGludGVsX3BsYW5lX2No ZWNrX3NyY19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSk7Cj4gQEAgLTEwODg5LDcgKzEwODg5LDcg QEAgc3RhdGljIHUzMiBpODQ1X2N1cnNvcl9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gIAo+ICBzdGF0aWMgYm9vbCBpODQ1X2N1cnNvcl9zaXplX29rKGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCWludCB3 aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJaW50IHdp ZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gIAo+ICAJLyoK PiAgCSAqIDg0NWcvODY1ZyBhcmUgb25seSBsaW1pdGVkIGJ5IHRoZSB3aWR0aCBvZiB0aGVpciBj dXJzb3JzLAo+IEBAIC0xMDkxNSwxMiArMTA5MTUsMTIgQEAgc3RhdGljIGludCBpODQ1X2NoZWNr X2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCS8qIENoZWNr IGZvciB3aGljaCBjdXJzb3IgdHlwZXMgd2Ugc3VwcG9ydCAqLwo+ICAJaWYgKCFpODQ1X2N1cnNv cl9zaXplX29rKHBsYW5lX3N0YXRlKSkgewo+ICAJCURSTV9ERUJVRygiQ3Vyc29yIGRpbWVuc2lv biAlZHglZCBub3Qgc3VwcG9ydGVkXG4iLAo+IC0JCQkgIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5kc3QpLAo+IC0JCQkgIGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJh c2UuZHN0KSk7Cj4gKwkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCks Cj4gKwkJCSAgZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpKTsKPiAgCQly ZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlXQVJOX09OKHBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUgJiYKPiArCVdBUk5fT04ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAmJgo+ICAJCXBs YW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5zdHJpZGUgIT0gZmItPnBpdGNoZXNbMF0pOwo+ICAK PiAgCXN3aXRjaCAoZmItPnBpdGNoZXNbMF0pIHsKPiBAQCAtMTA5NDgsOSArMTA5NDgsOSBAQCBz dGF0aWMgdm9pZCBpODQ1X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK PiAgCXUzMiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9IDAsIHNpemUgPSAwOwo+ICAJdW5zaWdu ZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUgJiYgcGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkgewo+IC0JCXVuc2lnbmVkIGludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRo KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpOwo+IC0JCXVuc2lnbmVkIGludCBoZWlnaHQgPSBkcm1f cmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gKwlpZiAocGxhbmVfc3RhdGUg JiYgcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewo+ICsJCXVuc2lnbmVkIGludCB3aWR0aCA9 IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpOwo+ICsJCXVuc2lnbmVkIGlu dCBoZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gIAo+ ICAJCWNudGwgPSBwbGFuZV9zdGF0ZS0+Y3RsIHwKPiAgCQkJaTg0NV9jdXJzb3JfY3RsX2NydGMo Y3J0Y19zdGF0ZSk7Cj4gQEAgLTExMDQ2LDEzICsxMTA0NiwxMyBAQCBzdGF0aWMgdTMyIGk5eHhf Y3Vyc29yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAtCQl0b19pOTE1KHBsYW5l X3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGku cGxhbmUtPmRldik7Cj4gIAl1MzIgY250bCA9IDA7Cj4gIAo+ICAJaWYgKElTX0dFTihkZXZfcHJp diwgNikgfHwgSVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiAgCQljbnRsIHw9IE1DVVJTT1JfVFJJ Q0tMRV9GRUVEX0RJU0FCTEU7Cj4gIAo+IC0Jc3dpdGNoIChkcm1fcmVjdF93aWR0aCgmcGxhbmVf c3RhdGUtPmJhc2UuZHN0KSkgewo+ICsJc3dpdGNoIChkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPnVhcGkuZHN0KSkgewo+ICAJY2FzZSA2NDoKPiAgCQljbnRsIHw9IE1DVVJTT1JfTU9ERV82 NF9BUkdCX0FYOwo+ICAJCWJyZWFrOwo+IEBAIC0xMTA2Myw3ICsxMTA2Myw3IEBAIHN0YXRpYyB1 MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ICAJCWNudGwgfD0gTUNVUlNPUl9NT0RFXzI1Nl9BUkdCX0FYOwo+ICAJCWJyZWFrOwo+ ICAJZGVmYXVsdDoKPiAtCQlNSVNTSU5HX0NBU0UoZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRl LT5iYXNlLmRzdCkpOwo+ICsJCU1JU1NJTkdfQ0FTRShkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPnVhcGkuZHN0KSk7Cj4gIAkJcmV0dXJuIDA7Cj4gIAl9Cj4gIAo+IEBAIC0xMTA3Niw5ICsx MTA3Niw5IEBAIHN0YXRpYyB1MzIgaTl4eF9jdXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgYm9vbCBpOXh4X2N1cnNvcl9zaXplX29r KGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0 ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiAtCWludCB3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFu ZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JaW50IGhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxh bmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5l LT5kZXYpOwo+ICsJaW50IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBp LmRzdCk7Cj4gKwlpbnQgaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFw aS5kc3QpOwo+ICAKPiAgCWlmICghaW50ZWxfY3Vyc29yX3NpemVfb2socGxhbmVfc3RhdGUpKQo+ ICAJCXJldHVybiBmYWxzZTsKPiBAQCAtMTExMTQsNyArMTExMTQsNyBAQCBzdGF0aWMgYm9vbCBp OXh4X2N1cnNvcl9zaXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKPiAgCWVudW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gQEAgLTExMTMxLDE5ICsxMTEz MSwxOSBAQCBzdGF0aWMgaW50IGk5eHhfY2hlY2tfY3Vyc29yKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJLyogQ2hlY2sgZm9yIHdoaWNoIGN1cnNvciB0eXBlcyB3ZSBz dXBwb3J0ICovCj4gIAlpZiAoIWk5eHhfY3Vyc29yX3NpemVfb2socGxhbmVfc3RhdGUpKSB7Cj4g IAkJRFJNX0RFQlVHKCJDdXJzb3IgZGltZW5zaW9uICVkeCVkIG5vdCBzdXBwb3J0ZWRcbiIsCj4g LQkJCSAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCksCj4gLQkJCSAgZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpKTsKPiArCQkJICBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKPiArCQkJICBkcm1fcmVjdF9oZWlnaHQoJnBs YW5lX3N0YXRlLT51YXBpLmRzdCkpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiAt CVdBUk5fT04ocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJgo+ICsJV0FSTl9PTihwbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlICYmCj4gIAkJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0 cmlkZSAhPSBmYi0+cGl0Y2hlc1swXSk7Cj4gIAo+ICAJaWYgKGZiLT5waXRjaGVzWzBdICE9Cj4g LQkgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCkgKiBmYi0+Zm9ybWF0 LT5jcHBbMF0pIHsKPiArCSAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0 KSAqIGZiLT5mb3JtYXQtPmNwcFswXSkgewo+ICAJCURSTV9ERUJVR19LTVMoIkludmFsaWQgY3Vy c29yIHN0cmlkZSAoJXUpIChjdXJzb3Igd2lkdGggJWQpXG4iLAo+ICAJCQkgICAgICBmYi0+cGl0 Y2hlc1swXSwKPiAtCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRz dCkpOwo+ICsJCQkgICAgICBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSk7 Cj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAl9Cj4gIAo+IEBAIC0xMTE1OCw3ICsxMTE1OCw3IEBA IHN0YXRpYyBpbnQgaTl4eF9jaGVja19jdXJzb3Ioc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gIAkgKiBSZWZ1c2UgdGhlIHB1dCB0aGUgY3Vyc29yIGludG8gdGhhdCBjb21w cm9taXNlZCBwb3NpdGlvbi4KPiAgCSAqLwo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYp ICYmIHBpcGUgPT0gUElQRV9DICYmCj4gLQkgICAgcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSAm JiBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDEgPCAwKSB7Cj4gKwkgICAgcGxhbmVfc3RhdGUtPnVh cGkudmlzaWJsZSAmJiBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDEgPCAwKSB7Cj4gIAkJRFJNX0RF QlVHX0tNUygiQ0hWIGN1cnNvciBDIG5vdCBhbGxvd2VkIHRvIHN0cmFkZGxlIHRoZSBsZWZ0IHNj cmVlbiBlZGdlXG4iKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiBAQCAtMTExNzcsOSAr MTExNzcsOSBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwKPiAgCXUzMiBjbnRsID0gMCwgYmFzZSA9IDAsIHBvcyA9IDAsIGZiY19jdGwg PSAwOwo+ICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUg JiYgcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkgewo+IC0JCXVuc2lnbmVkIHdpZHRoID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gLQkJdW5zaWduZWQgaGVpZ2h0 ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJaWYgKHBsYW5l X3N0YXRlICYmIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpIHsKPiArCQl1bnNpZ25lZCB3aWR0 aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJCXVuc2lnbmVk IGhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCj4g IAkJY250bCA9IHBsYW5lX3N0YXRlLT5jdGwgfAo+ICAJCQlpOXh4X2N1cnNvcl9jdGxfY3J0Yyhj cnRjX3N0YXRlKTsKPiBAQCAtMTE3MTcsNyArMTE3MTcsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF93 bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1ciwKPiAgCQkJ CSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ldykKPiAgewo+ICAJLyogVXBkYXRlIHdhdGVy bWFya3Mgb24gdGlsaW5nIG9yIHNpemUgY2hhbmdlcy4gKi8KPiAtCWlmIChuZXctPmJhc2Uudmlz aWJsZSAhPSBjdXItPmJhc2UudmlzaWJsZSkKPiArCWlmIChuZXctPnVhcGkudmlzaWJsZSAhPSBj dXItPnVhcGkudmlzaWJsZSkKPiAgCQlyZXR1cm4gdHJ1ZTsKPiAgCj4gIAlpZiAoIWN1ci0+aHcu ZmIgfHwgIW5ldy0+aHcuZmIpCj4gQEAgLTExNzI1LDEwICsxMTcyNSwxMCBAQCBzdGF0aWMgYm9v bCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmN1 ciwKPiAgCj4gIAlpZiAoY3VyLT5ody5mYi0+bW9kaWZpZXIgIT0gbmV3LT5ody5mYi0+bW9kaWZp ZXIgfHwKPiAgCSAgICBjdXItPmh3LnJvdGF0aW9uICE9IG5ldy0+aHcucm90YXRpb24gfHwKPiAt CSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT5iYXNlLnNyYykgIT0gZHJtX3JlY3Rfd2lkdGgoJmN1 ci0+YmFzZS5zcmMpIHx8Cj4gLQkgICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPmJhc2Uuc3JjKSAh PSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+YmFzZS5zcmMpIHx8Cj4gLQkgICAgZHJtX3JlY3Rfd2lk dGgoJm5ldy0+YmFzZS5kc3QpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2UuZHN0KSB8fAo+ IC0JICAgIGRybV9yZWN0X2hlaWdodCgmbmV3LT5iYXNlLmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0 KCZjdXItPmJhc2UuZHN0KSkKPiArCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT51YXBpLnNyYykg IT0gZHJtX3JlY3Rfd2lkdGgoJmN1ci0+dWFwaS5zcmMpIHx8Cj4gKwkgICAgZHJtX3JlY3RfaGVp Z2h0KCZuZXctPnVhcGkuc3JjKSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+dWFwaS5zcmMpIHx8 Cj4gKwkgICAgZHJtX3JlY3Rfd2lkdGgoJm5ldy0+dWFwaS5kc3QpICE9IGRybV9yZWN0X3dpZHRo KCZjdXItPnVhcGkuZHN0KSB8fAo+ICsJICAgIGRybV9yZWN0X2hlaWdodCgmbmV3LT51YXBpLmRz dCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZjdXItPnVhcGkuZHN0KSkKPiAgCQlyZXR1cm4gdHJ1ZTsK PiAgCj4gIAlyZXR1cm4gZmFsc2U7Cj4gQEAgLTExNzM2LDEwICsxMTczNiwxMCBAQCBzdGF0aWMg Ym9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KmN1ciwKPiAgCj4gIHN0YXRpYyBib29sIG5lZWRzX3NjYWxpbmcoY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0JaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgo JnN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JnN0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlpbnQgZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgm c3RhdGUtPmJhc2UuZHN0KTsKPiAtCWludCBkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmc3RhdGUt PmJhc2UuZHN0KTsKPiArCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZzdGF0ZS0+dWFwaS5z cmMpID4+IDE2Owo+ICsJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZzdGF0ZS0+dWFwaS5z cmMpID4+IDE2Owo+ICsJaW50IGRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoJnN0YXRlLT51YXBpLmRz dCk7Cj4gKwlpbnQgZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnN0YXRlLT51YXBpLmRzdCk7Cj4g IAo+ICAJcmV0dXJuIChzcmNfdyAhPSBkc3RfdyB8fCBzcmNfaCAhPSBkc3RfaCk7Cj4gIH0KPiBA QCAtMTE3NTAsNyArMTE3NTAsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdl cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdAo+ICAJCQkJICAg IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWJvb2wgbW9kZV9jaGFu Z2VkID0gbmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKTsKPiAgCWJvb2wgd2FzX2NydGNfZW5hYmxl ZCA9IG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmU7Cj4gQEAgLTExNzY0LDggKzExNzY0LDggQEAg aW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCQkJcmV0dXJuIHJldDsKPiAgCX0KPiAgCj4gLQl3 YXNfdmlzaWJsZSA9IG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlOwo+IC0JdmlzaWJsZSA9 IHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGU7Cj4gKwl3YXNfdmlzaWJsZSA9IG9sZF9wbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlOwo+ICsJdmlzaWJsZSA9IHBsYW5lX3N0YXRlLT51YXBpLnZpc2li bGU7Cj4gIAo+ICAJaWYgKCF3YXNfY3J0Y19lbmFibGVkICYmIFdBUk5fT04od2FzX3Zpc2libGUp KQo+ICAJCXdhc192aXNpYmxlID0gZmFsc2U7Cj4gQEAgLTExNzgxLDcgKzExNzgxLDcgQEAgaW50 IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCSAqIG9ubHkgY29tYmluZSB0aGUgcmVzdWx0cyBmcm9t IGFsbCBwbGFuZXMgaW4gdGhlIGN1cnJlbnQgcGxhY2U/Cj4gIAkgKi8KPiAgCWlmICghaXNfY3J0 Y19lbmFibGVkKSB7Cj4gLQkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IHZpc2libGUgPSBm YWxzZTsKPiArCQlwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlID0gdmlzaWJsZSA9IGZhbHNlOwo+ ICAJCWNydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXMgJj0gfkJJVChwbGFuZS0+aWQpOwo+ICAJCWNy dGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRdID0gMDsKPiAgCQljcnRjX3N0YXRlLT5taW5f Y2RjbGtbcGxhbmUtPmlkXSA9IDA7Cj4gQEAgLTExOTQxLDcgKzExOTQxLDcgQEAgc3RhdGljIGlu dCBpY2xfY2hlY2tfbnYxMl9wbGFuZXMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlwbGFuZV9zdGF0ZS0+cGxhbmFyX2xpbmtlZF9w bGFuZSA9IE5VTEw7Cj4gLQkJaWYgKHBsYW5lX3N0YXRlLT5wbGFuYXJfc2xhdmUgJiYgIXBsYW5l X3N0YXRlLT5iYXNlLnZpc2libGUpIHsKPiArCQlpZiAocGxhbmVfc3RhdGUtPnBsYW5hcl9zbGF2 ZSAmJiAhcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkgewo+ICAJCQljcnRjX3N0YXRlLT5hY3Rp dmVfcGxhbmVzICY9IH5CSVQocGxhbmUtPmlkKTsKPiAgCQkJY3J0Y19zdGF0ZS0+dXBkYXRlX3Bs YW5lcyB8PSBCSVQocGxhbmUtPmlkKTsKPiAgCQl9Cj4gQEAgLTEyMzU1LDE0ICsxMjM1NSwxNCBA QCBzdGF0aWMgY29uc3QgY2hhciAqb3V0cHV0X2Zvcm1hdHMoZW51bSBpbnRlbF9vdXRwdXRfZm9y bWF0IGZvcm1hdCkKPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGxhbmVfc3RhdGUoY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBs YW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXN0cnVjdCBkcm1fZm9ybWF0X25hbWVfYnVmIGZv cm1hdF9uYW1lOwo+ICAKPiAgCWlmICghZmIpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJbUExBTkU6 JWQ6JXNdIGZiOiBbTk9GQl0sIHZpc2libGU6ICVzXG4iLAo+ICAJCQkgICAgICBwbGFuZS0+YmFz ZS5iYXNlLmlkLCBwbGFuZS0+YmFzZS5uYW1lLAo+IC0JCQkgICAgICB5ZXNubyhwbGFuZV9zdGF0 ZS0+YmFzZS52aXNpYmxlKSk7Cj4gKwkJCSAgICAgIHllc25vKHBsYW5lX3N0YXRlLT51YXBpLnZp c2libGUpKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IEBAIC0xMjM3MCwxMyArMTIzNzAsMTMg QEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9wbGFuZV9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAJCSAgICAgIHBsYW5lLT5iYXNlLmJhc2UuaWQs IHBsYW5lLT5iYXNlLm5hbWUsCj4gIAkJICAgICAgZmItPmJhc2UuaWQsIGZiLT53aWR0aCwgZmIt PmhlaWdodCwKPiAgCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9uYW1lKGZiLT5mb3JtYXQtPmZvcm1h dCwgJmZvcm1hdF9uYW1lKSwKPiAtCQkgICAgICB5ZXNubyhwbGFuZV9zdGF0ZS0+YmFzZS52aXNp YmxlKSk7Cj4gKwkJICAgICAgeWVzbm8ocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkpOwo+ICAJ RFJNX0RFQlVHX0tNUygiXHRyb3RhdGlvbjogMHgleCwgc2NhbGVyOiAlZFxuIiwKPiAgCQkgICAg ICBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb24sIHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQpOwo+IC0J aWYgKHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAocGxhbmVfc3RhdGUtPnVhcGku dmlzaWJsZSkKPiAgCQlEUk1fREVCVUdfS01TKCJcdHNyYzogIiBEUk1fUkVDVF9GUF9GTVQgIiBk c3Q6ICIgRFJNX1JFQ1RfRk1UICJcbiIsCj4gLQkJCSAgICAgIERSTV9SRUNUX0ZQX0FSRygmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSwKPiAtCQkJICAgICAgRFJNX1JFQ1RfQVJHKCZwbGFuZV9zdGF0 ZS0+YmFzZS5kc3QpKTsKPiArCQkJICAgICAgRFJNX1JFQ1RfRlBfQVJHKCZwbGFuZV9zdGF0ZS0+ dWFwaS5zcmMpLAo+ICsJCQkgICAgICBEUk1fUkVDVF9BUkcoJnBsYW5lX3N0YXRlLT51YXBpLmRz dCkpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiBAQCAtMTM1ODIsNyArMTM1 ODIsNyBAQCBpbnRlbF92ZXJpZnlfcGxhbmVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX3BsYW5lX2luX3N0YXRlKHN0YXRlLCBwbGFuZSwK PiAgCQkJCQkgIHBsYW5lX3N0YXRlLCBpKQo+ICAJCWFzc2VydF9wbGFuZShwbGFuZSwgcGxhbmVf c3RhdGUtPnBsYW5hcl9zbGF2ZSB8fAo+IC0JCQkgICAgIHBsYW5lX3N0YXRlLT5iYXNlLnZpc2li bGUpOwo+ICsJCQkgICAgIHBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpOwo+ICB9Cj4gIAo+ICBz dGF0aWMgdm9pZAo+IEBAIC0xNTA0NCw3ICsxNTA0NCw3IEBAIHN0YXRpYyB2b2lkIGFkZF9ycHNf Ym9vc3RfYWZ0ZXJfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIHN0YXRpYyBp bnQgaW50ZWxfcGxhbmVfcGluX2ZiKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0g dG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlzdHJ1Y3Qg aTkxNV92bWEgKnZtYTsKPiBAQCAtMTUxMDksNyArMTUxMDksNyBAQCBpbnRlbF9wcmVwYXJlX3Bs YW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpuZXdfcGxhbmVfc3RhdGUgPQo+ICAJCXRvX2ludGVsX3BsYW5lX3N0YXRlKF9uZXdfcGxh bmVfc3RhdGUpOwo+ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+ IC0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfcGxhbmVfc3RhdGUtPmJhc2Uuc3RhdGUpOwo+ ICsJCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfcGxhbmVfc3RhdGUtPnVhcGkuc3RhdGUpOwo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ZGV2 KTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3X3BsYW5lX3N0YXRlLT5ody5m YjsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIp Owo+IEBAIC0xNTE0Miw5ICsxNTE0Miw5IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWlmIChuZXdfcGxhbmVfc3Rh dGUtPmJhc2UuZmVuY2UpIHsgLyogZXhwbGljaXQgZmVuY2luZyAqLwo+ICsJaWYgKG5ld19wbGFu ZV9zdGF0ZS0+dWFwaS5mZW5jZSkgeyAvKiBleHBsaWNpdCBmZW5jaW5nICovCj4gIAkJcmV0ID0g aTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoJmludGVsX3N0YXRlLT5jb21taXRfcmVhZHks Cj4gLQkJCQkJCSAgICBuZXdfcGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UsCj4gKwkJCQkJCSAgICBu ZXdfcGxhbmVfc3RhdGUtPnVhcGkuZmVuY2UsCj4gIAkJCQkJCSAgICBJOTE1X0ZFTkNFX1RJTUVP VVQsCj4gIAkJCQkJCSAgICBHRlBfS0VSTkVMKTsKPiAgCQlpZiAocmV0IDwgMCkKPiBAQCAtMTUx NjcsNyArMTUxNjcsNyBAQCBpbnRlbF9wcmVwYXJlX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ICAJZmJfb2JqX2J1bXBfcmVuZGVyX3ByaW9yaXR5KG9iaik7Cj4gIAlpbnRlbF9m cm9udGJ1ZmZlcl9mbHVzaChvYmotPmZyb250YnVmZmVyLCBPUklHSU5fRElSVFlGQik7Cj4gIAo+ IC0JaWYgKCFuZXdfcGxhbmVfc3RhdGUtPmJhc2UuZmVuY2UpIHsgLyogaW1wbGljaXQgZmVuY2lu ZyAqLwo+ICsJaWYgKCFuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZmVuY2UpIHsgLyogaW1wbGljaXQg ZmVuY2luZyAqLwo+ICAJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwo+ICAKPiAgCQlyZXQgPSBp OTE1X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKCZpbnRlbF9zdGF0ZS0+Y29tbWl0X3JlYWR5 LAo+IEBAIC0xNTE4NSw3ICsxNTE4NSw3IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJfQo+ICAJfSBlbHNlIHsKPiAgCQlhZGRfcnBzX2Jvb3N0 X2FmdGVyX3ZibGFuayhuZXdfcGxhbmVfc3RhdGUtPmh3LmNydGMsCj4gLQkJCQkJICAgbmV3X3Bs YW5lX3N0YXRlLT5iYXNlLmZlbmNlKTsKPiArCQkJCQkgICBuZXdfcGxhbmVfc3RhdGUtPnVhcGku ZmVuY2UpOwo+ICAJfQo+ICAKPiAgCS8qCj4gQEAgLTE1MjE4LDcgKzE1MjE4LDcgQEAgaW50ZWxf Y2xlYW51cF9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCXN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlID0KPiAgCQl0b19pbnRlbF9wbGFuZV9zdGF0 ZShfb2xkX3BsYW5lX3N0YXRlKTsKPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVs X3N0YXRlID0KPiAtCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3BsYW5lX3N0YXRlLT5iYXNl LnN0YXRlKTsKPiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUob2xkX3BsYW5lX3N0YXRlLT51YXBp LnN0YXRlKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo cGxhbmUtPmRldik7Cj4gIAo+ICAJaWYgKGludGVsX3N0YXRlLT5ycHNfaW50ZXJhY3RpdmUpIHsK PiBAQCAtMTUzNTAsOCArMTUzNTAsOCBAQCBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZShzdHJ1 Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gIAkgKiB0aGUgcGxhbmUuICBUaGlzIHByZXZlbnRzIG91 ciBhc3luYyB1cGRhdGUncyBjaGFuZ2VzIGZyb20gZ2V0dGluZwo+ICAJICogb3ZlcnJpZGRlbiBi eSBhIHByZXZpb3VzIHN5bmNocm9ub3VzIHVwZGF0ZSdzIHN0YXRlLgo+ICAJICovCj4gLQlpZiAo b2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNvbW1pdCAmJgo+IC0JICAgICF0cnlfd2FpdF9mb3JfY29t cGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNvbW1pdC0+aHdfZG9uZSkpCj4gKwlpZiAo b2xkX3BsYW5lX3N0YXRlLT51YXBpLmNvbW1pdCAmJgo+ICsJICAgICF0cnlfd2FpdF9mb3JfY29t cGxldGlvbigmb2xkX3BsYW5lX3N0YXRlLT51YXBpLmNvbW1pdC0+aHdfZG9uZSkpCj4gIAkJZ290 byBzbG93Owo+ICAKPiAgCS8qCj4gQEAgLTE1MzYwLDEwICsxNTM2MCwxMCBAQCBpbnRlbF9sZWdh Y3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gIAkgKiBpbiB0aGUg ZmFzdHBhdGguCj4gIAkgKi8KPiAgCWlmIChvbGRfcGxhbmVfc3RhdGUtPnVhcGkuY3J0YyAhPSAm Y3J0Yy0+YmFzZSB8fAo+IC0JICAgIG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfdyAhPSBzcmNf dyB8fAo+IC0JICAgIG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfaCAhPSBzcmNfaCB8fAo+IC0J ICAgIG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3cgIT0gY3J0Y193IHx8Cj4gLQkgICAgb2xk X3BsYW5lX3N0YXRlLT5iYXNlLmNydGNfaCAhPSBjcnRjX2ggfHwKPiArCSAgICBvbGRfcGxhbmVf c3RhdGUtPnVhcGkuc3JjX3cgIT0gc3JjX3cgfHwKPiArCSAgICBvbGRfcGxhbmVfc3RhdGUtPnVh cGkuc3JjX2ggIT0gc3JjX2ggfHwKPiArCSAgICBvbGRfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Y193 ICE9IGNydGNfdyB8fAo+ICsJICAgIG9sZF9wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjX2ggIT0gY3J0 Y19oIHx8CgpUaGVzZSBzaG91bGQgaGF2ZSBtYXliZSBiZWVuIGluIHRoZSBwYXRjaCB0aGF0IGNv bnZlcnRlZCB0aGUKdWFwaS5mYiBhbmQgdWFwaS5jcnRjIGFscmVhZHkuCgpOb3Qgc3VyZSBob3cg d2UncmUgZ29pbmcgdG8gbWFrZSB0aGlzIHN0dWZmIHdvcmsgd2l0aCBiaWdqb2luZXIsIGJ1dAps ZXQncyBjcm9zcyB0aGF0IGJyaWRnZSB3aGVuIHdlIGNvbWUgdG8gaXQuCgpSZXN0IG9mIHRoZSBw YXRjaCBsZ3RtLgoKPiAgCSAgICAhb2xkX3BsYW5lX3N0YXRlLT51YXBpLmZiICE9ICFmYikKPiAg CQlnb3RvIHNsb3c7Cj4gIAo+IEBAIC0xNTM3NywxNiArMTUzNzcsMTYgQEAgaW50ZWxfbGVnYWN5 X2N1cnNvcl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAo+ICAJCWdvdG8gb3V0X2Zy ZWU7Cj4gIAl9Cj4gIAo+IC0JZHJtX2F0b21pY19zZXRfZmJfZm9yX3BsYW5lKCZuZXdfcGxhbmVf c3RhdGUtPmJhc2UsIGZiKTsKPiArCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9wbGFuZSgmbmV3X3Bs YW5lX3N0YXRlLT51YXBpLCBmYik7Cj4gIAo+IC0JbmV3X3BsYW5lX3N0YXRlLT5iYXNlLnNyY194 ID0gc3JjX3g7Cj4gLQluZXdfcGxhbmVfc3RhdGUtPmJhc2Uuc3JjX3kgPSBzcmNfeTsKPiAtCW5l d19wbGFuZV9zdGF0ZS0+YmFzZS5zcmNfdyA9IHNyY193Owo+IC0JbmV3X3BsYW5lX3N0YXRlLT5i YXNlLnNyY19oID0gc3JjX2g7Cj4gLQluZXdfcGxhbmVfc3RhdGUtPmJhc2UuY3J0Y194ID0gY3J0 Y194Owo+IC0JbmV3X3BsYW5lX3N0YXRlLT5iYXNlLmNydGNfeSA9IGNydGNfeTsKPiAtCW5ld19w bGFuZV9zdGF0ZS0+YmFzZS5jcnRjX3cgPSBjcnRjX3c7Cj4gLQluZXdfcGxhbmVfc3RhdGUtPmJh c2UuY3J0Y19oID0gY3J0Y19oOwo+ICsJbmV3X3BsYW5lX3N0YXRlLT51YXBpLnNyY194ID0gc3Jj X3g7Cj4gKwluZXdfcGxhbmVfc3RhdGUtPnVhcGkuc3JjX3kgPSBzcmNfeTsKPiArCW5ld19wbGFu ZV9zdGF0ZS0+dWFwaS5zcmNfdyA9IHNyY193Owo+ICsJbmV3X3BsYW5lX3N0YXRlLT51YXBpLnNy Y19oID0gc3JjX2g7Cj4gKwluZXdfcGxhbmVfc3RhdGUtPnVhcGkuY3J0Y194ID0gY3J0Y194Owo+ ICsJbmV3X3BsYW5lX3N0YXRlLT51YXBpLmNydGNfeSA9IGNydGNfeTsKPiArCW5ld19wbGFuZV9z dGF0ZS0+dWFwaS5jcnRjX3cgPSBjcnRjX3c7Cj4gKwluZXdfcGxhbmVfc3RhdGUtPnVhcGkuY3J0 Y19oID0gY3J0Y19oOwo+ICAKPiAgCXJldCA9IGludGVsX3BsYW5lX2F0b21pY19jaGVja193aXRo X3N0YXRlKGNydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLAo+ICAJCQkJCQkgIG9sZF9wbGFuZV9z dGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsKPiBAQCAtMTU0MDQsNyArMTU0MDQsNyBAQCBpbnRlbF9s ZWdhY3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gIAkJCQlwbGFu ZS0+ZnJvbnRidWZmZXJfYml0KTsKPiAgCj4gIAkvKiBTd2FwIHBsYW5lIHN0YXRlICovCj4gLQlw bGFuZS0+YmFzZS5zdGF0ZSA9ICZuZXdfcGxhbmVfc3RhdGUtPmJhc2U7Cj4gKwlwbGFuZS0+YmFz ZS5zdGF0ZSA9ICZuZXdfcGxhbmVfc3RhdGUtPnVhcGk7Cj4gIAo+ICAJLyoKPiAgCSAqIFdlIGNh bm5vdCBzd2FwIGNydGNfc3RhdGUgYXMgaXQgbWF5IGJlIGluIHVzZSBieSBhbiBhdG9taWMgY29t bWl0IG9yCj4gQEAgLTE1NDE4LDcgKzE1NDE4LDcgQEAgaW50ZWxfbGVnYWN5X2N1cnNvcl91cGRh dGUoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAo+ICAJICovCj4gIAljcnRjX3N0YXRlLT5hY3Rp dmVfcGxhbmVzID0gbmV3X2NydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXM7Cj4gIAo+IC0JaWYgKG5l d19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFw aS52aXNpYmxlKQo+ICAJCWludGVsX3VwZGF0ZV9wbGFuZShwbGFuZSwgY3J0Y19zdGF0ZSwgbmV3 X3BsYW5lX3N0YXRlKTsKPiAgCWVsc2UKPiAgCQlpbnRlbF9kaXNhYmxlX3BsYW5lKHBsYW5lLCBj cnRjX3N0YXRlKTsKPiBAQCAtMTU0MjksOSArMTU0MjksMTEgQEAgaW50ZWxfbGVnYWN5X2N1cnNv cl91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAo+ICAJaWYgKG5ld19jcnRjX3N0YXRl KQo+ICAJCWludGVsX2NydGNfZGVzdHJveV9zdGF0ZSgmY3J0Yy0+YmFzZSwgJm5ld19jcnRjX3N0 YXRlLT51YXBpKTsKPiAgCWlmIChyZXQpCj4gLQkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSgm cGxhbmUtPmJhc2UsICZuZXdfcGxhbmVfc3RhdGUtPmJhc2UpOwo+ICsJCWludGVsX3BsYW5lX2Rl c3Ryb3lfc3RhdGUoJnBsYW5lLT5iYXNlLAo+ICsJCQkJCSAgJm5ld19wbGFuZV9zdGF0ZS0+dWFw aSk7Cj4gIAllbHNlCj4gLQkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0ZSgmcGxhbmUtPmJhc2Us ICZvbGRfcGxhbmVfc3RhdGUtPmJhc2UpOwo+ICsJCWludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUo JnBsYW5lLT5iYXNlLAo+ICsJCQkJCSAgJm9sZF9wbGFuZV9zdGF0ZS0+dWFwaSk7Cj4gIAlyZXR1 cm4gcmV0Owo+ICAKPiAgc2xvdzoKPiBAQCAtMTcxNTcsNyArMTcxNTksNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQljb25z dCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0KPiAgCQkJCXRvX2ludGVs X3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRlKTsKPiAgCj4gLQkJCWlmIChwbGFuZV9zdGF0 ZS0+YmFzZS52aXNpYmxlICYmCj4gKwkJCWlmIChwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlICYm Cj4gIAkJCSAgICBwbGFuZS0+YmFzZS50eXBlICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4g IAkJCQlpbnRlbF9wbGFuZV9kaXNhYmxlX25vYXRvbWljKGNydGMsIHBsYW5lKTsKPiAgCQl9Cj4g QEAgLTE3NDg4LDE0ICsxNzQ5MCwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRv dXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJICogRklYTUUgZG9uJ3Qg aGF2ZSB0aGUgZmIgeWV0LCBzbyBjYW4ndAo+ICAJCQkgKiB1c2UgaW50ZWxfcGxhbmVfZGF0YV9y YXRlKCkgOigKPiAgCQkJICovCj4gLQkJCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ ICsJCQlpZiAocGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQkJCWNydGNfc3RhdGUtPmRh dGFfcmF0ZVtwbGFuZS0+aWRdID0KPiAgCQkJCQk0ICogY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsK PiAgCQkJLyoKPiAgCQkJICogRklYTUUgZG9uJ3QgaGF2ZSB0aGUgZmIgeWV0LCBzbyBjYW4ndAo+ ICAJCQkgKiB1c2UgcGxhbmUtPm1pbl9jZGNsaygpIDooCj4gIAkJCSAqLwo+IC0JCQlpZiAocGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZSAmJiBwbGFuZS0+bWluX2NkY2xrKSB7Cj4gKwkJCWlmIChw bGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlICYmIHBsYW5lLT5taW5fY2RjbGspIHsKPiAgCQkJCWlm IChjcnRjX3N0YXRlLT5kb3VibGVfd2lkZSB8fAo+ICAJCQkJICAgIElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gIAkJCQkJY3J0Y19zdGF0ZS0+ bWluX2NkY2xrW3BsYW5lLT5pZF0gPQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9mYmMuYwo+IGluZGV4IDNlYThkMDEwZGI2Yy4uOTJjN2ViMjQzNTU5IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jCj4gQEAgLTQzMCw3ICs0MzAsNyBAQCBz dGF0aWMgYm9vbCBtdWx0aXBsZV9waXBlc19vayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAg CWlmICghbm9fZmJjX29uX211bHRpcGxlX3BpcGVzKGRldl9wcml2KSkKPiAgCQlyZXR1cm4gdHJ1 ZTsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSkKPiArCWlmIChwbGFuZV9z dGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCWZiYy0+dmlzaWJsZV9waXBlc19tYXNrIHw9ICgxIDw8 IHBpcGUpOwo+ICAJZWxzZQo+ICAJCWZiYy0+dmlzaWJsZV9waXBlc19tYXNrICY9IH4oMSA8PCBw aXBlKTsKPiBAQCAtNjc3LDEyICs2NzcsMTIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmJjX3VwZGF0 ZV9zdGF0ZV9jYWNoZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCSAqIHRoZSA5MC8yNzAg ZGVncmVlIHBsYW5lIHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKPiAgCSAqIEdUVCBtYXBw aW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2NvdW50IGZvciByb3RhdGlvbiBoZXJlLgo+ICAJICov Cj4gLQljYWNoZS0+cGxhbmUuc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJh c2Uuc3JjKSA+PiAxNjsKPiAtCWNhY2hlLT5wbGFuZS5zcmNfaCA9IGRybV9yZWN0X2hlaWdodCgm cGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAtCWNhY2hlLT5wbGFuZS52aXNpYmxlID0g cGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZTsKPiArCWNhY2hlLT5wbGFuZS5zcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJY2FjaGUtPnBsYW5l LnNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ ICsJY2FjaGUtPnBsYW5lLnZpc2libGUgPSBwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOwo+ICAJ Y2FjaGUtPnBsYW5lLmFkanVzdGVkX3ggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueDsK PiAgCWNhY2hlLT5wbGFuZS5hZGp1c3RlZF95ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBd Lnk7Cj4gLQljYWNoZS0+cGxhbmUueSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsK PiArCWNhY2hlLT5wbGFuZS55ID0gcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2Owo+ICAK PiAgCWNhY2hlLT5wbGFuZS5waXhlbF9ibGVuZF9tb2RlID0gcGxhbmVfc3RhdGUtPmh3LnBpeGVs X2JsZW5kX21vZGU7Cj4gIAo+IEBAIC0xMDUyLDcgKzEwNTIsNyBAQCB2b2lkIGludGVsX2ZiY19j aG9vc2VfY3J0YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJaWYgKCFw bGFuZS0+aGFzX2ZiYykKPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCWlmICghcGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkKPiArCQlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJ CWNvbnRpbnVlOwo+ICAKPiAgCQljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0 Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9vdmVybGF5LmMKPiBpbmRleCA0NmUzZDZjZjU5NzYuLjhjZmI3ODVlNzYxYyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX292ZXJsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jCj4gQEAgLTY2 OCw3ICs2NjgsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfY29sb3JrZXkoc3RydWN0IGludGVsX292 ZXJsYXkgKm92ZXJsYXksCj4gIAlpZiAob3ZlcmxheS0+Y29sb3Jfa2V5X2VuYWJsZWQpCj4gIAkJ ZmxhZ3MgfD0gRFNUX0tFWV9FTkFCTEU7Cj4gIAo+IC0JaWYgKHN0YXRlLT5iYXNlLnZpc2libGUp Cj4gKwlpZiAoc3RhdGUtPnVhcGkudmlzaWJsZSkKPiAgCQlmb3JtYXQgPSBzdGF0ZS0+aHcuZmIt PmZvcm1hdC0+Zm9ybWF0Owo+ICAKPiAgCXN3aXRjaCAoZm9ybWF0KSB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggYjIxMTZkMTIzNTQ4Li5l Zjc0MDlmNjk1ZjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9zcHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf c3ByaXRlLmMKPiBAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfZW5k KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPiAgCj4gIGludCBpbnRl bF9wbGFuZV9jaGVja19zdHJpZGUoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2ln bmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCXUzMiBzdHJp ZGUsIG1heF9zdHJpZGU7Cj4gQEAgLTI1Miw3ICsyNTIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfY2hl Y2tfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4g IAkgKiBraWNrIGluIGR1ZSB0aGUgcGxhbmUgYmVpbmcgaW52aXNpYmxlLgo+ICAJICovCj4gIAlp ZiAoaW50ZWxfcGxhbmVfY2FuX3JlbWFwKHBsYW5lX3N0YXRlKSAmJgo+IC0JICAgICFwbGFuZV9z dGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJICAgICFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ ICAJCXJldHVybiAwOwo+ICAKPiAgCS8qIEZJWE1FIG90aGVyIGNvbG9yIHBsYW5lcz8gKi8KPiBA QCAtMjczLDcgKzI3Myw3IEBAIGludCBpbnRlbF9wbGFuZV9jaGVja19zdHJpZGUoY29uc3Qgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgaW50IGludGVsX3BsYW5lX2No ZWNrX3NyY19jb29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5ody5mYjsKPiAtCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5lX3N0YXRlLT5iYXNlLnNy YzsKPiArCXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5lX3N0YXRlLT51YXBpLnNyYzsKPiAg CXUzMiBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaCwgaHN1YiwgdnN1YjsKPiAgCWJvb2wgcm90 YXRlZCA9IGRybV9yb3RhdGlvbl85MF9vcl8yNzAocGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uKTsK PiAgCj4gQEAgLTMyOCw3ICszMjgsNyBAQCBza2xfcGxhbmVfcmF0aW8oY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQl1bnNpZ25lZCBpbnQgKm51bSwgdW5zaWduZWQgaW50 ICpkZW4pCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7 Cj4gIAo+ICAJaWYgKGZiLT5mb3JtYXQtPmNwcFswXSA9PSA4KSB7Cj4gQEAgLTM0OCw3ICszNDgs NyBAQCBza2xfcGxhbmVfcmF0aW8oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCj4gIHN0YXRpYyBpbnQgc2tsX3BsYW5lX21pbl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRl LT51YXBpLnBsYW5lLT5kZXYpOwo+ICAJdW5zaWduZWQgaW50IHBpeGVsX3JhdGUgPSBjcnRjX3N0 YXRlLT5waXhlbF9yYXRlOwo+ICAJdW5zaWduZWQgaW50IHNyY193LCBzcmNfaCwgZHN0X3csIGRz dF9oOwo+ICAJdW5zaWduZWQgaW50IG51bSwgZGVuOwo+IEBAIC0zNTksMTAgKzM1OSwxMCBAQCBz dGF0aWMgaW50IHNrbF9wbGFuZV9taW5fY2RjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19H RU1JTklMQUtFKGRldl9wcml2KSkKPiAgCQlkZW4gKj0gMjsKPiAgCj4gLQlzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+IC0Jc3JjX2ggPSBkcm1f cmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQlkc3RfdyA9IGRy bV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+IC0JZHN0X2ggPSBkcm1fcmVj dF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gKwlzcmNfdyA9IGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJc3JjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwlkc3RfdyA9IGRybV9yZWN0 X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJZHN0X2ggPSBkcm1fcmVjdF9oZWln aHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gIAo+ICAJLyogRG93bnNjYWxpbmcgbGltaXRz IHRoZSBtYXhpbXVtIHBpeGVsIHJhdGUgKi8KPiAgCWRzdF93ID0gbWluKHNyY193LCBkc3Rfdyk7 Cj4gQEAgLTQwMSwxOSArNDAxLDE5IEBAIHNrbF9wcm9ncmFtX3NjYWxlcihzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lLAo+ICAJaW50IHNjYWxlcl9pZCA9IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQ7 Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfc2NhbGVyICpzY2FsZXIgPQo+ICAJCSZjcnRjX3N0YXRl LT5zY2FsZXJfc3RhdGUuc2NhbGVyc1tzY2FsZXJfaWRdOwo+IC0JaW50IGNydGNfeCA9IHBsYW5l X3N0YXRlLT5iYXNlLmRzdC54MTsKPiAtCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5k c3QueTE7Cj4gLQl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNl LmRzdCk7Cj4gLQl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QpOwo+ICsJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC54MTsKPiArCWlu dCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7Cj4gKwl1MzIgY3J0Y193ID0gZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gKwl1MzIgY3J0Y19oID0gZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICAJdTE2IHlfaHBoYXNlLCB1 dl9yZ2JfaHBoYXNlOwo+ICAJdTE2IHlfdnBoYXNlLCB1dl9yZ2JfdnBoYXNlOwo+ICAJaW50IGhz Y2FsZSwgdnNjYWxlOwo+ICAKPiAtCWhzY2FsZSA9IGRybV9yZWN0X2NhbGNfaHNjYWxlKCZwbGFu ZV9zdGF0ZS0+YmFzZS5zcmMsCj4gLQkJCQkgICAgICAmcGxhbmVfc3RhdGUtPmJhc2UuZHN0LAo+ ICsJaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUoJnBsYW5lX3N0YXRlLT51YXBpLnNyYywK PiArCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QsCj4gIAkJCQkgICAgICAwLCBJTlRf TUFYKTsKPiAtCXZzY2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxlKCZwbGFuZV9zdGF0ZS0+YmFz ZS5zcmMsCj4gLQkJCQkgICAgICAmcGxhbmVfc3RhdGUtPmJhc2UuZHN0LAo+ICsJdnNjYWxlID0g ZHJtX3JlY3RfY2FsY192c2NhbGUoJnBsYW5lX3N0YXRlLT51YXBpLnNyYywKPiArCQkJCSAgICAg ICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QsCj4gIAkJCQkgICAgICAwLCBJTlRfTUFYKTsKPiAgCj4g IAkvKiBUT0RPOiBoYW5kbGUgc3ViLXBpeGVsIGNvb3JkaW5hdGVzICovCj4gQEAgLTU4NCwxMiAr NTg0LDEyIEBAIHNrbF9wcm9ncmFtX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4g IAl1MzIgc3VyZl9hZGRyID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW2NvbG9yX3BsYW5lXS5v ZmZzZXQ7Cj4gIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShwbGFuZV9zdGF0ZSwgY29s b3JfcGxhbmUpOwo+ICAJdTMyIGF1eF9zdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRlKHBsYW5lX3N0 YXRlLCAxKTsKPiAtCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlp bnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LnkxOwo+ICsJaW50IGNydGNfeCA9IHBs YW5lX3N0YXRlLT51YXBpLmRzdC54MTsKPiArCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFw aS5kc3QueTE7Cj4gIAl1MzIgeCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9wbGFu ZV0ueDsKPiAgCXUzMiB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW2NvbG9yX3BsYW5lXS55 Owo+IC0JdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykg Pj4gMTY7Cj4gLQl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNl LnNyYykgPj4gMTY7Cj4gKwl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PnVhcGkuc3JjKSA+PiAxNjsKPiArCXUzMiBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2VkID0g cGxhbmVfc3RhdGUtPnBsYW5hcl9saW5rZWRfcGxhbmU7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXU4IGFscGhhID0gcGxhbmVf c3RhdGUtPmh3LmFscGhhID4+IDg7Cj4gQEAgLTc2Niw3ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBp OXh4X3BsYW5lX2xpbmVhcl9nYW1tYSh1MTYgZ2FtbWFbOF0pCj4gIHN0YXRpYyB2b2lkCj4gIGNo dl91cGRhdGVfY3NjKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFu ZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9f aW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAllbnVt IHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwo+IEBAIC04MjUsNyArODI1LDcgQEAgY2h2 X3VwZGF0ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkK PiAgc3RhdGljIHZvaWQKPiAgdmx2X3VwZGF0ZV9jbHJjKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUp Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+ YmFzZS5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9z dGF0ZS0+aHcuZmI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+IEBAIC0xMDE5 LDcgKzEwMTksNyBAQCBzdGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAKPiAgc3RhdGljIHZvaWQgdmx2X3VwZGF0ZV9n YW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJZW51bSBwaXBlIHBp cGUgPSBwbGFuZS0+cGlwZTsKPiBAQCAtMTA1MywxMCArMTA1MywxMCBAQCB2bHZfdXBkYXRlX3Bs YW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAl1MzIgc3Byc3VyZl9vZmZzZXQgPSBw bGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zmc2V0Owo+ICAJdTMyIGxpbmVhcl9vZmZzZXQ7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5l X3N0YXRlLT5ja2V5Owo+IC0JaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsK PiAtCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueTE7Cj4gLQl1MzIgY3J0Y193 ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCk7Cj4gLQl1MzIgY3J0Y19o ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJaW50IGNydGNf eCA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC54MTsKPiArCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0 ZS0+dWFwaS5kc3QueTE7Cj4gKwl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT51YXBpLmRzdCk7Cj4gKwl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOwo+ICAJdTMyIHggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0u eDsKPiAgCXUzMiB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnk7Cj4gIAl1bnNpZ25l ZCBsb25nIGlycWZsYWdzOwo+IEBAIC0xMjQ1LDggKzEyNDUsOCBAQCBzdGF0aWMgaW50IGl2Yl9z cHJpdGVfbWluX2NkY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAo+ICAJICovCj4gIAlwaXhlbF9yYXRlID0gY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsKPiAgCj4g LQlzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ IC0JZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCXNy Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4gMTY7Cj4gKwlk c3RfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICAKPiAgCWlm IChzcmNfdyAhPSBkc3RfdykKPiAgCQlpdmJfcGxhbmVfcmF0aW9fc2NhbGluZyhjcnRjX3N0YXRl LCBwbGFuZV9zdGF0ZSwgJm51bSwgJmRlbik7Cj4gQEAgLTEzMjAsNyArMTMyMCw3IEBAIHN0YXRp YyB1MzIgaXZiX3Nwcml0ZV9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAgc3RhdGljIGJvb2wgaXZiX25lZWRfc3ByaXRlX2dhbW1hKGNvbnN0IHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gLQkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5w bGFuZS0+ZGV2KTsKPiArCQl0b19pOTE1KHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7 Cj4gIAo+ICAJcmV0dXJuIGZiLT5mb3JtYXQtPmNwcFswXSA9PSA4ICYmCj4gQEAgLTEzMzEsNyAr MTMzMSw3IEBAIHN0YXRpYyB1MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+ICsJCXRv X2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCBy b3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1f aW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gQEAgLTE0 MjIsNyArMTQyMiw3IEBAIHN0YXRpYyB2b2lkIGl2Yl9zcHJpdGVfbGluZWFyX2dhbW1hKGNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gIAo+ICBzdGF0aWMgdm9p ZCBpdmJfdXBkYXRlX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJ ZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiAgCXUxNiBnYW1tYVsxOF07Cj4gQEAgLTE0 NjEsMTQgKzE0NjEsMTQgQEAgaXZiX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lLAo+ICAJdTMyIHNwcnN1cmZfb2Zmc2V0ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBd Lm9mZnNldDsKPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Owo+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRl bF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tleTsKPiAtCWludCBjcnRj X3ggPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueDE7Cj4gLQlpbnQgY3J0Y195ID0gcGxhbmVfc3Rh dGUtPmJhc2UuZHN0LnkxOwo+IC0JdTMyIGNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+YmFzZS5kc3QpOwo+IC0JdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVf c3RhdGUtPmJhc2UuZHN0KTsKPiArCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3Qu eDE7Cj4gKwlpbnQgY3J0Y195ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwo+ICsJdTMyIGNy dGNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICsJdTMyIGNy dGNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCXUzMiB4 ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLng7Cj4gIAl1MzIgeSA9IHBsYW5lX3N0YXRl LT5jb2xvcl9wbGFuZVswXS55Owo+IC0JdTMyIHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQl1MzIgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQo JnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwl1MzIgc3JjX3cgPSBkcm1fcmVjdF93 aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCXUzMiBzcmNfaCA9IGRybV9y ZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiAgCXUzMiBzcHJjdGws IHNwcnNjYWxlID0gMDsKPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gIAo+IEBAIC0xNTgx LDggKzE1ODEsOCBAQCBzdGF0aWMgaW50IGc0eF9zcHJpdGVfbWluX2NkY2xrKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJcGl4ZWxfcmF0ZSA9IGNydGNfc3Rh dGUtPnBpeGVsX3JhdGU7Cj4gIAo+ICAJLyogSG9yaXpvbnRhbCBkb3duc2NhbGluZyBsaW1pdHMg dGhlIG1heGltdW0gcGl4ZWwgcmF0ZSAqLwo+IC0JaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2Nh bGUoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYywKPiAtCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+YmFz ZS5kc3QsCj4gKwloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2FsZSgmcGxhbmVfc3RhdGUtPnVh cGkuc3JjLAo+ICsJCQkJICAgICAgJnBsYW5lX3N0YXRlLT51YXBpLmRzdCwKPiAgCQkJCSAgICAg IDAsIElOVF9NQVgpOwo+ICAJaWYgKGhzY2FsZSA8IDB4MTAwMDApCj4gIAkJcmV0dXJuIHBpeGVs X3JhdGU7Cj4gQEAgLTE2MzYsNyArMTYzNiw3IEBAIHN0YXRpYyB1MzIgZzR4X3Nwcml0ZV9jdGwo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgY29uc3Qg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNl LnBsYW5lLT5kZXYpOwo+ICsJCXRvX2k5MTUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUtPmRldik7 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5m YjsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsK PiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVf c3RhdGUtPmNrZXk7Cj4gQEAgLTE2OTksNyArMTY5OSw3IEBAIHN0YXRpYyB1MzIgZzR4X3Nwcml0 ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICBz dGF0aWMgdm9pZCBnNHhfdXBkYXRlX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19p bnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5k ZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+IEBAIC0xNzMxLDcgKzE3 MzEsNyBAQCBzdGF0aWMgdm9pZCBpbGtfc3ByaXRlX2xpbmVhcl9nYW1tYSh1MTYgZ2FtbWFbMTdd KQo+ICAKPiAgc3RhdGljIHZvaWQgaWxrX3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBs YW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxh bmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxh bmVfc3RhdGUtPmh3LmZiOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiBAQCAt MTc2NywxNCArMTc2NywxNCBAQCBnNHhfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUsCj4gIAl1MzIgZHZzc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVb MF0ub2Zmc2V0Owo+ICAJdTMyIGxpbmVhcl9vZmZzZXQ7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2lu dGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5Owo+IC0JaW50IGNy dGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKPiAtCWludCBjcnRjX3kgPSBwbGFuZV9z dGF0ZS0+YmFzZS5kc3QueTE7Cj4gLQl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLmRzdCk7Cj4gLQl1MzIgY3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFu ZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT51YXBpLmRz dC54MTsKPiArCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7Cj4gKwl1MzIg Y3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Cj4gKwl1MzIg Y3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICAJdTMy IHggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ueDsKPiAgCXUzMiB5ID0gcGxhbmVfc3Rh dGUtPmNvbG9yX3BsYW5lWzBdLnk7Cj4gLQl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxh bmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiAtCXUzMiBzcmNfaCA9IGRybV9yZWN0X2hlaWdo dCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiArCXUzMiBzcmNfdyA9IGRybV9yZWN0 X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJdTMyIHNyY19oID0gZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICAJdTMyIGR2c2Nu dHIsIGR2c3NjYWxlID0gMDsKPiAgCXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4gIAo+IEBAIC0x ODg4LDggKzE4ODgsOCBAQCBnNHhfc3ByaXRlX2NoZWNrX3NjYWxpbmcoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5ody5mYjsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5l X3N0YXRlLT5iYXNlLnNyYzsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5l X3N0YXRlLT5iYXNlLmRzdDsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5l X3N0YXRlLT51YXBpLnNyYzsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5l X3N0YXRlLT51YXBpLmRzdDsKPiAgCWludCBzcmNfeCwgc3JjX3csIHNyY19oLCBjcnRjX3csIGNy dGNfaDsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0K PiAgCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiBAQCAtMTk0OCw3ICsxOTQ4LDcg QEAgc3RhdGljIGludAo+ICBnNHhfc3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICAJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRv X2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWludCBt aW5fc2NhbGUgPSBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7Cj4gIAlpbnQgbWF4X3NjYWxl ID0gRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HOwo+IEBAIC0xOTY0LDcgKzE5NjQsNyBAQCBn NHhfc3ByaXRlX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CX0KPiAgCX0KPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0 ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19w bGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVh cGksCj4gIAkJCQkJCSAgbWluX3NjYWxlLCBtYXhfc2NhbGUsCj4gIAkJCQkJCSAgdHJ1ZSwgdHJ1 ZSk7Cj4gQEAgLTE5NzUsNyArMTk3NSw3IEBAIGc0eF9zcHJpdGVfY2hlY2soc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4g IAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFwbGFuZV9zdGF0 ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9IGludGVsX3BsYW5l X2NoZWNrX3NyY19jb29yZGluYXRlcyhwbGFuZV9zdGF0ZSk7Cj4gQEAgLTE5OTYsNyArMTk5Niw3 IEBAIGc0eF9zcHJpdGVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIAo+ICBpbnQgY2h2X3BsYW5lX2NoZWNrX3JvdGF0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gKwlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxh bmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFu ZS0+YmFzZS5kZXYpOwo+ICAJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3 LnJvdGF0aW9uOwo+ICAKPiBAQCAtMjAyMSw3ICsyMDIxLDcgQEAgdmx2X3Nwcml0ZV9jaGVjayhz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0 dXJuIHJldDsKPiAgCj4gLQlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0 ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCj4gKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19w bGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgJmNydGNfc3RhdGUtPnVh cGksCj4gIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ICAJCQkJCQkgIERS TV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiBAQCAtMjAzMyw3ICsyMDMzLDcgQEAgdmx2X3Nw cml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChy ZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2li bGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUpCj4gIAkJcmV0dXJuIDA7Cj4g IAo+ICAJcmV0ID0gaW50ZWxfcGxhbmVfY2hlY2tfc3JjX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRl KTsKPiBAQCAtMjA0OCw3ICsyMDQ4LDcgQEAgdmx2X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfZmIo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAgIGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5w bGFuZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAl1bnNpZ25lZCBpbnQgcm90YXRp b24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gQEAgLTIxMjMsOSArMjEyMyw5IEBAIHN0 YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2RzdF9jb29yZGluYXRlcyhjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zCj4gIAkJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0KPiAtCQl0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+IC0J aW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT5iYXNlLmRzdC54MTsKPiAtCWludCBjcnRjX3cgPSBk cm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiArCQl0b19pOTE1KHBsYW5l X3N0YXRlLT51YXBpLnBsYW5lLT5kZXYpOwo+ICsJaW50IGNydGNfeCA9IHBsYW5lX3N0YXRlLT51 YXBpLmRzdC54MTsKPiArCWludCBjcnRjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PnVhcGkuZHN0KTsKPiAgCWludCBwaXBlX3NyY193ID0gY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdzsK PiAgCj4gIAkvKgo+IEBAIC0yMTUzLDcgKzIxNTMsNyBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9j aGVja19udjEyX3JvdGF0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf cwo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3Rh dGlvbjsKPiAtCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5z cmMpID4+IDE2Owo+ICsJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51 YXBpLnNyYykgPj4gMTY7Cj4gIAo+ICAJLyogRGlzcGxheSBXQSAjMTEwNiAqLwo+ICAJaWYgKGRy bV9mb3JtYXRfaW5mb19pc195dXZfc2VtaXBsYW5hcihmYi0+Zm9ybWF0KSAmJiBzcmNfdyAmIDMg JiYKPiBAQCAtMjE4NSw3ICsyMTg1LDcgQEAgc3RhdGljIGludCBza2xfcGxhbmVfbWF4X3NjYWxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgc3RhdGljIGludCBza2xfcGxh bmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgIHN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 Cj4gKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3Rh dGUtPnVhcGkucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZl ciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlpbnQgbWluX3NjYWxlID0gRFJNX1BMQU5F X0hFTFBFUl9OT19TQ0FMSU5HOwo+IEBAIC0yMjAyLDcgKzIyMDIsNyBAQCBzdGF0aWMgaW50IHNr bF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlt YXhfc2NhbGUgPSBza2xfcGxhbmVfbWF4X3NjYWxlKGRldl9wcml2LCBmYik7Cj4gIAl9Cj4gIAo+ IC0JcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRl LT5iYXNlLAo+ICsJcmV0ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBs YW5lX3N0YXRlLT51YXBpLAo+ICAJCQkJCQkgICZjcnRjX3N0YXRlLT51YXBpLAo+ICAJCQkJCQkg IG1pbl9zY2FsZSwgbWF4X3NjYWxlLAo+ICAJCQkJCQkgIHRydWUsIHRydWUpOwo+IEBAIC0yMjEz LDcgKzIyMTMsNyBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4g LQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT51 YXBpLnZpc2libGUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJcmV0ID0gc2tsX3BsYW5lX2NoZWNr X2RzdF9jb29yZGluYXRlcyhjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gQEAgLTIyMzAsNyAr MjIzMCw3IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAKPiAgCS8qIEhXIG9ubHkgaGFzIDggYml0cyBwaXhlbCBwcmVj aXNpb24sIGRpc2FibGUgcGxhbmUgaWYgaW52aXNpYmxlICovCj4gIAlpZiAoIShwbGFuZV9zdGF0 ZS0+aHcuYWxwaGEgPj4gOCkpCj4gLQkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNl Owo+ICsJCXBsYW5lX3N0YXRlLT51YXBpLnZpc2libGUgPSBmYWxzZTsKPiAgCj4gIAlwbGFuZV9z dGF0ZS0+Y3RsID0gc2tsX3BsYW5lX2N0bChjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gIAo+ IEBAIC0yMjQ5LDcgKzIyNDksNyBAQCBzdGF0aWMgYm9vbCBoYXNfZHN0X2tleV9pbl9wcmltYXJ5 X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgc3RhdGljIHZvaWQg aW50ZWxfcGxhbmVfc2V0X2NrZXkoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSwKPiAgCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqc2V0KQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVf c3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBk cm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gIAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDI1YThlMjBkMjExMi4uZTdkYTRiNTEzNGIy IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTc4Niw3ICs3ODYsNyBAQCBzdGF0 aWMgaW50IGludGVsX3dtX251bV9sZXZlbHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICBzdGF0aWMgYm9vbCBpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJICAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5w bGFuZSk7Cj4gIAo+ICAJLyogRklYTUUgY2hlY2sgdGhlICdlbmFibGUnIGluc3RlYWQgKi8KPiAg CWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQo+IEBAIC04MDMsNyArODAzLDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChwbGFuZS0+aWQgPT0gUExBTkVfQ1VSU09SKQo+ICAJCXJl dHVybiBwbGFuZV9zdGF0ZS0+aHcuZmIgIT0gTlVMTDsKPiAgCWVsc2UKPiAtCQlyZXR1cm4gcGxh bmVfc3RhdGUtPmJhc2UudmlzaWJsZTsKPiArCQlyZXR1cm4gcGxhbmVfc3RhdGUtPnVhcGkudmlz aWJsZTsKPiAgfQo+ICAKPiAgc3RhdGljIHN0cnVjdCBpbnRlbF9jcnRjICpzaW5nbGVfZW5hYmxl ZF9jcnRjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBAQCAtMTA3NSw3ICsx MDc1LDcgQEAgc3RhdGljIHUxNiBnNHhfY29tcHV0ZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlLAo+ICAJCQkgIGludCBsZXZlbCkKPiAgewo+IC0Jc3RydWN0IGludGVs X3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsK PiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0 ZS0+dWFwaS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gIAkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4g QEAgLTExMDgsNyArMTEwOCw3IEBAIHN0YXRpYyB1MTYgZzR4X2NvbXB1dGVfd20oY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAljbG9jayA9IGFkanVzdGVkX21v ZGUtPmNydGNfY2xvY2s7Cj4gIAlodG90YWwgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbDsK PiAgCj4gLQl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ ICsJd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiAgCj4g IAlpZiAocGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikgewo+ICAJCXdtID0gaW50ZWxfd21fbWV0 aG9kMihjbG9jaywgaHRvdGFsLCB3aWR0aCwgY3BwLCBsYXRlbmN5KTsKPiBAQCAtMTE3NCw3ICsx MTc0LDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9mYmNfd20oY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyBib29sIGc0eF9yYXdfcGxhbmVfd21f Y29tcHV0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSAgICAg Y29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0Jc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNl LnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShw bGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAlpbnQgbnVtX2xldmVscyA9IGludGVsX3dtX251 bV9sZXZlbHModG9faTkxNShwbGFuZS0+YmFzZS5kZXYpKTsKPiAgCWVudW0gcGxhbmVfaWQgcGxh bmVfaWQgPSBwbGFuZS0+aWQ7Cj4gIAlib29sIGRpcnR5ID0gZmFsc2U7Cj4gQEAgLTE1ODEsNyAr MTU4MSw3IEBAIHN0YXRpYyB1MTYgdmx2X2NvbXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlLAo+ICAJCQkJaW50IGxldmVsKQo+ICB7Cj4gLQlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxh bmUpOwo+ICsJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT51YXBpLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAgCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZTsKPiBAQCAtMTc1MSw3ICsxNzUxLDcgQEAgc3RhdGljIGJvb2wgdmx2X3Jhd19wbGFuZV93bV9z ZXQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyBib29sIHZs dl9yYXdfcGxhbmVfd21fY29tcHV0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZSk7Cj4gIAllbnVtIHBsYW5lX2lk IHBsYW5lX2lkID0gcGxhbmUtPmlkOwo+ICAJaW50IG51bV9sZXZlbHMgPSBpbnRlbF93bV9udW1f bGV2ZWxzKHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KSk7Cj4gIAlpbnQgbGV2ZWw7Cj4gQEAgLTI0 ODQsNyArMjQ4NCw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAKPiAgCW1ldGhvZDIgPSBpbGtfd21f bWV0aG9kMihjcnRjX3N0YXRlLT5waXhlbF9yYXRlLAo+ICAJCQkJIGNydGNfc3RhdGUtPmh3LmFk anVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gLQkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLmRzdCksCj4gKwkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBp LmRzdCksCj4gIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwo+ICAKPiAgCXJldHVybiBtaW4obWV0aG9k MSwgbWV0aG9kMik7Cj4gQEAgLTI1MTIsNyArMjUxMiw3IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1 dGVfc3ByX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ bWV0aG9kMSA9IGlsa193bV9tZXRob2QxKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsIGNwcCwgbWVt X3ZhbHVlKTsKPiAgCW1ldGhvZDIgPSBpbGtfd21fbWV0aG9kMihjcnRjX3N0YXRlLT5waXhlbF9y YXRlLAo+ICAJCQkJIGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4g LQkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCksCj4gKwkJCQkgZHJt X3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCksCj4gIAkJCQkgY3BwLCBtZW1fdmFs dWUpOwo+ICAJcmV0dXJuIG1pbihtZXRob2QxLCBtZXRob2QyKTsKPiAgfQo+IEBAIC0yNTM3LDcg KzI1MzcsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX2N1cl93bShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIAlyZXR1cm4gaWxrX3dtX21ldGhvZDIo Y3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSwKPiAgCQkJICAgICAgY3J0Y19zdGF0ZS0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2h0b3RhbCwKPiAtCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0 YXRlLT5iYXNlLmRzdCksCj4gKwkJCSAgICAgIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+ dWFwaS5kc3QpLAo+ICAJCQkgICAgICBjcHAsIG1lbV92YWx1ZSk7Cj4gIH0KPiAgCj4gQEAgLTI1 NTMsNyArMjU1Myw4IEBAIHN0YXRpYyB1MzIgaWxrX2NvbXB1dGVfZmJjX3dtKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAKPiAgCWNwcCA9IHBsYW5lX3N0YXRl LT5ody5mYi0+Zm9ybWF0LT5jcHBbMF07Cj4gIAo+IC0JcmV0dXJuIGlsa193bV9mYmMocHJpX3Zh bCwgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCksIGNwcCk7Cj4gKwlyZXR1 cm4gaWxrX3dtX2ZiYyhwcmlfdmFsLCBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGku ZHN0KSwKPiArCQkJICBjcHApOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdW5zaWduZWQgaW50Cj4gQEAg LTMwOTcsMTAgKzMwOTgsMTAgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAKPiAgCXBpcGVfd20tPnBpcGVfZW5h YmxlZCA9IGNydGNfc3RhdGUtPmh3LmFjdGl2ZTsKPiAgCWlmIChzcHJzdGF0ZSkgewo+IC0JCXBp cGVfd20tPnNwcml0ZXNfZW5hYmxlZCA9IHNwcnN0YXRlLT5iYXNlLnZpc2libGU7Cj4gLQkJcGlw ZV93bS0+c3ByaXRlc19zY2FsZWQgPSBzcHJzdGF0ZS0+YmFzZS52aXNpYmxlICYmCj4gLQkJCShk cm1fcmVjdF93aWR0aCgmc3Byc3RhdGUtPmJhc2UuZHN0KSAhPSBkcm1fcmVjdF93aWR0aCgmc3By c3RhdGUtPmJhc2Uuc3JjKSA+PiAxNiB8fAo+IC0JCQkgZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0 ZS0+YmFzZS5kc3QpICE9IGRybV9yZWN0X2hlaWdodCgmc3Byc3RhdGUtPmJhc2Uuc3JjKSA+PiAx Nik7Cj4gKwkJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUtPnVhcGkudmlzaWJs ZTsKPiArCQlwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9IHNwcnN0YXRlLT51YXBpLnZpc2libGUg JiYKPiArCQkJKGRybV9yZWN0X3dpZHRoKCZzcHJzdGF0ZS0+dWFwaS5kc3QpICE9IGRybV9yZWN0 X3dpZHRoKCZzcHJzdGF0ZS0+dWFwaS5zcmMpID4+IDE2IHx8Cj4gKwkJCSBkcm1fcmVjdF9oZWln aHQoJnNwcnN0YXRlLT51YXBpLmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+dWFw aS5zcmMpID4+IDE2KTsKPiAgCX0KPiAgCj4gIAl1c2FibGVfbGV2ZWwgPSBtYXhfbGV2ZWw7Cj4g QEAgLTQwNzIsMTAgKzQwNzMsMTAgQEAgc2tsX3BsYW5lX2Rvd25zY2FsZV9hbW91bnQoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkgKgo+ICAJICogbi5iLiwg c3JjIGlzIDE2LjE2IGZpeGVkIHBvaW50LCBkc3QgaXMgd2hvbGUgaW50ZWdlci4KPiAgCSAqLwo+ IC0Jc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsK PiAtCXNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2 Owo+IC0JZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KTsKPiAt CWRzdF9oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpOwo+ICsJc3Jj X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3JjKSA+PiAxNjsKPiArCXNy Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJ ZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKPiArCWRzdF9o ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOwo+ICAKPiAgCWZwX3df cmF0aW8gPSBkaXZfZml4ZWQxNihzcmNfdywgZHN0X3cpOwo+ICAJZnBfaF9yYXRpbyA9IGRpdl9m aXhlZDE2KHNyY19oLCBkc3RfaCk7Cj4gQEAgLTQwOTAsMTQgKzQwOTEsMTQgQEAgc2tsX3BsYW5l X3JlbGF0aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiAgCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlLAo+ICAJCQkgICAgIGludCBjb2xvcl9wbGFuZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAr CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ dWFwaS5wbGFuZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l X3N0YXRlLT5ody5mYjsKPiAgCXUzMiBkYXRhX3JhdGU7Cj4gIAl1MzIgd2lkdGggPSAwLCBoZWln aHQgPSAwOwo+ICAJdWludF9maXhlZF8xNl8xNl90IGRvd25fc2NhbGVfYW1vdW50Owo+ICAJdTY0 IHJhdGU7Cj4gIAo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJaWYgKCFw bGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCWlmIChwbGFu ZS0+aWQgPT0gUExBTkVfQ1VSU09SKQo+IEBAIC00MTEyLDggKzQxMTMsOCBAQCBza2xfcGxhbmVf cmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ICAJICogdGhlIDkwLzI3MCBkZWdyZWUgcGxhbmUgcm90YXRpb24gY2FzZXMgKHRvIG1h dGNoIHRoZQo+ICAJICogR1RUIG1hcHBpbmcpLCBoZW5jZSBubyBuZWVkIHRvIGFjY291bnQgZm9y IHJvdGF0aW9uIGhlcmUuCj4gIAkgKi8KPiAtCXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gLQloZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJnBs YW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICsJaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0 KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ICAKPiAgCS8qIFVWIHBsYW5lIGRvZXMg MS8yIHBpeGVsIHN1Yi1zYW1wbGluZyAqLwo+ICAJaWYgKGNvbG9yX3BsYW5lID09IDEpIHsKPiBA QCAtNDYyMCw3ICs0NjIxLDcgQEAgc2tsX2NvbXB1dGVfcGxhbmVfd21fcGFyYW1zKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJICogdGhlIDkwLzI3MCBkZWdy ZWUgcGxhbmUgcm90YXRpb24gY2FzZXMgKHRvIG1hdGNoIHRoZQo+ICAJICogR1RUIG1hcHBpbmcp LCBoZW5jZSBubyBuZWVkIHRvIGFjY291bnQgZm9yIHJvdGF0aW9uIGhlcmUuCj4gIAkgKi8KPiAt CXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4g Kwl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMpID4+IDE2Owo+ ICAKPiAgCXJldHVybiBza2xfY29tcHV0ZV93bV9wYXJhbXMoY3J0Y19zdGF0ZSwgd2lkdGgsCj4g IAkJCQkgICAgIGZiLT5mb3JtYXQsIGZiLT5tb2RpZmllciwKPiBAQCAtNDkwMiw3ICs0OTAzLDcg QEAgc3RhdGljIGludCBza2xfYnVpbGRfcGxhbmVfd21fdXYoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICsJc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT51YXBp LnBsYW5lKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3Rh dGUtPmh3LmZiOwo+ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiAgCWlu dCByZXQ7Cj4gQEAgLTQ5MjgsNyArNDkyOSw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5l X3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgaW50IGlj bF9idWlsZF9wbGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CQkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAg ewo+IC0JZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKS0+aWQ7Cj4gKwllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxf cGxhbmUocGxhbmVfc3RhdGUtPnVhcGkucGxhbmUpLT5pZDsKPiAgCWludCByZXQ7Cj4gIAo+ICAJ LyogV2F0ZXJtYXJrcyBjYWxjdWxhdGVkIGluIG1hc3RlciAqLwo+IEBAIC01OTMwLDcgKzU5MzEs NyBAQCB2b2lkIGc0eF93bV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiAgCQlpbnQgbGV2 ZWw7Cj4gIAo+IC0JCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChwbGFu ZV9zdGF0ZS0+dWFwaS52aXNpYmxlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJZm9yIChsZXZl bCA9IDA7IGxldmVsIDwgMzsgbGV2ZWwrKykgewo+IEBAIC02MDg1LDcgKzYwODYsNyBAQCB2b2lk IHZsdl93bV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJ ZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiAgCQlpbnQgbGV2ZWw7Cj4gIAo+ IC0JCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCWlmIChwbGFuZV9zdGF0ZS0+ dWFwaS52aXNpYmxlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJZm9yIChsZXZlbCA9IDA7IGxl dmVsIDwgd21fc3RhdGUtPm51bV9sZXZlbHM7IGxldmVsKyspIHsKPiAtLSAKPiAyLjIzLjAKPiAK PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0t IApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4