From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 08/24] drm/i915: Prepare to split crtc state in uapi and hw state Date: Tue, 8 Oct 2019 20:06:43 +0300 Message-ID: <20191008170643.GT1208@intel.com> References: <20191004113514.17064-1-maarten.lankhorst@linux.intel.com> <20191004113514.17064-9-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 667D76E879 for ; Tue, 8 Oct 2019 17:06:49 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191004113514.17064-9-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 T24gRnJpLCBPY3QgMDQsIDIwMTkgYXQgMDE6MzQ6NThQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gV2Ugd2FudCB0byBzcGxpdCBkcm1fY3J0Y19zdGF0ZSBpbnRvIHRoZSB1c2Vy IHZpc2libGUgc3RhdGUKPiBhbmQgYWN0dWFsIGhhcmR3YXJlIHN0YXRlLiBUbyBwcmVwYXJlIGZv ciB0aGlzLCB3ZSBuZWVkIHNvbWUKPiBncm91bmQgcnVsZXMgd2hhdCBzaG91bGQgYmUgaW4gZWFj aCBzdGF0ZToKPiAKPiBJbiB1YXBpIHdlIHVzZToKPiAtIGNydGMsICpfY2hhbmdlZCBmbGFncywg ZXZlbnQsIGNvbW1pdCwgc3RhdGUsIG1vZGVfYmxvYiwKPiAgIChwbGFuZS9jb25uZWN0b3IvZW5j b2RlcilfbWFzay4KPiAKPiBJbiBodyBzdGF0ZSB3ZSB1c2Ugd2hhdCdzIGRpc3BsYXllZCBpbiBo YXJkd2FyZToKPiAtIGVuYWJsZSwgYWN0aXZlLCAoYWRqdXN0ZWQpIG1vZGUsIGNvbG9yIHByb3Bl cnR5IGJsb2JzLgo+IAo+IGNsZWFyX2ludGVsX2NydGNfc3RhdGUgYW5kIGh3IHJlYWRvdXQgbmVl ZCB0byBiZSB1cGRhdGVkIGZvciB0aGVzZSBydWxlcywKPiB3aGljaCB3aWxsIGFsbG93IHVzIHRv IGVuYWJsZSAyIGpvaW5lZCBwaXBlcy4KCkkgc3RpbGwgaGF2ZSBoYXJkIHRpbWUgd2l0aCByZWFk aW5nIHRoaXMgcGF0Y2guIEkgc3RpbGwgdGhpbmsgaXQKd291bGQgYmUgZWFzaWVyIHRvIHJlYWQg aWYgd2UgZGlkbid0IGRvIGJvdGggdGhlICJ1YXBpIiBhbmQgImh3IiBjaGFuZ2VzCmF0IHRoZSBz YW1lIHRpbWUuCgpzdGVwIDEuCglzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgdWFwaTsKCXN0cnVjdCB7 CgkJLy8gaHcgc3RhdGUKCX0gYmFzZTsKCnN0ZXAgMi4gCglzL2Jhc2UvaHcvCgpJIHRoaW5rIHRo YXQgd291bGQgbWFrZSBpdCBtb3JlIG9idmlvdXMgd2hpY2ggcGFydHMgb2YgdGhlIGNvZGUgYXJl Cmxvb2tpbmcgYXQgd2hpY2ggc3RhdGUuCgo+IAo+IE5vdGU6Cj4gLSBXaGVuIG1ha2luZyBjYWxs aW5nIGF0b21pY19jb21taXQoKSB5b3UgbmVlZCB0byBtYW5pcHVsYXRlIHRoZSB1YXBpCj4gICB2 YXJpYWJsZXMsIGF0b21pY19jaGVjaygpIHdpbGwgY29weSBpdCB0byBody4gVGhpcyBpcyBiZWNh dXNlIHlvdSdyZQo+ICAganVzdCBhbm90aGVyIGF0b21pYyBjbGllbnQuIE9mIGNvdXJzZSB5b3Ug Y2FuIHN0aWxsIGNoZWNrIGh3IG1lbWJlcnMKPiAgIGF0IHRoYXQgcG9pbnQgdG8gZGVjaWRlIGlm IGEgcGlwZSBpcyBhY3RpdmUuCj4gLSBJbiBnZW5lcmFsIHlvdSBzaG91bGQgbG9vayBhdCB0aGUg aHcgbWVtYmVycyB3aGVuIGF2YWlsYWJsZSwgdW5sZXNzCj4gICB0aGVyZSdzIGEgZ29vZCByZWFz b24gdG8gZG8gc29tZXRoaW5nIGVsc2UuCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5r aG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTog TWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMgICAgICAgIHwgIDE4ICstCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMgICB8ICAxNCArLQo+ICAuLi4vZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgIDYgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5jICAgIHwgIDEyICstCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYncuYyAgICAgICB8ICAgNCArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMgICAgfCAgMTYgKy0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jICAgIHwgMTgwICsrKy0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydC5jICAgICAgfCAgMjQgKy0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyAgICAgIHwgIDM0ICst Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8IDU0NCAr KysrKysrKystLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmggIHwgICA2ICstCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlf dHlwZXMuaCAgICB8ICAyOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RwLmMgICAgICAgfCAgNDIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kcF9tc3QuYyAgIHwgICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZHBpb19waHkuYyB8ICAxNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2RwbGxfbWdyLmMgfCAgMjAgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kdm8uYyAgICAgIHwgIDE0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZmJjLmMgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2hkbWkuYyAgICAgfCAgNjQgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfbHNwY29uLmMgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2x2ZHMuYyAgICAgfCAgMTIgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9wYW5lbC5jICAgIHwgIDE0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfcGlwZV9jcmMuYyB8ICAgNiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3Bzci5jICAgICAgfCAgMTAgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9zZHZvLmMgICAgIHwgIDIyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMgICB8ICAyNSArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3R2LmMgICAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF92ZHNjLmMgICAgIHwgIDEyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvdmx2X2RzaS5jICAgICAgICB8ICAyMCArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCAgMTQgKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYyAgICAgICAgICAgICAgIHwgMTcwICsrKy0tLQo+ICAzMSBmaWxlcyBj aGFuZ2VkLCA3MDAgaW5zZXJ0aW9ucygrKSwgNjY1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaWNsX2RzaS5jCj4gaW5kZXggNmUzOThjMzNhNTI0Li4wZTI0Yjhl MjU3ZTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNp LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYwo+IEBAIC0y NzYsNyArMjc2LDcgQEAgc3RhdGljIHZvaWQgY29uZmlndXJlX2R1YWxfbGlua19tb2RlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCWlmIChpbnRlbF9kc2ktPmR1YWxfbGlu ayA9PSBEU0lfRFVBTF9MSU5LX0ZST05UX0JBQ0spIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJCQkJJnBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGU7Cj4gKwkJCQkJJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJ CXUzMiBkc3NfY3RsMjsKPiAgCQl1MTYgaGFjdGl2ZSA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRp c3BsYXk7Cj4gIAkJdTE2IGRsX2J1ZmZlcl9kZXB0aDsKPiBAQCAtNjI1LDcgKzYyNSw3IEBAIGdl bjExX2RzaV9jb25maWd1cmVfdHJhbnNjb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShl bmNvZGVyLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNf dG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKPiArCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+dWFw aS5jcnRjKTsKPiAgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAgCXUzMiB0 bXA7Cj4gIAllbnVtIHBvcnQgcG9ydDsKPiBAQCAtNzY4LDcgKzc2OCw3IEBAIGdlbjExX2RzaV9z ZXRfdHJhbnNjb2Rlcl90aW1pbmdzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNp KCZlbmNvZGVyLT5iYXNlKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlID0KPiAtCQkJCQkmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAr CQkJCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAllbnVtIHBvcnQgcG9ydDsK PiAgCWVudW0gdHJhbnNjb2RlciBkc2lfdHJhbnM7Cj4gIAkvKiBob3Jpem9udGFsIHRpbWluZ3Mg Ki8KPiBAQCAtMTIxNiw3ICsxMjE2LDcgQEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX2dldF90aW1p bmdzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxf ZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiAgCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkJCQkmcGlwZV9jb25m aWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkJCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVk X21vZGU7Cj4gIAo+ICAJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rKSB7Cj4gIAkJYWRqdXN0ZWRf bW9kZS0+Y3J0Y19oZGlzcGxheSAqPSAyOwo+IEBAIC0xMjQyLDE2ICsxMjQyLDE2IEBAIHN0YXRp YyB2b2lkIGdlbjExX2RzaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAo+ICAJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9j b25maWctPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVs X2NydGMocGlwZV9jb25maWctPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRl bF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiAgCj4gIAkvKiBGSVhN RTogYWRhcHQgaWNsX2RkaV9jbG9ja19nZXQoKSBmb3IgRFNJIGFuZCB1c2UgdGhhdD8gKi8KPiAg CXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0KPiAgCQljbmxfY2FsY193cnBsbF9saW5rKGRldl9w cml2LCAmcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUpOwo+ICAKPiAtCXBpcGVfY29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IGludGVsX2RzaS0+cGNsazsKPiArCXBpcGVf Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBpbnRlbF9kc2ktPnBjbGs7Cj4g IAlpZiAoaW50ZWxfZHNpLT5kdWFsX2xpbmspCj4gLQkJcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX2Nsb2NrICo9IDI7Cj4gKwkJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21v ZGUuY3J0Y19jbG9jayAqPSAyOwo+ICAKPiAgCWdlbjExX2RzaV9nZXRfdGltaW5ncyhlbmNvZGVy LCBwaXBlX2NvbmZpZyk7Cj4gIAlwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzIHw9IEJJVChJTlRF TF9PVVRQVVRfRFNJKTsKPiBAQCAtMTI2NSwxMSArMTI2NSwxMSBAQCBzdGF0aWMgaW50IGdlbjEx X2RzaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCXN0 cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGNvbnRhaW5lcl9vZihlbmNvZGVyLCBzdHJ1Y3Qg aW50ZWxfZHNpLAo+ICAJCQkJCQkgICBiYXNlKTsKPiAgCXN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmludGVsX2Nvbm5lY3RvciA9IGludGVsX2RzaS0+YXR0YWNoZWRfY29ubmVjdG9yOwo+IC0Jc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT5iYXNlLmNy dGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29u ZmlnLT51YXBpLmNydGMpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmZpeGVk X21vZGUgPQo+ICAJCQkJCWludGVsX2Nvbm5lY3Rvci0+cGFuZWwuZml4ZWRfbW9kZTsKPiAgCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkJCQkmcGlwZV9jb25m aWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkJCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVk X21vZGU7Cj4gIAo+ICAJcGlwZV9jb25maWctPm91dHB1dF9mb3JtYXQgPSBJTlRFTF9PVVRQVVRf Rk9STUFUX1JHQjsKPiAgCWludGVsX2ZpeGVkX3BhbmVsX21vZGUoZml4ZWRfbW9kZSwgYWRqdXN0 ZWRfbW9kZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5j Cj4gaW5kZXggZTZjYjg1ZDQxYzhkLi43Y2YxM2I5YzdkMzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKPiBAQCAtMTg2LDEzICsxODYsMTQgQEAg aW50ZWxfZGlnaXRhbF9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpCj4gIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqCj4gIGludGVsX2NydGNf ZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiAgewo+ICsJY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0 ZShjcnRjLT5zdGF0ZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsK PiAgCj4gLQljcnRjX3N0YXRlID0ga21lbWR1cChjcnRjLT5zdGF0ZSwgc2l6ZW9mKCpjcnRjX3N0 YXRlKSwgR0ZQX0tFUk5FTCk7Cj4gKwljcnRjX3N0YXRlID0ga21lbWR1cChvbGRfY3J0Y19zdGF0 ZSwgc2l6ZW9mKCpjcnRjX3N0YXRlKSwgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAoIWNydGNfc3RhdGUp Cj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAo+IC0JX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxp Y2F0ZV9zdGF0ZShjcnRjLCAmY3J0Y19zdGF0ZS0+YmFzZSk7Cj4gKwlfX2RybV9hdG9taWNfaGVs cGVyX2NydGNfZHVwbGljYXRlX3N0YXRlKGNydGMsICZjcnRjX3N0YXRlLT51YXBpKTsKPiAgCj4g IAljcnRjX3N0YXRlLT51cGRhdGVfcGlwZSA9IGZhbHNlOwo+ICAJY3J0Y19zdGF0ZS0+ZGlzYWJs ZV9scF93bSA9IGZhbHNlOwo+IEBAIC0yMDQsNyArMjA1LDcgQEAgaW50ZWxfY3J0Y19kdXBsaWNh dGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJY3J0Y19zdGF0ZS0+ZmJfYml0cyA9 IDA7Cj4gIAljcnRjX3N0YXRlLT51cGRhdGVfcGxhbmVzID0gMDsKPiAgCj4gLQlyZXR1cm4gJmNy dGNfc3RhdGUtPmJhc2U7Cj4gKwlyZXR1cm4gJmNydGNfc3RhdGUtPnVhcGk7Cj4gIH0KPiAgCj4g IC8qKgo+IEBAIC0yMTksNyArMjIwLDEwIEBAIHZvaWQKPiAgaW50ZWxfY3J0Y19kZXN0cm95X3N0 YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq c3RhdGUpCj4gIHsKPiAtCWRybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZShjcnRj LCBzdGF0ZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IHRvX2lu dGVsX2NydGNfc3RhdGUoc3RhdGUpOwo+ICsKPiArCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19k ZXN0cm95X3N0YXRlKCZjcnRjX3N0YXRlLT51YXBpKTsKPiArCWtmcmVlKGNydGNfc3RhdGUpOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfc2V0dXBfc2NhbGVyKHN0cnVjdCBp bnRlbF9jcnRjX3NjYWxlcl9zdGF0ZSAqc2NhbGVyX3N0YXRlLAo+IEBAIC0zMTUsNyArMzE5LDcg QEAgaW50IGludGVsX2F0b21pY19zZXR1cF9zY2FsZXJzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgewo+ICAJc3RydWN0IGludGVsX2NydGNfc2NhbGVyX3N0YXRlICpzY2Fs ZXJfc3RhdGUgPQo+ICAJCSZjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGU7Cj4gLQlzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqZHJtX3N0YXRlID0gY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZTsKPiArCXN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpkcm1fc3RhdGUgPSBjcnRjX3N0YXRlLT51YXBpLnN0YXRl Owo+ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUgPSB0b19pbnRlbF9hdG9taWNf c3RhdGUoZHJtX3N0YXRlKTsKPiAgCWludCBudW1fc2NhbGVyc19uZWVkOwo+ICAJaW50IGk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3Bs YW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5j Cj4gaW5kZXggNGVhYWIwZGU5OGJmLi5jYTgyMTY3ZDRjZTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiBAQCAtMjcxLDcg KzI3MSw3IEBAIHZvaWQgaW50ZWxfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUsCj4gIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpOwo+ICAKPiAgCXRyYWNlX2ludGVsX3VwZGF0ZV9wbGFuZSgmcGxhbmUt PmJhc2UsIGNydGMpOwo+ICAJcGxhbmUtPnVwZGF0ZV9wbGFuZShwbGFuZSwgY3J0Y19zdGF0ZSwg cGxhbmVfc3RhdGUpOwo+IEBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBpbnRlbF91cGRhdGVfc2xh dmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCQkJY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAo+ICAJdHJhY2Vf aW50ZWxfdXBkYXRlX3BsYW5lKCZwbGFuZS0+YmFzZSwgY3J0Yyk7Cj4gIAlwbGFuZS0+dXBkYXRl X3NsYXZlKHBsYW5lLCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gQEAgLTI5MCw3ICsyOTAs NyBAQCB2b2lkIGludGVsX3VwZGF0ZV9zbGF2ZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ ICB2b2lkIGludGVsX2Rpc2FibGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAg CQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpOwo+ICAKPiAgCXRyYWNlX2ludGVsX2Rpc2FibGVfcGxhbmUoJnBsYW5l LT5iYXNlLCBjcnRjKTsKPiAgCXBsYW5lLT5kaXNhYmxlX3BsYW5lKHBsYW5lLCBjcnRjX3N0YXRl KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRp by5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5jCj4gaW5kZXgg NTQ2MzhkOTllMDIxLi4xOWIyYWY0YjlmODEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9hdWRpby5jCj4gQEAgLTIzMyw3ICsyMzMsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGhkbWlfYXVkX25jdHMgaGRtaV9hdWRfbmN0c18zNmJwcFtdID0gewo+ICBzdGF0aWMg dTMyIGF1ZGlvX2NvbmZpZ19oZG1pX3BpeGVsX2Nsb2NrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsK PiArCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCWludCBpOwo+ICAKPiAgCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGhkbWlfYXVkaW9fY2xvY2spOyBpKyspIHsKPiBAQCAt NTU0LDcgKzU1NCw3IEBAIHN0YXRpYyB2b2lkIGlsa19hdWRpb19jb2RlY19kaXNhYmxlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPmJhc2UuY3J0 Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMob2xkX2NydGNf c3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAll bnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7Cj4gIAl1MzIgdG1wLCBlbGR2Owo+IEBAIC02 MDEsNyArNjAxLDcgQEAgc3RhdGljIHZvaWQgaWxrX2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0 Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0ZS0+Y29u bmVjdG9yOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJZW51bSBwb3J0IHBv cnQgPSBlbmNvZGVyLT5wb3J0Owo+IEBAIC02OTEsMTAgKzY5MSwxMCBAQCB2b2lkIGludGVsX2F1 ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgewo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7Cj4gIAlzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gZGV2X3ByaXYt PmF1ZGlvX2NvbXBvbmVudDsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0ZS0+Y29ubmVjdG9yOwo+ICAJY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZjcnRjX3N0YXRlLT5i YXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4g IAllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNy dGMtPnBpcGU7Cj4gIAo+IEBAIC03NTIsNyArNzUyLDcgQEAgdm9pZCBpbnRlbF9hdWRpb19jb2Rl Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK PiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCAqYWNvbXAgPSBkZXZfcHJpdi0+YXVkaW9f Y29tcG9uZW50Owo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG9s ZF9jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJZW51bSBwb3J0IHBv cnQgPSBlbmNvZGVyLT5wb3J0Owo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9idy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9idy5jCj4gaW5kZXggMjJlODNmODU3 ZGU4Li4zZjZlMjlmNjEzMjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9idy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9idy5jCj4gQEAgLTI5Nyw3ICsyOTcsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2J3 X2NydGNfbnVtX2FjdGl2ZV9wbGFuZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdAo+ICAK PiAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9id19jcnRjX2RhdGFfcmF0ZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRj KTsKPiAgCXVuc2lnbmVkIGludCBkYXRhX3JhdGUgPSAwOwo+ICAJZW51bSBwbGFuZV9pZCBwbGFu ZV9pZDsKPiAgCj4gQEAgLTMxOCw3ICszMTgsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVs X2J3X2NydGNfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjXwo+ ICB2b2lkIGludGVsX2J3X2NydGNfdXBkYXRlKHN0cnVjdCBpbnRlbF9id19zdGF0ZSAqYndfc3Rh dGUsCj4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4g IHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAo+ICAJYndfc3RhdGUtPmRhdGFfcmF0ZVtjcnRj LT5waXBlXSA9Cj4gIAkJaW50ZWxfYndfY3J0Y19kYXRhX3JhdGUoY3J0Y19zdGF0ZSk7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuYwo+IGluZGV4IDQyYmQwMjYz OGQzMi4uZTdlOTUyZjBlYWMwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfY2RjbGsuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfY2RjbGsuYwo+IEBAIC0xOTE3LDEwICsxOTE3LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxf cGl4ZWxfcmF0ZV90b19jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IGludCBpbnRlbF9jcnRjX2NvbXB1dGVfbWluX2NkY2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPQo+IC0JCXRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJCXRv X2k5MTUoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwo+ICAJaW50IG1pbl9jZGNsazsKPiAg Cj4gLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQo+ICsJaWYgKCFjcnRjX3N0YXRlLT5o dy5lbmFibGUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJbWluX2NkY2xrID0gaW50ZWxfcGl4ZWxf cmF0ZV90b19jZGNsayhkZXZfcHJpdiwgY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZSk7Cj4gQEAgLTIw NDMsNyArMjA0Myw3IEBAIHN0YXRpYyB1OCBieHRfY29tcHV0ZV9taW5fdm9sdGFnZV9sZXZlbChz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCSAgICAgICBzaXplb2Yoc3RhdGUt Pm1pbl92b2x0YWdlX2xldmVsKSk7Cj4gIAo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiAtCQlpZiAoY3J0Y19zdGF0ZS0+ YmFzZS5lbmFibGUpCj4gKwkJaWYgKGNydGNfc3RhdGUtPmh3LmVuYWJsZSkKPiAgCQkJc3RhdGUt Pm1pbl92b2x0YWdlX2xldmVsW2ldID0KPiAgCQkJCWNydGNfc3RhdGUtPm1pbl92b2x0YWdlX2xl dmVsOwo+ICAJCWVsc2UKPiBAQCAtMjEyOSw3ICsyMTI5LDcgQEAgc3RhdGljIGludCBza2xfZHBs bDBfdmNvKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCXZjbyA9IGRldl9w cml2LT5za2xfcHJlZmVycmVkX3Zjb19mcmVxOwo+ICAKPiAgCWZvcl9lYWNoX25ld19pbnRlbF9j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gLQkJaWYgKCFjcnRj X3N0YXRlLT5iYXNlLmVuYWJsZSkKPiArCQlpZiAoIWNydGNfc3RhdGUtPmh3LmVuYWJsZSkKPiAg CQkJY29udGludWU7Cj4gIAo+ICAJCWlmICghaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRl LCBJTlRFTF9PVVRQVVRfRURQKSkKPiBAQCAtMjI1NiwxMSArMjI1NiwxMSBAQCBzdGF0aWMgaW50 IGludGVsX21vZGVzZXRfYWxsX3BpcGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl KQo+ICAJCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCj4gIAkJCXJldHVybiBQVFJfRVJSKGNydGNf c3RhdGUpOwo+ICAKPiAtCQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlIHx8Cj4gLQkJICAg IGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZjcnRjX3N0YXRlLT5iYXNlKSkKPiArCQlp ZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fAo+ICsJCSAgICBkcm1fYXRvbWljX2NydGNfbmVl ZHNfbW9kZXNldCgmY3J0Y19zdGF0ZS0+dWFwaSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlj cnRjX3N0YXRlLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gKwkJY3J0Y19zdGF0ZS0+dWFw aS5tb2RlX2NoYW5nZWQgPSB0cnVlOwo+ICAKPiAgCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZl Y3RlZF9jb25uZWN0b3JzKCZzdGF0ZS0+YmFzZSwKPiAgCQkJCQkJCSAmY3J0Yy0+YmFzZSk7Cj4g QEAgLTIzMTMsNyArMjMxMyw3IEBAIGludCBpbnRlbF9tb2Rlc2V0X2NhbGNfY2RjbGsoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJY3J0YyA9IGludGVsX2dldF9jcnRjX2Zv cl9waXBlKGRldl9wcml2LCBwaXBlKTsKPiAgCQljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dl dF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gIAkJaWYgKGNydGNfc3RhdGUgJiYKPiAt CQkgICAgZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoJmNydGNfc3RhdGUtPmJhc2UpKQo+ ICsJCSAgICBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmY3J0Y19zdGF0ZS0+dWFwaSkp Cj4gIAkJCXBpcGUgPSBJTlZBTElEX1BJUEU7Cj4gIAl9IGVsc2Ugewo+ICAJCXBpcGUgPSBJTlZB TElEX1BJUEU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfY29sb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYwo+ IGluZGV4IDFlM2E2MjNlYWY4Mi4uNzAzZTVlNzBiNGU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfY29sb3IuYwo+IEBAIC0xMTcsMTAgKzExNywxMCBAQCBzdGF0 aWMgYm9vbCBsdXRfaXNfbGVnYWN5KGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqbHV0 KQo+ICAKPiAgc3RhdGljIGJvb2wgY3J0Y19zdGF0ZV9pc19sZWdhY3lfZ2FtbWEoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXJldHVybiAhY3J0Y19z dGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCAmJgo+IC0JCSFjcnRjX3N0YXRlLT5iYXNlLmN0bSAmJgo+ IC0JCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ICYmCj4gLQkJbHV0X2lzX2xlZ2FjeShjcnRj X3N0YXRlLT5iYXNlLmdhbW1hX2x1dCk7Cj4gKwlyZXR1cm4gIWNydGNfc3RhdGUtPmh3LmRlZ2Ft bWFfbHV0ICYmCj4gKwkJIWNydGNfc3RhdGUtPmh3LmN0bSAmJgo+ICsJCWNydGNfc3RhdGUtPmh3 LmdhbW1hX2x1dCAmJgo+ICsJCWx1dF9pc19sZWdhY3koY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0 KTsKPiAgfQo+ICAKPiAgLyoKPiBAQCAtMjA1LDcgKzIwNSw3IEBAIHN0YXRpYyB2b2lkIGljbF91 cGRhdGVfb3V0cHV0X2NzYyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIHN0YXRpYyBi b29sIGlsa19jc2NfbGltaXRlZF9yYW5nZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsK PiAgCj4gIAkvKgo+ICAJICogRklYTUUgaWYgdGhlcmUncyBhIGdhbW1hIExVVCBhZnRlciB0aGUg Q1NDLCB3ZSBzaG91bGQKPiBAQCAtMjE5LDcgKzIxOSw3IEBAIHN0YXRpYyBib29sIGlsa19jc2Nf bGltaXRlZF9yYW5nZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK PiAgc3RhdGljIHZvaWQgaWxrX2NzY19jb252ZXJ0X2N0bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCXUxNiBjb2VmZnNbOV0pCj4gIHsKPiAtCWNvbnN0 IHN0cnVjdCBkcm1fY29sb3JfY3RtICpjdG0gPSBjcnRjX3N0YXRlLT5iYXNlLmN0bS0+ZGF0YTsK PiArCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfY3RtICpjdG0gPSBjcnRjX3N0YXRlLT5ody5jdG0t PmRhdGE7Cj4gIAljb25zdCB1NjQgKmlucHV0Owo+ICAJdTY0IHRlbXBbOV07Cj4gIAlpbnQgaTsK PiBAQCAtMjcwLDExICsyNzAsMTEgQEAgc3RhdGljIHZvaWQgaWxrX2NzY19jb252ZXJ0X2N0bShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIHN0YXRpYyB2 b2lkIGlsa19sb2FkX2NzY19tYXRyaXgoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWJvb2wgbGlt aXRlZF9jb2xvcl9yYW5nZSA9IGlsa19jc2NfbGltaXRlZF9yYW5nZShjcnRjX3N0YXRlKTsKPiAg Cj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5jdG0pIHsKPiArCWlmIChjcnRjX3N0YXRlLT5ody5j dG0pIHsKPiAgCQl1MTYgY29lZmZbOV07Cj4gIAo+ICAJCWlsa19jc2NfY29udmVydF9jdG0oY3J0 Y19zdGF0ZSwgY29lZmYpOwo+IEBAIC0zMDksMTAgKzMwOSwxMCBAQCBzdGF0aWMgdm9pZCBpbGtf bG9hZF9jc2NfbWF0cml4KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+ICAKPiAgc3RhdGljIHZvaWQgaWNsX2xvYWRfY3NjX21hdHJpeChjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwo+ICAKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmN0bSkgewo+ICsJaWYgKGNydGNfc3Rh dGUtPmh3LmN0bSkgewo+ICAJCXUxNiBjb2VmZls5XTsKPiAgCj4gIAkJaWxrX2NzY19jb252ZXJ0 X2N0bShjcnRjX3N0YXRlLCBjb2VmZik7Cj4gQEAgLTMzOCwxMiArMzM4LDEyIEBAIHN0YXRpYyB2 b2lkIGljbF9sb2FkX2NzY19tYXRyaXgoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCj4gICAqLwo+ICBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2xvYWRfY3NjX21hdHJp eChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0 Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ ICAKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmN0bSkgewo+IC0JCWNvbnN0IHN0cnVjdCBkcm1f Y29sb3JfY3RtICpjdG0gPSBjcnRjX3N0YXRlLT5iYXNlLmN0bS0+ZGF0YTsKPiArCWlmIChjcnRj X3N0YXRlLT5ody5jdG0pIHsKPiArCQljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAqY3RtID0g Y3J0Y19zdGF0ZS0+aHcuY3RtLT5kYXRhOwo+ICAJCXUxNiBjb2VmZnNbOV0gPSB7fTsKPiAgCQlp bnQgaTsKPiAgCj4gQEAgLTQwNCw3ICs0MDQsNyBAQCBzdGF0aWMgdTMyIGlsa19sdXRfMTAoY29u c3Qgc3RydWN0IGRybV9jb2xvcl9sdXQgKmNvbG9yKQo+ICBzdGF0aWMgdm9pZCBpOXh4X2xvYWRf bHV0c19pbnRlcm5hbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IpCj4gIHsKPiAt CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNl LmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlw ZTsKPiAgCWludCBpOwo+IEBAIC00MzUsMTIgKzQzNSwxMiBAQCBzdGF0aWMgdm9pZCBpOXh4X2xv YWRfbHV0c19pbnRlcm5hbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCj4gIHN0YXRpYyB2b2lkIGk5eHhfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChj cnRjX3N0YXRlLCBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCk7Cj4gKwlpOXh4X2xvYWRfbHV0 c19pbnRlcm5hbChjcnRjX3N0YXRlLCBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQpOwo+ICB9Cj4g IAo+ICBzdGF0aWMgdm9pZCBpOXh4X2NvbG9yX2NvbW1pdChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJdTMyIHZhbDsKPiBAQCAtNDUzLDcg KzQ1Myw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfY29sb3JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAKPiAgc3RhdGljIHZvaWQgaWxrX2NvbG9yX2Nv bW1pdChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0J c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2Uu Y3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBl Owo+ICAJdTMyIHZhbDsKPiBAQCAtNDY4LDcgKzQ2OCw3IEBAIHN0YXRpYyB2b2lkIGlsa19jb2xv cl9jb21taXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAo+ ICBzdGF0aWMgdm9pZCBoc3dfY29sb3JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAo+ ICAJSTkxNV9XUklURShHQU1NQV9NT0RFKGNydGMtPnBpcGUpLCBjcnRjX3N0YXRlLT5nYW1tYV9t b2RlKTsKPiBAQCAtNDc4LDcgKzQ3OCw3IEBAIHN0YXRpYyB2b2lkIGhzd19jb2xvcl9jb21taXQo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAo+ICBzdGF0aWMg dm9pZCBza2xfY29sb3JfY29tbWl0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7Cj4gIAl1MzIgdmFsID0gMDsKPiBAQCAtNTI0LDggKzUyNCw4IEBA IHN0YXRpYyB2b2lkIGk5NjVfbG9hZF9sdXRfMTBwNihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK PiAgCj4gIHN0YXRpYyB2b2lkIGk5NjVfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1f cHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQ7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFw aS5jcnRjKTsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0g Y3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0Owo+ICAKPiAgCWlmIChjcnRjX3N0YXRlLT5nYW1tYV9t b2RlID09IEdBTU1BX01PREVfTU9ERV84QklUKQo+ICAJCWk5eHhfbG9hZF9sdXRzKGNydGNfc3Rh dGUpOwo+IEBAIC01NDcsOCArNTQ3LDggQEAgc3RhdGljIHZvaWQgaWxrX2xvYWRfbHV0XzEwKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAKPiAgc3RhdGljIHZvaWQgaWxrX2xvYWRfbHV0cyhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7 Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3Rh dGUtPmJhc2UuZ2FtbWFfbHV0Owo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKPiAgCj4gIAlp ZiAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkKPiAgCQlp OXh4X2xvYWRfbHV0cyhjcnRjX3N0YXRlKTsKPiBAQCAtNjU0LDkgKzY1NCw5IEBAIHN0YXRpYyB2 b2lkIGl2Yl9sb2FkX2x1dF9leHRfbWF4KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICAKPiAg c3RhdGljIHZvaWQgaXZiX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5 X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+IC0JY29uc3Qg c3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2Uu ZGVnYW1tYV9sdXQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxv YiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0Owo+ICsJY29uc3Qgc3RydWN0 IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFf bHV0Owo+ICAKPiAgCWlmIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9E RV84QklUKSB7Cj4gIAkJaTl4eF9sb2FkX2x1dHMoY3J0Y19zdGF0ZSk7Cj4gQEAgLTY3Nyw5ICs2 NzcsOSBAQCBzdGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ICAKPiAgc3RhdGljIHZvaWQgYmR3X2xvYWRfbHV0cyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4g LQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUt PmJhc2UuZ2FtbWFfbHV0Owo+IC0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdh bW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQ7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiArCWNv bnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcu Z2FtbWFfbHV0Owo+ICsJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1 dCA9IGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0Owo+ICAKPiAgCWlmIChjcnRjX3N0YXRlLT5n YW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV84QklUKSB7Cj4gIAkJaTl4eF9sb2FkX2x1dHMo Y3J0Y19zdGF0ZSk7Cj4gQEAgLTcwMCwxMSArNzAwLDExIEBAIHN0YXRpYyB2b2lkIGJkd19sb2Fk X2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAo+ICBz dGF0aWMgdm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJ ZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJY29uc3QgdTMyIGx1dF9zaXplID0gSU5U RUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemU7Cj4gLQljb25zdCBzdHJ1 Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dC0+ZGF0 YTsKPiArCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBjcnRjX3N0YXRlLT5ody5k ZWdhbW1hX2x1dC0+ZGF0YTsKPiAgCXUzMiBpOwo+ICAKPiAgCS8qCj4gQEAgLTczOSw3ICs3Mzks NyBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dChjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCj4gIHN0YXRpYyB2b2lkIGdsa19sb2FkX2RlZ2Ft bWFfbHV0X2xpbmVhcihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK PiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3Rh dGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBj cnRjLT5waXBlOwo+ICAJY29uc3QgdTMyIGx1dF9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdikt PmNvbG9yLmRlZ2FtbWFfbHV0X3NpemU7Cj4gQEAgLTc2Niw4ICs3NjYsOCBAQCBzdGF0aWMgdm9p ZCBnbGtfbG9hZF9kZWdhbW1hX2x1dF9saW5lYXIoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdAo+ICAKPiAgc3RhdGljIHZvaWQgZ2xrX2xvYWRfbHV0cyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5i YXNlLmNydGMpOwo+ICsJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQg PSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCj4gIAkvKgo+ICAJICog T24gR0xLKyBib3RoIHBpcGUgQ1NDIGFuZCBkZWdhbW1hIExVVCBhcmUgY29udHJvbGxlZAo+IEBA IC03NzcsNyArNzc3LDcgQEAgc3RhdGljIHZvaWQgZ2xrX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCSAqIHRoZSBkZWdhbWEgTFVUIHNvIHRo YXQgd2UgZG9uJ3QgaGF2ZSB0byByZWxvYWQKPiAgCSAqIGl0IGV2ZXJ5IHRpbWUgdGhlIHBpcGUg Q1NDIGlzIGJlaW5nIGVuYWJsZWQuCj4gIAkgKi8KPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmRl Z2FtbWFfbHV0KQo+ICsJaWYgKGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0KQo+ICAJCWdsa19s b2FkX2RlZ2FtbWFfbHV0KGNydGNfc3RhdGUpOwo+ICAJZWxzZQo+ICAJCWdsa19sb2FkX2RlZ2Ft bWFfbHV0X2xpbmVhcihjcnRjX3N0YXRlKTsKPiBAQCAtODA4LDcgKzgwOCw3IEBAIHN0YXRpYyB2 b2lkCj4gIGljbF9sb2FkX2djbWF4KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ICAJICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpjb2xvcikKPiAg ewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVs X2RzYl9nZXQoY3J0Yyk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAo+IEBA IC04MjIsOCArODIyLDggQEAgaWNsX2xvYWRfZ2NtYXgoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyB2b2lkCj4gIGljbF9wcm9ncmFtX2dhbW1hX3N1 cGVyZmluZV9zZWdtZW50KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxv YiA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+ICsJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gKwljb25zdCBzdHJ1 Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7Cj4g IAljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gYmxvYi0+ZGF0YTsKPiAgCXN0cnVj dCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2RzYl9nZXQoY3J0Yyk7Cj4gIAllbnVtIHBpcGUgcGlw ZSA9IGNydGMtPnBpcGU7Cj4gQEAgLTg1NCw4ICs4NTQsOCBAQCBpY2xfcHJvZ3JhbV9nYW1tYV9z dXBlcmZpbmVfc2VnbWVudChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiAgc3RhdGljIHZvaWQKPiAgaWNsX3Byb2dyYW1fZ2FtbWFfbXVsdGlfc2VnbWVudChjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4g LQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBjcnRjX3N0YXRlLT5iYXNl LmdhbW1hX2x1dDsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICsJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9i ICpibG9iID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0Owo+ICAJY29uc3Qgc3RydWN0IGRybV9j b2xvcl9sdXQgKmx1dCA9IGJsb2ItPmRhdGE7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1 dCAqZW50cnk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHNiICpkc2IgPSBpbnRlbF9kc2JfZ2V0KGNydGMp Owo+IEBAIC05MTAsMTEgKzkxMCwxMSBAQCBpY2xfcHJvZ3JhbV9nYW1tYV9tdWx0aV9zZWdtZW50 KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAKPiAgc3RhdGlj IHZvaWQgaWNsX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQg PSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJY29uc3Qgc3RydWN0 IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2RzYl9nZXQoY3J0 Yyk7Cj4gIAo+IC0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCj4gKwlpZiAoY3J0 Y19zdGF0ZS0+aHcuZGVnYW1tYV9sdXQpCj4gIAkJZ2xrX2xvYWRfZGVnYW1tYV9sdXQoY3J0Y19z dGF0ZSk7Cj4gIAo+ICAJc3dpdGNoIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlICYgR0FNTUFfTU9E RV9NT0RFX01BU0spIHsKPiBAQCAtOTkwLDkgKzk5MCw5IEBAIHN0YXRpYyB2b2lkIGNodl9sb2Fk X2NnbV9nYW1tYShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIHN0YXRpYyB2b2lkIGNo dl9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4g IHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT5iYXNlLmNydGMpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9s dXQgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fcHJv cGVydHlfYmxvYiAqZGVnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0Owo+ ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVh cGkuY3J0Yyk7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9 IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlf YmxvYiAqZGVnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5ody5kZWdhbW1hX2x1dDsKPiAgCj4gIAlj aGVycnl2aWV3X2xvYWRfY3NjX21hdHJpeChjcnRjX3N0YXRlKTsKPiAgCj4gQEAgLTEwMTAsMjgg KzEwMTAsMjggQEAgc3RhdGljIHZvaWQgY2h2X2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCj4gIHZvaWQgaW50ZWxfY29sb3JfbG9hZF9sdXRz KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2Uu Y3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwo+ICAKPiAgCWRldl9wcml2LT5kaXNwbGF5 LmxvYWRfbHV0cyhjcnRjX3N0YXRlKTsKPiAgfQo+ICAKPiAgdm9pZCBpbnRlbF9jb2xvcl9jb21t aXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gIAo+ICAJZGV2X3ByaXYtPmRpc3Bs YXkuY29sb3JfY29tbWl0KGNydGNfc3RhdGUpOwo+ICB9Cj4gIAo+ICBpbnQgaW50ZWxfY29sb3Jf Y2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gIAo+ICAJcmV0dXJuIGRldl9wcml2LT5k aXNwbGF5LmNvbG9yX2NoZWNrKGNydGNfc3RhdGUpOwo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX2Nv bG9yX2dldF9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gIAo+ICAJaWYgKGRldl9w cml2LT5kaXNwbGF5LnJlYWRfbHV0cykKPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5yZWFkX2x1dHMo Y3J0Y19zdGF0ZSk7Cj4gQEAgLTEwNTUsMTYgKzEwNTUsMTYgQEAgc3RhdGljIGJvb2wgbmVlZF9w bGFuZV91cGRhdGUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgc3RhdGljIGludAo+ICBp bnRlbF9jb2xvcl9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpu ZXdfY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKG5ld19jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7 Cj4gIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9Cj4gLQkJdG9faW50ZWxfYXRv bWljX3N0YXRlKG5ld19jcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiArCQl0b19pbnRlbF9hdG9t aWNfc3RhdGUobmV3X2NydGNfc3RhdGUtPnVhcGkuc3RhdGUpOwo+ICAJY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlID0KPiAgCQlpbnRlbF9hdG9taWNfZ2V0X29s ZF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7 Cj4gIAo+IC0JaWYgKCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgfHwKPiAtCSAgICBkcm1f YXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmbmV3X2NydGNfc3RhdGUtPmJhc2UpKQo+ICsJaWYg KCFuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlIHx8Cj4gKwkgICAgZHJtX2F0b21pY19jcnRjX25l ZWRzX21vZGVzZXQoJm5ld19jcnRjX3N0YXRlLT51YXBpKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4g IAlpZiAobmV3X2NydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSA9PSBvbGRfY3J0Y19zdGF0ZS0+Z2Ft bWFfZW5hYmxlICYmCj4gQEAgLTExMDcsOSArMTEwNyw5IEBAIHN0YXRpYyBpbnQgY2hlY2tfbHV0 X3NpemUoY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpsdXQsIGludCBleHBlY3RlZCkK PiAgCj4gIHN0YXRpYyBpbnQgY2hlY2tfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gLQljb25zdCBzdHJ1Y3Qg ZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0 Owo+IC0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9IGNydGNf c3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQ7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPiArCWNvbnN0IHN0 cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFf bHV0Owo+ICsJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9IGNy dGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0Owo+ICAJaW50IGdhbW1hX2xlbmd0aCwgZGVnYW1tYV9s ZW5ndGg7Cj4gIAl1MzIgZ2FtbWFfdGVzdHMsIGRlZ2FtbWFfdGVzdHM7Cj4gIAo+IEBAIC0xMTU3 LDcgKzExNTcsNyBAQCBzdGF0aWMgaW50IGk5eHhfY29sb3JfY2hlY2soc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gIAljcnRjX3N0YXRl LT5nYW1tYV9lbmFibGUgPQo+IC0JCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ICYmCj4gKwkJ Y3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0ICYmCj4gIAkJIWNydGNfc3RhdGUtPmM4X3BsYW5lczsK PiAgCj4gIAljcnRjX3N0YXRlLT5nYW1tYV9tb2RlID0gaTl4eF9nYW1tYV9tb2RlKGNydGNfc3Rh dGUpOwo+IEBAIC0xMTc2LDExICsxMTc2LDExIEBAIHN0YXRpYyB1MzIgY2h2X2NnbV9tb2RlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJaWYgKGNydGNfc3Rh dGVfaXNfbGVnYWN5X2dhbW1hKGNydGNfc3RhdGUpKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCWlm IChjcnRjX3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0KQo+ICsJaWYgKGNydGNfc3RhdGUtPmh3LmRl Z2FtbWFfbHV0KQo+ICAJCWNnbV9tb2RlIHw9IENHTV9QSVBFX01PREVfREVHQU1NQTsKPiAtCWlm IChjcnRjX3N0YXRlLT5iYXNlLmN0bSkKPiArCWlmIChjcnRjX3N0YXRlLT5ody5jdG0pCj4gIAkJ Y2dtX21vZGUgfD0gQ0dNX1BJUEVfTU9ERV9DU0M7Cj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5n YW1tYV9sdXQpCj4gKwlpZiAoY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0KQo+ICAJCWNnbV9tb2Rl IHw9IENHTV9QSVBFX01PREVfR0FNTUE7Cj4gIAo+ICAJcmV0dXJuIGNnbV9tb2RlOwo+IEBAIC0x MjU0LDcgKzEyNTQsNyBAQCBzdGF0aWMgaW50IGlsa19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCWNydGNfc3Rh dGUtPmdhbW1hX2VuYWJsZSA9Cj4gLQkJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgJiYKPiAr CQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgJiYKPiAgCQkhY3J0Y19zdGF0ZS0+YzhfcGxhbmVz Owo+ICAKPiAgCS8qCj4gQEAgLTEyODAsOCArMTI4MCw4IEBAIHN0YXRpYyB1MzIgaXZiX2dhbW1h X21vZGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlpZiAo IWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSB8fAo+ICAJICAgIGNydGNfc3RhdGVfaXNfbGVnYWN5 X2dhbW1hKGNydGNfc3RhdGUpKQo+ICAJCXJldHVybiBHQU1NQV9NT0RFX01PREVfOEJJVDsKPiAt CWVsc2UgaWYgKGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ICYmCj4gLQkJIGNydGNfc3RhdGUt PmJhc2UuZGVnYW1tYV9sdXQpCj4gKwllbHNlIGlmIChjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQg JiYKPiArCQkgY3J0Y19zdGF0ZS0+aHcuZGVnYW1tYV9sdXQpCj4gIAkJcmV0dXJuIEdBTU1BX01P REVfTU9ERV9TUExJVDsKPiAgCWVsc2UKPiAgCQlyZXR1cm4gR0FNTUFfTU9ERV9NT0RFXzEwQklU Owo+IEBAIC0xMjk1LDcgKzEyOTUsNyBAQCBzdGF0aWMgdTMyIGl2Yl9jc2NfbW9kZShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCSAqIENTQyBjb21lcyBhZnRl ciB0aGUgTFVUIGluIGRlZ2FtbWEsIFJHQi0+WUNiQ3IsCj4gIAkgKiBhbmQgUkdCIGZ1bGwtPmxp bWl0ZWQgcmFuZ2UgbW9kZS4KPiAgCSAqLwo+IC0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1t YV9sdXQgfHwKPiArCWlmIChjcnRjX3N0YXRlLT5ody5kZWdhbW1hX2x1dCB8fAo+ICAJICAgIGNy dGNfc3RhdGUtPm91dHB1dF9mb3JtYXQgIT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9SR0IgfHwKPiAg CSAgICBsaW1pdGVkX2NvbG9yX3JhbmdlKQo+ICAJCXJldHVybiAwOwo+IEBAIC0xMzEzLDEzICsx MzEzLDEzIEBAIHN0YXRpYyBpbnQgaXZiX2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+ICAJY3J0Y19zdGF0ZS0+Z2Ft bWFfZW5hYmxlID0KPiAtCQkoY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgfHwKPiAtCQkgY3J0 Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkgJiYKPiArCQkoY3J0Y19zdGF0ZS0+aHcuZ2FtbWFf bHV0IHx8Cj4gKwkJIGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0KSAmJgo+ICAJCSFjcnRjX3N0 YXRlLT5jOF9wbGFuZXM7Cj4gIAo+ICAJY3J0Y19zdGF0ZS0+Y3NjX2VuYWJsZSA9Cj4gIAkJY3J0 Y19zdGF0ZS0+b3V0cHV0X2Zvcm1hdCAhPSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQiB8fAo+IC0J CWNydGNfc3RhdGUtPmJhc2UuY3RtIHx8IGxpbWl0ZWRfY29sb3JfcmFuZ2U7Cj4gKwkJY3J0Y19z dGF0ZS0+aHcuY3RtIHx8IGxpbWl0ZWRfY29sb3JfcmFuZ2U7Cj4gIAo+ICAJY3J0Y19zdGF0ZS0+ Z2FtbWFfbW9kZSA9IGl2Yl9nYW1tYV9tb2RlKGNydGNfc3RhdGUpOwo+ICAKPiBAQCAtMTM1MCwx NCArMTM1MCwxNCBAQCBzdGF0aWMgaW50IGdsa19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCWNydGNfc3RhdGUt PmdhbW1hX2VuYWJsZSA9Cj4gLQkJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgJiYKPiArCQlj cnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgJiYKPiAgCQkhY3J0Y19zdGF0ZS0+YzhfcGxhbmVzOwo+ ICAKPiAgCS8qIE9uIEdMSysgZGVnYW1tYSBMVVQgaXMgY29udHJvbGxlZCBieSBjc2NfZW5hYmxl ICovCj4gIAljcnRjX3N0YXRlLT5jc2NfZW5hYmxlID0KPiAtCQljcnRjX3N0YXRlLT5iYXNlLmRl Z2FtbWFfbHV0IHx8Cj4gKwkJY3J0Y19zdGF0ZS0+aHcuZGVnYW1tYV9sdXQgfHwKPiAgCQljcnRj X3N0YXRlLT5vdXRwdXRfZm9ybWF0ICE9IElOVEVMX09VVFBVVF9GT1JNQVRfUkdCIHx8Cj4gLQkJ Y3J0Y19zdGF0ZS0+YmFzZS5jdG0gfHwgY3J0Y19zdGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5nZTsK PiArCQljcnRjX3N0YXRlLT5ody5jdG0gfHwgY3J0Y19zdGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5n ZTsKPiAgCj4gIAljcnRjX3N0YXRlLT5nYW1tYV9tb2RlID0gZ2xrX2dhbW1hX21vZGUoY3J0Y19z dGF0ZSk7Cj4gIAo+IEBAIC0xMzc0LDE0ICsxMzc0LDE0IEBAIHN0YXRpYyB1MzIgaWNsX2dhbW1h X21vZGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAg CXUzMiBnYW1tYV9tb2RlID0gMDsKPiAgCj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1h X2x1dCkKPiArCWlmIChjcnRjX3N0YXRlLT5ody5kZWdhbW1hX2x1dCkKPiAgCQlnYW1tYV9tb2Rl IHw9IFBSRV9DU0NfR0FNTUFfRU5BQkxFOwo+ICAKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmdh bW1hX2x1dCAmJgo+ICsJaWYgKGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dCAmJgo+ICAJICAgICFj cnRjX3N0YXRlLT5jOF9wbGFuZXMpCj4gIAkJZ2FtbWFfbW9kZSB8PSBQT1NUX0NTQ19HQU1NQV9F TkFCTEU7Cj4gIAo+IC0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCB8fAo+ICsJaWYg KCFjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgfHwKPiAgCSAgICBjcnRjX3N0YXRlX2lzX2xlZ2Fj eV9nYW1tYShjcnRjX3N0YXRlKSkKPiAgCQlnYW1tYV9tb2RlIHw9IEdBTU1BX01PREVfTU9ERV84 QklUOwo+ICAJZWxzZQo+IEBAIC0xMzk0LDcgKzEzOTQsNyBAQCBzdGF0aWMgdTMyIGljbF9jc2Nf bW9kZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJ dTMyIGNzY19tb2RlID0gMDsKPiAgCj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5jdG0pCj4gKwlp ZiAoY3J0Y19zdGF0ZS0+aHcuY3RtKQo+ICAJCWNzY19tb2RlIHw9IElDTF9DU0NfRU5BQkxFOwo+ ICAKPiAgCWlmIChjcnRjX3N0YXRlLT5vdXRwdXRfZm9ybWF0ICE9IElOVEVMX09VVFBVVF9GT1JN QVRfUkdCIHx8Cj4gQEAgLTE0NzEsNyArMTQ3MSw3IEBAIHN0YXRpYyBpbnQgZ2xrX2dhbW1hX3By ZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCj4g IGludCBpbnRlbF9jb2xvcl9nZXRfZ2FtbWFfYml0X3ByZWNpc2lvbihjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwo+ICAKPiAgCWlmICghY3J0Y19zdGF0ZS0+Z2FtbWFfZW5hYmxlKQo+IEBAIC0xNTgwLDcg KzE1ODAsNyBAQCBzdGF0aWMgdTMyIGludGVsX2NvbG9yX2x1dF9wYWNrKHUzMiB2YWwsIHUzMiBi aXRfcHJlY2lzaW9uKQo+ICBzdGF0aWMgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICoKPiAgaTl4 eF9yZWFkX2x1dF84KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNy dGMtPnBpcGU7Cj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2I7Cj4gQEAgLTE2MTQs MTMgKzE2MTQsMTMgQEAgaTl4eF9yZWFkX2x1dF84KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICAKPiAgc3RhdGljIHZvaWQgaTl4eF9yZWFkX2x1dHMoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCWNydGNfc3RhdGUtPmJhc2Uu Z2FtbWFfbHV0ID0gaTl4eF9yZWFkX2x1dF84KGNydGNfc3RhdGUpOwo+ICsJY3J0Y19zdGF0ZS0+ dWFwaS5nYW1tYV9sdXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0Y19zdGF0ZSk7Cj4gIH0KPiAgCj4g IHN0YXRpYyBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKgo+ICBpOTY1X3JlYWRfbHV0XzEwcDYo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMp Owo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCXUzMiBsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3By aXYpLT5jb2xvci5nYW1tYV9sdXRfc2l6ZTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlw ZTsKPiBAQCAtMTY2MSwxNSArMTY2MSwxNSBAQCBpOTY1X3JlYWRfbHV0XzEwcDYoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHN0YXRpYyB2b2lkIGk5NjVfcmVh ZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAlpZiAo Y3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkKPiAtCQljcnRj X3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0YXRlKTsKPiAr CQljcnRjX3N0YXRlLT51YXBpLmdhbW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0YXRl KTsKPiAgCWVsc2UKPiAtCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGk5NjVfcmVhZF9s dXRfMTBwNihjcnRjX3N0YXRlKTsKPiArCQljcnRjX3N0YXRlLT51YXBpLmdhbW1hX2x1dCA9IGk5 NjVfcmVhZF9sdXRfMTBwNihjcnRjX3N0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHN0cnVjdCBk cm1fcHJvcGVydHlfYmxvYiAqCj4gIGNodl9yZWFkX2NnbV9sdXQoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2 KTsKPiAgCXUzMiBsdXRfc2l6ZSA9IElOVEVMX0lORk8oZGV2X3ByaXYpLT5jb2xvci5nYW1tYV9s dXRfc2l6ZTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiBAQCAtMTcwMywxNSAr MTcwMywxNSBAQCBjaHZfcmVhZF9jZ21fbHV0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQo+ICBzdGF0aWMgdm9pZCBjaHZfcmVhZF9sdXRzKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9k ZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkKPiAtCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1 dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0YXRlKTsKPiArCQljcnRjX3N0YXRlLT51YXBpLmdh bW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0YXRlKTsKPiAgCWVsc2UKPiAtCQljcnRj X3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGNodl9yZWFkX2NnbV9sdXQoY3J0Y19zdGF0ZSk7Cj4g KwkJY3J0Y19zdGF0ZS0+dWFwaS5nYW1tYV9sdXQgPSBjaHZfcmVhZF9jZ21fbHV0KGNydGNfc3Rh dGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICoKPiAgaWxr X3JlYWRfbHV0XzEwKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAl1MzIgbHV0X3NpemUgPSBJTlRF TF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemU7Cj4gIAllbnVtIHBpcGUgcGlw ZSA9IGNydGMtPnBpcGU7Cj4gQEAgLTE3NDQsMTUgKzE3NDQsMTUgQEAgaWxrX3JlYWRfbHV0XzEw KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICBzdGF0aWMgdm9p ZCBpbGtfcmVhZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7 Cj4gIAlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkK PiAtCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0 YXRlKTsKPiArCQljcnRjX3N0YXRlLT51YXBpLmdhbW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChj cnRjX3N0YXRlKTsKPiAgCWVsc2UKPiAtCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGls a19yZWFkX2x1dF8xMChjcnRjX3N0YXRlKTsKPiArCQljcnRjX3N0YXRlLT51YXBpLmdhbW1hX2x1 dCA9IGlsa19yZWFkX2x1dF8xMChjcnRjX3N0YXRlKTsKPiAgfQo+ICAKPiAgc3RhdGljIHN0cnVj dCBkcm1fcHJvcGVydHlfYmxvYiAqCj4gIGdsa19yZWFkX2x1dF8xMChjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgdTMyIHByZWNfaW5kZXgpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMp Owo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWludCBod19sdXRfc2l6ZSA9IGl2Yl9sdXRfMTBfc2l6 ZShwcmVjX2luZGV4KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiBAQCAtMTc5 MCw5ICsxNzkwLDkgQEAgZ2xrX3JlYWRfbHV0XzEwKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLCB1MzIgcHJlY19pbmRleCkKPiAgc3RhdGljIHZvaWQgZ2xrX3JlYWRf bHV0cyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJaWYgKGNy dGNfc3RhdGUtPmdhbW1hX21vZGUgPT0gR0FNTUFfTU9ERV9NT0RFXzhCSVQpCj4gLQkJY3J0Y19z dGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0Y19zdGF0ZSk7Cj4gKwkJ Y3J0Y19zdGF0ZS0+dWFwaS5nYW1tYV9sdXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0Y19zdGF0ZSk7 Cj4gIAllbHNlCj4gLQkJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBnbGtfcmVhZF9sdXRf MTAoY3J0Y19zdGF0ZSwgUEFMX1BSRUNfSU5ERVhfVkFMVUUoMCkpOwo+ICsJCWNydGNfc3RhdGUt PnVhcGkuZ2FtbWFfbHV0ID0gZ2xrX3JlYWRfbHV0XzEwKGNydGNfc3RhdGUsIFBBTF9QUkVDX0lO REVYX1ZBTFVFKDApKTsKPiAgfQo+ICAKPiAgdm9pZCBpbnRlbF9jb2xvcl9pbml0KHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2NydC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnQu Ywo+IGluZGV4IGZmNjEyNmVhNzkzYy4uMTY0YWYxOTM2ZDM4IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydC5jCj4gQEAgLTEzMiw5ICsxMzIsOSBAQCBzdGF0aWMg dm9pZCBpbnRlbF9jcnRfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAgewo+ICAJcGlwZV9jb25maWctPm91dHB1dF90eXBlcyB8PSBCSVQoSU5URUxfT1VUUFVUX0FO QUxPRyk7Cj4gIAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBp bnRlbF9jcnRfZ2V0X2ZsYWdzKGVuY29kZXIpOwo+ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVk X21vZGUuZmxhZ3MgfD0gaW50ZWxfY3J0X2dldF9mbGFncyhlbmNvZGVyKTsKPiAgCj4gLQlwaXBl X2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBwaXBlX2NvbmZpZy0+cG9y dF9jbG9jazsKPiArCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBw aXBlX2NvbmZpZy0+cG9ydF9jbG9jazsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaHN3X2NydF9n ZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+IEBAIC0xNDQsMTMgKzE0 NCwxMyBAQCBzdGF0aWMgdm9pZCBoc3dfY3J0X2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gIAo+ICAJaW50ZWxfZGRpX2dldF9jb25maWcoZW5jb2RlciwgcGlwZV9j b25maWcpOwo+ICAKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJj0g fihEUk1fTU9ERV9GTEFHX1BIU1lOQyB8Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9k ZS5mbGFncyAmPSB+KERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwKPiAgCQkJCQkgICAgICBEUk1fTU9E RV9GTEFHX05IU1lOQyB8Cj4gIAkJCQkJICAgICAgRFJNX01PREVfRkxBR19QVlNZTkMgfAo+ICAJ CQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfTlZTWU5DKTsKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGUuZmxhZ3MgfD0gaW50ZWxfY3J0X2dldF9mbGFncyhlbmNvZGVyKTsKPiArCXBp cGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGludGVsX2NydF9nZXRfZmxhZ3Mo ZW5jb2Rlcik7Cj4gIAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Ns b2NrID0gbHB0X2dldF9pY2xraXAoZGV2X3ByaXYpOwo+ICsJcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGUuY3J0Y19jbG9jayA9IGxwdF9nZXRfaWNsa2lwKGRldl9wcml2KTsKPiAgfQo+ICAK PiAgLyogTm90ZTogVGhlIGNhbGxlciBpcyByZXF1aXJlZCB0byBmaWx0ZXIgb3V0IGRwbXMgbW9k ZXMgbm90IHN1cHBvcnRlZCBieSB0aGUKPiBAQCAtMTYxLDggKzE2MSw4IEBAIHN0YXRpYyB2b2lk IGludGVsX2NydF9zZXRfZHBtcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgewo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0ICpjcnQgPSBpbnRlbF9lbmNvZGVyX3RvX2Ny dChlbmNvZGVyKTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0 Yyk7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJdTMyIGFkcGE7Cj4gIAo+ICAJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gNSkKPiBAQCAtMjcxLDcgKzI3MSw3IEBAIHN0YXRpYyB2b2lk IGhzd19wcmVfZW5hYmxlX2NydChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJ ICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ICB7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXIt PmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNy dGMtPnBpcGU7Cj4gIAo+ICAJV0FSTl9PTighY3J0Y19zdGF0ZS0+aGFzX3BjaF9lbmNvZGVyKTsK PiBAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyB2b2lkIGhzd19lbmFibGVfY3J0KHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMp Owo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAKPiAgCVdBUk5fT04oIWNydGNf c3RhdGUtPmhhc19wY2hfZW5jb2Rlcik7Cj4gQEAgLTM1OCw3ICszNTgsNyBAQCBzdGF0aWMgaW50 IGludGVsX2NydF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAgCQkJCSAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiAgewo+ ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRf bW9kZTsKPiAgCj4gIAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RC TFNDQU4pCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMg aW50IHBjaF9jcnRfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIAkJCQkgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJJnBpcGVfY29u ZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9t b2RlOwo+ICAKPiAgCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJM U0NBTikKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMzkwLDcgKzM5MCw3IEBAIHN0YXRpYyBp bnQgaHN3X2NydF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9Cj4gLQkJJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJJnBpcGVfY29u ZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAKPiAgCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAm IERSTV9NT0RFX0ZMQUdfREJMU0NBTikKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiBpbmRleCAzYzFlODg1ZTAxODcuLjA1MmNh ZjIzNzJkMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYwo+ IEBAIC0xNTI3LDcgKzE1MjcsNyBAQCBzdGF0aWMgdm9pZCBkZGlfZG90Y2xvY2tfZ2V0KHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgCWlmIChwaXBlX2NvbmZpZy0+cGl4 ZWxfbXVsdGlwbGllcikKPiAgCQlkb3RjbG9jayAvPSBwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlw bGllcjsKPiAgCj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sg PSBkb3RjbG9jazsKPiArCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sg PSBkb3RjbG9jazsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaWNsX2RkaV9jbG9ja19nZXQoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gQEAgLTE3NDIsNyArMTc0Miw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIAo+ICB2b2lkIGludGVsX2RkaV9zZXRfcGlwZV9zZXR0aW5ncyhjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1 X3RyYW5zY29kZXI7Cj4gIAl1MzIgdGVtcDsKPiBAQCAtMTgwMiw3ICsxODAyLDcgQEAgdm9pZCBp bnRlbF9kZGlfc2V0X3BpcGVfc2V0dGluZ3MoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gIHZvaWQgaW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJICAgIGJvb2wgc3Rh dGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWVudW0gdHJhbnNjb2Rl ciBjcHVfdHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwo+ICAJdTMyIHRl bXA7Cj4gQEAgLTE4MjQsNyArMTgyNCw3IEBAIHZvaWQgaW50ZWxfZGRpX3NldF92Y19wYXlsb2Fk X2FsbG9jKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0 aWMgdTMyCj4gIGludGVsX2RkaV90cmFuc2NvZGVyX2Z1bmNfcmVnX3ZhbF9nZXQoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0 Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9IGludGVsX2RkaV9nZXRfY3J0 Y19lbmNvZGVyKGNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7 Cj4gQEAgLTE4NTYsOSArMTg1Niw5IEBAIGludGVsX2RkaV90cmFuc2NvZGVyX2Z1bmNfcmVnX3Zh bF9nZXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkJQlVH KCk7Cj4gIAl9Cj4gIAo+IC0JaWYgKGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFn cyAmIERSTV9NT0RFX0ZMQUdfUFZTWU5DKQo+ICsJaWYgKGNydGNfc3RhdGUtPmh3LmFkanVzdGVk X21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BWU1lOQykKPiAgCQl0ZW1wIHw9IFRSQU5TX0RE SV9QVlNZTkM7Cj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYg RFJNX01PREVfRkxBR19QSFNZTkMpCj4gKwlpZiAoY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUEhTWU5DKQo+ICAJCXRlbXAgfD0gVFJBTlNfRERJX1BI U1lOQzsKPiAgCj4gIAlpZiAoY3B1X3RyYW5zY29kZXIgPT0gVFJBTlNDT0RFUl9FRFApIHsKPiBA QCAtMTkxMSw3ICsxOTExLDcgQEAgaW50ZWxfZGRpX3RyYW5zY29kZXJfZnVuY19yZWdfdmFsX2dl dChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCj4gIHZvaWQg aW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAg CWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2Nv ZGVyOwo+ICAJdTMyIHRlbXA7Cj4gQEAgLTE5MjcsNyArMTkyNyw3IEBAIHZvaWQgaW50ZWxfZGRp X2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCj4gIHN0YXRpYyB2b2lkCj4gIGludGVsX2RkaV9jb25maWdfdHJhbnNjb2Rlcl9m dW5jKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29k ZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiAgCXUzMiB0ZW1wOwo+IEBAIC0xOTM5 LDcgKzE5MzksNyBAQCBpbnRlbF9kZGlfY29uZmlnX3RyYW5zY29kZXJfZnVuYyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCj4gIHZvaWQgaW50ZWxfZGRpX2Rp c2FibGVfdHJhbnNjb2Rlcl9mdW5jKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIHRyYW5z Y29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiAgCWk5 MTVfcmVnX3QgcmVnID0gVFJBTlNfRERJX0ZVTkNfQ1RMKGNwdV90cmFuc2NvZGVyKTsKPiBAQCAt MjIzNyw3ICsyMjM3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX2dldF9wb3dlcl9kb21haW5z KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAgdm9pZCBpbnRlbF9kZGlfZW5h YmxlX3BpcGVfY2xvY2soY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyID0gaW50ZWxfZGRpX2dldF9jcnRjX2VuY29kZXIoY3J0Yyk7Cj4gIAllbnVt IHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7Cj4gQEAgLTIyNTUsNyArMjI1NSw3IEBAIHZvaWQg aW50ZWxfZGRpX2VuYWJsZV9waXBlX2Nsb2NrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQo+ICAKPiAgdm9pZCBpbnRlbF9kZGlfZGlzYWJsZV9waXBlX2Nsb2NrKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0 Yy0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFu c2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7Cj4gIAo+ICAJaWYgKGNwdV90cmFu c2NvZGVyICE9IFRSQU5TQ09ERVJfRURQKSB7Cj4gQEAgLTM1NjIsNyArMzU2Miw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAo+ICAJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CQkJIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Cj4gIAo+IEBAIC0zOTg3LDcgKzM5ODcsNyBAQCBpbnRlbF9kZGlfdXBkYXRlX3ByZXBhcmUo c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAlXQVJOX09OKGNydGMgJiYgY3J0 Yy0+YWN0aXZlKTsKPiAgCj4gIAlpbnRlbF90Y19wb3J0X2dldF9saW5rKGVuY190b19kaWdfcG9y dCgmZW5jb2Rlci0+YmFzZSksIHJlcXVpcmVkX2xhbmVzKTsKPiAtCWlmIChjcnRjX3N0YXRlICYm IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJaWYgKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0 ZS0+aHcuYWN0aXZlKQo+ICAJCWludGVsX3VwZGF0ZV9hY3RpdmVfZHBsbChzdGF0ZSwgY3J0Yywg ZW5jb2Rlcik7Cj4gIH0KPiAgCj4gQEAgLTQxMTcsNyArNDExNyw3IEBAIHZvaWQgaW50ZWxfZGRp X2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCSAgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFz ZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRjKTsKPiAgCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNj b2RlciA9IHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKPiAgCXUzMiB0ZW1wLCBmbGFncyA9 IDA7Cj4gIAo+IEBAIC00MTM1LDcgKzQxMzUsNyBAQCB2b2lkIGludGVsX2RkaV9nZXRfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJZWxzZQo+ICAJCWZsYWdzIHw9IERS TV9NT0RFX0ZMQUdfTlZTWU5DOwo+ICAKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21v ZGUuZmxhZ3MgfD0gZmxhZ3M7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFn cyB8PSBmbGFnczsKPiAgCj4gIAlzd2l0Y2ggKHRlbXAgJiBUUkFOU19ERElfQlBDX01BU0spIHsK PiAgCWNhc2UgVFJBTlNfRERJX0JQQ182Ogo+IEBAIC00MjgxLDcgKzQyODEsNyBAQCBzdGF0aWMg aW50IGludGVsX2RkaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCQkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAkJ CQkgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5j cnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2Nv bmZpZy0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVy LT5wb3J0Owo+ICAJaW50IHJldDsKPiBAQCAtNDQxMiw3ICs0NDEyLDcgQEAgc3RhdGljIGludCBp bnRlbF9oZG1pX3Jlc2V0X2xpbmsoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ ICAJV0FSTl9PTighaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRf SERNSSkpOwo+ICAKPiAtCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwlpZiAoIWNy dGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlpZiAoIWNydGNfc3Rh dGUtPmhkbWlfaGlnaF90bWRzX2Nsb2NrX3JhdGlvICYmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBlY2IxNTQyMGI1Y2EuLmY1NTVmZjZi MWY2YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eS5jCj4gQEAgLTUxNiw3ICs1MTYsNyBAQCBpY2xfd2Ffc2NhbGVyY2xrZ2F0aW5nKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUsCj4gIHN0YXRpYyBib29s Cj4gIG5lZWRzX21vZGVzZXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnN0YXRlKQo+ ICB7Cj4gLQlyZXR1cm4gZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoJnN0YXRlLT5iYXNl KTsKPiArCXJldHVybiBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmc3RhdGUtPnVhcGkp Owo+ICB9Cj4gIAo+ICAvKgo+IEBAIC02MzAsNyArNjMwLDcgQEAgaTl4eF9zZWxlY3RfcDJfZGl2 KGNvbnN0IHN0cnVjdCBpbnRlbF9saW1pdCAqbGltaXQsCj4gIAkJICAgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJICAgaW50IHRhcmdldCkKPiAgewo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5i YXNlLmNydGMtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPiAgCj4gIAlpZiAoaW50ZWxfY3J0 Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfTFZEUykpIHsKPiAgCQkvKgo+IEBA IC02NjYsNyArNjY2LDcgQEAgaTl4eF9maW5kX2Jlc3RfZHBsbChjb25zdCBzdHJ1Y3QgaW50ZWxf bGltaXQgKmxpbWl0LAo+ICAJCSAgICBpbnQgdGFyZ2V0LCBpbnQgcmVmY2xrLCBzdHJ1Y3QgZHBs bCAqbWF0Y2hfY2xvY2ssCj4gIAkJICAgIHN0cnVjdCBkcGxsICpiZXN0X2Nsb2NrKQo+ICB7Cj4g LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXY7Cj4g KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXY7Cj4g IAlzdHJ1Y3QgZHBsbCBjbG9jazsKPiAgCWludCBlcnIgPSB0YXJnZXQ7Cj4gIAo+IEBAIC03MjQs NyArNzI0LDcgQEAgcG52X2ZpbmRfYmVzdF9kcGxsKGNvbnN0IHN0cnVjdCBpbnRlbF9saW1pdCAq bGltaXQsCj4gIAkJICAgaW50IHRhcmdldCwgaW50IHJlZmNsaywgc3RydWN0IGRwbGwgKm1hdGNo X2Nsb2NrLAo+ICAJCSAgIHN0cnVjdCBkcGxsICpiZXN0X2Nsb2NrKQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXY7Cj4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXY7Cj4gIAlzdHJ1Y3Qg ZHBsbCBjbG9jazsKPiAgCWludCBlcnIgPSB0YXJnZXQ7Cj4gIAo+IEBAIC03ODAsNyArNzgwLDcg QEAgZzR4X2ZpbmRfYmVzdF9kcGxsKGNvbnN0IHN0cnVjdCBpbnRlbF9saW1pdCAqbGltaXQsCj4g IAkJICAgaW50IHRhcmdldCwgaW50IHJlZmNsaywgc3RydWN0IGRwbGwgKm1hdGNoX2Nsb2NrLAo+ ICAJCSAgIHN0cnVjdCBkcGxsICpiZXN0X2Nsb2NrKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHBsbCBjbG9j azsKPiAgCWludCBtYXhfbjsKPiAgCWJvb2wgZm91bmQgPSBmYWxzZTsKPiBAQCAtODc0LDcgKzg3 NCw3IEBAIHZsdl9maW5kX2Jlc3RfZHBsbChjb25zdCBzdHJ1Y3QgaW50ZWxfbGltaXQgKmxpbWl0 LAo+ICAJCSAgIGludCB0YXJnZXQsIGludCByZWZjbGssIHN0cnVjdCBkcGxsICptYXRjaF9jbG9j aywKPiAgCQkgICBzdHJ1Y3QgZHBsbCAqYmVzdF9jbG9jaykKPiAgewo+IC0Jc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5j cnRjKTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAgCXN0 cnVjdCBkcGxsIGNsb2NrOwo+ICAJdW5zaWduZWQgaW50IGJlc3RwcG0gPSAxMDAwMDAwOwo+IEBA IC05MzQsNyArOTM0LDcgQEAgY2h2X2ZpbmRfYmVzdF9kcGxsKGNvbnN0IHN0cnVjdCBpbnRlbF9s aW1pdCAqbGltaXQsCj4gIAkJICAgaW50IHRhcmdldCwgaW50IHJlZmNsaywgc3RydWN0IGRwbGwg Km1hdGNoX2Nsb2NrLAo+ICAJCSAgIHN0cnVjdCBkcGxsICpiZXN0X2Nsb2NrKQo+ICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2Uu ZGV2Owo+ICAJdW5zaWduZWQgaW50IGJlc3RfZXJyb3JfcHBtOwo+ICAJc3RydWN0IGRwbGwgY2xv Y2s7Cj4gQEAgLTEwMTMsNyArMTAxMyw3IEBAIGJvb2wgaW50ZWxfY3J0Y19hY3RpdmUoc3RydWN0 IGludGVsX2NydGMgKmNydGMpCj4gIAkgKiBmb3IgYXRvbWljLgo+ICAJICovCj4gIAlyZXR1cm4g Y3J0Yy0+YWN0aXZlICYmIGNydGMtPmJhc2UucHJpbWFyeS0+c3RhdGUtPmZiICYmCj4gLQkJY3J0 Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiArCQljcnRjLT5jb25m aWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiAgfQo+ICAKPiAgZW51bSB0cmFuc2Nv ZGVyIGludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+IEBAIC0xMDY3LDcgKzEwNjcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF93YWl0 X2Zvcl9waXBlX3NjYW5saW5lX21vdmluZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiAgc3Rh dGljIHZvaWQKPiAgaW50ZWxfd2FpdF9mb3JfcGlwZV9vZmYoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPnVhcGkuY3J0 Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMt PmJhc2UuZGV2KTsKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7Cj4gQEAg LTE1MjYsNyArMTUyNiw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX3BsbChzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKPiAgCj4gIHN0YXRpYyB2b2lkIGk5eHhfZGlzYWJsZV9wbGwoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGMtPmJhc2UuZGV2KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCj4gQEAg LTE2MTcsNyArMTYxNyw3IEBAIHZvaWQgdmx2X3dhaXRfcG9ydF9yZWFkeShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICBzdGF0aWMgdm9pZCBpcm9ubGFrZV9lbmFibGVf cGNoX3RyYW5zY29kZXIoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWVudW0gcGlwZSBwaXBlID0g Y3J0Yy0+cGlwZTsKPiAgCWk5MTVfcmVnX3QgcmVnOwo+IEBAIC0xNzYxLDcgKzE3NjEsNyBAQCBl bnVtIHBpcGUgaW50ZWxfY3J0Y19wY2hfdHJhbnNjb2RlcihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKPiAgCj4gIHN0YXRpYyB1MzIgaW50ZWxfY3J0Y19tYXhfdmJsYW5rX2NvdW50KGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2 KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19z dGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwo+ICAKPiAgCS8qCj4gIAkgKiBPbiBpOTY1Z20gdGhlIGhh cmR3YXJlIGZyYW1lIGNvdW50ZXIgcmVhZHMKPiBAQCAtMTc4MSw3ICsxNzgxLDcgQEAgc3RhdGlj IHUzMiBpbnRlbF9jcnRjX21heF92YmxhbmtfY291bnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUKPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2NydGNfdmJsYW5rX29u KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRj KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT51YXBpLmNydGMpOwo+ICAKPiAgCWRybV9jcnRjX3NldF9tYXhfdmJsYW5rX2NvdW50KCZjcnRj LT5iYXNlLAo+ICAJCQkJICAgICAgaW50ZWxfY3J0Y19tYXhfdmJsYW5rX2NvdW50KGNydGNfc3Rh dGUpKTsKPiBAQCAtMTc5MCw3ICsxNzkwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y192Ymxh bmtfb24oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAo+ICBz dGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfcGlwZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqbmV3X2NydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhuZXdfY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhuZXdfY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gbmV3X2NydGNfc3RhdGUt PmNwdV90cmFuc2NvZGVyOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+IEBAIC0x ODQ4LDcgKzE4NDgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfcGlwZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4gIAo+ICBzdGF0aWMgdm9pZCBp bnRlbF9kaXNhYmxlX3BpcGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo b2xkX2NydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IG9sZF9jcnRjX3N0YXRlLT5jcHVfdHJhbnNj b2RlcjsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiBAQCAtMzExNCwxNCArMzEx NCwxNCBAQCBpbnRlbF9zZXRfcGxhbmVfdmlzaWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPiAgCXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgPSB2aXNpYmxlOwo+ICAK PiAgCWlmICh2aXNpYmxlKQo+IC0JCWNydGNfc3RhdGUtPmJhc2UucGxhbmVfbWFzayB8PSBkcm1f cGxhbmVfbWFzaygmcGxhbmUtPmJhc2UpOwo+ICsJCWNydGNfc3RhdGUtPnVhcGkucGxhbmVfbWFz ayB8PSBkcm1fcGxhbmVfbWFzaygmcGxhbmUtPmJhc2UpOwo+ICAJZWxzZQo+IC0JCWNydGNfc3Rh dGUtPmJhc2UucGxhbmVfbWFzayAmPSB+ZHJtX3BsYW5lX21hc2soJnBsYW5lLT5iYXNlKTsKPiAr CQljcnRjX3N0YXRlLT51YXBpLnBsYW5lX21hc2sgJj0gfmRybV9wbGFuZV9tYXNrKCZwbGFuZS0+ YmFzZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGZpeHVwX2FjdGl2ZV9wbGFuZXMoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRl LT51YXBpLmNydGMtPmRldik7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiAgCj4gIAkv Kgo+IEBAIC0zMTMyLDcgKzMxMzIsNyBAQCBzdGF0aWMgdm9pZCBmaXh1cF9hY3RpdmVfcGxhbmVz KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJY3J0Y19zdGF0ZS0+YWN0 aXZlX3BsYW5lcyA9IDA7Cj4gIAo+ICAJZHJtX2Zvcl9lYWNoX3BsYW5lX21hc2socGxhbmUsICZk ZXZfcHJpdi0+ZHJtLAo+IC0JCQkJY3J0Y19zdGF0ZS0+YmFzZS5wbGFuZV9tYXNrKQo+ICsJCQkJ Y3J0Y19zdGF0ZS0+dWFwaS5wbGFuZV9tYXNrKQo+ICAJCWNydGNfc3RhdGUtPmFjdGl2ZV9wbGFu ZXMgfD0gQklUKHRvX2ludGVsX3BsYW5lKHBsYW5lKS0+aWQpOwo+ICB9Cj4gIAo+IEBAIC0zNjA2 LDcgKzM2MDYsNyBAQCBpOXh4X3BsYW5lX21heF9zdHJpZGUoc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSwKPiAgCj4gIHN0YXRpYyB1MzIgaTl4eF9wbGFuZV9jdGxfY3J0Yyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFz ZS5kZXYpOwo+ICAJdTMyIGRzcGNudHIgPSAwOwo+ICAKPiBAQCAtMzc2MCw3ICszNzYwLDcgQEAg aTl4eF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CQlyZXR1cm4gcmV0Owo+ICAKPiAgCXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5l X3N0YXRlKCZwbGFuZV9zdGF0ZS0+YmFzZSwKPiAtCQkJCQkJICAmY3J0Y19zdGF0ZS0+YmFzZSwK PiArCQkJCQkJICAmY3J0Y19zdGF0ZS0+dWFwaSwKPiAgCQkJCQkJICBEUk1fUExBTkVfSEVMUEVS X05PX1NDQUxJTkcsCj4gIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ICAJ CQkJCQkgIGk5eHhfcGxhbmVfaGFzX3dpbmRvd2luZyhwbGFuZSksCj4gQEAgLTM5MzYsNyArMzkz Niw3IEBAIHN0YXRpYyB2b2lkIHNrbF9kZXRhY2hfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjLCBpbnQgaWQpCj4gICAqLwo+ICBzdGF0aWMgdm9pZCBza2xfZGV0YWNoX3NjYWxl cnMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5i YXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z Y2FsZXJfc3RhdGUgKnNjYWxlcl9zdGF0ZSA9Cj4gIAkJJmNydGNfc3RhdGUtPnNjYWxlcl9zdGF0 ZTsKPiAgCWludCBpOwo+IEBAIC00MTMxLDcgKzQxMzEsNyBAQCBzdGF0aWMgdTMyIGNubF9wbGFu ZV9jdGxfZmxpcCh1bnNpZ25lZCBpbnQgcmVmbGVjdCkKPiAgCj4gIHUzMiBza2xfcGxhbmVfY3Rs X2NydGMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+ YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gIAl1MzIgcGxhbmVfY3RsID0g MDsKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtF KGRldl9wcml2KSkKPiBAQCAtNDE4Nyw3ICs0MTg3LDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICB1MzIgZ2xrX3Bs YW5lX2NvbG9yX2N0bF9jcnRjKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwo+ICAJdTMy IHBsYW5lX2NvbG9yX2N0bCA9IDA7Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTEpCj4gQEAgLTQ4MDMsNyArNDgwMyw3IEBAIHN0YXRpYyB2b2lkIGl2Yl9tYW51YWxfZmRpX2xp bmtfdHJhaW4oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAo+ICBzdGF0aWMgdm9pZCBpcm9u bGFrZV9mZGlfcGxsX2VuYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFzZS5kZXYp Owo+ICAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ICAJaTkxNV9yZWdfdCBy ZWc7Cj4gQEAgLTQ5NjQsOSArNDk2NCw5IEBAIHZvaWQgbHB0X2Rpc2FibGVfaWNsa2lwKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgLyogUHJvZ3JhbSBpQ0xLSVAgY2xvY2sg dG8gdGhlIGRlc2lyZWQgZnJlcXVlbmN5ICovCj4gIHN0YXRpYyB2b2lkIGxwdF9wcm9ncmFtX2lj bGtpcChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0J c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2Uu Y3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IC0JaW50IGNsb2NrID0gY3J0Y19zdGF0ZS0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gKwlpbnQgY2xvY2sgPSBjcnRjX3N0YXRlLT5o dy5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gIAl1MzIgZGl2c2VsLCBwaGFzZWluYywgYXV4 ZGl2LCBwaGFzZWRpciA9IDA7Cj4gIAl1MzIgdGVtcDsKPiAgCj4gQEAgLTUwODAsNyArNTA4MCw3 IEBAIGludCBscHRfZ2V0X2ljbGtpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90aW1pbmdzKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJCQllbnVtIHBpcGUg cGNoX3RyYW5zY29kZXIpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVy Owo+ICAKPiBAQCAtNTEyMyw3ICs1MTIzLDcgQEAgc3RhdGljIHZvaWQgY3B0X3NldF9mZGlfYmNf YmlmdXJjYXRpb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGUKPiAg Cj4gIHN0YXRpYyB2b2lkIGl2eWJyaWRnZV91cGRhdGVfZmRpX2JjX2JpZnVyY2F0aW9uKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAr CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBp LmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5iYXNlLmRldik7Cj4gIAo+ICAJc3dpdGNoIChjcnRjLT5waXBlKSB7Cj4gQEAgLTUxNTMs NyArNTE1Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqCj4gIGludGVsX2dldF9j cnRjX25ld19lbmNvZGVyKGNvbnN0IHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ ICAJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJh c2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRl ICpjb25uZWN0b3Jfc3RhdGU7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yOwo+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBOVUxMOwo+IEBAIC01MTg1 LDcgKzUxODUsNyBAQCBpbnRlbF9nZXRfY3J0Y19uZXdfZW5jb2Rlcihjb25zdCBzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJs ZShjb25zdCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJCWNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNy dGMpOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJZW51bSBw aXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+IEBAIC01MjM5LDcgKzUyMzksNyBAQCBzdGF0aWMgdm9p ZCBpcm9ubGFrZV9wY2hfZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0 YXRlLAo+ICAJaWYgKEhBU19QQ0hfQ1BUKGRldl9wcml2KSAmJgo+ICAJICAgIGludGVsX2NydGNf aGFzX2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVk X21vZGU7Cj4gKwkJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJCXUzMiBicGMg PSAoSTkxNV9SRUFEKFBJUEVDT05GKHBpcGUpKSAmIFBJUEVDT05GX0JQQ19NQVNLKSA+PiA1Owo+ ICAJCWk5MTVfcmVnX3QgcmVnID0gVFJBTlNfRFBfQ1RMKHBpcGUpOwo+ICAJCWVudW0gcG9ydCBw b3J0Owo+IEBAIC01MjY5LDcgKzUyNjksNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfZW5h YmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICBzdGF0aWMgdm9p ZCBscHRfcGNoX2VuYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwK PiAgCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5i YXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNy dGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWVudW0gdHJhbnNjb2RlciBjcHVfdHJh bnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwo+ICAKPiBAQCAtNTM4NiwxMCAr NTM4NiwxMCBAQCBza2xfdXBkYXRlX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwgYm9vbCBmb3JjZV9kZXRhY2gsCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJf c3RhdGUgKnNjYWxlcl9zdGF0ZSA9Cj4gIAkJJmNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZTsKPiAg CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0KPiAtCQl0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwkJdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNy dGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRl bF9jcnRjLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSA9Cj4gLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkm Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCj4gIAkvKgo+ICAJICogU3JjIGNvb3Jk aW5hdGVzIGFyZSBhbHJlYWR5IHJvdGF0ZWQgYnkgMjcwIGRlZ3JlZXMgZm9yCj4gQEAgLTU0MDUs NyArNTQwNSw3IEBAIHNrbF91cGRhdGVfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLCBib29sIGZvcmNlX2RldGFjaCwKPiAgCSAqIE9uY2UgTlYxMiBpcyBlbmFibGVk LCBoYW5kbGUgaXQgaGVyZSB3aGlsZSBhbGxvY2F0aW5nIHNjYWxlcgo+ICAJICogZm9yIE5WMTIu Cj4gIAkgKi8KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgJiYgY3J0Y19zdGF0ZS0+ YmFzZS5lbmFibGUgJiYKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgJiYgY3J0Y19z dGF0ZS0+aHcuZW5hYmxlICYmCj4gIAkgICAgbmVlZF9zY2FsZXIgJiYgYWRqdXN0ZWRfbW9kZS0+ ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkgewo+ICAJCURSTV9ERUJVR19LTVMoIlBp cGUvUGxhbmUgc2NhbGluZyBub3Qgc3VwcG9ydGVkIHdpdGggSUYtSUQgbW9kZVxuIik7Cj4gIAkJ cmV0dXJuIC1FSU5WQUw7Cj4gQEAgLTU0NzcsMTMgKzU0NzcsMTMgQEAgc2tsX3VwZGF0ZV9zY2Fs ZXIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIGJvb2wgZm9yY2VfZGV0YWNo LAo+ICAgKi8KPiAgaW50IHNrbF91cGRhdGVfc2NhbGVyX2NydGMoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSA9ICZzdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmc3RhdGUtPmh3LmFkanVzdGVkX21v ZGU7Cj4gIAlib29sIG5lZWRfc2NhbGVyID0gZmFsc2U7Cj4gIAo+ICAJaWYgKHN0YXRlLT5vdXRw dXRfZm9ybWF0ID09IElOVEVMX09VVFBVVF9GT1JNQVRfWUNCQ1I0MjApCj4gIAkJbmVlZF9zY2Fs ZXIgPSB0cnVlOwo+ICAKPiAtCXJldHVybiBza2xfdXBkYXRlX3NjYWxlcihzdGF0ZSwgIXN0YXRl LT5iYXNlLmFjdGl2ZSwgU0tMX0NSVENfSU5ERVgsCj4gKwlyZXR1cm4gc2tsX3VwZGF0ZV9zY2Fs ZXIoc3RhdGUsICFzdGF0ZS0+aHcuYWN0aXZlLCBTS0xfQ1JUQ19JTkRFWCwKPiAgCQkJCSAmc3Rh dGUtPnNjYWxlcl9zdGF0ZS5zY2FsZXJfaWQsCj4gIAkJCQkgc3RhdGUtPnBpcGVfc3JjX3csIHN0 YXRlLT5waXBlX3NyY19oLAo+ICAJCQkJIGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXksCj4g QEAgLTU1ODMsNyArNTU4Myw3IEBAIHN0YXRpYyB2b2lkIHNreWxha2Vfc2NhbGVyX2Rpc2FibGUo c3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAo+ICBzdGF0aWMgdm9pZCBza3lsYWtlX3BmaXRf ZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGF0 ZSA9Cj4gQEAgLTU2MjAsNyArNTYyMCw3IEBAIHN0YXRpYyB2b2lkIHNreWxha2VfcGZpdF9lbmFi bGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAo+ICBzdGF0 aWMgdm9pZCBpcm9ubGFrZV9wZml0X2VuYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJZW51 bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAKPiBAQCAtNTY0MSw3ICs1NjQxLDcgQEAgc3Rh dGljIHZvaWQgaXJvbmxha2VfcGZpdF9lbmFibGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gIAo+ICB2b2lkIGhzd19lbmFibGVfaXBzKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAKPiBAQCAtNTY3Nyw3 ICs1Njc3LDcgQEAgdm9pZCBoc3dfZW5hYmxlX2lwcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCj4gIHZvaWQgaHN3X2Rpc2FibGVfaXBzKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMp Owo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAKPiBAQCAtNTc4 Nyw3ICs1Nzg3LDcgQEAgaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeV9ub2F0b21pYyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCj4gIHN0YXRpYyBib29sIGhzd19wcmVfdXBkYXRlX2Rpc2FibGVfaXBz KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiAgCQkJCSAg ICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhuZXdfY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhuZXdfY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAKPiAgCWlmICghb2xkX2Ny dGNfc3RhdGUtPmlwc19lbmFibGVkKQo+IEBAIC01ODAzLDcgKzU4MDMsNyBAQCBzdGF0aWMgYm9v bCBoc3dfcHJlX3VwZGF0ZV9kaXNhYmxlX2lwcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqb2xkX2NydGNfcwo+ICAJICogRGlzYWJsZSBJUFMgYmVmb3JlIHdlIHByb2dyYW0gdGhlIExV VC4KPiAgCSAqLwo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpICYmCj4gLQkgICAgKG5ld19j cnRjX3N0YXRlLT5iYXNlLmNvbG9yX21nbXRfY2hhbmdlZCB8fAo+ICsJICAgIChuZXdfY3J0Y19z dGF0ZS0+dWFwaS5jb2xvcl9tZ210X2NoYW5nZWQgfHwKPiAgCSAgICAgbmV3X2NydGNfc3RhdGUt PnVwZGF0ZV9waXBlKSAmJgo+ICAJICAgIG5ld19jcnRjX3N0YXRlLT5nYW1tYV9tb2RlID09IEdB TU1BX01PREVfTU9ERV9TUExJVCkKPiAgCQlyZXR1cm4gdHJ1ZTsKPiBAQCAtNTgxNCw3ICs1ODE0 LDcgQEAgc3RhdGljIGJvb2wgaHN3X3ByZV91cGRhdGVfZGlzYWJsZV9pcHMoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3MKPiAgc3RhdGljIGJvb2wgaHN3X3Bvc3RfdXBk YXRlX2VuYWJsZV9pcHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlLAo+ICAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0 Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KG5ld19jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAo+ ICAJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+aXBzX2VuYWJsZWQpCj4gQEAgLTU4MzAsNyArNTgzMCw3 IEBAIHN0YXRpYyBib29sIGhzd19wb3N0X3VwZGF0ZV9lbmFibGVfaXBzKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zCj4gIAkgKiBSZS1lbmFibGUgSVBTIGFmdGVyIHRo ZSBMVVQgaGFzIGJlZW4gcHJvZ3JhbW1lZC4KPiAgCSAqLwo+ICAJaWYgKElTX0hBU1dFTEwoZGV2 X3ByaXYpICYmCj4gLQkgICAgKG5ld19jcnRjX3N0YXRlLT5iYXNlLmNvbG9yX21nbXRfY2hhbmdl ZCB8fAo+ICsJICAgIChuZXdfY3J0Y19zdGF0ZS0+dWFwaS5jb2xvcl9tZ210X2NoYW5nZWQgfHwK PiAgCSAgICAgbmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKSAmJgo+ICAJICAgIG5ld19jcnRj X3N0YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV9TUExJVCkKPiAgCQlyZXR1cm4g dHJ1ZTsKPiBAQCAtNTg0MCw3ICs1ODQwLDcgQEAgc3RhdGljIGJvb2wgaHN3X3Bvc3RfdXBkYXRl X2VuYWJsZV9pcHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3MKPiAg CSAqIGZvcmNpYmx5IGVuYWJsZSBJUFMgb24gdGhlIGZpcnN0IGZhc3RzZXQuCj4gIAkgKi8KPiAg CWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUgJiYKPiAtCSAgICBvbGRfY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVfRkxBR19JTkhF UklURUQpCj4gKwkgICAgb2xkX2NydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUucHJpdmF0ZV9m bGFncyAmIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCkKPiAgCQlyZXR1cm4gdHJ1ZTsKPiAgCj4g IAlyZXR1cm4gIW9sZF9jcnRjX3N0YXRlLT5pcHNfZW5hYmxlZDsKPiBAQCAtNTg3MSwxMCArNTg3 MSwxMCBAQCBzdGF0aWMgYm9vbCBuZWVkc19zY2FsZXJjbGtfd2Eoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcG9zdF9wbGFuZV91cGRh dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPmJhc2Uu Y3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMob2xkX2Ny dGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7Cj4gLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBvbGRfY3J0Y19zdGF0 ZS0+YmFzZS5zdGF0ZTsKPiArCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IG9sZF9j cnRjX3N0YXRlLT51YXBpLnN0YXRlOwo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnID0KPiAgCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHRvX2ludGVsX2F0 b21pY19zdGF0ZShzdGF0ZSksCj4gIAkJCQkJCWNydGMpOwo+IEBAIC01ODg0LDcgKzU4ODQsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9wb3N0X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4gIAo+ICAJaW50ZWxfZnJvbnRidWZmZXJfZmxpcCh0b19p OTE1KGNydGMtPmJhc2UuZGV2KSwgcGlwZV9jb25maWctPmZiX2JpdHMpOwo+ICAKPiAtCWlmIChw aXBlX2NvbmZpZy0+dXBkYXRlX3dtX3Bvc3QgJiYgcGlwZV9jb25maWctPmJhc2UuYWN0aXZlKQo+ ICsJaWYgKHBpcGVfY29uZmlnLT51cGRhdGVfd21fcG9zdCAmJiBwaXBlX2NvbmZpZy0+aHcuYWN0 aXZlKQo+ICAJCWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwo+ICAKPiAgCWlmIChoc3df cG9zdF91cGRhdGVfZW5hYmxlX2lwcyhvbGRfY3J0Y19zdGF0ZSwgcGlwZV9jb25maWcpKQo+IEBA IC01OTE0LDEwICs1OTE0LDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bvc3RfcGxhbmVfdXBkYXRl KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiAgc3RhdGljIHZvaWQg aW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNf c3RhdGUsCj4gIAkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4g IHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhvbGRfY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhvbGRfY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKPiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IG9s ZF9jcnRjX3N0YXRlLT5iYXNlLnN0YXRlOwo+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlID0gb2xkX2NydGNfc3RhdGUtPnVhcGkuc3RhdGU7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpw cmltYXJ5ID0gY3J0Yy0+YmFzZS5wcmltYXJ5Owo+ICAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq b2xkX3ByaW1hcnlfc3RhdGUgPQo+ICAJCWRybV9hdG9taWNfZ2V0X29sZF9wbGFuZV9zdGF0ZShz dGF0ZSwgcHJpbWFyeSk7Cj4gQEAgLTU5NjIsNyArNTk2Miw3IEBAIHN0YXRpYyB2b2lkIGludGVs X3ByZV9wbGFuZV91cGRhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRl LAo+ICAJICogZXZlbnQgd2hpY2ggaXMgYWZ0ZXIgdGhlIHZibGFuayBzdGFydCBldmVudCwgc28g d2UgbmVlZCB0byBoYXZlIGEKPiAgCSAqIHdhaXQtZm9yLXZibGFuayBiZXR3ZWVuIGRpc2FibGlu ZyB0aGUgcGxhbmUgYW5kIHRoZSBwaXBlLgo+ICAJICovCj4gLQlpZiAoSEFTX0dNQ0goZGV2X3By aXYpICYmIG9sZF9jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJgo+ICsJaWYgKEhBU19HTUNIKGRl dl9wcml2KSAmJiBvbGRfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlICYmCj4gIAkgICAgcGlwZV9jb25m aWctPmRpc2FibGVfY3hzciAmJiBpbnRlbF9zZXRfbWVtb3J5X2N4c3IoZGV2X3ByaXYsIGZhbHNl KSkKPiAgCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2X3ByaXYsIGNydGMtPnBpcGUpOwo+ICAK PiBAQCAtNTk3NCw3ICs1OTc0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0 ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIAkgKiBXYUN4U1JE aXNhYmxlZEZvclNwcml0ZVNjYWxpbmc6aXZiCj4gIAkgKi8KPiAgCWlmIChwaXBlX2NvbmZpZy0+ ZGlzYWJsZV9scF93bSAmJiBpbGtfZGlzYWJsZV9scF93bShkZXYpICYmCj4gLQkgICAgb2xkX2Ny dGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJICAgIG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmUp Cj4gIAkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldl9wcml2LCBjcnRjLT5waXBlKTsKPiAgCj4g IAkvKgo+IEBAIC02MjY5LDcgKzYyNjksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmNvZGVyc191 cGRhdGVfcGlwZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCj4gIHN0YXRpYyB2b2lkIGlu dGVsX2Rpc2FibGVfcHJpbWFyeV9wbGFuZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShjcnRjLT5iYXNlLnByaW1hcnkpOwo+ICAKPiAg CXBsYW5lLT5kaXNhYmxlX3BsYW5lKHBsYW5lLCBjcnRjX3N0YXRlKTsKPiBAQCAtNjI3OCw3ICs2 Mjc4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGlzYWJsZV9wcmltYXJ5X3BsYW5lKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXQKPiAgc3RhdGljIHZvaWQgaXJvbmxha2Vf Y3J0Y19lbmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJCQkJ IHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSBwaXBlX2NvbmZpZy0+YmFzZS5jcnRjOwo+ICsJc3RydWN0IGRybV9jcnRjICpj cnRjID0gcGlwZV9jb25maWctPnVhcGkuY3J0YzsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Yyk7Cj4gQEAgLTY0MTIsNyArNjQxMiw3IEBAIHN0YXRpYyB2b2lkIGljbF9waXBlX21i dXNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICBzdGF0aWMgdm9pZCBoYXN3ZWxs X2NydGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQkJ CXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSBwaXBlX2NvbmZpZy0+YmFzZS5jcnRjOwo+ICsJc3RydWN0IGRybV9jcnRjICpj cnRjID0gcGlwZV9jb25maWctPnVhcGkuY3J0YzsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCWVudW0gcGlwZSBwaXBlID0gaW50 ZWxfY3J0Yy0+cGlwZSwgaHN3X3dvcmthcm91bmRfcGlwZTsKPiBAQCAtNjUyMSw3ICs2NTIxLDcg QEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqcGlwZV9jb25maWcsCj4gIAo+ICBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wZml0X2Rpc2FibGUo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQo+ICB7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPmJh c2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMob2xk X2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0 Yy0+cGlwZTsKPiAgCj4gQEAgLTY1MzcsNyArNjUzNyw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtl X3BmaXRfZGlzYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dGUpCj4gIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIAkJCQkgIHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBvbGRfY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gb2xkX2NydGNfc3RhdGUt PnVhcGkuY3J0YzsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gQEAgLTY1 OTYsNyArNjU5Niw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4gIHN0YXRpYyB2b2lkIGhhc3dlbGxf Y3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiAg CQkJCSBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRy bV9jcnRjICpjcnRjID0gb2xkX2NydGNfc3RhdGUtPmJhc2UuY3J0YzsKPiArCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9IG9sZF9jcnRjX3N0YXRlLT51YXBpLmNydGM7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7Cj4gIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gIAllbnVtIHRyYW5z Y29kZXIgY3B1X3RyYW5zY29kZXIgPSBvbGRfY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7Cj4g QEAgLTY2MzAsNyArNjYzMCw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiAgCj4gIHN0YXRpYyB2b2lk IGk5eHhfcGZpdF9lbmFibGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCj4gIAlpZiAoIWNydGNf c3RhdGUtPmdtY2hfcGZpdC5jb250cm9sKQo+IEBAIC02NzYwLDE0ICs2NzYwLDE0IEBAIGludGVs X2F1eF9wb3dlcl9kb21haW4oc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQpCj4g IAo+ICBzdGF0aWMgdTY0IGdldF9jcnRjX3Bvd2VyX2RvbWFpbnMoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAg CXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+ cGlwZTsKPiAgCXU2NCBtYXNrOwo+ICAJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIgPSBjcnRj X3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0 aXZlKQo+ICsJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ ICAJbWFzayA9IEJJVF9VTEwoUE9XRVJfRE9NQUlOX1BJUEUocGlwZSkpOwo+IEBAIC02Nzc3LDcg KzY3NzcsNyBAQCBzdGF0aWMgdTY0IGdldF9jcnRjX3Bvd2VyX2RvbWFpbnMoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkJbWFzayB8PSBCSVRfVUxMKFBPV0VSX0RPTUFJ Tl9QSVBFX1BBTkVMX0ZJVFRFUihwaXBlKSk7Cj4gIAo+ICAJZHJtX2Zvcl9lYWNoX2VuY29kZXJf bWFzayhlbmNvZGVyLCAmZGV2X3ByaXYtPmRybSwKPiAtCQkJCSAgY3J0Y19zdGF0ZS0+YmFzZS5l bmNvZGVyX21hc2spIHsKPiArCQkJCSAgY3J0Y19zdGF0ZS0+dWFwaS5lbmNvZGVyX21hc2spIHsK PiAgCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9IHRvX2ludGVsX2VuY29k ZXIoZW5jb2Rlcik7Cj4gIAo+ICAJCW1hc2sgfD0gQklUX1VMTChpbnRlbF9lbmNvZGVyLT5wb3dl cl9kb21haW4pOwo+IEBAIC02Nzk1LDcgKzY3OTUsNyBAQCBzdGF0aWMgdTY0IGdldF9jcnRjX3Bv d2VyX2RvbWFpbnMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHN0YXRp YyB1NjQKPiAgbW9kZXNldF9nZXRfY3J0Y19wb3dlcl9kb21haW5zKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4g IAllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbjsKPiAgCXU2NCBkb21haW5z LCBuZXdfZG9tYWlucywgb2xkX2RvbWFpbnM7Cj4gQEAgLTY4MjQsNyArNjgyNCw3IEBAIHN0YXRp YyB2b2lkIG1vZGVzZXRfcHV0X3Bvd2VyX2RvbWFpbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBwaXBlX2Nv bmZpZy0+YmFzZS5jcnRjOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gcGlwZV9jb25maWct PnVhcGkuY3J0YzsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gQEAgLTY4 ODAsNyArNjg4MCw3IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfY3J0Y19lbmFibGUoc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAKPiAgc3RhdGljIHZvaWQgaTl4eF9z ZXRfcGxsX2RpdmlkZXJzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAo+ICAJSTkxNV9XUklURShG UDAoY3J0Yy0+cGlwZSksIGNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUuZnAwKTsKPiBAQCAtNjg5 MCw3ICs2ODkwLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9zZXRfcGxsX2RpdmlkZXJzKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICBzdGF0aWMgdm9pZCBpOXh4X2Ny dGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQkJICAg ICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9j cnRjICpjcnRjID0gcGlwZV9jb25maWctPmJhc2UuY3J0YzsKPiArCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9IHBpcGVfY29uZmlnLT51YXBpLmNydGM7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwo+IEBAIC02OTQwLDcgKzY5NDAsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NydGNf ZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCj4gIHN0YXRp YyB2b2lkIGk5eHhfcGZpdF9kaXNhYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7 Cj4gIAo+ICAJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+Z21jaF9wZml0LmNvbnRyb2wpCj4gQEAgLTY5 NTYsNyArNjk1Niw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfcGZpdF9kaXNhYmxlKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKPiAgc3RhdGljIHZvaWQgaTl4eF9j cnRjX2Rpc2FibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ICAJ CQkgICAgICBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0Jc3RydWN0 IGRybV9jcnRjICpjcnRjID0gb2xkX2NydGNfc3RhdGUtPmJhc2UuY3J0YzsKPiArCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9IG9sZF9jcnRjX3N0YXRlLT51YXBpLmNydGM7Cj4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IEBAIC03MTI0LDggKzcxMjQsOCBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9jb25uZWN0b3JfdmVyaWZ5X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJCWlmICghY3J0Y19zdGF0ZSkKPiAgCQkJcmV0dXJuOwo+ICAKPiAtCQlJ OTE1X1NUQVRFX1dBUk4oIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlLAo+IC0JCSAgICAgICJjb25u ZWN0b3IgaXMgYWN0aXZlLCBidXQgYXR0YWNoZWQgY3J0YyBpc24ndFxuIik7Cj4gKwkJSTkxNV9T VEFURV9XQVJOKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUsCj4gKwkJCQkiY29ubmVjdG9yIGlzIGFj dGl2ZSwgYnV0IGF0dGFjaGVkIGNydGMgaXNuJ3RcbiIpOwo+ICAKPiAgCQlpZiAoIWVuY29kZXIg fHwgZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFBfTVNUKQo+ICAJCQlyZXR1cm47Cj4g QEAgLTcxMzYsOCArNzEzNiw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2Nvbm5lY3Rvcl92ZXJpZnlf c3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJSTkxNV9TVEFU RV9XQVJOKGNvbm5fc3RhdGUtPmNydGMgIT0gZW5jb2Rlci0+YmFzZS5jcnRjLAo+ICAJCQkiYXR0 YWNoZWQgZW5jb2RlciBjcnRjIGRpZmZlcnMgZnJvbSBjb25uZWN0b3IgY3J0Y1xuIik7Cj4gIAl9 IGVsc2Ugewo+IC0JCUk5MTVfU1RBVEVfV0FSTihjcnRjX3N0YXRlICYmIGNydGNfc3RhdGUtPmJh c2UuYWN0aXZlLAo+IC0JCQkiYXR0YWNoZWQgY3J0YyBpcyBhY3RpdmUsIGJ1dCBjb25uZWN0b3Ig aXNuJ3RcbiIpOwo+ICsJCUk5MTVfU1RBVEVfV0FSTihjcnRjX3N0YXRlICYmIGNydGNfc3RhdGUt Pmh3LmFjdGl2ZSwKPiArCQkJCSJhdHRhY2hlZCBjcnRjIGlzIGFjdGl2ZSwgYnV0IGNvbm5lY3Rv ciBpc24ndFxuIik7Cj4gIAkJSTkxNV9TVEFURV9XQVJOKCFjcnRjX3N0YXRlICYmIGNvbm5fc3Rh dGUtPmJlc3RfZW5jb2RlciwKPiAgCQkJImJlc3QgZW5jb2RlciBzZXQgd2l0aG91dCBjcnRjIVxu Iik7Cj4gIAl9Cj4gQEAgLTcxNDUsNyArNzE0NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Nvbm5l Y3Rvcl92ZXJpZnlfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAo+ICBzdGF0aWMgaW50IHBpcGVfcmVxdWlyZWRfZmRpX2xhbmVzKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUg JiYgY3J0Y19zdGF0ZS0+aGFzX3BjaF9lbmNvZGVyKQo+ICsJaWYgKGNydGNfc3RhdGUtPmh3LmVu YWJsZSAmJiBjcnRjX3N0YXRlLT5oYXNfcGNoX2VuY29kZXIpCj4gIAkJcmV0dXJuIGNydGNfc3Rh dGUtPmZkaV9sYW5lczsKPiAgCj4gIAlyZXR1cm4gMDsKPiBAQCAtNzE1NSw3ICs3MTU1LDcgQEAg c3RhdGljIGludCBpcm9ubGFrZV9jaGVja19mZGlfbGFuZXMoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgZW51bSBwaXBlIHBpcGUsCj4gIAkJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZykKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gcGlwZV9j b25maWctPmJhc2Uuc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBw aXBlX2NvbmZpZy0+dWFwaS5zdGF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpvdGhlcl9jcnRj Owo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm90aGVyX2NydGNfc3RhdGU7Cj4gIAo+IEBA IC03MjI4LDcgKzcyMjgsNyBAQCBzdGF0aWMgaW50IGlyb25sYWtlX2ZkaV9jb21wdXRlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCQkJCSAgICAgICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4g Kwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2Nv bmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCWludCBsYW5lLCBsaW5rX2J3LCBmZGlfZG90Y2xv Y2ssIHJldDsKPiAgCWJvb2wgbmVlZHNfcmVjb21wdXRlID0gZmFsc2U7Cj4gIAo+IEBAIC03Mjc0 LDcgKzcyNzQsNyBAQCBzdGF0aWMgaW50IGlyb25sYWtlX2ZkaV9jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCj4gIGJvb2wgaHN3X2NydGNfc3RhdGVfaXBz X2NhcGFibGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5i YXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNy dGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCj4gIAkvKiBJUFMgb25seSBleGlzdHMg b24gVUxUIG1hY2hpbmVzIGFuZCBpcyB0aWVkIHRvIHBpcGUgQS4gKi8KPiBAQCAtNzMwNCw5ICs3 MzA0LDkgQEAgYm9vbCBoc3dfY3J0Y19zdGF0ZV9pcHNfY2FwYWJsZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgc3RhdGljIGJvb2wgaHN3X2NvbXB1dGVfaXBz X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAtCQl0b19pOTE1KGNydGNfc3RhdGUt PmJhc2UuY3J0Yy0+ZGV2KTsKPiArCQl0b19pOTE1KGNydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2 KTsKPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KPiAtCQl0b19p bnRlbF9hdG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4gKwkJdG9faW50ZWxf YXRvbWljX3N0YXRlKGNydGNfc3RhdGUtPnVhcGkuc3RhdGUpOwo+ICAKPiAgCWlmICghaHN3X2Ny dGNfc3RhdGVfaXBzX2NhcGFibGUoY3J0Y19zdGF0ZSkpCj4gIAkJcmV0dXJuIGZhbHNlOwo+IEBA IC03MzQ1LDcgKzczNDUsNyBAQCBzdGF0aWMgdTMyIGlsa19waXBlX3BpeGVsX3JhdGUoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAl1MzIgcGl4ZWxf cmF0ZTsKPiAgCj4gLQlwaXhlbF9yYXRlID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9k ZS5jcnRjX2Nsb2NrOwo+ICsJcGl4ZWxfcmF0ZSA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9t b2RlLmNydGNfY2xvY2s7Cj4gIAo+ICAJLyoKPiAgCSAqIFdlIG9ubHkgdXNlIElGLUlEIGludGVy bGFjaW5nLiBJZiB3ZSBldmVyIHVzZQo+IEBAIC03Mzc4LDEyICs3Mzc4LDEyIEBAIHN0YXRpYyB1 MzIgaWxrX3BpcGVfcGl4ZWxfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlw ZV9jb25maWcpCj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0 ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMt PmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNy dGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPiAgCj4gIAlpZiAoSEFTX0dNQ0goZGV2X3ByaXYp KQo+ICAJCS8qIEZJWE1FIGNhbGN1bGF0ZSBwcm9wZXIgcGlwZSBwaXhlbCByYXRlIGZvciBHTUNI IHBmaXQgKi8KPiAgCQljcnRjX3N0YXRlLT5waXhlbF9yYXRlID0KPiAtCQkJY3J0Y19zdGF0ZS0+ YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gKwkJCWNydGNfc3RhdGUtPmh3LmFkanVz dGVkX21vZGUuY3J0Y19jbG9jazsKPiAgCWVsc2UKPiAgCQljcnRjX3N0YXRlLT5waXhlbF9yYXRl ID0KPiAgCQkJaWxrX3BpcGVfcGl4ZWxfcmF0ZShjcnRjX3N0YXRlKTsKPiBAQCAtNzM5Myw3ICs3 MzkzLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFk anVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5o dy5hZGp1c3RlZF9tb2RlOwo+ICAJaW50IGNsb2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9kb3Rj bGtfZnJlcTsKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKPiBAQCAtNzQx OSw3ICs3NDE5LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2NvbXB1dGVfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAo+ICAKPiAgCWlmICgocGlwZV9jb25maWctPm91dHB1dF9mb3Jt YXQgPT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQyMCB8fAo+ICAJICAgICBwaXBlX2NvbmZp Zy0+b3V0cHV0X2Zvcm1hdCA9PSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDQ0KSAmJgo+IC0J ICAgICBwaXBlX2NvbmZpZy0+YmFzZS5jdG0pIHsKPiArCSAgICAgcGlwZV9jb25maWctPmh3LmN0 bSkgewo+ICAJCS8qCj4gIAkJICogVGhlcmUgaXMgb25seSBvbmUgcGlwZSBDU0MgdW5pdCBwZXIg cGlwZSwgYW5kIHdlIG5lZWQgdGhhdAo+ICAJCSAqIGZvciBvdXRwdXQgY29udmVyc2lvbiBmcm9t IFJHQi0+WUNCQ1IuIFNvIGlmIENUTSBpcyBhbHJlYWR5Cj4gQEAgLTc2MTMsNyArNzYxMyw3IEBA IHN0YXRpYyB2b2lkIHZsdl9wbGxiX3JlY2FsX29wYW1wKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgZW51bSBwaXBlCj4gIHN0YXRpYyB2b2lkIGludGVsX3BjaF90cmFuc2NvZGVy X3NldF9tX24oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJ CQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9saW5rX21fbiAqbV9uKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAr CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBp LmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAo+IEBA IC03NjQwLDcgKzc2NDAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRf bV9uKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YQo+ICAJCQkJCSBjb25z dCBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbiwKPiAgCQkJCQkgY29uc3Qgc3RydWN0IGludGVs X2xpbmtfbV9uICptMl9uMikKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJ ZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29k ZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiBAQCAtNzk1Myw3ICs3OTUzLDcgQEAg aW50IHZsdl9mb3JjZV9wbGxfb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBl bnVtIHBpcGUgcGlwZSwKPiAgCWlmICghcGlwZV9jb25maWcpCj4gIAkJcmV0dXJuIC1FTk9NRU07 Cj4gIAo+IC0JcGlwZV9jb25maWctPmJhc2UuY3J0YyA9ICZjcnRjLT5iYXNlOwo+ICsJcGlwZV9j b25maWctPnVhcGkuY3J0YyA9ICZjcnRjLT5iYXNlOwo+ICAJcGlwZV9jb25maWctPnBpeGVsX211 bHRpcGxpZXIgPSAxOwo+ICAJcGlwZV9jb25maWctPmRwbGwgPSAqZHBsbDsKPiAgCj4gQEAgLTgx MTMsMTEgKzgxMTMsMTEgQEAgc3RhdGljIHZvaWQgaTh4eF9jb21wdXRlX2RwbGwoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV90aW1pbmdz KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRj KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4g IAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNj b2RlcjsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0g JmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7 Cj4gIAl1MzIgY3J0Y192dG90YWwsIGNydGNfdmJsYW5rX2VuZDsKPiAgCWludCB2c3luY3NoaWZ0 ID0gMDsKPiAgCj4gQEAgLTgxNzUsNyArODE3NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldF9w aXBlX3RpbWluZ3MoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4g IAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV9zcmNfc2l6ZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAKPiBAQCAtODE4OSw3ICs4 MTg5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfc3JjX3NpemUoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAo+ICBzdGF0aWMgYm9vbCBpbnRlbF9w aXBlX2lzX2ludGVybGFjZWQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gIAllbnVt IHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsK PiAgCj4gIAlpZiAoSVNfR0VOKGRldl9wcml2LCAyKSkKPiBAQCAtODIxMSwzOSArODIxMSwzOSBA QCBzdGF0aWMgdm9pZCBpbnRlbF9nZXRfcGlwZV90aW1pbmdzKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ICAJdTMyIHRtcDsKPiAgCj4gIAl0bXAgPSBJOTE1X1JFQUQoSFRPVEFMKGNwdV90cmFu c2NvZGVyKSk7Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGRpc3Bs YXkgPSAodG1wICYgMHhmZmZmKSArIDE7Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9t b2RlLmNydGNfaHRvdGFsID0gKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7Cj4gKwlwaXBlX2Nv bmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5ID0gKHRtcCAmIDB4ZmZmZikgKyAx Owo+ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwgPSAoKHRtcCA+ PiAxNikgJiAweGZmZmYpICsgMTsKPiAgCj4gIAlpZiAoIXRyYW5zY29kZXJfaXNfZHNpKGNwdV90 cmFuc2NvZGVyKSkgewo+ICAJCXRtcCA9IEk5MTVfUkVBRChIQkxBTksoY3B1X3RyYW5zY29kZXIp KTsKPiAtCQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGJsYW5rX3N0YXJ0 ID0KPiArCQlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hibGFua19zdGFydCA9 Cj4gIAkJCQkJCQkodG1wICYgMHhmZmZmKSArIDE7Cj4gLQkJcGlwZV9jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZS5jcnRjX2hibGFua19lbmQgPQo+ICsJCXBpcGVfY29uZmlnLT5ody5hZGp1c3Rl ZF9tb2RlLmNydGNfaGJsYW5rX2VuZCA9Cj4gIAkJCQkJCSgodG1wID4+IDE2KSAmIDB4ZmZmZikg KyAxOwo+ICAJfQo+ICAJdG1wID0gSTkxNV9SRUFEKEhTWU5DKGNwdV90cmFuc2NvZGVyKSk7Cj4g LQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHN5bmNfc3RhcnQgPSAodG1w ICYgMHhmZmZmKSArIDE7Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNf aHN5bmNfZW5kID0gKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7Cj4gKwlwaXBlX2NvbmZpZy0+ aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX3N0YXJ0ID0gKHRtcCAmIDB4ZmZmZikgKyAxOwo+ ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19lbmQgPSAoKHRtcCA+ PiAxNikgJiAweGZmZmYpICsgMTsKPiAgCj4gIAl0bXAgPSBJOTE1X1JFQUQoVlRPVEFMKGNwdV90 cmFuc2NvZGVyKSk7Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRp c3BsYXkgPSAodG1wICYgMHhmZmZmKSArIDE7Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlLmNydGNfdnRvdGFsID0gKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7Cj4gKwlwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5ID0gKHRtcCAmIDB4ZmZmZikg KyAxOwo+ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192dG90YWwgPSAoKHRt cCA+PiAxNikgJiAweGZmZmYpICsgMTsKPiAgCj4gIAlpZiAoIXRyYW5zY29kZXJfaXNfZHNpKGNw dV90cmFuc2NvZGVyKSkgewo+ICAJCXRtcCA9IEk5MTVfUkVBRChWQkxBTksoY3B1X3RyYW5zY29k ZXIpKTsKPiAtCQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX3N0 YXJ0ID0KPiArCQlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZibGFua19zdGFy dCA9Cj4gIAkJCQkJCQkodG1wICYgMHhmZmZmKSArIDE7Cj4gLQkJcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZS5jcnRjX3ZibGFua19lbmQgPQo+ICsJCXBpcGVfY29uZmlnLT5ody5hZGp1 c3RlZF9tb2RlLmNydGNfdmJsYW5rX2VuZCA9Cj4gIAkJCQkJCSgodG1wID4+IDE2KSAmIDB4ZmZm ZikgKyAxOwo+ICAJfQo+ICAJdG1wID0gSTkxNV9SRUFEKFZTWU5DKGNwdV90cmFuc2NvZGVyKSk7 Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfc3RhcnQgPSAo dG1wICYgMHhmZmZmKSArIDE7Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNy dGNfdnN5bmNfZW5kID0gKCh0bXAgPj4gMTYpICYgMHhmZmZmKSArIDE7Cj4gKwlwaXBlX2NvbmZp Zy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX3N0YXJ0ID0gKHRtcCAmIDB4ZmZmZikgKyAx Owo+ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192c3luY19lbmQgPSAoKHRt cCA+PiAxNikgJiAweGZmZmYpICsgMTsKPiAgCj4gIAlpZiAoaW50ZWxfcGlwZV9pc19pbnRlcmxh Y2VkKHBpcGVfY29uZmlnKSkgewo+IC0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUu ZmxhZ3MgfD0gRFJNX01PREVfRkxBR19JTlRFUkxBQ0U7Cj4gLQkJcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZS5jcnRjX3Z0b3RhbCArPSAxOwo+IC0JCXBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGUuY3J0Y192YmxhbmtfZW5kICs9IDE7Cj4gKwkJcGlwZV9jb25maWctPmh3LmFk anVzdGVkX21vZGUuZmxhZ3MgfD0gRFJNX01PREVfRkxBR19JTlRFUkxBQ0U7Cj4gKwkJcGlwZV9j b25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192dG90YWwgKz0gMTsKPiArCQlwaXBlX2NvbmZp Zy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZibGFua19lbmQgKz0gMTsKPiAgCX0KPiAgfQo+ICAK PiBAQCAtODI1OCwyNyArODI1OCwyNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9nZXRfcGlwZV9zcmNf c2l6ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCXBpcGVfY29uZmlnLT5waXBlX3NyY19o ID0gKHRtcCAmIDB4ZmZmZikgKyAxOwo+ICAJcGlwZV9jb25maWctPnBpcGVfc3JjX3cgPSAoKHRt cCA+PiAxNikgJiAweGZmZmYpICsgMTsKPiAgCj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5tb2RlLnZk aXNwbGF5ID0gcGlwZV9jb25maWctPnBpcGVfc3JjX2g7Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5t b2RlLmhkaXNwbGF5ID0gcGlwZV9jb25maWctPnBpcGVfc3JjX3c7Cj4gKwlwaXBlX2NvbmZpZy0+ aHcubW9kZS52ZGlzcGxheSA9IHBpcGVfY29uZmlnLT5waXBlX3NyY19oOwo+ICsJcGlwZV9jb25m aWctPmh3Lm1vZGUuaGRpc3BsYXkgPSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdzsKPiAgfQo+ICAK PiAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUsCj4gIAkJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ ICB7Cj4gLQltb2RlLT5oZGlzcGxheSA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y19oZGlzcGxheTsKPiAtCW1vZGUtPmh0b3RhbCA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGUuY3J0Y19odG90YWw7Cj4gLQltb2RlLT5oc3luY19zdGFydCA9IHBpcGVfY29uZmln LT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19zdGFydDsKPiAtCW1vZGUtPmhzeW5jX2Vu ZCA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19lbmQ7Cj4gKwlt b2RlLT5oZGlzcGxheSA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaGRpc3Bs YXk7Cj4gKwltb2RlLT5odG90YWwgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRj X2h0b3RhbDsKPiArCW1vZGUtPmhzeW5jX3N0YXJ0ID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVk X21vZGUuY3J0Y19oc3luY19zdGFydDsKPiArCW1vZGUtPmhzeW5jX2VuZCA9IHBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHN5bmNfZW5kOwo+ICAKPiAtCW1vZGUtPnZkaXNwbGF5 ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Owo+IC0JbW9k ZS0+dnRvdGFsID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3Z0b3RhbDsK PiAtCW1vZGUtPnZzeW5jX3N0YXJ0ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZzeW5jX3N0YXJ0Owo+IC0JbW9kZS0+dnN5bmNfZW5kID0gcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZDsKPiArCW1vZGUtPnZkaXNwbGF5ID0gcGlwZV9j b25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheTsKPiArCW1vZGUtPnZ0b3RhbCA9 IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfdnRvdGFsOwo+ICsJbW9kZS0+dnN5 bmNfc3RhcnQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX3N0YXJ0 Owo+ICsJbW9kZS0+dnN5bmNfZW5kID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0 Y192c3luY19lbmQ7Cj4gIAo+IC0JbW9kZS0+ZmxhZ3MgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1 c3RlZF9tb2RlLmZsYWdzOwo+ICsJbW9kZS0+ZmxhZ3MgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5mbGFnczsKPiAgCW1vZGUtPnR5cGUgPSBEUk1fTU9ERV9UWVBFX0RSSVZFUjsKPiAg Cj4gLQltb2RlLT5jbG9jayA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19j bG9jazsKPiArCW1vZGUtPmNsb2NrID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0 Y19jbG9jazsKPiAgCj4gIAltb2RlLT5oc3luYyA9IGRybV9tb2RlX2hzeW5jKG1vZGUpOwo+ICAJ bW9kZS0+dnJlZnJlc2ggPSBkcm1fbW9kZV92cmVmcmVzaChtb2RlKTsKPiBAQCAtODI4Nyw3ICs4 Mjg3LDcgQEAgdm9pZCBpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUsCj4gIAo+ICBzdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFw aS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+YmFzZS5kZXYpOwo+ICAJdTMyIHBpcGVjb25mOwo+ICAKPiBAQCAtODMyNCw3ICs4MzI0 LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9zZXRfcGlwZWNvbmYoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkJfQo+ICAJfQo+ICAKPiAtCWlmIChjcnRjX3N0YXRl LT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkgewo+ ICsJaWYgKGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFH X0lOVEVSTEFDRSkgewo+ICAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCB8fAo+ICAJCSAg ICBpbnRlbF9jcnRjX2hhc190eXBlKGNydGNfc3RhdGUsIElOVEVMX09VVFBVVF9TRFZPKSkKPiAg CQkJcGlwZWNvbmYgfD0gUElQRUNPTkZfSU5URVJMQUNFX1dfRklFTERfSU5ESUNBVElPTjsKPiBA QCAtODczMyw3ICs4NzMzLDcgQEAgYmR3X2dldF9waXBlbWlzY19vdXRwdXRfZm9ybWF0KHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjKQo+ICAKPiAgc3RhdGljIHZvaWQgaTl4eF9nZXRfcGlwZV9jb2xv cl9jb25maWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3Rh dGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxf cGxhbmUoY3J0Yy0+YmFzZS5wcmltYXJ5KTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJZW51bSBpOXh4X3BsYW5lX2lk IGk5eHhfcGxhbmUgPSBwbGFuZS0+aTl4eF9wbGFuZTsKPiBAQCAtODg1Niw3ICs4ODU2LDcgQEAg c3RhdGljIGJvb2wgaTl4eF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gIAkgKiBidXQgaW4gY2FzZSB0aGUgcGlwZSBpcyBlbmFibGVkIHcvbyBhbnkgcG9ydHMgd2Ug bmVlZCBhIHNhbmUKPiAgCSAqIGRlZmF1bHQuCj4gIAkgKi8KPiAtCXBpcGVfY29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRf bW9kZS5jcnRjX2Nsb2NrID0KPiAgCQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayAvIHBpcGVfY29u ZmlnLT5waXhlbF9tdWx0aXBsaWVyOwo+ICAKPiAgCXJldCA9IHRydWU7Cj4gQEAgLTkzNzEsNyAr OTM3MSw3IEBAIHZvaWQgaW50ZWxfaW5pdF9wY2hfcmVmY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCj4gIHN0YXRpYyB2b2lkIGlyb25sYWtlX3NldF9waXBlY29uZihj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJ dTMyIHZhbDsKPiBAQCAtOTM5OSw3ICs5Mzk5LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2Vfc2V0 X3BpcGVjb25mKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJ aWYgKGNydGNfc3RhdGUtPmRpdGhlcikKPiAgCQl2YWwgfD0gKFBJUEVDT05GX0RJVEhFUl9FTiB8 IFBJUEVDT05GX0RJVEhFUl9UWVBFX1NQKTsKPiAgCj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5h ZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4gKwlpZiAoY3J0 Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNF KQo+ICAJCXZhbCB8PSBQSVBFQ09ORl9JTlRFUkxBQ0VEX0lMSzsKPiAgCWVsc2UKPiAgCQl2YWwg fD0gUElQRUNPTkZfUFJPR1JFU1NJVkU7Cj4gQEAgLTk0MjUsNyArOTQyNSw3IEBAIHN0YXRpYyB2 b2lkIGlyb25sYWtlX3NldF9waXBlY29uZihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAgCj4gIHN0YXRpYyB2b2lkIGhhc3dlbGxfc2V0X3BpcGVjb25mKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAr CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBp LmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj cnRjLT5iYXNlLmRldik7Cj4gIAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRj X3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiAgCXUzMiB2YWwgPSAwOwo+IEBAIC05NDMzLDcgKzk0 MzMsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NldF9waXBlY29uZihjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSAm JiBjcnRjX3N0YXRlLT5kaXRoZXIpCj4gIAkJdmFsIHw9IChQSVBFQ09ORl9ESVRIRVJfRU4gfCBQ SVBFQ09ORl9ESVRIRVJfVFlQRV9TUCk7Cj4gIAo+IC0JaWYgKGNydGNfc3RhdGUtPmJhc2UuYWRq dXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQo+ICsJaWYgKGNydGNf c3RhdGUtPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkK PiAgCQl2YWwgfD0gUElQRUNPTkZfSU5URVJMQUNFRF9JTEs7Cj4gIAllbHNlCj4gIAkJdmFsIHw9 IFBJUEVDT05GX1BST0dSRVNTSVZFOwo+IEBAIC05NDQ4LDcgKzk0NDgsNyBAQCBzdGF0aWMgdm9p ZCBoYXN3ZWxsX3NldF9waXBlY29uZihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiAgCj4gIHN0YXRpYyB2b2lkIGJkd19zZXRfcGlwZW1pc2MoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKPiAgCXUzMiB2YWwgPSAwOwo+ICAKPiBAQCAtOTYzNCw3ICs5NjM0LDcgQEAgc3Rh dGljIGludCBpcm9ubGFrZV9jcnRjX2NvbXB1dGVfY2xvY2soc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUgPQo+ IC0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiArCQl0 b19pbnRlbF9hdG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZSk7Cj4gIAljb25zdCBz dHJ1Y3QgaW50ZWxfbGltaXQgKmxpbWl0Owo+ICAJaW50IHJlZmNsayA9IDEyMDAwMDsKPiAgCj4g QEAgLTEwMDU5LDcgKzEwMDU5LDcgQEAgc3RhdGljIGludCBoYXN3ZWxsX2NydGNfY29tcHV0ZV9j bG9jayhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9Cj4gLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNf c3RhdGUtPmJhc2Uuc3RhdGUpOwo+ICsJCXRvX2ludGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRl LT51YXBpLnN0YXRlKTsKPiAgCj4gIAlpZiAoIWludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0 ZSwgSU5URUxfT1VUUFVUX0RTSSkgfHwKPiAgCSAgICBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEx KSB7Cj4gQEAgLTEwNjMwLDcgKzEwNjMwLDcgQEAgc3RhdGljIGludCBpbnRlbF9jaGVja19jdXJz b3Ioc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAl9Cj4gIAo+ICAJcmV0 ID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2tfcGxhbmVfc3RhdGUoJnBsYW5lX3N0YXRlLT5iYXNl LAo+IC0JCQkJCQkgICZjcnRjX3N0YXRlLT5iYXNlLAo+ICsJCQkJCQkgICZjcnRjX3N0YXRlLT51 YXBpLAo+ICAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiAgCQkJCQkJICBE Uk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCj4gIAkJCQkJCSAgdHJ1ZSwgdHJ1ZSk7Cj4gQEAg LTEwODE3LDcgKzEwODE3LDcgQEAgaTl4eF9jdXJzb3JfbWF4X3N0cmlkZShzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lLAo+ICAKPiAgc3RhdGljIHUzMiBpOXh4X2N1cnNvcl9jdGxfY3J0Yyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFw aS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Yy0+YmFzZS5kZXYpOwo+ICAJdTMyIGNudGwgPSAwOwo+ICAKPiBAQCAtMTEyMjksMTIgKzEx MjI5LDEyIEBAIGludCBpbnRlbF9nZXRfbG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAo+ICAJCWdvdG8gZmFpbDsKPiAgCX0KPiAgCj4gLQljcnRjX3N0YXRl LT5iYXNlLmFjdGl2ZSA9IGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlID0gdHJ1ZTsKPiArCWNydGNf c3RhdGUtPnVhcGkuYWN0aXZlID0gY3J0Y19zdGF0ZS0+dWFwaS5lbmFibGUgPSB0cnVlOwo+ICAK PiAgCWlmICghbW9kZSkKPiAgCQltb2RlID0gJmxvYWRfZGV0ZWN0X21vZGU7Cj4gIAo+IC0JcmV0 ID0gZHJtX2F0b21pY19zZXRfbW9kZV9mb3JfY3J0YygmY3J0Y19zdGF0ZS0+YmFzZSwgbW9kZSk7 Cj4gKwlyZXQgPSBkcm1fYXRvbWljX3NldF9tb2RlX2Zvcl9jcnRjKCZjcnRjX3N0YXRlLT51YXBp LCBtb2RlKTsKPiAgCWlmIChyZXQpCj4gIAkJZ290byBmYWlsOwo+ICAKPiBAQCAtMTE0NDIsNyAr MTE0NDIsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfY2xvY2tfZ2V0KHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+ICAJICogd2UgbWF5IG5lZWQgc29tZSBpZGVhIGZvciB0aGUgZG90Y2xv Y2sgYW55d2F5Lgo+ICAJICogQ2FsY3VsYXRlIG9uZSBiYXNlZCBvbiB0aGUgRkRJIGNvbmZpZ3Vy YXRpb24uCj4gIAkgKi8KPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19j bG9jayA9Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0KPiAg CQlpbnRlbF9kb3RjbG9ja19jYWxjdWxhdGUoaW50ZWxfZmRpX2xpbmtfZnJlcShkZXZfcHJpdiwg cGlwZV9jb25maWcpLAo+ICAJCQkJCSAmcGlwZV9jb25maWctPmZkaV9tX24pOwo+ICB9Cj4gQEAg LTExNDcyLDcgKzExNDcyLDcgQEAgaW50ZWxfZW5jb2Rlcl9jdXJyZW50X21vZGUoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gIAl9Cj4gIAo+IC0JY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjID0gJmNydGMtPmJhc2U7Cj4gKwljcnRjX3N0YXRlLT51YXBpLmNy dGMgPSAmY3J0Yy0+YmFzZTsKPiAgCj4gIAlpZiAoIWRldl9wcml2LT5kaXNwbGF5LmdldF9waXBl X2NvbmZpZyhjcnRjLCBjcnRjX3N0YXRlKSkgewo+ICAJCWtmcmVlKGNydGNfc3RhdGUpOwo+IEBA IC0xMTU0MywxMiArMTE1NDMsMTIgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5n ZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCQkJCSAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSwKPiAgCQkJ CSAgICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRj KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3Bs YW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJYm9vbCBtb2RlX2NoYW5n ZWQgPSBuZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpOwo+IC0JYm9vbCB3YXNfY3J0Y19lbmFibGVk ID0gb2xkX2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlOwo+IC0JYm9vbCBpc19jcnRjX2VuYWJsZWQg PSBjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZTsKPiArCWJvb2wgd2FzX2NydGNfZW5hYmxlZCA9IG9s ZF9jcnRjX3N0YXRlLT5ody5hY3RpdmU7Cj4gKwlib29sIGlzX2NydGNfZW5hYmxlZCA9IGNydGNf c3RhdGUtPmh3LmFjdGl2ZTsKPiAgCWJvb2wgdHVybl9vZmYsIHR1cm5fb24sIHZpc2libGUsIHdh c192aXNpYmxlOwo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTExNzE1LDkgKzExNzE1LDkgQEAgc3Rh dGljIGludCBpY2xfYWRkX2xpbmtlZF9wbGFuZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUpCj4gIAo+ICBzdGF0aWMgaW50IGljbF9jaGVja19udjEyX3BsYW5lcyhzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwo+IC0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUgPSB0b19pbnRlbF9hdG9t aWNfc3RhdGUoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT51YXBpLnN0 YXRlKTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsICpsaW5rZWQ7Cj4gIAlzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+ICAJaW50IGk7Cj4gQEAgLTExNzg3LDkg KzExNzg3LDkgQEAgc3RhdGljIGludCBpY2xfY2hlY2tfbnYxMl9wbGFuZXMoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAo+ICBzdGF0aWMgYm9vbCBjOF9wbGFuZXNfY2hh bmdlZChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhuZXdfY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhuZXdfY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlID0KPiAtCQl0b19pbnRlbF9hdG9taWNfc3RhdGUobmV3X2NydGNfc3RhdGUtPmJh c2Uuc3RhdGUpOwo+ICsJCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfY3J0Y19zdGF0ZS0+dWFw aS5zdGF0ZSk7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3Rh dGUgPQo+ICAJCWludGVsX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+ ICAKPiBAQCAtMTE4MDcsMTAgKzExODA3LDEwIEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9t aWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpfY3J0YywKPiAgCWJvb2wgbW9kZV9jaGFuZ2VkID0g bmVlZHNfbW9kZXNldChjcnRjX3N0YXRlKTsKPiAgCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8IDUgJiYgIUlTX0c0WChkZXZfcHJpdikgJiYKPiAtCSAgICBtb2RlX2NoYW5nZWQgJiYgIWNy dGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJICAgIG1vZGVfY2hhbmdlZCAmJiAhY3J0Y19zdGF0 ZS0+aHcuYWN0aXZlKQo+ICAJCWNydGNfc3RhdGUtPnVwZGF0ZV93bV9wb3N0ID0gdHJ1ZTsKPiAg Cj4gLQlpZiAobW9kZV9jaGFuZ2VkICYmIGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlICYmCj4gKwlp ZiAobW9kZV9jaGFuZ2VkICYmIGNydGNfc3RhdGUtPmh3LmVuYWJsZSAmJgo+ICAJICAgIGRldl9w cml2LT5kaXNwbGF5LmNydGNfY29tcHV0ZV9jbG9jayAmJgo+ICAJICAgICFXQVJOX09OKGNydGNf c3RhdGUtPnNoYXJlZF9kcGxsKSkgewo+ICAJCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LmNydGNf Y29tcHV0ZV9jbG9jayhjcnRjLCBjcnRjX3N0YXRlKTsKPiBAQCAtMTE4MjMsMTAgKzExODIzLDEw IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpf Y3J0YywKPiAgCSAqIHdoZW4gQzggcGxhbmVzIGFyZSBnZXR0aW5nIGVuYWJsZWQvZGlzYWJsZWQu Cj4gIAkgKi8KPiAgCWlmIChjOF9wbGFuZXNfY2hhbmdlZChjcnRjX3N0YXRlKSkKPiAtCQljcnRj X3N0YXRlLT5iYXNlLmNvbG9yX21nbXRfY2hhbmdlZCA9IHRydWU7Cj4gKwkJY3J0Y19zdGF0ZS0+ dWFwaS5jb2xvcl9tZ210X2NoYW5nZWQgPSB0cnVlOwo+ICAKPiAgCWlmIChtb2RlX2NoYW5nZWQg fHwgY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUgfHwKPiAtCSAgICBjcnRjX3N0YXRlLT5iYXNlLmNv bG9yX21nbXRfY2hhbmdlZCkgewo+ICsJICAgIGNydGNfc3RhdGUtPnVhcGkuY29sb3JfbWdtdF9j aGFuZ2VkKSB7Cj4gIAkJcmV0ID0gaW50ZWxfY29sb3JfY2hlY2soY3J0Y19zdGF0ZSk7Cj4gIAkJ aWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsKPiBAQCAtMTE5NDgsNyArMTE5NDgsNyBAQCBjb21w dXRlX2Jhc2VsaW5lX3BpcGVfYnBwKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCQkgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gLQlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+YmFzZS5zdGF0ZTsKPiAr CXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IHBpcGVfY29uZmlnLT51YXBpLnN0YXRl Owo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAgCXN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4gIAlpbnQgYnBwLCBpOwo+IEBAIC0xMjEw MSw3ICsxMjEwMSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2R1bXBfcGlwZV9jb25maWcoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJCQkJICAgc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAkJCQkgICBjb25zdCBjaGFyICpjb250ZXh0KQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25m aWctPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2Ny dGMocGlwZV9jb25maWctPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l Owo+IEBAIC0xMjExMCwxNCArMTIxMTAsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9waXBl X2NvbmZpZyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAo+ ICAJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWQ6JXNdIGVuYWJsZTogJXMgJXNcbiIsCj4gIAkJICAg ICAgY3J0Yy0+YmFzZS5iYXNlLmlkLCBjcnRjLT5iYXNlLm5hbWUsCj4gLQkJICAgICAgeWVzbm8o cGlwZV9jb25maWctPmJhc2UuZW5hYmxlKSwgY29udGV4dCk7Cj4gKwkJICAgICAgeWVzbm8ocGlw ZV9jb25maWctPmh3LmVuYWJsZSksIGNvbnRleHQpOwo+ICAKPiAtCWlmICghcGlwZV9jb25maWct PmJhc2UuZW5hYmxlKQo+ICsJaWYgKCFwaXBlX2NvbmZpZy0+aHcuZW5hYmxlKQo+ICAJCWdvdG8g ZHVtcF9wbGFuZXM7Cj4gIAo+ICAJc25wcmludGZfb3V0cHV0X3R5cGVzKGJ1Ziwgc2l6ZW9mKGJ1 ZiksIHBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMpOwo+ICAJRFJNX0RFQlVHX0tNUygiYWN0aXZl OiAlcywgb3V0cHV0X3R5cGVzOiAlcyAoMHgleCksIG91dHB1dCBmb3JtYXQ6ICVzXG4iLAo+IC0J CSAgICAgIHllc25vKHBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSksCj4gKwkJICAgICAgeWVzbm8o cGlwZV9jb25maWctPmh3LmFjdGl2ZSksCj4gIAkJICAgICAgYnVmLCBwaXBlX2NvbmZpZy0+b3V0 cHV0X3R5cGVzLAo+ICAJCSAgICAgIG91dHB1dF9mb3JtYXRzKHBpcGVfY29uZmlnLT5vdXRwdXRf Zm9ybWF0KSk7Cj4gIAo+IEBAIC0xMjE1NywxMCArMTIxNTcsMTAgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZHVtcF9waXBlX2NvbmZpZyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcsCj4gIAkJaW50ZWxfZHVtcF9pbmZvZnJhbWUoZGV2X3ByaXYsICZwaXBlX2NvbmZpZy0+ aW5mb2ZyYW1lcy5oZG1pKTsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJyZXF1ZXN0ZWQgbW9kZTpc biIpOwo+IC0JZHJtX21vZGVfZGVidWdfcHJpbnRtb2RlbGluZSgmcGlwZV9jb25maWctPmJhc2Uu bW9kZSk7Cj4gKwlkcm1fbW9kZV9kZWJ1Z19wcmludG1vZGVsaW5lKCZwaXBlX2NvbmZpZy0+aHcu bW9kZSk7Cj4gIAlEUk1fREVCVUdfS01TKCJhZGp1c3RlZCBtb2RlOlxuIik7Cj4gLQlkcm1fbW9k ZV9kZWJ1Z19wcmludG1vZGVsaW5lKCZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlKTsK PiAtCWludGVsX2R1bXBfY3J0Y190aW1pbmdzKCZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9t b2RlKTsKPiArCWRybV9tb2RlX2RlYnVnX3ByaW50bW9kZWxpbmUoJnBpcGVfY29uZmlnLT5ody5h ZGp1c3RlZF9tb2RlKTsKPiArCWludGVsX2R1bXBfY3J0Y190aW1pbmdzKCZwaXBlX2NvbmZpZy0+ aHcuYWRqdXN0ZWRfbW9kZSk7Cj4gIAlEUk1fREVCVUdfS01TKCJwb3J0IGNsb2NrOiAlZCwgcGlw ZSBzcmMgc2l6ZTogJWR4JWQsIHBpeGVsIHJhdGUgJWRcbiIsCj4gIAkJICAgICAgcGlwZV9jb25m aWctPnBvcnRfY2xvY2ssCj4gIAkJICAgICAgcGlwZV9jb25maWctPnBpcGVfc3JjX3csIHBpcGVf Y29uZmlnLT5waXBlX3NyY19oLAo+IEBAIC0xMjI3OCw3ICsxMjI3OCw3IEBAIHN0YXRpYyBpbnQK PiAgY2xlYXJfaW50ZWxfY3J0Y19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAtCQl0 b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiArCQl0b19pOTE1KGNydGNfc3Rh dGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzYXZlZF9z dGF0ZTsKPiAgCj4gIAlzYXZlZF9zdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCpzYXZlZF9zdGF0ZSks IEdGUF9LRVJORUwpOwo+IEBAIC0xMjMwMSw5ICsxMjMwMSwxMCBAQCBjbGVhcl9pbnRlbF9jcnRj X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJCXNhdmVkX3N0 YXRlLT53bSA9IGNydGNfc3RhdGUtPndtOwo+ICAKPiAgCS8qIEtlZXAgYmFzZSBkcm1fY3J0Y19z dGF0ZSBpbnRhY3QsIG9ubHkgY2xlYXIgb3VyIGV4dGVuZGVkIHN0cnVjdCAqLwo+IC0JQlVJTERf QlVHX09OKG9mZnNldG9mKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlLCBiYXNlKSk7Cj4gLQltZW1j cHkoJmNydGNfc3RhdGUtPmJhc2UgKyAxLCAmc2F2ZWRfc3RhdGUtPmJhc2UgKyAxLAo+IC0JICAg ICAgIHNpemVvZigqY3J0Y19zdGF0ZSkgLSBzaXplb2YoY3J0Y19zdGF0ZS0+YmFzZSkpOwo+ICsJ QlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlLCB1YXBpKSk7Cj4g KwlCVUlMRF9CVUdfT04ob2Zmc2V0b2Yoc3RydWN0IGludGVsX2NydGNfc3RhdGUsIGh3KSk7Cj4g KwltZW1jcHkoJmNydGNfc3RhdGUtPnVhcGkgKyAxLCAmc2F2ZWRfc3RhdGUtPnVhcGkgKyAxLAo+ ICsJICAgICAgIHNpemVvZigqY3J0Y19zdGF0ZSkgLSBzaXplb2YoY3J0Y19zdGF0ZS0+dWFwaSkp Owo+ICAKPiAgCWtmcmVlKHNhdmVkX3N0YXRlKTsKPiAgCXJldHVybiAwOwo+IEBAIC0xMjMxMiw4 ICsxMjMxMyw4IEBAIGNsZWFyX2ludGVsX2NydGNfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gIHN0YXRpYyBpbnQKPiAgaW50ZWxfbW9kZXNldF9waXBlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiAtCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9IHBpcGVfY29uZmlnLT5iYXNlLmNydGM7Cj4gLQlzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+YmFzZS5zdGF0ZTsKPiArCXN0cnVjdCBk cm1fY3J0YyAqY3J0YyA9IHBpcGVfY29uZmlnLT51YXBpLmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUgPSBwaXBlX2NvbmZpZy0+dWFwaS5zdGF0ZTsKPiAgCXN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cjsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7Cj4gQEAg LTEyMzMzLDEzICsxMjMzNCwxMyBAQCBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgCSAqIHBvc2l0aXZlIG9yIG5lZ2F0aXZl IHBvbGFyaXR5IGlzIHJlcXVlc3RlZCwgdHJlYXQgdGhpcyBhcyBtZWFuaW5nCj4gIAkgKiBuZWdh dGl2ZSBwb2xhcml0eS4KPiAgCSAqLwo+IC0JaWYgKCEocGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZS5mbGFncyAmCj4gKwlpZiAoIShwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5m bGFncyAmCj4gIAkgICAgICAoRFJNX01PREVfRkxBR19QSFNZTkMgfCBEUk1fTU9ERV9GTEFHX05I U1lOQykpKQo+IC0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gRFJN X01PREVfRkxBR19OSFNZTkM7Cj4gKwkJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuZmxh Z3MgfD0gRFJNX01PREVfRkxBR19OSFNZTkM7Cj4gIAo+IC0JaWYgKCEocGlwZV9jb25maWctPmJh c2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmCj4gKwlpZiAoIShwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5mbGFncyAmCj4gIAkgICAgICAoRFJNX01PREVfRkxBR19QVlNZTkMgfCBEUk1fTU9E RV9GTEFHX05WU1lOQykpKQo+IC0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxh Z3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7Cj4gKwkJcGlwZV9jb25maWctPmh3LmFkanVzdGVk X21vZGUuZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7Cj4gIAo+ICAJcmV0ID0gY29tcHV0 ZV9iYXNlbGluZV9waXBlX2JwcCh0b19pbnRlbF9jcnRjKGNydGMpLAo+ICAJCQkJCXBpcGVfY29u ZmlnKTsKPiBAQCAtMTIzNTYsNyArMTIzNTcsNyBAQCBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmln KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgCSAqIGNvbXB1dGF0aW9u IHRvIGNsZWFybHkgZGlzdGluZ3Vpc2ggaXQgZnJvbSB0aGUgYWRqdXN0ZWQgbW9kZSwgd2hpY2gK PiAgCSAqIGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZSBjb25uZWN0b3JzIGluIHRoZSBiZWxvdyByZXRy eSBsb29wLgo+ICAJICovCj4gLQlkcm1fbW9kZV9nZXRfaHZfdGltaW5nKCZwaXBlX2NvbmZpZy0+ YmFzZS5tb2RlLAo+ICsJZHJtX21vZGVfZ2V0X2h2X3RpbWluZygmcGlwZV9jb25maWctPmh3Lm1v ZGUsCj4gIAkJCSAgICAgICAmcGlwZV9jb25maWctPnBpcGVfc3JjX3csCj4gIAkJCSAgICAgICAm cGlwZV9jb25maWctPnBpcGVfc3JjX2gpOwo+ICAKPiBAQCAtMTIzODksNyArMTIzOTAsNyBAQCBp bnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykKPiAgCXBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVyID0gMTsKPiAgCj4gIAkvKiBG aWxsIGluIGRlZmF1bHQgY3J0YyB0aW1pbmdzLCBhbGxvdyBlbmNvZGVycyB0byBvdmVyd3JpdGUg dGhlbS4gKi8KPiAtCWRybV9tb2RlX3NldF9jcnRjaW5mbygmcGlwZV9jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZSwKPiArCWRybV9tb2RlX3NldF9jcnRjaW5mbygmcGlwZV9jb25maWctPmh3LmFk anVzdGVkX21vZGUsCj4gIAkJCSAgICAgIENSVENfU1RFUkVPX0RPVUJMRSk7Cj4gIAo+ICAJLyog UGFzcyBvdXIgbW9kZSB0byB0aGUgY29ubmVjdG9ycyBhbmQgdGhlIENSVEMgdG8gZ2l2ZSB0aGVt IGEgY2hhbmNlIHRvCj4gQEAgLTEyNDE0LDcgKzEyNDE1LDcgQEAgaW50ZWxfbW9kZXNldF9waXBl X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIAkvKiBTZXQg ZGVmYXVsdCBwb3J0IGNsb2NrIGlmIG5vdCBvdmVyd3JpdHRlbiBieSB0aGUgZW5jb2Rlci4gTmVl ZHMgdG8gYmUKPiAgCSAqIGRvbmUgYWZ0ZXJ3YXJkcyBpbiBjYXNlIHRoZSBlbmNvZGVyIGFkanVz dHMgdGhlIG1vZGUuICovCj4gIAlpZiAoIXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrKQo+IC0JCXBp cGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5j cnRjX2Nsb2NrCj4gKwkJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcu YWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrCj4gIAkJCSogcGlwZV9jb25maWctPnBpeGVsX211bHRp cGxpZXI7Cj4gIAo+ICAJcmV0ID0gaW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyh0b19pbnRlbF9j cnRjKGNydGMpLCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTEyNDU4LDcgKzEyNDU5LDcgQEAgYm9vbCBp bnRlbF9mdXp6eV9jbG9ja19jaGVjayhpbnQgY2xvY2sxLCBpbnQgY2xvY2syKQo+ICAKPiAgCWRp ZmYgPSBhYnMoY2xvY2sxIC0gY2xvY2syKTsKPiAgCj4gLQlpZiAoKCgoKGRpZmYgKyBjbG9jazEg KyBjbG9jazIpICogMTAwKSkgLyAoY2xvY2sxICsgY2xvY2syKSkgPCAxMDUpCj4gKwlpZiAoKCgo KGRpZmYgKyBjbG9jazEgKyBjbG9jazIpICogMTAwKSkgLyAoY2xvY2sxICsgY2xvY2syKSkgPCAx MDEpCj4gIAkJcmV0dXJuIHRydWU7Cj4gIAo+ICAJcmV0dXJuIGZhbHNlOwo+IEBAIC0xMjU3OCwx MiArMTI1NzksMTIgQEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3VycmVudF9jb25maWcsCj4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJCQkgIGJvb2wgZmFzdHNldCkKPiAgewo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjdXJyZW50X2NvbmZp Zy0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjdXJyZW50X2NvbmZpZy0+dWFwaS5jcnRjLT5kZXYpOwo+ICAJYm9vbCByZXQg PSB0cnVlOwo+ICAJdTMyIGJwX2dhbW1hID0gMDsKPiAgCWJvb2wgZml4dXBfaW5oZXJpdGVkID0g ZmFzdHNldCAmJgo+IC0JCShjdXJyZW50X2NvbmZpZy0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3Mg JiBJOTE1X01PREVfRkxBR19JTkhFUklURUQpICYmCj4gLQkJIShwaXBlX2NvbmZpZy0+YmFzZS5t b2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVfRkxBR19JTkhFUklURUQpOwo+ICsJCShjdXJy ZW50X2NvbmZpZy0+aHcubW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJ VEVEKSAmJgo+ICsJCSEocGlwZV9jb25maWctPmh3Lm1vZGUucHJpdmF0ZV9mbGFncyAmIEk5MTVf TU9ERV9GTEFHX0lOSEVSSVRFRCk7Cj4gIAo+ICAJaWYgKGZpeHVwX2luaGVyaXRlZCAmJiAhZmFz dGJvb3RfZW5hYmxlZChkZXZfcHJpdikpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJpbml0aWFsIG1v ZGVzZXQgYW5kIGZhc3Rib290IG5vdCBzZXRcbiIpOwo+IEBAIC0xMjc3MiwxOSArMTI3NzMsMTkg QEAgaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3VycmVudF9jb25maWcsCj4gIAo+ICAJUElQRV9DT05GX0NIRUNLX1gob3V0cHV0X3R5cGVz KTsKPiAgCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlz cGxheSk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShiYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90 YWwpOwo+IC0JUElQRV9DT05GX0NIRUNLX0koYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaGJsYW5r X3N0YXJ0KTsKPiAtCVBJUEVfQ09ORl9DSEVDS19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hi bGFua19lbmQpOwo+IC0JUElQRV9DT05GX0NIRUNLX0koYmFzZS5hZGp1c3RlZF9tb2RlLmNydGNf aHN5bmNfc3RhcnQpOwo+IC0JUElQRV9DT05GX0NIRUNLX0koYmFzZS5hZGp1c3RlZF9tb2RlLmNy dGNfaHN5bmNfZW5kKTsKPiArCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0 Y19oZGlzcGxheSk7Cj4gKwlQSVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9tb2RlLmNydGNf aHRvdGFsKTsKPiArCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19oYmxh bmtfc3RhcnQpOwo+ICsJUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hi bGFua19lbmQpOwo+ICsJUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hz eW5jX3N0YXJ0KTsKPiArCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21vZGUuY3J0Y19o c3luY19lbmQpOwo+ICAKPiAtCVBJUEVfQ09ORl9DSEVDS19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZkaXNwbGF5KTsKPiAtCVBJUEVfQ09ORl9DSEVDS19JKGJhc2UuYWRqdXN0ZWRfbW9kZS5j cnRjX3Z0b3RhbCk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShiYXNlLmFkanVzdGVkX21vZGUuY3J0 Y192Ymxhbmtfc3RhcnQpOwo+IC0JUElQRV9DT05GX0NIRUNLX0koYmFzZS5hZGp1c3RlZF9tb2Rl LmNydGNfdmJsYW5rX2VuZCk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShiYXNlLmFkanVzdGVkX21v ZGUuY3J0Y192c3luY19zdGFydCk7Cj4gLQlQSVBFX0NPTkZfQ0hFQ0tfSShiYXNlLmFkanVzdGVk X21vZGUuY3J0Y192c3luY19lbmQpOwo+ICsJUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRf bW9kZS5jcnRjX3ZkaXNwbGF5KTsKPiArCVBJUEVfQ09ORl9DSEVDS19JKGh3LmFkanVzdGVkX21v ZGUuY3J0Y192dG90YWwpOwo+ICsJUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZibGFua19zdGFydCk7Cj4gKwlQSVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9tb2Rl LmNydGNfdmJsYW5rX2VuZCk7Cj4gKwlQSVBFX0NPTkZfQ0hFQ0tfSShody5hZGp1c3RlZF9tb2Rl LmNydGNfdnN5bmNfc3RhcnQpOwo+ICsJUElQRV9DT05GX0NIRUNLX0koaHcuYWRqdXN0ZWRfbW9k ZS5jcnRjX3ZzeW5jX2VuZCk7Cj4gIAo+ICAJUElQRV9DT05GX0NIRUNLX0kocGl4ZWxfbXVsdGlw bGllcik7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfSShvdXRwdXRfZm9ybWF0KTsKPiBAQCAtMTI4MDAs MTcgKzEyODAxLDE3IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29uZmlnLAo+ICAKPiAgCVBJUEVfQ09ORl9DSEVDS19C T09MX0lOQ09NUExFVEUoaGFzX2F1ZGlvKTsKPiAgCj4gLQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1Mo YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzLAo+ICsJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3LmFk anVzdGVkX21vZGUuZmxhZ3MsCj4gIAkJCSAgICAgIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKTsK PiAgCj4gIAlpZiAoIVBJUEVfQ09ORl9RVUlSSyhQSVBFX0NPTkZJR19RVUlSS19NT0RFX1NZTkNf RkxBR1MpKSB7Cj4gLQkJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGJhc2UuYWRqdXN0ZWRfbW9kZS5m bGFncywKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcuYWRqdXN0ZWRfbW9kZS5mbGFncywK PiAgCQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfUEhTWU5DKTsKPiAtCQlQSVBFX0NPTkZfQ0hFQ0tf RkxBR1MoYmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzLAo+ICsJCVBJUEVfQ09ORl9DSEVDS19GTEFH Uyhody5hZGp1c3RlZF9tb2RlLmZsYWdzLAo+ICAJCQkJICAgICAgRFJNX01PREVfRkxBR19OSFNZ TkMpOwo+IC0JCVBJUEVfQ09ORl9DSEVDS19GTEFHUyhiYXNlLmFkanVzdGVkX21vZGUuZmxhZ3Ms Cj4gKwkJUElQRV9DT05GX0NIRUNLX0ZMQUdTKGh3LmFkanVzdGVkX21vZGUuZmxhZ3MsCj4gIAkJ CQkgICAgICBEUk1fTU9ERV9GTEFHX1BWU1lOQyk7Cj4gLQkJUElQRV9DT05GX0NIRUNLX0ZMQUdT KGJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncywKPiArCQlQSVBFX0NPTkZfQ0hFQ0tfRkxBR1MoaHcu YWRqdXN0ZWRfbW9kZS5mbGFncywKPiAgCQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfTlZTWU5DKTsK PiAgCX0KPiAgCj4gQEAgLTEyODQ5LDcgKzEyODUwLDcgQEAgaW50ZWxfcGlwZV9jb25maWdfY29t cGFyZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3VycmVudF9jb25maWcsCj4gIAo+ ICAJCWJwX2dhbW1hID0gaW50ZWxfY29sb3JfZ2V0X2dhbW1hX2JpdF9wcmVjaXNpb24ocGlwZV9j b25maWcpOwo+ICAJCWlmIChicF9nYW1tYSkKPiAtCQkJUElQRV9DT05GX0NIRUNLX0NPTE9SX0xV VChnYW1tYV9tb2RlLCBiYXNlLmdhbW1hX2x1dCwgYnBfZ2FtbWEpOwo+ICsJCQlQSVBFX0NPTkZf Q0hFQ0tfQ09MT1JfTFVUKGdhbW1hX21vZGUsIHVhcGkuZ2FtbWFfbHV0LCBicF9nYW1tYSk7Cj4g IAo+ICAJfQo+ICAKPiBAQCAtMTI4OTQsNyArMTI4OTUsNyBAQCBpbnRlbF9waXBlX2NvbmZpZ19j b21wYXJlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywKPiAg CWlmIChJU19HNFgoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkKPiAgCQlQ SVBFX0NPTkZfQ0hFQ0tfSShwaXBlX2JwcCk7Cj4gIAo+IC0JUElQRV9DT05GX0NIRUNLX0NMT0NL X0ZVWlpZKGJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrKTsKPiArCVBJUEVfQ09ORl9DSEVD S19DTE9DS19GVVpaWShody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2spOwo+ICAJUElQRV9DT05G X0NIRUNLX0NMT0NLX0ZVWlpZKHBvcnRfY2xvY2spOwo+ICAKPiAgCVBJUEVfQ09ORl9DSEVDS19J KG1pbl92b2x0YWdlX2xldmVsKTsKPiBAQCAtMTI5MjUsNyArMTI5MjYsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9waXBlX2NvbmZpZ19zYW5pdHlfY2hlY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAJaWYgKHBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsKPiAgCQlp bnQgZmRpX2RvdGNsb2NrID0gaW50ZWxfZG90Y2xvY2tfY2FsY3VsYXRlKGludGVsX2ZkaV9saW5r X2ZyZXEoZGV2X3ByaXYsIHBpcGVfY29uZmlnKSwKPiAgCQkJCQkJCSAgICAmcGlwZV9jb25maWct PmZkaV9tX24pOwo+IC0JCWludCBkb3RjbG9jayA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y19jbG9jazsKPiArCQlpbnQgZG90Y2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcuYWRq dXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICAKPiAgCQkvKgo+ICAJCSAqIEZESSBhbHJlYWR5IHBy b3ZpZGVkIG9uZSBpZGVhIGZvciB0aGUgZG90Y2xvY2suCj4gQEAgLTEyOTUzLDcgKzEyOTU0LDcg QEAgc3RhdGljIHZvaWQgdmVyaWZ5X3dtX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ ICAJY29uc3QgZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJaW50IHBsYW5lLCBsZXZl bCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJpdik7Cj4gIAo+IC0JaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPCA5IHx8ICFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4g KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgfHwgIW5ld19jcnRjX3N0YXRlLT5ody5hY3Rp dmUpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWh3ID0ga3phbGxvYyhzaXplb2YoKmh3KSwgR0ZQX0tF Uk5FTCk7Cj4gQEAgLTEzMTYyLDEyICsxMzE2MywxMiBAQCB2ZXJpZnlfY3J0Y19zdGF0ZShzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsK PiAgCWJvb2wgYWN0aXZlOwo+ICAKPiAtCXN0YXRlID0gb2xkX2NydGNfc3RhdGUtPmJhc2Uuc3Rh dGU7Cj4gLQlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSgmb2xkX2NydGNf c3RhdGUtPmJhc2UpOwo+ICsJc3RhdGUgPSBvbGRfY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZTsKPiAr CV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKCZvbGRfY3J0Y19zdGF0ZS0+ dWFwaSk7Cj4gIAlwaXBlX2NvbmZpZyA9IG9sZF9jcnRjX3N0YXRlOwo+ICAJbWVtc2V0KHBpcGVf Y29uZmlnLCAwLCBzaXplb2YoKnBpcGVfY29uZmlnKSk7Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5j cnRjID0gJmNydGMtPmJhc2U7Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5zdGF0ZSA9IHN0YXRlOwo+ ICsJcGlwZV9jb25maWctPnVhcGkuY3J0YyA9ICZjcnRjLT5iYXNlOwo+ICsJcGlwZV9jb25maWct PnVhcGkuc3RhdGUgPSBzdGF0ZTsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJbQ1JUQzolZDolc11c biIsIGNydGMtPmJhc2UuYmFzZS5pZCwgY3J0Yy0+YmFzZS5uYW1lKTsKPiAgCj4gQEAgLTEzMTc1 LDIzICsxMzE3NiwyNiBAQCB2ZXJpZnlfY3J0Y19zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiAgCj4gIAkvKiB3ZSBrZWVwIGJvdGggcGlwZXMgZW5hYmxlZCBvbiA4MzAgKi8KPiAgCWlm IChJU19JODMwKGRldl9wcml2KSkKPiAtCQlhY3RpdmUgPSBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5h Y3RpdmU7Cj4gKwkJYWN0aXZlID0gbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZTsKPiAgCj4gLQlJ OTE1X1NUQVRFX1dBUk4obmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlICE9IGFjdGl2ZSwKPiAt CSAgICAgImNydGMgYWN0aXZlIHN0YXRlIGRvZXNuJ3QgbWF0Y2ggd2l0aCBodyBzdGF0ZSAiCj4g LQkgICAgICIoZXhwZWN0ZWQgJWksIGZvdW5kICVpKVxuIiwgbmV3X2NydGNfc3RhdGUtPmJhc2Uu YWN0aXZlLCBhY3RpdmUpOwo+ICsJSTkxNV9TVEFURV9XQVJOKG5ld19jcnRjX3N0YXRlLT5ody5h Y3RpdmUgIT0gYWN0aXZlLAo+ICsJCQkiY3J0YyBhY3RpdmUgc3RhdGUgZG9lc24ndCBtYXRjaCB3 aXRoIGh3IHN0YXRlICIKPiArCQkJIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLAo+ICsJCQlu ZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlLCBhY3RpdmUpOwo+ICAKPiAtCUk5MTVfU1RBVEVfV0FS TihjcnRjLT5hY3RpdmUgIT0gbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlLAo+IC0JICAgICAi dHJhbnNpdGlvbmFsIGFjdGl2ZSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBhdG9taWMgaHcgc3RhdGUg Igo+IC0JICAgICAiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIG5ld19jcnRjX3N0YXRlLT5i YXNlLmFjdGl2ZSwgY3J0Yy0+YWN0aXZlKTsKPiArCUk5MTVfU1RBVEVfV0FSTihjcnRjLT5hY3Rp dmUgIT0gbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSwKPiArCQkJInRyYW5zaXRpb25hbCBhY3Rp dmUgc3RhdGUgZG9lcyBub3QgbWF0Y2ggYXRvbWljIGh3IHN0YXRlICIKPiArCQkJIihleHBlY3Rl ZCAlaSwgZm91bmQgJWkpXG4iLAo+ICsJCQluZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlLCBjcnRj LT5hY3RpdmUpOwo+ICAKPiAgCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsICZjcnRjLT5i YXNlLCBlbmNvZGVyKSB7Cj4gIAkJZW51bSBwaXBlIHBpcGU7Cj4gIAo+ICAJCWFjdGl2ZSA9IGVu Y29kZXItPmdldF9od19zdGF0ZShlbmNvZGVyLCAmcGlwZSk7Cj4gLQkJSTkxNV9TVEFURV9XQVJO KGFjdGl2ZSAhPSBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUsCj4gLQkJCSJbRU5DT0RFUjol aV0gYWN0aXZlICVpIHdpdGggY3J0YyBhY3RpdmUgJWlcbiIsCj4gLQkJCWVuY29kZXItPmJhc2Uu YmFzZS5pZCwgYWN0aXZlLCBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpOwo+ICsJCUk5MTVf U1RBVEVfV0FSTihhY3RpdmUgIT0gbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSwKPiArCQkJCSJb RU5DT0RFUjolaV0gYWN0aXZlICVpIHdpdGggY3J0YyBhY3RpdmUgJWlcbiIsCj4gKwkJCQllbmNv ZGVyLT5iYXNlLmJhc2UuaWQsIGFjdGl2ZSwKPiArCQkJCW5ld19jcnRjX3N0YXRlLT5ody5hY3Rp dmUpOwo+ICAKPiAgCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICYmIGNydGMtPnBpcGUgIT0gcGlw ZSwKPiAgCQkJCSJFbmNvZGVyIGNvbm5lY3RlZCB0byB3cm9uZyBwaXBlICVjXG4iLAo+IEBAIC0x MzIwMyw3ICsxMzIwNyw3IEBAIHZlcmlmeV9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAo+ICAKPiAgCWludGVsX2NydGNfY29tcHV0ZV9waXhlbF9yYXRlKHBpcGVfY29uZmlnKTsK PiAgCj4gLQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiArCWlmICghbmV3X2Ny dGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaW50ZWxfcGlwZV9jb25m aWdfc2FuaXR5X2NoZWNrKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7Cj4gQEAgLTEzMjY1LDcgKzEz MjY5LDcgQEAgdmVyaWZ5X3NpbmdsZV9kcGxsX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCj4gIAljcnRjX21hc2sgPSBkcm1fY3J0Y19tYXNrKCZjcnRjLT5iYXNl KTsKPiAgCj4gLQlpZiAobmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJaWYgKG5ld19j cnRjX3N0YXRlLT5ody5hY3RpdmUpCj4gIAkJSTkxNV9TVEFURV9XQVJOKCEocGxsLT5hY3RpdmVf bWFzayAmIGNydGNfbWFzayksCj4gIAkJCQkicGxsIGFjdGl2ZSBtaXNtYXRjaCAoZXhwZWN0ZWQg cGlwZSAlYyBpbiBhY3RpdmUgbWFzayAweCUwMngpXG4iLAo+ICAJCQkJcGlwZV9uYW1lKGRybV9j cnRjX2luZGV4KCZjcnRjLT5iYXNlKSksIHBsbC0+YWN0aXZlX21hc2spOwo+IEBAIC0xMzM0Myw3 ICsxMzM0Nyw3IEBAIGludGVsX21vZGVzZXRfdmVyaWZ5X2Rpc2FibGVkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIHN0YXRpYyB2b2lkIHVwZGF0ZV9zY2FubGluZV9v ZmZzZXQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAt CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNl LmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCj4gIAkvKgo+IEBAIC0xMzM3NCw3ICsxMzM3 OCw3IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZV9zY2FubGluZV9vZmZzZXQoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkgKiBhbnN3ZXIgdGhhdCdzIHNsaWdodGx5 IGluIHRoZSBmdXR1cmUuCj4gIAkgKi8KPiAgCWlmIChJU19HRU4oZGV2X3ByaXYsIDIpKSB7Cj4g LQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Y19z dGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlID0gJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gIAkJ aW50IHZ0b3RhbDsKPiAgCj4gIAkJdnRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192dG90YWw7 Cj4gQEAgLTEzNDI0LDcgKzEzNDI4LDcgQEAgc3RhdGljIGludCBoYXN3ZWxsX21vZGVfc2V0X3Bs YW5lc193b3JrYXJvdW5kKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAKPiAg CS8qIGxvb2sgYXQgYWxsIGNydGMncyB0aGF0IGFyZSBnb2luZyB0byBiZSBlbmFibGVkIGluIGR1 cmluZyBtb2Rlc2V0ICovCj4gIAlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0 ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+IC0JCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3Rp dmUgfHwKPiArCQlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fAo+ICAJCSAgICAhbmVlZHNf bW9kZXNldChjcnRjX3N0YXRlKSkKPiAgCQkJY29udGludWU7Cj4gIAo+IEBAIC0xMzQ0OSw3ICsx MzQ1Myw3IEBAIHN0YXRpYyBpbnQgaGFzd2VsbF9tb2RlX3NldF9wbGFuZXNfd29ya2Fyb3VuZChz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCj4gIAkJY3J0Y19zdGF0ZS0+aHN3 X3dvcmthcm91bmRfcGlwZSA9IElOVkFMSURfUElQRTsKPiAgCj4gLQkJaWYgKCFjcnRjX3N0YXRl LT5iYXNlLmFjdGl2ZSB8fAo+ICsJCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlIHx8Cj4gIAkJ ICAgIG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAt MTM0OTIsMTIgKzEzNDk2LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9jaGVja3Moc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAo+ICAJZm9yX2VhY2hfb2xkbmV3X2lu dGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAo+ICAJCQkJCSAg ICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+IC0JCWlmIChuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3Rp dmUpCj4gKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5ody5hY3RpdmUpCj4gIAkJCXN0YXRlLT5hY3Rp dmVfcGlwZXMgfD0gQklUKGNydGMtPnBpcGUpOwo+ICAJCWVsc2UKPiAgCQkJc3RhdGUtPmFjdGl2 ZV9waXBlcyAmPSB+QklUKGNydGMtPnBpcGUpOwo+ICAKPiAtCQlpZiAob2xkX2NydGNfc3RhdGUt PmJhc2UuYWN0aXZlICE9IG5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiArCQlpZiAob2xk X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSAhPSBuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQo+ICAJ CQlzdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcyB8PSBCSVQoY3J0Yy0+cGlwZSk7Cj4gIAl9Cj4g IAo+IEBAIC0xMzUzNiw3ICsxMzU0MCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfY2hlY2tf ZmFzdHNldChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhCj4gIAlp ZiAoIWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUob2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0 YXRlLCB0cnVlKSkKPiAgCQlyZXR1cm47Cj4gIAo+IC0JbmV3X2NydGNfc3RhdGUtPmJhc2UubW9k ZV9jaGFuZ2VkID0gZmFsc2U7Cj4gKwluZXdfY3J0Y19zdGF0ZS0+dWFwaS5tb2RlX2NoYW5nZWQg PSBmYWxzZTsKPiAgCW5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGlwZSA9IHRydWU7Cj4gIAo+ICAJ LyoKPiBAQCAtMTM1NzEsOSArMTM1NzUsOSBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVj ayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJLyogQ2F0Y2ggSTkxNV9NT0RFX0ZMQUdfSU5I RVJJVEVEICovCj4gIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwg Y3J0Yywgb2xkX2NydGNfc3RhdGUsCj4gIAkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4g LQkJaWYgKG5ld19jcnRjX3N0YXRlLT5iYXNlLm1vZGUucHJpdmF0ZV9mbGFncyAhPQo+IC0JCSAg ICBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3MpCj4gLQkJCW5ld19jcnRj X3N0YXRlLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gKwkJaWYgKG5ld19jcnRjX3N0YXRl LT5ody5tb2RlLnByaXZhdGVfZmxhZ3MgIT0KPiArCQkgICAgb2xkX2NydGNfc3RhdGUtPmh3Lm1v ZGUucHJpdmF0ZV9mbGFncykKPiArCQkJbmV3X2NydGNfc3RhdGUtPnVhcGkubW9kZV9jaGFuZ2Vk ID0gdHJ1ZTsKPiAgCX0KPiAgCj4gIAlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19tb2Rl c2V0KGRldiwgJnN0YXRlLT5iYXNlKTsKPiBAQCAtMTM1ODUsNyArMTM1ODksNyBAQCBzdGF0aWMg aW50IGludGVsX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCWlmICgh bmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlp ZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkgewo+ICsJCWlmICghbmV3X2NydGNfc3Rh dGUtPnVhcGkuZW5hYmxlKSB7Cj4gIAkJCWFueV9tcyA9IHRydWU7Cj4gIAkJCWNvbnRpbnVlOwo+ ICAJCX0KPiBAQCAtMTM2OTMsMTEgKzEzNjk3LDExIEBAIHZvaWQgaW50ZWxfY3J0Y19hcm1fZmlm b191bmRlcnJ1bihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgc3RhdGljIHZvaWQgaW50ZWxf cGlwZV9mYXN0c2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0 ZSwKPiAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19z dGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG5l d19jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0 b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAo+ICAJ LyogZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0X3N0YXRlIG1pZ2h0IG5v dCBiZSBjYWxsZWQuICovCj4gLQljcnRjLT5iYXNlLm1vZGUgPSBuZXdfY3J0Y19zdGF0ZS0+YmFz ZS5tb2RlOwo+ICsJY3J0Yy0+YmFzZS5tb2RlID0gbmV3X2NydGNfc3RhdGUtPmh3Lm1vZGU7Cj4g IAo+ICAJLyoKPiAgCSAqIFVwZGF0ZSBwaXBlIHNpemUgYW5kIGFkanVzdCBmaXR0ZXIgaWYgbmVl ZGVkOiB0aGUgcmVhc29uIGZvciB0aGlzIGlzCj4gQEAgLTEzNzM4LDcgKzEzNzQyLDcgQEAgc3Rh dGljIHZvaWQgY29tbWl0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0 YXRlLAo+ICAJICogQ1JUQyB3YXMgZW5hYmxlZC4KPiAgCSAqLwo+ICAJaWYgKCFtb2Rlc2V0KSB7 Cj4gLQkJaWYgKG5ld19jcnRjX3N0YXRlLT5iYXNlLmNvbG9yX21nbXRfY2hhbmdlZCB8fAo+ICsJ CWlmIChuZXdfY3J0Y19zdGF0ZS0+dWFwaS5jb2xvcl9tZ210X2NoYW5nZWQgfHwKPiAgCQkgICAg bmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKQo+ICAJCQlpbnRlbF9jb2xvcl9jb21taXQobmV3 X2NydGNfc3RhdGUpOwo+ICAKPiBAQCAtMTM4MDUsNyArMTM4MDksNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF91cGRhdGVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgICAgICAgICAgKiBv ZiBlbmFibGluZyB0aGVtIG9uIHRoZSBDUlRDJ3MgZmlyc3QgZmFzdHNldC4KPiAgICAgICAgICAg Ki8KPiAgCWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUgJiYgIW1vZGVzZXQgJiYKPiAt CSAgICBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVf RkxBR19JTkhFUklURUQpCj4gKwkgICAgb2xkX2NydGNfc3RhdGUtPmh3Lm1vZGUucHJpdmF0ZV9m bGFncyAmIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCkKPiAgCQlpbnRlbF9jcnRjX2FybV9maWZv X3VuZGVycnVuKGNydGMsIG5ld19jcnRjX3N0YXRlKTsKPiAgfQo+ICAKPiBAQCAtMTM4MzcsMTEg KzEzODQxLDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX29sZF9jcnRjX3N0YXRlX2Rpc2FibGVzKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJaW50ZWxfY2hlY2tfcGNoX2ZpZm9f dW5kZXJydW5zKGRldl9wcml2KTsKPiAgCj4gIAkvKiBGSVhNRSB1bmlmeSB0aGlzIGZvciBhbGwg cGxhdGZvcm1zICovCj4gLQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJgo+ICsJ aWYgKCFuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlICYmCj4gIAkgICAgIUhBU19HTUNIKGRldl9w cml2KSAmJgo+ICAJICAgIGRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJtYXJrcykKPiAt CQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3Moc3RhdGUsCj4gLQkJCQkJCSAg ICAgbmV3X2NydGNfc3RhdGUpOwo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0ZXJt YXJrcyhzdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRl bF9jb21taXRfbW9kZXNldF9kaXNhYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0 ZSkKPiBAQCAtMTM4NjQsNyArMTM4NjcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jb21taXRfbW9k ZXNldF9kaXNhYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCj4gIAkJ aW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUpOwo+ ICAKPiAtCQlpZiAob2xkX2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJCWlmIChvbGRfY3J0 Y19zdGF0ZS0+aHcuYWN0aXZlKQo+ICAJCQlpbnRlbF9vbGRfY3J0Y19zdGF0ZV9kaXNhYmxlcyhz dGF0ZSwKPiAgCQkJCQkJICAgICAgb2xkX2NydGNfc3RhdGUsCj4gIAkJCQkJCSAgICAgIG5ld19j cnRjX3N0YXRlLAo+IEBAIC0xMzg3OSw3ICsxMzg4Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Nv bW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4g IAlpbnQgaTsKPiAgCj4gIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0 ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gLQkJaWYgKCFu ZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+aHcu YWN0aXZlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaW50ZWxfdXBkYXRlX2NydGMoY3J0Yywg c3RhdGUsIG9sZF9jcnRjX3N0YXRlLAo+IEBAIC0xMzkwMiw3ICsxMzkwNSw3IEBAIHN0YXRpYyB2 b2lkIHNrbF9jb21taXRfbW9kZXNldF9lbmFibGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKQo+ICAKPiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpCj4gIAkJLyogaWdub3Jl IGFsbG9jYXRpb25zIGZvciBjcnRjJ3MgdGhhdCBoYXZlIGJlZW4gdHVybmVkIG9mZi4gKi8KPiAt CQlpZiAobmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJCWlmIChuZXdfY3J0Y19zdGF0 ZS0+aHcuYWN0aXZlKQo+ICAJCQllbnRyaWVzW2ldID0gb2xkX2NydGNfc3RhdGUtPndtLnNrbC5k ZGI7Cj4gIAo+ICAJLyogSWYgMm5kIERCdWYgc2xpY2UgcmVxdWlyZWQsIGVuYWJsZSBpdCBoZXJl ICovCj4gQEAgLTEzOTI0LDcgKzEzOTI3LDcgQEAgc3RhdGljIHZvaWQgc2tsX2NvbW1pdF9tb2Rl c2V0X2VuYWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAo+ICAJCQlw aXBlID0gY3J0Yy0+cGlwZTsKPiAgCj4gLQkJCWlmICh1cGRhdGVkICYgY21hc2sgfHwgIW5ld19j cnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiArCQkJaWYgKHVwZGF0ZWQgJiBjbWFzayB8fCAhbmV3 X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQkJCWNvbnRpbnVlOwo+ICAKPiAgCQkJaWYgKHNr bF9kZGJfYWxsb2NhdGlvbl9vdmVybGFwcygmbmV3X2NydGNfc3RhdGUtPndtLnNrbC5kZGIsCj4g QEAgLTEzOTQzLDcgKzEzOTQ2LDcgQEAgc3RhdGljIHZvaWQgc2tsX2NvbW1pdF9tb2Rlc2V0X2Vu YWJsZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJCSAqLwo+ICAJCQlp ZiAoIXNrbF9kZGJfZW50cnlfZXF1YWwoJm5ld19jcnRjX3N0YXRlLT53bS5za2wuZGRiLAo+ICAJ CQkJCQkgJm9sZF9jcnRjX3N0YXRlLT53bS5za2wuZGRiKSAmJgo+IC0JCQkgICAgIW5ld19jcnRj X3N0YXRlLT5iYXNlLmFjdGl2ZV9jaGFuZ2VkICYmCj4gKwkJCSAgICAhbmV3X2NydGNfc3RhdGUt PnVhcGkuYWN0aXZlX2NoYW5nZWQgJiYKPiAgCQkJICAgIHN0YXRlLT53bV9yZXN1bHRzLmRpcnR5 X3BpcGVzICE9IHVwZGF0ZWQpCj4gIAkJCQl2Ymxfd2FpdCA9IHRydWU7Cj4gIAo+IEBAIC0xNDA3 NiwxMiArMTQwNzksMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJCWJvb2wgbW9kZXNldCA9IG5lZWRz X21vZGVzZXQobmV3X2NydGNfc3RhdGUpOwo+ICAKPiAgCQkvKiBDb21wbGV0ZSBldmVudHMgZm9y IG5vdyBkaXNhYmxlIHBpcGVzIGhlcmUuICovCj4gLQkJaWYgKG1vZGVzZXQgJiYgIW5ld19jcnRj X3N0YXRlLT5iYXNlLmFjdGl2ZSAmJiBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5ldmVudCkgewo+ICsJ CWlmIChtb2Rlc2V0ICYmICFuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlICYmIG5ld19jcnRjX3N0 YXRlLT51YXBpLmV2ZW50KSB7Cj4gIAkJCXNwaW5fbG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7 Cj4gLQkJCWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KCZjcnRjLT5iYXNlLCBuZXdfY3J0Y19z dGF0ZS0+YmFzZS5ldmVudCk7Cj4gKwkJCWRybV9jcnRjX3NlbmRfdmJsYW5rX2V2ZW50KCZjcnRj LT5iYXNlLAo+ICsJCQkJCQkgICBuZXdfY3J0Y19zdGF0ZS0+dWFwaS5ldmVudCk7Cj4gIAkJCXNw aW5fdW5sb2NrX2lycSgmZGV2LT5ldmVudF9sb2NrKTsKPiAgCj4gLQkJCW5ld19jcnRjX3N0YXRl LT5iYXNlLmV2ZW50ID0gTlVMTDsKPiArCQkJbmV3X2NydGNfc3RhdGUtPnVhcGkuZXZlbnQgPSBO VUxMOwo+ICAJCX0KPiAgCX0KPiAgCj4gQEAgLTE0MTEyLDkgKzE0MTE2LDkgQEAgc3RhdGljIHZv aWQgaW50ZWxfYXRvbWljX2NvbW1pdF90YWlsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+ICAJZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfZmxpcF9kb25lKGRldiwgJnN0YXRl LT5iYXNlKTsKPiAgCj4gIAlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwg Y3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiAtCQlpZiAobmV3X2NydGNfc3RhdGUtPmJhc2Uu YWN0aXZlICYmCj4gKwkJaWYgKG5ld19jcnRjX3N0YXRlLT5ody5hY3RpdmUgJiYKPiAgCQkgICAg IW5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpICYmCj4gLQkJICAgIChuZXdfY3J0Y19zdGF0 ZS0+YmFzZS5jb2xvcl9tZ210X2NoYW5nZWQgfHwKPiArCQkgICAgKG5ld19jcnRjX3N0YXRlLT51 YXBpLmNvbG9yX21nbXRfY2hhbmdlZCB8fAo+ICAJCSAgICAgbmV3X2NydGNfc3RhdGUtPnVwZGF0 ZV9waXBlKSkKPiAgCQkJaW50ZWxfY29sb3JfbG9hZF9sdXRzKG5ld19jcnRjX3N0YXRlKTsKPiAg CX0KPiBAQCAtMTQ1NzMsMTYgKzE0NTc3LDE2IEBAIGludAo+ICBza2xfbWF4X3NjYWxlKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJICAgICAgY29uc3Qgc3Ry dWN0IGRybV9mb3JtYXRfaW5mbyAqZm9ybWF0KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNl LmRldik7Cj4gIAlpbnQgbWF4X3NjYWxlOwo+ICAJaW50IGNydGNfY2xvY2ssIG1heF9kb3RjbGss IHRtcGNsazEsIHRtcGNsazI7Cj4gIAo+IC0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkK PiArCWlmICghY3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQo+ICAJCXJldHVybiBEUk1fUExBTkVfSEVM UEVSX05PX1NDQUxJTkc7Cj4gIAo+IC0JY3J0Y19jbG9jayA9IGNydGNfc3RhdGUtPmJhc2UuYWRq dXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+IC0JbWF4X2RvdGNsayA9IHRvX2ludGVsX2F0b21pY19z dGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKS0+Y2RjbGsubG9naWNhbC5jZGNsazsKPiArCWNy dGNfY2xvY2sgPSBjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gKwlt YXhfZG90Y2xrID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNfc3RhdGUtPnVhcGkuc3RhdGUp LT5jZGNsay5sb2dpY2FsLmNkY2xrOwo+ICAKPiAgCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2 KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwKQo+ICAJCW1heF9kb3RjbGsgKj0gMjsKPiBA QCAtMTQ3MTUsNyArMTQ3MTksNyBAQCBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwKPiAgCSAqIFdoZW4gY3J0YyBpcyBpbmFjdGl2ZSBvciB0aGVyZSBp cyBhIG1vZGVzZXQgcGVuZGluZywKPiAgCSAqIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlIGluIHRo ZSBzbG93cGF0aAo+ICAJICovCj4gLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlIHx8IG5l ZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkgfHwKPiArCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZl IHx8IG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkgfHwKPiAgCSAgICBjcnRjX3N0YXRlLT51cGRh dGVfcGlwZSkKPiAgCQlnb3RvIHNsb3c7Cj4gIAo+IEBAIC0xNDgwOSw3ICsxNDgxMyw3IEBAIGlu dGVsX2xlZ2FjeV9jdXJzb3JfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gIG91dF9mcmVlOgo+ICAJ aWYgKG5ld19jcnRjX3N0YXRlKQo+IC0JCWludGVsX2NydGNfZGVzdHJveV9zdGF0ZShjcnRjLCAm bmV3X2NydGNfc3RhdGUtPmJhc2UpOwo+ICsJCWludGVsX2NydGNfZGVzdHJveV9zdGF0ZShjcnRj LCAmbmV3X2NydGNfc3RhdGUtPnVhcGkpOwo+ICAJaWYgKHJldCkKPiAgCQlpbnRlbF9wbGFuZV9k ZXN0cm95X3N0YXRlKHBsYW5lLCBuZXdfcGxhbmVfc3RhdGUpOwo+ICAJZWxzZQo+IEBAIC0xNTEz NSw3ICsxNTEzOSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gIAkJcmV0ID0gLUVOT01FTTsK PiAgCQlnb3RvIGZhaWw7Cj4gIAl9Cj4gLQlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQo JmludGVsX2NydGMtPmJhc2UsICZjcnRjX3N0YXRlLT5iYXNlKTsKPiArCV9fZHJtX2F0b21pY19o ZWxwZXJfY3J0Y19yZXNldCgmaW50ZWxfY3J0Yy0+YmFzZSwgJmNydGNfc3RhdGUtPnVhcGkpOwo+ ICAJaW50ZWxfY3J0Yy0+Y29uZmlnID0gY3J0Y19zdGF0ZTsKPiAgCj4gIAlwcmltYXJ5ID0gaW50 ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoZGV2X3ByaXYsIHBpcGUpOwo+IEBAIC0xNjQ5MCw3ICsx NjQ5NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gIAkJCSAgIEk5MTVfUkVBRChyZWcpICYgflBJUEVDT05GX0ZSQU1FX1NUQVJU X0RFTEFZX01BU0spOwo+ICAJfQo+ICAKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkg ewo+ICsJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkgewo+ICAJCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmU7Cj4gIAo+ICAJCS8qIERpc2FibGUgZXZlcnl0aGluZyBidXQgdGhlIHByaW1hcnkg cGxhbmUgKi8KPiBAQCAtMTY1MTUsMTAgKzE2NTE5LDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX3Nh bml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAo+ICAJLyogQWRqdXN0IHRo ZSBzdGF0ZSBvZiB0aGUgb3V0cHV0IHBpcGUgYWNjb3JkaW5nIHRvIHdoZXRoZXIgd2UKPiAgCSAq IGhhdmUgYWN0aXZlIGNvbm5lY3RvcnMvZW5jb2RlcnMuICovCj4gLQlpZiAoY3J0Y19zdGF0ZS0+ YmFzZS5hY3RpdmUgJiYgIWludGVsX2NydGNfaGFzX2VuY29kZXJzKGNydGMpKQo+ICsJaWYgKGNy dGNfc3RhdGUtPmh3LmFjdGl2ZSAmJiAhaW50ZWxfY3J0Y19oYXNfZW5jb2RlcnMoY3J0YykpCj4g IAkJaW50ZWxfY3J0Y19kaXNhYmxlX25vYXRvbWljKCZjcnRjLT5iYXNlLCBjdHgpOwo+ICAKPiAt CWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCBIQVNfR01DSChkZXZfcHJpdikpIHsKPiAr CWlmIChjcnRjX3N0YXRlLT5ody5hY3RpdmUgfHwgSEFTX0dNQ0goZGV2X3ByaXYpKSB7Cj4gIAkJ LyoKPiAgCQkgKiBXZSBzdGFydCBvdXQgd2l0aCB1bmRlcnJ1biByZXBvcnRpbmcgZGlzYWJsZWQg dG8gYXZvaWQgcmFjZXMuCj4gIAkJICogRm9yIGNvcnJlY3QgYm9va2tlZXBpbmcgbWFyayB0aGlz IG9uIGFjdGl2ZSBjcnRjcy4KPiBAQCAtMTY1NDksNyArMTY1NTMsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAKPiAgc3RhdGlj IGJvb2wgaGFzX2JvZ3VzX2RwbGxfY29uZmlnKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYp Owo+ICAKPiAgCS8qCj4gIAkgKiBTb21lIFNOQiBCSU9TZW4gKGVnLiBBU1VTIEs1M1NWKSBhcmUg a25vd24gdG8gbWlzcHJvZ3JhbQo+IEBAIC0xNjU2Miw3ICsxNjU2Niw3IEBAIHN0YXRpYyBib29s IGhhc19ib2d1c19kcGxsX2NvbmZpZyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiAgCSAqIHJvYWQuCj4gIAkgKi8KPiAgCXJldHVybiBJU19HRU4oZGV2X3ByaXYs IDYpICYmCj4gLQkJY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYKPiArCQljcnRjX3N0YXRlLT5o dy5hY3RpdmUgJiYKPiAgCQljcnRjX3N0YXRlLT5zaGFyZWRfZHBsbCAmJgo+ICAJCWNydGNfc3Rh dGUtPnBvcnRfY2xvY2sgPT0gMDsKPiAgfQo+IEBAIC0xNjU3OSw3ICsxNjU4Myw3IEBAIHN0YXRp YyB2b2lkIGludGVsX3Nhbml0aXplX2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIpCj4gIAkgKiBlbmNvZGVyIGlzIGFjdGl2ZSBhbmQgdHJ5aW5nIHRvIHJlYWQgZnJvbSBhIHBp cGUpIGFuZCB0aGUKPiAgCSAqIHBpcGUgaXRzZWxmIGJlaW5nIGFjdGl2ZS4gKi8KPiAgCWJvb2wg aGFzX2FjdGl2ZV9jcnRjID0gY3J0Y19zdGF0ZSAmJgo+IC0JCWNydGNfc3RhdGUtPmJhc2UuYWN0 aXZlOwo+ICsJCWNydGNfc3RhdGUtPmh3LmFjdGl2ZTsKPiAgCj4gIAlpZiAoY3J0Y19zdGF0ZSAm JiBoYXNfYm9ndXNfZHBsbF9jb25maWcoY3J0Y19zdGF0ZSkpIHsKPiAgCQlEUk1fREVCVUdfS01T KCJCSU9TIGhhcyBtaXNwcm9ncmFtbWVkIHRoZSBoYXJkd2FyZS4gRGlzYWJsaW5nIHBpcGUgJWNc biIsCj4gQEAgLTE2NjgzLDIyICsxNjY4NywyMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0 X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9Cj4gIAkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0 Yy0+YmFzZS5zdGF0ZSk7Cj4gIAo+IC0JCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95 X3N0YXRlKCZjcnRjX3N0YXRlLT5iYXNlKTsKPiArCQlfX2RybV9hdG9taWNfaGVscGVyX2NydGNf ZGVzdHJveV9zdGF0ZSgmY3J0Y19zdGF0ZS0+dWFwaSk7Cj4gIAkJbWVtc2V0KGNydGNfc3RhdGUs IDAsIHNpemVvZigqY3J0Y19zdGF0ZSkpOwo+IC0JCV9fZHJtX2F0b21pY19oZWxwZXJfY3J0Y19y ZXNldCgmY3J0Yy0+YmFzZSwgJmNydGNfc3RhdGUtPmJhc2UpOwo+ICsJCV9fZHJtX2F0b21pY19o ZWxwZXJfY3J0Y19yZXNldCgmY3J0Yy0+YmFzZSwgJmNydGNfc3RhdGUtPnVhcGkpOwo+ICAKPiAt CQljcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSA9IGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlID0KPiAr CQljcnRjX3N0YXRlLT5ody5hY3RpdmUgPSBjcnRjX3N0YXRlLT5ody5lbmFibGUgPQo+ICAJCQlk ZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcoY3J0YywgY3J0Y19zdGF0ZSk7Cj4gIAo+ IC0JCWNydGMtPmJhc2UuZW5hYmxlZCA9IGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlOwo+IC0JCWNy dGMtPmFjdGl2ZSA9IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlOwo+ICsJCWNydGMtPmJhc2UuZW5h YmxlZCA9IGNydGNfc3RhdGUtPmh3LmVuYWJsZTsKPiArCQljcnRjLT5hY3RpdmUgPSBjcnRjX3N0 YXRlLT5ody5hY3RpdmU7Cj4gIAo+IC0JCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiAr CQlpZiAoY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQo+ICAJCQlkZXZfcHJpdi0+YWN0aXZlX3BpcGVz IHw9IEJJVChjcnRjLT5waXBlKTsKPiAgCj4gIAkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWQ6JXNd IGh3IHN0YXRlIHJlYWRvdXQ6ICVzXG4iLAo+ICAJCQkgICAgICBjcnRjLT5iYXNlLmJhc2UuaWQs IGNydGMtPmJhc2UubmFtZSwKPiAtCQkJICAgICAgZW5hYmxlZGRpc2FibGVkKGNydGNfc3RhdGUt PmJhc2UuYWN0aXZlKSk7Cj4gKwkJCSAgICAgIGVuYWJsZWRkaXNhYmxlZChjcnRjX3N0YXRlLT5o dy5hY3RpdmUpKTsKPiAgCX0KPiAgCj4gIAlyZWFkb3V0X3BsYW5lX3N0YXRlKGRldl9wcml2KTsK PiBAQCAtMTY3MjAsNyArMTY3MjQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRv dXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ICAJCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5i YXNlLnN0YXRlKTsKPiAgCj4gLQkJCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJgo+ICsJ CQlpZiAoY3J0Y19zdGF0ZS0+aHcuYWN0aXZlICYmCj4gIAkJCSAgICBjcnRjX3N0YXRlLT5zaGFy ZWRfZHBsbCA9PSBwbGwpCj4gIAkJCQlwbGwtPnN0YXRlLmNydGNfbWFzayB8PSAxIDw8IGNydGMt PnBpcGU7Cj4gIAkJfQo+IEBAIC0xNjc1NCwyMSArMTY3NTgsMjQgQEAgc3RhdGljIHZvaWQgaW50 ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlk cm1fY29ubmVjdG9yX2xpc3RfaXRlcl9iZWdpbihkZXYsICZjb25uX2l0ZXIpOwo+ICAJZm9yX2Vh Y2hfaW50ZWxfY29ubmVjdG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9pdGVyKSB7Cj4gIAkJaWYg KGNvbm5lY3Rvci0+Z2V0X2h3X3N0YXRlKGNvbm5lY3RvcikpIHsKPiAtCQkJY29ubmVjdG9yLT5i YXNlLmRwbXMgPSBEUk1fTU9ERV9EUE1TX09OOwo+ICsJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSA9IE5VTEw7Cj4gIAo+ICsJCQljb25uZWN0b3ItPmJhc2UuZHBtcyA9IERS TV9NT0RFX0RQTVNfT047Cj4gIAkJCWVuY29kZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7Cj4gIAkJ CWNvbm5lY3Rvci0+YmFzZS5lbmNvZGVyID0gJmVuY29kZXItPmJhc2U7Cj4gIAo+IC0JCQlpZiAo ZW5jb2Rlci0+YmFzZS5jcnRjICYmCj4gLQkJCSAgICBlbmNvZGVyLT5iYXNlLmNydGMtPnN0YXRl LT5hY3RpdmUpIHsKPiArCQkJaWYgKGVuY29kZXItPmJhc2UuY3J0YykKPiArCQkJCWNydGNfc3Rh dGUgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGVuY29kZXItPmJhc2UuY3J0Yy0+c3RhdGUpOwo+ICsK PiArCQkJaWYgKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7Cj4gIAkJCQkv Kgo+ICAJCQkJICogVGhpcyBoYXMgdG8gYmUgZG9uZSBkdXJpbmcgaGFyZHdhcmUgcmVhZG91dAo+ ICAJCQkJICogYmVjYXVzZSBhbnl0aGluZyBjYWxsaW5nIC5jcnRjX2Rpc2FibGUgbWF5Cj4gIAkJ CQkgKiByZWx5IG9uIHRoZSBjb25uZWN0b3JfbWFzayBiZWluZyBhY2N1cmF0ZS4KPiAgCQkJCSAq Lwo+IC0JCQkJZW5jb2Rlci0+YmFzZS5jcnRjLT5zdGF0ZS0+Y29ubmVjdG9yX21hc2sgfD0KPiAr CQkJCWNydGNfc3RhdGUtPnVhcGkuY29ubmVjdG9yX21hc2sgfD0KPiAgCQkJCQlkcm1fY29ubmVj dG9yX21hc2soJmNvbm5lY3Rvci0+YmFzZSk7Cj4gLQkJCQllbmNvZGVyLT5iYXNlLmNydGMtPnN0 YXRlLT5lbmNvZGVyX21hc2sgfD0KPiArCQkJCWNydGNfc3RhdGUtPnVhcGkuZW5jb2Rlcl9tYXNr IHw9Cj4gIAkJCQkJZHJtX2VuY29kZXJfbWFzaygmZW5jb2Rlci0+YmFzZSk7Cj4gIAkJCX0KPiAg Cj4gQEAgLTE2NzkxLDExICsxNjc5OCwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3Jl YWRvdXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlpbnQgbWluX2NkY2xr ID0gMDsKPiAgCj4gIAkJbWVtc2V0KCZjcnRjLT5iYXNlLm1vZGUsIDAsIHNpemVvZihjcnRjLT5i YXNlLm1vZGUpKTsKPiAtCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpIHsKPiArCQlpZiAo Y3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7Cj4gIAkJCWludGVsX21vZGVfZnJvbV9waXBlX2NvbmZp ZygmY3J0Yy0+YmFzZS5tb2RlLCBjcnRjX3N0YXRlKTsKPiAgCQkJY3J0Yy0+YmFzZS5tb2RlLmhk aXNwbGF5ID0gY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdzsKPiAgCQkJY3J0Yy0+YmFzZS5tb2RlLnZk aXNwbGF5ID0gY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaDsKPiAtCQkJaW50ZWxfbW9kZV9mcm9tX3Bp cGVfY29uZmlnKCZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUsIGNydGNfc3RhdGUpOwo+ ICsJCQlpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoJmNydGNfc3RhdGUtPmh3LmFkanVzdGVk X21vZGUsCj4gKwkJCQkJCSAgICBjcnRjX3N0YXRlKTsKPiAgCQkJV0FSTl9PTihkcm1fYXRvbWlj X3NldF9tb2RlX2Zvcl9jcnRjKGNydGMtPmJhc2Uuc3RhdGUsICZjcnRjLT5iYXNlLm1vZGUpKTsK PiAgCj4gIAkJCS8qCj4gQEAgLTE2ODA3LDcgKzE2ODE1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf bW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCSAq IHNldCBhIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCBhIGZ1bGwgcmVjYWxjdWxhdGlvbiBpcwo+ICAJ CQkgKiBuZWVkZWQgb24gdGhlIG5leHQgY29tbWl0Lgo+ICAJCQkgKi8KPiAtCQkJY3J0Y19zdGF0 ZS0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3MgPSBJOTE1X01PREVfRkxBR19JTkhFUklURUQ7Cj4g KwkJCWNydGNfc3RhdGUtPmh3Lm1vZGUucHJpdmF0ZV9mbGFncyA9IEk5MTVfTU9ERV9GTEFHX0lO SEVSSVRFRDsKPiAgCj4gIAkJCWludGVsX2NydGNfY29tcHV0ZV9waXhlbF9yYXRlKGNydGNfc3Rh dGUpOwo+ICAKPiBAQCAtMTY4MTgsNyArMTY4MjYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rl c2V0X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJfQo+ICAK PiAgCQkJZHJtX2NhbGNfdGltZXN0YW1waW5nX2NvbnN0YW50cygmY3J0Yy0+YmFzZSwKPiAtCQkJ CQkJCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUpOwo+ICsJCQkJCQkJJmNydGNfc3Rh dGUtPmh3LmFkanVzdGVkX21vZGUpOwo+ICAJCQl1cGRhdGVfc2NhbmxpbmVfb2Zmc2V0KGNydGNf c3RhdGUpOwo+ICAJCX0KPiAgCj4gQEAgLTE2OTg5LDcgKzE2OTk3LDcgQEAgaW50ZWxfbW9kZXNl dF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAgCQlkcm1fY3J0 Y192YmxhbmtfcmVzZXQoJmNydGMtPmJhc2UpOwo+ICAKPiAtCQlpZiAoY3J0Y19zdGF0ZS0+YmFz ZS5hY3RpdmUpCj4gKwkJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQkJaW50ZWxfY3J0 Y192Ymxhbmtfb24oY3J0Y19zdGF0ZSk7Cj4gIAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oCj4gaW5kZXggYmMyY2Y0YmVjMGU4Li40NGExYzMz MWQ2YjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXkuaAo+IEBAIC00NDMsMTAgKzQ0MywxMCBAQCBlbnVtIHBoeV9maWEgewo+ICAjZGVmaW5lIGlu dGVsX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lYWNoX3BsYW5lX3N0YXRlKCBcCj4gIAkJICBwbGFu ZSwgcGxhbmVfc3RhdGUsIFwKPiAgCQkgIGNydGNfc3RhdGUpIFwKPiAtCWZvcl9lYWNoX2ludGVs X3BsYW5lX21hc2soKChjcnRjX3N0YXRlKS0+YmFzZS5zdGF0ZS0+ZGV2KSwgKHBsYW5lKSwgXAo+ IC0JCQkJKChjcnRjX3N0YXRlKS0+YmFzZS5wbGFuZV9tYXNrKSkgXAo+ICsJZm9yX2VhY2hfaW50 ZWxfcGxhbmVfbWFzaygoKGNydGNfc3RhdGUpLT51YXBpLnN0YXRlLT5kZXYpLCAocGxhbmUpLCBc Cj4gKwkJCQkoKGNydGNfc3RhdGUpLT51YXBpLnBsYW5lX21hc2spKSBcCj4gIAkJZm9yX2VhY2hf aWYgKChwbGFuZV9zdGF0ZSA9IFwKPiAtCQkJICAgICAgdG9faW50ZWxfcGxhbmVfc3RhdGUoX19k cm1fYXRvbWljX2dldF9jdXJyZW50X3BsYW5lX3N0YXRlKChjcnRjX3N0YXRlKS0+YmFzZS5zdGF0 ZSwgJnBsYW5lLT5iYXNlKSkpKQo+ICsJCQkgICAgICB0b19pbnRlbF9wbGFuZV9zdGF0ZShfX2Ry bV9hdG9taWNfZ2V0X2N1cnJlbnRfcGxhbmVfc3RhdGUoKGNydGNfc3RhdGUpLT51YXBpLnN0YXRl LCAmcGxhbmUtPmJhc2UpKSkpCj4gIAo+ICB2b2lkIGludGVsX2xpbmtfY29tcHV0ZV9tX24odTE2 IGJwcCwgaW50IG5sYW5lcywKPiAgCQkJICAgIGludCBwaXhlbF9jbG9jaywgaW50IGxpbmtfY2xv Y2ssCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 X3R5cGVzLmgKPiBpbmRleCA1MjY0MjM0MzdmNjMuLjBlZTY5ZThmMDk0MiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4g QEAgLTc0OSw3ICs3NDksMzEgQEAgZW51bSBpbnRlbF9vdXRwdXRfZm9ybWF0IHsKPiAgfTsKPiAg Cj4gIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKPiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBi YXNlOwo+ICsJdW5pb24gewo+ICsJLyoKPiArCSAqIHVhcGkgKGRybSkgc3RhdGUuIFRoaXMgaXMg dGhlIHNvZnR3YXJlIHN0YXRlIHNob3duIHRvIHVzZXJzcGFjZS4KPiArCSAqIEluIHBhcnRpY3Vs YXIsIHRoZSBmb2xsb3dpbmcgbWVtYmVycyBhcmUgdXNlZCBmb3IgYm9va2tlZXBpbmc6Cj4gKwkg KiAtIGNydGMKPiArCSAqIC0gc3RhdGUKPiArCSAqIC0gKl9jaGFuZ2VkCj4gKwkgKiAtIGV2ZW50 Cj4gKwkgKiAtIGNvbW1pdAo+ICsJICogLSBtb2RlX2Jsb2IKPiArCSAqLwo+ICsJc3RydWN0IGRy bV9jcnRjX3N0YXRlIHVhcGk7Cj4gKwo+ICsJLyoKPiArCSAqIGFjdHVhbCBoYXJkd2FyZSBzdGF0 ZSwgdGhlIHN0YXRlIHdlIHByb2dyYW0gdG8gdGhlIGhhcmR3YXJlLgo+ICsJICogVGhlIGZvbGxv d2luZyBtZW1iZXJzIGFyZSB1c2VkIHRvIHZlcmlmeSB0aGUgaGFyZHdhcmUgc3RhdGU6Cj4gKwkg KiAtIGVuYWJsZQo+ICsJICogLSBhY3RpdmUKPiArCSAqIC0gbW9kZSAvIGFkanVzdGVkX21vZGUK PiArCSAqIC0gY29sb3IgcHJvcGVydHkgYmxvYnMuCj4gKwkgKgo+ICsJICogRHVyaW5nIGluaXRp YWwgaHcgcmVhZG91dCwgdGhleSBuZWVkIHRvIGJlIGNvcGllZCB0byB1YXBpLgo+ICsJICovCj4g KwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgaHc7Cj4gKwl9Owo+ICAKPiAgCS8qKgo+ICAJICogcXVp cmtzIC0gYml0ZmllbGQgd2l0aCBodyBzdGF0ZSByZWFkb3V0IHF1aXJrcwo+IEBAIC0xMDkzLDcg KzExMTcsNyBAQCBzdHJ1Y3QgY3hzcl9sYXRlbmN5IHsKPiAgCj4gICNkZWZpbmUgdG9faW50ZWxf YXRvbWljX3N0YXRlKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl LCBiYXNlKQo+ICAjZGVmaW5lIHRvX2ludGVsX2NydGMoeCkgY29udGFpbmVyX29mKHgsIHN0cnVj dCBpbnRlbF9jcnRjLCBiYXNlKQo+IC0jZGVmaW5lIHRvX2ludGVsX2NydGNfc3RhdGUoeCkgY29u dGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlLCBiYXNlKQo+ICsjZGVmaW5lIHRv X2ludGVsX2NydGNfc3RhdGUoeCkgY29udGFpbmVyX29mKHgsIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlLCB1YXBpKQo+ICAjZGVmaW5lIHRvX2ludGVsX2Nvbm5lY3Rvcih4KSBjb250YWluZXJfb2Yo eCwgc3RydWN0IGludGVsX2Nvbm5lY3RvciwgYmFzZSkKPiAgI2RlZmluZSB0b19pbnRlbF9lbmNv ZGVyKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1Y3QgaW50ZWxfZW5jb2RlciwgYmFzZSkKPiAgI2Rl ZmluZSB0b19pbnRlbF9mcmFtZWJ1ZmZlcih4KSBjb250YWluZXJfb2YoeCwgc3RydWN0IGludGVs X2ZyYW1lYnVmZmVyLCBiYXNlKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rw LmMKPiBpbmRleCAxYWEzOWU5MmYwZGYuLjQyOTc3Mzg2NTVjNiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKPiBAQCAtMTk2Nyw3ICsxOTY3LDcgQEAgaW50ZWxf ZHBfY29tcHV0ZV9saW5rX2NvbmZpZ193aWRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4g IAkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQkJCSAgY29u c3Qgc3RydWN0IGxpbmtfY29uZmlnX2xpbWl0cyAqbGltaXRzKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlw ZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAlpbnQgYnBwLCBjbG9jaywgbGFuZV9jb3Vu dDsKPiAgCWludCBtb2RlX3JhdGUsIGxpbmtfY2xvY2ssIGxpbmtfYXZhaWw7Cj4gIAo+IEBAIC0y MDIxLDcgKzIwMjEsNyBAQCBzdGF0aWMgaW50IGludGVsX2RwX2RzY19jb21wdXRlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYp Owo+IC0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25m aWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJdTggZHNjX21h eF9icGM7Cj4gIAlpbnQgcGlwZV9icHA7Cj4gIAlpbnQgcmV0Owo+IEBAIC0yMTMyLDcgKzIxMzIs NyBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICAJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywK PiAgCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiAgewo+ IC0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gIAlzdHJ1 Y3QgbGlua19jb25maWdfbGltaXRzIGxpbWl0czsKPiAgCWludCBjb21tb25fbGVuOwo+IEBAIC0y MjIwLDggKzIyMjAsOCBAQCBpbnRlbF9kcF95Y2JjcjQyMF9jb25maWcoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKPiAgewo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X2luZm8gKmluZm8g PSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm87Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9k ZTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT5iYXNlLmNydGMpOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICsJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0 Yyk7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCWlmICghZHJtX21vZGVfaXNfNDIwX29ubHkoaW5mbywg YWRqdXN0ZWRfbW9kZSkgfHwKPiBAQCAtMjI0OSw3ICsyMjQ5LDcgQEAgYm9vbCBpbnRlbF9kcF9s aW1pdGVkX2NvbG9yX3JhbmdlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ICAJY29uc3Qgc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlICppbnRl bF9jb25uX3N0YXRlID0KPiAgCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZShjb25u X3N0YXRlKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl ID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZjcnRjX3N0YXRl LT5ody5hZGp1c3RlZF9tb2RlOwo+ICAKPiAgCS8qCj4gIAkgKiBPdXIgWUNiQ3Igb3V0cHV0IGlz IGFsd2F5cyBsaW1pdGVkIHJhbmdlLgo+IEBAIC0yMjgyLDExICsyMjgyLDExIEBAIGludGVsX2Rw X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQlzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiAgCXN0cnVjdCBp bnRlbF9sc3Bjb24gKmxzcGNvbiA9IGVuY190b19pbnRlbF9sc3Bjb24oJmVuY29kZXItPmJhc2Up Owo+ICAJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0Owo+IC0Jc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT5iYXNlLmNydGMpOwo+ ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29u ZmlnLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVj dG9yID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiAgCXN0cnVjdCBpbnRlbF9kaWdp dGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqaW50ZWxfY29ubl9zdGF0ZSA9Cj4gIAkJdG9faW50ZWxfZGln aXRhbF9jb25uZWN0b3Jfc3RhdGUoY29ubl9zdGF0ZSk7Cj4gQEAgLTI0MDAsOCArMjQwMCw4IEBA IHN0YXRpYyB2b2lkIGludGVsX2RwX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50 ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+ICAJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0 Owo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmln LT5iYXNlLmNydGMpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRjKTsKPiAr CWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29u ZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAKPiAgCWludGVsX2RwX3NldF9saW5rX3BhcmFtcyhp bnRlbF9kcCwgcGlwZV9jb25maWctPnBvcnRfY2xvY2ssCj4gIAkJCQkgcGlwZV9jb25maWctPmxh bmVfY291bnQsCj4gQEAgLTI5OTgsNyArMjk5OCw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9lZHBf cGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBzdGF0ZSkKPiAgc3Rh dGljIHZvaWQgaXJvbmxha2VfZWRwX3BsbF9vbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ ICAJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPmJh c2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlw ZV9jb25maWctPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCj4gIAlhc3NlcnRfcGlwZV9kaXNhYmxl ZChkZXZfcHJpdiwgY3J0Yy0+cGlwZSk7Cj4gQEAgLTMwMzgsNyArMzAzOCw3IEBAIHN0YXRpYyB2 b2lkIGlyb25sYWtlX2VkcF9wbGxfb24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgc3Rh dGljIHZvaWQgaXJvbmxha2VfZWRwX3BsbF9vZmYoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiAgCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4g IHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhvbGRfY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhvbGRfY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAKPiAgCWFzc2VydF9w aXBlX2Rpc2FibGVkKGRldl9wcml2LCBjcnRjLT5waXBlKTsKPiBAQCAtMzE5OCw3ICszMTk4LDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiAgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAo JmVuY29kZXItPmJhc2UpOwo+ICAJdTMyIHRtcCwgZmxhZ3MgPSAwOwo+ICAJZW51bSBwb3J0IHBv cnQgPSBlbmNvZGVyLT5wb3J0Owo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKHBpcGVfY29uZmlnLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT51YXBpLmNydGMpOwo+ICAKPiAgCWlmIChl bmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApCj4gIAkJcGlwZV9jb25maWctPm91dHB1 dF90eXBlcyB8PSBCSVQoSU5URUxfT1VUUFVUX0VEUCk7Cj4gQEAgLTMyMzMsNyArMzIzMyw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2RwX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIAkJCWZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfTlZTWU5DOwo+ICAJfQo+ICAKPiAt CXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7Cj4gKwlwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiAgCj4gIAlpZiAoSVNf RzRYKGRldl9wcml2KSAmJiB0bXAgJiBEUF9DT0xPUl9SQU5HRV8xNl8yMzUpCj4gIAkJcGlwZV9j b25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwo+IEBAIC0zMjUwLDcgKzMyNTAsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICAJCQlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IDI3MDAwMDsKPiAgCX0KPiAg Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPQo+ICsJcGlw ZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9Cj4gIAkJaW50ZWxfZG90Y2xv Y2tfY2FsY3VsYXRlKHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrLAo+ICAJCQkJCSAmcGlwZV9jb25m aWctPmRwX21fbik7Cj4gIAo+IEBAIC0zNDY1LDcgKzM0NjUsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYp Owo+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rl ci0+YmFzZSk7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlw ZV9jb25maWctPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2lu dGVsX2NydGMocGlwZV9jb25maWctPnVhcGkuY3J0Yyk7Cj4gIAl1MzIgZHBfcmVnID0gSTkxNV9S RUFEKGludGVsX2RwLT5vdXRwdXRfcmVnKTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlw ZTsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IEBAIC0zNTk4LDcgKzM1OTgsNyBAQCBz dGF0aWMgdm9pZCB2bHZfaW5pdF9wYW5lbF9wb3dlcl9zZXF1ZW5jZXIoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX2RwICppbnRl bF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gLQlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNy dGMpOwo+ICAKPiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wcHNfbXV0ZXgpOwo+ ICAKPiBAQCAtNDEyMCw3ICs0MTIwLDcgQEAgaW50ZWxfZHBfbGlua19kb3duKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+IC0Jc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGMp Owo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG9sZF9jcnRjX3N0 YXRlLT51YXBpLmNydGMpOwo+ICAJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0Owo+ICAJ dTMyIERQID0gaW50ZWxfZHAtPkRQOwo+ICAKPiBAQCAtNDg4MSw3ICs0ODgxLDcgQEAgaW50IGlu dGVsX2RwX3JldHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCj4g IAlXQVJOX09OKCFpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGNfc3RhdGUpKTsKPiAgCj4g LQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJaWYgKCFjcnRjX3N0YXRlLT5ody5h Y3RpdmUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaWYgKGNvbm5fc3RhdGUtPmNvbW1pdCAmJgo+ IEBAIC02NzAwLDcgKzY3MDAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgaW50IHJlZnJl c2hfcmF0ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGRldl9wcml2LT5k cnJzLmRwOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCWVudW0gZHJyc19y ZWZyZXNoX3JhdGVfdHlwZSBpbmRleCA9IERSUlNfSElHSF9SUjsKPiAgCj4gIAlpZiAocmVmcmVz aF9yYXRlIDw9IDApIHsKPiBAQCAtNjczMyw3ICs2NzMzLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZHBfc2V0X2RycnNfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJ CXJldHVybjsKPiAgCX0KPiAgCj4gLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKSB7Cj4g KwlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkgewo+ICAJCURSTV9ERUJVR19LTVMoImVEUCBl bmNvZGVyIGRpc2FibGVkLiBDUlRDIG5vdCBBY3RpdmVcbiIpOwo+ICAJCXJldHVybjsKPiAgCX0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfbXN0LmMKPiBpbmRleCAy MjAzYmUyOGVhMDEuLmNlY2I3YmE1YjQ4MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kcF9tc3QuYwo+IEBAIC00MiwxMyArNDIsMTMgQEAgc3RhdGljIGludCBp bnRlbF9kcF9tc3RfY29tcHV0ZV9saW5rX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPiAgCQkJCQkgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUs Cj4gIAkJCQkJICAgIHN0cnVjdCBsaW5rX2NvbmZpZ19saW1pdHMgKmxpbWl0cykKPiAgewo+IC0J c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZTsK PiArCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNydGNfc3RhdGUtPnVhcGkuc3Rh dGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHBfbXN0X2VuY29kZXIgKmludGVsX21zdCA9IGVuY190b19t c3QoJmVuY29kZXItPmJhc2UpOwo+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9ICZpbnRl bF9tc3QtPnByaW1hcnktPmRwOwo+ICAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y ID0KPiAgCQl0b19pbnRlbF9jb25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiAgCWNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19z dGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9t b2RlOwo+ICAJdm9pZCAqcG9ydCA9IGNvbm5lY3Rvci0+cG9ydDsKPiAgCWJvb2wgY29uc3RhbnRf biA9IGRybV9kcF9oYXNfcXVpcmsoJmludGVsX2RwLT5kZXNjLAo+ICAJCQkJCSAgIERQX0RQQ0Rf UVVJUktfQ09OU1RBTlRfTik7Cj4gQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGljIGludCBpbnRlbF9k cF9tc3RfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUgKmludGVsX2Nvbm5fc3RhdGUgPQo+ ICAJCXRvX2ludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRlKGNvbm5fc3RhdGUpOwo+ICAJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRf bW9kZTsKPiAgCXZvaWQgKnBvcnQgPSBjb25uZWN0b3ItPnBvcnQ7Cj4gIAlzdHJ1Y3QgbGlua19j b25maWdfbGltaXRzIGxpbWl0czsKPiAgCWludCByZXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBpb19waHkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHBpb19waHkuYwo+IGluZGV4IDU1NmQxYjMwZjA2YS4uNzA0ZjM4 NjgxYzRiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZHBpb19waHkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBp b19waHkuYwo+IEBAIC03MzksNyArNzM5LDcgQEAgdm9pZCBjaHZfZGF0YV9sYW5lX3NvZnRfcmVz ZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJZW51 bSBkcGlvX2NoYW5uZWwgY2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChlbmNfdG9fZGlnX3BvcnQo JmVuY29kZXItPmJhc2UpKTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAllbnVtIHBpcGUgcGlw ZSA9IGNydGMtPnBpcGU7Cj4gIAl1MzIgdmFsOwo+ICAKPiBAQCAtNzgzLDcgKzc4Myw3IEBAIHZv aWQgY2h2X3BoeV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAgewo+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZHBvcnQgPSBlbmNfdG9fZGlnX3Bv cnQoJmVuY29kZXItPmJhc2UpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJ ZW51bSBkcGlvX2NoYW5uZWwgY2ggPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChkcG9ydCk7Cj4gIAll bnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAl1bnNpZ25lZCBpbnQgbGFuZV9tYXNrID0K PiBAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgY2h2X3BoeV9wcmVfZW5jb2Rlcl9lbmFibGUoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw ID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiAgCXN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmRwb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4g LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT51YXBpLmNydGMpOwo+ICAJZW51bSBkcGlvX2NoYW5uZWwgY2ggPSB2bHZfZHBvcnRf dG9fY2hhbm5lbChkcG9ydCk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAlp bnQgZGF0YSwgaSwgc3RhZ2dlcjsKPiBAQCAtOTUzLDcgKzk1Myw3IEBAIHZvaWQgY2h2X3BoeV9w b3N0X3BsbF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkgICAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4gIHsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFz ZS5kZXYpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRl LT5iYXNlLmNydGMpLT5waXBlOwo+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKG9s ZF9jcnRjX3N0YXRlLT51YXBpLmNydGMpLT5waXBlOwo+ICAJdTMyIHZhbDsKPiAgCj4gIAl2bHZf ZHBpb19nZXQoZGV2X3ByaXYpOwo+IEBAIC0xMDE2LDcgKzEwMTYsNyBAQCB2b2lkIHZsdl9waHlf cHJlX3BsbF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHsKPiAgCXN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRwb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVy LT5iYXNlKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZW5jb2Rlci0+YmFzZS5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCWVudW0gZHBpb19j aGFubmVsIHBvcnQgPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChkcG9ydCk7Cj4gIAllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7Cj4gIAo+IEBAIC0xMDQ2LDcgKzEwNDYsNyBAQCB2b2lkIHZsdl9w aHlfcHJlX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ c3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFz ZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkcG9ydCA9IGRwX3RvX2RpZ19wb3J0 KGludGVsX2RwKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCWVudW0gZHBp b19jaGFubmVsIHBvcnQgPSB2bHZfZHBvcnRfdG9fY2hhbm5lbChkcG9ydCk7Cj4gIAllbnVtIHBp cGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAl1MzIgdmFsOwo+IEBAIC0xMDc1LDcgKzEwNzUsNyBA QCB2b2lkIHZsdl9waHlfcmVzZXRfbGFuZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRwb3J0ID0gZW5jX3RvX2RpZ19w b3J0KCZlbmNvZGVyLT5iYXNlKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRlLT51YXBpLmNy dGMpOwo+ICAJZW51bSBkcGlvX2NoYW5uZWwgcG9ydCA9IHZsdl9kcG9ydF90b19jaGFubmVsKGRw b3J0KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuYwo+IGluZGV4IDVlOWU4NGM5NGEx NS4uYzI2MDNhYTU2NzY3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHBsbF9tZ3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHBsbF9tZ3IuYwo+IEBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBhc3NlcnRfc2hhcmVk X2RwbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgKi8KPiAgdm9pZCBp bnRlbF9wcmVwYXJlX3NoYXJlZF9kcGxsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3Qg aW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9IGNydGNfc3RhdGUtPnNoYXJlZF9kcGxsOwo+ICAKPiBA QCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgaW50ZWxfcHJlcGFyZV9zaGFyZWRfZHBsbChjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgICovCj4gIHZvaWQgaW50ZWxf ZW5hYmxlX3NoYXJlZF9kcGxsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxf c2hhcmVkX2RwbGwgKnBsbCA9IGNydGNfc3RhdGUtPnNoYXJlZF9kcGxsOwo+ICAJdW5zaWduZWQg aW50IGNydGNfbWFzayA9IGRybV9jcnRjX21hc2soJmNydGMtPmJhc2UpOwo+IEBAIC0yMDgsNyAr MjA4LDcgQEAgdm9pZCBpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gICAqLwo+ICB2b2lkIGludGVsX2Rpc2FibGVfc2hh cmVkX2RwbGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5i YXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNy dGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBs bCAqcGxsID0gY3J0Y19zdGF0ZS0+c2hhcmVkX2RwbGw7Cj4gIAl1bnNpZ25lZCBpbnQgY3J0Y19t YXNrID0gZHJtX2NydGNfbWFzaygmY3J0Yy0+YmFzZSk7Cj4gQEAgLTgyNSw3ICs4MjUsNyBAQCBo c3dfZGRpX2hkbWlfZ2V0X2RwbGwoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4g IHN0YXRpYyBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKgo+ICBoc3dfZGRpX2RwX2dldF9kcGxs KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0 Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwo+ICAJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpw bGw7Cj4gIAllbnVtIGludGVsX2RwbGxfaWQgcGxsX2lkOwo+ICAJaW50IGNsb2NrID0gY3J0Y19z dGF0ZS0+cG9ydF9jbG9jazsKPiBAQCAtMTczNCw3ICsxNzM0LDcgQEAgc3RhdGljIGJvb2wKPiAg Ynh0X2RkaV9oZG1pX3BsbF9kaXZpZGVycyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiAgCQkJICBzdHJ1Y3QgYnh0X2Nsa19kaXYgKmNsa19kaXYpCj4gIHsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMp Owo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHBsbCBiZXN0X2Nsb2NrOwo+ICAKPiAgCS8qIENhbGN1 bGF0ZSBIRE1JIGRpdiAqLwo+IEBAIC0yMjU3LDcgKzIyNTcsNyBAQCBzdGF0aWMgYm9vbAo+ICBj bmxfZGRpX2NhbGN1bGF0ZV93cnBsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCQkJc3RydWN0IHNrbF93cnBsbF9wYXJhbXMgKndycGxsX3BhcmFtcykKPiAgewo+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5i YXNlLmNydGMtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPiAgCXUzMiBhZmVfY2xvY2sgPSBj cnRjX3N0YXRlLT5wb3J0X2Nsb2NrICogNTsKPiAgCXUzMiByZWZfY2xvY2s7Cj4gIAl1MzIgZGNv X21pbiA9IDc5OTgwMDA7Cj4gQEAgLTI1MzUsNyArMjUzNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgc2tsX3dycGxsX3BhcmFtcyB0Z2xfdGJ0X3BsbF8yNE1Iel92YWx1ZXMgPSB7Cj4gIHN0YXRp YyBib29sIGljbF9jYWxjX2RwX2NvbWJvX3BsbChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiAgCQkJCSAgc3RydWN0IHNrbF93cnBsbF9wYXJhbXMgKnBsbF9wYXJhbXMpCj4g IHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gIAljb25zdCBzdHJ1 Y3QgaWNsX2NvbWJvX3BsbF9wYXJhbXMgKnBhcmFtcyA9Cj4gIAkJZGV2X3ByaXYtPmNkY2xrLmh3 LnJlZiA9PSAyNDAwMCA/Cj4gIAkJaWNsX2RwX2NvbWJvX3BsbF8yNE1Iel92YWx1ZXMgOgo+IEBA IC0yNTU3LDcgKzI1NTcsNyBAQCBzdGF0aWMgYm9vbCBpY2xfY2FsY19kcF9jb21ib19wbGwoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyBib29sIGljbF9jYWxj X3RidF9wbGwoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAg c3RydWN0IHNrbF93cnBsbF9wYXJhbXMgKnBsbF9wYXJhbXMpCj4gIHsKPiAtCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5k ZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj X3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTIpIHsKPiAgCQlzd2l0Y2ggKGRldl9wcml2LT5jZGNsay5ody5yZWYpIHsKPiBAQCAtMjU5 NCw3ICsyNTk0LDcgQEAgc3RhdGljIGJvb2wgaWNsX2NhbGNfZHBsbF9zdGF0ZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICAJCQkJc3RydWN0IGludGVsX2RwbGxfaHdfc3RhdGUgKnBsbF9zdGF0ZSkKPiAg ewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0 YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPiAgCXUzMiBjZmdjcjAs IGNmZ2NyMTsKPiAgCXN0cnVjdCBza2xfd3JwbGxfcGFyYW1zIHBsbF9wYXJhbXMgPSB7IDAgfTsK PiAgCWJvb2wgcmV0Owo+IEBAIC0yNzI2LDcgKzI3MjYsNyBAQCBzdGF0aWMgYm9vbCBpY2xfbWdf cGxsX2ZpbmRfZGl2aXNvcnMoaW50IGNsb2NrX2toeiwgYm9vbCBpc19kcCwgYm9vbCB1c2Vfc3Nj LAo+ICBzdGF0aWMgYm9vbCBpY2xfY2FsY19tZ19wbGxfc3RhdGUoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgIHN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlICpw bGxfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4g IAlpbnQgcmVmY2xrX2toeiA9IGRldl9wcml2LT5jZGNsay5ody5yZWY7Cj4gIAlpbnQgY2xvY2sg PSBjcnRjX3N0YXRlLT5wb3J0X2Nsb2NrOwo+ICAJdTMyIGRjb19raHosIG0xZGl2LCBtMmRpdl9p bnQsIG0yZGl2X3JlbSwgbTJkaXZfZnJhYzsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kdm8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHZvLmMKPiBpbmRleCA5ODI3Zjk5NDkxZDEuLjI4NzcwYzU3NjVhZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2R2by5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kdm8uYwo+IEBAIC0xNzgsOSArMTc4LDkg QEAgc3RhdGljIHZvaWQgaW50ZWxfZHZvX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4gIAllbHNlCj4gIAkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7Cj4g IAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiAr CXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwo+ICAKPiAtCXBp cGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IHBpcGVfY29uZmlnLT5w b3J0X2Nsb2NrOwo+ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9 IHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9k aXNhYmxlX2R2byhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiBAQCAtMjA3LDggKzIw Nyw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kdm8oc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4gIAl1MzIgdGVtcCA9IEk5MTVfUkVBRChkdm9fcmVnKTsKPiAgCj4gIAlpbnRl bF9kdm8tPmRldi5kZXZfb3BzLT5tb2RlX3NldCgmaW50ZWxfZHZvLT5kZXYsCj4gLQkJCQkJICZw aXBlX2NvbmZpZy0+YmFzZS5tb2RlLAo+IC0JCQkJCSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZSk7Cj4gKwkJCQkJICZwaXBlX2NvbmZpZy0+aHcubW9kZSwKPiArCQkJCQkgJnBpcGVf Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlKTsKPiAgCj4gIAlJOTE1X1dSSVRFKGR2b19yZWcsIHRl bXAgfCBEVk9fRU5BQkxFKTsKPiAgCUk5MTVfUkVBRChkdm9fcmVnKTsKPiBAQCAtMjUzLDcgKzI1 Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHZvX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICAJc3RydWN0IGludGVsX2R2byAqaW50ZWxfZHZvID0gZW5jX3Rv X2R2byhlbmNvZGVyKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpmaXhlZF9t b2RlID0KPiAgCQlpbnRlbF9kdm8tPmF0dGFjaGVkX2Nvbm5lY3Rvci0+cGFuZWwuZml4ZWRfbW9k ZTsKPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29u ZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCj4gIAkvKgo+ ICAJICogSWYgd2UgaGF2ZSB0aW1pbmdzIGZyb20gdGhlIEJJT1MgZm9yIHRoZSBwYW5lbCwgcHV0 IHRoZW0gaW4KPiBAQCAtMjc3LDggKzI3Nyw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2R2b19wcmVf ZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJIGNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5j cnRjKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0g JnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPnVhcGkuY3J0Yyk7Cj4gKwljb25zdCBz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcu YWRqdXN0ZWRfbW9kZTsKPiAgCXN0cnVjdCBpbnRlbF9kdm8gKmludGVsX2R2byA9IGVuY190b19k dm8oZW5jb2Rlcik7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAl1MzIgZHZv X3ZhbDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9m YmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMKPiBpbmRleCAz MTExZWNhZWFiZDAuLmM2Y2MzNzc1ZjNiOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9mYmMuYwo+IEBAIC02NjcsNyArNjY3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZmJjX3VwZGF0ZV9zdGF0ZV9jYWNoZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCWNhY2hl LT52bWEgPSBOVUxMOwo+ICAJY2FjaGUtPmZsYWdzID0gMDsKPiAgCj4gLQljYWNoZS0+Y3J0Yy5t b2RlX2ZsYWdzID0gY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzOwo+ICsJY2Fj aGUtPmNydGMubW9kZV9mbGFncyA9IGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuZmxhZ3M7 Cj4gIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkK PiAgCQljYWNoZS0+Y3J0Yy5oc3dfYmR3X3BpeGVsX3JhdGUgPSBjcnRjX3N0YXRlLT5waXhlbF9y YXRlOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9oZG1pLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYwo+IGlu ZGV4IDBhNjg0NmM1YmE5NS4uZmQ3NTAxNmJkMWU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMKPiBAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB2b2lk IGlieF93cml0ZV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHsK PiAgCWNvbnN0IHUzMiAqZGF0YSA9IGZyYW1lOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsK PiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpOwo+ICAJaTkxNV9yZWdfdCByZWcgPSBUVklERU9fRElQX0NUTChpbnRl bF9jcnRjLT5waXBlKTsKPiAgCXUzMiB2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiAgCWludCBpOwo+ IEBAIC0zMTUsNyArMzE1LDcgQEAgc3RhdGljIHZvaWQgaWJ4X3JlYWRfaW5mb2ZyYW1lKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkgICAgICAgdm9pZCAqZnJhbWUsIHNzaXpl X3QgbGVuKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAl1MzIgdmFs LCAqZGF0YSA9IGZyYW1lOwo+ICAJaW50IGk7Cj4gIAo+IEBAIC0zMzQsNyArMzM0LDcgQEAgc3Rh dGljIHUzMiBpYnhfaW5mb2ZyYW1lc19lbmFibGVkKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ICAJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp Cj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOwo+IC0JZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKHBpcGVf Y29uZmlnLT5iYXNlLmNydGMpLT5waXBlOwo+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9j cnRjKHBpcGVfY29uZmlnLT51YXBpLmNydGMpLT5waXBlOwo+ICAJaTkxNV9yZWdfdCByZWcgPSBU VklERU9fRElQX0NUTChwaXBlKTsKPiAgCXUzMiB2YWwgPSBJOTE1X1JFQUQocmVnKTsKPiAgCj4g QEAgLTM1Niw3ICszNTYsNyBAQCBzdGF0aWMgdm9pZCBjcHRfd3JpdGVfaW5mb2ZyYW1lKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICB7Cj4gIAljb25zdCB1MzIgKmRhdGEgPSBmcmFt ZTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rl ci0+YmFzZS5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCWk5MTVf cmVnX3QgcmVnID0gVFZJREVPX0RJUF9DVEwoaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gIAl1MzIgdmFs ID0gSTkxNV9SRUFEKHJlZyk7Cj4gIAlpbnQgaTsKPiBAQCAtMzk1LDcgKzM5NSw3IEBAIHN0YXRp YyB2b2lkIGNwdF9yZWFkX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAgCQkJICAgICAgIHZvaWQgKmZyYW1lLCBzc2l6ZV90IGxlbikKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4g LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT51YXBpLmNydGMpOwo+ICAJdTMyIHZhbCwgKmRhdGEgPSBmcmFtZTsKPiAgCWludCBp Owo+ICAKPiBAQCAtNDE0LDcgKzQxNCw3IEBAIHN0YXRpYyB1MzIgY3B0X2luZm9mcmFtZXNfZW5h YmxlZChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCSAgY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCWVudW0g cGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKS0+cGlwZTsK PiArCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRj KS0+cGlwZTsKPiAgCXUzMiB2YWwgPSBJOTE1X1JFQUQoVFZJREVPX0RJUF9DVEwocGlwZSkpOwo+ ICAKPiAgCWlmICgodmFsICYgVklERU9fRElQX0VOQUJMRSkgPT0gMCkKPiBAQCAtNDMyLDcgKzQz Miw3IEBAIHN0YXRpYyB2b2lkIHZsdl93cml0ZV9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gIHsKPiAgCWNvbnN0IHUzMiAqZGF0YSA9IGZyYW1lOwo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7 Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJaTkxNV9yZWdfdCByZWcgPSBW TFZfVFZJREVPX0RJUF9DVEwoaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gIAl1MzIgdmFsID0gSTkxNV9S RUFEKHJlZyk7Cj4gIAlpbnQgaTsKPiBAQCAtNDY4LDcgKzQ2OCw3IEBAIHN0YXRpYyB2b2lkIHZs dl9yZWFkX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJICAg ICAgIHZvaWQgKmZyYW1lLCBzc2l6ZV90IGxlbikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsK PiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51 YXBpLmNydGMpOwo+ICAJdTMyIHZhbCwgKmRhdGEgPSBmcmFtZTsKPiAgCWludCBpOwo+ICAKPiBA QCAtNDg3LDcgKzQ4Nyw3IEBAIHN0YXRpYyB1MzIgdmx2X2luZm9mcmFtZXNfZW5hYmxlZChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCWVudW0gcGlwZSBwaXBl ID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKS0+cGlwZTsKPiArCWVudW0g cGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRjKS0+cGlwZTsK PiAgCXUzMiB2YWwgPSBJOTE1X1JFQUQoVkxWX1RWSURFT19ESVBfQ1RMKHBpcGUpKTsKPiAgCj4g IAlpZiAoKHZhbCAmIFZJREVPX0RJUF9FTkFCTEUpID09IDApCj4gQEAgLTcwMCw3ICs3MDAsNyBA QCBpbnRlbF9oZG1pX2NvbXB1dGVfYXZpX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiAgewo+ICAJc3RydWN0IGhkbWlfYXZpX2luZm9mcmFtZSAqZnJhbWUgPSAmY3J0 Y19zdGF0ZS0+aW5mb2ZyYW1lcy5hdmkuYXZpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21v ZGU7Cj4gKwkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gIAlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gY29ubl9zdGF0ZS0+Y29ubmVjdG9yOwo+ICAJaW50IHJldDsK PiAgCj4gQEAgLTc5Niw3ICs3OTYsNyBAQCBpbnRlbF9oZG1pX2NvbXB1dGVfaGRtaV9pbmZvZnJh bWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJcmV0ID0gZHJtX2hkbWlf dmVuZG9yX2luZm9mcmFtZV9mcm9tX2Rpc3BsYXlfbW9kZShmcmFtZSwKPiAgCQkJCQkJCSAgY29u bl9zdGF0ZS0+Y29ubmVjdG9yLAo+IC0JCQkJCQkJICAmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3Rl ZF9tb2RlKTsKPiArCQkJCQkJCSAgJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUpOwo+ICAJ aWYgKFdBUk5fT04ocmV0KSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IEBAIC05NTcsNyArOTU3 LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfaGRtaV9zZXRfZ2NwX2luZm9mcmFtZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsK PiAgCWk5MTVfcmVnX3QgcmVnOwo+ICAKPiAgCWlmICgoY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5l bmFibGUgJgo+IEBAIC05ODIsNyArOTgyLDcgQEAgdm9pZCBpbnRlbF9oZG1pX3JlYWRfZ2NwX2lu Zm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCSAgIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVh cGkuY3J0Yyk7Cj4gIAlpOTE1X3JlZ190IHJlZzsKPiAgCj4gIAlpZiAoKGNydGNfc3RhdGUtPmlu Zm9mcmFtZXMuZW5hYmxlICYKPiBAQCAtMTAxOSw3ICsxMDE5LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfaGRtaV9jb21wdXRlX2djcF9pbmZvZnJhbWUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gIAo+ICAJLyogRW5hYmxlIGRlZmF1bHRfcGhhc2Ugd2hlbmV2ZXIgdGhlIGRpc3BsYXkg bW9kZSBpcyBzdWl0YWJseSBhbGlnbmVkICovCj4gIAlpZiAoZ2NwX2RlZmF1bHRfcGhhc2VfcG9z c2libGUoY3J0Y19zdGF0ZS0+cGlwZV9icHAsCj4gLQkJCQkgICAgICAgJmNydGNfc3RhdGUtPmJh c2UuYWRqdXN0ZWRfbW9kZSkpCj4gKwkJCQkgICAgICAgJmNydGNfc3RhdGUtPmh3LmFkanVzdGVk X21vZGUpKQo+ICAJCWNydGNfc3RhdGUtPmluZm9mcmFtZXMuZ2NwIHw9IEdDUF9ERUZBVUxUX1BI QVNFX0VOQUJMRTsKPiAgfQo+ICAKPiBAQCAtMTAyOSw3ICsxMDI5LDcgQEAgc3RhdGljIHZvaWQg aWJ4X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkg ICAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KCZlbmNv ZGVyLT5iYXNlKTsKPiAgCXN0cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0gJmludGVsX2Rp Z19wb3J0LT5oZG1pOwo+ICAJaTkxNV9yZWdfdCByZWcgPSBUVklERU9fRElQX0NUTChpbnRlbF9j cnRjLT5waXBlKTsKPiBAQCAtMTA4OCw3ICsxMDg4LDcgQEAgc3RhdGljIHZvaWQgY3B0X3NldF9p bmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkgICAgICAgY29u c3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYp Owo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9oZG1p ICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoJmVuY29kZXItPmJhc2UpOwo+ICAJaTkx NV9yZWdfdCByZWcgPSBUVklERU9fRElQX0NUTChpbnRlbF9jcnRjLT5waXBlKTsKPiAgCXUzMiB2 YWwgPSBJOTE1X1JFQUQocmVnKTsKPiBAQCAtMTEzNyw3ICsxMTM3LDcgQEAgc3RhdGljIHZvaWQg dmx2X3NldF9pbmZvZnJhbWVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkg ICAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBp bnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoJmVuY29kZXItPmJhc2Up Owo+ICAJaTkxNV9yZWdfdCByZWcgPSBWTFZfVFZJREVPX0RJUF9DVEwoaW50ZWxfY3J0Yy0+cGlw ZSk7Cj4gIAl1MzIgdmFsID0gSTkxNV9SRUFEKHJlZyk7Cj4gQEAgLTE3MzMsOSArMTczMyw5IEBA IHN0YXRpYyB2b2lkIGludGVsX2hkbWlfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2 Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJh c2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0g ZW5jX3RvX2ludGVsX2hkbWkoJmVuY29kZXItPmJhc2UpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9t b2RlOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAm Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCXUzMiBoZG1pX3ZhbDsKPiAgCj4gIAlp bnRlbF9kcF9kdWFsX21vZGVfc2V0X3RtZHNfb3V0cHV0KGludGVsX2hkbWksIHRydWUpOwo+IEBA IC0xODI2LDcgKzE4MjYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZG1pX2dldF9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkgICAgdG1wICYgSERNSV9DT0xPUl9SQU5H RV8xNl8yMzUpCj4gIAkJcGlwZV9jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UgPSB0cnVlOwo+ ICAKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7Cj4g KwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiAgCj4gIAlp ZiAoKHRtcCAmIFNEVk9fQ09MT1JfRk9STUFUX01BU0spID09IEhETUlfQ09MT1JfRk9STUFUXzEy YnBjKQo+ICAJCWRvdGNsb2NrID0gcGlwZV9jb25maWctPnBvcnRfY2xvY2sgKiAyIC8gMzsKPiBA QCAtMTgzNiw3ICsxODM2LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9nZXRfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJaWYgKHBpcGVfY29uZmlnLT5waXhlbF9t dWx0aXBsaWVyKQo+ICAJCWRvdGNsb2NrIC89IHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVy Owo+ICAKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IGRv dGNsb2NrOwo+ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IGRv dGNsb2NrOwo+ICAKPiAgCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0gNDsKPiAgCj4gQEAgLTE4 NTcsNyArMTg1Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9oZG1pX2F1ZGlvKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT51YXBpLmNydGMpOwo+ICAK PiAgCVdBUk5fT04oIXBpcGVfY29uZmlnLT5oYXNfaGRtaV9zaW5rKTsKPiAgCURSTV9ERUJVR19E UklWRVIoIkVuYWJsaW5nIEhETUkgYXVkaW8gb24gcGlwZSAlY1xuIiwKPiBAQCAtMTk0Myw3ICsx OTQzLDcgQEAgc3RhdGljIHZvaWQgY3B0X2VuYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFz ZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25m aWctPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2Ny dGMocGlwZV9jb25maWctPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxf aGRtaSA9IGVuY190b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsKPiAgCWVudW0gcGlwZSBw aXBlID0gY3J0Yy0+cGlwZTsKPiAgCXUzMiB0ZW1wOwo+IEBAIC0yMDA3LDcgKzIwMDcsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1p KCZlbmNvZGVyLT5iYXNlKTsKPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0ID0KPiAgCQloZG1pX3RvX2RpZ19wb3J0KGludGVsX2hkbWkpOwo+IC0Jc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGMp Owo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG9sZF9jcnRjX3N0 YXRlLT51YXBpLmNydGMpOwo+ICAJdTMyIHRlbXA7Cj4gIAo+ICAJdGVtcCA9IEk5MTVfUkVBRChp bnRlbF9oZG1pLT5oZG1pX3JlZyk7Cj4gQEAgLTIyMDcsMTIgKzIyMDcsMTIgQEAgc3RhdGljIGJv b2wgaGRtaV9kZWVwX2NvbG9yX3Bvc3NpYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+ICAJCQkJICAgICBpbnQgYnBjKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IC0JCXRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRj LT5kZXYpOwo+IC0Jc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+ YmFzZS5zdGF0ZTsKPiArCQl0b19pOTE1KGNydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPiAr CXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNydGNfc3RhdGUtPnVhcGkuc3RhdGU7 Cj4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubmVjdG9yX3N0YXRlOwo+ICAJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9t b2RlOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJaW50IGk7Cj4gIAo+ ICAJaWYgKEhBU19HTUNIKGRldl9wcml2KSkKPiBAQCAtMjIzNyw3ICsyMjM3LDcgQEAgc3RhdGlj IGJvb2wgaGRtaV9kZWVwX2NvbG9yX3Bvc3NpYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJZm9yX2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0 ZSwgY29ubmVjdG9yLCBjb25uZWN0b3Jfc3RhdGUsIGkpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfaW5mbyAqaW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mbzsKPiAgCj4gLQkJ aWYgKGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YyAhPSBjcnRjX3N0YXRlLT5iYXNlLmNydGMpCj4gKwkJ aWYgKGNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YyAhPSBjcnRjX3N0YXRlLT51YXBpLmNydGMpCj4gIAkJ CWNvbnRpbnVlOwo+ICAKPiAgCQlpZiAoY3J0Y19zdGF0ZS0+b3V0cHV0X2Zvcm1hdCA9PSBJTlRF TF9PVVRQVVRfRk9STUFUX1lDQkNSNDIwKSB7Cj4gQEAgLTIyNzgsNyArMjI3OCw3IEBAIHN0YXRp YyBib29sCj4gIGludGVsX2hkbWlfeWNiY3I0MjBfY29uZmlnKHN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IsCj4gIAkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25maWcpCj4g IHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhjb25m aWctPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY29uZmlnLT51YXBpLmNydGMpOwo+ICAKPiAgCWlmICghY29ubmVjdG9yLT55Y2Jj cl80MjBfYWxsb3dlZCkgewo+ICAJCURSTV9FUlJPUigiUGxhdGZvcm0gZG9lc24ndCBzdXBwb3J0 IFlDQkNSNDIwIG91dHB1dFxuIik7Cj4gQEAgLTIzMzMsNyArMjMzMyw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfaGRtaV9jb21wdXRlX2Nsb2NrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1p KCZlbmNvZGVyLT5iYXNlKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJaW50IGJwYywgY2xvY2sgPSBhZGp1c3Rl ZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICAKPiAgCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERS TV9NT0RFX0ZMQUdfREJMQ0xLKQo+IEBAIC0yMzc1LDcgKzIzNzUsNyBAQCBzdGF0aWMgYm9vbCBp bnRlbF9oZG1pX2xpbWl0ZWRfY29sb3JfcmFuZ2UoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfcwo+ICAJY29uc3Qgc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0YXRl ICppbnRlbF9jb25uX3N0YXRlID0KPiAgCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0 ZShjb25uX3N0YXRlKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZjcnRj X3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAKPiAgCS8qCj4gIAkgKiBPdXIgWUNiQ3Igb3V0 cHV0IGlzIGFsd2F5cyBsaW1pdGVkIHJhbmdlLgo+IEBAIC0yNDAzLDcgKzI0MDMsNyBAQCBpbnQg aW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAgewo+ICAJc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBlbmNfdG9faW50ZWxfaGRt aSgmZW5jb2Rlci0+YmFzZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcu YWRqdXN0ZWRfbW9kZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBjb25u X3N0YXRlLT5jb25uZWN0b3I7Cj4gIAlzdHJ1Y3QgZHJtX3NjZGMgKnNjZGMgPSAmY29ubmVjdG9y LT5kaXNwbGF5X2luZm8uaGRtaS5zY2RjOwo+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVj dG9yX3N0YXRlICppbnRlbF9jb25uX3N0YXRlID0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9sc3Bjb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfbHNwY29uLmMKPiBpbmRleCBmOGYxMzA4NjQzYTkuLjUxNDVmZjhiOTYyYiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2xzcGNvbi5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9sc3Bjb24uYwo+IEBA IC0xODksNyArMTg5LDcgQEAgdm9pZCBsc3Bjb25feWNiY3I0MjBfY29uZmlnKHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IsCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9p bmZvICppbmZvID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvOwo+ICAJY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCQkJCSZjcnRjX3N0YXRlLT5iYXNl LmFkanVzdGVkX21vZGU7Cj4gKwkJCQkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4g IAo+ICAJaWYgKGRybV9tb2RlX2lzXzQyMF9vbmx5KGluZm8sIGFkanVzdGVkX21vZGUpICYmCj4g IAkgICAgY29ubmVjdG9yLT55Y2Jjcl80MjBfYWxsb3dlZCkgewo+IEBAIC00NzUsNyArNDc1LDcg QEAgdm9pZCBsc3Bjb25fc2V0X2luZm9mcmFtZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGVuY190b19kaWdf cG9ydCgmZW5jb2Rlci0+YmFzZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxfbHNwY29uICpsc3Bjb24gPSAm ZGlnX3BvcnQtPmxzcGNvbjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAKPiAgCWlmICghbHNwY29uLT5hY3RpdmUp IHsKPiAgCQlEUk1fRVJST1IoIldyaXRpbmcgaW5mb2ZyYW1lcyB3aGlsZSBMU1BDT04gZGlzYWJs ZWQgP1xuIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfbHZkcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9sdmRzLmMKPiBp bmRleCAxMzg0MWQ3YzQ1NWIuLmNhNGViYjBmMjIzMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2x2ZHMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfbHZkcy5jCj4gQEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9sdmRzX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g IAllbHNlCj4gIAkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19QVlNZTkM7Cj4gIAo+IC0JcGlwZV9j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiArCXBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpIDwgNSkKPiAgCQlwaXBlX2NvbmZpZy0+Z21jaF9wZml0Lmx2ZHNfYm9yZGVyX2Jp dHMgPQo+IEBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfbHZkc19nZXRfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXBpcGVfY29uZmlnLT5nbWNo X3BmaXQuY29udHJvbCB8PSB0bXAgJiBQQU5FTF84VE82X0RJVEhFUl9FTkFCTEU7Cj4gIAl9Cj4g IAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gcGlwZV9j b25maWctPnBvcnRfY2xvY2s7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRj X2Nsb2NrID0gcGlwZV9jb25maWctPnBvcnRfY2xvY2s7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lk IGludGVsX2x2ZHNfcHBzX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gQEAgLTIzMCw4ICsyMzAsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVfZW5hYmxl X2x2ZHMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHsKPiAgCXN0cnVjdCBpbnRl bF9sdmRzX2VuY29kZXIgKmx2ZHNfZW5jb2RlciA9IHRvX2x2ZHNfZW5jb2RlcigmZW5jb2Rlci0+ YmFzZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWct PnVhcGkuY3J0Yyk7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRf bW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCWVudW0gcGlwZSBwaXBl ID0gY3J0Yy0+cGlwZTsKPiAgCXUzMiB0ZW1wOwo+ICAKPiBAQCAtMzkyLDggKzM5Miw4IEBAIHN0 YXRpYyBpbnQgaW50ZWxfbHZkc19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq aW50ZWxfZW5jb2RlciwKPiAgCQl0b19sdmRzX2VuY29kZXIoJmludGVsX2VuY29kZXItPmJhc2Up Owo+ICAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0KPiAgCQlsdmRz X2VuY29kZXItPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWct PmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRjKTsKPiAgCXVu c2lnbmVkIGludCBsdmRzX2JwcDsKPiAgCj4gIAkvKiBTaG91bGQgbmV2ZXIgaGFwcGVuISEgKi8K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wYW5lbC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wYW5lbC5jCj4gaW5kZXggYmMx NGU5YzAyODVhLi42ZjNlYWFlMzc2MWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9wYW5lbC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9wYW5lbC5jCj4gQEAgLTE3OCw3ICsxNzgsNyBAQCBpbnRlbF9wY2hfcGFuZWxf Zml0dGluZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCQkJc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAo+ICAJCQlpbnQgZml0dGluZ19tb2RlKQo+ICB7Cj4g LQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAlp bnQgeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Cj4gIAo+ICAJLyogTmF0aXZl IG1vZGVzIGRvbid0IG5lZWQgZml0dGluZyAqLwo+IEBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGlj IGlubGluZSB1MzIgcGFuZWxfZml0dGVyX3NjYWxpbmcodTMyIHNvdXJjZSwgdTMyIHRhcmdldCkK PiAgc3RhdGljIHZvaWQgaTk2NV9zY2FsZV9hc3BlY3Qoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnLAo+ICAJCQkgICAgICB1MzIgKnBmaXRfY29udHJvbCkKPiAgewo+IC0JY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICph ZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJdTMyIHNj YWxlZF93aWR0aCA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkgKgo+ICAJCXBpcGVfY29u ZmlnLT5waXBlX3NyY19oOwo+ICAJdTMyIHNjYWxlZF9oZWlnaHQgPSBwaXBlX2NvbmZpZy0+cGlw ZV9zcmNfdyAqCj4gQEAgLTMyMSw3ICszMjEsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3NjYWxlX2Fz cGVjdChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAkJCSAgICAgIHUz MiAqcGZpdF9jb250cm9sLCB1MzIgKnBmaXRfcGdtX3JhdGlvcywKPiAgCQkJICAgICAgdTMyICpi b3JkZXIpCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0g JnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAg CXUzMiBzY2FsZWRfd2lkdGggPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5ICoKPiAgCQlw aXBlX2NvbmZpZy0+cGlwZV9zcmNfaDsKPiAgCXUzMiBzY2FsZWRfaGVpZ2h0ID0gcGlwZV9jb25m aWctPnBpcGVfc3JjX3cgKgo+IEBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBpbnRlbF9nbWNoX3Bh bmVsX2ZpdHRpbmcoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4gIHsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFzZS5k ZXYpOwo+ICAJdTMyIHBmaXRfY29udHJvbCA9IDAsIHBmaXRfcGdtX3JhdGlvcyA9IDAsIGJvcmRl ciA9IDA7Cj4gLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBl X2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAo+ICAJ LyogTmF0aXZlIG1vZGVzIGRvbid0IG5lZWQgZml0dGluZyAqLwo+ICAJaWYgKGFkanVzdGVkX21v ZGUtPmNydGNfaGRpc3BsYXkgPT0gcGlwZV9jb25maWctPnBpcGVfc3JjX3cgJiYKPiBAQCAtMTA0 Nyw3ICsxMDQ3LDcgQEAgc3RhdGljIHZvaWQgdmx2X2VuYWJsZV9iYWNrbGlnaHQoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9y KTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVj dG9yLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rv ci0+cGFuZWw7Cj4gLQllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ YmFzZS5jcnRjKS0+cGlwZTsKPiArCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT51YXBpLmNydGMpLT5waXBlOwo+ICAJdTMyIGN0bCwgY3RsMjsKPiAgCj4gIAljdGwy ID0gSTkxNV9SRUFEKFZMVl9CTENfUFdNX0NUTDIocGlwZSkpOwo+IEBAIC0xMDc3LDcgKzEwNzcs NyBAQCBzdGF0aWMgdm9pZCBieHRfZW5hYmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2Uu ZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsK PiAtCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMp LT5waXBlOwo+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVh cGkuY3J0YyktPnBpcGU7Cj4gIAl1MzIgcHdtX2N0bCwgdmFsOwo+ICAKPiAgCS8qIENvbnRyb2xs ZXIgMSB1c2VzIHRoZSB1dGlsaXR5IHBpbi4gKi8KPiBAQCAtMTE4OSw3ICsxMTg5LDcgQEAgdm9p ZCBpbnRlbF9wYW5lbF9lbmFibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0g dG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+IC0JZW51 bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0YyktPnBpcGU7 Cj4gKwllbnVtIHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRj KS0+cGlwZTsKPiAgCj4gIAlpZiAoIXBhbmVsLT5iYWNrbGlnaHQucHJlc2VudCkKPiAgCQlyZXR1 cm47Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcGlw ZV9jcmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcGlwZV9jcmMuYwo+ IGluZGV4IDYyNjBhMjA4MjcxOS4uMjc0NjUxMmY0NDY2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcGlwZV9jcmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcGlwZV9jcmMuYwo+IEBAIC0zMDksMTMgKzMwOSwxMyBA QCBpbnRlbF9jcnRjX2NyY19zZXR1cF93b3JrYXJvdW5kcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywgYm9vbCBlbmFibGUpCj4gIAkJZ290byBwdXRfc3RhdGU7Cj4gIAl9Cj4gIAo+IC0JcGlwZV9j b25maWctPmJhc2UubW9kZV9jaGFuZ2VkID0gcGlwZV9jb25maWctPmhhc19wc3I7Cj4gKwlwaXBl X2NvbmZpZy0+dWFwaS5tb2RlX2NoYW5nZWQgPSBwaXBlX2NvbmZpZy0+aGFzX3BzcjsKPiAgCXBp cGVfY29uZmlnLT5jcmNfZW5hYmxlZCA9IGVuYWJsZTsKPiAgCj4gIAlpZiAoSVNfSEFTV0VMTChk ZXZfcHJpdikgJiYKPiAtCSAgICBwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUgJiYgY3J0Yy0+cGlw ZSA9PSBQSVBFX0EgJiYKPiArCSAgICBwaXBlX2NvbmZpZy0+aHcuYWN0aXZlICYmIGNydGMtPnBp cGUgPT0gUElQRV9BICYmCj4gIAkgICAgcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyID09IFRS QU5TQ09ERVJfRURQKQo+IC0JCXBpcGVfY29uZmlnLT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7 Cj4gKwkJcGlwZV9jb25maWctPnVhcGkubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiAgCj4gIAlyZXQg PSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9wc3IuYwo+IGluZGV4IGIzYzdlZWY1M2JmMy4uODk4OGRiZThjMTllIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jCj4gQEAgLTUzOCw4ICs1 MzgsOCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLAo+ICAJCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19p OTE1KGludGVsX2RwKTsKPiAtCWludCBjcnRjX2hkaXNwbGF5ID0gY3J0Y19zdGF0ZS0+YmFzZS5h ZGp1c3RlZF9tb2RlLmNydGNfaGRpc3BsYXk7Cj4gLQlpbnQgY3J0Y192ZGlzcGxheSA9IGNydGNf c3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Owo+ICsJaW50IGNydGNfaGRp c3BsYXkgPSBjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaGRpc3BsYXk7Cj4gKwlp bnQgY3J0Y192ZGlzcGxheSA9IGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y192ZGlz cGxheTsKPiAgCWludCBwc3JfbWF4X2ggPSAwLCBwc3JfbWF4X3YgPSAwOwo+ICAKPiAgCWlmICgh ZGV2X3ByaXYtPnBzci5zaW5rX3BzcjJfc3VwcG9ydCkKPiBAQCAtNjA1LDcgKzYwNSw3IEBAIHZv aWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4g IAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGlu dGVsX2RwKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5 MTUoaW50ZWxfZHApOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGUgPQo+IC0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJJmNydGNf c3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gIAlpbnQgcHNyX3NldHVwX3RpbWU7Cj4gIAo+ICAJ aWYgKCFDQU5fUFNSKGRldl9wcml2KSkKPiBAQCAtNzQ1LDcgKzc0NSw3IEBAIHN0YXRpYyB2b2lk IGludGVsX3Bzcl9lbmFibGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgCj4gIAlkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCA9IGludGVsX3BzcjJfZW5hYmxl ZChkZXZfcHJpdiwgY3J0Y19zdGF0ZSk7Cj4gIAlkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZm ZXJfYml0cyA9IDA7Cj4gLQlkZXZfcHJpdi0+cHNyLnBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0YyktPnBpcGU7Cj4gKwlkZXZfcHJpdi0+cHNyLnBpcGUgPSB0b19pbnRl bF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0YyktPnBpcGU7Cj4gIAlkZXZfcHJpdi0+cHNyLnRy YW5zY29kZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiAgCj4gIAkvKgo+IEBAIC05 ODgsNyArOTg4LDcgQEAgdm9pZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCj4gIGludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUsCj4gIAkJCSAgICB1MzIgKm91dF92YWx1ZSkKPiAg ewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0 YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAo+ICAJaWYgKCFkZXZf cHJpdi0+cHNyLmVuYWJsZWQgfHwgIW5ld19jcnRjX3N0YXRlLT5oYXNfcHNyKQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nkdm8uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc2R2by5jCj4gaW5kZXggNDdmNWQ4N2E5MzhhLi4x MDQ3MzU3YzE1YzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9zZHZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nk dm8uYwo+IEBAIC0xMDg3LDcgKzEwODcsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX2NvbXB1 dGVfYXZpX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2bywKPiAgewo+ICAJ c3RydWN0IGhkbWlfYXZpX2luZm9mcmFtZSAqZnJhbWUgPSAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1l cy5hdmkuYXZpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21v ZGUgPQo+IC0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJJmNydGNfc3Rh dGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCWlmICghY3J0Y19zdGF0 ZS0+aGFzX2hkbWlfc2luaykKPiBAQCAtMTI3Niw4ICsxMjc2LDggQEAgc3RhdGljIGludCBpbnRl bF9zZHZvX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ CXRvX2ludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlKGNvbm5fc3RhdGUpOwo+ICAJc3RydWN0IGlu dGVsX3Nkdm9fY29ubmVjdG9yICppbnRlbF9zZHZvX2Nvbm5lY3RvciA9Cj4gIAkJdG9faW50ZWxf c2R2b19jb25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiAtCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21v ZGU7Cj4gLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFz ZS5tb2RlOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlw ZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcubW9kZTsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJmb3Jj aW5nIGJwYyB0byA4IGZvciBTRFZPXG4iKTsKPiAgCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IDgq MzsKPiBAQCAtMTQyOSwxMyArMTQyOSwxMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX3ByZV9l bmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gIAkJCQkgIGNvbnN0 IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGludGVsX2VuY29kZXItPmJhc2Uu ZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT5iYXNlLmNydGMpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVz dGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJc3RydWN0IGlu dGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4g Kwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJY29uc3Qgc3RydWN0IGludGVsX3Nkdm9fY29ubmVj dG9yX3N0YXRlICpzZHZvX3N0YXRlID0KPiAgCQl0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0 ZShjb25uX3N0YXRlKTsKPiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAqaW50 ZWxfc2R2b19jb25uZWN0b3IgPQo+ICAJCXRvX2ludGVsX3Nkdm9fY29ubmVjdG9yKGNvbm5fc3Rh dGUtPmNvbm5lY3Rvcik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9 ICZjcnRjX3N0YXRlLT5iYXNlLm1vZGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSA9ICZjcnRjX3N0YXRlLT5ody5tb2RlOwo+ICAJc3RydWN0IGludGVsX3Nkdm8gKmlu dGVsX3Nkdm8gPSB0b19zZHZvKGludGVsX2VuY29kZXIpOwo+ICAJdTMyIHNkdm94Owo+ICAJc3Ry dWN0IGludGVsX3Nkdm9faW5fb3V0X21hcCBpbl9vdXQ7Cj4gQEAgLTE2MjksNyArMTYyOSw3IEBA IHN0YXRpYyB2b2lkIGludGVsX3Nkdm9fZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiAgCQkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7Cj4gIAl9Cj4gIAo+ IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiArCXBp cGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwo+ICAKPiAgCS8qCj4g IAkgKiBwaXhlbCBtdWx0aXBsaWVyIHJlYWRvdXQgaXMgdHJpY2t5OiBPbmx5IG9uIGk5MTVnL2dt IGl0IGlzIHN0b3JlZCBpbgo+IEBAIC0xNjQ5LDcgKzE2NDksNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9zZHZvX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlpZiAo cGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIpCj4gIAkJZG90Y2xvY2sgLz0gcGlwZV9jb25m aWctPnBpeGVsX211bHRpcGxpZXI7Cj4gIAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRf bW9kZS5jcnRjX2Nsb2NrID0gZG90Y2xvY2s7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRf bW9kZS5jcnRjX2Nsb2NrID0gZG90Y2xvY2s7Cj4gIAo+ICAJLyogQ3Jvc3MgY2hlY2sgdGhlIHBv cnQgcGl4ZWwgbXVsdGlwbGllciB3aXRoIHRoZSBzZHZvIGVuY29kZXIgc3RhdGUuICovCj4gIAlp ZiAoaW50ZWxfc2R2b19nZXRfdmFsdWUoaW50ZWxfc2R2bywgU0RWT19DTURfR0VUX0NMT0NLX1JB VEVfTVVMVCwKPiBAQCAtMTcwMSw3ICsxNzAxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2R2b19l bmFibGVfYXVkaW8oc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8sCj4gIAkJCQkgICAgY29u c3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiAgCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl Owo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGNvbm5fc3RhdGUtPmNvbm5l Y3RvcjsKPiAgCXU4ICplbGQgPSBjb25uZWN0b3ItPmVsZDsKPiAgCj4gQEAgLTE3MjMsNyArMTcy Myw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfc2R2byhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxf c2R2byA9IHRvX3Nkdm8oZW5jb2Rlcik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4g IAl1MzIgdGVtcDsKPiAgCj4gIAlpZiAob2xkX2NydGNfc3RhdGUtPmhhc19hdWRpbykKPiBAQCAt MTc4NSw3ICsxNzg1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX3Nkdm8oc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rl ci0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2byA9IHRvX3Nkdm8oZW5j b2Rlcik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMo cGlwZV9jb25maWctPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPnVhcGkuY3J0Yyk7Cj4gIAl1MzIgdGVtcDsK PiAgCWJvb2wgaW5wdXQxLCBpbnB1dDI7Cj4gIAlpbnQgaTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMKPiBpbmRleCA2MzNmYTgwNjkzNDguLjUyNmE5MzY2 YjY4MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nw cml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUu Ywo+IEBAIC04MSw5ICs4MSw5IEBAIGludCBpbnRlbF91c2Vjc190b19zY2FubGluZXMoY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUsCj4gICAqLwo+ICB2b2lkIGlu dGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdf Y3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKG5ld19jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4g LQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZuZXdfY3J0 Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPSAmbmV3X2NydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7 Cj4gIAlsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoMSk7Cj4gIAlpbnQg c2NhbmxpbmUsIG1pbiwgbWF4LCB2Ymxhbmtfc3RhcnQ7Cj4gIAl3YWl0X3F1ZXVlX2hlYWRfdCAq d3EgPSBkcm1fY3J0Y192Ymxhbmtfd2FpdHF1ZXVlKCZjcnRjLT5iYXNlKTsKPiBAQCAtMTkwLDcg KzE5MCw3IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ICAgKi8KPiAgdm9pZCBpbnRlbF9waXBlX3Vw ZGF0ZV9lbmQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ICB7Cj4g LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMobmV3X2NydGNfc3RhdGUt PmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo bmV3X2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7Cj4gIAlpbnQgc2NhbmxpbmVfZW5kID0gaW50ZWxfZ2V0X2NydGNfc2NhbmxpbmUoY3J0Yyk7 Cj4gIAl1MzIgZW5kX3ZibF9jb3VudCA9IGludGVsX2NydGNfZ2V0X3ZibGFua19jb3VudGVyKGNy dGMpOwo+IEBAIC0yMDMsMTQgKzIwMywxNSBAQCB2b2lkIGludGVsX3BpcGVfdXBkYXRlX2VuZChz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4gIAkgKiBXb3VsZCBiZSBz bGlnaHRseSBuaWNlIHRvIGp1c3QgZ3JhYiB0aGUgdmJsYW5rIGNvdW50IGFuZCBhcm0gdGhlCj4g IAkgKiBldmVudCBvdXRzaWRlIG9mIHRoZSBjcml0aWNhbCBzZWN0aW9uIC0gdGhlIHNwaW5sb2Nr IG1pZ2h0IHNwaW4gZm9yIGEKPiAgCSAqIHdoaWxlIC4uLiAqLwo+IC0JaWYgKG5ld19jcnRjX3N0 YXRlLT5iYXNlLmV2ZW50KSB7Cj4gKwlpZiAobmV3X2NydGNfc3RhdGUtPnVhcGkuZXZlbnQpIHsK PiAgCQlXQVJOX09OKGRybV9jcnRjX3ZibGFua19nZXQoJmNydGMtPmJhc2UpICE9IDApOwo+ICAK PiAgCQlzcGluX2xvY2soJmNydGMtPmJhc2UuZGV2LT5ldmVudF9sb2NrKTsKPiAtCQlkcm1fY3J0 Y19hcm1fdmJsYW5rX2V2ZW50KCZjcnRjLT5iYXNlLCBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5ldmVu dCk7Cj4gKwkJZHJtX2NydGNfYXJtX3ZibGFua19ldmVudCgmY3J0Yy0+YmFzZSwKPiArCQkJCSAg ICAgICAgICBuZXdfY3J0Y19zdGF0ZS0+dWFwaS5ldmVudCk7Cj4gIAkJc3Bpbl91bmxvY2soJmNy dGMtPmJhc2UuZGV2LT5ldmVudF9sb2NrKTsKPiAgCj4gLQkJbmV3X2NydGNfc3RhdGUtPmJhc2Uu ZXZlbnQgPSBOVUxMOwo+ICsJCW5ld19jcnRjX3N0YXRlLT51YXBpLmV2ZW50ID0gTlVMTDsKPiAg CX0KPiAgCj4gIAlsb2NhbF9pcnFfZW5hYmxlKCk7Cj4gQEAgLTE1MTUsNyArMTUxNiw3IEBAIGc0 eF9zcHJpdGVfY2hlY2tfc2NhbGluZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5lX3N0YXRlLT5iYXNlLmRz dDsKPiAgCWludCBzcmNfeCwgc3JjX3csIHNyY19oLCBjcnRjX3csIGNydGNfaDsKPiAgCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl Owo+ICAJdW5zaWduZWQgaW50IHN0cmlkZSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5z dHJpZGU7Cj4gIAl1bnNpZ25lZCBpbnQgY3BwID0gZmItPmZvcm1hdC0+Y3BwWzBdOwo+ICAJdW5z aWduZWQgaW50IHdpZHRoX2J5dGVzOwo+IEBAIC0xNTg4LDcgKzE1ODksNyBAQCBnNHhfc3ByaXRl X2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJfQo+ICAKPiAg CXJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5lX3N0YXRlKCZwbGFuZV9zdGF0ZS0+ YmFzZSwKPiAtCQkJCQkJICAmY3J0Y19zdGF0ZS0+YmFzZSwKPiArCQkJCQkJICAmY3J0Y19zdGF0 ZS0+dWFwaSwKPiAgCQkJCQkJICBtaW5fc2NhbGUsIG1heF9zY2FsZSwKPiAgCQkJCQkJICB0cnVl LCB0cnVlKTsKPiAgCWlmIChyZXQpCj4gQEAgLTE2NDUsNyArMTY0Niw3IEBAIHZsdl9zcHJpdGVf Y2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJcmV0dXJuIHJl dDsKPiAgCj4gIAlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZSgmcGxh bmVfc3RhdGUtPmJhc2UsCj4gLQkJCQkJCSAgJmNydGNfc3RhdGUtPmJhc2UsCj4gKwkJCQkJCSAg JmNydGNfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5H LAo+ICAJCQkJCQkgIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORywKPiAgCQkJCQkJICB0cnVl LCB0cnVlKTsKPiBAQCAtMTcyOSw4ICsxNzMwLDggQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hl Y2tfZmIoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAl9Cj4g IAo+ICAJLyogWS10aWxpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBJRi1JRCBJbnRlcmxhY2UgbW9k ZSAqLwo+IC0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlICYmCj4gLQkgICAgY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgJiYK PiArCWlmIChjcnRjX3N0YXRlLT5ody5lbmFibGUgJiYKPiArCSAgICBjcnRjX3N0YXRlLT5ody5h ZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UgJiYKPiAgCSAgICAo ZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gIAkgICAgIGZiLT5t b2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQgfHwKPiAgCSAgICAgZmItPm1vZGlm aWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUyB8fAo+IEBAIC0xODEwLDcgKzE4MTEs NyBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPiAgCX0KPiAgCj4gIAlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19w bGFuZV9zdGF0ZSgmcGxhbmVfc3RhdGUtPmJhc2UsCj4gLQkJCQkJCSAgJmNydGNfc3RhdGUtPmJh c2UsCj4gKwkJCQkJCSAgJmNydGNfc3RhdGUtPnVhcGksCj4gIAkJCQkJCSAgbWluX3NjYWxlLCBt YXhfc2NhbGUsCj4gIAkJCQkJCSAgdHJ1ZSwgdHJ1ZSk7Cj4gIAlpZiAocmV0KQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3R2LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3R2LmMKPiBpbmRleCA3MDcyNmI0ODEyNDQuLjQ0OTlk NDAyYzMxNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X3R2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3R2LmMKPiBA QCAtOTI0LDcgKzkyNCw3IEBAIGludGVsX2VuYWJsZV90dihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiAgCj4gIAkvKiBQcmV2ZW50cyB2Ymxhbmsgd2FpdHMgZnJvbSB0aW1pbmcgb3V0 IGluIGludGVsX3R2X2RldGVjdF90eXBlKCkgKi8KPiAgCWludGVsX3dhaXRfZm9yX3ZibGFuayhk ZXZfcHJpdiwKPiAtCQkJICAgICAgdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRj KS0+cGlwZSk7Cj4gKwkJCSAgICAgIHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPnVhcGkuY3J0 YyktPnBpcGUpOwo+ICAKPiAgCUk5MTVfV1JJVEUoVFZfQ1RMLCBJOTE1X1JFQUQoVFZfQ1RMKSB8 IFRWX0VOQ19FTkFCTEUpOwo+ICB9Cj4gQEAgLTEwODUsNyArMTA4NSw3IEBAIGludGVsX3R2X2dl dF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRf bW9kZTsKPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1vZGUgPSB7fTsKPiAgCXUzMiB0dl9j dGwsIGhjdGwxLCBoY3RsMywgdmN0bDEsIHZjdGwyLCB0bXA7Cj4gIAlzdHJ1Y3QgdHZfbW9kZSB0 dl9tb2RlID0ge307Cj4gQEAgLTExODgsNyArMTE4OCw3IEBAIGludGVsX3R2X2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXRvX2ludGVsX3R2X2Nvbm5l Y3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKPiAgCWNvbnN0IHN0cnVjdCB0dl9tb2RlICp0dl9tb2Rl ID0gaW50ZWxfdHZfbW9kZV9maW5kKGNvbm5fc3RhdGUpOwo+ICAJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9t b2RlOwo+ICsJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCWludCBoZGlzcGxh eSA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXk7Cj4gIAlpbnQgdmRpc3BsYXkgPSBhZGp1 c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5Owo+ICAKPiBAQCAtMTQxNyw3ICsxNDE3LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfdHZfcHJlX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCQkJCWNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50 ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRjKTsKPiAgCXN0 cnVjdCBpbnRlbF90diAqaW50ZWxfdHYgPSBlbmNfdG9fdHYoZW5jb2Rlcik7Cj4gIAljb25zdCBz dHJ1Y3QgaW50ZWxfdHZfY29ubmVjdG9yX3N0YXRlICp0dl9jb25uX3N0YXRlID0KPiAgCQl0b19p bnRlbF90dl9jb25uZWN0b3Jfc3RhdGUoY29ubl9zdGF0ZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdmRzYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF92ZHNjLmMKPiBpbmRleCBkNGZiN2YxNmY5ZjYuLjM4YzE4MTQ5OTUw NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2Mu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdmRzYy5jCj4gQEAg LTMyOSw4ICszMjksOCBAQCBpbnQgaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCj4gIAlpbnQgY29sdW1uX2luZGV4ID0gMDsKPiAgCXU4IGxpbmVf YnVmX2RlcHRoID0gMDsKPiAgCj4gLQl2ZHNjX2NmZy0+cGljX3dpZHRoID0gcGlwZV9jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5Owo+IC0JdmRzY19jZmctPnBpY19oZWln aHQgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7Cj4gKwl2 ZHNjX2NmZy0+cGljX3dpZHRoID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19o ZGlzcGxheTsKPiArCXZkc2NfY2ZnLT5waWNfaGVpZ2h0ID0gcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGUuY3J0Y192ZGlzcGxheTsKPiAgCXZkc2NfY2ZnLT5zbGljZV93aWR0aCA9IERJVl9S T1VORF9VUCh2ZHNjX2NmZy0+cGljX3dpZHRoLAo+ICAJCQkJCSAgICAgcGlwZV9jb25maWctPmRz Y19wYXJhbXMuc2xpY2VfY291bnQpOwo+ICAJLyoKPiBAQCAtNDU5LDcgKzQ1OSw3IEBAIGludCBp bnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAg ZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbgo+ICBpbnRlbF9kc2NfcG93ZXJfZG9tYWlu KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRj LT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGNydGNf c3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPiAgCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2Rl ciA9IGNydGNfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwo+ICAKPiAgCS8qCj4gQEAgLTQ4Myw3ICs0 ODMsNyBAQCBpbnRlbF9kc2NfcG93ZXJfZG9tYWluKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICBzdGF0aWMgdm9pZCBpbnRlbF9jb25maWd1cmVfcHBzX2Zvcl9k c2NfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCQkJY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19j ZmcgPSAmY3J0Y19zdGF0ZS0+ZHBfZHNjX2NmZzsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+ cGlwZTsKPiBAQCAtOTAyLDcgKzkwMiw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX3dyaXRlX2Rz Y19wcHNfc2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICB2b2lkIGludGVsX2Rz Y19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJICAgICAgY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmJhc2UuZGV2KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAgCWk5 MTVfcmVnX3QgZHNzX2N0bDFfcmVnLCBkc3NfY3RsMl9yZWc7Cj4gQEAgLTkzOCw3ICs5MzgsNyBA QCB2b2lkIGludGVsX2RzY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g IAo+ICB2b2lkIGludGVsX2RzY19kaXNhYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG9sZF9jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRl dik7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAlpOTE1X3JlZ190IGRzc19j dGwxX3JlZywgZHNzX2N0bDJfcmVnOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L3Zsdl9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvdmx2X2Rz aS5jCj4gaW5kZXggNTAwNjRjZGUwNzI0Li4xNmY5M2QxZTcxZTUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L3Zsdl9kc2kuYwo+IEBAIC0yNjEsOSArMjYxLDkgQEAgc3RhdGljIGlu dCBpbnRlbF9kc2lfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBjb250YWluZXJfb2YoZW5jb2Rlciwg c3RydWN0IGludGVsX2RzaSwKPiAgCQkJCQkJICAgYmFzZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSBpbnRlbF9kc2ktPmF0dGFjaGVkX2Nvbm5lY3RvcjsK PiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+ YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0Yyhw aXBlX2NvbmZpZy0+dWFwaS5jcnRjKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICpmaXhlZF9tb2RlID0gaW50ZWxfY29ubmVjdG9yLT5wYW5lbC5maXhlZF9tb2RlOwo+IC0Jc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl ID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJaW50IHJldDsKPiAgCj4gIAlE Uk1fREVCVUdfS01TKCJcbiIpOwo+IEBAIC02MjQsNyArNjI0LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZHNpX3BvcnRfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJ ICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRl dik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNp ID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gIAllbnVtIHBvcnQgcG9ydDsK PiAgCj4gQEAgLTc0Niw3ICs3NDYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCSBjb25zdCBzdHJ1Y3QgZHJt X2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX2RzaSAq aW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gLQlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSBwaXBlX2NvbmZpZy0+YmFzZS5jcnRjOwo+ICsJc3RydWN0IGRybV9j cnRjICpjcnRjID0gcGlwZV9jb25maWctPnVhcGkuY3J0YzsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCWVudW0gcGlwZSBwaXBl ID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiBAQCAtMTAzMiw5ICsxMDMyLDkgQEAgc3RhdGljIHZvaWQg Ynh0X2RzaV9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJCQkJJnBpcGVfY29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGU7Cj4gKwkJCQkJJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGVfc3c7Cj4gLQlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWctPmJhc2UuY3J0Yyk7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMocGlwZV9jb25maWct PnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50 ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiAgCXVuc2lnbmVkIGludCBsYW5lX2NvdW50ID0gaW50 ZWxfZHNpLT5sYW5lX2NvdW50Owo+ICAJdW5zaWduZWQgaW50IGJwcCwgZm10Owo+IEBAIC0xMDQ1 LDcgKzEwNDUsNyBAQCBzdGF0aWMgdm9pZCBieHRfZHNpX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCWNydGNfaGJsYW5rX3N0YXJ0X3N3LCBjcnRj X2hibGFua19lbmRfc3c7Cj4gIAo+ICAJLyogRklYTUU6IGh3IHJlYWRvdXQgc2hvdWxkIG5vdCBk ZXBlbmQgb24gU1cgc3RhdGUgKi8KPiAtCWFkanVzdGVkX21vZGVfc3cgPSAmY3J0Yy0+Y29uZmln LT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlhZGp1c3RlZF9tb2RlX3N3ID0gJmNydGMtPmNvbmZp Zy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCj4gIAkvKgo+ICAJICogQXRsZWFzdCBvbmUgcG9ydCBp cyBhY3RpdmUgYXMgZW5jb2Rlci0+Z2V0X2NvbmZpZyBjYWxsZWQgb25seSBpZgo+IEBAIC0xMjA0 LDcgKzEyMDQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCX0KPiAgCj4gIAlpZiAocGNsaykgewo+IC0JCXBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IHBjbGs7Cj4gKwkJcGlwZV9j b25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IHBjbGs7Cj4gIAkJcGlwZV9jb25m aWctPnBvcnRfY2xvY2sgPSBwY2xrOwo+ICAJfQo+ICB9Cj4gQEAgLTEzMTUsOSArMTMxNSw5IEBA IHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRl bF9lbmNvZGVyLAo+ICAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmludGVsX2VuY29k ZXItPmJhc2U7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Owo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT5i YXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKHBpcGVfY29uZmlnLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxf ZHNpID0gZW5jX3RvX2ludGVsX2RzaShlbmNvZGVyKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21v ZGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZw aXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCWVudW0gcG9ydCBwb3J0Owo+ICAJdW5z aWduZWQgaW50IGJwcCA9IG1pcGlfZHNpX3BpeGVsX2Zvcm1hdF90b19icHAoaW50ZWxfZHNpLT5w aXhlbF9mb3JtYXQpOwo+ICAJdTMyIHZhbCwgdG1wOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gaW5kZXggZmVjOWZiN2NjMzg0Li43Y2UzYWUxZWM1ODYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0yNzUyLDExICsyNzUyLDExIEBAIHN0YXRpYyBp bnQgaTkxNV9kaXNwbGF5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4g IAo+ICAJCXNlcV9wcmludGYobSwgIkNSVEMgJWQ6IHBpcGU6ICVjLCBhY3RpdmU9JXMsIChzaXpl PSVkeCVkKSwgZGl0aGVyPSVzLCBicHA9JWRcbiIsCj4gIAkJCSAgIGNydGMtPmJhc2UuYmFzZS5p ZCwgcGlwZV9uYW1lKGNydGMtPnBpcGUpLAo+IC0JCQkgICB5ZXNubyhwaXBlX2NvbmZpZy0+YmFz ZS5hY3RpdmUpLAo+ICsJCQkgICB5ZXNubyhwaXBlX2NvbmZpZy0+aHcuYWN0aXZlKSwKPiAgCQkJ ICAgcGlwZV9jb25maWctPnBpcGVfc3JjX3csIHBpcGVfY29uZmlnLT5waXBlX3NyY19oLAo+ICAJ CQkgICB5ZXNubyhwaXBlX2NvbmZpZy0+ZGl0aGVyKSwgcGlwZV9jb25maWctPnBpcGVfYnBwKTsK PiAgCj4gLQkJaWYgKHBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSkgewo+ICsJCWlmIChwaXBlX2Nv bmZpZy0+aHcuYWN0aXZlKSB7Cj4gIAkJCXN0cnVjdCBpbnRlbF9wbGFuZSAqY3Vyc29yID0KPiAg CQkJCXRvX2ludGVsX3BsYW5lKGNydGMtPmJhc2UuY3Vyc29yKTsKPiAgCj4gQEAgLTQyMDgsMTEg KzQyMDgsMTEgQEAgc3RhdGljIGludCBpOTE1X2RycnNfY3RsX3NldCh2b2lkICpkYXRhLCB1NjQg dmFsKQo+ICAKPiAgCQljcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNl LnN0YXRlKTsKPiAgCj4gLQkJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSB8fAo+ICsJCWlm ICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlIHx8Cj4gIAkJICAgICFjcnRjX3N0YXRlLT5oYXNfZHJy cykKPiAgCQkJZ290byBvdXQ7Cj4gIAo+IC0JCWNvbW1pdCA9IGNydGNfc3RhdGUtPmJhc2UuY29t bWl0Owo+ICsJCWNvbW1pdCA9IGNydGNfc3RhdGUtPnVhcGkuY29tbWl0Owo+ICAJCWlmIChjb21t aXQpIHsKPiAgCQkJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZjb21t aXQtPmh3X2RvbmUpOwo+ICAJCQlpZiAocmV0KQo+IEBAIC00MjI0LDcgKzQyMjQsNyBAQCBzdGF0 aWMgaW50IGk5MTVfZHJyc19jdGxfc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gIAkJCXN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICAJCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw Owo+ICAKPiAtCQkJaWYgKCEoY3J0Y19zdGF0ZS0+YmFzZS5jb25uZWN0b3JfbWFzayAmCj4gKwkJ CWlmICghKGNydGNfc3RhdGUtPnVhcGkuY29ubmVjdG9yX21hc2sgJgo+ICAJCQkgICAgICBkcm1f Y29ubmVjdG9yX21hc2soY29ubmVjdG9yKSkpCj4gIAkJCQljb250aW51ZTsKPiAgCj4gQEAgLTQy ODMsMTQgKzQyODMsMTQgQEAgaTkxNV9maWZvX3VuZGVycnVuX3Jlc2V0X3dyaXRlKHN0cnVjdCBm aWxlICpmaWxwLAo+ICAJCQlyZXR1cm4gcmV0Owo+ICAKPiAgCQljcnRjX3N0YXRlID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShpbnRlbF9jcnRjLT5iYXNlLnN0YXRlKTsKPiAtCQljb21taXQgPSBjcnRj X3N0YXRlLT5iYXNlLmNvbW1pdDsKPiArCQljb21taXQgPSBjcnRjX3N0YXRlLT51YXBpLmNvbW1p dDsKPiAgCQlpZiAoY29tbWl0KSB7Cj4gIAkJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50 ZXJydXB0aWJsZSgmY29tbWl0LT5od19kb25lKTsKPiAgCQkJaWYgKCFyZXQpCj4gIAkJCQlyZXQg PSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoJmNvbW1pdC0+ZmxpcF9kb25lKTsK PiAgCQl9Cj4gIAo+IC0JCWlmICghcmV0ICYmIGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKSB7Cj4g KwkJaWYgKCFyZXQgJiYgY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7Cj4gIAkJCURSTV9ERUJVR19L TVMoIlJlLWFybWluZyBGSUZPIHVuZGVycnVucyBvbiBwaXBlICVjXG4iLAo+ICAJCQkJICAgICAg cGlwZV9uYW1lKGludGVsX2NydGMtPnBpcGUpKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5j Cj4gaW5kZXggNWU2ZTU0Y2IyMmZlLi40YzkzNTk5ODFjMjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKPiBAQCAtNDY0LDcgKzQ2NCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgcGVzc2ltYWxf bGF0ZW5jeV9ucyA9IDUwMDA7Cj4gIAo+ICBzdGF0aWMgdm9pZCB2bHZfZ2V0X2ZpZm9fc2l6ZShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5j cnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0 Yy0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IHZsdl9maWZvX3N0YXRlICpmaWZvX3N0YXRlID0gJmNy dGNfc3RhdGUtPndtLnZsdi5maWZvX3N0YXRlOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5w aXBlOwo+IEBAIC03OTgsNyArNzk4LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfd21fcGxhbmVfdmlz aWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5w bGFuZSk7Cj4gIAo+ICAJLyogRklYTUUgY2hlY2sgdGhlICdlbmFibGUnIGluc3RlYWQgKi8KPiAt CWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwlpZiAoIWNydGNfc3RhdGUtPmh3LmFj dGl2ZSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJLyoKPiBAQCAtODUxLDcgKzg1MSw3IEBA IHN0YXRpYyB2b2lkIHBpbmV2aWV3X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2Vk X2NydGMpCj4gIAljcnRjID0gc2luZ2xlX2VuYWJsZWRfY3J0YyhkZXZfcHJpdik7Cj4gIAlpZiAo Y3J0Yykgewo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2Rl ID0KPiAtCQkJJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCQkmY3J0Yy0+ Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0KPiAgCQkJY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7Cj4gIAkJaW50IGNw cCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKPiBAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgc3RhdGljIHUx NiBnNHhfY29tcHV0ZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9z dGF0ZS0+YmFzZS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9k ZTsKPiArCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCXVuc2lnbmVkIGludCBs YXRlbmN5ID0gZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5W2xldmVsXSAqIDEwOwo+ICAJdW5zaWdu ZWQgaW50IGNsb2NrLCBodG90YWwsIGNwcCwgd2lkdGgsIHdtOwo+ICAKPiBAQCAtMTE0NCw3ICsx MTQ0LDcgQEAgc3RhdGljIHUxNiBnNHhfY29tcHV0ZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgc3RhdGljIGJvb2wgZzR4X3Jhd19wbGFuZV93bV9zZXQo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgaW50IGxldmVsLCBl bnVtIHBsYW5lX2lkIHBsYW5lX2lkLCB1MTYgdmFsdWUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYp Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0 YXRlLT51YXBpLmNydGMtPmRldik7Cj4gIAlib29sIGRpcnR5ID0gZmFsc2U7Cj4gIAo+ICAJZm9y ICg7IGxldmVsIDwgaW50ZWxfd21fbnVtX2xldmVscyhkZXZfcHJpdik7IGxldmVsKyspIHsKPiBA QCAtMTE2MCw3ICsxMTYwLDcgQEAgc3RhdGljIGJvb2wgZzR4X3Jhd19wbGFuZV93bV9zZXQoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIHN0YXRpYyBib29sIGc0eF9yYXdf ZmJjX3dtX3NldChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICAg ICAgIGludCBsZXZlbCwgdTE2IHZhbHVlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+dWFw aS5jcnRjLT5kZXYpOwo+ICAJYm9vbCBkaXJ0eSA9IGZhbHNlOwo+ICAKPiAgCS8qIE5PUk1BTCBs ZXZlbCBkb2Vzbid0IGhhdmUgYW4gRkJDIHdhdGVybWFyayAqLwo+IEBAIC0xMjYyLDcgKzEyNjIs NyBAQCBzdGF0aWMgYm9vbCBnNHhfcmF3X3BsYW5lX3dtX2lzX3ZhbGlkKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgYm9vbCBnNHhfcmF3X2NydGNf d21faXNfdmFsaWQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAkJCQkgICAgIGludCBsZXZlbCkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPnVhcGkuY3J0 Yy0+ZGV2KTsKPiAgCj4gIAlpZiAobGV2ZWwgPiBkZXZfcHJpdi0+d20ubWF4X2xldmVsKQo+ICAJ CXJldHVybiBmYWxzZTsKPiBAQCAtMTMwMCw5ICsxMzAwLDkgQEAgc3RhdGljIHZvaWQgZzR4X2lu dmFsaWRhdGVfd21zKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAKPiAgc3RhdGljIGludCBn NHhfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUgPQo+IC0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRl KTsKPiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZSk7Cj4g IAlzdHJ1Y3QgZzR4X3dtX3N0YXRlICp3bV9zdGF0ZSA9ICZjcnRjX3N0YXRlLT53bS5nNHgub3B0 aW1hbDsKPiAgCWludCBudW1fYWN0aXZlX3BsYW5lcyA9IGh3ZWlnaHQ4KGNydGNfc3RhdGUtPmFj dGl2ZV9wbGFuZXMgJgo+ICAJCQkJCSB+QklUKFBMQU5FX0NVUlNPUikpOwo+IEBAIC0xMzg5LDE3 ICsxMzg5LDE3IEBAIHN0YXRpYyBpbnQgZzR4X2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCj4gIHN0YXRpYyBpbnQgZzR4X2NvbXB1dGVfaW50 ZXJtZWRpYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPiAg ewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0 YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGc0eF93bV9zdGF0ZSAq aW50ZXJtZWRpYXRlID0gJm5ld19jcnRjX3N0YXRlLT53bS5nNHguaW50ZXJtZWRpYXRlOwo+ICAJ Y29uc3Qgc3RydWN0IGc0eF93bV9zdGF0ZSAqb3B0aW1hbCA9ICZuZXdfY3J0Y19zdGF0ZS0+d20u ZzR4Lm9wdGltYWw7Cj4gIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9 Cj4gLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKG5ld19jcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsK PiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUobmV3X2NydGNfc3RhdGUtPnVhcGkuc3RhdGUpOwo+ ICAJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlID0KPiAgCQlp bnRlbF9hdG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKGludGVsX3N0YXRlLCBjcnRjKTsKPiAgCWNv bnN0IHN0cnVjdCBnNHhfd21fc3RhdGUgKmFjdGl2ZSA9ICZvbGRfY3J0Y19zdGF0ZS0+d20uZzR4 Lm9wdGltYWw7Cj4gIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkOwo+ICAKPiAtCWlmICghbmV3X2Ny dGNfc3RhdGUtPmJhc2UuYWN0aXZlIHx8IGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZu ZXdfY3J0Y19zdGF0ZS0+YmFzZSkpIHsKPiArCWlmICghbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2 ZSB8fCBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmbmV3X2NydGNfc3RhdGUtPnVhcGkp KSB7Cj4gIAkJKmludGVybWVkaWF0ZSA9ICpvcHRpbWFsOwo+ICAKPiAgCQlpbnRlcm1lZGlhdGUt PmN4c3IgPSBmYWxzZTsKPiBAQCAtMTUzMSw4ICsxNTMxLDggQEAgc3RhdGljIHZvaWQgZzR4X3By b2dyYW1fd2F0ZXJtYXJrcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHN0 YXRpYyB2b2lkIGc0eF9pbml0aWFsX3dhdGVybWFya3Moc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUsCj4gIAkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK PiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj X3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwo+ ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVh cGkuY3J0Yyk7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKPiAg CWNydGMtPndtLmFjdGl2ZS5nNHggPSBjcnRjX3N0YXRlLT53bS5nNHguaW50ZXJtZWRpYXRlOwo+ IEBAIC0xNTQzLDggKzE1NDMsOCBAQCBzdGF0aWMgdm9pZCBnNHhfaW5pdGlhbF93YXRlcm1hcmtz KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICBzdGF0aWMgdm9pZCBnNHhfb3B0 aW1pemVfd2F0ZXJtYXJrcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJ CSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNy dGMtPmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAo+ ICAJaWYgKCFjcnRjX3N0YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlKQo+ICAJCXJldHVybjsK PiBAQCAtMTU5Myw3ICsxNTkzLDcgQEAgc3RhdGljIHUxNiB2bHZfY29tcHV0ZV93bV9sZXZlbChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXN0cnVjdCBpbnRl bF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5i YXNlLmRldik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9Cj4gLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkmY3J0Y19zdGF0 ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCXVuc2lnbmVkIGludCBjbG9jaywgaHRvdGFsLCBjcHAs IHdpZHRoLCB3bTsKPiAgCj4gIAlpZiAoZGV2X3ByaXYtPndtLnByaV9sYXRlbmN5W2xldmVsXSA9 PSAwKQo+IEBAIC0xNjMxLDcgKzE2MzEsNyBAQCBzdGF0aWMgYm9vbCB2bHZfbmVlZF9zcHJpdGUw X2ZpZm9fd29ya2Fyb3VuZCh1bnNpZ25lZCBpbnQgYWN0aXZlX3BsYW5lcykKPiAgCj4gIHN0YXRp YyBpbnQgdmx2X2NvbXB1dGVfZmlmbyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNf c3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCWNvbnN0IHN0cnVjdCBnNHhfcGlwZV93 bSAqcmF3ID0KPiAgCQkmY3J0Y19zdGF0ZS0+d20udmx2LnJhd1tWTFZfV01fTEVWRUxfUE0yXTsK PiAgCXN0cnVjdCB2bHZfZmlmb19zdGF0ZSAqZmlmb19zdGF0ZSA9ICZjcnRjX3N0YXRlLT53bS52 bHYuZmlmb19zdGF0ZTsKPiBAQCAtMTc0Myw3ICsxNzQzLDcgQEAgc3RhdGljIHUxNiB2bHZfaW52 ZXJ0X3dtX3ZhbHVlKHUxNiB3bSwgdTE2IGZpZm9fc2l6ZSkKPiAgc3RhdGljIGJvb2wgdmx2X3Jh d19wbGFuZV93bV9zZXQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJ CQkgaW50IGxldmVsLCBlbnVtIHBsYW5lX2lkIHBsYW5lX2lkLCB1MTYgdmFsdWUpCj4gIHsKPiAt CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+ YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gIAlpbnQgbnVtX2xldmVscyA9 IGludGVsX3dtX251bV9sZXZlbHMoZGV2X3ByaXYpOwo+ICAJYm9vbCBkaXJ0eSA9IGZhbHNlOwo+ ICAKPiBAQCAtMTgxOCwxNiArMTgxOCwxNiBAQCBzdGF0aWMgYm9vbCB2bHZfcmF3X2NydGNfd21f aXNfdmFsaWQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ ICBzdGF0aWMgaW50IHZsdl9jb21wdXRlX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMg PSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCXN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlID0KPiAtCQl0b19pbnRlbF9hdG9taWNfc3RhdGUo Y3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4gKwkJdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNf c3RhdGUtPnVhcGkuc3RhdGUpOwo+ICAJc3RydWN0IHZsdl93bV9zdGF0ZSAqd21fc3RhdGUgPSAm Y3J0Y19zdGF0ZS0+d20udmx2Lm9wdGltYWw7Cj4gIAljb25zdCBzdHJ1Y3Qgdmx2X2ZpZm9fc3Rh dGUgKmZpZm9fc3RhdGUgPQo+ICAJCSZjcnRjX3N0YXRlLT53bS52bHYuZmlmb19zdGF0ZTsKPiAg CWludCBudW1fYWN0aXZlX3BsYW5lcyA9IGh3ZWlnaHQ4KGNydGNfc3RhdGUtPmFjdGl2ZV9wbGFu ZXMgJgo+ICAJCQkJCSB+QklUKFBMQU5FX0NVUlNPUikpOwo+IC0JYm9vbCBuZWVkc19tb2Rlc2V0 ID0gZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoJmNydGNfc3RhdGUtPmJhc2UpOwo+ICsJ Ym9vbCBuZWVkc19tb2Rlc2V0ID0gZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoJmNydGNf c3RhdGUtPnVhcGkpOwo+ICAJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpvbGRfcGxh bmVfc3RhdGU7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm5ld19wbGFuZV9z dGF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7Cj4gQEAgLTE5MjYsNyArMTkyNiw3 IEBAIHN0YXRpYyBpbnQgdmx2X2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiAgc3RhdGljIHZvaWQgdmx2X2F0b21pY191cGRhdGVfZmlmbyhzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4g IAlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSAmZGV2X3ByaXYtPnVuY29yZTsKPiAgCWNv bnN0IHN0cnVjdCB2bHZfZmlmb19zdGF0ZSAqZmlmb19zdGF0ZSA9Cj4gQEAgLTIwMjIsMTcgKzIw MjIsMTcgQEAgc3RhdGljIHZvaWQgdmx2X2F0b21pY191cGRhdGVfZmlmbyhzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCj4gIHN0YXRpYyBpbnQgdmx2X2NvbXB1dGVfaW50ZXJt ZWRpYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPiAgewo+ IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRl LT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IHZsdl93bV9zdGF0ZSAqaW50 ZXJtZWRpYXRlID0gJm5ld19jcnRjX3N0YXRlLT53bS52bHYuaW50ZXJtZWRpYXRlOwo+ICAJY29u c3Qgc3RydWN0IHZsdl93bV9zdGF0ZSAqb3B0aW1hbCA9ICZuZXdfY3J0Y19zdGF0ZS0+d20udmx2 Lm9wdGltYWw7Cj4gIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9Cj4g LQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKG5ld19jcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiAr CQl0b19pbnRlbF9hdG9taWNfc3RhdGUobmV3X2NydGNfc3RhdGUtPnVhcGkuc3RhdGUpOwo+ICAJ Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlID0KPiAgCQlpbnRl bF9hdG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKGludGVsX3N0YXRlLCBjcnRjKTsKPiAgCWNvbnN0 IHN0cnVjdCB2bHZfd21fc3RhdGUgKmFjdGl2ZSA9ICZvbGRfY3J0Y19zdGF0ZS0+d20udmx2Lm9w dGltYWw7Cj4gIAlpbnQgbGV2ZWw7Cj4gIAo+IC0JaWYgKCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5h Y3RpdmUgfHwgZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoJm5ld19jcnRjX3N0YXRlLT5i YXNlKSkgewo+ICsJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlIHx8IGRybV9hdG9taWNf Y3J0Y19uZWVkc19tb2Rlc2V0KCZuZXdfY3J0Y19zdGF0ZS0+dWFwaSkpIHsKPiAgCQkqaW50ZXJt ZWRpYXRlID0gKm9wdGltYWw7Cj4gIAo+ICAJCWludGVybWVkaWF0ZS0+Y3hzciA9IGZhbHNlOwo+ IEBAIC0yMTUwLDggKzIxNTAsOCBAQCBzdGF0aWMgdm9pZCB2bHZfcHJvZ3JhbV93YXRlcm1hcmtz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgc3RhdGljIHZvaWQgdmx2X2lu aXRpYWxfd2F0ZXJtYXJrcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJ CSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0 Yy0+ZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCj4g IAltdXRleF9sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwo+ICAJY3J0Yy0+d20uYWN0aXZl LnZsdiA9IGNydGNfc3RhdGUtPndtLnZsdi5pbnRlcm1lZGlhdGU7Cj4gQEAgLTIxNjIsOCArMjE2 Miw4IEBAIHN0YXRpYyB2b2lkIHZsdl9pbml0aWFsX3dhdGVybWFya3Moc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUsCj4gIHN0YXRpYyB2b2lkIHZsdl9vcHRpbWl6ZV93YXRlcm1hcmtz KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJCQkJICAgIHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiAtCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj X3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCj4gIAlpZiAoIWNydGNfc3Rh dGUtPndtLm5lZWRfcG9zdHZibF91cGRhdGUpCj4gIAkJcmV0dXJuOwo+IEBAIC0yMTg4LDcgKzIx ODgsNyBAQCBzdGF0aWMgdm9pZCBpOTY1X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51 c2VkX2NydGMpCj4gIAkJLyogc2VsZi1yZWZyZXNoIGhhcyBtdWNoIGhpZ2hlciBsYXRlbmN5ICov Cj4gIAkJc3RhdGljIGNvbnN0IGludCBzcl9sYXRlbmN5X25zID0gMTIwMDA7Cj4gIAkJY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCQkmY3J0Yy0+Y29u ZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJCSZjcnRjLT5jb25maWctPmh3LmFkanVzdGVk X21vZGU7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPQo+ICAJCQljcnRj LT5iYXNlLnByaW1hcnktPnN0YXRlLT5mYjsKPiAgCQlpbnQgY2xvY2sgPSBhZGp1c3RlZF9tb2Rl LT5jcnRjX2Nsb2NrOwo+IEBAIC0yMjY5LDcgKzIyNjksNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3Vw ZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMpCj4gIAljcnRjID0gaW50ZWxf Z2V0X2NydGNfZm9yX3BsYW5lKGRldl9wcml2LCBQTEFORV9BKTsKPiAgCWlmIChpbnRlbF9jcnRj X2FjdGl2ZShjcnRjKSkgewo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlID0KPiAtCQkJJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJ CQkmY3J0Yy0+Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJCWNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0KPiAgCQkJY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7Cj4g IAkJaW50IGNwcDsKPiBAQCAtMjI5Niw3ICsyMjk2LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRh dGVfd20oc3RydWN0IGludGVsX2NydGMgKnVudXNlZF9jcnRjKQo+ICAJY3J0YyA9IGludGVsX2dl dF9jcnRjX2Zvcl9wbGFuZShkZXZfcHJpdiwgUExBTkVfQik7Cj4gIAlpZiAoaW50ZWxfY3J0Y19h Y3RpdmUoY3J0YykpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWRfbW9kZSA9Cj4gLQkJCSZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkJ JmNydGMtPmNvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9Cj4gIAkJCWNydGMtPmJhc2UucHJpbWFyeS0+c3RhdGUtPmZiOwo+ICAJ CWludCBjcHA7Cj4gQEAgLTIzNDQsNyArMjM0NCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRl X3dtKHN0cnVjdCBpbnRlbF9jcnRjICp1bnVzZWRfY3J0YykKPiAgCQkvKiBzZWxmLXJlZnJlc2gg aGFzIG11Y2ggaGlnaGVyIGxhdGVuY3kgKi8KPiAgCQlzdGF0aWMgY29uc3QgaW50IHNyX2xhdGVu Y3lfbnMgPSA2MDAwOwo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlID0KPiAtCQkJJmVuYWJsZWQtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJ CQkmZW5hYmxlZC0+Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0KPiAgCQkJZW5hYmxlZC0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ ZmI7Cj4gIAkJaW50IGNsb2NrID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jazsKPiBAQCAtMjQw Miw3ICsyNDAyLDcgQEAgc3RhdGljIHZvaWQgaTg0NV91cGRhdGVfd20oc3RydWN0IGludGVsX2Ny dGMgKnVudXNlZF9jcnRjKQo+ICAJaWYgKGNydGMgPT0gTlVMTCkKPiAgCQlyZXR1cm47Cj4gIAo+ IC0JYWRqdXN0ZWRfbW9kZSA9ICZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAr CWFkanVzdGVkX21vZGUgPSAmY3J0Yy0+Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJcGxh bmVhX3dtID0gaW50ZWxfY2FsY3VsYXRlX3dtKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCj4g IAkJCQkgICAgICAgJmk4NDVfd21faW5mbywKPiAgCQkJCSAgICAgICBkZXZfcHJpdi0+ZGlzcGxh eS5nZXRfZmlmb19zaXplKGRldl9wcml2LCBQTEFORV9BKSwKPiBAQCAtMjQ5Miw3ICsyNDkyLDcg QEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9wcmlfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJcmV0dXJuIG1ldGhvZDE7Cj4gIAo+ICAJbWV0aG9kMiA9 IGlsa193bV9tZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCj4gLQkJCQkgY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAo+ICsJCQkJIGNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gIAkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBsYW5l X3N0YXRlLT5iYXNlLmRzdCksCj4gIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwo+ICAKPiBAQCAtMjUy MCw3ICsyNTIwLDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9zcHJfd20oY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICAJbWV0aG9kMSA9IGlsa193bV9t ZXRob2QxKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsIGNwcCwgbWVtX3ZhbHVlKTsKPiAgCW1ldGhv ZDIgPSBpbGtfd21fbWV0aG9kMihjcnRjX3N0YXRlLT5waXhlbF9yYXRlLAo+IC0JCQkJIGNydGNf c3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKPiArCQkJCSBjcnRjX3N0YXRl LT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAo+ICAJCQkJIGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAo+ICAJCQkJIGNwcCwgbWVtX3ZhbHVlKTsKPiAgCXJldHVy biBtaW4obWV0aG9kMSwgbWV0aG9kMik7Cj4gQEAgLTI1NDUsNyArMjU0NSw3IEBAIHN0YXRpYyB1 MzIgaWxrX2NvbXB1dGVfY3VyX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ICAJY3BwID0gcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBdOwo+ ICAKPiAgCXJldHVybiBpbGtfd21fbWV0aG9kMihjcnRjX3N0YXRlLT5waXhlbF9yYXRlLAo+IC0J CQkgICAgICBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gKwkJ CSAgICAgIGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gIAkJCSAg ICAgIGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5kc3QpLAo+ICAJCQkgICAgICBj cHAsIG1lbV92YWx1ZSk7Cj4gIH0KPiBAQCAtMjc2NywxMiArMjc2NywxMiBAQCBzdGF0aWMgdTMy Cj4gIGhzd19jb21wdXRlX2xpbmV0aW1lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpp bnRlbF9zdGF0ZSA9Cj4gLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNfc3RhdGUtPmJhc2Uu c3RhdGUpOwo+ICsJCXRvX2ludGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT51YXBpLnN0YXRl KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAt CQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5h ZGp1c3RlZF9tb2RlOwo+ICAJdTMyIGxpbmV0aW1lLCBpcHNfbGluZXRpbWU7Cj4gIAo+IC0JaWYg KCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiArCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZl KQo+ICAJCXJldHVybiAwOwo+ICAJaWYgKFdBUk5fT04oYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9j ayA9PSAwKSkKPiAgCQlyZXR1cm4gMDsKPiBAQCAtMzA4MiwxMSArMzA4Miw5IEBAIHN0YXRpYyBi b29sIGlsa192YWxpZGF0ZV9waXBlX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgLyogQ29tcHV0ZSBuZXcgd2F0ZXJtYXJrcyBmb3IgdGhlIHBpcGUgKi8KPiAg c3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjcnRj X3N0YXRlLT5iYXNlLnN0YXRlOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsK PiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGludGVsX3BpcGVfd20gKnBpcGVfd207Cj4gLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKPiAtCWNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmU7Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlOwo+ICAJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwcmlzdGF0ZSA9IE5VTEw7 Cj4gQEAgLTMxMDYsNyArMzEwNCw3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCQkJY3Vyc3RhdGUgPSBwbGFu ZV9zdGF0ZTsKPiAgCX0KPiAgCj4gLQlwaXBlX3dtLT5waXBlX2VuYWJsZWQgPSBjcnRjX3N0YXRl LT5iYXNlLmFjdGl2ZTsKPiArCXBpcGVfd20tPnBpcGVfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmh3 LmFjdGl2ZTsKPiAgCWlmIChzcHJzdGF0ZSkgewo+ICAJCXBpcGVfd20tPnNwcml0ZXNfZW5hYmxl ZCA9IHNwcnN0YXRlLT5iYXNlLnZpc2libGU7Cj4gIAkJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQg PSBzcHJzdGF0ZS0+YmFzZS52aXNpYmxlICYmCj4gQEAgLTMxNjMsMTEgKzMxNjEsMTEgQEAgc3Rh dGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQo+ICAgKi8KPiAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20o c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMobmV3c3RhdGUtPmJhc2UuY3J0Yyk7Cj4g KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMobmV3c3RhdGUt PnVhcGkuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGludGVsX2NydGMtPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9waXBlX3dtICphID0g Jm5ld3N0YXRlLT53bS5pbGsuaW50ZXJtZWRpYXRlOwo+ICAJc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqaW50ZWxfc3RhdGUgPQo+IC0JCXRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdzdGF0ZS0+ YmFzZS5zdGF0ZSk7Cj4gKwkJdG9faW50ZWxfYXRvbWljX3N0YXRlKG5ld3N0YXRlLT51YXBpLnN0 YXRlKTsKPiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRzdGF0ZSA9Cj4gIAkJ aW50ZWxfYXRvbWljX2dldF9vbGRfY3J0Y19zdGF0ZShpbnRlbF9zdGF0ZSwgaW50ZWxfY3J0Yyk7 Cj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYiA9ICZvbGRzdGF0ZS0+d20uaWxrLm9w dGltYWw7Cj4gQEAgLTMxNzksNyArMzE3Nyw3IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfaW50 ZXJtZWRpYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdzdGF0ZSkKPiAgCSAqIGFu ZCBhZnRlciB0aGUgdmJsYW5rLgo+ICAJICovCj4gIAkqYSA9IG5ld3N0YXRlLT53bS5pbGsub3B0 aW1hbDsKPiAtCWlmICghbmV3c3RhdGUtPmJhc2UuYWN0aXZlIHx8IGRybV9hdG9taWNfY3J0Y19u ZWVkc19tb2Rlc2V0KCZuZXdzdGF0ZS0+YmFzZSkgfHwKPiArCWlmICghbmV3c3RhdGUtPmh3LmFj dGl2ZSB8fCBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmbmV3c3RhdGUtPnVhcGkpIHx8 Cj4gIAkgICAgaW50ZWxfc3RhdGUtPnNraXBfaW50ZXJtZWRpYXRlX3dtKQo+ICAJCXJldHVybiAw Owo+ICAKPiBAQCAtMzc1Niw3ICszNzU0LDcgQEAgYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yo c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAljcnRjID0gaW50ZWxfZ2V0X2Ny dGNfZm9yX3BpcGUoZGV2X3ByaXYsIHBpcGUpOwo+ICAJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2Ny dGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gIAo+IC0JaWYgKGNydGMtPmJhc2Uuc3RhdGUt PmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKPiArCWlmIChj cnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxB Q0UpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2Ny dGMoZGV2LCBjcnRjLCBwbGFuZSkgewo+IEBAIC0zODA2LDcgKzM4MDQsNyBAQCBzdGF0aWMgdTE2 IGludGVsX2dldF9kZGJfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKQo+ICAJCXJldHVybiBkZGJfc2l6ZSAtIDQ7 IC8qIDQgYmxvY2tzIGZvciBieXBhc3MgcGF0aCBhbGxvY2F0aW9uICovCj4gIAo+IC0JYWRqdXN0 ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlhZGp1c3RlZF9t b2RlID0gJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gIAl0b3RhbF9kYXRhX2J3ID0g dG90YWxfZGF0YV9yYXRlICogZHJtX21vZGVfdnJlZnJlc2goYWRqdXN0ZWRfbW9kZSk7Cj4gIAo+ ICAJLyoKPiBAQCAtMzgzNSwxNiArMzgzMywxNiBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRp b25fbGltaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCSAgIHN0 cnVjdCBza2xfZGRiX2VudHJ5ICphbGxvYywgLyogb3V0ICovCj4gIAkJCQkgICBpbnQgKm51bV9h Y3RpdmUgLyogb3V0ICovKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUg PSBjcnRjX3N0YXRlLT5iYXNlLnN0YXRlOwo+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlID0gY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKPiAtCXN0cnVj dCBkcm1fY3J0YyAqZm9yX2NydGMgPSBjcnRjX3N0YXRlLT5iYXNlLmNydGM7Cj4gKwlzdHJ1Y3Qg ZHJtX2NydGMgKmZvcl9jcnRjID0gY3J0Y19zdGF0ZS0+dWFwaS5jcnRjOwo+ICAJY29uc3Qgc3Ry dWN0IGludGVsX2NydGMgKmNydGM7Cj4gIAl1MzIgcGlwZV93aWR0aCA9IDAsIHRvdGFsX3dpZHRo ID0gMCwgd2lkdGhfYmVmb3JlX3BpcGUgPSAwOwo+ICAJZW51bSBwaXBlIGZvcl9waXBlID0gdG9f aW50ZWxfY3J0Yyhmb3JfY3J0YyktPnBpcGU7Cj4gIAl1MTYgZGRiX3NpemU7Cj4gIAl1MzIgaTsK PiAgCj4gLQlpZiAoV0FSTl9PTighc3RhdGUpIHx8ICFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkg ewo+ICsJaWYgKFdBUk5fT04oIXN0YXRlKSB8fCAhY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7Cj4g IAkJYWxsb2MtPnN0YXJ0ID0gMDsKPiAgCQlhbGxvYy0+ZW5kID0gMDsKPiAgCQkqbnVtX2FjdGl2 ZSA9IGh3ZWlnaHQ4KGRldl9wcml2LT5hY3RpdmVfcGlwZXMpOwo+IEBAIC0zODgzLDExICszODgx LDExIEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICovCj4gIAlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19p bl9zdGF0ZShpbnRlbF9zdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICAJCWNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkJJmNydGNfc3RhdGUt PmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7 Cj4gIAkJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJCWludCBoZGlzcGxheSwgdmRp c3BsYXk7Cj4gIAo+IC0JCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCj4gKwkJaWYgKCFj cnRjX3N0YXRlLT5ody5lbmFibGUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlkcm1fbW9kZV9n ZXRfaHZfdGltaW5nKGFkanVzdGVkX21vZGUsICZoZGlzcGxheSwgJnZkaXNwbGF5KTsKPiBAQCAt MzkxOCw3ICszOTE2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludAo+ICBza2xfY3Vyc29yX2FsbG9j YXRpb24oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJICAg ICAgaW50IG51bV9hY3RpdmUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMt PmRldik7Cj4gIAlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3By aXYpOwo+ICAJc3RydWN0IHNrbF93bV9sZXZlbCB3bSA9IHt9Owo+ICAJaW50IHJldCwgbWluX2Rk Yl9hbGxvYyA9IDA7Cj4gQEAgLTQwNzYsNyArNDA3NCw3IEBAIHNrbF9waXBlX2Rvd25zY2FsZV9h bW91bnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAg CXVpbnRfZml4ZWRfMTZfMTZfdCBwaXBlX2Rvd25zY2FsZSA9IHUzMl90b19maXhlZDE2KDEpOwo+ ICAKPiAtCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCj4gKwlpZiAoIWNydGNfc3RhdGUt Pmh3LmVuYWJsZSkKPiAgCQlyZXR1cm4gcGlwZV9kb3duc2NhbGU7Cj4gIAo+ICAJaWYgKGNydGNf c3RhdGUtPnBjaF9wZml0LmVuYWJsZWQpIHsKPiBAQCAtNDEwOCw3ICs0MTA2LDcgQEAgaW50IHNr bF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj LAo+ICAJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9jcnRjLT5i YXNlLmRldik7Cj4gLQlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjcnRjX3N0YXRl LT5iYXNlLnN0YXRlOwo+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19z dGF0ZS0+dWFwaS5zdGF0ZTsKPiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwo+ICAJaW50IGNydGNfY2xv Y2ssIGRvdGNsazsKPiBAQCAtNDExNiw3ICs0MTE0LDcgQEAgaW50IHNrbF9jaGVja19waXBlX21h eF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJdWludF9maXhl ZF8xNl8xNl90IHBpcGVfZG93bnNjYWxlOwo+ICAJdWludF9maXhlZF8xNl8xNl90IG1heF9kb3du c2NhbGUgPSB1MzJfdG9fZml4ZWQxNigxKTsKPiAgCj4gLQlpZiAoIWNydGNfc3RhdGUtPmJhc2Uu ZW5hYmxlKQo+ICsJaWYgKCFjcnRjX3N0YXRlLT5ody5lbmFibGUpCj4gIAkJcmV0dXJuIDA7Cj4g IAo+ICAJaW50ZWxfYXRvbWljX2NydGNfc3RhdGVfZm9yX2VhY2hfcGxhbmVfc3RhdGUocGxhbmUs IHBsYW5lX3N0YXRlLCBjcnRjX3N0YXRlKSB7Cj4gQEAgLTQxNDIsNyArNDE0MCw3IEBAIGludCBz a2xfY2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YywKPiAgCj4gIAlwaXBlX2Rvd25zY2FsZSA9IG11bF9maXhlZDE2KHBpcGVfZG93bnNjYWxlLCBt YXhfZG93bnNjYWxlKTsKPiAgCj4gLQljcnRjX2Nsb2NrID0gY3J0Y19zdGF0ZS0+YmFzZS5hZGp1 c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gKwljcnRjX2Nsb2NrID0gY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICAJZG90Y2xrID0gdG9faW50ZWxfYXRvbWljX3N0YXRl KHN0YXRlKS0+Y2RjbGsubG9naWNhbC5jZGNsazsKPiAgCj4gIAlpZiAoSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPiBAQCAtNDIwOSw3ICs0MjA3 LDcgQEAgc2tsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgdTY0ICpwbGFuZV9kYXRhX3JhdGUsCj4gIAkJCQkg dTY0ICp1dl9wbGFuZV9kYXRhX3JhdGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRl ICpzdGF0ZSA9IGNydGNfc3RhdGUtPmJhc2Uuc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUgPSBjcnRjX3N0YXRlLT51YXBpLnN0YXRlOwo+ICAJc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZTsKPiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGU7Cj4gIAl1NjQgdG90YWxfZGF0YV9yYXRlID0gMDsKPiBAQCAtNDI0NCw3ICs0MjQyLDcgQEAg aWNsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlOwo+ICAJdTY0IHRvdGFsX2RhdGFfcmF0ZSA9IDA7Cj4gIAo+IC0JaWYgKFdBUk5fT04oIWNy dGNfc3RhdGUtPmJhc2Uuc3RhdGUpKQo+ICsJaWYgKFdBUk5fT04oIWNydGNfc3RhdGUtPnVhcGku c3RhdGUpKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCS8qIENhbGN1bGF0ZSBhbmQgY2FjaGUgZGF0 YSByYXRlIGZvciBlYWNoIHBsYW5lICovCj4gQEAgLTQyODgsOCArNDI4Niw4IEBAIHN0YXRpYyBp bnQKPiAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ICAJCSAgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQg Ki8pCj4gIHsKPiAtCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNydGNfc3RhdGUt PmJhc2Uuc3RhdGU7Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBjcnRjX3N0YXRlLT5iYXNl LmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjcnRjX3N0YXRlLT51 YXBpLnN0YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3J0Y19zdGF0ZS0+dWFwaS5j cnRjOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj LT5kZXYpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGMpOwo+ICAJc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0gJmNydGNfc3RhdGUtPndt LnNrbC5kZGI7Cj4gQEAgLTQzMTEsNyArNDMwOSw3IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChXQVJOX09OKCFzdGF0 ZSkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkg ewo+ICsJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpIHsKPiAgCQlhbGxvYy0+c3RhcnQgPSBh bGxvYy0+ZW5kID0gMDsKPiAgCQlyZXR1cm4gMDsKPiAgCX0KPiBAQCAtNDU1Myw3ICs0NTUxLDcg QEAgaW50ZWxfZ2V0X2xpbmV0aW1lX3VzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQo+ICAJdTMyIGNydGNfaHRvdGFsOwo+ICAJdWludF9maXhlZF8xNl8xNl90IGxp bmV0aW1lX3VzOwo+ICAKPiAtCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwlpZiAo IWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQlyZXR1cm4gdTMyX3RvX2ZpeGVkMTYoMCk7Cj4g IAo+ICAJcGl4ZWxfcmF0ZSA9IGNydGNfc3RhdGUtPnBpeGVsX3JhdGU7Cj4gQEAgLTQ1NjEsNyAr NDU1OSw3IEBAIGludGVsX2dldF9saW5ldGltZV91cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCWlmIChXQVJOX09OKHBpeGVsX3JhdGUgPT0gMCkpCj4gIAkJ cmV0dXJuIHUzMl90b19maXhlZDE2KDApOwo+ICAKPiAtCWNydGNfaHRvdGFsID0gY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsOwo+ICsJY3J0Y19odG90YWwgPSBjcnRj X3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsOwo+ICAJbGluZXRpbWVfdXMgPSBk aXZfZml4ZWQxNihjcnRjX2h0b3RhbCAqIDEwMDAsIHBpeGVsX3JhdGUpOwo+ICAKPiAgCXJldHVy biBsaW5ldGltZV91czsKPiBAQCAtNDU5Niw3ICs0NTk0LDcgQEAgc2tsX2NvbXB1dGVfd21fcGFy YW1zKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCSAgICAg IHUzMiBwbGFuZV9waXhlbF9yYXRlLCBzdHJ1Y3Qgc2tsX3dtX3BhcmFtcyAqd3AsCj4gIAkJICAg ICAgaW50IGNvbG9yX3BsYW5lKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4g IAl1MzIgaW50ZXJtX3BicGw7Cj4gIAo+IEBAIC00NzE3LDcgKzQ3MTUsNyBAQCBzdGF0aWMgdm9p ZCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiAgCQkJCSBjb25zdCBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHRfcHJldiwK PiAgCQkJCSBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQgLyogb3V0ICovKQo+ICB7Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJh c2UuY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwo+ICAJdTMyIGxhdGVuY3kgPSBkZXZf cHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxdOwo+ICAJdWludF9maXhlZF8xNl8xNl90IG1ldGhv ZDEsIG1ldGhvZDI7Cj4gIAl1aW50X2ZpeGVkXzE2XzE2X3Qgc2VsZWN0ZWRfcmVzdWx0Owo+IEBA IC00NzQzLDE0ICs0NzQxLDE0IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJbWV0aG9kMSA9IHNr bF93bV9tZXRob2QxKGRldl9wcml2LCB3cC0+cGxhbmVfcGl4ZWxfcmF0ZSwKPiAgCQkJCSB3cC0+ Y3BwLCBsYXRlbmN5LCB3cC0+ZGJ1Zl9ibG9ja19zaXplKTsKPiAgCW1ldGhvZDIgPSBza2xfd21f bWV0aG9kMih3cC0+cGxhbmVfcGl4ZWxfcmF0ZSwKPiAtCQkJCSBjcnRjX3N0YXRlLT5iYXNlLmFk anVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gKwkJCQkgY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZS5jcnRjX2h0b3RhbCwKPiAgCQkJCSBsYXRlbmN5LAo+ICAJCQkJIHdwLT5wbGFuZV9ibG9j a3NfcGVyX2xpbmUpOwo+ICAKPiAgCWlmICh3cC0+eV90aWxlZCkgewo+ICAJCXNlbGVjdGVkX3Jl c3VsdCA9IG1heF9maXhlZDE2KG1ldGhvZDIsIHdwLT55X3RpbGVfbWluaW11bSk7Cj4gIAl9IGVs c2Ugewo+IC0JCWlmICgod3AtPmNwcCAqIGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5j cnRjX2h0b3RhbCAvCj4gKwkJaWYgKCh3cC0+Y3BwICogY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZS5jcnRjX2h0b3RhbCAvCj4gIAkJICAgICB3cC0+ZGJ1Zl9ibG9ja19zaXplIDwgMSkgJiYK PiAgCQkgICAgICh3cC0+cGxhbmVfYnl0ZXNfcGVyX2xpbmUgLyB3cC0+ZGJ1Zl9ibG9ja19zaXpl IDwgMSkpIHsKPiAgCQkJc2VsZWN0ZWRfcmVzdWx0ID0gbWV0aG9kMjsKPiBAQCAtNDg0MSw3ICs0 ODM5LDcgQEAgc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJCSAgICAgIGNvbnN0IHN0cnVjdCBza2xfd21fcGFyYW1zICp3 bV9wYXJhbXMsCj4gIAkJICAgICAgc3RydWN0IHNrbF93bV9sZXZlbCAqbGV2ZWxzKQo+ICB7Cj4g LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUt PmJhc2UuY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjLT5kZXYpOwo+ICAJaW50IGxldmVsLCBtYXhf bGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsKPiAgCXN0cnVjdCBza2xfd21fbGV2 ZWwgKnJlc3VsdF9wcmV2ID0gJmxldmVsc1swXTsKPiAgCj4gQEAgLTQ4NTgsNyArNDg1Niw3IEBA IHNrbF9jb21wdXRlX3dtX2xldmVscyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiAgc3RhdGljIHUzMgo+ICBza2xfY29tcHV0ZV9saW5ldGltZV93bShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZTsKPiArCXN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNydGNfc3RhdGUtPnVhcGkuc3RhdGU7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOwo+ICAJ dWludF9maXhlZF8xNl8xNl90IGxpbmV0aW1lX3VzOwo+ICAJdTMyIGxpbmV0aW1lX3dtOwo+IEBA IC00ODc3LDcgKzQ4NzUsNyBAQCBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV90cmFuc2l0aW9uX3dt KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJICAgICAg Y29uc3Qgc3RydWN0IHNrbF93bV9wYXJhbXMgKndwLAo+ICAJCQkJICAgICAgc3RydWN0IHNrbF9w bGFuZV93bSAqd20pCj4gIHsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjX3N0YXRl LT5iYXNlLmNydGMtPmRldjsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjX3N0YXRl LT51YXBpLmNydGMtPmRldjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXUxNiB0cmFuc19taW4sIHRyYW5zX3lfdGlsZV9taW47 Cj4gIAljb25zdCB1MTYgdHJhbnNfYW1vdW50ID0gMTA7IC8qIFRoaXMgaXMgY29uZmlndXJhYmxl IGFtb3VudCAqLwo+IEBAIC01MDM3LDcgKzUwMzUsNyBAQCBzdGF0aWMgaW50IGljbF9idWlsZF9w bGFuZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIHN0YXRp YyBpbnQgc2tsX2J1aWxkX3BpcGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y3J0Y19zdGF0ZS0+YmFzZS5jcnRjLT5kZXYpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMtPmRldik7Cj4gIAlzdHJ1 Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20gPSAmY3J0Y19zdGF0ZS0+d20uc2tsLm9wdGltYWw7Cj4g IAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwo+ICAJY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZTsKPiBAQCAtNTIyNyw4ICs1MjI1LDggQEAgc3RhdGljIGludAo+ ICBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKm9sZF9jcnRjX3N0YXRlLAo+ICAJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5l d19jcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9 IHRvX2ludGVsX2F0b21pY19zdGF0ZShuZXdfY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4gLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMobmV3X2NydGNfc3RhdGUtPmJh c2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9IHRvX2ludGVs X2F0b21pY19zdGF0ZShuZXdfY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZSk7Cj4gKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMobmV3X2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJh c2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7Cj4gIAo+IEBAIC01NTI5LDcg KzU1MjcsNyBAQCBzdGF0aWMgaW50IHNrbF93bV9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdCBp bnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICAJCSAqIHBvd2VyIHdlbGwgdGhlIGhhcmR3YXJl IHN0YXRlIHdpbGwgZ28gb3V0IG9mIHN5bmMKPiAgCQkgKiB3aXRoIHRoZSBzb2Z0d2FyZSBzdGF0 ZS4KPiAgCQkgKi8KPiAtCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZuZXdf Y3J0Y19zdGF0ZS0+YmFzZSkgJiYKPiArCQlpZiAoIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rl c2V0KCZuZXdfY3J0Y19zdGF0ZS0+dWFwaSkgJiYKPiAgCQkgICAgc2tsX3BsYW5lX3dtX2VxdWFs cyhkZXZfcHJpdiwKPiAgCQkJCQkmb2xkX2NydGNfc3RhdGUtPndtLnNrbC5vcHRpbWFsLnBsYW5l c1twbGFuZV9pZF0sCj4gIAkJCQkJJm5ld19jcnRjX3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFu ZXNbcGxhbmVfaWRdKSkKPiBAQCAtNTU5Nyw3ICs1NTk1LDcgQEAgc2tsX2NvbXB1dGVfd20oc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHN0YXRpYyB2b2lkIHNrbF9hdG9taWNf dXBkYXRlX2NydGNfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAkJCQkg ICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0Jc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ dWFwaS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoc3RhdGUtPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSA9ICZj cnRjX3N0YXRlLT53bS5za2wub3B0aW1hbDsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlw ZTsKPiBAQCAtNTYxMSw3ICs1NjA5LDcgQEAgc3RhdGljIHZvaWQgc2tsX2F0b21pY191cGRhdGVf Y3J0Y193bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgc3RhdGljIHZvaWQg c2tsX2luaXRpYWxfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAkJCSAg IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRj KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT51YXBpLmNydGMpOwo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2Ny dGMtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShkZXYpOwo+ICAJc3RydWN0IHNrbF9kZGJfdmFsdWVzICpyZXN1bHRzID0gJnN0YXRlLT53 bV9yZXN1bHRzOwo+IEBAIC01NjIxLDcgKzU2MTksNyBAQCBzdGF0aWMgdm9pZCBza2xfaW5pdGlh bF93bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCj4gIAltdXRleF9sb2Nr KCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwo+ICAKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFj dGl2ZV9jaGFuZ2VkKQo+ICsJaWYgKGNydGNfc3RhdGUtPnVhcGkuYWN0aXZlX2NoYW5nZWQpCj4g IAkJc2tsX2F0b21pY191cGRhdGVfY3J0Y193bShzdGF0ZSwgY3J0Y19zdGF0ZSk7Cj4gIAo+ICAJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwo+IEBAIC01NjgwLDggKzU2Nzgs OCBAQCBzdGF0aWMgdm9pZCBpbGtfcHJvZ3JhbV93YXRlcm1hcmtzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgc3RhdGljIHZvaWQgaWxrX2luaXRpYWxfd2F0ZXJtYXJrcyhz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJCSAgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiAtCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMp Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0 YXRlLT51YXBpLmNydGMtPmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZf cHJpdi0+d20ud21fbXV0ZXgpOwo+ICAJY3J0Yy0+d20uYWN0aXZlLmlsayA9IGNydGNfc3RhdGUt PndtLmlsay5pbnRlcm1lZGlhdGU7Cj4gQEAgLTU2OTIsOCArNTY5MCw4IEBAIHN0YXRpYyB2b2lk IGlsa19pbml0aWFsX3dhdGVybWFya3Moc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4gIHN0YXRpYyB2b2lkIGlsa19vcHRpbWl6ZV93YXRlcm1hcmtzKHN0cnVjdCBpbnRlbF9hdG9t aWNfc3RhdGUgKnN0YXRlLAo+ICAJCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNydGMt PmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+dWFwaS5jcnRjKTsKPiAgCj4gIAlpZiAoIWNydGNfc3RhdGUtPndtLm5lZWRfcG9zdHZi bF91cGRhdGUpCj4gIAkJcmV0dXJuOwo+IC0tIAo+IDIuMjMuMAo+IAo+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZpbGxlIFN5cmrDpGzD pApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=