From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 06/11] drm/i915: Enable big joiner support in enable and disable sequences. Date: Thu, 28 Nov 2019 21:43:13 +0200 Message-ID: <20191128194313.GB1208@intel.com> References: <20191114160522.9699-1-maarten.lankhorst@linux.intel.com> <20191114160522.9699-6-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id AC3846E0E4 for ; Thu, 28 Nov 2019 19:43:17 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191114160522.9699-6-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 T24gVGh1LCBOb3YgMTQsIDIwMTkgYXQgMDU6MDU6MTdQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gTWFrZSB2ZHNjIHdvcmsgd2hlbiBubyBvdXRwdXQgaXMgZW5hYmxlZC4gVGhl IGJpZyBqb2luZXIgbmVlZHMgVkRTQwo+IG9uIHRoZSBzbGF2ZSwgc28gZW5hYmxlIGl0IGFuZCBz ZXQgdGhlIGFwcHJvcHJpYXRlIGJpdHMuCj4gQWxzbyB1cGRhdGUgdGltZXN0YW1waW5nIGNvbnN0 YW50cywgYmVjYXVzZSBzbGF2ZSBjcnRjJ3MgYXJlIG5vdAo+IHVwZGF0ZWQgaW4gZHJtX2F0b21p Y19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKCkuCj4gCj4gVGhpcyBzaG91bGQg YmUgZW5vdWdoIHRvIGJyaW5nIHVwIENSVEMncyBpbiBhIGJpZyBqb2luZXIgY29uZmlndXJhdGlv biwKPiB3aXRob3V0IGFueSBwbGFuZSBjb25maWd1cmF0aW9uIG9uIHRoZSBzZWNvbmQgcGlwZSB5 ZXQuCj4gCj4gSE9XRVZFUiwgd2Ugc3RpbGwgYnJpbmcgdXAgdGhlIGNydGMncyBpbiB0aGUgd3Jv bmcgb3JkZXIuIFdlIG5lZWQgdG8KPiBtYWtlIHN1cmUgdGhhdCB0aGUgbWFzdGVyIGNydGMgaXMg YnJvdWdodCB1cCBhZnRlciB0aGUgc2xhdmUgY3J0Yy4KPiBUaGlzIGlzIGRvbmUgY29ycmVjdGx5 IGxhdGVyIGluIHRoaXMgc2VyaWVzLgo+IAo+IFRoZSBuZXh0IHN0ZXBzIGFyZSB0byBlbmFibGUg cGxhbmVzIGNvcnJlY3RseSwgYW5kIG1ha2Ugc3VyZSB3ZSBlbmFibGUKPiBhbmQgdXBkYXRlIGJv dGggbWFzdGVyIGFuZCBzbGF2ZSBpbiB0aGUgY29ycmVjdCBvcmRlci4KPiAKPiBTaWduZWQtb2Zm LWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29t Pgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jICAgICAg fCAgNDggKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j ICB8IDM5OSArKysrKysrKysrKystLS0tLS0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheV90eXBlcy5oICAgIHwgIDIyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kcC5jICAgICAgIHwgIDIxICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfdmRzYy5jICAgICB8IDEyMiArKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF92ZHNjLmggICAgIHwgICAyICsKPiAgNiBmaWxlcyBjaGFuZ2VkLCA0MDgg aW5zZXJ0aW9ucygrKSwgMjA2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kZGkuYwo+IGluZGV4IDhmODE3ZGUzNDQ2MC4uMTIxNWY2MTlkYTM2IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gQEAgLTIyMTgs MTMgKzIyMTgsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfZ2V0X3Bvd2VyX2RvbWFpbnMoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkgICAgaW50ZWxfcGh5X2lzX3RjKGRldl9w cml2LCBwaHkpKQo+ICAJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+ICAJCQkJ CWludGVsX2RkaV9tYWluX2xpbmtfYXV4X2RvbWFpbihkaWdfcG9ydCkpOwo+IC0KPiAtCS8qCj4g LQkgKiBWRFNDIHBvd2VyIGlzIG5lZWRlZCB3aGVuIERTQyBpcyBlbmFibGVkCj4gLQkgKi8KPiAt CWlmIChjcnRjX3N0YXRlLT5kc2MuY29tcHJlc3Npb25fZW5hYmxlKQo+IC0JCWludGVsX2Rpc3Bs YXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+IC0JCQkJCWludGVsX2RzY19wb3dlcl9kb21haW4oY3J0 Y19zdGF0ZSkpOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX2RkaV9lbmFibGVfcGlwZV9jbG9jayhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiBAQCAtMzU1Nyw3ICsz NTUwLDggQEAgc3RhdGljIHZvaWQgdGdsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCS8qIDcubCBDb25maWd1cmUgYW5kIGVuYWJsZSBGRUMg aWYgbmVlZGVkICovCj4gIAlpbnRlbF9kZGlfZW5hYmxlX2ZlYyhlbmNvZGVyLCBjcnRjX3N0YXRl KTsKPiAtCWludGVsX2RzY19lbmFibGUoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4gKwlpZiAoIWNy dGNfc3RhdGUtPmJpZ2pvaW5lcikKPiArCQlpbnRlbF9kc2NfZW5hYmxlKGVuY29kZXIsIGNydGNf c3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBoc3dfZGRpX3ByZV9lbmFibGVfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gQEAgLTM2MjksNyArMzYyMyw4IEBAIHN0YXRp YyB2b2lkIGhzd19kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCWlmICghaXNfbXN0KQo+ICAJCWludGVsX2RkaV9lbmFibGVfcGlwZV9jbG9jayhjcnRj X3N0YXRlKTsKPiAgCj4gLQlpbnRlbF9kc2NfZW5hYmxlKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ ICsJaWYgKCFjcnRjX3N0YXRlLT5iaWdqb2luZXIpCj4gKwkJaW50ZWxfZHNjX2VuYWJsZShlbmNv ZGVyLCBjcnRjX3N0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9l bmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gQEAgLTQyNTIsMTkgKzQy NDcsMTggQEAgdm9pZCBpbnRlbF9kZGlfY29tcHV0ZV9taW5fdm9sdGFnZV9sZXZlbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJY3J0Y19zdGF0ZS0+bWluX3ZvbHRhZ2Vf bGV2ZWwgPSAyOwo+ICB9Cj4gIAo+IC12b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IC0JCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZykKPiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX3JlYWRfZnVuY19jdGwoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRjKTsKPiAgCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2Rl cjsKPiAgCXUzMiB0ZW1wLCBmbGFncyA9IDA7Cj4gIAo+IC0JLyogWFhYOiBEU0kgdHJhbnNjb2Rl ciBwYXJhbm9pYSAqLwo+IC0JaWYgKFdBUk5fT04odHJhbnNjb2Rlcl9pc19kc2koY3B1X3RyYW5z Y29kZXIpKSkKPiArCXRlbXAgPSBJOTE1X1JFQUQoVFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFu c2NvZGVyKSk7Cj4gKwlpZiAoISh0ZW1wICYgVFJBTlNfRERJX0ZVTkNfRU5BQkxFKSkKPiAgCQly ZXR1cm47Cj4gIAo+IC0JdGVtcCA9IEk5MTVfUkVBRChUUkFOU19ERElfRlVOQ19DVEwoY3B1X3Ry YW5zY29kZXIpKTsKPiAgCWlmICh0ZW1wICYgVFJBTlNfRERJX1BIU1lOQykKPiAgCQlmbGFncyB8 PSBEUk1fTU9ERV9GTEFHX1BIU1lOQzsKPiAgCWVsc2UKPiBAQCAtNDM1MCw2ICs0MzQ0LDI5IEBA IHZvaWQgaW50ZWxfZGRpX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIAlkZWZhdWx0Ogo+ICAJCWJyZWFrOwo+ICAJfQo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2Rk aV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkgIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwllbnVt IHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7 Cj4gKwo+ICsJLyogWFhYOiBEU0kgdHJhbnNjb2RlciBwYXJhbm9pYSAqLwo+ICsJaWYgKFdBUk5f T04odHJhbnNjb2Rlcl9pc19kc2koY3B1X3RyYW5zY29kZXIpKSkKPiArCQlyZXR1cm47Cj4gKwo+ ICsJaW50ZWxfZGRpX3JlYWRfZnVuY19jdGwoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ICsJaWYg KHBpcGVfY29uZmlnLT5iaWdqb2luZXJfc2xhdmUpIHsKPiArCQkvKiByZWFkIG91dCBwaXBlIHNl dHRpbmdzIGZyb20gbWFzdGVyICovCj4gKwkJZW51bSB0cmFuc2NvZGVyIHNhdmUgPSBwaXBlX2Nv bmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gKwo+ICsJCSAvKiBPdXIgb3duIHRyYW5zY29kZXIgbmVl ZHMgdG8gYmUgZGlzYWJsZWQgd2hlbiByZWFkaW5nIGl0IGluIGludGVsX2RkaV9yZWFkX2Z1bmNf Y3RsKCkgKi8KPiArCQlXQVJOX09OKHBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMpOwo+ICsJCXBp cGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciA9IChlbnVtIHRyYW5zY29kZXIpcGlwZV9jb25maWct PmJpZ2pvaW5lcl9saW5rZWRfY3J0Yy0+cGlwZTsKClRoYXQncyBwcmV0dHkgaG9ycmlibGUuCgpJ IGRvbid0IHVuZGVyc3RhbmQgdGhlIGVuYWJsZS9kaXNhYmxlIHNlcXVlbmNlIGVub3VnaCB0byBr bm93IHdoYXQKd2UgbmVlZCB0byBjb25maWd1cmUvZW5hYmxlIHdoZXJlIGV4YWN0bHkuIEJzcGVj IGp1c3Qgc2F5czoKCiIyLiBGb2xsb3cgdGhlIHN0ZXBzIHRvIEVuYWJsZSBQbGFuZXMsIFBpcGUs IGFuZCBUcmFuc2NvZGVyIGZvciBwaXBlIEMsIGJ1dAogICAgZG8gbm90IGNvbmZpZ3VyZSBvciBl bmFibGUgdHJhbnNjb2RlciBDLgogMy4gRm9sbG93IHRoZSBzdGVwcyB0byBFbmFibGUgUGxhbmVz LCBQaXBlLCBhbmQgVHJhbnNjb2RlciBmb3IgcGlwZSBCIGFuZAogICAgdHJhbnNjb2RlciBCLiIK ClNvIHdlIG5lZWQgdG8gZW5hYmxlIHRyYW5zY29kZXIgZm9yIHBpcGUgQyBidXQgbm90IGVuYWJs ZSB0cmFuc2NvZGVyIEM/CkkgaGF2ZSBubyBpZGVhIHdoYXQgYWN0dWFsbHkgbWVhbnMuCgo+ICsJ CWludGVsX2RkaV9yZWFkX2Z1bmNfY3RsKGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiArCQlwaXBl X2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgPSBzYXZlOwo+ICsJfQo+ICAKPiAgCWlmIChlbmNvZGVy LT50eXBlID09IElOVEVMX09VVFBVVF9FRFApCj4gIAkJdGdsX2RjM2NvX2V4aXRsaW5lX2dldF9j b25maWcocGlwZV9jb25maWcpOwo+IEBAIC00Mzc3LDcgKzQzOTQsOCBAQCB2b2lkIGludGVsX2Rk aV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCWRldl9wcml2 LT52YnQuZWRwLmJwcCA9IHBpcGVfY29uZmlnLT5waXBlX2JwcDsKPiAgCX0KPiAgCj4gLQlpbnRl bF9kZGlfY2xvY2tfZ2V0KGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiArCWlmICghcGlwZV9jb25m aWctPmJpZ2pvaW5lcl9zbGF2ZSkKPiArCQlpbnRlbF9kZGlfY2xvY2tfZ2V0KGVuY29kZXIsIHBp cGVfY29uZmlnKTsKPiAgCj4gIAlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJcGlwZV9j b25maWctPmxhbmVfbGF0X29wdGltX21hc2sgPQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggMmRjNjNlZjVjYWY4Li45NGU0Y2FiMDBhNjYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+ IEBAIC02NTgzLDYgKzY1ODMsNDUgQEAgc3RhdGljIHZvaWQgaWNsX3BpcGVfbWJ1c19lbmFibGUo c3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAlJOTE1X1dSSVRFKFBJUEVfTUJVU19EQk9YX0NU TChwaXBlKSwgdmFsKTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgaWNsX2RkaV9iaWdqb2luZXJf cHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJCQkgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9j cnRjICptYXN0ZXIgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gKwlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbWFzdGVyX2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBOVUxMOwo+ICsJaW50IGk7 Cj4gKwo+ICsJaWYgKGNydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkKPiArCQltYXN0ZXIgPSBj cnRjX3N0YXRlLT5iaWdqb2luZXJfbGlua2VkX2NydGM7Cj4gKwo+ICsJbWFzdGVyX2NydGNfc3Rh dGUgPSBpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBtYXN0ZXIpOwo+ICsK PiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoJnN0YXRlLT5iYXNlLCBjb25uLCBj b25uX3N0YXRlLCBpKSB7Cj4gKwkJaWYgKGNvbm5fc3RhdGUtPmNydGMgIT0gJm1hc3Rlci0+YmFz ZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWVuY29kZXIgPSB0b19pbnRlbF9lbmNvZGVyKGNv bm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFj cnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpIHsKPiArCQkvKiBuZWVkIHRvIGVuYWJsZSBWRFND LCB3aGljaCB3ZSBza2lwcGVkIGluIHByZS1lbmFibGUgKi8KPiArCQlpbnRlbF9kc2NfZW5hYmxl KGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ICsJfSBlbHNlIHsKPiArCQkvKgo+ICsJCSAqIEVuYWJs ZSBzZXF1ZW5jZSBzdGVwcyAxLTcgb24gYmlnam9pbmVyIG1hc3Rlcgo+ICsJCSAqLwo+ICsJCWlu dGVsX2VuY29kZXJzX3ByZV9wbGxfZW5hYmxlKG1hc3RlciwgbWFzdGVyX2NydGNfc3RhdGUsIHN0 YXRlKTsKPiArCQlpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwobWFzdGVyX2NydGNfc3RhdGUpOwo+ ICsJCWludGVsX2VuY29kZXJzX3ByZV9lbmFibGUobWFzdGVyLCBtYXN0ZXJfY3J0Y19zdGF0ZSwg c3RhdGUpOwo+ICsKPiArCQkvKiBhbmQgRFNDIG9uIHNsYXZlICovCj4gKwkJaW50ZWxfZHNjX2Vu YWJsZShOVUxMLCBjcnRjX3N0YXRlKTsKPiArCX0KPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgaGFz d2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4g IAkJCQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+IEBAIC02NTk2LDQw ICs2NjM1LDQxIEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJaWYgKFdBUk5fT04oaW50ZWxfY3J0Yy0+YWN0 aXZlKSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaW50ZWxfZW5jb2RlcnNfcHJlX3BsbF9lbmFibGUo aW50ZWxfY3J0YywgcGlwZV9jb25maWcsIHN0YXRlKTsKPiArCWlmICghcGlwZV9jb25maWctPmJp Z2pvaW5lcikgewo+ICsJCWludGVsX2VuY29kZXJzX3ByZV9wbGxfZW5hYmxlKGludGVsX2NydGMs IHBpcGVfY29uZmlnLCBzdGF0ZSk7Cj4gIAo+IC0JaWYgKHBpcGVfY29uZmlnLT5zaGFyZWRfZHBs bCkKPiAtCQlpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwocGlwZV9jb25maWcpOwo+ICsJCWlmIChw aXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwpCj4gKwkJCWludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChw aXBlX2NvbmZpZyk7Cj4gIAo+IC0JaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShpbnRlbF9jcnRj LCBwaXBlX2NvbmZpZywgc3RhdGUpOwo+ICsJCWludGVsX2VuY29kZXJzX3ByZV9lbmFibGUoaW50 ZWxfY3J0YywgcGlwZV9jb25maWcsIHN0YXRlKTsKPiArCX0gZWxzZSB7Cj4gKwkJaWNsX2RkaV9i aWdqb2luZXJfcHJlX2VuYWJsZShzdGF0ZSwgcGlwZV9jb25maWcpOwo+ICsJfQo+ICAKPiAtCWlm IChpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKHBpcGVfY29uZmlnKSkKPiAtCQlpbnRlbF9kcF9z ZXRfbV9uKHBpcGVfY29uZmlnLCBNMV9OMSk7Cj4gKwlpbnRlbF9zZXRfcGlwZV9zcmNfc2l6ZShw aXBlX2NvbmZpZyk7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JST0FE V0VMTChkZXZfcHJpdikpCj4gKwkJYmR3X3NldF9waXBlbWlzYyhwaXBlX2NvbmZpZyk7Cj4gIAo+ IC0JaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCj4gLQkJaW50ZWxfc2V0 X3RyYW5zY29kZXJfdGltaW5ncyhwaXBlX2NvbmZpZyk7Cj4gKwlpZiAoIXBpcGVfY29uZmlnLT5i aWdqb2luZXJfc2xhdmUgJiYgIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFuc2NvZGVyKSkgewo+ ICsJCWlmIChpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKHBpcGVfY29uZmlnKSkKPiArCQkJaW50 ZWxfZHBfc2V0X21fbihwaXBlX2NvbmZpZywgTTFfTjEpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDExKQo+IC0JCWljbF9lbmFibGVfdHJhbnNfcG9ydF9zeW5jKHBpcGVfY29u ZmlnKTsKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiArCQkJaWNsX2VuYWJs ZV90cmFuc19wb3J0X3N5bmMocGlwZV9jb25maWcpOwo+ICAKPiAtCWludGVsX3NldF9waXBlX3Ny Y19zaXplKHBpcGVfY29uZmlnKTsKPiArCQlpbnRlbF9zZXRfdHJhbnNjb2Rlcl90aW1pbmdzKHBp cGVfY29uZmlnKTsKPiAgCj4gLQlpZiAoY3B1X3RyYW5zY29kZXIgIT0gVFJBTlNDT0RFUl9FRFAg JiYKPiAtCSAgICAhdHJhbnNjb2Rlcl9pc19kc2koY3B1X3RyYW5zY29kZXIpKSB7Cj4gLQkJSTkx NV9XUklURShQSVBFX01VTFQoY3B1X3RyYW5zY29kZXIpLAo+IC0JCQkgICBwaXBlX2NvbmZpZy0+ cGl4ZWxfbXVsdGlwbGllciAtIDEpOwo+IC0JfQo+ICsJCWlmIChjcHVfdHJhbnNjb2RlciAhPSBU UkFOU0NPREVSX0VEUCkKPiArCQkJSTkxNV9XUklURShQSVBFX01VTFQoY3B1X3RyYW5zY29kZXIp LAo+ICsJCQkJICBwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciAtIDEpOwo+ICAKPiAtCWlm IChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gLQkJaW50ZWxfY3B1X3RyYW5zY29k ZXJfc2V0X21fbihwaXBlX2NvbmZpZywKPiAtCQkJCQkgICAgICZwaXBlX2NvbmZpZy0+ZmRpX21f biwgTlVMTCk7Cj4gLQl9Cj4gKwkJaWYgKHBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsK PiArCQkJaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihwaXBlX2NvbmZpZywKPiArCQkJCQkJ ICAgICZwaXBlX2NvbmZpZy0+ZmRpX21fbiwgTlVMTCk7Cj4gKwkJfQo+ICAKPiAtCWlmICghdHJh bnNjb2Rlcl9pc19kc2koY3B1X3RyYW5zY29kZXIpKQo+ICAJCWhhc3dlbGxfc2V0X3BpcGVjb25m KHBpcGVfY29uZmlnKTsKPiAtCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElT X0JST0FEV0VMTChkZXZfcHJpdikpCj4gLQkJYmR3X3NldF9waXBlbWlzYyhwaXBlX2NvbmZpZyk7 Cj4gKwl9Cj4gIAo+ICAJaW50ZWxfY3J0Yy0+YWN0aXZlID0gdHJ1ZTsKPiAgCj4gQEAgLTY2NTcs NyArNjY5Nyw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTEpCj4gIAkJaWNsX3NldF9waXBlX2NoaWNrZW4oaW50ZWxfY3J0Yyk7Cj4gIAo+IC0JaWYgKCF0 cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCj4gKwlpZiAoIXBpcGVfY29uZmlnLT5i aWdqb2luZXJfc2xhdmUgJiYgIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFuc2NvZGVyKSkKPiAg CQlpbnRlbF9kZGlfZW5hYmxlX3RyYW5zY29kZXJfZnVuYyhwaXBlX2NvbmZpZyk7Cj4gIAo+ICAJ aWYgKGRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyAhPSBOVUxMKQo+IEBAIC02 NjY3LDggKzY3MDcsMTAgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAkJaWNsX3BpcGVfbWJ1c19lbmFibGUo aW50ZWxfY3J0Yyk7Cj4gIAo+ICAJLyogWFhYOiBEbyB0aGUgcGlwZSBhc3NlcnRpb25zIGF0IHRo ZSByaWdodCBwbGFjZSBmb3IgQlhUIERTSS4gKi8KPiAtCWlmICghdHJhbnNjb2Rlcl9pc19kc2ko Y3B1X3RyYW5zY29kZXIpKQo+ICsJaWYgKCFwaXBlX2NvbmZpZy0+Ymlnam9pbmVyX3NsYXZlICYm ICF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCj4gIAkJaW50ZWxfZW5hYmxlX3Bp cGUocGlwZV9jb25maWcpOwo+ICsJZWxzZQo+ICsJCXRyYWNlX2ludGVsX3BpcGVfZW5hYmxlKGlu dGVsX2NydGMpOwo+ICAKPiAgCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ICAJ CWxwdF9wY2hfZW5hYmxlKHN0YXRlLCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTY3OTYsOSArNjgzOCwy NyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIAllbHNlCj4gIAkJaXJvbmxha2VfcGZpdF9kaXNhYmxl KG9sZF9jcnRjX3N0YXRlKTsKPiAgCj4gLQlpbnRlbF9lbmNvZGVyc19wb3N0X2Rpc2FibGUoaW50 ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUsIHN0YXRlKTsKPiArCWlmIChvbGRfY3J0Y19zdGF0ZS0+ Ymlnam9pbmVyKSB7Cj4gKwkJc3RydWN0IGludGVsX2NydGMgKm1hc3RlcjsKPiArCQlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqbWFzdGVyX2NydGNfc3RhdGU7Cj4gIAo+IC0JaW50ZWxfZW5jb2Rl cnNfcG9zdF9wbGxfZGlzYWJsZShpbnRlbF9jcnRjLCBvbGRfY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ ICsJCS8qIHBvcnRzIGFyZSBkaXNhYmxlZCBmcm9tIHRoZSBzbGF2ZSwgYWZ0ZXIgaXQgZGVjb25m aWd1cmVzICovCj4gKwkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlKQo+ICsJ CQlyZXR1cm47Cj4gKwo+ICsJCW1hc3RlciA9IG9sZF9jcnRjX3N0YXRlLT5iaWdqb2luZXJfbGlu a2VkX2NydGM7Cj4gKwkJbWFzdGVyX2NydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X29sZF9j cnRjX3N0YXRlKHN0YXRlLCBtYXN0ZXIpOwo+ICsKPiArCQlpbnRlbF9kZGlfZGlzYWJsZV9waXBl X2Nsb2NrKG9sZF9jcnRjX3N0YXRlKTsKPiArCj4gKwkJLyogZGlzYWJsZSBwb3J0cyBvbiB0aGUg bWFzdGVyIGNydGMgKi8KPiArCQlpbnRlbF9lbmNvZGVyc19wb3N0X2Rpc2FibGUobWFzdGVyLCBt YXN0ZXJfY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ICsJCWludGVsX2VuY29kZXJzX3Bvc3RfcGxsX2Rp c2FibGUobWFzdGVyLCBtYXN0ZXJfY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ICsJfSBlbHNlIHsKPiAr CQlpbnRlbF9lbmNvZGVyc19wb3N0X2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUs IHN0YXRlKTsKPiArCj4gKwkJaW50ZWxfZW5jb2RlcnNfcG9zdF9wbGxfZGlzYWJsZShpbnRlbF9j cnRjLCBvbGRfY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9p ZCBpOXh4X3BmaXRfZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+IEBAIC02OTY4LDYgKzcwMjgsOSBAQCBzdGF0aWMgdTY0IGdldF9jcnRjX3Bvd2VyX2Rv bWFpbnMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlpZiAoY3J0Y19z dGF0ZS0+c2hhcmVkX2RwbGwpCj4gIAkJbWFzayB8PSBCSVRfVUxMKFBPV0VSX0RPTUFJTl9ESVNQ TEFZX0NPUkUpOwo+ICAKPiArCWlmIChjcnRjX3N0YXRlLT5kc2MuY29tcHJlc3Npb25fZW5hYmxl KQo+ICsJCW1hc2sgfD0gQklUX1VMTChpbnRlbF9kc2NfcG93ZXJfZG9tYWluKGNydGNfc3RhdGUp KTsKPiArCj4gIAlyZXR1cm4gbWFzazsKPiAgfQo+ICAKPiBAQCAtNzU1OSw2ICs3NjIyLDMwIEBA IHN0YXRpYyB1MzIgaWxrX3BpcGVfcGl4ZWxfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpCj4gIAlyZXR1cm4gcGl4ZWxfcmF0ZTsKPiAgfQo+ICAKPiArc3Rh dGljIHZvaWQgaW50ZWxfZW5jb2Rlcl9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICsJCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK PiArewo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnBpcGVfbW9kZSA9ICZjcnRjX3N0YXRl LT5ody5waXBlX21vZGU7Cj4gKwo+ICsJZW5jb2Rlci0+Z2V0X2NvbmZpZyhlbmNvZGVyLCBjcnRj X3N0YXRlKTsKPiArCj4gKwkqcGlwZV9tb2RlID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZTsKPiArCWlmIChjcnRjX3N0YXRlLT5iaWdqb2luZXIpIHsKPiArCQkvKgo+ICsJCSAgKiB0cmFu c2NvZGVyIGlzIHByb2dyYW1tZWQgdG8gdGhlIGZ1bGwgbW9kZSwKPiArCQkgICogYnV0IHBpcGpl IHRpbWluZ3MgYXJlIGhhbGYgb2YgdGhlIHRyYW5zY29kZXIgbW9kZQo+ICsJCSAgKi8KPiArCQlw aXBlX21vZGUtPmNydGNfaGRpc3BsYXkgLz0gMjsKPiArCQlwaXBlX21vZGUtPmNydGNfaGJsYW5r X3N0YXJ0IC89IDI7Cj4gKwkJcGlwZV9tb2RlLT5jcnRjX2hibGFua19lbmQgLz0gMjsKPiArCQlw aXBlX21vZGUtPmNydGNfaHN5bmNfc3RhcnQgLz0gMjsKPiArCQlwaXBlX21vZGUtPmNydGNfaHN5 bmNfZW5kIC89IDI7Cj4gKwkJcGlwZV9tb2RlLT5jcnRjX2h0b3RhbCAvPSAyOwo+ICsJCXBpcGVf bW9kZS0+Y3J0Y19oc2tldyAvPSAyOwo+ICsJCXBpcGVfbW9kZS0+Y3J0Y19jbG9jayAvPSAyOwo+ ICsJfQo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0 ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMt PmRldik7Cj4gQEAgLTg0NjEsMjAgKzg1NDgsMjIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZ2V0X3Bp cGVfc3JjX3NpemUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIHZvaWQgaW50ZWxfbW9kZV9m cm9tX3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ICAJCQkJIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+IC0JbW9kZS0+aGRpc3Bs YXkgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5Owo+IC0JbW9k ZS0+aHRvdGFsID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWw7Cj4g LQltb2RlLT5oc3luY19zdGFydCA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNf aHN5bmNfc3RhcnQ7Cj4gLQltb2RlLT5oc3luY19lbmQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2hzeW5jX2VuZDsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpod19t b2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICsKPiArCW1vZGUtPmhkaXNw bGF5ID0gaHdfbW9kZS0+Y3J0Y19oZGlzcGxheTsKPiArCW1vZGUtPmh0b3RhbCA9IGh3X21vZGUt PmNydGNfaHRvdGFsOwo+ICsJbW9kZS0+aHN5bmNfc3RhcnQgPSBod19tb2RlLT5jcnRjX2hzeW5j X3N0YXJ0Owo+ICsJbW9kZS0+aHN5bmNfZW5kID0gaHdfbW9kZS0+Y3J0Y19oc3luY19lbmQ7Cj4g IAo+IC0JbW9kZS0+dmRpc3BsYXkgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRj X3ZkaXNwbGF5Owo+IC0JbW9kZS0+dnRvdGFsID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21v ZGUuY3J0Y192dG90YWw7Cj4gLQltb2RlLT52c3luY19zdGFydCA9IHBpcGVfY29uZmlnLT5ody5h ZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfc3RhcnQ7Cj4gLQltb2RlLT52c3luY19lbmQgPSBwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZDsKPiArCW1vZGUtPnZkaXNw bGF5ID0gaHdfbW9kZS0+Y3J0Y192ZGlzcGxheTsKPiArCW1vZGUtPnZ0b3RhbCA9IGh3X21vZGUt PmNydGNfdnRvdGFsOwo+ICsJbW9kZS0+dnN5bmNfc3RhcnQgPSBod19tb2RlLT5jcnRjX3ZzeW5j X3N0YXJ0Owo+ICsJbW9kZS0+dnN5bmNfZW5kID0gaHdfbW9kZS0+Y3J0Y192c3luY19lbmQ7Cj4g IAo+IC0JbW9kZS0+ZmxhZ3MgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFnczsK PiArCW1vZGUtPmZsYWdzID0gaHdfbW9kZS0+ZmxhZ3M7Cj4gIAltb2RlLT50eXBlID0gRFJNX01P REVfVFlQRV9EUklWRVI7Cj4gIAo+IC0JbW9kZS0+Y2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcuYWRq dXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICsJbW9kZS0+Y2xvY2sgPSBod19tb2RlLT5jcnRjX2Ns b2NrOwo+ICAKPiAgCW1vZGUtPmhzeW5jID0gZHJtX21vZGVfaHN5bmMobW9kZSk7Cj4gIAltb2Rl LT52cmVmcmVzaCA9IGRybV9tb2RlX3ZyZWZyZXNoKG1vZGUpOwo+IEBAIC0xMDU2NCw2ICsxMDY1 Myw4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRlKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAJdTMyIHRtcDsKPiAgCj4gIAl0bXAgPSBJOTE1X1JFQUQoVFJBTlNf RERJX0ZVTkNfQ1RMKHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlcikpOwo+ICsJaWYgKCEodG1w ICYgVFJBTlNfRERJX0ZVTkNfRU5BQkxFKSkKPiArCQlyZXR1cm47Cj4gIAo+ICAJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTIpCj4gIAkJcG9ydCA9IFRHTF9UUkFOU19ERElfRlVOQ19DVExf VkFMX1RPX1BPUlQodG1wKTsKPiBAQCAtMTA2ODksMTEgKzEwNzgwLDE5IEBAIHN0YXRpYyBib29s IGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCVdB Uk5fT04oYWN0aXZlKTsKPiAgCQlhY3RpdmUgPSB0cnVlOwo+ICAJfQo+ICsJaW50ZWxfZHNjX2dl dF9jb25maWcocGlwZV9jb25maWcpOwo+ICAKPiAtCWlmICghYWN0aXZlKQo+IC0JCWdvdG8gb3V0 Owo+ICsJaWYgKCFhY3RpdmUpIHsKPiArCQkvKiBiaWdqb2luZXIgc2xhdmUgZG9lc24ndCBlbmFi bGUgdHJhbnNjb2RlciAqLwo+ICsJCWlmICghcGlwZV9jb25maWctPmJpZ2pvaW5lcl9zbGF2ZSkK PiArCQkJZ290byBvdXQ7Cj4gIAo+IC0JaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShwaXBlX2NvbmZp Zy0+Y3B1X3RyYW5zY29kZXIpIHx8Cj4gKwkJYWN0aXZlID0gdHJ1ZTsKPiArCQlwaXBlX2NvbmZp Zy0+cGl4ZWxfbXVsdGlwbGllciA9IDE7Cj4gKwo+ICsJCS8qIHdlIGNhbm5vdCByZWFkIG91dCBt b3N0IHN0YXRlLCBzbyBkb24ndCBib3RoZXIuLiAqLwo+ICsJCXBpcGVfY29uZmlnLT5xdWlya3Mg fD0gUElQRV9DT05GSUdfUVVJUktfQklHSk9JTkVSX1NMQVZFOwo+ICsJfSBlbHNlIGlmICghdHJh bnNjb2Rlcl9pc19kc2kocGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyKSB8fAo+ICAJICAgIElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTEpIHsKPiAgCQloYXN3ZWxsX2dldF9kZGlfcG9ydF9zdGF0 ZShjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gIAkJaW50ZWxfZ2V0X3RyYW5zY29kZXJfdGltaW5ncyhj cnRjLCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTEwNzcwLDcgKzEwODY5LDEwIEBAIHN0YXRpYyBib29s IGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCX0K PiAgCX0KPiAgCj4gLQlpZiAocGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyICE9IFRSQU5TQ09E RVJfRURQICYmCj4gKwlpZiAocGlwZV9jb25maWctPmJpZ2pvaW5lcl9zbGF2ZSkgewo+ICsJCS8q IENhbm5vdCBiZSByZWFkIG91dCBhcyBhIHNsYXZlLCBzZXQgdG8gMC4gKi8KPiArCQlwaXBlX2Nv bmZpZy0+cGl4ZWxfbXVsdGlwbGllciA9IDA7Cj4gKwl9IGVsc2UgaWYgKHBpcGVfY29uZmlnLT5j cHVfdHJhbnNjb2RlciAhPSBUUkFOU0NPREVSX0VEUCAmJgo+ICAJICAgICF0cmFuc2NvZGVyX2lz X2RzaShwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIpKSB7Cj4gIAkJcGlwZV9jb25maWctPnBp eGVsX211bHRpcGxpZXIgPQo+ICAJCQlJOTE1X1JFQUQoUElQRV9NVUxUKHBpcGVfY29uZmlnLT5j cHVfdHJhbnNjb2RlcikpICsgMTsKPiBAQCAtMTE3NDgsNyArMTE4NTAsNyBAQCBpbnRlbF9lbmNv ZGVyX2N1cnJlbnRfbW9kZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCQlyZXR1 cm4gTlVMTDsKPiAgCX0KPiAgCj4gLQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsIGNydGNf c3RhdGUpOwo+ICsJaW50ZWxfZW5jb2Rlcl9nZXRfY29uZmlnKGVuY29kZXIsIGNydGNfc3RhdGUp Owo+ICAKPiAgCWludGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZyhtb2RlLCBjcnRjX3N0YXRlKTsK PiAgCj4gQEAgLTEyNjc0LDEwICsxMjc3NiwxMSBAQCBpbnRlbF9jcnRjX2NvcHlfdWFwaV90b19o d19zdGF0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgc3RhdGljIHZvaWQg aW50ZWxfY3J0Y19jb3B5X2h3X3RvX3VhcGlfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAkJCQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqdXNlcl9t b2RlKQo+ICB7Cj4gLQljcnRjX3N0YXRlLT51YXBpLmVuYWJsZSA9IGNydGNfc3RhdGUtPmh3LmVu YWJsZTsKPiAtCWNydGNfc3RhdGUtPnVhcGkuYWN0aXZlID0gY3J0Y19zdGF0ZS0+aHcuYWN0aXZl Owo+IC0JV0FSTl9PTihkcm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjKCZjcnRjX3N0YXRlLT51 YXBpLCB1c2VyX21vZGUpIDwgMCk7Cj4gLQo+ICsJaWYgKCFjcnRjX3N0YXRlLT5iaWdqb2luZXJf c2xhdmUpIHsKPiArCQljcnRjX3N0YXRlLT51YXBpLmVuYWJsZSA9IGNydGNfc3RhdGUtPmh3LmVu YWJsZTsKPiArCQljcnRjX3N0YXRlLT51YXBpLmFjdGl2ZSA9IGNydGNfc3RhdGUtPmh3LmFjdGl2 ZTsKPiArCQlXQVJOX09OKGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoJmNydGNfc3RhdGUt PnVhcGksIHVzZXJfbW9kZSkgPCAwKTsKPiArCX0KPiAgCWNydGNfc3RhdGUtPnVhcGkuYWRqdXN0 ZWRfbW9kZSA9IGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gIAo+ICAJLyogY29weSBj b2xvciBibG9icyB0byB1YXBpICovCj4gQEAgLTEzMjU4LDIxICsxMzM2MSw0MyBAQCBpbnRlbF9w aXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50 X2NvbmZpZywKPiAgCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChvdXRwdXRfdHlwZXMpOwo+ICAKPiAt CVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheSk7Cj4gLQlQ SVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsKTsKPiAtCVBJUEVf Q09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19oYmxhbmtfc3RhcnQpOwo+IC0JUElQ RV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hibGFua19lbmQpOwo+IC0JUElQ RV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX3N0YXJ0KTsKPiAtCVBJ UEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19lbmQpOwo+IC0KPiAt CVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheSk7Cj4gLQlQ SVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNfdnRvdGFsKTsKPiAtCVBJUEVf Q09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192Ymxhbmtfc3RhcnQpOwo+IC0JUElQ RV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZibGFua19lbmQpOwo+IC0JUElQ RV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX3N0YXJ0KTsKPiAtCVBJ UEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192c3luY19lbmQpOwo+IC0KPiAt CVBJUEVfQ09ORl9DSEVDS19JKHBpeGVsX211bHRpcGxpZXIpOwo+ICsJaWYgKCFQSVBFX0NPTkZf UVVJUksoUElQRV9DT05GSUdfUVVJUktfQklHSk9JTkVSX1NMQVZFKSkgewo+ICsJCS8qIGJpZ2pv aW5lciBtb2RlID0gdHJhbnNjb2RlciBtb2RlIC8gMiwgZm9yIGNhbGN1bGF0aW9ucyAqLwo+ICsJ CVBJUEVfQ09ORl9DSEVDS19JKGh3LnBpcGVfbW9kZS5jcnRjX2hkaXNwbGF5KTsKPiArCQlQSVBF X0NPTkZfQ0hFQ0tfSShody5waXBlX21vZGUuY3J0Y19odG90YWwpOwo+ICsJCVBJUEVfQ09ORl9D SEVDS19JKGh3LnBpcGVfbW9kZS5jcnRjX3ZkaXNwbGF5KTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tf SShody5waXBlX21vZGUuY3J0Y192dG90YWwpOwo+ICsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSSho dy5hZGp1c3RlZF9tb2RlLmNydGNfaGRpc3BsYXkpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3 LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFk anVzdGVkX21vZGUuY3J0Y19oYmxhbmtfc3RhcnQpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3 LmFkanVzdGVkX21vZGUuY3J0Y19oYmxhbmtfZW5kKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSSho dy5hZGp1c3RlZF9tb2RlLmNydGNfaHN5bmNfc3RhcnQpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19J KGh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19lbmQpOwo+ICsKPiArCQlQSVBFX0NPTkZfQ0hF Q0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXkpOwo+ICsJCVBJUEVfQ09ORl9DSEVD S19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192dG90YWwpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19J KGh3LmFkanVzdGVkX21vZGUuY3J0Y192Ymxhbmtfc3RhcnQpOwo+ICsJCVBJUEVfQ09ORl9DSEVD S19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192YmxhbmtfZW5kKTsKPiArCQlQSVBFX0NPTkZfQ0hF Q0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfc3RhcnQpOwo+ICsJCVBJUEVfQ09ORl9D SEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192c3luY19lbmQpOwo+ICsKPiArCQlQSVBFX0NP TkZfQ0hFQ0tfRkxBR1MoaHcuYWRqdXN0ZWRfbW9kZS5mbGFncywKPiArCQkJCSAgICAgIERSTV9N T0RFX0ZMQUdfSU5URVJMQUNFKTsKPiArCj4gKwkJaWYgKCFQSVBFX0NPTkZfUVVJUksoUElQRV9D T05GSUdfUVVJUktfTU9ERV9TWU5DX0ZMQUdTKSkgewo+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tfRkxB R1MoaHcuYWRqdXN0ZWRfbW9kZS5mbGFncywKPiArCQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX1BI U1lOQyk7Cj4gKwkJCVBJUEVfQ09ORl9DSEVDS19GTEFHUyhody5hZGp1c3RlZF9tb2RlLmZsYWdz LAo+ICsJCQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfTkhTWU5DKTsKPiArCQkJUElQRV9DT05GX0NI RUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUuZmxhZ3MsCj4gKwkJCQkJICAgICAgRFJNX01PREVf RkxBR19QVlNZTkMpOwo+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcuYWRqdXN0ZWRfbW9k ZS5mbGFncywKPiArCQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX05WU1lOQyk7Cj4gKwkJfQo+ICsJ CVBJUEVfQ09ORl9DSEVDS19JKHBpeGVsX211bHRpcGxpZXIpOwo+ICsJfQo+ICsKPiAgCVBJUEVf Q09ORl9DSEVDS19JKG91dHB1dF9mb3JtYXQpOwo+ICAJUElQRV9DT05GX0NIRUNLX0koZGMzY29f ZXhpdGxpbmUpOwo+ICAJUElQRV9DT05GX0NIRUNLX0JPT0woaGFzX2hkbWlfc2luayk7Cj4gQEAg LTEzMjgzLDI0ICsxMzQwOCwxMSBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywKPiAgCVBJUEVfQ09ORl9DSEVD S19CT09MKGhkbWlfc2NyYW1ibGluZyk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChoZG1pX2hp Z2hfdG1kc19jbG9ja19yYXRpbyk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChoYXNfaW5mb2Zy YW1lKTsKPiAtCVBJUEVfQ09ORl9DSEVDS19CT09MKGZlY19lbmFibGUpOwo+ICsJaWYgKCFQSVBF X0NPTkZfUVVJUksoUElQRV9DT05GSUdfUVVJUktfQklHSk9JTkVSX1NMQVZFKSkKPiArCQlQSVBF X0NPTkZfQ0hFQ0tfQk9PTChmZWNfZW5hYmxlKTsKPiAgCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9P TF9JTkNPTVBMRVRFKGhhc19hdWRpbyk7Cj4gIAo+IC0JUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3 LmFkanVzdGVkX21vZGUuZmxhZ3MsCj4gLQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNF KTsKPiAtCj4gLQlpZiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBFX0NPTkZJR19RVUlSS19NT0RFX1NZ TkNfRkxBR1MpKSB7Cj4gLQkJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUu ZmxhZ3MsCj4gLQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyk7Cj4gLQkJUElQRV9DT05G X0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUuZmxhZ3MsCj4gLQkJCQkgICAgICBEUk1fTU9E RV9GTEFHX05IU1lOQyk7Cj4gLQkJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21v ZGUuZmxhZ3MsCj4gLQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX1BWU1lOQyk7Cj4gLQkJUElQRV9D T05GX0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUuZmxhZ3MsCj4gLQkJCQkgICAgICBEUk1f TU9ERV9GTEFHX05WU1lOQyk7Cj4gLQl9Cj4gLQo+ICAJUElQRV9DT05GX0NIRUNLX1goZ21jaF9w Zml0LmNvbnRyb2wpOwo+ICAJLyogcGZpdCByYXRpb3MgYXJlIGF1dG9jb21wdXRlZCBieSB0aGUg aHcgb24gZ2VuNCsgKi8KPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKPiBAQCAtMTMz MjQsNyArMTM0MzYsOCBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywKPiAgCQl9Cj4gIAo+ICAJCVBJUEVfQ09O Rl9DSEVDS19JKHNjYWxlcl9zdGF0ZS5zY2FsZXJfaWQpOwo+IC0JCVBJUEVfQ09ORl9DSEVDS19D TE9DS19GVVpaWShwaXhlbF9yYXRlKTsKPiArCQlpZiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBFX0NP TkZJR19RVUlSS19CSUdKT0lORVJfU0xBVkUpKQo+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tf RlVaWlkocGl4ZWxfcmF0ZSk7Cj4gIAo+ICAJCVBJUEVfQ09ORl9DSEVDS19YKGdhbW1hX21vZGUp Owo+ICAJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiBAQCAtMTMzNDMsNDggKzEzNDU2 LDUxIEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmN1cnJlbnRfY29uZmlnLAo+ICAJUElQRV9DT05GX0NIRUNLX0JPT0woZG91YmxlX3dp ZGUpOwo+ICAKPiAgCVBJUEVfQ09ORl9DSEVDS19QKHNoYXJlZF9kcGxsKTsKPiArCWlmICghUElQ RV9DT05GX1FVSVJLKFBJUEVfQ09ORklHX1FVSVJLX0JJR0pPSU5FUl9TTEFWRSkpIHsKPiAgCVBJ UEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZHBsbCk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tf WChkcGxsX2h3X3N0YXRlLmRwbGxfbWQpOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19z dGF0ZS5mcDApOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5mcDEpOwo+IC0J UElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS53cnBsbCk7Cj4gLQlQSVBFX0NPTkZfQ0hF Q0tfWChkcGxsX2h3X3N0YXRlLnNwbGwpOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19z dGF0ZS5jdHJsMSk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmNmZ2NyMSk7 Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmNmZ2NyMik7Cj4gLQlQSVBFX0NP TkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmNmZ2NyMCk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChk cGxsX2h3X3N0YXRlLmViYjApOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5l YmI0KTsKPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMCk7Cj4gLQlQSVBF X0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDEpOwo+IC0JUElQRV9DT05GX0NIRUNLX1go ZHBsbF9od19zdGF0ZS5wbGwyKTsKPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUu cGxsMyk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDYpOwo+IC0JUElQ RV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5wbGw4KTsKPiAtCVBJUEVfQ09ORl9DSEVDS19Y KGRwbGxfaHdfc3RhdGUucGxsOSk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRl LnBsbDEwKTsKPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGNzZHcxMik7Cj4g LQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3JlZmNsa2luX2N0bCk7Cj4gLQlQ SVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX2Nsa3RvcDJfY29yZWNsa2N0bDEpOwo+ IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19jbGt0b3AyX2hzY2xrY3RsKTsK PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfcGxsX2RpdjApOwo+IC0JUElQ RV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfZGl2MSk7Cj4gLQlQSVBFX0NPTkZf Q0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9sZik7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChk cGxsX2h3X3N0YXRlLm1nX3BsbF9mcmFjX2xvY2spOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBs bF9od19zdGF0ZS5tZ19wbGxfc3NjKTsKPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3Rh dGUubWdfcGxsX2JpYXMpOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19w bGxfdGRjX2NvbGRzdF9iaWFzKTsKPiAtCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkc2lfcGxsLmN0 cmwpOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHNpX3BsbC5kaXYpOwo+IC0KPiAtCWlmIChJU19H NFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkKPiAtCQlQSVBFX0NPTkZf Q0hFQ0tfSShwaXBlX2JwcCk7Cj4gLQo+IC0JUElQRV9DT05GX0NIRUNLX0NMT0NLX0ZVWlpZKGh3 LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVa WlkocG9ydF9jbG9jayk7Cj4gLQo+IC0JUElQRV9DT05GX0NIRUNLX0kobWluX3ZvbHRhZ2VfbGV2 ZWwpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZHBsbF9tZCk7Cj4gKwkJ UElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5mcDApOwo+ICsJCVBJUEVfQ09ORl9DSEVD S19YKGRwbGxfaHdfc3RhdGUuZnAxKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0 YXRlLndycGxsKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnNwbGwpOwo+ ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY3RybDEpOwo+ICsJCVBJUEVfQ09O Rl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY2ZnY3IxKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChk cGxsX2h3X3N0YXRlLmNmZ2NyMik7Cj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0 ZS5jZmdjcjApOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZWJiMCk7Cj4g KwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5lYmI0KTsKPiArCQlQSVBFX0NPTkZf Q0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDApOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxf aHdfc3RhdGUucGxsMSk7Cj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5wbGwy KTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDMpOwo+ICsJCVBJUEVf Q09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsNik7Cj4gKwkJUElQRV9DT05GX0NIRUNLX1go ZHBsbF9od19zdGF0ZS5wbGw4KTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRl LnBsbDkpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMTApOwo+ICsJ CVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGNzZHcxMik7Cj4gKwkJUElQRV9DT05G X0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19yZWZjbGtpbl9jdGwpOwo+ICsJCVBJUEVfQ09ORl9D SEVDS19YKGRwbGxfaHdfc3RhdGUubWdfY2xrdG9wMl9jb3JlY2xrY3RsMSk7Cj4gKwkJUElQRV9D T05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19jbGt0b3AyX2hzY2xrY3RsKTsKPiArCQlQSVBF X0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9kaXYwKTsKPiArCQlQSVBFX0NPTkZf Q0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9kaXYxKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tf WChkcGxsX2h3X3N0YXRlLm1nX3BsbF9sZik7Cj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9o d19zdGF0ZS5tZ19wbGxfZnJhY19sb2NrKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3 X3N0YXRlLm1nX3BsbF9zc2MpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUu bWdfcGxsX2JpYXMpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfcGxs X3RkY19jb2xkc3RfYmlhcyk7Cj4gKwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9wbGwuY3Ry bCk7Cj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHNpX3BsbC5kaXYpOwo+ICsKPiArCQlpZiAoSVNf RzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCj4gKwkJCVBJUEVfQ09O Rl9DSEVDS19JKHBpcGVfYnBwKTsKPiArCj4gKwkJUElQRV9DT05GX0NIRUNLX0NMT0NLX0ZVWlpZ KGh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayk7Cj4gKwkJUElQRV9DT05GX0NIRUNLX0NMT0NL X0ZVWlpZKGh3LnBpcGVfbW9kZS5jcnRjX2Nsb2NrKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfQ0xP Q0tfRlVaWlkocG9ydF9jbG9jayk7Cj4gKwo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKG1pbl92b2x0 YWdlX2xldmVsKTsKPiArCX0KPiAgCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChpbmZvZnJhbWVzLmVu YWJsZSk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChpbmZvZnJhbWVzLmdjcCk7Cj4gQEAgLTEzMzk1 LDYgKzEzNTExLDExIEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAo+ICAKPiAgCVBJUEVfQ09ORl9DSEVDS19J KHN5bmNfbW9kZV9zbGF2ZXNfbWFzayk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfSShtYXN0ZXJfdHJh bnNjb2Rlcik7Cj4gKwlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChiaWdqb2luZXIpOwo+ICsJUElQRV9D T05GX0NIRUNLX0JPT0woYmlnam9pbmVyX3NsYXZlKTsKPiArCVBJUEVfQ09ORl9DSEVDS19QKGJp Z2pvaW5lcl9saW5rZWRfY3J0Yyk7Cj4gKwlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChkc2MuY29tcHJl c3Npb25fZW5hYmxlKTsKPiArCVBJUEVfQ09ORl9DSEVDS19CT09MKGRzYy5kc2Nfc3BsaXQpOwo+ ICAKPiAgI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19YCj4gICN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tf SQo+IEBAIC0xMzY1MCw2ICsxMzc3MSw3IEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gIAlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWc7Cj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqbWFzdGVyID0gY3J0YzsKPiAgCWJv b2wgYWN0aXZlOwo+ICAKPiAgCXN0YXRlID0gb2xkX2NydGNfc3RhdGUtPnVhcGkuc3RhdGU7Cj4g QEAgLTEzNjc5LDcgKzEzODAxLDEwIEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAJCQkiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsCj4gIAkJCW5ld19j cnRjX3N0YXRlLT5ody5hY3RpdmUsIGNydGMtPmFjdGl2ZSk7Cj4gIAo+IC0JZm9yX2VhY2hfZW5j b2Rlcl9vbl9jcnRjKGRldiwgJmNydGMtPmJhc2UsIGVuY29kZXIpIHsKPiArCWlmIChuZXdfY3J0 Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlKQo+ICsJCW1hc3RlciA9IG5ld19jcnRjX3N0YXRlLT5i aWdqb2luZXJfbGlua2VkX2NydGM7Cj4gKwo+ICsJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRl diwgJm1hc3Rlci0+YmFzZSwgZW5jb2Rlcikgewo+ICAJCWVudW0gcGlwZSBwaXBlOwo+ICAKPiAg CQlhY3RpdmUgPSBlbmNvZGVyLT5nZXRfaHdfc3RhdGUoZW5jb2RlciwgJnBpcGUpOwo+IEBAIC0x MzY4OCwxMiArMTM4MTMsMTIgQEAgdmVyaWZ5X2NydGNfc3RhdGUoc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gIAkJCQllbmNvZGVyLT5iYXNlLmJhc2UuaWQsIGFjdGl2ZSwKPiAgCQkJCW5ld19j cnRjX3N0YXRlLT5ody5hY3RpdmUpOwo+ICAKPiAtCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICYm IGNydGMtPnBpcGUgIT0gcGlwZSwKPiArCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICYmIG1hc3Rl ci0+cGlwZSAhPSBwaXBlLAo+ICAJCQkJIkVuY29kZXIgY29ubmVjdGVkIHRvIHdyb25nIHBpcGUg JWNcbiIsCj4gIAkJCQlwaXBlX25hbWUocGlwZSkpOwo+ICAKPiAgCQlpZiAoYWN0aXZlKQo+IC0J CQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiArCQkJaW50ZWxf ZW5jb2Rlcl9nZXRfY29uZmlnKGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiAgCX0KPiAgCj4gIAlp bnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0ZShwaXBlX2NvbmZpZyk7Cj4gQEAgLTE0NDczLDcg KzE0NTk4LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2NydGMoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gIAo+ICAJaWYgKG1vZGVzZXQpIHsKPiAgCQlpbnRlbF9jcnRjX3VwZGF0ZV9h Y3RpdmVfdGltaW5ncyhuZXdfY3J0Y19zdGF0ZSk7Cj4gLQo+ICAJCWRldl9wcml2LT5kaXNwbGF5 LmNydGNfZW5hYmxlKG5ld19jcnRjX3N0YXRlLCBzdGF0ZSk7Cj4gIAo+ICAJCS8qIHZibGFua3Mg d29yayBhZ2FpbiwgcmUtZW5hYmxlIHBpcGUgQ1JDLiAqLwo+IEBAIC0xNDYxMyw3ICsxNDczNyw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2NvbW1pdF9tb2Rlc2V0X2Rpc2FibGVzKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJICovCj4gIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxf Y3J0Y19pbl9zdGF0ZV9yZXZlcnNlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKPiAgCQkJ CQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gLQkJaWYgKCFuZWVkc19tb2Rlc2V0KG5ld19j cnRjX3N0YXRlKSkKPiArCQlpZiAoIW5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpIHx8IG9s ZF9jcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQkv KiBJbiBjYXNlIG9mIFRyYW5zY29kZXIgcG9ydCBTeW5jIG1hc3RlciBzbGF2ZSBDUlRDcyBjYW4g YmUKPiBAQCAtMTQ2MzcsNiArMTQ3NjEsMTkgQEAgc3RhdGljIHZvaWQgaW50ZWxfY29tbWl0X21v ZGVzZXRfZGlzYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJCQkJ CQkgICAgICBvbGRfY3J0Y19zdGF0ZSwKPiAgCQkJCQkJCSAgICAgIG5ld19jcnRjX3N0YXRlLAo+ ICAJCQkJCQkJICAgICAgY3J0Yyk7Cj4gKwo+ICsJCQlpZiAob2xkX2NydGNfc3RhdGUtPmJpZ2pv aW5lcikgewo+ICsJCQkJc3RydWN0IGludGVsX2NydGMgKnNsYXZlID0gb2xkX2NydGNfc3RhdGUt PmJpZ2pvaW5lcl9saW5rZWRfY3J0YzsKPiArCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfc2xhdmVfY3J0Y19zdGF0ZSA9Cj4gKwkJCQkJaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRl KCZzdGF0ZS0+YmFzZSwgc2xhdmUpOwo+ICsJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5l d19zbGF2ZV9jcnRjX3N0YXRlID0KPiArCQkJCQlpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUo JnN0YXRlLT5iYXNlLCBzbGF2ZSk7Cj4gKwo+ICsJCQkJaW50ZWxfb2xkX2NydGNfc3RhdGVfZGlz YWJsZXMoc3RhdGUsCj4gKwkJCQkJCQkgICAgICBvbGRfc2xhdmVfY3J0Y19zdGF0ZSwKPiArCQkJ CQkJCSAgICAgIG5ld19zbGF2ZV9jcnRjX3N0YXRlLAo+ICsJCQkJCQkJICAgICAgc2xhdmUpOwo+ ICsJCQl9Cj4gIAkJfQo+ICAJfQo+ICB9Cj4gQEAgLTE3MTY4LDcgKzE3MzA1LDcgQEAgaW50IGlu dGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCWZvcl9l YWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Cj4gIAkJc3RydWN0IGludGVsX2luaXRpYWxfcGxh bmVfY29uZmlnIHBsYW5lX2NvbmZpZyA9IHt9Owo+ICAKPiAtCQlpZiAoIWNydGMtPmFjdGl2ZSkK PiArCQlpZiAoIXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSktPnVhcGkuYWN0 aXZlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJLyoKPiBAQCAtMTc2MjQsNyArMTc3NjEsMTcg QEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gIAkJCWNydGNfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PmJhc2Uuc3RhdGUpOwo+ICAKPiAgCQkJZW5jb2Rlci0+YmFzZS5jcnRjID0gJmNydGMtPmJhc2U7 Cj4gLQkJCWVuY29kZXItPmdldF9jb25maWcoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4gKwkJCWlu dGVsX2VuY29kZXJfZ2V0X2NvbmZpZyhlbmNvZGVyLCBjcnRjX3N0YXRlKTsKPiArCj4gKwkJCS8q IHJlYWQgb3V0IHRvIHNsYXZlIGNydGMgYXMgd2VsbCBmb3IgYmlnam9pbmVyICovCj4gKwkJCWlm IChjcnRjX3N0YXRlLT5iaWdqb2luZXIpIHsKPiArCQkJCS8qIGVuY29kZXIgc2hvdWxkIHJlYWQg YmUgbGlua2VkIHRvIGJpZ2pvaW5lciBtYXN0ZXIgKi8KPiArCQkJCVdBUk5fT04oY3J0Y19zdGF0 ZS0+Ymlnam9pbmVyX3NsYXZlKTsKPiArCj4gKwkJCQljcnRjID0gY3J0Y19zdGF0ZS0+Ymlnam9p bmVyX2xpbmtlZF9jcnRjOwo+ICsJCQkJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUo Y3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gKwkJCQlpbnRlbF9lbmNvZGVyX2dldF9jb25maWcoZW5jb2Rl ciwgY3J0Y19zdGF0ZSk7Cj4gKwkJCX0KPiAgCQl9IGVsc2Ugewo+ICAJCQllbmNvZGVyLT5iYXNl LmNydGMgPSBOVUxMOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+IGluZGV4IGNmMmVjZmExNzQxNi4uODZhMDUyNGIz Y2Q4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3R5cGVzLmgKPiBAQCAtODIxLDYgKzgyMSw3IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlIHsKPiAgCSAqIGFjY29yZGluZ2x5Lgo+ICAJICovCj4gICNkZWZpbmUgUElQRV9DT05GSUdf UVVJUktfTU9ERV9TWU5DX0ZMQUdTCSgxPDwwKSAvKiB1bnJlbGlhYmxlIHN5bmMgbW9kZS5mbGFn cyAqLwo+ICsjZGVmaW5lIFBJUEVfQ09ORklHX1FVSVJLX0JJR0pPSU5FUl9TTEFWRQkoMTw8MSkg LyogYmlnam9pbmVyIHNsYXZlLCBwYXJ0aWFsIHJlYWRvdXQgKi8KPiAgCXVuc2lnbmVkIGxvbmcg cXVpcmtzOwo+ICAKPiAgCXVuc2lnbmVkIGZiX2JpdHM7IC8qIGZyYW1lYnVmZmVycyB0byBmbGlw ICovCj4gQEAgLTE2MzksNCArMTY0MCwyNSBAQCBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9wbGFu ZV9nZ3R0X29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ICAJ cmV0dXJuIGk5MTVfZ2d0dF9vZmZzZXQoc3RhdGUtPnZtYSk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBp bmxpbmUgYm9vbAo+ICtpbnRlbF9jcnRjX3N1cHBvcnRzX2RzYyhjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocGlwZV9jb25maWctPnVhcGkuY3J0Yy0+ZGV2KTsKPiArCj4g KwlpZiAoIUlOVEVMX0lORk8oZGV2X3ByaXYpLT5kaXNwbGF5Lmhhc19kc2MpCj4gKwkJcmV0dXJu IGZhbHNlOwo+ICsKPiArCS8qIE9uIFRHTCwgRFNDIGlzIHN1cHBvcnRlZCBvbiBhbGwgUGlwZXMg Ki8KPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKQo+ICsJCXJldHVybiB0cnVlOwo+ ICsKPiArCS8qIGdlbjEwIGFuZCBnZW4xMSBoYXZlIERTQywgYnV0IG5vdCBvbiBwaXBlIEEsIGVE UCBpcyBhbGxvd2VkICovCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCAmJgo+ICsJ ICAgICh0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT51YXBpLmNydGMpLT5waXBlICE9IFBJUEVf QSB8fAo+ICsJICAgICBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9F RFApKQo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiAg I2VuZGlmIC8qICBfX0lOVEVMX0RJU1BMQVlfVFlQRVNfSF9fICovCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IGluZGV4IDU0ZmRlNGM0YzRkZC4uZDBiNjI3NmY3NzEy IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IEBAIC0xOTQ4 LDMyICsxOTQ4LDEzIEBAIHN0YXRpYyBib29sIGludGVsX2RwX3N1cHBvcnRzX2ZlYyhzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCWRybV9kcF9zaW5rX3N1cHBvcnRzX2ZlYyhpbnRlbF9k cC0+ZmVjX2NhcGFibGUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBpbnRlbF9kcF9zb3VyY2Vf c3VwcG9ydHNfZHNjKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gLQkJCQkJIGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAtewo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gLQo+IC0JaWYg KCFJTlRFTF9JTkZPKGRldl9wcml2KS0+ZGlzcGxheS5oYXNfZHNjKQo+IC0JCXJldHVybiBmYWxz ZTsKPiAtCj4gLQkvKiBPbiBUR0wsIERTQyBpcyBzdXBwb3J0ZWQgb24gYWxsIFBpcGVzICovCj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikKPiAtCQlyZXR1cm4gdHJ1ZTsKPiAtCj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCAmJgo+IC0JICAgIHBpcGVfY29uZmlnLT5j cHVfdHJhbnNjb2RlciAhPSBUUkFOU0NPREVSX0EpCj4gLQkJcmV0dXJuIHRydWU7Cj4gLQo+IC0J cmV0dXJuIGZhbHNlOwo+IC19Cj4gLQo+ICBzdGF0aWMgYm9vbCBpbnRlbF9kcF9zdXBwb3J0c19k c2Moc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCQkJCSAgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlpZiAoIWludGVsX2RwX2lzX2VkcChp bnRlbF9kcCkgJiYgIXBpcGVfY29uZmlnLT5mZWNfZW5hYmxlKQo+ICAJCXJldHVybiBmYWxzZTsK PiAgCj4gLQlyZXR1cm4gaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2RzYyhpbnRlbF9kcCwgcGlw ZV9jb25maWcpICYmCj4gKwlyZXR1cm4gaW50ZWxfY3J0Y19zdXBwb3J0c19kc2MocGlwZV9jb25m aWcpICYmCj4gIAkJZHJtX2RwX3Npbmtfc3VwcG9ydHNfZHNjKGludGVsX2RwLT5kc2NfZHBjZCk7 Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfdmRzYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92ZHNjLmMKPiBp bmRleCBiMjNiYThkMTA4ZGIuLmU0ODYwODIyMWU3MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfdmRzYy5jCj4gQEAgLTUwMSwxMSArNTAxLDEwIEBAIGludGVsX2Rz Y19wb3dlcl9kb21haW4oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gIAkJcmV0dXJuIFBPV0VSX0RPTUFJTl9UUkFOU0NPREVSKGNwdV90cmFuc2NvZGVyKTsKPiAg fQo+ICAKPiAtc3RhdGljIHZvaWQgaW50ZWxfZHNjX3Bwc19jb25maWd1cmUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gLQkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gK3N0YXRpYyB2b2lkIGludGVsX2RzY19wcHNfY29uZmlndXJlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjcnRjLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2RzY19jb25maWcgKnZkc2Nf Y2ZnID0gJmNydGNfc3RhdGUtPmRzYy5jb25maWc7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMt PnBpcGU7Cj4gIAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5j cHVfdHJhbnNjb2RlcjsKPiBAQCAtNTE1LDYgKzUxNCw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rz Y19wcHNfY29uZmlndXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJdTggbnVt X3Zkc2NfaW5zdGFuY2VzID0gKGNydGNfc3RhdGUtPmRzYy5kc2Nfc3BsaXQpID8gMiA6IDE7Cj4g IAlpbnQgaSA9IDA7Cj4gIAo+ICsJaWYgKGNydGNfc3RhdGUtPmJpZ2pvaW5lcikKPiArCQludW1f dmRzY19pbnN0YW5jZXMgKj0gMjsKPiArCj4gIAkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMCByZWdpc3RlcnMgKi8KPiAgCXBwc192YWwgPSBEU0NfVkVSX01BSiB8IHZkc2NfY2Zn LT5kc2NfdmVyc2lvbl9taW5vciA8PAo+ICAJCURTQ19WRVJfTUlOX1NISUZUIHwKPiBAQCAtOTIw LDc0ICs5MjIsMTA0IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzY19kcF9wcHNfd3JpdGUoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCQkJc2l6ZW9mKGRwX2RzY19wcHNfc2RwKSk7 Cj4gIH0KPiAgCj4gK3N0YXRpYyBpOTE1X3JlZ190IGRzc19jdGwxX3JlZyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJZW51bSBwaXBlIHBpcGUgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0YyktPnBpcGU7Cj4gKwo+ICsJaWYgKGNy dGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKQo+ICsJCXJldHVybiBE U1NfQ1RMMTsKPiArCj4gKwlyZXR1cm4gSUNMX1BJUEVfRFNTX0NUTDEocGlwZSk7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpOTE1X3JlZ190IGRzc19jdGwyX3JlZyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0YyktPnBpcGU7Cj4gKwo+ICsJaWYgKGNydGNfc3RhdGUt PmNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKQo+ICsJCXJldHVybiBEU1NfQ1RMMjsK PiArCj4gKwlyZXR1cm4gSUNMX1BJUEVfRFNTX0NUTDIocGlwZSk7Cj4gK30KPiArCj4gIHZvaWQg aW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkgICAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0 Yyk7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKPiAtCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAtCWk5MTVf cmVnX3QgZHNzX2N0bDFfcmVnLCBkc3NfY3RsMl9yZWc7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCXUzMiBkc3NfY3Rs MV92YWwgPSAwOwo+ICAJdTMyIGRzc19jdGwyX3ZhbCA9IDA7Cj4gIAo+ICAJaWYgKCFjcnRjX3N0 YXRlLT5kc2MuY29tcHJlc3Npb25fZW5hYmxlKQo+ICAJCXJldHVybjsKPiAgCj4gLQkvKiBFbmFi bGUgUG93ZXIgd2VsbHMgZm9yIFZEU0Mvam9pbmluZyAqLwo+IC0JaW50ZWxfZGlzcGxheV9wb3dl cl9nZXQoZGV2X3ByaXYsCj4gLQkJCQlpbnRlbF9kc2NfcG93ZXJfZG9tYWluKGNydGNfc3RhdGUp KTsKPiArCWludGVsX2RzY19wcHNfY29uZmlndXJlKGNydGNfc3RhdGUpOwo+ICAKPiAtCWludGVs X2RzY19wcHNfY29uZmlndXJlKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ICsJaWYgKCFjcnRjX3N0 YXRlLT5iaWdqb2luZXJfc2xhdmUpCj4gKwkJaW50ZWxfZHNjX2RwX3Bwc193cml0ZShlbmNvZGVy LCBjcnRjX3N0YXRlKTsKPiAgCj4gLQlpbnRlbF9kc2NfZHBfcHBzX3dyaXRlKGVuY29kZXIsIGNy dGNfc3RhdGUpOwo+IC0KPiAtCWlmIChjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlciA9PSBUUkFO U0NPREVSX0VEUCkgewo+IC0JCWRzc19jdGwxX3JlZyA9IERTU19DVEwxOwo+IC0JCWRzc19jdGwy X3JlZyA9IERTU19DVEwyOwo+IC0JfSBlbHNlIHsKPiAtCQlkc3NfY3RsMV9yZWcgPSBJQ0xfUElQ RV9EU1NfQ1RMMShwaXBlKTsKPiAtCQlkc3NfY3RsMl9yZWcgPSBJQ0xfUElQRV9EU1NfQ1RMMihw aXBlKTsKPiAtCX0KPiAgCWRzc19jdGwyX3ZhbCB8PSBMRUZUX0JSQU5DSF9WRFNDX0VOQUJMRTsK PiAgCWlmIChjcnRjX3N0YXRlLT5kc2MuZHNjX3NwbGl0KSB7Cj4gIAkJZHNzX2N0bDJfdmFsIHw9 IFJJR0hUX0JSQU5DSF9WRFNDX0VOQUJMRTsKPiAgCQlkc3NfY3RsMV92YWwgfD0gSk9JTkVSX0VO QUJMRTsKPiAgCX0KPiAtCUk5MTVfV1JJVEUoZHNzX2N0bDFfcmVnLCBkc3NfY3RsMV92YWwpOwo+ IC0JSTkxNV9XUklURShkc3NfY3RsMl9yZWcsIGRzc19jdGwyX3ZhbCk7Cj4gKwlpZiAoY3J0Y19z dGF0ZS0+Ymlnam9pbmVyKSB7Cj4gKwkJZHNzX2N0bDFfdmFsIHw9IEJJR19KT0lORVJfRU5BQkxF Owo+ICsJCWlmICghY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlKQo+ICsJCQlkc3NfY3RsMV92 YWwgfD0gTUFTVEVSX0JJR19KT0lORVJfRU5BQkxFOwo+ICsJfQo+ICsJSTkxNV9XUklURShkc3Nf Y3RsMV9yZWcoY3J0Y19zdGF0ZSksIGRzc19jdGwxX3ZhbCk7Cj4gKwlJOTE1X1dSSVRFKGRzc19j dGwyX3JlZyhjcnRjX3N0YXRlKSwgZHNzX2N0bDJfdmFsKTsKPiAgfQo+ICAKPiAgdm9pZCBpbnRl bF9kc2NfZGlzYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhvbGRf Y3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBjcnRj LT5waXBlOwo+IC0JaTkxNV9yZWdfdCBkc3NfY3RsMV9yZWcsIGRzc19jdGwyX3JlZzsKPiAtCXUz MiBkc3NfY3RsMV92YWwgPSAwLCBkc3NfY3RsMl92YWwgPSAwOwo+ICAKPiAgCWlmICghb2xkX2Ny dGNfc3RhdGUtPmRzYy5jb21wcmVzc2lvbl9lbmFibGUpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlm IChvbGRfY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiAt CQlkc3NfY3RsMV9yZWcgPSBEU1NfQ1RMMTsKPiAtCQlkc3NfY3RsMl9yZWcgPSBEU1NfQ1RMMjsK PiAtCX0gZWxzZSB7Cj4gLQkJZHNzX2N0bDFfcmVnID0gSUNMX1BJUEVfRFNTX0NUTDEocGlwZSk7 Cj4gLQkJZHNzX2N0bDJfcmVnID0gSUNMX1BJUEVfRFNTX0NUTDIocGlwZSk7Cj4gKwlJOTE1X1dS SVRFKGRzc19jdGwxX3JlZyhvbGRfY3J0Y19zdGF0ZSksIDApOwo+ICsJSTkxNV9XUklURShkc3Nf Y3RsMl9yZWcob2xkX2NydGNfc3RhdGUpLCAwKTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9kc2Nf Z2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsKPiArCXUzMiBkc3NfY3RsMV92YWwsIGRzc19jdGwyX3ZhbDsKPiArCWlu dGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsKPiArCWlmICghaW50ZWxfY3J0Y19zdXBwb3J0c19k c2MoY3J0Y19zdGF0ZSkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBpbnRlbF9kc2NfcG93ZXJfZG9tYWlu KGNydGNfc3RhdGUpKTsKPiArCWlmICghd2FrZXJlZikKPiArCQlyZXR1cm47Cj4gKwo+ICsJZHNz X2N0bDFfdmFsID0gSTkxNV9SRUFEKGRzc19jdGwxX3JlZyhjcnRjX3N0YXRlKSk7Cj4gKwlkc3Nf Y3RsMl92YWwgPSBJOTE1X1JFQUQoZHNzX2N0bDJfcmVnKGNydGNfc3RhdGUpKTsKPiArCWlmIChk c3NfY3RsMl92YWwgJiBMRUZUX0JSQU5DSF9WRFNDX0VOQUJMRSkKPiArCQljcnRjX3N0YXRlLT5k c2MuY29tcHJlc3Npb25fZW5hYmxlID0gdHJ1ZTsKPiArCj4gKwlpZiAoKGRzc19jdGwxX3ZhbCAm IEpPSU5FUl9FTkFCTEUpICYmIChkc3NfY3RsMl92YWwgJiBSSUdIVF9CUkFOQ0hfVkRTQ19FTkFC TEUpKQo+ICsJCWNydGNfc3RhdGUtPmRzYy5kc2Nfc3BsaXQgPSB0cnVlOwo+ICsKPiArCWlmIChk c3NfY3RsMV92YWwgJiBCSUdfSk9JTkVSX0VOQUJMRSkgewo+ICsJCWNydGNfc3RhdGUtPmJpZ2pv aW5lciA9IHRydWU7Cj4gKwo+ICsJCWlmICghKGRzc19jdGwxX3ZhbCAmIE1BU1RFUl9CSUdfSk9J TkVSX0VOQUJMRSkpIHsKPiArCQkJY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlID0gdHJ1ZTsK PiArCQkJaWYgKCFXQVJOX09OKGNydGMtPnBpcGUgPT0gUElQRV9BKSkKPiArCQkJCWNydGNfc3Rh dGUtPmJpZ2pvaW5lcl9saW5rZWRfY3J0YyA9Cj4gKwkJCQkJaW50ZWxfZ2V0X2NydGNfZm9yX3Bp cGUoZGV2X3ByaXYsIGNydGMtPnBpcGUgLSAxKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlpZiAoIVdB Uk5fT04oSU5URUxfTlVNX1BJUEVTKGRldl9wcml2KSA9PSBjcnRjLT5waXBlICsgMSkpCj4gKwkJ CQljcnRjX3N0YXRlLT5iaWdqb2luZXJfbGlua2VkX2NydGMgPQo+ICsJCQkJCWludGVsX2dldF9j cnRjX2Zvcl9waXBlKGRldl9wcml2LCBjcnRjLT5waXBlICsgMSk7Cj4gKwkJfQo+ICAJfQo+IC0J ZHNzX2N0bDFfdmFsID0gSTkxNV9SRUFEKGRzc19jdGwxX3JlZyk7Cj4gLQlpZiAoZHNzX2N0bDFf dmFsICYgSk9JTkVSX0VOQUJMRSkKPiAtCQlkc3NfY3RsMV92YWwgJj0gfkpPSU5FUl9FTkFCTEU7 Cj4gLQlJOTE1X1dSSVRFKGRzc19jdGwxX3JlZywgZHNzX2N0bDFfdmFsKTsKPiAtCj4gLQlkc3Nf Y3RsMl92YWwgPSBJOTE1X1JFQUQoZHNzX2N0bDJfcmVnKTsKPiAtCWlmIChkc3NfY3RsMl92YWwg JiBMRUZUX0JSQU5DSF9WRFNDX0VOQUJMRSB8fAo+IC0JICAgIGRzc19jdGwyX3ZhbCAmIFJJR0hU X0JSQU5DSF9WRFNDX0VOQUJMRSkKPiAtCQlkc3NfY3RsMl92YWwgJj0gfihMRUZUX0JSQU5DSF9W RFNDX0VOQUJMRSB8Cj4gLQkJCQkgIFJJR0hUX0JSQU5DSF9WRFNDX0VOQUJMRSk7Cj4gLQlJOTE1 X1dSSVRFKGRzc19jdGwyX3JlZywgZHNzX2N0bDJfdmFsKTsKPiAtCj4gLQkvKiBEaXNhYmxlIFBv d2VyIHdlbGxzIGZvciBWRFNDL2pvaW5pbmcgKi8KPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0 X3VuY2hlY2tlZChkZXZfcHJpdiwKPiAtCQkJCQkgIGludGVsX2RzY19wb3dlcl9kb21haW4ob2xk X2NydGNfc3RhdGUpKTsKPiArCj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwg aW50ZWxfZHNjX3Bvd2VyX2RvbWFpbihjcnRjX3N0YXRlKSwgd2FrZXJlZik7Cj4gIH0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92ZHNjLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuaAo+IGluZGV4IDRlZDIyNTY3NTBj My4uNzlkOTY1ZmVkZjBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfdmRzYy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF92ZHNjLmgKPiBAQCAtMTQsNiArMTQsOCBAQCB2b2lkIGludGVsX2RzY19lbmFibGUoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHZvaWQgaW50ZWxfZHNjX2Rpc2FibGUoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICBpbnQgaW50ZWxfZHNjX2Nv bXB1dGVfcGFyYW1zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkgICAgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4gK3ZvaWQgaW50ZWxfZHNjX2dl dF9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICsKPiAgZW51 bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbgo+ICBpbnRlbF9kc2NfcG93ZXJfZG9tYWluKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAgCj4gLS0gCj4gMi4y NC4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA== 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=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, 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 6FC14C432C0 for ; Thu, 28 Nov 2019 19:43:19 +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 4D4772176D for ; Thu, 28 Nov 2019 19:43:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4D4772176D 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 B16266E0E4; Thu, 28 Nov 2019 19:43:18 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id AC3846E0E4 for ; Thu, 28 Nov 2019 19:43:17 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Nov 2019 11:43:16 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,254,1571727600"; d="scan'208";a="221408607" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga002.jf.intel.com with SMTP; 28 Nov 2019 11:43:14 -0800 Received: by stinkbox (sSMTP sendmail emulation); Thu, 28 Nov 2019 21:43:13 +0200 Date: Thu, 28 Nov 2019 21:43:13 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maarten Lankhorst Message-ID: <20191128194313.GB1208@intel.com> References: <20191114160522.9699-1-maarten.lankhorst@linux.intel.com> <20191114160522.9699-6-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191114160522.9699-6-maarten.lankhorst@linux.intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Intel-gfx] [PATCH 06/11] drm/i915: Enable big joiner support in enable and disable sequences. 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: <20191128194313.VULMTXpew06h9zVvdfF8oUWc7ulDjtdRB_ABDb9EwUA@z> T24gVGh1LCBOb3YgMTQsIDIwMTkgYXQgMDU6MDU6MTdQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gTWFrZSB2ZHNjIHdvcmsgd2hlbiBubyBvdXRwdXQgaXMgZW5hYmxlZC4gVGhl IGJpZyBqb2luZXIgbmVlZHMgVkRTQwo+IG9uIHRoZSBzbGF2ZSwgc28gZW5hYmxlIGl0IGFuZCBz ZXQgdGhlIGFwcHJvcHJpYXRlIGJpdHMuCj4gQWxzbyB1cGRhdGUgdGltZXN0YW1waW5nIGNvbnN0 YW50cywgYmVjYXVzZSBzbGF2ZSBjcnRjJ3MgYXJlIG5vdAo+IHVwZGF0ZWQgaW4gZHJtX2F0b21p Y19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlKCkuCj4gCj4gVGhpcyBzaG91bGQg YmUgZW5vdWdoIHRvIGJyaW5nIHVwIENSVEMncyBpbiBhIGJpZyBqb2luZXIgY29uZmlndXJhdGlv biwKPiB3aXRob3V0IGFueSBwbGFuZSBjb25maWd1cmF0aW9uIG9uIHRoZSBzZWNvbmQgcGlwZSB5 ZXQuCj4gCj4gSE9XRVZFUiwgd2Ugc3RpbGwgYnJpbmcgdXAgdGhlIGNydGMncyBpbiB0aGUgd3Jv bmcgb3JkZXIuIFdlIG5lZWQgdG8KPiBtYWtlIHN1cmUgdGhhdCB0aGUgbWFzdGVyIGNydGMgaXMg YnJvdWdodCB1cCBhZnRlciB0aGUgc2xhdmUgY3J0Yy4KPiBUaGlzIGlzIGRvbmUgY29ycmVjdGx5 IGxhdGVyIGluIHRoaXMgc2VyaWVzLgo+IAo+IFRoZSBuZXh0IHN0ZXBzIGFyZSB0byBlbmFibGUg cGxhbmVzIGNvcnJlY3RseSwgYW5kIG1ha2Ugc3VyZSB3ZSBlbmFibGUKPiBhbmQgdXBkYXRlIGJv dGggbWFzdGVyIGFuZCBzbGF2ZSBpbiB0aGUgY29ycmVjdCBvcmRlci4KPiAKPiBTaWduZWQtb2Zm LWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29t Pgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jICAgICAg fCAgNDggKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j ICB8IDM5OSArKysrKysrKysrKystLS0tLS0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheV90eXBlcy5oICAgIHwgIDIyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kcC5jICAgICAgIHwgIDIxICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfdmRzYy5jICAgICB8IDEyMiArKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF92ZHNjLmggICAgIHwgICAyICsKPiAgNiBmaWxlcyBjaGFuZ2VkLCA0MDgg aW5zZXJ0aW9ucygrKSwgMjA2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kZGkuYwo+IGluZGV4IDhmODE3ZGUzNDQ2MC4uMTIxNWY2MTlkYTM2IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gQEAgLTIyMTgs MTMgKzIyMTgsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfZ2V0X3Bvd2VyX2RvbWFpbnMoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkgICAgaW50ZWxfcGh5X2lzX3RjKGRldl9w cml2LCBwaHkpKQo+ICAJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+ICAJCQkJ CWludGVsX2RkaV9tYWluX2xpbmtfYXV4X2RvbWFpbihkaWdfcG9ydCkpOwo+IC0KPiAtCS8qCj4g LQkgKiBWRFNDIHBvd2VyIGlzIG5lZWRlZCB3aGVuIERTQyBpcyBlbmFibGVkCj4gLQkgKi8KPiAt CWlmIChjcnRjX3N0YXRlLT5kc2MuY29tcHJlc3Npb25fZW5hYmxlKQo+IC0JCWludGVsX2Rpc3Bs YXlfcG93ZXJfZ2V0KGRldl9wcml2LAo+IC0JCQkJCWludGVsX2RzY19wb3dlcl9kb21haW4oY3J0 Y19zdGF0ZSkpOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX2RkaV9lbmFibGVfcGlwZV9jbG9jayhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiBAQCAtMzU1Nyw3ICsz NTUwLDggQEAgc3RhdGljIHZvaWQgdGdsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCS8qIDcubCBDb25maWd1cmUgYW5kIGVuYWJsZSBGRUMg aWYgbmVlZGVkICovCj4gIAlpbnRlbF9kZGlfZW5hYmxlX2ZlYyhlbmNvZGVyLCBjcnRjX3N0YXRl KTsKPiAtCWludGVsX2RzY19lbmFibGUoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4gKwlpZiAoIWNy dGNfc3RhdGUtPmJpZ2pvaW5lcikKPiArCQlpbnRlbF9kc2NfZW5hYmxlKGVuY29kZXIsIGNydGNf c3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBoc3dfZGRpX3ByZV9lbmFibGVfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gQEAgLTM2MjksNyArMzYyMyw4IEBAIHN0YXRp YyB2b2lkIGhzd19kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCWlmICghaXNfbXN0KQo+ICAJCWludGVsX2RkaV9lbmFibGVfcGlwZV9jbG9jayhjcnRj X3N0YXRlKTsKPiAgCj4gLQlpbnRlbF9kc2NfZW5hYmxlKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ ICsJaWYgKCFjcnRjX3N0YXRlLT5iaWdqb2luZXIpCj4gKwkJaW50ZWxfZHNjX2VuYWJsZShlbmNv ZGVyLCBjcnRjX3N0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9l bmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gQEAgLTQyNTIsMTkgKzQy NDcsMTggQEAgdm9pZCBpbnRlbF9kZGlfY29tcHV0ZV9taW5fdm9sdGFnZV9sZXZlbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJY3J0Y19zdGF0ZS0+bWluX3ZvbHRhZ2Vf bGV2ZWwgPSAyOwo+ICB9Cj4gIAo+IC12b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IC0JCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZykKPiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX3JlYWRfZnVuY19jdGwoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRjKTsKPiAgCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2Rl cjsKPiAgCXUzMiB0ZW1wLCBmbGFncyA9IDA7Cj4gIAo+IC0JLyogWFhYOiBEU0kgdHJhbnNjb2Rl ciBwYXJhbm9pYSAqLwo+IC0JaWYgKFdBUk5fT04odHJhbnNjb2Rlcl9pc19kc2koY3B1X3RyYW5z Y29kZXIpKSkKPiArCXRlbXAgPSBJOTE1X1JFQUQoVFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFu c2NvZGVyKSk7Cj4gKwlpZiAoISh0ZW1wICYgVFJBTlNfRERJX0ZVTkNfRU5BQkxFKSkKPiAgCQly ZXR1cm47Cj4gIAo+IC0JdGVtcCA9IEk5MTVfUkVBRChUUkFOU19ERElfRlVOQ19DVEwoY3B1X3Ry YW5zY29kZXIpKTsKPiAgCWlmICh0ZW1wICYgVFJBTlNfRERJX1BIU1lOQykKPiAgCQlmbGFncyB8 PSBEUk1fTU9ERV9GTEFHX1BIU1lOQzsKPiAgCWVsc2UKPiBAQCAtNDM1MCw2ICs0MzQ0LDI5IEBA IHZvaWQgaW50ZWxfZGRpX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIAlkZWZhdWx0Ogo+ICAJCWJyZWFrOwo+ICAJfQo+ICt9Cj4gKwo+ICt2b2lkIGludGVsX2Rk aV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkgIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gKwllbnVt IHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7 Cj4gKwo+ICsJLyogWFhYOiBEU0kgdHJhbnNjb2RlciBwYXJhbm9pYSAqLwo+ICsJaWYgKFdBUk5f T04odHJhbnNjb2Rlcl9pc19kc2koY3B1X3RyYW5zY29kZXIpKSkKPiArCQlyZXR1cm47Cj4gKwo+ ICsJaW50ZWxfZGRpX3JlYWRfZnVuY19jdGwoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ICsJaWYg KHBpcGVfY29uZmlnLT5iaWdqb2luZXJfc2xhdmUpIHsKPiArCQkvKiByZWFkIG91dCBwaXBlIHNl dHRpbmdzIGZyb20gbWFzdGVyICovCj4gKwkJZW51bSB0cmFuc2NvZGVyIHNhdmUgPSBwaXBlX2Nv bmZpZy0+Y3B1X3RyYW5zY29kZXI7Cj4gKwo+ICsJCSAvKiBPdXIgb3duIHRyYW5zY29kZXIgbmVl ZHMgdG8gYmUgZGlzYWJsZWQgd2hlbiByZWFkaW5nIGl0IGluIGludGVsX2RkaV9yZWFkX2Z1bmNf Y3RsKCkgKi8KPiArCQlXQVJOX09OKHBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMpOwo+ICsJCXBp cGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciA9IChlbnVtIHRyYW5zY29kZXIpcGlwZV9jb25maWct PmJpZ2pvaW5lcl9saW5rZWRfY3J0Yy0+cGlwZTsKClRoYXQncyBwcmV0dHkgaG9ycmlibGUuCgpJ IGRvbid0IHVuZGVyc3RhbmQgdGhlIGVuYWJsZS9kaXNhYmxlIHNlcXVlbmNlIGVub3VnaCB0byBr bm93IHdoYXQKd2UgbmVlZCB0byBjb25maWd1cmUvZW5hYmxlIHdoZXJlIGV4YWN0bHkuIEJzcGVj IGp1c3Qgc2F5czoKCiIyLiBGb2xsb3cgdGhlIHN0ZXBzIHRvIEVuYWJsZSBQbGFuZXMsIFBpcGUs IGFuZCBUcmFuc2NvZGVyIGZvciBwaXBlIEMsIGJ1dAogICAgZG8gbm90IGNvbmZpZ3VyZSBvciBl bmFibGUgdHJhbnNjb2RlciBDLgogMy4gRm9sbG93IHRoZSBzdGVwcyB0byBFbmFibGUgUGxhbmVz LCBQaXBlLCBhbmQgVHJhbnNjb2RlciBmb3IgcGlwZSBCIGFuZAogICAgdHJhbnNjb2RlciBCLiIK ClNvIHdlIG5lZWQgdG8gZW5hYmxlIHRyYW5zY29kZXIgZm9yIHBpcGUgQyBidXQgbm90IGVuYWJs ZSB0cmFuc2NvZGVyIEM/CkkgaGF2ZSBubyBpZGVhIHdoYXQgYWN0dWFsbHkgbWVhbnMuCgo+ICsJ CWludGVsX2RkaV9yZWFkX2Z1bmNfY3RsKGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiArCQlwaXBl X2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgPSBzYXZlOwo+ICsJfQo+ICAKPiAgCWlmIChlbmNvZGVy LT50eXBlID09IElOVEVMX09VVFBVVF9FRFApCj4gIAkJdGdsX2RjM2NvX2V4aXRsaW5lX2dldF9j b25maWcocGlwZV9jb25maWcpOwo+IEBAIC00Mzc3LDcgKzQzOTQsOCBAQCB2b2lkIGludGVsX2Rk aV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCWRldl9wcml2 LT52YnQuZWRwLmJwcCA9IHBpcGVfY29uZmlnLT5waXBlX2JwcDsKPiAgCX0KPiAgCj4gLQlpbnRl bF9kZGlfY2xvY2tfZ2V0KGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiArCWlmICghcGlwZV9jb25m aWctPmJpZ2pvaW5lcl9zbGF2ZSkKPiArCQlpbnRlbF9kZGlfY2xvY2tfZ2V0KGVuY29kZXIsIHBp cGVfY29uZmlnKTsKPiAgCj4gIAlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJcGlwZV9j b25maWctPmxhbmVfbGF0X29wdGltX21hc2sgPQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggMmRjNjNlZjVjYWY4Li45NGU0Y2FiMDBhNjYg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+ IEBAIC02NTgzLDYgKzY1ODMsNDUgQEAgc3RhdGljIHZvaWQgaWNsX3BpcGVfbWJ1c19lbmFibGUo c3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAlJOTE1X1dSSVRFKFBJUEVfTUJVU19EQk9YX0NU TChwaXBlKSwgdmFsKTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgaWNsX2RkaV9iaWdqb2luZXJf cHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiArCQkJCQkgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9j cnRjICptYXN0ZXIgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gKwlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbWFzdGVyX2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBOVUxMOwo+ICsJaW50IGk7 Cj4gKwo+ICsJaWYgKGNydGNfc3RhdGUtPmJpZ2pvaW5lcl9zbGF2ZSkKPiArCQltYXN0ZXIgPSBj cnRjX3N0YXRlLT5iaWdqb2luZXJfbGlua2VkX2NydGM7Cj4gKwo+ICsJbWFzdGVyX2NydGNfc3Rh dGUgPSBpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBtYXN0ZXIpOwo+ICsK PiArCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUoJnN0YXRlLT5iYXNlLCBjb25uLCBj b25uX3N0YXRlLCBpKSB7Cj4gKwkJaWYgKGNvbm5fc3RhdGUtPmNydGMgIT0gJm1hc3Rlci0+YmFz ZSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWVuY29kZXIgPSB0b19pbnRlbF9lbmNvZGVyKGNv bm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFj cnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpIHsKPiArCQkvKiBuZWVkIHRvIGVuYWJsZSBWRFND LCB3aGljaCB3ZSBza2lwcGVkIGluIHByZS1lbmFibGUgKi8KPiArCQlpbnRlbF9kc2NfZW5hYmxl KGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ICsJfSBlbHNlIHsKPiArCQkvKgo+ICsJCSAqIEVuYWJs ZSBzZXF1ZW5jZSBzdGVwcyAxLTcgb24gYmlnam9pbmVyIG1hc3Rlcgo+ICsJCSAqLwo+ICsJCWlu dGVsX2VuY29kZXJzX3ByZV9wbGxfZW5hYmxlKG1hc3RlciwgbWFzdGVyX2NydGNfc3RhdGUsIHN0 YXRlKTsKPiArCQlpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwobWFzdGVyX2NydGNfc3RhdGUpOwo+ ICsJCWludGVsX2VuY29kZXJzX3ByZV9lbmFibGUobWFzdGVyLCBtYXN0ZXJfY3J0Y19zdGF0ZSwg c3RhdGUpOwo+ICsKPiArCQkvKiBhbmQgRFNDIG9uIHNsYXZlICovCj4gKwkJaW50ZWxfZHNjX2Vu YWJsZShOVUxMLCBjcnRjX3N0YXRlKTsKPiArCX0KPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgaGFz d2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4g IAkJCQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+IEBAIC02NTk2LDQw ICs2NjM1LDQxIEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJaWYgKFdBUk5fT04oaW50ZWxfY3J0Yy0+YWN0 aXZlKSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaW50ZWxfZW5jb2RlcnNfcHJlX3BsbF9lbmFibGUo aW50ZWxfY3J0YywgcGlwZV9jb25maWcsIHN0YXRlKTsKPiArCWlmICghcGlwZV9jb25maWctPmJp Z2pvaW5lcikgewo+ICsJCWludGVsX2VuY29kZXJzX3ByZV9wbGxfZW5hYmxlKGludGVsX2NydGMs IHBpcGVfY29uZmlnLCBzdGF0ZSk7Cj4gIAo+IC0JaWYgKHBpcGVfY29uZmlnLT5zaGFyZWRfZHBs bCkKPiAtCQlpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwocGlwZV9jb25maWcpOwo+ICsJCWlmIChw aXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwpCj4gKwkJCWludGVsX2VuYWJsZV9zaGFyZWRfZHBsbChw aXBlX2NvbmZpZyk7Cj4gIAo+IC0JaW50ZWxfZW5jb2RlcnNfcHJlX2VuYWJsZShpbnRlbF9jcnRj LCBwaXBlX2NvbmZpZywgc3RhdGUpOwo+ICsJCWludGVsX2VuY29kZXJzX3ByZV9lbmFibGUoaW50 ZWxfY3J0YywgcGlwZV9jb25maWcsIHN0YXRlKTsKPiArCX0gZWxzZSB7Cj4gKwkJaWNsX2RkaV9i aWdqb2luZXJfcHJlX2VuYWJsZShzdGF0ZSwgcGlwZV9jb25maWcpOwo+ICsJfQo+ICAKPiAtCWlm IChpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKHBpcGVfY29uZmlnKSkKPiAtCQlpbnRlbF9kcF9z ZXRfbV9uKHBpcGVfY29uZmlnLCBNMV9OMSk7Cj4gKwlpbnRlbF9zZXRfcGlwZV9zcmNfc2l6ZShw aXBlX2NvbmZpZyk7Cj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JST0FE V0VMTChkZXZfcHJpdikpCj4gKwkJYmR3X3NldF9waXBlbWlzYyhwaXBlX2NvbmZpZyk7Cj4gIAo+ IC0JaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCj4gLQkJaW50ZWxfc2V0 X3RyYW5zY29kZXJfdGltaW5ncyhwaXBlX2NvbmZpZyk7Cj4gKwlpZiAoIXBpcGVfY29uZmlnLT5i aWdqb2luZXJfc2xhdmUgJiYgIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFuc2NvZGVyKSkgewo+ ICsJCWlmIChpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKHBpcGVfY29uZmlnKSkKPiArCQkJaW50 ZWxfZHBfc2V0X21fbihwaXBlX2NvbmZpZywgTTFfTjEpOwo+ICAKPiAtCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDExKQo+IC0JCWljbF9lbmFibGVfdHJhbnNfcG9ydF9zeW5jKHBpcGVfY29u ZmlnKTsKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKPiArCQkJaWNsX2VuYWJs ZV90cmFuc19wb3J0X3N5bmMocGlwZV9jb25maWcpOwo+ICAKPiAtCWludGVsX3NldF9waXBlX3Ny Y19zaXplKHBpcGVfY29uZmlnKTsKPiArCQlpbnRlbF9zZXRfdHJhbnNjb2Rlcl90aW1pbmdzKHBp cGVfY29uZmlnKTsKPiAgCj4gLQlpZiAoY3B1X3RyYW5zY29kZXIgIT0gVFJBTlNDT0RFUl9FRFAg JiYKPiAtCSAgICAhdHJhbnNjb2Rlcl9pc19kc2koY3B1X3RyYW5zY29kZXIpKSB7Cj4gLQkJSTkx NV9XUklURShQSVBFX01VTFQoY3B1X3RyYW5zY29kZXIpLAo+IC0JCQkgICBwaXBlX2NvbmZpZy0+ cGl4ZWxfbXVsdGlwbGllciAtIDEpOwo+IC0JfQo+ICsJCWlmIChjcHVfdHJhbnNjb2RlciAhPSBU UkFOU0NPREVSX0VEUCkKPiArCQkJSTkxNV9XUklURShQSVBFX01VTFQoY3B1X3RyYW5zY29kZXIp LAo+ICsJCQkJICBwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciAtIDEpOwo+ICAKPiAtCWlm IChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Cj4gLQkJaW50ZWxfY3B1X3RyYW5zY29k ZXJfc2V0X21fbihwaXBlX2NvbmZpZywKPiAtCQkJCQkgICAgICZwaXBlX2NvbmZpZy0+ZmRpX21f biwgTlVMTCk7Cj4gLQl9Cj4gKwkJaWYgKHBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsK PiArCQkJaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihwaXBlX2NvbmZpZywKPiArCQkJCQkJ ICAgICZwaXBlX2NvbmZpZy0+ZmRpX21fbiwgTlVMTCk7Cj4gKwkJfQo+ICAKPiAtCWlmICghdHJh bnNjb2Rlcl9pc19kc2koY3B1X3RyYW5zY29kZXIpKQo+ICAJCWhhc3dlbGxfc2V0X3BpcGVjb25m KHBpcGVfY29uZmlnKTsKPiAtCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElT X0JST0FEV0VMTChkZXZfcHJpdikpCj4gLQkJYmR3X3NldF9waXBlbWlzYyhwaXBlX2NvbmZpZyk7 Cj4gKwl9Cj4gIAo+ICAJaW50ZWxfY3J0Yy0+YWN0aXZlID0gdHJ1ZTsKPiAgCj4gQEAgLTY2NTcs NyArNjY5Nyw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTEpCj4gIAkJaWNsX3NldF9waXBlX2NoaWNrZW4oaW50ZWxfY3J0Yyk7Cj4gIAo+IC0JaWYgKCF0 cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCj4gKwlpZiAoIXBpcGVfY29uZmlnLT5i aWdqb2luZXJfc2xhdmUgJiYgIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90cmFuc2NvZGVyKSkKPiAg CQlpbnRlbF9kZGlfZW5hYmxlX3RyYW5zY29kZXJfZnVuYyhwaXBlX2NvbmZpZyk7Cj4gIAo+ICAJ aWYgKGRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcyAhPSBOVUxMKQo+IEBAIC02 NjY3LDggKzY3MDcsMTAgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAkJaWNsX3BpcGVfbWJ1c19lbmFibGUo aW50ZWxfY3J0Yyk7Cj4gIAo+ICAJLyogWFhYOiBEbyB0aGUgcGlwZSBhc3NlcnRpb25zIGF0IHRo ZSByaWdodCBwbGFjZSBmb3IgQlhUIERTSS4gKi8KPiAtCWlmICghdHJhbnNjb2Rlcl9pc19kc2ko Y3B1X3RyYW5zY29kZXIpKQo+ICsJaWYgKCFwaXBlX2NvbmZpZy0+Ymlnam9pbmVyX3NsYXZlICYm ICF0cmFuc2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCj4gIAkJaW50ZWxfZW5hYmxlX3Bp cGUocGlwZV9jb25maWcpOwo+ICsJZWxzZQo+ICsJCXRyYWNlX2ludGVsX3BpcGVfZW5hYmxlKGlu dGVsX2NydGMpOwo+ICAKPiAgCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ICAJ CWxwdF9wY2hfZW5hYmxlKHN0YXRlLCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTY3OTYsOSArNjgzOCwy NyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIAllbHNlCj4gIAkJaXJvbmxha2VfcGZpdF9kaXNhYmxl KG9sZF9jcnRjX3N0YXRlKTsKPiAgCj4gLQlpbnRlbF9lbmNvZGVyc19wb3N0X2Rpc2FibGUoaW50 ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUsIHN0YXRlKTsKPiArCWlmIChvbGRfY3J0Y19zdGF0ZS0+ Ymlnam9pbmVyKSB7Cj4gKwkJc3RydWN0IGludGVsX2NydGMgKm1hc3RlcjsKPiArCQlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqbWFzdGVyX2NydGNfc3RhdGU7Cj4gIAo+IC0JaW50ZWxfZW5jb2Rl cnNfcG9zdF9wbGxfZGlzYWJsZShpbnRlbF9jcnRjLCBvbGRfY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ ICsJCS8qIHBvcnRzIGFyZSBkaXNhYmxlZCBmcm9tIHRoZSBzbGF2ZSwgYWZ0ZXIgaXQgZGVjb25m aWd1cmVzICovCj4gKwkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlKQo+ICsJ CQlyZXR1cm47Cj4gKwo+ICsJCW1hc3RlciA9IG9sZF9jcnRjX3N0YXRlLT5iaWdqb2luZXJfbGlu a2VkX2NydGM7Cj4gKwkJbWFzdGVyX2NydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X29sZF9j cnRjX3N0YXRlKHN0YXRlLCBtYXN0ZXIpOwo+ICsKPiArCQlpbnRlbF9kZGlfZGlzYWJsZV9waXBl X2Nsb2NrKG9sZF9jcnRjX3N0YXRlKTsKPiArCj4gKwkJLyogZGlzYWJsZSBwb3J0cyBvbiB0aGUg bWFzdGVyIGNydGMgKi8KPiArCQlpbnRlbF9lbmNvZGVyc19wb3N0X2Rpc2FibGUobWFzdGVyLCBt YXN0ZXJfY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ICsJCWludGVsX2VuY29kZXJzX3Bvc3RfcGxsX2Rp c2FibGUobWFzdGVyLCBtYXN0ZXJfY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ICsJfSBlbHNlIHsKPiAr CQlpbnRlbF9lbmNvZGVyc19wb3N0X2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX2NydGNfc3RhdGUs IHN0YXRlKTsKPiArCj4gKwkJaW50ZWxfZW5jb2RlcnNfcG9zdF9wbGxfZGlzYWJsZShpbnRlbF9j cnRjLCBvbGRfY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ICsJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9p ZCBpOXh4X3BmaXRfZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+IEBAIC02OTY4LDYgKzcwMjgsOSBAQCBzdGF0aWMgdTY0IGdldF9jcnRjX3Bvd2VyX2Rv bWFpbnMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlpZiAoY3J0Y19z dGF0ZS0+c2hhcmVkX2RwbGwpCj4gIAkJbWFzayB8PSBCSVRfVUxMKFBPV0VSX0RPTUFJTl9ESVNQ TEFZX0NPUkUpOwo+ICAKPiArCWlmIChjcnRjX3N0YXRlLT5kc2MuY29tcHJlc3Npb25fZW5hYmxl KQo+ICsJCW1hc2sgfD0gQklUX1VMTChpbnRlbF9kc2NfcG93ZXJfZG9tYWluKGNydGNfc3RhdGUp KTsKPiArCj4gIAlyZXR1cm4gbWFzazsKPiAgfQo+ICAKPiBAQCAtNzU1OSw2ICs3NjIyLDMwIEBA IHN0YXRpYyB1MzIgaWxrX3BpcGVfcGl4ZWxfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpCj4gIAlyZXR1cm4gcGl4ZWxfcmF0ZTsKPiAgfQo+ICAKPiArc3Rh dGljIHZvaWQgaW50ZWxfZW5jb2Rlcl9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICsJCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK PiArewo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnBpcGVfbW9kZSA9ICZjcnRjX3N0YXRl LT5ody5waXBlX21vZGU7Cj4gKwo+ICsJZW5jb2Rlci0+Z2V0X2NvbmZpZyhlbmNvZGVyLCBjcnRj X3N0YXRlKTsKPiArCj4gKwkqcGlwZV9tb2RlID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZTsKPiArCWlmIChjcnRjX3N0YXRlLT5iaWdqb2luZXIpIHsKPiArCQkvKgo+ICsJCSAgKiB0cmFu c2NvZGVyIGlzIHByb2dyYW1tZWQgdG8gdGhlIGZ1bGwgbW9kZSwKPiArCQkgICogYnV0IHBpcGpl IHRpbWluZ3MgYXJlIGhhbGYgb2YgdGhlIHRyYW5zY29kZXIgbW9kZQo+ICsJCSAgKi8KPiArCQlw aXBlX21vZGUtPmNydGNfaGRpc3BsYXkgLz0gMjsKPiArCQlwaXBlX21vZGUtPmNydGNfaGJsYW5r X3N0YXJ0IC89IDI7Cj4gKwkJcGlwZV9tb2RlLT5jcnRjX2hibGFua19lbmQgLz0gMjsKPiArCQlw aXBlX21vZGUtPmNydGNfaHN5bmNfc3RhcnQgLz0gMjsKPiArCQlwaXBlX21vZGUtPmNydGNfaHN5 bmNfZW5kIC89IDI7Cj4gKwkJcGlwZV9tb2RlLT5jcnRjX2h0b3RhbCAvPSAyOwo+ICsJCXBpcGVf bW9kZS0+Y3J0Y19oc2tldyAvPSAyOwo+ICsJCXBpcGVfbW9kZS0+Y3J0Y19jbG9jayAvPSAyOwo+ ICsJfQo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0 ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMt PmRldik7Cj4gQEAgLTg0NjEsMjAgKzg1NDgsMjIgQEAgc3RhdGljIHZvaWQgaW50ZWxfZ2V0X3Bp cGVfc3JjX3NpemUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIHZvaWQgaW50ZWxfbW9kZV9m cm9tX3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ICAJCQkJIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+IC0JbW9kZS0+aGRpc3Bs YXkgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5Owo+IC0JbW9k ZS0+aHRvdGFsID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWw7Cj4g LQltb2RlLT5oc3luY19zdGFydCA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNf aHN5bmNfc3RhcnQ7Cj4gLQltb2RlLT5oc3luY19lbmQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2hzeW5jX2VuZDsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpod19t b2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICsKPiArCW1vZGUtPmhkaXNw bGF5ID0gaHdfbW9kZS0+Y3J0Y19oZGlzcGxheTsKPiArCW1vZGUtPmh0b3RhbCA9IGh3X21vZGUt PmNydGNfaHRvdGFsOwo+ICsJbW9kZS0+aHN5bmNfc3RhcnQgPSBod19tb2RlLT5jcnRjX2hzeW5j X3N0YXJ0Owo+ICsJbW9kZS0+aHN5bmNfZW5kID0gaHdfbW9kZS0+Y3J0Y19oc3luY19lbmQ7Cj4g IAo+IC0JbW9kZS0+dmRpc3BsYXkgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRj X3ZkaXNwbGF5Owo+IC0JbW9kZS0+dnRvdGFsID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21v ZGUuY3J0Y192dG90YWw7Cj4gLQltb2RlLT52c3luY19zdGFydCA9IHBpcGVfY29uZmlnLT5ody5h ZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfc3RhcnQ7Cj4gLQltb2RlLT52c3luY19lbmQgPSBwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZDsKPiArCW1vZGUtPnZkaXNw bGF5ID0gaHdfbW9kZS0+Y3J0Y192ZGlzcGxheTsKPiArCW1vZGUtPnZ0b3RhbCA9IGh3X21vZGUt PmNydGNfdnRvdGFsOwo+ICsJbW9kZS0+dnN5bmNfc3RhcnQgPSBod19tb2RlLT5jcnRjX3ZzeW5j X3N0YXJ0Owo+ICsJbW9kZS0+dnN5bmNfZW5kID0gaHdfbW9kZS0+Y3J0Y192c3luY19lbmQ7Cj4g IAo+IC0JbW9kZS0+ZmxhZ3MgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFnczsK PiArCW1vZGUtPmZsYWdzID0gaHdfbW9kZS0+ZmxhZ3M7Cj4gIAltb2RlLT50eXBlID0gRFJNX01P REVfVFlQRV9EUklWRVI7Cj4gIAo+IC0JbW9kZS0+Y2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcuYWRq dXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICsJbW9kZS0+Y2xvY2sgPSBod19tb2RlLT5jcnRjX2Ns b2NrOwo+ICAKPiAgCW1vZGUtPmhzeW5jID0gZHJtX21vZGVfaHN5bmMobW9kZSk7Cj4gIAltb2Rl LT52cmVmcmVzaCA9IGRybV9tb2RlX3ZyZWZyZXNoKG1vZGUpOwo+IEBAIC0xMDU2NCw2ICsxMDY1 Myw4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfZ2V0X2RkaV9wb3J0X3N0YXRlKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAJdTMyIHRtcDsKPiAgCj4gIAl0bXAgPSBJOTE1X1JFQUQoVFJBTlNf RERJX0ZVTkNfQ1RMKHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlcikpOwo+ICsJaWYgKCEodG1w ICYgVFJBTlNfRERJX0ZVTkNfRU5BQkxFKSkKPiArCQlyZXR1cm47Cj4gIAo+ICAJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTIpCj4gIAkJcG9ydCA9IFRHTF9UUkFOU19ERElfRlVOQ19DVExf VkFMX1RPX1BPUlQodG1wKTsKPiBAQCAtMTA2ODksMTEgKzEwNzgwLDE5IEBAIHN0YXRpYyBib29s IGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCVdB Uk5fT04oYWN0aXZlKTsKPiAgCQlhY3RpdmUgPSB0cnVlOwo+ICAJfQo+ICsJaW50ZWxfZHNjX2dl dF9jb25maWcocGlwZV9jb25maWcpOwo+ICAKPiAtCWlmICghYWN0aXZlKQo+IC0JCWdvdG8gb3V0 Owo+ICsJaWYgKCFhY3RpdmUpIHsKPiArCQkvKiBiaWdqb2luZXIgc2xhdmUgZG9lc24ndCBlbmFi bGUgdHJhbnNjb2RlciAqLwo+ICsJCWlmICghcGlwZV9jb25maWctPmJpZ2pvaW5lcl9zbGF2ZSkK PiArCQkJZ290byBvdXQ7Cj4gIAo+IC0JaWYgKCF0cmFuc2NvZGVyX2lzX2RzaShwaXBlX2NvbmZp Zy0+Y3B1X3RyYW5zY29kZXIpIHx8Cj4gKwkJYWN0aXZlID0gdHJ1ZTsKPiArCQlwaXBlX2NvbmZp Zy0+cGl4ZWxfbXVsdGlwbGllciA9IDE7Cj4gKwo+ICsJCS8qIHdlIGNhbm5vdCByZWFkIG91dCBt b3N0IHN0YXRlLCBzbyBkb24ndCBib3RoZXIuLiAqLwo+ICsJCXBpcGVfY29uZmlnLT5xdWlya3Mg fD0gUElQRV9DT05GSUdfUVVJUktfQklHSk9JTkVSX1NMQVZFOwo+ICsJfSBlbHNlIGlmICghdHJh bnNjb2Rlcl9pc19kc2kocGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyKSB8fAo+ICAJICAgIElO VEVMX0dFTihkZXZfcHJpdikgPj0gMTEpIHsKPiAgCQloYXN3ZWxsX2dldF9kZGlfcG9ydF9zdGF0 ZShjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gIAkJaW50ZWxfZ2V0X3RyYW5zY29kZXJfdGltaW5ncyhj cnRjLCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTEwNzcwLDcgKzEwODY5LDEwIEBAIHN0YXRpYyBib29s IGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCX0K PiAgCX0KPiAgCj4gLQlpZiAocGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyICE9IFRSQU5TQ09E RVJfRURQICYmCj4gKwlpZiAocGlwZV9jb25maWctPmJpZ2pvaW5lcl9zbGF2ZSkgewo+ICsJCS8q IENhbm5vdCBiZSByZWFkIG91dCBhcyBhIHNsYXZlLCBzZXQgdG8gMC4gKi8KPiArCQlwaXBlX2Nv bmZpZy0+cGl4ZWxfbXVsdGlwbGllciA9IDA7Cj4gKwl9IGVsc2UgaWYgKHBpcGVfY29uZmlnLT5j cHVfdHJhbnNjb2RlciAhPSBUUkFOU0NPREVSX0VEUCAmJgo+ICAJICAgICF0cmFuc2NvZGVyX2lz X2RzaShwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIpKSB7Cj4gIAkJcGlwZV9jb25maWctPnBp eGVsX211bHRpcGxpZXIgPQo+ICAJCQlJOTE1X1JFQUQoUElQRV9NVUxUKHBpcGVfY29uZmlnLT5j cHVfdHJhbnNjb2RlcikpICsgMTsKPiBAQCAtMTE3NDgsNyArMTE4NTAsNyBAQCBpbnRlbF9lbmNv ZGVyX2N1cnJlbnRfbW9kZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCQlyZXR1 cm4gTlVMTDsKPiAgCX0KPiAgCj4gLQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsIGNydGNf c3RhdGUpOwo+ICsJaW50ZWxfZW5jb2Rlcl9nZXRfY29uZmlnKGVuY29kZXIsIGNydGNfc3RhdGUp Owo+ICAKPiAgCWludGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZyhtb2RlLCBjcnRjX3N0YXRlKTsK PiAgCj4gQEAgLTEyNjc0LDEwICsxMjc3NiwxMSBAQCBpbnRlbF9jcnRjX2NvcHlfdWFwaV90b19o d19zdGF0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgc3RhdGljIHZvaWQg aW50ZWxfY3J0Y19jb3B5X2h3X3RvX3VhcGlfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAkJCQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqdXNlcl9t b2RlKQo+ICB7Cj4gLQljcnRjX3N0YXRlLT51YXBpLmVuYWJsZSA9IGNydGNfc3RhdGUtPmh3LmVu YWJsZTsKPiAtCWNydGNfc3RhdGUtPnVhcGkuYWN0aXZlID0gY3J0Y19zdGF0ZS0+aHcuYWN0aXZl Owo+IC0JV0FSTl9PTihkcm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjKCZjcnRjX3N0YXRlLT51 YXBpLCB1c2VyX21vZGUpIDwgMCk7Cj4gLQo+ICsJaWYgKCFjcnRjX3N0YXRlLT5iaWdqb2luZXJf c2xhdmUpIHsKPiArCQljcnRjX3N0YXRlLT51YXBpLmVuYWJsZSA9IGNydGNfc3RhdGUtPmh3LmVu YWJsZTsKPiArCQljcnRjX3N0YXRlLT51YXBpLmFjdGl2ZSA9IGNydGNfc3RhdGUtPmh3LmFjdGl2 ZTsKPiArCQlXQVJOX09OKGRybV9hdG9taWNfc2V0X21vZGVfZm9yX2NydGMoJmNydGNfc3RhdGUt PnVhcGksIHVzZXJfbW9kZSkgPCAwKTsKPiArCX0KPiAgCWNydGNfc3RhdGUtPnVhcGkuYWRqdXN0 ZWRfbW9kZSA9IGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gIAo+ICAJLyogY29weSBj b2xvciBibG9icyB0byB1YXBpICovCj4gQEAgLTEzMjU4LDIxICsxMzM2MSw0MyBAQCBpbnRlbF9w aXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50 X2NvbmZpZywKPiAgCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChvdXRwdXRfdHlwZXMpOwo+ICAKPiAt CVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheSk7Cj4gLQlQ SVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsKTsKPiAtCVBJUEVf Q09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19oYmxhbmtfc3RhcnQpOwo+IC0JUElQ RV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hibGFua19lbmQpOwo+IC0JUElQ RV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX3N0YXJ0KTsKPiAtCVBJ UEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19lbmQpOwo+IC0KPiAt CVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheSk7Cj4gLQlQ SVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNfdnRvdGFsKTsKPiAtCVBJUEVf Q09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192Ymxhbmtfc3RhcnQpOwo+IC0JUElQ RV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZibGFua19lbmQpOwo+IC0JUElQ RV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX3N0YXJ0KTsKPiAtCVBJ UEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192c3luY19lbmQpOwo+IC0KPiAt CVBJUEVfQ09ORl9DSEVDS19JKHBpeGVsX211bHRpcGxpZXIpOwo+ICsJaWYgKCFQSVBFX0NPTkZf UVVJUksoUElQRV9DT05GSUdfUVVJUktfQklHSk9JTkVSX1NMQVZFKSkgewo+ICsJCS8qIGJpZ2pv aW5lciBtb2RlID0gdHJhbnNjb2RlciBtb2RlIC8gMiwgZm9yIGNhbGN1bGF0aW9ucyAqLwo+ICsJ CVBJUEVfQ09ORl9DSEVDS19JKGh3LnBpcGVfbW9kZS5jcnRjX2hkaXNwbGF5KTsKPiArCQlQSVBF X0NPTkZfQ0hFQ0tfSShody5waXBlX21vZGUuY3J0Y19odG90YWwpOwo+ICsJCVBJUEVfQ09ORl9D SEVDS19JKGh3LnBpcGVfbW9kZS5jcnRjX3ZkaXNwbGF5KTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tf SShody5waXBlX21vZGUuY3J0Y192dG90YWwpOwo+ICsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSSho dy5hZGp1c3RlZF9tb2RlLmNydGNfaGRpc3BsYXkpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3 LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFk anVzdGVkX21vZGUuY3J0Y19oYmxhbmtfc3RhcnQpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKGh3 LmFkanVzdGVkX21vZGUuY3J0Y19oYmxhbmtfZW5kKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfSSho dy5hZGp1c3RlZF9tb2RlLmNydGNfaHN5bmNfc3RhcnQpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19J KGh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19lbmQpOwo+ICsKPiArCQlQSVBFX0NPTkZfQ0hF Q0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXkpOwo+ICsJCVBJUEVfQ09ORl9DSEVD S19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192dG90YWwpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19J KGh3LmFkanVzdGVkX21vZGUuY3J0Y192Ymxhbmtfc3RhcnQpOwo+ICsJCVBJUEVfQ09ORl9DSEVD S19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192YmxhbmtfZW5kKTsKPiArCQlQSVBFX0NPTkZfQ0hF Q0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfc3RhcnQpOwo+ICsJCVBJUEVfQ09ORl9D SEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y192c3luY19lbmQpOwo+ICsKPiArCQlQSVBFX0NP TkZfQ0hFQ0tfRkxBR1MoaHcuYWRqdXN0ZWRfbW9kZS5mbGFncywKPiArCQkJCSAgICAgIERSTV9N T0RFX0ZMQUdfSU5URVJMQUNFKTsKPiArCj4gKwkJaWYgKCFQSVBFX0NPTkZfUVVJUksoUElQRV9D T05GSUdfUVVJUktfTU9ERV9TWU5DX0ZMQUdTKSkgewo+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tfRkxB R1MoaHcuYWRqdXN0ZWRfbW9kZS5mbGFncywKPiArCQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX1BI U1lOQyk7Cj4gKwkJCVBJUEVfQ09ORl9DSEVDS19GTEFHUyhody5hZGp1c3RlZF9tb2RlLmZsYWdz LAo+ICsJCQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfTkhTWU5DKTsKPiArCQkJUElQRV9DT05GX0NI RUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUuZmxhZ3MsCj4gKwkJCQkJICAgICAgRFJNX01PREVf RkxBR19QVlNZTkMpOwo+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcuYWRqdXN0ZWRfbW9k ZS5mbGFncywKPiArCQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX05WU1lOQyk7Cj4gKwkJfQo+ICsJ CVBJUEVfQ09ORl9DSEVDS19JKHBpeGVsX211bHRpcGxpZXIpOwo+ICsJfQo+ICsKPiAgCVBJUEVf Q09ORl9DSEVDS19JKG91dHB1dF9mb3JtYXQpOwo+ICAJUElQRV9DT05GX0NIRUNLX0koZGMzY29f ZXhpdGxpbmUpOwo+ICAJUElQRV9DT05GX0NIRUNLX0JPT0woaGFzX2hkbWlfc2luayk7Cj4gQEAg LTEzMjgzLDI0ICsxMzQwOCwxMSBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywKPiAgCVBJUEVfQ09ORl9DSEVD S19CT09MKGhkbWlfc2NyYW1ibGluZyk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChoZG1pX2hp Z2hfdG1kc19jbG9ja19yYXRpbyk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChoYXNfaW5mb2Zy YW1lKTsKPiAtCVBJUEVfQ09ORl9DSEVDS19CT09MKGZlY19lbmFibGUpOwo+ICsJaWYgKCFQSVBF X0NPTkZfUVVJUksoUElQRV9DT05GSUdfUVVJUktfQklHSk9JTkVSX1NMQVZFKSkKPiArCQlQSVBF X0NPTkZfQ0hFQ0tfQk9PTChmZWNfZW5hYmxlKTsKPiAgCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9P TF9JTkNPTVBMRVRFKGhhc19hdWRpbyk7Cj4gIAo+IC0JUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3 LmFkanVzdGVkX21vZGUuZmxhZ3MsCj4gLQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNF KTsKPiAtCj4gLQlpZiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBFX0NPTkZJR19RVUlSS19NT0RFX1NZ TkNfRkxBR1MpKSB7Cj4gLQkJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUu ZmxhZ3MsCj4gLQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX1BIU1lOQyk7Cj4gLQkJUElQRV9DT05G X0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUuZmxhZ3MsCj4gLQkJCQkgICAgICBEUk1fTU9E RV9GTEFHX05IU1lOQyk7Cj4gLQkJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21v ZGUuZmxhZ3MsCj4gLQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX1BWU1lOQyk7Cj4gLQkJUElQRV9D T05GX0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUuZmxhZ3MsCj4gLQkJCQkgICAgICBEUk1f TU9ERV9GTEFHX05WU1lOQyk7Cj4gLQl9Cj4gLQo+ICAJUElQRV9DT05GX0NIRUNLX1goZ21jaF9w Zml0LmNvbnRyb2wpOwo+ICAJLyogcGZpdCByYXRpb3MgYXJlIGF1dG9jb21wdXRlZCBieSB0aGUg aHcgb24gZ2VuNCsgKi8KPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKPiBAQCAtMTMz MjQsNyArMTM0MzYsOCBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywKPiAgCQl9Cj4gIAo+ICAJCVBJUEVfQ09O Rl9DSEVDS19JKHNjYWxlcl9zdGF0ZS5zY2FsZXJfaWQpOwo+IC0JCVBJUEVfQ09ORl9DSEVDS19D TE9DS19GVVpaWShwaXhlbF9yYXRlKTsKPiArCQlpZiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBFX0NP TkZJR19RVUlSS19CSUdKT0lORVJfU0xBVkUpKQo+ICsJCQlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tf RlVaWlkocGl4ZWxfcmF0ZSk7Cj4gIAo+ICAJCVBJUEVfQ09ORl9DSEVDS19YKGdhbW1hX21vZGUp Owo+ICAJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkKPiBAQCAtMTMzNDMsNDggKzEzNDU2 LDUxIEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmN1cnJlbnRfY29uZmlnLAo+ICAJUElQRV9DT05GX0NIRUNLX0JPT0woZG91YmxlX3dp ZGUpOwo+ICAKPiAgCVBJUEVfQ09ORl9DSEVDS19QKHNoYXJlZF9kcGxsKTsKPiArCWlmICghUElQ RV9DT05GX1FVSVJLKFBJUEVfQ09ORklHX1FVSVJLX0JJR0pPSU5FUl9TTEFWRSkpIHsKPiAgCVBJ UEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZHBsbCk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tf WChkcGxsX2h3X3N0YXRlLmRwbGxfbWQpOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19z dGF0ZS5mcDApOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5mcDEpOwo+IC0J UElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS53cnBsbCk7Cj4gLQlQSVBFX0NPTkZfQ0hF Q0tfWChkcGxsX2h3X3N0YXRlLnNwbGwpOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19z dGF0ZS5jdHJsMSk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmNmZ2NyMSk7 Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmNmZ2NyMik7Cj4gLQlQSVBFX0NP TkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLmNmZ2NyMCk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChk cGxsX2h3X3N0YXRlLmViYjApOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5l YmI0KTsKPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMCk7Cj4gLQlQSVBF X0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDEpOwo+IC0JUElQRV9DT05GX0NIRUNLX1go ZHBsbF9od19zdGF0ZS5wbGwyKTsKPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUu cGxsMyk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDYpOwo+IC0JUElQ RV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5wbGw4KTsKPiAtCVBJUEVfQ09ORl9DSEVDS19Y KGRwbGxfaHdfc3RhdGUucGxsOSk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRl LnBsbDEwKTsKPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGNzZHcxMik7Cj4g LQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3JlZmNsa2luX2N0bCk7Cj4gLQlQ SVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX2Nsa3RvcDJfY29yZWNsa2N0bDEpOwo+ IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19jbGt0b3AyX2hzY2xrY3RsKTsK PiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfcGxsX2RpdjApOwo+IC0JUElQ RV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19wbGxfZGl2MSk7Cj4gLQlQSVBFX0NPTkZf Q0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9sZik7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChk cGxsX2h3X3N0YXRlLm1nX3BsbF9mcmFjX2xvY2spOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBs bF9od19zdGF0ZS5tZ19wbGxfc3NjKTsKPiAtCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3Rh dGUubWdfcGxsX2JpYXMpOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19w bGxfdGRjX2NvbGRzdF9iaWFzKTsKPiAtCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfWChkc2lfcGxsLmN0 cmwpOwo+IC0JUElQRV9DT05GX0NIRUNLX1goZHNpX3BsbC5kaXYpOwo+IC0KPiAtCWlmIChJU19H NFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkKPiAtCQlQSVBFX0NPTkZf Q0hFQ0tfSShwaXBlX2JwcCk7Cj4gLQo+IC0JUElQRV9DT05GX0NIRUNLX0NMT0NLX0ZVWlpZKGh3 LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfQ0xPQ0tfRlVa WlkocG9ydF9jbG9jayk7Cj4gLQo+IC0JUElQRV9DT05GX0NIRUNLX0kobWluX3ZvbHRhZ2VfbGV2 ZWwpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZHBsbF9tZCk7Cj4gKwkJ UElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5mcDApOwo+ICsJCVBJUEVfQ09ORl9DSEVD S19YKGRwbGxfaHdfc3RhdGUuZnAxKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0 YXRlLndycGxsKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnNwbGwpOwo+ ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY3RybDEpOwo+ICsJCVBJUEVfQ09O Rl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuY2ZnY3IxKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChk cGxsX2h3X3N0YXRlLmNmZ2NyMik7Cj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0 ZS5jZmdjcjApOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUuZWJiMCk7Cj4g KwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5lYmI0KTsKPiArCQlQSVBFX0NPTkZf Q0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDApOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxf aHdfc3RhdGUucGxsMSk7Cj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5wbGwy KTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLnBsbDMpOwo+ICsJCVBJUEVf Q09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsNik7Cj4gKwkJUElQRV9DT05GX0NIRUNLX1go ZHBsbF9od19zdGF0ZS5wbGw4KTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRl LnBsbDkpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGxsMTApOwo+ICsJ CVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUucGNzZHcxMik7Cj4gKwkJUElQRV9DT05G X0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19yZWZjbGtpbl9jdGwpOwo+ICsJCVBJUEVfQ09ORl9D SEVDS19YKGRwbGxfaHdfc3RhdGUubWdfY2xrdG9wMl9jb3JlY2xrY3RsMSk7Cj4gKwkJUElQRV9D T05GX0NIRUNLX1goZHBsbF9od19zdGF0ZS5tZ19jbGt0b3AyX2hzY2xrY3RsKTsKPiArCQlQSVBF X0NPTkZfQ0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9kaXYwKTsKPiArCQlQSVBFX0NPTkZf Q0hFQ0tfWChkcGxsX2h3X3N0YXRlLm1nX3BsbF9kaXYxKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tf WChkcGxsX2h3X3N0YXRlLm1nX3BsbF9sZik7Cj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHBsbF9o d19zdGF0ZS5tZ19wbGxfZnJhY19sb2NrKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfWChkcGxsX2h3 X3N0YXRlLm1nX3BsbF9zc2MpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUu bWdfcGxsX2JpYXMpOwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRwbGxfaHdfc3RhdGUubWdfcGxs X3RkY19jb2xkc3RfYmlhcyk7Cj4gKwo+ICsJCVBJUEVfQ09ORl9DSEVDS19YKGRzaV9wbGwuY3Ry bCk7Cj4gKwkJUElQRV9DT05GX0NIRUNLX1goZHNpX3BsbC5kaXYpOwo+ICsKPiArCQlpZiAoSVNf RzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCj4gKwkJCVBJUEVfQ09O Rl9DSEVDS19JKHBpcGVfYnBwKTsKPiArCj4gKwkJUElQRV9DT05GX0NIRUNLX0NMT0NLX0ZVWlpZ KGh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayk7Cj4gKwkJUElQRV9DT05GX0NIRUNLX0NMT0NL X0ZVWlpZKGh3LnBpcGVfbW9kZS5jcnRjX2Nsb2NrKTsKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfQ0xP Q0tfRlVaWlkocG9ydF9jbG9jayk7Cj4gKwo+ICsJCVBJUEVfQ09ORl9DSEVDS19JKG1pbl92b2x0 YWdlX2xldmVsKTsKPiArCX0KPiAgCj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChpbmZvZnJhbWVzLmVu YWJsZSk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfWChpbmZvZnJhbWVzLmdjcCk7Cj4gQEAgLTEzMzk1 LDYgKzEzNTExLDExIEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAo+ICAKPiAgCVBJUEVfQ09ORl9DSEVDS19J KHN5bmNfbW9kZV9zbGF2ZXNfbWFzayk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfSShtYXN0ZXJfdHJh bnNjb2Rlcik7Cj4gKwlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChiaWdqb2luZXIpOwo+ICsJUElQRV9D T05GX0NIRUNLX0JPT0woYmlnam9pbmVyX3NsYXZlKTsKPiArCVBJUEVfQ09ORl9DSEVDS19QKGJp Z2pvaW5lcl9saW5rZWRfY3J0Yyk7Cj4gKwlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChkc2MuY29tcHJl c3Npb25fZW5hYmxlKTsKPiArCVBJUEVfQ09ORl9DSEVDS19CT09MKGRzYy5kc2Nfc3BsaXQpOwo+ ICAKPiAgI3VuZGVmIFBJUEVfQ09ORl9DSEVDS19YCj4gICN1bmRlZiBQSVBFX0NPTkZfQ0hFQ0tf SQo+IEBAIC0xMzY1MCw2ICsxMzc3MSw3IEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gIAlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWc7Cj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqbWFzdGVyID0gY3J0YzsKPiAgCWJv b2wgYWN0aXZlOwo+ICAKPiAgCXN0YXRlID0gb2xkX2NydGNfc3RhdGUtPnVhcGkuc3RhdGU7Cj4g QEAgLTEzNjc5LDcgKzEzODAxLDEwIEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAJCQkiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsCj4gIAkJCW5ld19j cnRjX3N0YXRlLT5ody5hY3RpdmUsIGNydGMtPmFjdGl2ZSk7Cj4gIAo+IC0JZm9yX2VhY2hfZW5j b2Rlcl9vbl9jcnRjKGRldiwgJmNydGMtPmJhc2UsIGVuY29kZXIpIHsKPiArCWlmIChuZXdfY3J0 Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlKQo+ICsJCW1hc3RlciA9IG5ld19jcnRjX3N0YXRlLT5i aWdqb2luZXJfbGlua2VkX2NydGM7Cj4gKwo+ICsJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRl diwgJm1hc3Rlci0+YmFzZSwgZW5jb2Rlcikgewo+ICAJCWVudW0gcGlwZSBwaXBlOwo+ICAKPiAg CQlhY3RpdmUgPSBlbmNvZGVyLT5nZXRfaHdfc3RhdGUoZW5jb2RlciwgJnBpcGUpOwo+IEBAIC0x MzY4OCwxMiArMTM4MTMsMTIgQEAgdmVyaWZ5X2NydGNfc3RhdGUoc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gIAkJCQllbmNvZGVyLT5iYXNlLmJhc2UuaWQsIGFjdGl2ZSwKPiAgCQkJCW5ld19j cnRjX3N0YXRlLT5ody5hY3RpdmUpOwo+ICAKPiAtCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICYm IGNydGMtPnBpcGUgIT0gcGlwZSwKPiArCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICYmIG1hc3Rl ci0+cGlwZSAhPSBwaXBlLAo+ICAJCQkJIkVuY29kZXIgY29ubmVjdGVkIHRvIHdyb25nIHBpcGUg JWNcbiIsCj4gIAkJCQlwaXBlX25hbWUocGlwZSkpOwo+ICAKPiAgCQlpZiAoYWN0aXZlKQo+IC0J CQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiArCQkJaW50ZWxf ZW5jb2Rlcl9nZXRfY29uZmlnKGVuY29kZXIsIHBpcGVfY29uZmlnKTsKPiAgCX0KPiAgCj4gIAlp bnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0ZShwaXBlX2NvbmZpZyk7Cj4gQEAgLTE0NDczLDcg KzE0NTk4LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX2NydGMoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gIAo+ICAJaWYgKG1vZGVzZXQpIHsKPiAgCQlpbnRlbF9jcnRjX3VwZGF0ZV9h Y3RpdmVfdGltaW5ncyhuZXdfY3J0Y19zdGF0ZSk7Cj4gLQo+ICAJCWRldl9wcml2LT5kaXNwbGF5 LmNydGNfZW5hYmxlKG5ld19jcnRjX3N0YXRlLCBzdGF0ZSk7Cj4gIAo+ICAJCS8qIHZibGFua3Mg d29yayBhZ2FpbiwgcmUtZW5hYmxlIHBpcGUgQ1JDLiAqLwo+IEBAIC0xNDYxMyw3ICsxNDczNyw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX2NvbW1pdF9tb2Rlc2V0X2Rpc2FibGVzKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJICovCj4gIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxf Y3J0Y19pbl9zdGF0ZV9yZXZlcnNlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKPiAgCQkJ CQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gLQkJaWYgKCFuZWVkc19tb2Rlc2V0KG5ld19j cnRjX3N0YXRlKSkKPiArCQlpZiAoIW5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpIHx8IG9s ZF9jcnRjX3N0YXRlLT5iaWdqb2luZXJfc2xhdmUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQkv KiBJbiBjYXNlIG9mIFRyYW5zY29kZXIgcG9ydCBTeW5jIG1hc3RlciBzbGF2ZSBDUlRDcyBjYW4g YmUKPiBAQCAtMTQ2MzcsNiArMTQ3NjEsMTkgQEAgc3RhdGljIHZvaWQgaW50ZWxfY29tbWl0X21v ZGVzZXRfZGlzYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJCQkJ CQkgICAgICBvbGRfY3J0Y19zdGF0ZSwKPiAgCQkJCQkJCSAgICAgIG5ld19jcnRjX3N0YXRlLAo+ ICAJCQkJCQkJICAgICAgY3J0Yyk7Cj4gKwo+ICsJCQlpZiAob2xkX2NydGNfc3RhdGUtPmJpZ2pv aW5lcikgewo+ICsJCQkJc3RydWN0IGludGVsX2NydGMgKnNsYXZlID0gb2xkX2NydGNfc3RhdGUt PmJpZ2pvaW5lcl9saW5rZWRfY3J0YzsKPiArCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfc2xhdmVfY3J0Y19zdGF0ZSA9Cj4gKwkJCQkJaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRl KCZzdGF0ZS0+YmFzZSwgc2xhdmUpOwo+ICsJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5l d19zbGF2ZV9jcnRjX3N0YXRlID0KPiArCQkJCQlpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUo JnN0YXRlLT5iYXNlLCBzbGF2ZSk7Cj4gKwo+ICsJCQkJaW50ZWxfb2xkX2NydGNfc3RhdGVfZGlz YWJsZXMoc3RhdGUsCj4gKwkJCQkJCQkgICAgICBvbGRfc2xhdmVfY3J0Y19zdGF0ZSwKPiArCQkJ CQkJCSAgICAgIG5ld19zbGF2ZV9jcnRjX3N0YXRlLAo+ICsJCQkJCQkJICAgICAgc2xhdmUpOwo+ ICsJCQl9Cj4gIAkJfQo+ICAJfQo+ICB9Cj4gQEAgLTE3MTY4LDcgKzE3MzA1LDcgQEAgaW50IGlu dGVsX21vZGVzZXRfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgCWZvcl9l YWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7Cj4gIAkJc3RydWN0IGludGVsX2luaXRpYWxfcGxh bmVfY29uZmlnIHBsYW5lX2NvbmZpZyA9IHt9Owo+ICAKPiAtCQlpZiAoIWNydGMtPmFjdGl2ZSkK PiArCQlpZiAoIXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSktPnVhcGkuYWN0 aXZlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJLyoKPiBAQCAtMTc2MjQsNyArMTc3NjEsMTcg QEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gIAkJCWNydGNfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PmJhc2Uuc3RhdGUpOwo+ICAKPiAgCQkJZW5jb2Rlci0+YmFzZS5jcnRjID0gJmNydGMtPmJhc2U7 Cj4gLQkJCWVuY29kZXItPmdldF9jb25maWcoZW5jb2RlciwgY3J0Y19zdGF0ZSk7Cj4gKwkJCWlu dGVsX2VuY29kZXJfZ2V0X2NvbmZpZyhlbmNvZGVyLCBjcnRjX3N0YXRlKTsKPiArCj4gKwkJCS8q IHJlYWQgb3V0IHRvIHNsYXZlIGNydGMgYXMgd2VsbCBmb3IgYmlnam9pbmVyICovCj4gKwkJCWlm IChjcnRjX3N0YXRlLT5iaWdqb2luZXIpIHsKPiArCQkJCS8qIGVuY29kZXIgc2hvdWxkIHJlYWQg YmUgbGlua2VkIHRvIGJpZ2pvaW5lciBtYXN0ZXIgKi8KPiArCQkJCVdBUk5fT04oY3J0Y19zdGF0 ZS0+Ymlnam9pbmVyX3NsYXZlKTsKPiArCj4gKwkJCQljcnRjID0gY3J0Y19zdGF0ZS0+Ymlnam9p bmVyX2xpbmtlZF9jcnRjOwo+ICsJCQkJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUo Y3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gKwkJCQlpbnRlbF9lbmNvZGVyX2dldF9jb25maWcoZW5jb2Rl ciwgY3J0Y19zdGF0ZSk7Cj4gKwkJCX0KPiAgCQl9IGVsc2Ugewo+ICAJCQllbmNvZGVyLT5iYXNl LmNydGMgPSBOVUxMOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+IGluZGV4IGNmMmVjZmExNzQxNi4uODZhMDUyNGIz Y2Q4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3R5cGVzLmgKPiBAQCAtODIxLDYgKzgyMSw3IEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlIHsKPiAgCSAqIGFjY29yZGluZ2x5Lgo+ICAJICovCj4gICNkZWZpbmUgUElQRV9DT05GSUdf UVVJUktfTU9ERV9TWU5DX0ZMQUdTCSgxPDwwKSAvKiB1bnJlbGlhYmxlIHN5bmMgbW9kZS5mbGFn cyAqLwo+ICsjZGVmaW5lIFBJUEVfQ09ORklHX1FVSVJLX0JJR0pPSU5FUl9TTEFWRQkoMTw8MSkg LyogYmlnam9pbmVyIHNsYXZlLCBwYXJ0aWFsIHJlYWRvdXQgKi8KPiAgCXVuc2lnbmVkIGxvbmcg cXVpcmtzOwo+ICAKPiAgCXVuc2lnbmVkIGZiX2JpdHM7IC8qIGZyYW1lYnVmZmVycyB0byBmbGlw ICovCj4gQEAgLTE2MzksNCArMTY0MCwyNSBAQCBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9wbGFu ZV9nZ3R0X29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ICAJ cmV0dXJuIGk5MTVfZ2d0dF9vZmZzZXQoc3RhdGUtPnZtYSk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBp bmxpbmUgYm9vbAo+ICtpbnRlbF9jcnRjX3N1cHBvcnRzX2RzYyhjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocGlwZV9jb25maWctPnVhcGkuY3J0Yy0+ZGV2KTsKPiArCj4g KwlpZiAoIUlOVEVMX0lORk8oZGV2X3ByaXYpLT5kaXNwbGF5Lmhhc19kc2MpCj4gKwkJcmV0dXJu IGZhbHNlOwo+ICsKPiArCS8qIE9uIFRHTCwgRFNDIGlzIHN1cHBvcnRlZCBvbiBhbGwgUGlwZXMg Ki8KPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKQo+ICsJCXJldHVybiB0cnVlOwo+ ICsKPiArCS8qIGdlbjEwIGFuZCBnZW4xMSBoYXZlIERTQywgYnV0IG5vdCBvbiBwaXBlIEEsIGVE UCBpcyBhbGxvd2VkICovCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCAmJgo+ICsJ ICAgICh0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT51YXBpLmNydGMpLT5waXBlICE9IFBJUEVf QSB8fAo+ICsJICAgICBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9F RFApKQo+ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiAg I2VuZGlmIC8qICBfX0lOVEVMX0RJU1BMQVlfVFlQRVNfSF9fICovCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IGluZGV4IDU0ZmRlNGM0YzRkZC4uZDBiNjI3NmY3NzEy IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IEBAIC0xOTQ4 LDMyICsxOTQ4LDEzIEBAIHN0YXRpYyBib29sIGludGVsX2RwX3N1cHBvcnRzX2ZlYyhzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCWRybV9kcF9zaW5rX3N1cHBvcnRzX2ZlYyhpbnRlbF9k cC0+ZmVjX2NhcGFibGUpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBpbnRlbF9kcF9zb3VyY2Vf c3VwcG9ydHNfZHNjKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gLQkJCQkJIGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAtewo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gLQo+IC0JaWYg KCFJTlRFTF9JTkZPKGRldl9wcml2KS0+ZGlzcGxheS5oYXNfZHNjKQo+IC0JCXJldHVybiBmYWxz ZTsKPiAtCj4gLQkvKiBPbiBUR0wsIERTQyBpcyBzdXBwb3J0ZWQgb24gYWxsIFBpcGVzICovCj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikKPiAtCQlyZXR1cm4gdHJ1ZTsKPiAtCj4g LQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCAmJgo+IC0JICAgIHBpcGVfY29uZmlnLT5j cHVfdHJhbnNjb2RlciAhPSBUUkFOU0NPREVSX0EpCj4gLQkJcmV0dXJuIHRydWU7Cj4gLQo+IC0J cmV0dXJuIGZhbHNlOwo+IC19Cj4gLQo+ICBzdGF0aWMgYm9vbCBpbnRlbF9kcF9zdXBwb3J0c19k c2Moc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCQkJCSAgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlpZiAoIWludGVsX2RwX2lzX2VkcChp bnRlbF9kcCkgJiYgIXBpcGVfY29uZmlnLT5mZWNfZW5hYmxlKQo+ICAJCXJldHVybiBmYWxzZTsK PiAgCj4gLQlyZXR1cm4gaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2RzYyhpbnRlbF9kcCwgcGlw ZV9jb25maWcpICYmCj4gKwlyZXR1cm4gaW50ZWxfY3J0Y19zdXBwb3J0c19kc2MocGlwZV9jb25m aWcpICYmCj4gIAkJZHJtX2RwX3Npbmtfc3VwcG9ydHNfZHNjKGludGVsX2RwLT5kc2NfZHBjZCk7 Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfdmRzYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92ZHNjLmMKPiBp bmRleCBiMjNiYThkMTA4ZGIuLmU0ODYwODIyMWU3MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfdmRzYy5jCj4gQEAgLTUwMSwxMSArNTAxLDEwIEBAIGludGVsX2Rz Y19wb3dlcl9kb21haW4oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gIAkJcmV0dXJuIFBPV0VSX0RPTUFJTl9UUkFOU0NPREVSKGNwdV90cmFuc2NvZGVyKTsKPiAg fQo+ICAKPiAtc3RhdGljIHZvaWQgaW50ZWxfZHNjX3Bwc19jb25maWd1cmUoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gLQkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gK3N0YXRpYyB2b2lkIGludGVsX2RzY19wcHNfY29uZmlndXJlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjcnRjLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2RzY19jb25maWcgKnZkc2Nf Y2ZnID0gJmNydGNfc3RhdGUtPmRzYy5jb25maWc7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMt PnBpcGU7Cj4gIAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5j cHVfdHJhbnNjb2RlcjsKPiBAQCAtNTE1LDYgKzUxNCw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rz Y19wcHNfY29uZmlndXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJdTggbnVt X3Zkc2NfaW5zdGFuY2VzID0gKGNydGNfc3RhdGUtPmRzYy5kc2Nfc3BsaXQpID8gMiA6IDE7Cj4g IAlpbnQgaSA9IDA7Cj4gIAo+ICsJaWYgKGNydGNfc3RhdGUtPmJpZ2pvaW5lcikKPiArCQludW1f dmRzY19pbnN0YW5jZXMgKj0gMjsKPiArCj4gIAkvKiBQb3B1bGF0ZSBQSUNUVVJFX1BBUkFNRVRF Ul9TRVRfMCByZWdpc3RlcnMgKi8KPiAgCXBwc192YWwgPSBEU0NfVkVSX01BSiB8IHZkc2NfY2Zn LT5kc2NfdmVyc2lvbl9taW5vciA8PAo+ICAJCURTQ19WRVJfTUlOX1NISUZUIHwKPiBAQCAtOTIw LDc0ICs5MjIsMTA0IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzY19kcF9wcHNfd3JpdGUoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCQkJc2l6ZW9mKGRwX2RzY19wcHNfc2RwKSk7 Cj4gIH0KPiAgCj4gK3N0YXRpYyBpOTE1X3JlZ190IGRzc19jdGwxX3JlZyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJZW51bSBwaXBlIHBpcGUgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0YyktPnBpcGU7Cj4gKwo+ICsJaWYgKGNy dGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKQo+ICsJCXJldHVybiBE U1NfQ1RMMTsKPiArCj4gKwlyZXR1cm4gSUNMX1BJUEVfRFNTX0NUTDEocGlwZSk7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpOTE1X3JlZ190IGRzc19jdGwyX3JlZyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0YyktPnBpcGU7Cj4gKwo+ICsJaWYgKGNydGNfc3RhdGUt PmNwdV90cmFuc2NvZGVyID09IFRSQU5TQ09ERVJfRURQKQo+ICsJCXJldHVybiBEU1NfQ1RMMjsK PiArCj4gKwlyZXR1cm4gSUNMX1BJUEVfRFNTX0NUTDIocGlwZSk7Cj4gK30KPiArCj4gIHZvaWQg aW50ZWxfZHNjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkgICAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0 Yyk7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKPiAtCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAtCWk5MTVf cmVnX3QgZHNzX2N0bDFfcmVnLCBkc3NfY3RsMl9yZWc7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCXUzMiBkc3NfY3Rs MV92YWwgPSAwOwo+ICAJdTMyIGRzc19jdGwyX3ZhbCA9IDA7Cj4gIAo+ICAJaWYgKCFjcnRjX3N0 YXRlLT5kc2MuY29tcHJlc3Npb25fZW5hYmxlKQo+ICAJCXJldHVybjsKPiAgCj4gLQkvKiBFbmFi bGUgUG93ZXIgd2VsbHMgZm9yIFZEU0Mvam9pbmluZyAqLwo+IC0JaW50ZWxfZGlzcGxheV9wb3dl cl9nZXQoZGV2X3ByaXYsCj4gLQkJCQlpbnRlbF9kc2NfcG93ZXJfZG9tYWluKGNydGNfc3RhdGUp KTsKPiArCWludGVsX2RzY19wcHNfY29uZmlndXJlKGNydGNfc3RhdGUpOwo+ICAKPiAtCWludGVs X2RzY19wcHNfY29uZmlndXJlKGVuY29kZXIsIGNydGNfc3RhdGUpOwo+ICsJaWYgKCFjcnRjX3N0 YXRlLT5iaWdqb2luZXJfc2xhdmUpCj4gKwkJaW50ZWxfZHNjX2RwX3Bwc193cml0ZShlbmNvZGVy LCBjcnRjX3N0YXRlKTsKPiAgCj4gLQlpbnRlbF9kc2NfZHBfcHBzX3dyaXRlKGVuY29kZXIsIGNy dGNfc3RhdGUpOwo+IC0KPiAtCWlmIChjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlciA9PSBUUkFO U0NPREVSX0VEUCkgewo+IC0JCWRzc19jdGwxX3JlZyA9IERTU19DVEwxOwo+IC0JCWRzc19jdGwy X3JlZyA9IERTU19DVEwyOwo+IC0JfSBlbHNlIHsKPiAtCQlkc3NfY3RsMV9yZWcgPSBJQ0xfUElQ RV9EU1NfQ1RMMShwaXBlKTsKPiAtCQlkc3NfY3RsMl9yZWcgPSBJQ0xfUElQRV9EU1NfQ1RMMihw aXBlKTsKPiAtCX0KPiAgCWRzc19jdGwyX3ZhbCB8PSBMRUZUX0JSQU5DSF9WRFNDX0VOQUJMRTsK PiAgCWlmIChjcnRjX3N0YXRlLT5kc2MuZHNjX3NwbGl0KSB7Cj4gIAkJZHNzX2N0bDJfdmFsIHw9 IFJJR0hUX0JSQU5DSF9WRFNDX0VOQUJMRTsKPiAgCQlkc3NfY3RsMV92YWwgfD0gSk9JTkVSX0VO QUJMRTsKPiAgCX0KPiAtCUk5MTVfV1JJVEUoZHNzX2N0bDFfcmVnLCBkc3NfY3RsMV92YWwpOwo+ IC0JSTkxNV9XUklURShkc3NfY3RsMl9yZWcsIGRzc19jdGwyX3ZhbCk7Cj4gKwlpZiAoY3J0Y19z dGF0ZS0+Ymlnam9pbmVyKSB7Cj4gKwkJZHNzX2N0bDFfdmFsIHw9IEJJR19KT0lORVJfRU5BQkxF Owo+ICsJCWlmICghY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlKQo+ICsJCQlkc3NfY3RsMV92 YWwgfD0gTUFTVEVSX0JJR19KT0lORVJfRU5BQkxFOwo+ICsJfQo+ICsJSTkxNV9XUklURShkc3Nf Y3RsMV9yZWcoY3J0Y19zdGF0ZSksIGRzc19jdGwxX3ZhbCk7Cj4gKwlJOTE1X1dSSVRFKGRzc19j dGwyX3JlZyhjcnRjX3N0YXRlKSwgZHNzX2N0bDJfdmFsKTsKPiAgfQo+ICAKPiAgdm9pZCBpbnRl bF9kc2NfZGlzYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhvbGRf Y3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSBjcnRj LT5waXBlOwo+IC0JaTkxNV9yZWdfdCBkc3NfY3RsMV9yZWcsIGRzc19jdGwyX3JlZzsKPiAtCXUz MiBkc3NfY3RsMV92YWwgPSAwLCBkc3NfY3RsMl92YWwgPSAwOwo+ICAKPiAgCWlmICghb2xkX2Ny dGNfc3RhdGUtPmRzYy5jb21wcmVzc2lvbl9lbmFibGUpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlm IChvbGRfY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiAt CQlkc3NfY3RsMV9yZWcgPSBEU1NfQ1RMMTsKPiAtCQlkc3NfY3RsMl9yZWcgPSBEU1NfQ1RMMjsK PiAtCX0gZWxzZSB7Cj4gLQkJZHNzX2N0bDFfcmVnID0gSUNMX1BJUEVfRFNTX0NUTDEocGlwZSk7 Cj4gLQkJZHNzX2N0bDJfcmVnID0gSUNMX1BJUEVfRFNTX0NUTDIocGlwZSk7Cj4gKwlJOTE1X1dS SVRFKGRzc19jdGwxX3JlZyhvbGRfY3J0Y19zdGF0ZSksIDApOwo+ICsJSTkxNV9XUklURShkc3Nf Y3RsMl9yZWcob2xkX2NydGNfc3RhdGUpLCAwKTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9kc2Nf Z2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiArewo+ICsJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsKPiArCXUzMiBkc3NfY3RsMV92YWwsIGRzc19jdGwyX3ZhbDsKPiArCWlu dGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsKPiArCWlmICghaW50ZWxfY3J0Y19zdXBwb3J0c19k c2MoY3J0Y19zdGF0ZSkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXdha2VyZWYgPSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBpbnRlbF9kc2NfcG93ZXJfZG9tYWlu KGNydGNfc3RhdGUpKTsKPiArCWlmICghd2FrZXJlZikKPiArCQlyZXR1cm47Cj4gKwo+ICsJZHNz X2N0bDFfdmFsID0gSTkxNV9SRUFEKGRzc19jdGwxX3JlZyhjcnRjX3N0YXRlKSk7Cj4gKwlkc3Nf Y3RsMl92YWwgPSBJOTE1X1JFQUQoZHNzX2N0bDJfcmVnKGNydGNfc3RhdGUpKTsKPiArCWlmIChk c3NfY3RsMl92YWwgJiBMRUZUX0JSQU5DSF9WRFNDX0VOQUJMRSkKPiArCQljcnRjX3N0YXRlLT5k c2MuY29tcHJlc3Npb25fZW5hYmxlID0gdHJ1ZTsKPiArCj4gKwlpZiAoKGRzc19jdGwxX3ZhbCAm IEpPSU5FUl9FTkFCTEUpICYmIChkc3NfY3RsMl92YWwgJiBSSUdIVF9CUkFOQ0hfVkRTQ19FTkFC TEUpKQo+ICsJCWNydGNfc3RhdGUtPmRzYy5kc2Nfc3BsaXQgPSB0cnVlOwo+ICsKPiArCWlmIChk c3NfY3RsMV92YWwgJiBCSUdfSk9JTkVSX0VOQUJMRSkgewo+ICsJCWNydGNfc3RhdGUtPmJpZ2pv aW5lciA9IHRydWU7Cj4gKwo+ICsJCWlmICghKGRzc19jdGwxX3ZhbCAmIE1BU1RFUl9CSUdfSk9J TkVSX0VOQUJMRSkpIHsKPiArCQkJY3J0Y19zdGF0ZS0+Ymlnam9pbmVyX3NsYXZlID0gdHJ1ZTsK PiArCQkJaWYgKCFXQVJOX09OKGNydGMtPnBpcGUgPT0gUElQRV9BKSkKPiArCQkJCWNydGNfc3Rh dGUtPmJpZ2pvaW5lcl9saW5rZWRfY3J0YyA9Cj4gKwkJCQkJaW50ZWxfZ2V0X2NydGNfZm9yX3Bp cGUoZGV2X3ByaXYsIGNydGMtPnBpcGUgLSAxKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlpZiAoIVdB Uk5fT04oSU5URUxfTlVNX1BJUEVTKGRldl9wcml2KSA9PSBjcnRjLT5waXBlICsgMSkpCj4gKwkJ CQljcnRjX3N0YXRlLT5iaWdqb2luZXJfbGlua2VkX2NydGMgPQo+ICsJCQkJCWludGVsX2dldF9j cnRjX2Zvcl9waXBlKGRldl9wcml2LCBjcnRjLT5waXBlICsgMSk7Cj4gKwkJfQo+ICAJfQo+IC0J ZHNzX2N0bDFfdmFsID0gSTkxNV9SRUFEKGRzc19jdGwxX3JlZyk7Cj4gLQlpZiAoZHNzX2N0bDFf dmFsICYgSk9JTkVSX0VOQUJMRSkKPiAtCQlkc3NfY3RsMV92YWwgJj0gfkpPSU5FUl9FTkFCTEU7 Cj4gLQlJOTE1X1dSSVRFKGRzc19jdGwxX3JlZywgZHNzX2N0bDFfdmFsKTsKPiAtCj4gLQlkc3Nf Y3RsMl92YWwgPSBJOTE1X1JFQUQoZHNzX2N0bDJfcmVnKTsKPiAtCWlmIChkc3NfY3RsMl92YWwg JiBMRUZUX0JSQU5DSF9WRFNDX0VOQUJMRSB8fAo+IC0JICAgIGRzc19jdGwyX3ZhbCAmIFJJR0hU X0JSQU5DSF9WRFNDX0VOQUJMRSkKPiAtCQlkc3NfY3RsMl92YWwgJj0gfihMRUZUX0JSQU5DSF9W RFNDX0VOQUJMRSB8Cj4gLQkJCQkgIFJJR0hUX0JSQU5DSF9WRFNDX0VOQUJMRSk7Cj4gLQlJOTE1 X1dSSVRFKGRzc19jdGwyX3JlZywgZHNzX2N0bDJfdmFsKTsKPiAtCj4gLQkvKiBEaXNhYmxlIFBv d2VyIHdlbGxzIGZvciBWRFNDL2pvaW5pbmcgKi8KPiAtCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0 X3VuY2hlY2tlZChkZXZfcHJpdiwKPiAtCQkJCQkgIGludGVsX2RzY19wb3dlcl9kb21haW4ob2xk X2NydGNfc3RhdGUpKTsKPiArCj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwg aW50ZWxfZHNjX3Bvd2VyX2RvbWFpbihjcnRjX3N0YXRlKSwgd2FrZXJlZik7Cj4gIH0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92ZHNjLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuaAo+IGluZGV4IDRlZDIyNTY3NTBj My4uNzlkOTY1ZmVkZjBiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfdmRzYy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF92ZHNjLmgKPiBAQCAtMTQsNiArMTQsOCBAQCB2b2lkIGludGVsX2RzY19lbmFibGUoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHZvaWQgaW50ZWxfZHNjX2Rpc2FibGUoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICBpbnQgaW50ZWxfZHNjX2Nv bXB1dGVfcGFyYW1zKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkgICAgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4gK3ZvaWQgaW50ZWxfZHNjX2dl dF9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICsKPiAgZW51 bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbgo+ICBpbnRlbF9kc2NfcG93ZXJfZG9tYWluKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAgCj4gLS0gCj4gMi4y NC4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwt Z2Z4CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA==