From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 06/14] drm/i915: Perform automated conversions for crtc uapi/hw split, base -> hw. Date: Fri, 18 Oct 2019 15:59:53 +0300 Message-ID: <20191018125953.GZ1208@intel.com> References: <20191017132105.15528-1-maarten.lankhorst@linux.intel.com> <20191017132105.15528-6-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 260046EB39 for ; Fri, 18 Oct 2019 12:59:59 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191017132105.15528-6-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMTcsIDIwMTkgYXQgMDM6MjA6NTdQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU3BsaXQgdXAgY3J0Y19zdGF0ZS0+YmFzZSB0byBodyB3aGVyZSBhcHByb3By aWF0ZS4gVGhpcyBpcyBkb25lIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGF0Y2g6Cj4gCj4gQEAKPiBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqVDsKPiBpZGVudGlmaWVyIHggPX4gIl4oYWN0aXZlfGVu YWJsZXxkZWdhbW1hX2x1dHxnYW1tYV9sdXR8Y3RtfG1vZGV8YWRqdXN0ZWRfbW9kZSkkIjsKPiBA QAo+IC1ULT5iYXNlLngKPiArVC0+aHcueAo+IAo+IEBACj4gc3RydWN0IGRybV9jcnRjX3N0YXRl ICpUOwo+IGlkZW50aWZpZXIgeCA9fiAiXihhY3RpdmV8ZW5hYmxlfGRlZ2FtbWFfbHV0fGdhbW1h X2x1dHxjdG18bW9kZXxhZGp1c3RlZF9tb2RlKSQiOwo+IEBACj4gLXRvX2ludGVsX2NydGNfc3Rh dGUoVCktPmJhc2UueAo+ICt0b19pbnRlbF9jcnRjX3N0YXRlKFQpLT5ody54CgpPaywgdGhpcyBp cyBqdXN0IG5vdyBkb2luZyB0aGUgcy9iYXNlL2h3LwoKVGhhbmtzLiBJICpzaG91bGQqIGJlIGFi bGUgdG8gcmVhZCB0aHJvdWdoIHRoaXMgSSB0aGluayA6KQoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBN YWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYyAgICAgICAgfCAgMTIg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdWRpby5jICAgIHwgICA0 ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuYyAgICB8ICAg OCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NvbG9yLmMgICAgfCAx MDggKysrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnQuYyAg ICAgIHwgIDE4ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMg ICAgICB8ICAxOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXkuYyAgfCAyNTIgKysrKysrKysrLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZHAuYyAgICAgICB8ICAyMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2RwX21zdC5jICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kdm8uYyAgICAgIHwgIDEyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZmJjLmMgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2hkbWkuYyAgICAgfCAgMjAgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9sc3Bjb24uYyAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfbHZkcy5jICAgICB8ICAgOCArLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3BhbmVsLmMgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9waXBlX2NyYy5jIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMgICAgICB8ICAxMiArLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nkdm8uYyAgICAgfCAgMTYgKy0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyAgIHwgICA4ICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdHYuYyAgICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Zkc2MuYyAgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMgICAgICAgIHwgIDEwICstCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgICB8ICAgOCArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAgICAgICAgfCAgNjIgKystLS0KPiAgMjQg ZmlsZXMgY2hhbmdlZCwgMzE2IGluc2VydGlvbnMoKyksIDMxMiBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYwo+IGluZGV4IDZlMzk4YzMzYTUyNC4u NGVjNDkzZTQ3NTViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aWNsX2RzaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMK PiBAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyB2b2lkIGNvbmZpZ3VyZV9kdWFsX2xpbmtfbW9k ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCj4gIAlpZiAoaW50ZWxfZHNpLT5k dWFsX2xpbmsgPT0gRFNJX0RVQUxfTElOS19GUk9OVF9CQUNLKSB7Cj4gIAkJY29uc3Qgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCQkJCSZwaXBlX2NvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCQkJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9k ZTsKPiAgCQl1MzIgZHNzX2N0bDI7Cj4gIAkJdTE2IGhhY3RpdmUgPSBhZGp1c3RlZF9tb2RlLT5j cnRjX2hkaXNwbGF5Owo+ICAJCXUxNiBkbF9idWZmZXJfZGVwdGg7Cj4gQEAgLTc2OCw3ICs3Njgs NyBAQCBnZW4xMV9kc2lfc2V0X3RyYW5zY29kZXJfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0g ZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJCQkJJnBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGU7Cj4gKwkJCQkJJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJ ZW51bSBwb3J0IHBvcnQ7Cj4gIAllbnVtIHRyYW5zY29kZXIgZHNpX3RyYW5zOwo+ICAJLyogaG9y aXpvbnRhbCB0aW1pbmdzICovCj4gQEAgLTEyMTYsNyArMTIxNiw3IEBAIHN0YXRpYyB2b2lkIGdl bjExX2RzaV9nZXRfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgewo+ ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rl ci0+YmFzZSk7Cj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4g LQkJCQkJJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJCQkJJnBpcGVfY29u ZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAKPiAgCWlmIChpbnRlbF9kc2ktPmR1YWxfbGluaykg ewo+ICAJCWFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkgKj0gMjsKPiBAQCAtMTI0OSw5ICsx MjQ5LDkgQEAgc3RhdGljIHZvaWQgZ2VuMTFfZHNpX2dldF9jb25maWcoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gIAlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9Cj4gIAkJY25sX2Nh bGNfd3JwbGxfbGluayhkZXZfcHJpdiwgJnBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlKTsKPiAg Cj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBpbnRlbF9k c2ktPnBjbGs7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0g aW50ZWxfZHNpLT5wY2xrOwo+ICAJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rKQo+IC0JCXBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayAqPSAyOwo+ICsJCXBpcGVfY29u ZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgKj0gMjsKPiAgCj4gIAlnZW4xMV9kc2lf Z2V0X3RpbWluZ3MoZW5jb2RlciwgcGlwZV9jb25maWcpOwo+ICAJcGlwZV9jb25maWctPm91dHB1 dF90eXBlcyB8PSBCSVQoSU5URUxfT1VUUFVUX0RTSSk7Cj4gQEAgLTEyNjksNyArMTI2OSw3IEBA IHN0YXRpYyBpbnQgZ2VuMTFfZHNpX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmZpeGVkX21vZGUg PQo+ICAJCQkJCWludGVsX2Nvbm5lY3Rvci0+cGFuZWwuZml4ZWRfbW9kZTsKPiAgCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkJCQkmcGlwZV9jb25maWctPmJh c2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkJCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7 Cj4gIAo+ICAJcGlwZV9jb25maWctPm91dHB1dF9mb3JtYXQgPSBJTlRFTF9PVVRQVVRfRk9STUFU X1JHQjsKPiAgCWludGVsX2ZpeGVkX3BhbmVsX21vZGUoZml4ZWRfbW9kZSwgYWRqdXN0ZWRfbW9k ZSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXVk aW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXVkaW8uYwo+IGluZGV4 IGVkMTg1MTFiZWZhMy4uNmE1OGU4YWQ4NmY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXVkaW8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfYXVkaW8uYwo+IEBAIC0yMzMsNyArMjMzLDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBoZG1pX2F1ZF9uY3RzIGhkbWlfYXVkX25jdHNfMzZicHBbXSA9IHsKPiAgc3RhdGlj IHUzMiBhdWRpb19jb25maWdfaGRtaV9waXhlbF9jbG9jayhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7 Cj4gKwkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gIAlpbnQgaTsKPiAgCj4gIAlm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShoZG1pX2F1ZGlvX2Nsb2NrKTsgaSsrKSB7Cj4gQEAg LTY5NCw3ICs2OTQsNyBAQCB2b2lkIGludGVsX2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50 ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciA9IGNvbm5fc3RhdGUtPmNvbm5lY3RvcjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1 c3RlZF9tb2RlOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJZW51bSBw b3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0Owo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBl Owo+ICAKCklJUkMgSSBoYWQgc29tZSBjb25jZXJucyBhYm91dCB0aGUgYXVkaW8gc3R1ZmYsIGJ1 dCB0aGlzIGxvb2tzIGNvcnJlY3QKdG8gbWUuIEkgZ3Vlc3MgbXkgY29uY2VybnMgd2VyZSB0aGUg dXN1YWwgImFyZ2gsIHN0aWxsIHVzaW5nIGNydGMtPmNvbmZpZyEiLgoKT0ssIEkgdGhpbmsgaXQg YWxsIGxvb2tzIGdvb2QuIFRoZSBvbmUgcHJvYmxlbSB3aXRoIHRoaXMgcGF0Y2ggaXMgdGhhdAp5 b3UncmUgbm90IG51a2luZyAuYmFzZSBhdCB0aGUgc2FtZSB0aW1lIHNvIHRoZSBmYWN0IHRoYXQg dGhpcyAoaG9wZWZ1bGx5KQpjb21waWxlcyBkb2Vzbid0IHByb3ZlIHRoYXQgeW91IGNvbnZlcnRl ZCBhYnNvbHV0ZWx5IGV2ZXJ5dGhpbmcuCgpTbyB3aXRoIHNvbWUgcmVzZXJ2YXRpb25zIChkdWUg dG8gLmJhc2UgbGluZ2VyaW5nIGFyb3VuZCkgdGhpcyBpczoKUmV2aWV3ZWQtYnk6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMKPiBpbmRleCBhYjFmN2NlYzUwYzYuLmZkMWVk MGZiODc0OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2NkY2xrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xr LmMKPiBAQCAtMTkyNCw3ICsxOTI0LDcgQEAgaW50IGludGVsX2NydGNfY29tcHV0ZV9taW5fY2Rj bGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkJdG9faTkx NShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gIAlpbnQgbWluX2NkY2xrOwo+ICAKPiAt CWlmICghY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCj4gKwlpZiAoIWNydGNfc3RhdGUtPmh3LmVu YWJsZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAltaW5fY2RjbGsgPSBpbnRlbF9waXhlbF9yYXRl X3RvX2NkY2xrKGNydGNfc3RhdGUpOwo+IEBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBzdGF0aWMgdTgg Ynh0X2NvbXB1dGVfbWluX3ZvbHRhZ2VfbGV2ZWwoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUpCj4gIAkgICAgICAgc2l6ZW9mKHN0YXRlLT5taW5fdm9sdGFnZV9sZXZlbCkpOwo+ICAK PiAgCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0 YXRlLCBpKSB7Cj4gLQkJaWYgKGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQo+ICsJCWlmIChjcnRj X3N0YXRlLT5ody5lbmFibGUpCj4gIAkJCXN0YXRlLT5taW5fdm9sdGFnZV9sZXZlbFtpXSA9Cj4g IAkJCQljcnRjX3N0YXRlLT5taW5fdm9sdGFnZV9sZXZlbDsKPiAgCQllbHNlCj4gQEAgLTIxMzMs NyArMjEzMyw3IEBAIHN0YXRpYyBpbnQgc2tsX2RwbGwwX3ZjbyhzdHJ1Y3QgaW50ZWxfYXRvbWlj X3N0YXRlICpzdGF0ZSkKPiAgCQl2Y28gPSBkZXZfcHJpdi0+c2tsX3ByZWZlcnJlZF92Y29fZnJl cTsKPiAgCj4gIAlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywg Y3J0Y19zdGF0ZSwgaSkgewo+IC0JCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCj4gKwkJ aWYgKCFjcnRjX3N0YXRlLT5ody5lbmFibGUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlpZiAo IWludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX0VEUCkpCj4gQEAg LTIyNjAsNyArMjI2MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9hbGxfcGlwZXMoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJaWYgKElTX0VSUihjcnRjX3N0YXRl KSkKPiAgCQkJcmV0dXJuIFBUUl9FUlIoY3J0Y19zdGF0ZSk7Cj4gIAo+IC0JCWlmICghY3J0Y19z dGF0ZS0+YmFzZS5hY3RpdmUgfHwKPiArCQlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fAo+ ICAJCSAgICBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmY3J0Y19zdGF0ZS0+YmFzZSkp Cj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9jb2xvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9jb2xvci5jCj4gaW5kZXggOTU1ODZhNTg4MjM0Li42NWUxYjE4YmQ3ZTMgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jb2xvci5jCj4gQEAgLTExNywxMCArMTE3 LDEwIEBAIHN0YXRpYyBib29sIGx1dF9pc19sZWdhY3koY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0 eV9ibG9iICpsdXQpCj4gIAo+ICBzdGF0aWMgYm9vbCBjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1t YShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+IC0JcmV0 dXJuICFjcnRjX3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0ICYmCj4gLQkJIWNydGNfc3RhdGUtPmJh c2UuY3RtICYmCj4gLQkJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgJiYKPiAtCQlsdXRfaXNf bGVnYWN5KGNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0KTsKPiArCXJldHVybiAhY3J0Y19zdGF0 ZS0+aHcuZGVnYW1tYV9sdXQgJiYKPiArCQkhY3J0Y19zdGF0ZS0+aHcuY3RtICYmCj4gKwkJY3J0 Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0ICYmCj4gKwkJbHV0X2lzX2xlZ2FjeShjcnRjX3N0YXRlLT5o dy5nYW1tYV9sdXQpOwo+ICB9Cj4gIAo+ICAvKgo+IEBAIC0yMTksNyArMjE5LDcgQEAgc3RhdGlj IGJvb2wgaWxrX2NzY19saW1pdGVkX3JhbmdlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQo+ICBzdGF0aWMgdm9pZCBpbGtfY3NjX2NvbnZlcnRfY3RtKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJdTE2IGNvZWZmc1s5XSkK PiAgewo+IC0JY29uc3Qgc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bSA9IGNydGNfc3RhdGUtPmJh c2UuY3RtLT5kYXRhOwo+ICsJY29uc3Qgc3RydWN0IGRybV9jb2xvcl9jdG0gKmN0bSA9IGNydGNf c3RhdGUtPmh3LmN0bS0+ZGF0YTsKPiAgCWNvbnN0IHU2NCAqaW5wdXQ7Cj4gIAl1NjQgdGVtcFs5 XTsKPiAgCWludCBpOwo+IEBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIHZvaWQgaWxrX2xvYWRf Y3NjX21hdHJpeChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5k ZXYpOwo+ICAJYm9vbCBsaW1pdGVkX2NvbG9yX3JhbmdlID0gaWxrX2NzY19saW1pdGVkX3Jhbmdl KGNydGNfc3RhdGUpOwo+ICAKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmN0bSkgewo+ICsJaWYg KGNydGNfc3RhdGUtPmh3LmN0bSkgewo+ICAJCXUxNiBjb2VmZls5XTsKPiAgCj4gIAkJaWxrX2Nz Y19jb252ZXJ0X2N0bShjcnRjX3N0YXRlLCBjb2VmZik7Cj4gQEAgLTMxMiw3ICszMTIsNyBAQCBz dGF0aWMgdm9pZCBpY2xfbG9hZF9jc2NfbWF0cml4KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9j cnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiAgCj4gLQlpZiAoY3J0Y19zdGF0 ZS0+YmFzZS5jdG0pIHsKPiArCWlmIChjcnRjX3N0YXRlLT5ody5jdG0pIHsKPiAgCQl1MTYgY29l ZmZbOV07Cj4gIAo+ICAJCWlsa19jc2NfY29udmVydF9jdG0oY3J0Y19zdGF0ZSwgY29lZmYpOwo+ IEBAIC0zNDIsOCArMzQyLDggQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19sb2FkX2NzY19tYXRy aXgoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJ ZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNl LmN0bSkgewo+IC0JCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfY3RtICpjdG0gPSBjcnRjX3N0YXRl LT5iYXNlLmN0bS0+ZGF0YTsKPiArCWlmIChjcnRjX3N0YXRlLT5ody5jdG0pIHsKPiArCQljb25z dCBzdHJ1Y3QgZHJtX2NvbG9yX2N0bSAqY3RtID0gY3J0Y19zdGF0ZS0+aHcuY3RtLT5kYXRhOwo+ ICAJCXUxNiBjb2VmZnNbOV0gPSB7fTsKPiAgCQlpbnQgaTsKPiAgCj4gQEAgLTQzNSw3ICs0MzUs NyBAQCBzdGF0aWMgdm9pZCBpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCj4gIHN0YXRpYyB2b2lkIGk5eHhfbG9hZF9s dXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gLQlp OXh4X2xvYWRfbHV0c19pbnRlcm5hbChjcnRjX3N0YXRlLCBjcnRjX3N0YXRlLT5iYXNlLmdhbW1h X2x1dCk7Cj4gKwlpOXh4X2xvYWRfbHV0c19pbnRlcm5hbChjcnRjX3N0YXRlLCBjcnRjX3N0YXRl LT5ody5nYW1tYV9sdXQpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpOXh4X2NvbG9yX2NvbW1p dChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiBAQCAtNTI1LDcg KzUyNSw3IEBAIHN0YXRpYyB2b2lkIGk5NjVfbG9hZF9sdXRfMTBwNihzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKPiAgc3RhdGljIHZvaWQgaTk2NV9sb2FkX2x1dHMoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+IC0JY29uc3Qgc3RydWN0 IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1 dDsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19z dGF0ZS0+aHcuZ2FtbWFfbHV0Owo+ICAKPiAgCWlmIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlID09 IEdBTU1BX01PREVfTU9ERV84QklUKQo+ICAJCWk5eHhfbG9hZF9sdXRzKGNydGNfc3RhdGUpOwo+ IEBAIC01NDgsNyArNTQ4LDcgQEAgc3RhdGljIHZvaWQgaWxrX2xvYWRfbHV0XzEwKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAo+ICBzdGF0aWMgdm9pZCBpbGtfbG9hZF9sdXRzKGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAtCWNvbnN0 IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5n YW1tYV9sdXQ7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9 IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKPiAgCj4gIAlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFf bW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkKPiAgCQlpOXh4X2xvYWRfbHV0cyhjcnRjX3N0 YXRlKTsKPiBAQCAtNjU1LDggKzY1NSw4IEBAIHN0YXRpYyB2b2lkIGl2Yl9sb2FkX2x1dF9leHRf bWF4KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ICBzdGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRz KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRj KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19z dGF0ZS0+YmFzZS5nYW1tYV9sdXQ7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2Ig KmRlZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dDsKPiArCWNvbnN0IHN0 cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFf bHV0Owo+ICsJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9IGNy dGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0Owo+ICAKPiAgCWlmIChjcnRjX3N0YXRlLT5nYW1tYV9t b2RlID09IEdBTU1BX01PREVfTU9ERV84QklUKSB7Cj4gIAkJaTl4eF9sb2FkX2x1dHMoY3J0Y19z dGF0ZSk7Cj4gQEAgLTY3OCw4ICs2NzgsOCBAQCBzdGF0aWMgdm9pZCBpdmJfbG9hZF9sdXRzKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICBzdGF0aWMgdm9pZCBi ZHdfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFf bHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQ7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3By b3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dDsK PiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0 ZS0+aHcuZ2FtbWFfbHV0Owo+ICsJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdh bW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0Owo+ICAKPiAgCWlmIChjcnRjX3N0 YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV84QklUKSB7Cj4gIAkJaTl4eF9sb2Fk X2x1dHMoY3J0Y19zdGF0ZSk7Cj4gQEAgLTcwNCw3ICs3MDQsNyBAQCBzdGF0aWMgdm9pZCBnbGtf bG9hZF9kZWdhbW1hX2x1dChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ YmFzZS5kZXYpOwo+ICAJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJY29uc3QgdTMy IGx1dF9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmNvbG9yLmRlZ2FtbWFfbHV0X3NpemU7 Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCAqbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5k ZWdhbW1hX2x1dC0+ZGF0YTsKPiArCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQgPSBj cnRjX3N0YXRlLT5ody5kZWdhbW1hX2x1dC0+ZGF0YTsKPiAgCXUzMiBpOwo+ICAKPiAgCS8qCj4g QEAgLTc2Niw3ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBnbGtfbG9hZF9kZWdhbW1hX2x1dF9saW5l YXIoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdAo+ICAKPiAgc3RhdGlj IHZvaWQgZ2xrX2xvYWRfbHV0cyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQg PSBjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dDsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVy dHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0Owo+ICAJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7 Cj4gIAo+ICAJLyoKPiBAQCAtNzc3LDcgKzc3Nyw3IEBAIHN0YXRpYyB2b2lkIGdsa19sb2FkX2x1 dHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkgKiB0aGUg ZGVnYW1hIExVVCBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcmVsb2FkCj4gIAkgKiBpdCBldmVy eSB0aW1lIHRoZSBwaXBlIENTQyBpcyBiZWluZyBlbmFibGVkLgo+ICAJICovCj4gLQlpZiAoY3J0 Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkKPiArCWlmIChjcnRjX3N0YXRlLT5ody5kZWdhbW1h X2x1dCkKPiAgCQlnbGtfbG9hZF9kZWdhbW1hX2x1dChjcnRjX3N0YXRlKTsKPiAgCWVsc2UKPiAg CQlnbGtfbG9hZF9kZWdhbW1hX2x1dF9saW5lYXIoY3J0Y19zdGF0ZSk7Cj4gQEAgLTgyMyw3ICs4 MjMsNyBAQCBzdGF0aWMgdm9pZAo+ICBpY2xfcHJvZ3JhbV9nYW1tYV9zdXBlcmZpbmVfc2VnbWVu dChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3Ry dWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0 Yyk7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJsb2IgPSBjcnRjX3N0YXRl LT5iYXNlLmdhbW1hX2x1dDsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxv YiA9IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fY29sb3Jf bHV0ICpsdXQgPSBibG9iLT5kYXRhOwo+ICAJc3RydWN0IGludGVsX2RzYiAqZHNiID0gaW50ZWxf ZHNiX2dldChjcnRjKTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiBAQCAtODU1 LDcgKzg1NSw3IEBAIHN0YXRpYyB2b2lkCj4gIGljbF9wcm9ncmFtX2dhbW1hX211bHRpX3NlZ21l bnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAgCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpibG9iID0gY3J0Y19zdGF0 ZS0+YmFzZS5nYW1tYV9sdXQ7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmJs b2IgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2NvbG9y X2x1dCAqbHV0ID0gYmxvYi0+ZGF0YTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fY29sb3JfbHV0ICpl bnRyeTsKPiAgCXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2RzYl9nZXQoY3J0Yyk7Cj4g QEAgLTkxMCwxMSArOTEwLDExIEBAIGljbF9wcm9ncmFtX2dhbW1hX211bHRpX3NlZ21lbnQoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAo+ICBzdGF0aWMgdm9p ZCBpY2xfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNy dGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0Owo+ICsJY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9i bG9iICpnYW1tYV9sdXQgPSBjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQ7Cj4gIAlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAg CXN0cnVjdCBpbnRlbF9kc2IgKmRzYiA9IGludGVsX2RzYl9nZXQoY3J0Yyk7Cj4gIAo+IC0JaWYg KGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCj4gKwlpZiAoY3J0Y19zdGF0ZS0+aHcuZGVn YW1tYV9sdXQpCj4gIAkJZ2xrX2xvYWRfZGVnYW1tYV9sdXQoY3J0Y19zdGF0ZSk7Cj4gIAo+ICAJ c3dpdGNoIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlICYgR0FNTUFfTU9ERV9NT0RFX01BU0spIHsK PiBAQCAtOTkxLDggKzk5MSw4IEBAIHN0YXRpYyB2b2lkIGNodl9sb2FkX2NnbV9nYW1tYShzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgc3RhdGljIHZvaWQgY2h2X2xvYWRfbHV0cyhjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gLQlj b25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmJh c2UuZ2FtbWFfbHV0Owo+IC0JY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1h X2x1dCA9IGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQ7Cj4gKwljb25zdCBzdHJ1Y3QgZHJt X3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dDsKPiAr CWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZGVnYW1tYV9sdXQgPSBjcnRjX3N0YXRl LT5ody5kZWdhbW1hX2x1dDsKPiAgCj4gIAljaGVycnl2aWV3X2xvYWRfY3NjX21hdHJpeChjcnRj X3N0YXRlKTsKPiAgCj4gQEAgLTEwNjMsNyArMTA2Myw3IEBAIGludGVsX2NvbG9yX2FkZF9hZmZl Y3RlZF9wbGFuZXMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ICAJ CWludGVsX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+ICAJc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZTsKPiAgCj4gLQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFj dGl2ZSB8fAo+ICsJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlIHx8Cj4gIAkgICAgZHJt X2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoJm5ld19jcnRjX3N0YXRlLT5iYXNlKSkKPiAgCQly ZXR1cm4gMDsKPiAgCj4gQEAgLTExMDgsOCArMTEwOCw4IEBAIHN0YXRpYyBpbnQgY2hlY2tfbHV0 X3NpemUoY29uc3Qgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpsdXQsIGludCBleHBlY3RlZCkK PiAgc3RhdGljIGludCBjaGVja19sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1f cHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQ7Cj4g LQljb25zdCBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmRlZ2FtbWFfbHV0ID0gY3J0Y19zdGF0 ZS0+YmFzZS5kZWdhbW1hX2x1dDsKPiArCWNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAq Z2FtbWFfbHV0ID0gY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0Owo+ICsJY29uc3Qgc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpkZWdhbW1hX2x1dCA9IGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0 Owo+ICAJaW50IGdhbW1hX2xlbmd0aCwgZGVnYW1tYV9sZW5ndGg7Cj4gIAl1MzIgZ2FtbWFfdGVz dHMsIGRlZ2FtbWFfdGVzdHM7Cj4gIAo+IEBAIC0xMTU3LDcgKzExNTcsNyBAQCBzdGF0aWMgaW50 IGk5eHhfY29sb3JfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4g IAkJcmV0dXJuIHJldDsKPiAgCj4gIAljcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUgPQo+IC0JCWNy dGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ICYmCj4gKwkJY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0 ICYmCj4gIAkJIWNydGNfc3RhdGUtPmM4X3BsYW5lczsKPiAgCj4gIAljcnRjX3N0YXRlLT5nYW1t YV9tb2RlID0gaTl4eF9nYW1tYV9tb2RlKGNydGNfc3RhdGUpOwo+IEBAIC0xMTc2LDExICsxMTc2 LDExIEBAIHN0YXRpYyB1MzIgY2h2X2NnbV9tb2RlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICAJaWYgKGNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1hKGNydGNf c3RhdGUpKQo+ICAJCXJldHVybiAwOwo+ICAKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmRlZ2Ft bWFfbHV0KQo+ICsJaWYgKGNydGNfc3RhdGUtPmh3LmRlZ2FtbWFfbHV0KQo+ICAJCWNnbV9tb2Rl IHw9IENHTV9QSVBFX01PREVfREVHQU1NQTsKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmN0bSkK PiArCWlmIChjcnRjX3N0YXRlLT5ody5jdG0pCj4gIAkJY2dtX21vZGUgfD0gQ0dNX1BJUEVfTU9E RV9DU0M7Cj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQpCj4gKwlpZiAoY3J0Y19z dGF0ZS0+aHcuZ2FtbWFfbHV0KQo+ICAJCWNnbV9tb2RlIHw9IENHTV9QSVBFX01PREVfR0FNTUE7 Cj4gIAo+ICAJcmV0dXJuIGNnbV9tb2RlOwo+IEBAIC0xMjU0LDcgKzEyNTQsNyBAQCBzdGF0aWMg aW50IGlsa19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkK PiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAgCWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSA9Cj4gLQkJ Y3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgJiYKPiArCQljcnRjX3N0YXRlLT5ody5nYW1tYV9s dXQgJiYKPiAgCQkhY3J0Y19zdGF0ZS0+YzhfcGxhbmVzOwo+ICAKPiAgCS8qCj4gQEAgLTEyODAs OCArMTI4MCw4IEBAIHN0YXRpYyB1MzIgaXZiX2dhbW1hX21vZGUoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlpZiAoIWNydGNfc3RhdGUtPmdhbW1hX2VuYWJs ZSB8fAo+ICAJICAgIGNydGNfc3RhdGVfaXNfbGVnYWN5X2dhbW1hKGNydGNfc3RhdGUpKQo+ICAJ CXJldHVybiBHQU1NQV9NT0RFX01PREVfOEJJVDsKPiAtCWVsc2UgaWYgKGNydGNfc3RhdGUtPmJh c2UuZ2FtbWFfbHV0ICYmCj4gLQkJIGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQpCj4gKwll bHNlIGlmIChjcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgJiYKPiArCQkgY3J0Y19zdGF0ZS0+aHcu ZGVnYW1tYV9sdXQpCj4gIAkJcmV0dXJuIEdBTU1BX01PREVfTU9ERV9TUExJVDsKPiAgCWVsc2UK PiAgCQlyZXR1cm4gR0FNTUFfTU9ERV9NT0RFXzEwQklUOwo+IEBAIC0xMjk1LDcgKzEyOTUsNyBA QCBzdGF0aWMgdTMyIGl2Yl9jc2NfbW9kZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSkKPiAgCSAqIENTQyBjb21lcyBhZnRlciB0aGUgTFVUIGluIGRlZ2FtbWEsIFJH Qi0+WUNiQ3IsCj4gIAkgKiBhbmQgUkdCIGZ1bGwtPmxpbWl0ZWQgcmFuZ2UgbW9kZS4KPiAgCSAq Lwo+IC0JaWYgKGNydGNfc3RhdGUtPmJhc2UuZGVnYW1tYV9sdXQgfHwKPiArCWlmIChjcnRjX3N0 YXRlLT5ody5kZWdhbW1hX2x1dCB8fAo+ICAJICAgIGNydGNfc3RhdGUtPm91dHB1dF9mb3JtYXQg IT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9SR0IgfHwKPiAgCSAgICBsaW1pdGVkX2NvbG9yX3Jhbmdl KQo+ICAJCXJldHVybiAwOwo+IEBAIC0xMzEzLDEzICsxMzEzLDEzIEBAIHN0YXRpYyBpbnQgaXZi X2NvbG9yX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJCXJl dHVybiByZXQ7Cj4gIAo+ICAJY3J0Y19zdGF0ZS0+Z2FtbWFfZW5hYmxlID0KPiAtCQkoY3J0Y19z dGF0ZS0+YmFzZS5nYW1tYV9sdXQgfHwKPiAtCQkgY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1 dCkgJiYKPiArCQkoY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0IHx8Cj4gKwkJIGNydGNfc3RhdGUt Pmh3LmRlZ2FtbWFfbHV0KSAmJgo+ICAJCSFjcnRjX3N0YXRlLT5jOF9wbGFuZXM7Cj4gIAo+ICAJ Y3J0Y19zdGF0ZS0+Y3NjX2VuYWJsZSA9Cj4gIAkJY3J0Y19zdGF0ZS0+b3V0cHV0X2Zvcm1hdCAh PSBJTlRFTF9PVVRQVVRfRk9STUFUX1JHQiB8fAo+IC0JCWNydGNfc3RhdGUtPmJhc2UuY3RtIHx8 IGxpbWl0ZWRfY29sb3JfcmFuZ2U7Cj4gKwkJY3J0Y19zdGF0ZS0+aHcuY3RtIHx8IGxpbWl0ZWRf Y29sb3JfcmFuZ2U7Cj4gIAo+ICAJY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9IGl2Yl9nYW1tYV9t b2RlKGNydGNfc3RhdGUpOwo+ICAKPiBAQCAtMTM1MCwxNCArMTM1MCwxNCBAQCBzdGF0aWMgaW50 IGdsa19jb2xvcl9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAg CQlyZXR1cm4gcmV0Owo+ICAKPiAgCWNydGNfc3RhdGUtPmdhbW1hX2VuYWJsZSA9Cj4gLQkJY3J0 Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgJiYKPiArCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQg JiYKPiAgCQkhY3J0Y19zdGF0ZS0+YzhfcGxhbmVzOwo+ICAKPiAgCS8qIE9uIEdMSysgZGVnYW1t YSBMVVQgaXMgY29udHJvbGxlZCBieSBjc2NfZW5hYmxlICovCj4gIAljcnRjX3N0YXRlLT5jc2Nf ZW5hYmxlID0KPiAtCQljcnRjX3N0YXRlLT5iYXNlLmRlZ2FtbWFfbHV0IHx8Cj4gKwkJY3J0Y19z dGF0ZS0+aHcuZGVnYW1tYV9sdXQgfHwKPiAgCQljcnRjX3N0YXRlLT5vdXRwdXRfZm9ybWF0ICE9 IElOVEVMX09VVFBVVF9GT1JNQVRfUkdCIHx8Cj4gLQkJY3J0Y19zdGF0ZS0+YmFzZS5jdG0gfHwg Y3J0Y19zdGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5nZTsKPiArCQljcnRjX3N0YXRlLT5ody5jdG0g fHwgY3J0Y19zdGF0ZS0+bGltaXRlZF9jb2xvcl9yYW5nZTsKPiAgCj4gIAljcnRjX3N0YXRlLT5n YW1tYV9tb2RlID0gZ2xrX2dhbW1hX21vZGUoY3J0Y19zdGF0ZSk7Cj4gIAo+IEBAIC0xMzc0LDE0 ICsxMzc0LDE0IEBAIHN0YXRpYyB1MzIgaWNsX2dhbW1hX21vZGUoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAgCXUzMiBnYW1tYV9tb2RlID0gMDsKPiAg Cj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5kZWdhbW1hX2x1dCkKPiArCWlmIChjcnRjX3N0YXRl LT5ody5kZWdhbW1hX2x1dCkKPiAgCQlnYW1tYV9tb2RlIHw9IFBSRV9DU0NfR0FNTUFfRU5BQkxF Owo+ICAKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCAmJgo+ICsJaWYgKGNydGNf c3RhdGUtPmh3LmdhbW1hX2x1dCAmJgo+ICAJICAgICFjcnRjX3N0YXRlLT5jOF9wbGFuZXMpCj4g IAkJZ2FtbWFfbW9kZSB8PSBQT1NUX0NTQ19HQU1NQV9FTkFCTEU7Cj4gIAo+IC0JaWYgKCFjcnRj X3N0YXRlLT5iYXNlLmdhbW1hX2x1dCB8fAo+ICsJaWYgKCFjcnRjX3N0YXRlLT5ody5nYW1tYV9s dXQgfHwKPiAgCSAgICBjcnRjX3N0YXRlX2lzX2xlZ2FjeV9nYW1tYShjcnRjX3N0YXRlKSkKPiAg CQlnYW1tYV9tb2RlIHw9IEdBTU1BX01PREVfTU9ERV84QklUOwo+ICAJZWxzZQo+IEBAIC0xMzk0 LDcgKzEzOTQsNyBAQCBzdGF0aWMgdTMyIGljbF9jc2NfbW9kZShjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgewo+ICAJdTMyIGNzY19tb2RlID0gMDsKPiAgCj4g LQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5jdG0pCj4gKwlpZiAoY3J0Y19zdGF0ZS0+aHcuY3RtKQo+ ICAJCWNzY19tb2RlIHw9IElDTF9DU0NfRU5BQkxFOwo+ICAKPiAgCWlmIChjcnRjX3N0YXRlLT5v dXRwdXRfZm9ybWF0ICE9IElOVEVMX09VVFBVVF9GT1JNQVRfUkdCIHx8Cj4gQEAgLTE2MjMsNyAr MTYyMyw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfcmVhZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+ICAJaWYgKCFjcnRjX3N0YXRlLT5nYW1tYV9lbmFibGUpCj4gIAkJ cmV0dXJuOwo+ICAKPiAtCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gaTl4eF9yZWFkX2x1 dF84KGNydGNfc3RhdGUpOwo+ICsJY3J0Y19zdGF0ZS0+aHcuZ2FtbWFfbHV0ID0gaTl4eF9yZWFk X2x1dF84KGNydGNfc3RhdGUpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgc3RydWN0IGRybV9wcm9wZXJ0 eV9ibG9iICoKPiBAQCAtMTY3Myw5ICsxNjczLDkgQEAgc3RhdGljIHZvaWQgaTk2NV9yZWFkX2x1 dHMoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkJcmV0dXJuOwo+ICAK PiAgCWlmIChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV84QklUKQo+ IC0JCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gaTl4eF9yZWFkX2x1dF84KGNydGNfc3Rh dGUpOwo+ICsJCWNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRj X3N0YXRlKTsKPiAgCWVsc2UKPiAtCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGk5NjVf cmVhZF9sdXRfMTBwNihjcnRjX3N0YXRlKTsKPiArCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQg PSBpOTY1X3JlYWRfbHV0XzEwcDYoY3J0Y19zdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBzdHJ1 Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKgo+IEBAIC0xNzE1LDcgKzE3MTUsNyBAQCBjaHZfcmVhZF9j Z21fbHV0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICBzdGF0 aWMgdm9pZCBjaHZfcmVhZF9sdXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KQo+ICB7Cj4gIAlpZiAoY3J0Y19zdGF0ZS0+Y2dtX21vZGUgJiBDR01fUElQRV9NT0RFX0dBTU1B KQo+IC0JCWNydGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gY2h2X3JlYWRfY2dtX2x1dChjcnRj X3N0YXRlKTsKPiArCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgPSBjaHZfcmVhZF9jZ21fbHV0 KGNydGNfc3RhdGUpOwo+ICAJZWxzZQo+ICAJCWk5NjVfcmVhZF9sdXRzKGNydGNfc3RhdGUpOwo+ ICB9Cj4gQEAgLTE3NjIsOSArMTc2Miw5IEBAIHN0YXRpYyB2b2lkIGlsa19yZWFkX2x1dHMoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWlm IChjcnRjX3N0YXRlLT5nYW1tYV9tb2RlID09IEdBTU1BX01PREVfTU9ERV84QklUKQo+IC0JCWNy dGNfc3RhdGUtPmJhc2UuZ2FtbWFfbHV0ID0gaTl4eF9yZWFkX2x1dF84KGNydGNfc3RhdGUpOwo+ ICsJCWNydGNfc3RhdGUtPmh3LmdhbW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0YXRl KTsKPiAgCWVsc2UKPiAtCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGlsa19yZWFkX2x1 dF8xMChjcnRjX3N0YXRlKTsKPiArCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgPSBpbGtfcmVh ZF9sdXRfMTAoY3J0Y19zdGF0ZSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgZHJtX3Byb3Bl cnR5X2Jsb2IgKgo+IEBAIC0xODExLDkgKzE4MTEsOSBAQCBzdGF0aWMgdm9pZCBnbGtfcmVhZF9s dXRzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJCXJldHVybjsKPiAg Cj4gIAlpZiAoY3J0Y19zdGF0ZS0+Z2FtbWFfbW9kZSA9PSBHQU1NQV9NT0RFX01PREVfOEJJVCkK PiAtCQljcnRjX3N0YXRlLT5iYXNlLmdhbW1hX2x1dCA9IGk5eHhfcmVhZF9sdXRfOChjcnRjX3N0 YXRlKTsKPiArCQljcnRjX3N0YXRlLT5ody5nYW1tYV9sdXQgPSBpOXh4X3JlYWRfbHV0XzgoY3J0 Y19zdGF0ZSk7Cj4gIAllbHNlCj4gLQkJY3J0Y19zdGF0ZS0+YmFzZS5nYW1tYV9sdXQgPSBnbGtf cmVhZF9sdXRfMTAoY3J0Y19zdGF0ZSwgUEFMX1BSRUNfSU5ERVhfVkFMVUUoMCkpOwo+ICsJCWNy dGNfc3RhdGUtPmh3LmdhbW1hX2x1dCA9IGdsa19yZWFkX2x1dF8xMChjcnRjX3N0YXRlLCBQQUxf UFJFQ19JTkRFWF9WQUxVRSgwKSk7Cj4gIH0KPiAgCj4gIHZvaWQgaW50ZWxfY29sb3JfaW5pdChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9jcnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfY3J0LmMKPiBpbmRleCBmZjYxMjZlYTc5M2MuLjM5OWFiYzNkNTIxZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jcnQuYwo+IEBAIC0xMzIsOSArMTMyLDkgQEAg c3RhdGljIHZvaWQgaW50ZWxfY3J0X2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIHsKPiAgCXBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMgfD0gQklUKElOVEVMX09V VFBVVF9BTkFMT0cpOwo+ICAKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxh Z3MgfD0gaW50ZWxfY3J0X2dldF9mbGFncyhlbmNvZGVyKTsKPiArCXBpcGVfY29uZmlnLT5ody5h ZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGludGVsX2NydF9nZXRfZmxhZ3MoZW5jb2Rlcik7Cj4gIAo+ IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gcGlwZV9jb25m aWctPnBvcnRfY2xvY2s7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Ns b2NrID0gcGlwZV9jb25maWctPnBvcnRfY2xvY2s7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGhz d19jcnRfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiBAQCAtMTQ0 LDEzICsxNDQsMTMgQEAgc3RhdGljIHZvaWQgaHN3X2NydF9nZXRfY29uZmlnKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCWludGVsX2RkaV9nZXRfY29uZmlnKGVuY29kZXIs IHBpcGVfY29uZmlnKTsKPiAgCj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZs YWdzICY9IH4oRFJNX01PREVfRkxBR19QSFNZTkMgfAo+ICsJcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGUuZmxhZ3MgJj0gfihEUk1fTU9ERV9GTEFHX1BIU1lOQyB8Cj4gIAkJCQkJICAgICAg RFJNX01PREVfRkxBR19OSFNZTkMgfAo+ICAJCQkJCSAgICAgIERSTV9NT0RFX0ZMQUdfUFZTWU5D IHwKPiAgCQkJCQkgICAgICBEUk1fTU9ERV9GTEFHX05WU1lOQyk7Cj4gLQlwaXBlX2NvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGludGVsX2NydF9nZXRfZmxhZ3MoZW5jb2Rlcik7 Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBpbnRlbF9jcnRfZ2V0 X2ZsYWdzKGVuY29kZXIpOwo+ICAKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y19jbG9jayA9IGxwdF9nZXRfaWNsa2lwKGRldl9wcml2KTsKPiArCXBpcGVfY29uZmlnLT5o dy5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBscHRfZ2V0X2ljbGtpcChkZXZfcHJpdik7Cj4g IH0KPiAgCj4gIC8qIE5vdGU6IFRoZSBjYWxsZXIgaXMgcmVxdWlyZWQgdG8gZmlsdGVyIG91dCBk cG1zIG1vZGVzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlCj4gQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9jcnRfc2V0X2RwbXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXIt PmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnQgKmNydCA9IGludGVsX2VuY29kZXJfdG9f Y3J0KGVuY29kZXIpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGNydGNfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRl LT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJdTMyIGFkcGE7Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNSkKPiBAQCAtMzU4LDcgKzM1OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0 X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJICAg IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJJnBpcGVfY29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGU7Cj4gKwkJJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAK PiAgCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJMU0NBTikKPiAg CQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMzczLDcgKzM3Myw3IEBAIHN0YXRpYyBpbnQgcGNoX2Ny dF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCSAg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZTsKPiArCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAo+ ICAJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19EQkxTQ0FOKQo+ICAJ CXJldHVybiAtRUlOVkFMOwo+IEBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIGludCBoc3dfY3J0 X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICB7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2Uu ZGV2KTsKPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkm cGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkmcGlwZV9jb25maWctPmh3LmFk anVzdGVkX21vZGU7Cj4gIAo+ICAJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVf RkxBR19EQkxTQ0FOKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kZGkuYwo+IGluZGV4IDRjODE0NDllYzE0NC4uYzg2MzliOTJhNmRhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gQEAgLTE1Mjgs NyArMTUyOCw3IEBAIHN0YXRpYyB2b2lkIGRkaV9kb3RjbG9ja19nZXQoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICAJaWYgKHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBs aWVyKQo+ICAJCWRvdGNsb2NrIC89IHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVyOwo+ICAK PiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IGRvdGNsb2Nr Owo+ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IGRvdGNsb2Nr Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpY2xfZGRpX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiBAQCAtMTg2MCw5ICsxODYwLDkgQEAgaW50ZWxfZGRpX3RyYW5z Y29kZXJfZnVuY19yZWdfdmFsX2dldChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiAgCQlCVUcoKTsKPiAgCX0KPiAgCj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5h ZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19QVlNZTkMpCj4gKwlpZiAoY3J0Y19z dGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUFZTWU5DKQo+ICAJ CXRlbXAgfD0gVFJBTlNfRERJX1BWU1lOQzsKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFkanVz dGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX1BIU1lOQykKPiArCWlmIChjcnRjX3N0YXRl LT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19QSFNZTkMpCj4gIAkJdGVt cCB8PSBUUkFOU19ERElfUEhTWU5DOwo+ICAKPiAgCWlmIChjcHVfdHJhbnNjb2RlciA9PSBUUkFO U0NPREVSX0VEUCkgewo+IEBAIC0zMzcxLDcgKzMzNzEsNyBAQCBzdGF0aWMgdm9pZCB0Z2xfZGMz Y29fZXhpdGxpbmVfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIHsKPiAgCXUzMiBleGl0X3NjYW5saW5lczsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gLQl1MzIgY3J0 Y192ZGlzcGxheSA9IGNzdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7Cj4g Kwl1MzIgY3J0Y192ZGlzcGxheSA9IGNzdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNw bGF5Owo+ICAKPiAgCWNzdGF0ZS0+ZGMzY29fZXhpdGxpbmUgPSAwOwo+ICAKPiBAQCAtMzM4Myw3 ICszMzgzLDcgQEAgc3RhdGljIHZvaWQgdGdsX2RjM2NvX2V4aXRsaW5lX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJICAgIGVuY29kZXItPnBvcnQgIT0g UE9SVF9BKQo+ICAJCXJldHVybjsKPiAgCj4gLQlpZiAoIWNzdGF0ZS0+aGFzX3BzcjIgfHwgIWNz dGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwlpZiAoIWNzdGF0ZS0+aGFzX3BzcjIgfHwgIWNzdGF0ZS0+ aHcuYWN0aXZlKQo+ICAJCXJldHVybjsKPiAgCj4gIAkvKgo+IEBAIC0zMzkxLDcgKzMzOTEsNyBA QCBzdGF0aWMgdm9pZCB0Z2xfZGMzY29fZXhpdGxpbmVfY29tcHV0ZV9jb25maWcoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkgKiBQU1IyIHRyYW5zY29kZXIgRWFybHkgRXhpdCBz Y2FubGluZXMgPSBST1VORFVQKDIwMCAvIGxpbmUgdGltZSkgKyAxCj4gIAkgKi8KPiAgCWV4aXRf c2NhbmxpbmVzID0KPiAtCQlpbnRlbF91c2Vjc190b19zY2FubGluZXMoJmNzdGF0ZS0+YmFzZS5h ZGp1c3RlZF9tb2RlLCAyMDApICsgMTsKPiArCQlpbnRlbF91c2Vjc190b19zY2FubGluZXMoJmNz dGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZSwgMjAwKSArIDE7Cj4gIAo+ICAJaWYgKFdBUk5fT04oZXhp dF9zY2FubGluZXMgPiBjcnRjX3ZkaXNwbGF5KSkKPiAgCQlyZXR1cm47Cj4gQEAgLTQwNzYsNyAr NDA3Niw3IEBAIGludGVsX2RkaV91cGRhdGVfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSwKPiAgCVdBUk5fT04oY3J0YyAmJiBjcnRjLT5hY3RpdmUpOwo+ICAKPiAgCWlu dGVsX3RjX3BvcnRfZ2V0X2xpbmsoZW5jX3RvX2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKSwgcmVx dWlyZWRfbGFuZXMpOwo+IC0JaWYgKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0ZS0+YmFzZS5hY3Rp dmUpCj4gKwlpZiAoY3J0Y19zdGF0ZSAmJiBjcnRjX3N0YXRlLT5ody5hY3RpdmUpCj4gIAkJaW50 ZWxfdXBkYXRlX2FjdGl2ZV9kcGxsKHN0YXRlLCBjcnRjLCBlbmNvZGVyKTsKPiAgfQo+ICAKPiBA QCAtNDIyNCw3ICs0MjI0LDcgQEAgdm9pZCBpbnRlbF9kZGlfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCWVsc2UKPiAgCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFH X05WU1lOQzsKPiAgCj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9 IGZsYWdzOwo+ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7 Cj4gIAo+ICAJc3dpdGNoICh0ZW1wICYgVFJBTlNfRERJX0JQQ19NQVNLKSB7Cj4gIAljYXNlIFRS QU5TX0RESV9CUENfNjoKPiBAQCAtNDUwNyw3ICs0NTA3LDcgQEAgc3RhdGljIGludCBpbnRlbF9o ZG1pX3Jlc2V0X2xpbmsoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJV0FS Tl9PTighaW50ZWxfY3J0Y19oYXNfdHlwZShjcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfSERNSSkp Owo+ICAKPiAtCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwlpZiAoIWNydGNfc3Rh dGUtPmh3LmFjdGl2ZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAlpZiAoIWNydGNfc3RhdGUtPmhk bWlfaGlnaF90bWRzX2Nsb2NrX3JhdGlvICYmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBhZGI3MGQ3NmE2MWMuLjMxMDZhYWY1NWYxNyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4g QEAgLTEwMTMsNyArMTAxMyw3IEBAIGJvb2wgaW50ZWxfY3J0Y19hY3RpdmUoc3RydWN0IGludGVs X2NydGMgKmNydGMpCj4gIAkgKiBmb3IgYXRvbWljLgo+ICAJICovCj4gIAlyZXR1cm4gY3J0Yy0+ YWN0aXZlICYmIGNydGMtPmJhc2UucHJpbWFyeS0+c3RhdGUtPmZiICYmCj4gLQkJY3J0Yy0+Y29u ZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiArCQljcnRjLT5jb25maWctPmh3 LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiAgfQo+ICAKPiAgZW51bSB0cmFuc2NvZGVyIGlu dGVsX3BpcGVfdG9fY3B1X3RyYW5zY29kZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+IEBAIC00OTUxLDcgKzQ5NTEsNyBAQCBzdGF0aWMgdm9pZCBscHRfcHJvZ3JhbV9pY2xr aXAoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAgCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj LT5iYXNlLmRldik7Cj4gLQlpbnQgY2xvY2sgPSBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21v ZGUuY3J0Y19jbG9jazsKPiArCWludCBjbG9jayA9IGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21v ZGUuY3J0Y19jbG9jazsKPiAgCXUzMiBkaXZzZWwsIHBoYXNlaW5jLCBhdXhkaXYsIHBoYXNlZGly ID0gMDsKPiAgCXUzMiB0ZW1wOwo+ICAKPiBAQCAtNTIyNCw3ICs1MjI0LDcgQEAgc3RhdGljIHZv aWQgaXJvbmxha2VfcGNoX2VuYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSwKPiAgCWlmIChIQVNfUENIX0NQVChkZXZfcHJpdikgJiYKPiAgCSAgICBpbnRlbF9jcnRj X2hhc19kcF9lbmNvZGVyKGNydGNfc3RhdGUpKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwo+ICsJCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCQl1MzIgYnBj ID0gKEk5MTVfUkVBRChQSVBFQ09ORihwaXBlKSkgJiBQSVBFQ09ORl9CUENfTUFTSykgPj4gNTsK PiAgCQlpOTE1X3JlZ190IHJlZyA9IFRSQU5TX0RQX0NUTChwaXBlKTsKPiAgCQllbnVtIHBvcnQg cG9ydDsKPiBAQCAtNTM3NCw3ICs1Mzc0LDcgQEAgc2tsX3VwZGF0ZV9zY2FsZXIoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsIGJvb2wgZm9yY2VfZGV0YWNoLAo+ICAJCXRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfY3J0Yy0+YmFzZS5kZXYpOwo+ICAJY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZjcnRjX3N0YXRl LT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7 Cj4gIAo+ICAJLyoKPiAgCSAqIFNyYyBjb29yZGluYXRlcyBhcmUgYWxyZWFkeSByb3RhdGVkIGJ5 IDI3MCBkZWdyZWVzIGZvcgo+IEBAIC01MzkwLDcgKzUzOTAsNyBAQCBza2xfdXBkYXRlX3NjYWxl cihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgYm9vbCBmb3JjZV9kZXRhY2gs Cj4gIAkgKiBPbmNlIE5WMTIgaXMgZW5hYmxlZCwgaGFuZGxlIGl0IGhlcmUgd2hpbGUgYWxsb2Nh dGluZyBzY2FsZXIKPiAgCSAqIGZvciBOVjEyLgo+ICAJICovCj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5ICYmIGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlICYmCj4gKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5ICYmIGNydGNfc3RhdGUtPmh3LmVuYWJsZSAmJgo+ICAJICAgIG5l ZWRfc2NhbGVyICYmIGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxB Q0UpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJQaXBlL1BsYW5lIHNjYWxpbmcgbm90IHN1cHBvcnRl ZCB3aXRoIElGLUlEIG1vZGVcbiIpOwo+ICAJCXJldHVybiAtRUlOVkFMOwo+IEBAIC01NDYyLDEz ICs1NDYyLDEzIEBAIHNrbF91cGRhdGVfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLCBib29sIGZvcmNlX2RldGFjaCwKPiAgICovCj4gIGludCBza2xfdXBkYXRlX3Nj YWxlcl9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpzdGF0ZSkKPiAgewo+IC0JY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmc3RhdGUtPmJhc2UuYWRq dXN0ZWRfbW9kZTsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0gJnN0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJYm9vbCBuZWVkX3NjYWxlciA9IGZh bHNlOwo+ICAKPiAgCWlmIChzdGF0ZS0+b3V0cHV0X2Zvcm1hdCA9PSBJTlRFTF9PVVRQVVRfRk9S TUFUX1lDQkNSNDIwKQo+ICAJCW5lZWRfc2NhbGVyID0gdHJ1ZTsKPiAgCj4gLQlyZXR1cm4gc2ts X3VwZGF0ZV9zY2FsZXIoc3RhdGUsICFzdGF0ZS0+YmFzZS5hY3RpdmUsIFNLTF9DUlRDX0lOREVY LAo+ICsJcmV0dXJuIHNrbF91cGRhdGVfc2NhbGVyKHN0YXRlLCAhc3RhdGUtPmh3LmFjdGl2ZSwg U0tMX0NSVENfSU5ERVgsCj4gIAkJCQkgJnN0YXRlLT5zY2FsZXJfc3RhdGUuc2NhbGVyX2lkLAo+ ICAJCQkJIHN0YXRlLT5waXBlX3NyY193LCBzdGF0ZS0+cGlwZV9zcmNfaCwKPiAgCQkJCSBhZGp1 c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5LAo+IEBAIC01ODIwLDcgKzU4MjAsNyBAQCBzdGF0aWMg Ym9vbCBoc3dfcG9zdF91cGRhdGVfZW5hYmxlX2lwcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqb2xkX2NydGNfcwo+ICAJICogZm9yY2libHkgZW5hYmxlIElQUyBvbiB0aGUgZmlyc3Qg ZmFzdHNldC4KPiAgCSAqLwo+ICAJaWYgKG5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGlwZSAmJgo+ IC0JICAgIG9sZF9jcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUucHJpdmF0ZV9mbGFncyAm IEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCkKPiArCSAgICBvbGRfY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVEKQo+ICAJ CXJldHVybiB0cnVlOwo+ICAKPiAgCXJldHVybiAhb2xkX2NydGNfc3RhdGUtPmlwc19lbmFibGVk Owo+IEBAIC01ODY0LDcgKzU4NjQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3N0X3BsYW5lX3Vw ZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpCj4gIAo+ICAJaW50 ZWxfZnJvbnRidWZmZXJfZmxpcCh0b19pOTE1KGNydGMtPmJhc2UuZGV2KSwgcGlwZV9jb25maWct PmZiX2JpdHMpOwo+ICAKPiAtCWlmIChwaXBlX2NvbmZpZy0+dXBkYXRlX3dtX3Bvc3QgJiYgcGlw ZV9jb25maWctPmJhc2UuYWN0aXZlKQo+ICsJaWYgKHBpcGVfY29uZmlnLT51cGRhdGVfd21fcG9z dCAmJiBwaXBlX2NvbmZpZy0+aHcuYWN0aXZlKQo+ICAJCWludGVsX3VwZGF0ZV93YXRlcm1hcmtz KGNydGMpOwo+ICAKPiAgCWlmIChoc3dfcG9zdF91cGRhdGVfZW5hYmxlX2lwcyhvbGRfY3J0Y19z dGF0ZSwgcGlwZV9jb25maWcpKQo+IEBAIC01OTQyLDcgKzU5NDIsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9wcmVfcGxhbmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19z dGF0ZSwKPiAgCSAqIGV2ZW50IHdoaWNoIGlzIGFmdGVyIHRoZSB2Ymxhbmsgc3RhcnQgZXZlbnQs IHNvIHdlIG5lZWQgdG8gaGF2ZSBhCj4gIAkgKiB3YWl0LWZvci12YmxhbmsgYmV0d2VlbiBkaXNh YmxpbmcgdGhlIHBsYW5lIGFuZCB0aGUgcGlwZS4KPiAgCSAqLwo+IC0JaWYgKEhBU19HTUNIKGRl dl9wcml2KSAmJiBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYKPiArCWlmIChIQVNfR01D SChkZXZfcHJpdikgJiYgb2xkX2NydGNfc3RhdGUtPmh3LmFjdGl2ZSAmJgo+ICAJICAgIHBpcGVf Y29uZmlnLT5kaXNhYmxlX2N4c3IgJiYgaW50ZWxfc2V0X21lbW9yeV9jeHNyKGRldl9wcml2LCBm YWxzZSkpCj4gIAkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldl9wcml2LCBjcnRjLT5waXBlKTsK PiAgCj4gQEAgLTU5NTQsNyArNTk1NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3ByZV9wbGFuZV91 cGRhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ICAJICogV2FD eFNSRGlzYWJsZWRGb3JTcHJpdGVTY2FsaW5nOml2Ygo+ICAJICovCj4gIAlpZiAocGlwZV9jb25m aWctPmRpc2FibGVfbHBfd20gJiYgaWxrX2Rpc2FibGVfbHBfd20oZGV2KSAmJgo+IC0JICAgIG9s ZF9jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiArCSAgICBvbGRfY3J0Y19zdGF0ZS0+aHcuYWN0 aXZlKQo+ICAJCWludGVsX3dhaXRfZm9yX3ZibGFuayhkZXZfcHJpdiwgY3J0Yy0+cGlwZSk7Cj4g IAo+ICAJLyoKPiBAQCAtNjc1Miw3ICs2NzUyLDcgQEAgc3RhdGljIHU2NCBnZXRfY3J0Y19wb3dl cl9kb21haW5zKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJdTY0IG1h c2s7Cj4gIAllbnVtIHRyYW5zY29kZXIgdHJhbnNjb2RlciA9IGNydGNfc3RhdGUtPmNwdV90cmFu c2NvZGVyOwo+ICAKPiAtCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwlpZiAoIWNy dGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAltYXNrID0gQklUX1VM TChQT1dFUl9ET01BSU5fUElQRShwaXBlKSk7Cj4gQEAgLTcxMDksOCArNzEwOSw4IEBAIHN0YXRp YyB2b2lkIGludGVsX2Nvbm5lY3Rvcl92ZXJpZnlfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gIAkJaWYgKCFjcnRjX3N0YXRlKQo+ICAJCQlyZXR1cm47Cj4gIAo+ IC0JCUk5MTVfU1RBVEVfV0FSTighY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUsCj4gLQkJICAgICAg ImNvbm5lY3RvciBpcyBhY3RpdmUsIGJ1dCBhdHRhY2hlZCBjcnRjIGlzbid0XG4iKTsKPiArCQlJ OTE1X1NUQVRFX1dBUk4oIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSwKPiArCQkJCSJjb25uZWN0b3Ig aXMgYWN0aXZlLCBidXQgYXR0YWNoZWQgY3J0YyBpc24ndFxuIik7Cj4gIAo+ICAJCWlmICghZW5j b2RlciB8fCBlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1QpCj4gIAkJCXJldHVy bjsKPiBAQCAtNzEyMSw4ICs3MTIxLDggQEAgc3RhdGljIHZvaWQgaW50ZWxfY29ubmVjdG9yX3Zl cmlmeV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlJOTE1 X1NUQVRFX1dBUk4oY29ubl9zdGF0ZS0+Y3J0YyAhPSBlbmNvZGVyLT5iYXNlLmNydGMsCj4gIAkJ CSJhdHRhY2hlZCBlbmNvZGVyIGNydGMgZGlmZmVycyBmcm9tIGNvbm5lY3RvciBjcnRjXG4iKTsK PiAgCX0gZWxzZSB7Cj4gLQkJSTkxNV9TVEFURV9XQVJOKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0 ZS0+YmFzZS5hY3RpdmUsCj4gLQkJCSJhdHRhY2hlZCBjcnRjIGlzIGFjdGl2ZSwgYnV0IGNvbm5l Y3RvciBpc24ndFxuIik7Cj4gKwkJSTkxNV9TVEFURV9XQVJOKGNydGNfc3RhdGUgJiYgY3J0Y19z dGF0ZS0+aHcuYWN0aXZlLAo+ICsJCQkJImF0dGFjaGVkIGNydGMgaXMgYWN0aXZlLCBidXQgY29u bmVjdG9yIGlzbid0XG4iKTsKPiAgCQlJOTE1X1NUQVRFX1dBUk4oIWNydGNfc3RhdGUgJiYgY29u bl9zdGF0ZS0+YmVzdF9lbmNvZGVyLAo+ICAJCQkiYmVzdCBlbmNvZGVyIHNldCB3aXRob3V0IGNy dGMhXG4iKTsKPiAgCX0KPiBAQCAtNzEzMCw3ICs3MTMwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf Y29ubmVjdG9yX3ZlcmlmeV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCj4gIHN0YXRpYyBpbnQgcGlwZV9yZXF1aXJlZF9mZGlfbGFuZXMoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmVu YWJsZSAmJiBjcnRjX3N0YXRlLT5oYXNfcGNoX2VuY29kZXIpCj4gKwlpZiAoY3J0Y19zdGF0ZS0+ aHcuZW5hYmxlICYmIGNydGNfc3RhdGUtPmhhc19wY2hfZW5jb2RlcikKPiAgCQlyZXR1cm4gY3J0 Y19zdGF0ZS0+ZmRpX2xhbmVzOwo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC03MjEzLDcgKzcyMTMs NyBAQCBzdGF0aWMgaW50IGlyb25sYWtlX2ZkaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YywKPiAgCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq cGlwZV9jb25maWcpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRj LT5iYXNlLmRldjsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZTsKPiAgCWludCBsYW5lLCBsaW5rX2J3LCBmZGlfZG90Y2xvY2ssIHJldDsKPiAgCWJv b2wgbmVlZHNfcmVjb21wdXRlID0gZmFsc2U7Cj4gIAo+IEBAIC03MzMwLDcgKzczMzAsNyBAQCBz dGF0aWMgdTMyIGlsa19waXBlX3BpeGVsX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gIAl1MzIgcGl4ZWxfcmF0ZTsKPiAgCj4gLQlwaXhlbF9y YXRlID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICsJcGl4 ZWxfcmF0ZSA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gIAo+ ICAJLyoKPiAgCSAqIFdlIG9ubHkgdXNlIElGLUlEIGludGVybGFjaW5nLiBJZiB3ZSBldmVyIHVz ZQo+IEBAIC03MzY4LDcgKzczNjgsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2NvbXB1dGVf cGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCWlmIChI QVNfR01DSChkZXZfcHJpdikpCj4gIAkJLyogRklYTUUgY2FsY3VsYXRlIHByb3BlciBwaXBlIHBp eGVsIHJhdGUgZm9yIEdNQ0ggcGZpdCAqLwo+ICAJCWNydGNfc3RhdGUtPnBpeGVsX3JhdGUgPQo+ IC0JCQljcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKPiArCQkJY3J0 Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICAJZWxzZQo+ICAJCWNydGNf c3RhdGUtPnBpeGVsX3JhdGUgPQo+ICAJCQlpbGtfcGlwZV9waXhlbF9yYXRlKGNydGNfc3RhdGUp Owo+IEBAIC03Mzc4LDcgKzczNzgsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCQkgICAgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUg PSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAlpbnQgY2xvY2tfbGltaXQgPSBk ZXZfcHJpdi0+bWF4X2RvdGNsa19mcmVxOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp IDwgNCkgewo+IEBAIC03NDA0LDcgKzc0MDQsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfY29t cHV0ZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAo+ICAJaWYgKChwaXBlX2Nv bmZpZy0+b3V0cHV0X2Zvcm1hdCA9PSBJTlRFTF9PVVRQVVRfRk9STUFUX1lDQkNSNDIwIHx8Cj4g IAkgICAgIHBpcGVfY29uZmlnLT5vdXRwdXRfZm9ybWF0ID09IElOVEVMX09VVFBVVF9GT1JNQVRf WUNCQ1I0NDQpICYmCj4gLQkgICAgIHBpcGVfY29uZmlnLT5iYXNlLmN0bSkgewo+ICsJICAgICBw aXBlX2NvbmZpZy0+aHcuY3RtKSB7Cj4gIAkJLyoKPiAgCQkgKiBUaGVyZSBpcyBvbmx5IG9uZSBw aXBlIENTQyB1bml0IHBlciBwaXBlLCBhbmQgd2UgbmVlZCB0aGF0Cj4gIAkJICogZm9yIG91dHB1 dCBjb252ZXJzaW9uIGZyb20gUkdCLT5ZQ0JDUi4gU28gaWYgQ1RNIGlzIGFscmVhZHkKPiBAQCAt ODEwMiw3ICs4MTAyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJZW51bSBw aXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVy ID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7 Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRj X3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJdTMyIGNydGNfdnRvdGFsLCBjcnRjX3ZibGFu a19lbmQ7Cj4gIAlpbnQgdnN5bmNzaGlmdCA9IDA7Cj4gIAo+IEBAIC04MTk2LDM5ICs4MTk2LDM5 IEBAIHN0YXRpYyB2b2lkIGludGVsX2dldF9waXBlX3RpbWluZ3Moc3RydWN0IGludGVsX2NydGMg KmNydGMsCj4gIAl1MzIgdG1wOwo+ICAKPiAgCXRtcCA9IEk5MTVfUkVBRChIVE9UQUwoY3B1X3Ry YW5zY29kZXIpKTsKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oZGlz cGxheSA9ICh0bXAgJiAweGZmZmYpICsgMTsKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y19odG90YWwgPSAoKHRtcCA+PiAxNikgJiAweGZmZmYpICsgMTsKPiArCXBpcGVf Y29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaGRpc3BsYXkgPSAodG1wICYgMHhmZmZmKSAr IDE7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCA9ICgodG1w ID4+IDE2KSAmIDB4ZmZmZikgKyAxOwo+ICAKPiAgCWlmICghdHJhbnNjb2Rlcl9pc19kc2koY3B1 X3RyYW5zY29kZXIpKSB7Cj4gIAkJdG1wID0gSTkxNV9SRUFEKEhCTEFOSyhjcHVfdHJhbnNjb2Rl cikpOwo+IC0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oYmxhbmtfc3Rh cnQgPQo+ICsJCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaGJsYW5rX3N0YXJ0 ID0KPiAgCQkJCQkJCSh0bXAgJiAweGZmZmYpICsgMTsKPiAtCQlwaXBlX2NvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlLmNydGNfaGJsYW5rX2VuZCA9Cj4gKwkJcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGUuY3J0Y19oYmxhbmtfZW5kID0KPiAgCQkJCQkJKCh0bXAgPj4gMTYpICYgMHhmZmZm KSArIDE7Cj4gIAl9Cj4gIAl0bXAgPSBJOTE1X1JFQUQoSFNZTkMoY3B1X3RyYW5zY29kZXIpKTsK PiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19zdGFydCA9ICh0 bXAgJiAweGZmZmYpICsgMTsKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0 Y19oc3luY19lbmQgPSAoKHRtcCA+PiAxNikgJiAweGZmZmYpICsgMTsKPiArCXBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHN5bmNfc3RhcnQgPSAodG1wICYgMHhmZmZmKSArIDE7 Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX2VuZCA9ICgodG1w ID4+IDE2KSAmIDB4ZmZmZikgKyAxOwo+ICAKPiAgCXRtcCA9IEk5MTVfUkVBRChWVE9UQUwoY3B1 X3RyYW5zY29kZXIpKTsKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y192 ZGlzcGxheSA9ICh0bXAgJiAweGZmZmYpICsgMTsKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGUuY3J0Y192dG90YWwgPSAoKHRtcCA+PiAxNikgJiAweGZmZmYpICsgMTsKPiArCXBp cGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXkgPSAodG1wICYgMHhmZmZm KSArIDE7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3Z0b3RhbCA9ICgo dG1wID4+IDE2KSAmIDB4ZmZmZikgKyAxOwo+ICAKPiAgCWlmICghdHJhbnNjb2Rlcl9pc19kc2ko Y3B1X3RyYW5zY29kZXIpKSB7Cj4gIAkJdG1wID0gSTkxNV9SRUFEKFZCTEFOSyhjcHVfdHJhbnNj b2RlcikpOwo+IC0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y192Ymxhbmtf c3RhcnQgPQo+ICsJCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX3N0 YXJ0ID0KPiAgCQkJCQkJCSh0bXAgJiAweGZmZmYpICsgMTsKPiAtCQlwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX2VuZCA9Cj4gKwkJcGlwZV9jb25maWctPmh3LmFk anVzdGVkX21vZGUuY3J0Y192YmxhbmtfZW5kID0KPiAgCQkJCQkJKCh0bXAgPj4gMTYpICYgMHhm ZmZmKSArIDE7Cj4gIAl9Cj4gIAl0bXAgPSBJOTE1X1JFQUQoVlNZTkMoY3B1X3RyYW5zY29kZXIp KTsKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y192c3luY19zdGFydCA9 ICh0bXAgJiAweGZmZmYpICsgMTsKPiAtCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y192c3luY19lbmQgPSAoKHRtcCA+PiAxNikgJiAweGZmZmYpICsgMTsKPiArCXBpcGVfY29u ZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfc3RhcnQgPSAodG1wICYgMHhmZmZmKSAr IDE7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZzeW5jX2VuZCA9ICgo dG1wID4+IDE2KSAmIDB4ZmZmZikgKyAxOwo+ICAKPiAgCWlmIChpbnRlbF9waXBlX2lzX2ludGVy bGFjZWQocGlwZV9jb25maWcpKSB7Cj4gLQkJcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9k ZS5mbGFncyB8PSBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRTsKPiAtCQlwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfdnRvdGFsICs9IDE7Cj4gLQkJcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZS5jcnRjX3ZibGFua19lbmQgKz0gMTsKPiArCQlwaXBlX2NvbmZpZy0+aHcu YWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRTsKPiArCQlwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3Z0b3RhbCArPSAxOwo+ICsJCXBpcGVfY29u ZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfdmJsYW5rX2VuZCArPSAxOwo+ICAJfQo+ICB9Cj4g IAo+IEBAIC04MjQzLDI3ICs4MjQzLDI3IEBAIHN0YXRpYyB2b2lkIGludGVsX2dldF9waXBlX3Ny Y19zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJcGlwZV9jb25maWctPnBpcGVfc3Jj X2ggPSAodG1wICYgMHhmZmZmKSArIDE7Cj4gIAlwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyA9ICgo dG1wID4+IDE2KSAmIDB4ZmZmZikgKyAxOwo+ICAKPiAtCXBpcGVfY29uZmlnLT5iYXNlLm1vZGUu dmRpc3BsYXkgPSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaDsKPiAtCXBpcGVfY29uZmlnLT5iYXNl Lm1vZGUuaGRpc3BsYXkgPSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdzsKPiArCXBpcGVfY29uZmln LT5ody5tb2RlLnZkaXNwbGF5ID0gcGlwZV9jb25maWctPnBpcGVfc3JjX2g7Cj4gKwlwaXBlX2Nv bmZpZy0+aHcubW9kZS5oZGlzcGxheSA9IHBpcGVfY29uZmlnLT5waXBlX3NyY193Owo+ICB9Cj4g IAo+ICB2b2lkIGludGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZyhzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSwKPiAgCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp Cj4gIHsKPiAtCW1vZGUtPmhkaXNwbGF5ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9k ZS5jcnRjX2hkaXNwbGF5Owo+IC0JbW9kZS0+aHRvdGFsID0gcGlwZV9jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZS5jcnRjX2h0b3RhbDsKPiAtCW1vZGUtPmhzeW5jX3N0YXJ0ID0gcGlwZV9jb25m aWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX3N0YXJ0Owo+IC0JbW9kZS0+aHN5bmNf ZW5kID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2hzeW5jX2VuZDsKPiAr CW1vZGUtPmhkaXNwbGF5ID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19oZGlz cGxheTsKPiArCW1vZGUtPmh0b3RhbCA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNy dGNfaHRvdGFsOwo+ICsJbW9kZS0+aHN5bmNfc3RhcnQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2hzeW5jX3N0YXJ0Owo+ICsJbW9kZS0+aHN5bmNfZW5kID0gcGlwZV9jb25m aWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19oc3luY19lbmQ7Cj4gIAo+IC0JbW9kZS0+dmRpc3Bs YXkgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7Cj4gLQlt b2RlLT52dG90YWwgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdnRvdGFs Owo+IC0JbW9kZS0+dnN5bmNfc3RhcnQgPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2Rl LmNydGNfdnN5bmNfc3RhcnQ7Cj4gLQltb2RlLT52c3luY19lbmQgPSBwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfZW5kOwo+ICsJbW9kZS0+dmRpc3BsYXkgPSBwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Owo+ICsJbW9kZS0+dnRvdGFs ID0gcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y192dG90YWw7Cj4gKwltb2RlLT52 c3luY19zdGFydCA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfdnN5bmNfc3Rh cnQ7Cj4gKwltb2RlLT52c3luY19lbmQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZzeW5jX2VuZDsKPiAgCj4gLQltb2RlLT5mbGFncyA9IHBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGUuZmxhZ3M7Cj4gKwltb2RlLT5mbGFncyA9IHBpcGVfY29uZmlnLT5ody5hZGp1 c3RlZF9tb2RlLmZsYWdzOwo+ICAJbW9kZS0+dHlwZSA9IERSTV9NT0RFX1RZUEVfRFJJVkVSOwo+ ICAKPiAtCW1vZGUtPmNsb2NrID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRj X2Nsb2NrOwo+ICsJbW9kZS0+Y2xvY2sgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5j cnRjX2Nsb2NrOwo+ICAKPiAgCW1vZGUtPmhzeW5jID0gZHJtX21vZGVfaHN5bmMobW9kZSk7Cj4g IAltb2RlLT52cmVmcmVzaCA9IGRybV9tb2RlX3ZyZWZyZXNoKG1vZGUpOwo+IEBAIC04MzA5LDcg KzgzMDksNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29uZihjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JaWYgKGNydGNf c3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNF KSB7Cj4gKwlpZiAoY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RF X0ZMQUdfSU5URVJMQUNFKSB7Cj4gIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0IHx8Cj4g IAkJICAgIGludGVsX2NydGNfaGFzX3R5cGUoY3J0Y19zdGF0ZSwgSU5URUxfT1VUUFVUX1NEVk8p KQo+ICAJCQlwaXBlY29uZiB8PSBQSVBFQ09ORl9JTlRFUkxBQ0VfV19GSUVMRF9JTkRJQ0FUSU9O Owo+IEBAIC04ODQxLDcgKzg4NDEsNyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dldF9waXBlX2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCSAqIGJ1dCBpbiBjYXNlIHRoZSBwaXBlIGlz IGVuYWJsZWQgdy9vIGFueSBwb3J0cyB3ZSBuZWVkIGEgc2FuZQo+ICAJICogZGVmYXVsdC4KPiAg CSAqLwo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0KPiAr CXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPQo+ICAJCXBpcGVfY29u ZmlnLT5wb3J0X2Nsb2NrIC8gcGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXI7Cj4gIAo+ICAJ cmV0ID0gdHJ1ZTsKPiBAQCAtOTM4NCw3ICs5Mzg0LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2Vf c2V0X3BpcGVjb25mKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ ICAJaWYgKGNydGNfc3RhdGUtPmRpdGhlcikKPiAgCQl2YWwgfD0gKFBJUEVDT05GX0RJVEhFUl9F TiB8IFBJUEVDT05GX0RJVEhFUl9UWVBFX1NQKTsKPiAgCj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFz ZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4gKwlpZiAo Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJM QUNFKQo+ICAJCXZhbCB8PSBQSVBFQ09ORl9JTlRFUkxBQ0VEX0lMSzsKPiAgCWVsc2UKPiAgCQl2 YWwgfD0gUElQRUNPTkZfUFJPR1JFU1NJVkU7Cj4gQEAgLTk0MTgsNyArOTQxOCw3IEBAIHN0YXRp YyB2b2lkIGhhc3dlbGxfc2V0X3BpcGVjb25mKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpICYmIGNydGNfc3RhdGUt PmRpdGhlcikKPiAgCQl2YWwgfD0gKFBJUEVDT05GX0RJVEhFUl9FTiB8IFBJUEVDT05GX0RJVEhF Ul9UWVBFX1NQKTsKPiAgCj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmZs YWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4gKwlpZiAoY3J0Y19zdGF0ZS0+aHcuYWRq dXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQo+ICAJCXZhbCB8PSBQ SVBFQ09ORl9JTlRFUkxBQ0VEX0lMSzsKPiAgCWVsc2UKPiAgCQl2YWwgfD0gUElQRUNPTkZfUFJP R1JFU1NJVkU7Cj4gQEAgLTExNDI3LDcgKzExNDI3LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2Vf cGNoX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCSAqIHdlIG1heSBuZWVk IHNvbWUgaWRlYSBmb3IgdGhlIGRvdGNsb2NrIGFueXdheS4KPiAgCSAqIENhbGN1bGF0ZSBvbmUg YmFzZWQgb24gdGhlIEZESSBjb25maWd1cmF0aW9uLgo+ICAJICovCj4gLQlwaXBlX2NvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPQo+ICsJcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGUuY3J0Y19jbG9jayA9Cj4gIAkJaW50ZWxfZG90Y2xvY2tfY2FsY3VsYXRlKGludGVs X2ZkaV9saW5rX2ZyZXEoZGV2X3ByaXYsIHBpcGVfY29uZmlnKSwKPiAgCQkJCQkgJnBpcGVfY29u ZmlnLT5mZGlfbV9uKTsKPiAgfQo+IEBAIC0xMTUzMiw4ICsxMTUzMiw4IEBAIGludCBpbnRlbF9w bGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4gIAlib29sIG1vZGVfY2hhbmdl ZCA9IG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSk7Cj4gLQlib29sIHdhc19jcnRjX2VuYWJsZWQg PSBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmU7Cj4gLQlib29sIGlzX2NydGNfZW5hYmxlZCA9 IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlOwo+ICsJYm9vbCB3YXNfY3J0Y19lbmFibGVkID0gb2xk X2NydGNfc3RhdGUtPmh3LmFjdGl2ZTsKPiArCWJvb2wgaXNfY3J0Y19lbmFibGVkID0gY3J0Y19z dGF0ZS0+aHcuYWN0aXZlOwo+ICAJYm9vbCB0dXJuX29mZiwgdHVybl9vbiwgdmlzaWJsZSwgd2Fz X3Zpc2libGU7Cj4gIAlpbnQgcmV0Owo+ICAKPiBAQCAtMTE3OTEsMTAgKzExNzkxLDEwIEBAIHN0 YXRpYyBpbnQgaW50ZWxfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUsCj4gIAlpbnQgcmV0Owo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NSAmJiAhSVNfRzRYKGRldl9wcml2KSAmJgo+IC0JICAgIG1vZGVfY2hhbmdlZCAmJiAhY3J0Y19z dGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwkgICAgbW9kZV9jaGFuZ2VkICYmICFjcnRjX3N0YXRlLT5o dy5hY3RpdmUpCj4gIAkJY3J0Y19zdGF0ZS0+dXBkYXRlX3dtX3Bvc3QgPSB0cnVlOwo+ICAKPiAt CWlmIChtb2RlX2NoYW5nZWQgJiYgY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUgJiYKPiArCWlmICht b2RlX2NoYW5nZWQgJiYgY3J0Y19zdGF0ZS0+aHcuZW5hYmxlICYmCj4gIAkgICAgZGV2X3ByaXYt PmRpc3BsYXkuY3J0Y19jb21wdXRlX2Nsb2NrICYmCj4gIAkgICAgIVdBUk5fT04oY3J0Y19zdGF0 ZS0+c2hhcmVkX2RwbGwpKSB7Cj4gIAkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19jb21w dXRlX2Nsb2NrKGNydGMsIGNydGNfc3RhdGUpOwo+IEBAIC0xMjA5MCwxNCArMTIwOTAsMTQgQEAg c3RhdGljIHZvaWQgaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAo+ICAJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWQ6JXNd IGVuYWJsZTogJXMgJXNcbiIsCj4gIAkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkLCBjcnRjLT5i YXNlLm5hbWUsCj4gLQkJICAgICAgeWVzbm8ocGlwZV9jb25maWctPmJhc2UuZW5hYmxlKSwgY29u dGV4dCk7Cj4gKwkJICAgICAgeWVzbm8ocGlwZV9jb25maWctPmh3LmVuYWJsZSksIGNvbnRleHQp Owo+ICAKPiAtCWlmICghcGlwZV9jb25maWctPmJhc2UuZW5hYmxlKQo+ICsJaWYgKCFwaXBlX2Nv bmZpZy0+aHcuZW5hYmxlKQo+ICAJCWdvdG8gZHVtcF9wbGFuZXM7Cj4gIAo+ICAJc25wcmludGZf b3V0cHV0X3R5cGVzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIHBpcGVfY29uZmlnLT5vdXRwdXRfdHlwZXMp Owo+ICAJRFJNX0RFQlVHX0tNUygiYWN0aXZlOiAlcywgb3V0cHV0X3R5cGVzOiAlcyAoMHgleCks IG91dHB1dCBmb3JtYXQ6ICVzXG4iLAo+IC0JCSAgICAgIHllc25vKHBpcGVfY29uZmlnLT5iYXNl LmFjdGl2ZSksCj4gKwkJICAgICAgeWVzbm8ocGlwZV9jb25maWctPmh3LmFjdGl2ZSksCj4gIAkJ ICAgICAgYnVmLCBwaXBlX2NvbmZpZy0+b3V0cHV0X3R5cGVzLAo+ICAJCSAgICAgIG91dHB1dF9m b3JtYXRzKHBpcGVfY29uZmlnLT5vdXRwdXRfZm9ybWF0KSk7Cj4gIAo+IEBAIC0xMjEzNywxMCAr MTIxMzcsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9waXBlX2NvbmZpZyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAkJaW50ZWxfZHVtcF9pbmZvZnJh bWUoZGV2X3ByaXYsICZwaXBlX2NvbmZpZy0+aW5mb2ZyYW1lcy5oZG1pKTsKPiAgCj4gIAlEUk1f REVCVUdfS01TKCJyZXF1ZXN0ZWQgbW9kZTpcbiIpOwo+IC0JZHJtX21vZGVfZGVidWdfcHJpbnRt b2RlbGluZSgmcGlwZV9jb25maWctPmJhc2UubW9kZSk7Cj4gKwlkcm1fbW9kZV9kZWJ1Z19wcmlu dG1vZGVsaW5lKCZwaXBlX2NvbmZpZy0+aHcubW9kZSk7Cj4gIAlEUk1fREVCVUdfS01TKCJhZGp1 c3RlZCBtb2RlOlxuIik7Cj4gLQlkcm1fbW9kZV9kZWJ1Z19wcmludG1vZGVsaW5lKCZwaXBlX2Nv bmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlKTsKPiAtCWludGVsX2R1bXBfY3J0Y190aW1pbmdzKCZw aXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlKTsKPiArCWRybV9tb2RlX2RlYnVnX3ByaW50 bW9kZWxpbmUoJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlKTsKPiArCWludGVsX2R1bXBf Y3J0Y190aW1pbmdzKCZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZSk7Cj4gIAlEUk1fREVC VUdfS01TKCJwb3J0IGNsb2NrOiAlZCwgcGlwZSBzcmMgc2l6ZTogJWR4JWQsIHBpeGVsIHJhdGUg JWRcbiIsCj4gIAkJICAgICAgcGlwZV9jb25maWctPnBvcnRfY2xvY2ssCj4gIAkJICAgICAgcGlw ZV9jb25maWctPnBpcGVfc3JjX3csIHBpcGVfY29uZmlnLT5waXBlX3NyY19oLAo+IEBAIC0xMjMx NSwxMyArMTIzMTUsMTMgQEAgaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIAkgKiBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBwb2xh cml0eSBpcyByZXF1ZXN0ZWQsIHRyZWF0IHRoaXMgYXMgbWVhbmluZwo+ICAJICogbmVnYXRpdmUg cG9sYXJpdHkuCj4gIAkgKi8KPiAtCWlmICghKHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21v ZGUuZmxhZ3MgJgo+ICsJaWYgKCEocGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3Mg Jgo+ICAJICAgICAgKERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwgRFJNX01PREVfRkxBR19OSFNZTkMp KSkKPiAtCQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IERSTV9NT0RF X0ZMQUdfTkhTWU5DOwo+ICsJCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9 IERSTV9NT0RFX0ZMQUdfTkhTWU5DOwo+ICAKPiAtCWlmICghKHBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGUuZmxhZ3MgJgo+ICsJaWYgKCEocGlwZV9jb25maWctPmh3LmFkanVzdGVkX21v ZGUuZmxhZ3MgJgo+ICAJICAgICAgKERSTV9NT0RFX0ZMQUdfUFZTWU5DIHwgRFJNX01PREVfRkxB R19OVlNZTkMpKSkKPiAtCQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9 IERSTV9NT0RFX0ZMQUdfTlZTWU5DOwo+ICsJCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2Rl LmZsYWdzIHw9IERSTV9NT0RFX0ZMQUdfTlZTWU5DOwo+ICAKPiAgCXJldCA9IGNvbXB1dGVfYmFz ZWxpbmVfcGlwZV9icHAodG9faW50ZWxfY3J0YyhjcnRjKSwKPiAgCQkJCQlwaXBlX2NvbmZpZyk7 Cj4gQEAgLTEyMzM4LDcgKzEyMzM4LDcgQEAgaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIAkgKiBjb21wdXRhdGlvbiB0byBj bGVhcmx5IGRpc3Rpbmd1aXNoIGl0IGZyb20gdGhlIGFkanVzdGVkIG1vZGUsIHdoaWNoCj4gIAkg KiBjYW4gYmUgY2hhbmdlZCBieSB0aGUgY29ubmVjdG9ycyBpbiB0aGUgYmVsb3cgcmV0cnkgbG9v cC4KPiAgCSAqLwo+IC0JZHJtX21vZGVfZ2V0X2h2X3RpbWluZygmcGlwZV9jb25maWctPmJhc2Uu bW9kZSwKPiArCWRybV9tb2RlX2dldF9odl90aW1pbmcoJnBpcGVfY29uZmlnLT5ody5tb2RlLAo+ ICAJCQkgICAgICAgJnBpcGVfY29uZmlnLT5waXBlX3NyY193LAo+ICAJCQkgICAgICAgJnBpcGVf Y29uZmlnLT5waXBlX3NyY19oKTsKPiAgCj4gQEAgLTEyMzcxLDcgKzEyMzcxLDcgQEAgaW50ZWxf bW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp Cj4gIAlwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllciA9IDE7Cj4gIAo+ICAJLyogRmlsbCBp biBkZWZhdWx0IGNydGMgdGltaW5ncywgYWxsb3cgZW5jb2RlcnMgdG8gb3ZlcndyaXRlIHRoZW0u ICovCj4gLQlkcm1fbW9kZV9zZXRfY3J0Y2luZm8oJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGUsCj4gKwlkcm1fbW9kZV9zZXRfY3J0Y2luZm8oJnBpcGVfY29uZmlnLT5ody5hZGp1c3Rl ZF9tb2RlLAo+ICAJCQkgICAgICBDUlRDX1NURVJFT19ET1VCTEUpOwo+ICAKPiAgCS8qIFBhc3Mg b3VyIG1vZGUgdG8gdGhlIGNvbm5lY3RvcnMgYW5kIHRoZSBDUlRDIHRvIGdpdmUgdGhlbSBhIGNo YW5jZSB0bwo+IEBAIC0xMjM5Niw3ICsxMjM5Niw3IEBAIGludGVsX21vZGVzZXRfcGlwZV9jb25m aWcoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICAJLyogU2V0IGRlZmF1 bHQgcG9ydCBjbG9jayBpZiBub3Qgb3ZlcndyaXR0ZW4gYnkgdGhlIGVuY29kZXIuIE5lZWRzIHRv IGJlCj4gIAkgKiBkb25lIGFmdGVyd2FyZHMgaW4gY2FzZSB0aGUgZW5jb2RlciBhZGp1c3RzIHRo ZSBtb2RlLiAqLwo+ICAJaWYgKCFwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaykKPiAtCQlwaXBlX2Nv bmZpZy0+cG9ydF9jbG9jayA9IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19j bG9jawo+ICsJCXBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGUuY3J0Y19jbG9jawo+ICAJCQkqIHBpcGVfY29uZmlnLT5waXhlbF9tdWx0aXBsaWVy Owo+ICAKPiAgCXJldCA9IGludGVsX2NydGNfY29tcHV0ZV9jb25maWcodG9faW50ZWxfY3J0Yyhj cnRjKSwgcGlwZV9jb25maWcpOwo+IEBAIC0xMjU2NCw4ICsxMjU2NCw4IEBAIGludGVsX3BpcGVf Y29uZmlnX2NvbXBhcmUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmN1cnJlbnRfY29u ZmlnLAo+ICAJYm9vbCByZXQgPSB0cnVlOwo+ICAJdTMyIGJwX2dhbW1hID0gMDsKPiAgCWJvb2wg Zml4dXBfaW5oZXJpdGVkID0gZmFzdHNldCAmJgo+IC0JCShjdXJyZW50X2NvbmZpZy0+YmFzZS5t b2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVfRkxBR19JTkhFUklURUQpICYmCj4gLQkJIShw aXBlX2NvbmZpZy0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3MgJiBJOTE1X01PREVfRkxBR19JTkhF UklURUQpOwo+ICsJCShjdXJyZW50X2NvbmZpZy0+aHcubW9kZS5wcml2YXRlX2ZsYWdzICYgSTkx NV9NT0RFX0ZMQUdfSU5IRVJJVEVEKSAmJgo+ICsJCSEocGlwZV9jb25maWctPmh3Lm1vZGUucHJp dmF0ZV9mbGFncyAmIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCk7Cj4gIAo+ICAJaWYgKGZpeHVw X2luaGVyaXRlZCAmJiAhZmFzdGJvb3RfZW5hYmxlZChkZXZfcHJpdikpIHsKPiAgCQlEUk1fREVC VUdfS01TKCJpbml0aWFsIG1vZGVzZXQgYW5kIGZhc3Rib290IG5vdCBzZXRcbiIpOwo+IEBAIC0x MjkwOCw3ICsxMjkwOCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3BpcGVfY29uZmlnX3Nhbml0eV9j aGVjayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlpZiAocGlwZV9jb25m aWctPmhhc19wY2hfZW5jb2Rlcikgewo+ICAJCWludCBmZGlfZG90Y2xvY2sgPSBpbnRlbF9kb3Rj bG9ja19jYWxjdWxhdGUoaW50ZWxfZmRpX2xpbmtfZnJlcShkZXZfcHJpdiwgcGlwZV9jb25maWcp LAo+ICAJCQkJCQkJICAgICZwaXBlX2NvbmZpZy0+ZmRpX21fbik7Cj4gLQkJaW50IGRvdGNsb2Nr ID0gcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICsJCWludCBk b3RjbG9jayA9IHBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gIAo+ ICAJCS8qCj4gIAkJICogRkRJIGFscmVhZHkgcHJvdmlkZWQgb25lIGlkZWEgZm9yIHRoZSBkb3Rj bG9jay4KPiBAQCAtMTI5MzcsNyArMTI5MzcsNyBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfd21fc3Rh dGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGls a193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZTsK PiAgCj4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgfHwgIW5ld19jcnRjX3N0YXRlLT5i YXNlLmFjdGl2ZSkKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSB8fCAhbmV3X2NydGNf c3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJaHcgPSBremFsbG9jKHNpemVv ZigqaHcpLCBHRlBfS0VSTkVMKTsKPiBAQCAtMTMxMjEsMjMgKzEzMTIxLDI2IEBAIHZlcmlmeV9j cnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAKPiAgCS8qIHdlIGtlZXAgYm90 aCBwaXBlcyBlbmFibGVkIG9uIDgzMCAqLwo+ICAJaWYgKElTX0k4MzAoZGV2X3ByaXYpKQo+IC0J CWFjdGl2ZSA9IG5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZTsKPiArCQlhY3RpdmUgPSBuZXdf Y3J0Y19zdGF0ZS0+aHcuYWN0aXZlOwo+ICAKPiAtCUk5MTVfU1RBVEVfV0FSTihuZXdfY3J0Y19z dGF0ZS0+YmFzZS5hY3RpdmUgIT0gYWN0aXZlLAo+IC0JICAgICAiY3J0YyBhY3RpdmUgc3RhdGUg ZG9lc24ndCBtYXRjaCB3aXRoIGh3IHN0YXRlICIKPiAtCSAgICAgIihleHBlY3RlZCAlaSwgZm91 bmQgJWkpXG4iLCBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUsIGFjdGl2ZSk7Cj4gKwlJOTE1 X1NUQVRFX1dBUk4obmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSAhPSBhY3RpdmUsCj4gKwkJCSJj cnRjIGFjdGl2ZSBzdGF0ZSBkb2Vzbid0IG1hdGNoIHdpdGggaHcgc3RhdGUgIgo+ICsJCQkiKGV4 cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsCj4gKwkJCW5ld19jcnRjX3N0YXRlLT5ody5hY3RpdmUs IGFjdGl2ZSk7Cj4gIAo+IC0JSTkxNV9TVEFURV9XQVJOKGNydGMtPmFjdGl2ZSAhPSBuZXdfY3J0 Y19zdGF0ZS0+YmFzZS5hY3RpdmUsCj4gLQkgICAgICJ0cmFuc2l0aW9uYWwgYWN0aXZlIHN0YXRl IGRvZXMgbm90IG1hdGNoIGF0b21pYyBodyBzdGF0ZSAiCj4gLQkgICAgICIoZXhwZWN0ZWQgJWks IGZvdW5kICVpKVxuIiwgbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlLCBjcnRjLT5hY3RpdmUp Owo+ICsJSTkxNV9TVEFURV9XQVJOKGNydGMtPmFjdGl2ZSAhPSBuZXdfY3J0Y19zdGF0ZS0+aHcu YWN0aXZlLAo+ICsJCQkidHJhbnNpdGlvbmFsIGFjdGl2ZSBzdGF0ZSBkb2VzIG5vdCBtYXRjaCBh dG9taWMgaHcgc3RhdGUgIgo+ICsJCQkiKGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsCj4gKwkJ CW5ld19jcnRjX3N0YXRlLT5ody5hY3RpdmUsIGNydGMtPmFjdGl2ZSk7Cj4gIAo+ICAJZm9yX2Vh Y2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgJmNydGMtPmJhc2UsIGVuY29kZXIpIHsKPiAgCQllbnVt IHBpcGUgcGlwZTsKPiAgCj4gIAkJYWN0aXZlID0gZW5jb2Rlci0+Z2V0X2h3X3N0YXRlKGVuY29k ZXIsICZwaXBlKTsKPiAtCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZlICE9IG5ld19jcnRjX3N0YXRl LT5iYXNlLmFjdGl2ZSwKPiAtCQkJIltFTkNPREVSOiVpXSBhY3RpdmUgJWkgd2l0aCBjcnRjIGFj dGl2ZSAlaVxuIiwKPiAtCQkJZW5jb2Rlci0+YmFzZS5iYXNlLmlkLCBhY3RpdmUsIG5ld19jcnRj X3N0YXRlLT5iYXNlLmFjdGl2ZSk7Cj4gKwkJSTkxNV9TVEFURV9XQVJOKGFjdGl2ZSAhPSBuZXdf Y3J0Y19zdGF0ZS0+aHcuYWN0aXZlLAo+ICsJCQkJIltFTkNPREVSOiVpXSBhY3RpdmUgJWkgd2l0 aCBjcnRjIGFjdGl2ZSAlaVxuIiwKPiArCQkJCWVuY29kZXItPmJhc2UuYmFzZS5pZCwgYWN0aXZl LAo+ICsJCQkJbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSk7Cj4gIAo+ICAJCUk5MTVfU1RBVEVf V0FSTihhY3RpdmUgJiYgY3J0Yy0+cGlwZSAhPSBwaXBlLAo+ICAJCQkJIkVuY29kZXIgY29ubmVj dGVkIHRvIHdyb25nIHBpcGUgJWNcbiIsCj4gQEAgLTEzMTQ5LDcgKzEzMTUyLDcgQEAgdmVyaWZ5 X2NydGNfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAo+ICAJaW50ZWxfY3J0Y19j b21wdXRlX3BpeGVsX3JhdGUocGlwZV9jb25maWcpOwo+ICAKPiAtCWlmICghbmV3X2NydGNfc3Rh dGUtPmJhc2UuYWN0aXZlKQo+ICsJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQo+ICAJ CXJldHVybjsKPiAgCj4gIAlpbnRlbF9waXBlX2NvbmZpZ19zYW5pdHlfY2hlY2soZGV2X3ByaXYs IHBpcGVfY29uZmlnKTsKPiBAQCAtMTMyMTEsNyArMTMyMTQsNyBAQCB2ZXJpZnlfc2luZ2xlX2Rw bGxfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAKPiAgCWNydGNf bWFzayA9IGRybV9jcnRjX21hc2soJmNydGMtPmJhc2UpOwo+ICAKPiAtCWlmIChuZXdfY3J0Y19z dGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwlpZiAobmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAg CQlJOTE1X1NUQVRFX1dBUk4oIShwbGwtPmFjdGl2ZV9tYXNrICYgY3J0Y19tYXNrKSwKPiAgCQkJ CSJwbGwgYWN0aXZlIG1pc21hdGNoIChleHBlY3RlZCBwaXBlICVjIGluIGFjdGl2ZSBtYXNrIDB4 JTAyeClcbiIsCj4gIAkJCQlwaXBlX25hbWUoZHJtX2NydGNfaW5kZXgoJmNydGMtPmJhc2UpKSwg cGxsLT5hY3RpdmVfbWFzayk7Cj4gQEAgLTEzMjkzLDcgKzEzMjk2LDcgQEAgaW50ZWxfY3J0Y191 cGRhdGVfYWN0aXZlX3RpbWluZ3MoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19z dGF0ZS0+YmFzZS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7 Cj4gKwkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gIAo+ICAJZHJtX2NhbGNfdGlt ZXN0YW1waW5nX2NvbnN0YW50cygmY3J0Yy0+YmFzZSwgYWRqdXN0ZWRfbW9kZSk7Cj4gIAo+IEBA IC0xMzM3NSw3ICsxMzM3OCw3IEBAIHN0YXRpYyBpbnQgaGFzd2VsbF9tb2RlX3NldF9wbGFuZXNf d29ya2Fyb3VuZChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCj4gIAkvKiBs b29rIGF0IGFsbCBjcnRjJ3MgdGhhdCBhcmUgZ29pbmcgdG8gYmUgZW5hYmxlZCBpbiBkdXJpbmcg bW9kZXNldCAqLwo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNy dGMsIGNydGNfc3RhdGUsIGkpIHsKPiAtCQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlIHx8 Cj4gKwkJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUgfHwKPiAgCQkgICAgIW5lZWRzX21vZGVz ZXQoY3J0Y19zdGF0ZSkpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiBAQCAtMTM0MDAsNyArMTM0MDMs NyBAQCBzdGF0aWMgaW50IGhhc3dlbGxfbW9kZV9zZXRfcGxhbmVzX3dvcmthcm91bmQoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAo+ICAJCWNydGNfc3RhdGUtPmhzd193b3Jr YXJvdW5kX3BpcGUgPSBJTlZBTElEX1BJUEU7Cj4gIAo+IC0JCWlmICghY3J0Y19zdGF0ZS0+YmFz ZS5hY3RpdmUgfHwKPiArCQlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fAo+ICAJCSAgICBu ZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpKQo+ICAJCQljb250aW51ZTsKPiAgCj4gQEAgLTEzNDQz LDEyICsxMzQ0NiwxMiBAQCBzdGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBp bnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAKPiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9j cnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKPiAgCQkJCQkgICAgbmV3 X2NydGNfc3RhdGUsIGkpIHsKPiAtCQlpZiAobmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQo+ICAJCQlzdGF0ZS0+YWN0aXZlX3Bp cGVzIHw9IEJJVChjcnRjLT5waXBlKTsKPiAgCQllbHNlCj4gIAkJCXN0YXRlLT5hY3RpdmVfcGlw ZXMgJj0gfkJJVChjcnRjLT5waXBlKTsKPiAgCj4gLQkJaWYgKG9sZF9jcnRjX3N0YXRlLT5iYXNl LmFjdGl2ZSAhPSBuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwkJaWYgKG9sZF9jcnRj X3N0YXRlLT5ody5hY3RpdmUgIT0gbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQkJc3Rh dGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMgfD0gQklUKGNydGMtPnBpcGUpOwo+ICAJfQo+ICAKPiBA QCAtMTM1NTgsOCArMTM1NjEsOCBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jaGVjayhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJLyogQ2F0Y2ggSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVE ICovCj4gIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywg b2xkX2NydGNfc3RhdGUsCj4gIAkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gLQkJaWYg KG5ld19jcnRjX3N0YXRlLT5iYXNlLm1vZGUucHJpdmF0ZV9mbGFncyAhPQo+IC0JCSAgICBvbGRf Y3J0Y19zdGF0ZS0+YmFzZS5tb2RlLnByaXZhdGVfZmxhZ3MpCj4gKwkJaWYgKG5ld19jcnRjX3N0 YXRlLT5ody5tb2RlLnByaXZhdGVfZmxhZ3MgIT0KPiArCQkgICAgb2xkX2NydGNfc3RhdGUtPmh3 Lm1vZGUucHJpdmF0ZV9mbGFncykKPiAgCQkJbmV3X2NydGNfc3RhdGUtPmJhc2UubW9kZV9jaGFu Z2VkID0gdHJ1ZTsKPiAgCX0KPiAgCj4gQEAgLTEzNjg4LDcgKzEzNjkxLDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfcGlwZV9mYXN0c2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRf Y3J0Y19zdGF0ZSwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ICAKPiAgCS8qIGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9s ZWdhY3lfbW9kZXNldF9zdGF0ZSBtaWdodCBub3QgYmUgY2FsbGVkLiAqLwo+IC0JY3J0Yy0+YmFz ZS5tb2RlID0gbmV3X2NydGNfc3RhdGUtPmJhc2UubW9kZTsKPiArCWNydGMtPmJhc2UubW9kZSA9 IG5ld19jcnRjX3N0YXRlLT5ody5tb2RlOwo+ICAKPiAgCS8qCj4gIAkgKiBVcGRhdGUgcGlwZSBz aXplIGFuZCBhZGp1c3QgZml0dGVyIGlmIG5lZWRlZDogdGhlIHJlYXNvbiBmb3IgdGhpcyBpcwo+ IEBAIC0xMzc5Nyw3ICsxMzgwMCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jcnRjKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJICogb2YgZW5hYmxpbmcgdGhlbSBvbiB0aGUgQ1JU QydzIGZpcnN0IGZhc3RzZXQuCj4gIAkgKi8KPiAgCWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRl X3BpcGUgJiYgIW1vZGVzZXQgJiYKPiAtCSAgICBvbGRfY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLnBy aXZhdGVfZmxhZ3MgJiBJOTE1X01PREVfRkxBR19JTkhFUklURUQpCj4gKwkgICAgb2xkX2NydGNf c3RhdGUtPmh3Lm1vZGUucHJpdmF0ZV9mbGFncyAmIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCkK PiAgCQlpbnRlbF9jcnRjX2FybV9maWZvX3VuZGVycnVuKGNydGMsIG5ld19jcnRjX3N0YXRlKTsK PiAgfQo+ICAKPiBAQCAtMTM4MjksNyArMTM4MzIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9vbGRf Y3J0Y19zdGF0ZV9kaXNhYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAg CWludGVsX2NoZWNrX3BjaF9maWZvX3VuZGVycnVucyhkZXZfcHJpdik7Cj4gIAo+ICAJLyogRklY TUUgdW5pZnkgdGhpcyBmb3IgYWxsIHBsYXRmb3JtcyAqLwo+IC0JaWYgKCFuZXdfY3J0Y19zdGF0 ZS0+YmFzZS5hY3RpdmUgJiYKPiArCWlmICghbmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSAmJgo+ ICAJICAgICFIQVNfR01DSChkZXZfcHJpdikgJiYKPiAgCSAgICBkZXZfcHJpdi0+ZGlzcGxheS5p bml0aWFsX3dhdGVybWFya3MpCj4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1h cmtzKHN0YXRlLAo+IEBAIC0xMzg1Niw3ICsxMzg1OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2Nv bW1pdF9tb2Rlc2V0X2Rpc2FibGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ ICAKPiAgCQlpbnRlbF9wcmVfcGxhbmVfdXBkYXRlKG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19z dGF0ZSk7Cj4gIAo+IC0JCWlmIChvbGRfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwkJaWYg KG9sZF9jcnRjX3N0YXRlLT5ody5hY3RpdmUpCj4gIAkJCWludGVsX29sZF9jcnRjX3N0YXRlX2Rp c2FibGVzKHN0YXRlLAo+ICAJCQkJCQkgICAgICBvbGRfY3J0Y19zdGF0ZSwKPiAgCQkJCQkJICAg ICAgbmV3X2NydGNfc3RhdGUsCj4gQEAgLTEzODcxLDcgKzEzODc0LDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSkKPiAgCWludCBpOwo+ICAKPiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiAt CQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiArCQlpZiAoIW5ld19jcnRjX3N0 YXRlLT5ody5hY3RpdmUpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlpbnRlbF91cGRhdGVfY3J0 YyhjcnRjLCBzdGF0ZSwgb2xkX2NydGNfc3RhdGUsCj4gQEAgLTEzODk0LDcgKzEzODk3LDcgQEAg c3RhdGljIHZvaWQgc2tsX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gIAo+ICAJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNfaW5fc3Rh dGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgaSkKPiAgCQkv KiBpZ25vcmUgYWxsb2NhdGlvbnMgZm9yIGNydGMncyB0aGF0IGhhdmUgYmVlbiB0dXJuZWQgb2Zm LiAqLwo+IC0JCWlmIChuZXdfY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpCj4gKwkJaWYgKG5ld19j cnRjX3N0YXRlLT5ody5hY3RpdmUpCj4gIAkJCWVudHJpZXNbaV0gPSBvbGRfY3J0Y19zdGF0ZS0+ d20uc2tsLmRkYjsKPiAgCj4gIAkvKiBJZiAybmQgREJ1ZiBzbGljZSByZXF1aXJlZCwgZW5hYmxl IGl0IGhlcmUgKi8KPiBAQCAtMTM5MTYsNyArMTM5MTksNyBAQCBzdGF0aWMgdm9pZCBza2xfY29t bWl0X21vZGVzZXRfZW5hYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAg Cj4gIAkJCXBpcGUgPSBjcnRjLT5waXBlOwo+ICAKPiAtCQkJaWYgKHVwZGF0ZWQgJiBjbWFzayB8 fCAhbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJCQlpZiAodXBkYXRlZCAmIGNtYXNr IHx8ICFuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQo+ICAJCQkJY29udGludWU7Cj4gIAo+ICAJ CQlpZiAoc2tsX2RkYl9hbGxvY2F0aW9uX292ZXJsYXBzKCZuZXdfY3J0Y19zdGF0ZS0+d20uc2ts LmRkYiwKPiBAQCAtMTQwNjgsNyArMTQwNzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNf Y29tbWl0X3RhaWwoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJYm9vbCBt b2Rlc2V0ID0gbmVlZHNfbW9kZXNldChuZXdfY3J0Y19zdGF0ZSk7Cj4gIAo+ICAJCS8qIENvbXBs ZXRlIGV2ZW50cyBmb3Igbm93IGRpc2FibGUgcGlwZXMgaGVyZS4gKi8KPiAtCQlpZiAobW9kZXNl dCAmJiAhbmV3X2NydGNfc3RhdGUtPmJhc2UuYWN0aXZlICYmIG5ld19jcnRjX3N0YXRlLT5iYXNl LmV2ZW50KSB7Cj4gKwkJaWYgKG1vZGVzZXQgJiYgIW5ld19jcnRjX3N0YXRlLT5ody5hY3RpdmUg JiYgbmV3X2NydGNfc3RhdGUtPmJhc2UuZXZlbnQpIHsKPiAgCQkJc3Bpbl9sb2NrX2lycSgmZGV2 LT5ldmVudF9sb2NrKTsKPiAgCQkJZHJtX2NydGNfc2VuZF92YmxhbmtfZXZlbnQoJmNydGMtPmJh c2UsIG5ld19jcnRjX3N0YXRlLT5iYXNlLmV2ZW50KTsKPiAgCQkJc3Bpbl91bmxvY2tfaXJxKCZk ZXYtPmV2ZW50X2xvY2spOwo+IEBAIC0xNDEwNCw3ICsxNDEwNyw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkK PiAgCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX2ZsaXBfZG9uZShkZXYsICZzdGF0ZS0+YmFz ZSk7Cj4gIAo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMs IG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gLQkJaWYgKG5ld19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSAmJgo+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+aHcuYWN0aXZlICYmCj4gIAkJICAgICFuZWVk c19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKSAmJgo+ICAJCSAgICAobmV3X2NydGNfc3RhdGUtPmJh c2UuY29sb3JfbWdtdF9jaGFuZ2VkIHx8Cj4gIAkJICAgICBuZXdfY3J0Y19zdGF0ZS0+dXBkYXRl X3BpcGUpKQo+IEBAIC0xNDU1OSwxMCArMTQ1NjIsMTAgQEAgc2tsX21heF9zY2FsZShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWludCBtYXhfc2NhbGU7Cj4g IAlpbnQgY3J0Y19jbG9jaywgbWF4X2RvdGNsaywgdG1wY2xrMSwgdG1wY2xrMjsKPiAgCj4gLQlp ZiAoIWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQo+ICsJaWYgKCFjcnRjX3N0YXRlLT5ody5lbmFi bGUpCj4gIAkJcmV0dXJuIERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKPiAgCj4gLQljcnRj X2Nsb2NrID0gY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gKwlj cnRjX2Nsb2NrID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICAJ bWF4X2RvdGNsayA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRl KS0+Y2RjbGsubG9naWNhbC5jZGNsazsKPiAgCj4gIAlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJp dikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkKPiBAQCAtMTQ2OTgsNyArMTQ3MDEsNyBA QCBpbnRlbF9sZWdhY3lfY3Vyc29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4g IAkgKiBXaGVuIGNydGMgaXMgaW5hY3RpdmUgb3IgdGhlcmUgaXMgYSBtb2Rlc2V0IHBlbmRpbmcs Cj4gIAkgKiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZSBpbiB0aGUgc2xvd3BhdGgKPiAgCSAqLwo+ IC0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCBuZWVkc19tb2Rlc2V0KGNydGNfc3Rh dGUpIHx8Cj4gKwlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fCBuZWVkc19tb2Rlc2V0KGNy dGNfc3RhdGUpIHx8Cj4gIAkgICAgY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpCj4gIAkJZ290byBz bG93Owo+ICAKPiBAQCAtMTYxMTQsNyArMTYxMTcsNyBAQCBzdGF0aWMgaW50IGludGVsX2luaXRp YWxfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJCWdvdG8gb3V0Owo+ICAJCX0K PiAgCj4gLQkJaWYgKGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKSB7Cj4gKwkJaWYgKGNydGNfc3Rh dGUtPmh3LmFjdGl2ZSkgewo+ICAJCQlyZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9wbGFu ZXMoc3RhdGUsICZjcnRjLT5iYXNlKTsKPiAgCQkJaWYgKHJldCkKPiAgCQkJCWdvdG8gb3V0Owo+ IEBAIC0xNjQ2NCw3ICsxNjQ2Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMo c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJCSAgIEk5MTVfUkVBRChyZWcpICYgflBJUEVD T05GX0ZSQU1FX1NUQVJUX0RFTEFZX01BU0spOwo+ICAJfQo+ICAKPiAtCWlmIChjcnRjX3N0YXRl LT5iYXNlLmFjdGl2ZSkgewo+ICsJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkgewo+ICAJCXN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7Cj4gIAo+ICAJCS8qIERpc2FibGUgZXZlcnl0aGluZyBi dXQgdGhlIHByaW1hcnkgcGxhbmUgKi8KPiBAQCAtMTY0ODksMTAgKzE2NDkyLDEwIEBAIHN0YXRp YyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAo+ ICAJLyogQWRqdXN0IHRoZSBzdGF0ZSBvZiB0aGUgb3V0cHV0IHBpcGUgYWNjb3JkaW5nIHRvIHdo ZXRoZXIgd2UKPiAgCSAqIGhhdmUgYWN0aXZlIGNvbm5lY3RvcnMvZW5jb2RlcnMuICovCj4gLQlp ZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUgJiYgIWludGVsX2NydGNfaGFzX2VuY29kZXJzKGNy dGMpKQo+ICsJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSAmJiAhaW50ZWxfY3J0Y19oYXNfZW5j b2RlcnMoY3J0YykpCj4gIAkJaW50ZWxfY3J0Y19kaXNhYmxlX25vYXRvbWljKCZjcnRjLT5iYXNl LCBjdHgpOwo+ICAKPiAtCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCBIQVNfR01DSChk ZXZfcHJpdikpIHsKPiArCWlmIChjcnRjX3N0YXRlLT5ody5hY3RpdmUgfHwgSEFTX0dNQ0goZGV2 X3ByaXYpKSB7Cj4gIAkJLyoKPiAgCQkgKiBXZSBzdGFydCBvdXQgd2l0aCB1bmRlcnJ1biByZXBv cnRpbmcgZGlzYWJsZWQgdG8gYXZvaWQgcmFjZXMuCj4gIAkJICogRm9yIGNvcnJlY3QgYm9va2tl ZXBpbmcgbWFyayB0aGlzIG9uIGFjdGl2ZSBjcnRjcy4KPiBAQCAtMTY1MzYsNyArMTY1MzksNyBA QCBzdGF0aWMgYm9vbCBoYXNfYm9ndXNfZHBsbF9jb25maWcoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAkgKiByb2FkLgo+ICAJICovCj4gIAlyZXR1cm4gSVNf R0VOKGRldl9wcml2LCA2KSAmJgo+IC0JCWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlICYmCj4gKwkJ Y3J0Y19zdGF0ZS0+aHcuYWN0aXZlICYmCj4gIAkJY3J0Y19zdGF0ZS0+c2hhcmVkX2RwbGwgJiYK PiAgCQljcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID09IDA7Cj4gIH0KPiBAQCAtMTY1NTMsNyArMTY1 NTYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9lbmNvZGVyKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyKQo+ICAJICogZW5jb2RlciBpcyBhY3RpdmUgYW5kIHRyeWluZyB0byBy ZWFkIGZyb20gYSBwaXBlKSBhbmQgdGhlCj4gIAkgKiBwaXBlIGl0c2VsZiBiZWluZyBhY3RpdmUu ICovCj4gIAlib29sIGhhc19hY3RpdmVfY3J0YyA9IGNydGNfc3RhdGUgJiYKPiAtCQljcnRjX3N0 YXRlLT5iYXNlLmFjdGl2ZTsKPiArCQljcnRjX3N0YXRlLT5ody5hY3RpdmU7Cj4gIAo+ICAJaWYg KGNydGNfc3RhdGUgJiYgaGFzX2JvZ3VzX2RwbGxfY29uZmlnKGNydGNfc3RhdGUpKSB7Cj4gIAkJ RFJNX0RFQlVHX0tNUygiQklPUyBoYXMgbWlzcHJvZ3JhbW1lZCB0aGUgaGFyZHdhcmUuIERpc2Fi bGluZyBwaXBlICVjXG4iLAo+IEBAIC0xNjY2MSwxOCArMTY2NjQsMTggQEAgc3RhdGljIHZvaWQg aW50ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IAkJbWVtc2V0KGNydGNfc3RhdGUsIDAsIHNpemVvZigqY3J0Y19zdGF0ZSkpOwo+ICAJCV9fZHJt X2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCgmY3J0Yy0+YmFzZSwgJmNydGNfc3RhdGUtPmJhc2Up Owo+ICAKPiAtCQljcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSA9IGNydGNfc3RhdGUtPmJhc2UuZW5h YmxlID0KPiArCQljcnRjX3N0YXRlLT5ody5hY3RpdmUgPSBjcnRjX3N0YXRlLT5ody5lbmFibGUg PQo+ICAJCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcoY3J0YywgY3J0Y19zdGF0 ZSk7Cj4gIAo+IC0JCWNydGMtPmJhc2UuZW5hYmxlZCA9IGNydGNfc3RhdGUtPmJhc2UuZW5hYmxl Owo+IC0JCWNydGMtPmFjdGl2ZSA9IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlOwo+ICsJCWNydGMt PmJhc2UuZW5hYmxlZCA9IGNydGNfc3RhdGUtPmh3LmVuYWJsZTsKPiArCQljcnRjLT5hY3RpdmUg PSBjcnRjX3N0YXRlLT5ody5hY3RpdmU7Cj4gIAo+IC0JCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFj dGl2ZSkKPiArCQlpZiAoY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQo+ICAJCQlkZXZfcHJpdi0+YWN0 aXZlX3BpcGVzIHw9IEJJVChjcnRjLT5waXBlKTsKPiAgCj4gIAkJRFJNX0RFQlVHX0tNUygiW0NS VEM6JWQ6JXNdIGh3IHN0YXRlIHJlYWRvdXQ6ICVzXG4iLAo+ICAJCQkgICAgICBjcnRjLT5iYXNl LmJhc2UuaWQsIGNydGMtPmJhc2UubmFtZSwKPiAtCQkJICAgICAgZW5hYmxlZGRpc2FibGVkKGNy dGNfc3RhdGUtPmJhc2UuYWN0aXZlKSk7Cj4gKwkJCSAgICAgIGVuYWJsZWRkaXNhYmxlZChjcnRj X3N0YXRlLT5ody5hY3RpdmUpKTsKPiAgCX0KPiAgCj4gIAlyZWFkb3V0X3BsYW5lX3N0YXRlKGRl dl9wcml2KTsKPiBAQCAtMTY2OTQsNyArMTY2OTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rl c2V0X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQkJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPQo+ICAJCQkJdG9faW50ZWxfY3J0Y19zdGF0 ZShjcnRjLT5iYXNlLnN0YXRlKTsKPiAgCj4gLQkJCWlmIChjcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSAmJgo+ICsJCQlpZiAoY3J0Y19zdGF0ZS0+aHcuYWN0aXZlICYmCj4gIAkJCSAgICBjcnRjX3N0 YXRlLT5zaGFyZWRfZHBsbCA9PSBwbGwpCj4gIAkJCQlwbGwtPnN0YXRlLmNydGNfbWFzayB8PSAx IDw8IGNydGMtPnBpcGU7Cj4gIAkJfQo+IEBAIC0xNjczOSw3ICsxNjc0Miw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQo+ICAJCQljcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+ICAJCQlj cnRjX3N0YXRlID0gY3J0YyA/IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSkg OiBOVUxMOwo+ICAKPiAtCQkJaWYgKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0ZS0+YmFzZS5hY3Rp dmUpIHsKPiArCQkJaWYgKGNydGNfc3RhdGUgJiYgY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7Cj4g IAkJCQkvKgo+ICAJCQkJICogVGhpcyBoYXMgdG8gYmUgZG9uZSBkdXJpbmcgaGFyZHdhcmUgcmVh ZG91dAo+ICAJCQkJICogYmVjYXVzZSBhbnl0aGluZyBjYWxsaW5nIC5jcnRjX2Rpc2FibGUgbWF5 Cj4gQEAgLTE2NzY5LDExICsxNjc3MiwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3Jl YWRvdXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCQlpbnQgbWluX2NkY2xr ID0gMDsKPiAgCj4gIAkJbWVtc2V0KCZjcnRjLT5iYXNlLm1vZGUsIDAsIHNpemVvZihjcnRjLT5i YXNlLm1vZGUpKTsKPiAtCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpIHsKPiArCQlpZiAo Y3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7Cj4gIAkJCWludGVsX21vZGVfZnJvbV9waXBlX2NvbmZp ZygmY3J0Yy0+YmFzZS5tb2RlLCBjcnRjX3N0YXRlKTsKPiAgCQkJY3J0Yy0+YmFzZS5tb2RlLmhk aXNwbGF5ID0gY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdzsKPiAgCQkJY3J0Yy0+YmFzZS5tb2RlLnZk aXNwbGF5ID0gY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaDsKPiAtCQkJaW50ZWxfbW9kZV9mcm9tX3Bp cGVfY29uZmlnKCZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUsIGNydGNfc3RhdGUpOwo+ ICsJCQlpbnRlbF9tb2RlX2Zyb21fcGlwZV9jb25maWcoJmNydGNfc3RhdGUtPmh3LmFkanVzdGVk X21vZGUsCj4gKwkJCQkJCSAgICBjcnRjX3N0YXRlKTsKPiAgCQkJV0FSTl9PTihkcm1fYXRvbWlj X3NldF9tb2RlX2Zvcl9jcnRjKCZjcnRjX3N0YXRlLT5iYXNlLCAmY3J0Yy0+YmFzZS5tb2RlKSk7 Cj4gIAo+ICAJCQkvKgo+IEBAIC0xNjc4NSw3ICsxNjc4OSw3IEBAIHN0YXRpYyB2b2lkIGludGVs X21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJCQkg KiBzZXQgYSBmbGFnIHRvIGluZGljYXRlIHRoYXQgYSBmdWxsIHJlY2FsY3VsYXRpb24gaXMKPiAg CQkJICogbmVlZGVkIG9uIHRoZSBuZXh0IGNvbW1pdC4KPiAgCQkJICovCj4gLQkJCWNydGNfc3Rh dGUtPmJhc2UubW9kZS5wcml2YXRlX2ZsYWdzID0gSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVEOwo+ ICsJCQljcnRjX3N0YXRlLT5ody5tb2RlLnByaXZhdGVfZmxhZ3MgPSBJOTE1X01PREVfRkxBR19J TkhFUklURUQ7Cj4gIAo+ICAJCQlpbnRlbF9jcnRjX2NvbXB1dGVfcGl4ZWxfcmF0ZShjcnRjX3N0 YXRlKTsKPiAgCj4gQEAgLTE2OTYzLDcgKzE2OTY3LDcgQEAgaW50ZWxfbW9kZXNldF9zZXR1cF9o d19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAKPiAgCQlkcm1fY3J0Y192Ymxhbmtf cmVzZXQoJmNydGMtPmJhc2UpOwo+ICAKPiAtCQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUp Cj4gKwkJaWYgKGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKPiAgCQkJaW50ZWxfY3J0Y192Ymxhbmtf b24oY3J0Y19zdGF0ZSk7Cj4gIAl9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2RwLmMKPiBpbmRleCBjNGMwODFjNzlkZDkuLjIxM2IwYzBjZGQ2NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMKPiBAQCAtMTk2OCw3ICsxOTY4LDcgQEAg aW50ZWxfZHBfY29tcHV0ZV9saW5rX2NvbmZpZ193aWRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCj4gIAkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQkJ CSAgY29uc3Qgc3RydWN0IGxpbmtfY29uZmlnX2xpbWl0cyAqbGltaXRzKQo+ICB7Cj4gLQlzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5h ZGp1c3RlZF9tb2RlOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUg PSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAlpbnQgYnBwLCBjbG9jaywgbGFu ZV9jb3VudDsKPiAgCWludCBtb2RlX3JhdGUsIGxpbmtfY2xvY2ssIGxpbmtfYXZhaWw7Cj4gIAo+ IEBAIC0yMDIyLDcgKzIwMjIsNyBAQCBzdGF0aWMgaW50IGludGVsX2RwX2RzY19jb21wdXRlX2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGlnX3BvcnQtPmJhc2UuYmFz ZS5kZXYpOwo+IC0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlw ZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJdTgg ZHNjX21heF9icGM7Cj4gIAlpbnQgcGlwZV9icHA7Cj4gIAlpbnQgcmV0Owo+IEBAIC0yMTMzLDcg KzIxMzMsNyBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ICAJCQkgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZywKPiAgCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkK PiAgewo+IC0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICph ZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4g IAlzdHJ1Y3QgbGlua19jb25maWdfbGltaXRzIGxpbWl0czsKPiAgCWludCBjb21tb25fbGVuOwo+ IEBAIC0yMjIxLDcgKzIyMjEsNyBAQCBpbnRlbF9kcF95Y2JjcjQyMF9jb25maWcoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKPiAgewo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X2luZm8g KmluZm8gPSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm87Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKPiArCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ ICAJaW50IHJldDsKPiAgCj4gQEAgLTIyNTAsNyArMjI1MCw3IEBAIGJvb2wgaW50ZWxfZHBfbGlt aXRlZF9jb2xvcl9yYW5nZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9zdGF0ZSAqaW50ZWxf Y29ubl9zdGF0ZSA9Cj4gIAkJdG9faW50ZWxfZGlnaXRhbF9jb25uZWN0b3Jfc3RhdGUoY29ubl9z dGF0ZSk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 Cj4gLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkmY3J0Y19zdGF0ZS0+ aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCj4gIAkvKgo+ICAJICogT3VyIFlDYkNyIG91dHB1dCBpcyBh bHdheXMgbGltaXRlZCByYW5nZS4KPiBAQCAtMjI4Myw3ICsyMjgzLDcgQEAgaW50ZWxfZHBfY29t cHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCXN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCXN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+ICAJc3RydWN0IGludGVs X2xzcGNvbiAqbHNwY29uID0gZW5jX3RvX2ludGVsX2xzcGNvbigmZW5jb2Rlci0+YmFzZSk7Cj4g IAllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7Cj4gQEAgLTI0MDMsNyArMjQwMyw3IEBA IHN0YXRpYyB2b2lkIGludGVsX2RwX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNv ZGVyLT5iYXNlKTsKPiAgCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsKPiAgCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRj KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBp cGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsK PiAgCj4gIAlpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoaW50ZWxfZHAsIHBpcGVfY29uZmlnLT5w b3J0X2Nsb2NrLAo+ICAJCQkJIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+IEBAIC0zMjM1LDcg KzMyMzUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ICAJCQlmbGFncyB8PSBEUk1fTU9ERV9GTEFHX05WU1lOQzsKPiAg CX0KPiAgCj4gLQlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdz Owo+ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgfD0gZmxhZ3M7Cj4gIAo+ ICAJaWYgKElTX0c0WChkZXZfcHJpdikgJiYgdG1wICYgRFBfQ09MT1JfUkFOR0VfMTZfMjM1KQo+ ICAJCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlID0gdHJ1ZTsKPiBAQCAtMzI1Miw3 ICszMjUyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSAyNzAwMDA7 Cj4gIAl9Cj4gIAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2Nr ID0KPiArCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPQo+ICAJCWlu dGVsX2RvdGNsb2NrX2NhbGN1bGF0ZShwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiAgCQkJCQkg JnBpcGVfY29uZmlnLT5kcF9tX24pOwo+ICAKPiBAQCAtNTA0NSw3ICs1MDQ1LDcgQEAgaW50IGlu dGVsX2RwX3JldHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCj4g IAlXQVJOX09OKCFpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGNfc3RhdGUpKTsKPiAgCj4g LQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJaWYgKCFjcnRjX3N0YXRlLT5ody5h Y3RpdmUpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaWYgKGNvbm5fc3RhdGUtPmNvbW1pdCAmJgo+ IEBAIC02OTA3LDcgKzY5MDcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJcmV0dXJuOwo+ICAJfQo+ ICAKPiAtCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUpIHsKPiArCWlmICghY3J0Y19zdGF0 ZS0+aHcuYWN0aXZlKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygiZURQIGVuY29kZXIgZGlzYWJsZWQu IENSVEMgbm90IEFjdGl2ZVxuIik7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3QuYwo+IGluZGV4IDU0ODRiZDQ1MzRjMS4uN2Q2 M2YwYTc5Y2ExIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZHBfbXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rw X21zdC5jCj4gQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGludCBpbnRlbF9kcF9tc3RfY29tcHV0 ZV9saW5rX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCXN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9Cj4gIAkJdG9faW50ZWxfY29ubmVjdG9yKGNvbm5f c3RhdGUtPmNvbm5lY3Rvcik7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSA9Cj4gLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkm Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCXZvaWQgKnBvcnQgPSBjb25uZWN0b3It PnBvcnQ7Cj4gIAlib29sIGNvbnN0YW50X24gPSBkcm1fZHBfaGFzX3F1aXJrKCZpbnRlbF9kcC0+ ZGVzYywKPiAgCQkJCQkgICBEUF9EUENEX1FVSVJLX0NPTlNUQU5UX04pOwo+IEBAIC05OSw3ICs5 OSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX3N0 YXRlICppbnRlbF9jb25uX3N0YXRlID0KPiAgCQl0b19pbnRlbF9kaWdpdGFsX2Nvbm5lY3Rvcl9z dGF0ZShjb25uX3N0YXRlKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlID0KPiAtCQkmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkm cGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAl2b2lkICpwb3J0ID0gY29ubmVjdG9y LT5wb3J0Owo+ICAJc3RydWN0IGxpbmtfY29uZmlnX2xpbWl0cyBsaW1pdHM7Cj4gIAlpbnQgcmV0 Owo+IEBAIC0xODcsNyArMTg3LDcgQEAgaW50ZWxfZHBfbXN0X2F0b21pY19jaGVjayhzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAKPiAgCQlpZiAoIWNydGNfc3RhdGUgfHwKPiAg CQkgICAgIWRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KGNydGNfc3RhdGUpIHx8Cj4gLQkJ ICAgIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSktPmJhc2UuZW5hYmxlKQo+ICsJCSAg ICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT5ody5lbmFibGUpCj4gIAkJCXJldHVy biAwOwo+ICAJfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kdm8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHZvLmMK PiBpbmRleCA5ODI3Zjk5NDkxZDEuLmE2OGU1YzViOTFiNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2R2by5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kdm8uYwo+IEBAIC0xNzgsOSArMTc4LDkgQEAgc3RhdGljIHZv aWQgaW50ZWxfZHZvX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g IAllbHNlCj4gIAkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7Cj4gIAo+IC0JcGlwZV9j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiArCXBpcGVfY29uZmln LT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwo+ICAKPiAtCXBpcGVfY29uZmlnLT5i YXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrOwo+ ICsJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19jbG9jayA9IHBpcGVfY29uZmln LT5wb3J0X2Nsb2NrOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2R2byhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiBAQCAtMjA3LDggKzIwNyw4IEBAIHN0YXRp YyB2b2lkIGludGVsX2VuYWJsZV9kdm8oc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g IAl1MzIgdGVtcCA9IEk5MTVfUkVBRChkdm9fcmVnKTsKPiAgCj4gIAlpbnRlbF9kdm8tPmRldi5k ZXZfb3BzLT5tb2RlX3NldCgmaW50ZWxfZHZvLT5kZXYsCj4gLQkJCQkJICZwaXBlX2NvbmZpZy0+ YmFzZS5tb2RlLAo+IC0JCQkJCSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZSk7Cj4g KwkJCQkJICZwaXBlX2NvbmZpZy0+aHcubW9kZSwKPiArCQkJCQkgJnBpcGVfY29uZmlnLT5ody5h ZGp1c3RlZF9tb2RlKTsKPiAgCj4gIAlJOTE1X1dSSVRFKGR2b19yZWcsIHRlbXAgfCBEVk9fRU5B QkxFKTsKPiAgCUk5MTVfUkVBRChkdm9fcmVnKTsKPiBAQCAtMjUzLDcgKzI1Myw3IEBAIHN0YXRp YyBpbnQgaW50ZWxfZHZvX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ICAJc3RydWN0IGludGVsX2R2byAqaW50ZWxfZHZvID0gZW5jX3RvX2R2byhlbmNvZGVy KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpmaXhlZF9tb2RlID0KPiAgCQlp bnRlbF9kdm8tPmF0dGFjaGVkX2Nvbm5lY3Rvci0+cGFuZWwuZml4ZWRfbW9kZTsKPiAtCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFk anVzdGVkX21vZGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCj4gIAkvKgo+ICAJICogSWYgd2Ug aGF2ZSB0aW1pbmdzIGZyb20gdGhlIEJJT1MgZm9yIHRoZSBwYW5lbCwgcHV0IHRoZW0gaW4KPiBA QCAtMjc4LDcgKzI3OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2R2b19wcmVfZW5hYmxlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKPiAt CWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29u ZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCXN0 cnVjdCBpbnRlbF9kdm8gKmludGVsX2R2byA9IGVuY190b19kdm8oZW5jb2Rlcik7Cj4gIAllbnVt IHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAl1MzIgZHZvX3ZhbDsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMKPiBpbmRleCAzMTExZWNhZWFiZDAuLmM2Y2MzNzc1 ZjNiOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Zi Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYwo+IEBA IC02NjcsNyArNjY3LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmJjX3VwZGF0ZV9zdGF0ZV9jYWNo ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCWNhY2hlLT52bWEgPSBOVUxMOwo+ICAJY2Fj aGUtPmZsYWdzID0gMDsKPiAgCj4gLQljYWNoZS0+Y3J0Yy5tb2RlX2ZsYWdzID0gY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzOwo+ICsJY2FjaGUtPmNydGMubW9kZV9mbGFncyA9 IGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuZmxhZ3M7Cj4gIAlpZiAoSVNfSEFTV0VMTChk ZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiAgCQljYWNoZS0+Y3J0Yy5oc3df YmR3X3BpeGVsX3JhdGUgPSBjcnRjX3N0YXRlLT5waXhlbF9yYXRlOwo+ICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYwo+IGluZGV4IDkyZDFjYmJiZWUyYi4uMmY1 ZmM3MWFjOWEwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfaGRtaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1p LmMKPiBAQCAtNzA4LDcgKzcwOCw3IEBAIGludGVsX2hkbWlfY29tcHV0ZV9hdmlfaW5mb2ZyYW1l KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICB7Cj4gIAlzdHJ1Y3QgaGRtaV9hdmlf aW5mb2ZyYW1lICpmcmFtZSA9ICZjcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmF2aS5hdmk7Cj4gIAlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJJmNydGNf c3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBjb25uX3N0YXRlLT5j b25uZWN0b3I7Cj4gIAlpbnQgcmV0Owo+ICAKPiBAQCAtODA0LDcgKzgwNCw3IEBAIGludGVsX2hk bWlfY29tcHV0ZV9oZG1pX2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAgCj4gIAlyZXQgPSBkcm1faGRtaV92ZW5kb3JfaW5mb2ZyYW1lX2Zyb21fZGlzcGxheV9tb2Rl KGZyYW1lLAo+ICAJCQkJCQkJICBjb25uX3N0YXRlLT5jb25uZWN0b3IsCj4gLQkJCQkJCQkgICZj cnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUpOwo+ICsJCQkJCQkJICAmY3J0Y19zdGF0ZS0+ aHcuYWRqdXN0ZWRfbW9kZSk7Cj4gIAlpZiAoV0FSTl9PTihyZXQpKQo+ICAJCXJldHVybiBmYWxz ZTsKPiAgCj4gQEAgLTEwMjcsNyArMTAyNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2hkbWlfY29t cHV0ZV9nY3BfaW5mb2ZyYW1lKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAg CS8qIEVuYWJsZSBkZWZhdWx0X3BoYXNlIHdoZW5ldmVyIHRoZSBkaXNwbGF5IG1vZGUgaXMgc3Vp dGFibHkgYWxpZ25lZCAqLwo+ICAJaWYgKGdjcF9kZWZhdWx0X3BoYXNlX3Bvc3NpYmxlKGNydGNf c3RhdGUtPnBpcGVfYnBwLAo+IC0JCQkJICAgICAgICZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVk X21vZGUpKQo+ICsJCQkJICAgICAgICZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlKSkKPiAg CQljcnRjX3N0YXRlLT5pbmZvZnJhbWVzLmdjcCB8PSBHQ1BfREVGQVVMVF9QSEFTRV9FTkFCTEU7 Cj4gIH0KPiAgCj4gQEAgLTE3NDMsNyArMTc0Myw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2hkbWlf cHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICAJc3RydWN0 IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBlbmNfdG9faW50ZWxfaGRtaSgmZW5jb2Rlci0+YmFz ZSk7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZj cnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ ICAJdTMyIGhkbWlfdmFsOwo+ICAKPiAgCWludGVsX2RwX2R1YWxfbW9kZV9zZXRfdG1kc19vdXRw dXQoaW50ZWxfaGRtaSwgdHJ1ZSk7Cj4gQEAgLTE4MzQsNyArMTgzNCw3IEBAIHN0YXRpYyB2b2lk IGludGVsX2hkbWlfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAg CSAgICB0bXAgJiBIRE1JX0NPTE9SX1JBTkdFXzE2XzIzNSkKPiAgCQlwaXBlX2NvbmZpZy0+bGlt aXRlZF9jb2xvcl9yYW5nZSA9IHRydWU7Cj4gIAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiArCXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2Rl LmZsYWdzIHw9IGZsYWdzOwo+ICAKPiAgCWlmICgodG1wICYgU0RWT19DT0xPUl9GT1JNQVRfTUFT SykgPT0gSERNSV9DT0xPUl9GT1JNQVRfMTJicGMpCj4gIAkJZG90Y2xvY2sgPSBwaXBlX2NvbmZp Zy0+cG9ydF9jbG9jayAqIDIgLyAzOwo+IEBAIC0xODQ0LDcgKzE4NDQsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9oZG1pX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g IAlpZiAocGlwZV9jb25maWctPnBpeGVsX211bHRpcGxpZXIpCj4gIAkJZG90Y2xvY2sgLz0gcGlw ZV9jb25maWctPnBpeGVsX211bHRpcGxpZXI7Cj4gIAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gZG90Y2xvY2s7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRq dXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gZG90Y2xvY2s7Cj4gIAo+ICAJcGlwZV9jb25maWctPmxh bmVfY291bnQgPSA0Owo+ICAKPiBAQCAtMjIyMCw3ICsyMjIwLDcgQEAgc3RhdGljIGJvb2wgaGRt aV9kZWVwX2NvbG9yX3Bvc3NpYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ICAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsK PiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gIAljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRq dXN0ZWRfbW9kZTsKPiArCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCWludCBp Owo+ICAKPiAgCWlmIChIQVNfR01DSChkZXZfcHJpdikpCj4gQEAgLTIzNDEsNyArMjM0MSw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfaGRtaV9jb21wdXRlX2Nsb2NrKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190 b19pbnRlbF9oZG1pKCZlbmNvZGVyLT5iYXNlKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9t b2RlOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJaW50IGJwYywgY2xv Y2sgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+ICAKPiAgCWlmIChhZGp1c3RlZF9tb2Rl LT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJMQ0xLKQo+IEBAIC0yMzgzLDcgKzIzODMsNyBAQCBz dGF0aWMgYm9vbCBpbnRlbF9oZG1pX2xpbWl0ZWRfY29sb3JfcmFuZ2UoY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfcwo+ICAJY29uc3Qgc3RydWN0IGludGVsX2RpZ2l0YWxfY29u bmVjdG9yX3N0YXRlICppbnRlbF9jb25uX3N0YXRlID0KPiAgCQl0b19pbnRlbF9kaWdpdGFsX2Nv bm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2Rl Owo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAKPiAgCS8qCj4gIAkgKiBP dXIgWUNiQ3Igb3V0cHV0IGlzIGFsd2F5cyBsaW1pdGVkIHJhbmdlLgo+IEBAIC0yNDExLDcgKzI0 MTEsNyBAQCBpbnQgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiAgewo+ICAJc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBlbmNf dG9faW50ZWxfaGRtaSgmZW5jb2Rlci0+YmFzZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBkcm1f ZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBl X2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IgPSBjb25uX3N0YXRlLT5jb25uZWN0b3I7Cj4gIAlzdHJ1Y3QgZHJtX3NjZGMgKnNjZGMg PSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGRtaS5zY2RjOwo+ICAJc3RydWN0IGludGVsX2Rp Z2l0YWxfY29ubmVjdG9yX3N0YXRlICppbnRlbF9jb25uX3N0YXRlID0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9sc3Bjb24uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfbHNwY29uLmMKPiBpbmRleCBmOGYxMzA4NjQzYTkuLjUx NDVmZjhiOTYyYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2xzcGNvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9s c3Bjb24uYwo+IEBAIC0xODksNyArMTg5LDcgQEAgdm9pZCBsc3Bjb25feWNiY3I0MjBfY29uZmln KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9pbmZvICppbmZvID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvOwo+ICAJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCQkJCSZjcnRj X3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJCQkJJmNydGNfc3RhdGUtPmh3LmFkanVz dGVkX21vZGU7Cj4gIAo+ICAJaWYgKGRybV9tb2RlX2lzXzQyMF9vbmx5KGluZm8sIGFkanVzdGVk X21vZGUpICYmCj4gIAkgICAgY29ubmVjdG9yLT55Y2Jjcl80MjBfYWxsb3dlZCkgewo+IEBAIC00 NzUsNyArNDc1LDcgQEAgdm9pZCBsc3Bjb25fc2V0X2luZm9mcmFtZXMoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9 IGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSk7Cj4gIAlzdHJ1Y3QgaW50ZWxfbHNwY29u ICpsc3Bjb24gPSAmZGlnX3BvcnQtPmxzcGNvbjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9t b2RlOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAKPiAgCWlmICghbHNw Y29uLT5hY3RpdmUpIHsKPiAgCQlEUk1fRVJST1IoIldyaXRpbmcgaW5mb2ZyYW1lcyB3aGlsZSBM U1BDT04gZGlzYWJsZWQgP1xuIik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfbHZkcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9sdmRzLmMKPiBpbmRleCAxMzg0MWQ3YzQ1NWIuLmYxN2Q2ZTAyNDYwZiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2x2ZHMuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfbHZkcy5jCj4gQEAgLTEzNSw3ICsxMzUsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9sdmRzX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4gIAllbHNlCj4gIAkJZmxhZ3MgfD0gRFJNX01PREVfRkxBR19QVlNZTkM7Cj4g IAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiAr CXBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwo+ICAKPiAgCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNSkKPiAgCQlwaXBlX2NvbmZpZy0+Z21jaF9wZml0Lmx2 ZHNfYm9yZGVyX2JpdHMgPQo+IEBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf bHZkc19nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXBpcGVf Y29uZmlnLT5nbWNoX3BmaXQuY29udHJvbCB8PSB0bXAgJiBQQU5FTF84VE82X0RJVEhFUl9FTkFC TEU7Cj4gIAl9Cj4gIAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Ns b2NrID0gcGlwZV9jb25maWctPnBvcnRfY2xvY2s7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2Nsb2NrID0gcGlwZV9jb25maWctPnBvcnRfY2xvY2s7Cj4gIH0KPiAgCj4g IHN0YXRpYyB2b2lkIGludGVsX2x2ZHNfcHBzX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTIzMSw3ICsyMzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9wcmVfZW5hYmxlX2x2ZHMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlzdHJ1 Y3QgaW50ZWxfbHZkc19lbmNvZGVyICpsdmRzX2VuY29kZXIgPSB0b19sdmRzX2VuY29kZXIoJmVu Y29kZXItPmJhc2UpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRv X2ludGVsX2NydGMocGlwZV9jb25maWctPmJhc2UuY3J0Yyk7Cj4gLQljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUg PSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNy dGMtPnBpcGU7Cj4gIAl1MzIgdGVtcDsKPiAgCj4gQEAgLTM5Miw3ICszOTIsNyBAQCBzdGF0aWMg aW50IGludGVsX2x2ZHNfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVs X2VuY29kZXIsCj4gIAkJdG9fbHZkc19lbmNvZGVyKCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKPiAg CXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9Cj4gIAkJbHZkc19lbmNv ZGVyLT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gLQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRq dXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVz dGVkX21vZGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMocGlwZV9jb25maWctPmJhc2UuY3J0Yyk7Cj4gIAl1bnNpZ25lZCBpbnQgbHZkc19icHA7Cj4g IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BhbmVs LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BhbmVsLmMKPiBpbmRleCBi YzE0ZTljMDI4NWEuLjVlM2ZkMzdkOTQ3MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3BhbmVsLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3BhbmVsLmMKPiBAQCAtMTc4LDcgKzE3OCw3IEBAIGludGVsX3BjaF9wYW5l bF9maXR0aW5nKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ICAJCQlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAkJCWludCBmaXR0aW5nX21vZGUpCj4gIHsK PiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAg CWludCB4ID0gMCwgeSA9IDAsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKPiAgCj4gIAkvKiBOYXRp dmUgbW9kZXMgZG9uJ3QgbmVlZCBmaXR0aW5nICovCj4gQEAgLTMwMCw3ICszMDAsNyBAQCBzdGF0 aWMgaW5saW5lIHUzMiBwYW5lbF9maXR0ZXJfc2NhbGluZyh1MzIgc291cmNlLCB1MzIgdGFyZ2V0 KQo+ICBzdGF0aWMgdm9pZCBpOTY1X3NjYWxlX2FzcGVjdChzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqcGlwZV9jb25maWcsCj4gIAkJCSAgICAgIHUzMiAqcGZpdF9jb250cm9sKQo+ICB7Cj4gLQlj b25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAl1MzIg c2NhbGVkX3dpZHRoID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheSAqCj4gIAkJcGlwZV9j b25maWctPnBpcGVfc3JjX2g7Cj4gIAl1MzIgc2NhbGVkX2hlaWdodCA9IHBpcGVfY29uZmlnLT5w aXBlX3NyY193ICoKPiBAQCAtMzIxLDcgKzMyMSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfc2NhbGVf YXNwZWN0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKPiAgCQkJICAgICAg dTMyICpwZml0X2NvbnRyb2wsIHUzMiAqcGZpdF9wZ21fcmF0aW9zLAo+ICAJCQkgICAgICB1MzIg KmJvcmRlcikKPiAgewo+IC0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUg PSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ ICAJdTMyIHNjYWxlZF93aWR0aCA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkgKgo+ICAJ CXBpcGVfY29uZmlnLT5waXBlX3NyY19oOwo+ICAJdTMyIHNjYWxlZF9oZWlnaHQgPSBwaXBlX2Nv bmZpZy0+cGlwZV9zcmNfdyAqCj4gQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIGludGVsX2dtY2hf cGFuZWxfZml0dGluZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgewo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9jcnRjLT5iYXNl LmRldik7Cj4gIAl1MzIgcGZpdF9jb250cm9sID0gMCwgcGZpdF9wZ21fcmF0aW9zID0gMCwgYm9y ZGVyID0gMDsKPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBp cGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCj4g IAkvKiBOYXRpdmUgbW9kZXMgZG9uJ3QgbmVlZCBmaXR0aW5nICovCj4gIAlpZiAoYWRqdXN0ZWRf bW9kZS0+Y3J0Y19oZGlzcGxheSA9PSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAmJgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BpcGVfY3JjLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BpcGVfY3JjLmMKPiBpbmRleCA2MjYw YTIwODI3MTkuLmZjNjAyNTMzYTYwMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3BpcGVfY3JjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3BpcGVfY3JjLmMKPiBAQCAtMzEzLDcgKzMxMyw3IEBAIGludGVsX2NydGNf Y3JjX3NldHVwX3dvcmthcm91bmRzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBib29sIGVuYWJs ZSkKPiAgCXBpcGVfY29uZmlnLT5jcmNfZW5hYmxlZCA9IGVuYWJsZTsKPiAgCj4gIAlpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikgJiYKPiAtCSAgICBwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUgJiYg Y3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYKPiArCSAgICBwaXBlX2NvbmZpZy0+aHcuYWN0aXZlICYm IGNydGMtPnBpcGUgPT0gUElQRV9BICYmCj4gIAkgICAgcGlwZV9jb25maWctPmNwdV90cmFuc2Nv ZGVyID09IFRSQU5TQ09ERVJfRURQKQo+ICAJCXBpcGVfY29uZmlnLT5iYXNlLm1vZGVfY2hhbmdl ZCA9IHRydWU7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYwo+ IGluZGV4IDIxMTcxMGY1MjE0Yy4uMzQ3MDA0OTgxY2ZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jCj4gQEAgLTUzNiwxMSArNTM2LDExIEBAIHRyYW5zY29k ZXJfaGFzX3BzcjIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHRyYW5z Y29kZXIgdHJhbnMpCj4gIAo+ICBzdGF0aWMgdTMyIGludGVsX2dldF9mcmFtZV90aW1lX3VzKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gIHsKPiAtCWlmICghY3N0YXRl IHx8ICFjc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJaWYgKCFjc3RhdGUgfHwgIWNzdGF0ZS0+aHcu YWN0aXZlKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldHVybiBESVZfUk9VTkRfVVAoMTAwMCAq IDEwMDAsCj4gLQkJCSAgICBkcm1fbW9kZV92cmVmcmVzaCgmY3N0YXRlLT5iYXNlLmFkanVzdGVk X21vZGUpKTsKPiArCQkJICAgIGRybV9tb2RlX3ZyZWZyZXNoKCZjc3RhdGUtPmh3LmFkanVzdGVk X21vZGUpKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtNjA1LDggKzYwNSw4IEBA IHN0YXRpYyBib29sIGludGVsX3BzcjJfY29uZmlnX3ZhbGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCj4gIAkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4g IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50 ZWxfZHApOwo+IC0JaW50IGNydGNfaGRpc3BsYXkgPSBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y19oZGlzcGxheTsKPiAtCWludCBjcnRjX3ZkaXNwbGF5ID0gY3J0Y19zdGF0ZS0+ YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfdmRpc3BsYXk7Cj4gKwlpbnQgY3J0Y19oZGlzcGxheSA9 IGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0Y19oZGlzcGxheTsKPiArCWludCBjcnRj X3ZkaXNwbGF5ID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX3ZkaXNwbGF5Owo+ ICAJaW50IHBzcl9tYXhfaCA9IDAsIHBzcl9tYXhfdiA9IDA7Cj4gIAo+ICAJaWYgKCFkZXZfcHJp di0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0KQo+IEBAIC02NzIsNyArNjcyLDcgQEAgdm9pZCBpbnRl bF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHAp Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRl bF9kcCk7Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9 Cj4gLQkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkmY3J0Y19zdGF0ZS0+ aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCWludCBwc3Jfc2V0dXBfdGltZTsKPiAgCj4gIAlpZiAoIUNB Tl9QU1IoZGV2X3ByaXYpKQo+IEBAIC0xMTM5LDcgKzExMzksNyBAQCBzdGF0aWMgaW50IGludGVs X3Bzcl9mYXN0c2V0X2ZvcmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg Cj4gIAkJaW50ZWxfY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7 Cj4gIAo+IC0JCWlmIChpbnRlbF9jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSAmJiBpbnRlbF9jcnRj X3N0YXRlLT5oYXNfcHNyKSB7Cj4gKwkJaWYgKGludGVsX2NydGNfc3RhdGUtPmh3LmFjdGl2ZSAm JiBpbnRlbF9jcnRjX3N0YXRlLT5oYXNfcHNyKSB7Cj4gIAkJCS8qIE1hcmsgbW9kZSBhcyBjaGFu Z2VkIHRvIHRyaWdnZXIgYSBwaXBlLT51cGRhdGUoKSAqLwo+ICAJCQlpbnRlbF9jcnRjX3N0YXRl LT5iYXNlLm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gIAkJCWJyZWFrOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nkdm8uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfc2R2by5jCj4gaW5kZXggNDdmNWQ4N2E5MzhhLi45N2FlOGNj MTMxNGUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9z ZHZvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nkdm8uYwo+ IEBAIC0xMDg3LDcgKzEwODcsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9zZHZvX2NvbXB1dGVfYXZp X2luZm9mcmFtZShzdHJ1Y3QgaW50ZWxfc2R2byAqaW50ZWxfc2R2bywKPiAgewo+ICAJc3RydWN0 IGhkbWlfYXZpX2luZm9mcmFtZSAqZnJhbWUgPSAmY3J0Y19zdGF0ZS0+aW5mb2ZyYW1lcy5hdmku YXZpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+ IC0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJJmNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGU7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCWlmICghY3J0Y19zdGF0ZS0+aGFz X2hkbWlfc2luaykKPiBAQCAtMTI3Niw4ICsxMjc2LDggQEAgc3RhdGljIGludCBpbnRlbF9zZHZv X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXRvX2lu dGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlKGNvbm5fc3RhdGUpOwo+ICAJc3RydWN0IGludGVsX3Nk dm9fY29ubmVjdG9yICppbnRlbF9zZHZvX2Nvbm5lY3RvciA9Cj4gIAkJdG9faW50ZWxfc2R2b19j b25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiAtCXN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4g LQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5tb2Rl Owo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25m aWctPmh3LmFkanVzdGVkX21vZGU7Cj4gKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9 ICZwaXBlX2NvbmZpZy0+aHcubW9kZTsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJmb3JjaW5nIGJw YyB0byA4IGZvciBTRFZPXG4iKTsKPiAgCXBpcGVfY29uZmlnLT5waXBlX2JwcCA9IDgqMzsKPiBA QCAtMTQzMCwxMiArMTQzMCwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX3ByZV9lbmFibGUo c3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gIHsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfZW5jb2Rlci0+YmFzZS5kZXYp Owo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PmJhc2UuY3J0Yyk7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRf bW9kZSA9ICZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5ody5hZGp1c3Rl ZF9tb2RlOwo+ICAJY29uc3Qgc3RydWN0IGludGVsX3Nkdm9fY29ubmVjdG9yX3N0YXRlICpzZHZv X3N0YXRlID0KPiAgCQl0b19pbnRlbF9zZHZvX2Nvbm5lY3Rvcl9zdGF0ZShjb25uX3N0YXRlKTsK PiAgCWNvbnN0IHN0cnVjdCBpbnRlbF9zZHZvX2Nvbm5lY3RvciAqaW50ZWxfc2R2b19jb25uZWN0 b3IgPQo+ICAJCXRvX2ludGVsX3Nkdm9fY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7 Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjX3N0YXRlLT5i YXNlLm1vZGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRj X3N0YXRlLT5ody5tb2RlOwo+ICAJc3RydWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8gPSB0b19z ZHZvKGludGVsX2VuY29kZXIpOwo+ICAJdTMyIHNkdm94Owo+ICAJc3RydWN0IGludGVsX3Nkdm9f aW5fb3V0X21hcCBpbl9vdXQ7Cj4gQEAgLTE2MjksNyArMTYyOSw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX3Nkdm9fZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJ ZmxhZ3MgfD0gRFJNX01PREVfRkxBR19OVlNZTkM7Cj4gIAl9Cj4gIAo+IC0JcGlwZV9jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyB8PSBmbGFnczsKPiArCXBpcGVfY29uZmlnLT5ody5h ZGp1c3RlZF9tb2RlLmZsYWdzIHw9IGZsYWdzOwo+ICAKPiAgCS8qCj4gIAkgKiBwaXhlbCBtdWx0 aXBsaWVyIHJlYWRvdXQgaXMgdHJpY2t5OiBPbmx5IG9uIGk5MTVnL2dtIGl0IGlzIHN0b3JlZCBp bgo+IEBAIC0xNjQ5LDcgKzE2NDksNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZHZvX2dldF9jb25m aWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlpZiAocGlwZV9jb25maWctPnBp eGVsX211bHRpcGxpZXIpCj4gIAkJZG90Y2xvY2sgLz0gcGlwZV9jb25maWctPnBpeGVsX211bHRp cGxpZXI7Cj4gIAo+IC0JcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2Nr ID0gZG90Y2xvY2s7Cj4gKwlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2Nr ID0gZG90Y2xvY2s7Cj4gIAo+ICAJLyogQ3Jvc3MgY2hlY2sgdGhlIHBvcnQgcGl4ZWwgbXVsdGlw bGllciB3aXRoIHRoZSBzZHZvIGVuY29kZXIgc3RhdGUuICovCj4gIAlpZiAoaW50ZWxfc2R2b19n ZXRfdmFsdWUoaW50ZWxfc2R2bywgU0RWT19DTURfR0VUX0NMT0NLX1JBVEVfTVVMVCwKPiBAQCAt MTcwMSw3ICsxNzAxLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2R2b19lbmFibGVfYXVkaW8oc3Ry dWN0IGludGVsX3Nkdm8gKmludGVsX3Nkdm8sCj4gIAkJCQkgICAgY29uc3Qgc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGNvbm5fc3RhdGUtPmNvbm5lY3RvcjsKPiAgCXU4ICpl bGQgPSBjb25uZWN0b3ItPmVsZDsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggNWFlMTJhYjNjNWI3Li5lZjBjYTdjNmQxMWYgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMKPiBAQCAtODMs NyArODMsNyBAQCB2b2lkIGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT5iYXNlLmNydGMpOwo+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7 Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZuZXdf Y3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmbmV3X2NydGNfc3RhdGUtPmh3LmFkanVzdGVkX21v ZGU7Cj4gIAlsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoMSk7Cj4gIAlp bnQgc2NhbmxpbmUsIG1pbiwgbWF4LCB2Ymxhbmtfc3RhcnQ7Cj4gIAl3YWl0X3F1ZXVlX2hlYWRf dCAqd3EgPSBkcm1fY3J0Y192Ymxhbmtfd2FpdHF1ZXVlKCZjcnRjLT5iYXNlKTsKPiBAQCAtMTUx Myw3ICsxNTEzLDcgQEAgZzR4X3Nwcml0ZV9jaGVja19zY2FsaW5nKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJY29uc3Qgc3RydWN0IGRybV9yZWN0ICpkc3QgPSAmcGxh bmVfc3RhdGUtPmJhc2UuZHN0Owo+ICAJaW50IHNyY194LCBzcmNfdywgc3JjX2gsIGNydGNfdywg Y3J0Y19oOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUg PQo+IC0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJJmNydGNfc3RhdGUt Pmh3LmFkanVzdGVkX21vZGU7Cj4gIAl1bnNpZ25lZCBpbnQgc3RyaWRlID0gcGxhbmVfc3RhdGUt PmNvbG9yX3BsYW5lWzBdLnN0cmlkZTsKPiAgCXVuc2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0 LT5jcHBbMF07Cj4gIAl1bnNpZ25lZCBpbnQgd2lkdGhfYnl0ZXM7Cj4gQEAgLTE3MjcsOCArMTcy Nyw4IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2ZiKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJfQo+ICAKPiAgCS8qIFktdGlsaW5nIGlzIG5vdCBz dXBwb3J0ZWQgaW4gSUYtSUQgSW50ZXJsYWNlIG1vZGUgKi8KPiAtCWlmIChjcnRjX3N0YXRlLT5i YXNlLmVuYWJsZSAmJgo+IC0JICAgIGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFn cyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFICYmCj4gKwlpZiAoY3J0Y19zdGF0ZS0+aHcuZW5h YmxlICYmCj4gKwkgICAgY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9N T0RFX0ZMQUdfSU5URVJMQUNFICYmCj4gIAkgICAgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRCB8fAo+ICAJICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEIHx8Cj4gIAkgICAgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRF9DQ1MgfHwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF90di5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90di5jCj4gaW5k ZXggNzA3MjZiNDgxMjQ0Li5lODAwZDQ1YjgxM2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF90di5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF90di5jCj4gQEAgLTEwODUsNyArMTA4NSw3IEBAIGludGVsX3R2X2dldF9j b25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIHsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJ c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZwaXBlX2NvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9k ZTsKPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlIG1vZGUgPSB7fTsKPiAgCXUzMiB0dl9jdGws IGhjdGwxLCBoY3RsMywgdmN0bDEsIHZjdGwyLCB0bXA7Cj4gIAlzdHJ1Y3QgdHZfbW9kZSB0dl9t b2RlID0ge307Cj4gQEAgLTExODgsNyArMTE4OCw3IEBAIGludGVsX3R2X2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXRvX2ludGVsX3R2X2Nvbm5lY3Rv cl9zdGF0ZShjb25uX3N0YXRlKTsKPiAgCWNvbnN0IHN0cnVjdCB0dl9tb2RlICp0dl9tb2RlID0g aW50ZWxfdHZfbW9kZV9maW5kKGNvbm5fc3RhdGUpOwo+ICAJc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2Rl Owo+ICsJCSZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCWludCBoZGlzcGxheSA9 IGFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXk7Cj4gIAlpbnQgdmRpc3BsYXkgPSBhZGp1c3Rl ZF9tb2RlLT5jcnRjX3ZkaXNwbGF5Owo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF92ZHNjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX3Zkc2MuYwo+IGluZGV4IGQ0ZmI3ZjE2ZjlmNi4uNmEzMzhhODNhYWVkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfdmRzYy5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF92ZHNjLmMKPiBAQCAtMzI5LDggKzMy OSw4IEBAIGludCBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKPiAgCWludCBjb2x1bW5faW5kZXggPSAwOwo+ICAJdTggbGluZV9idWZfZGVwdGgg PSAwOwo+ICAKPiAtCXZkc2NfY2ZnLT5waWNfd2lkdGggPSBwaXBlX2NvbmZpZy0+YmFzZS5hZGp1 c3RlZF9tb2RlLmNydGNfaGRpc3BsYXk7Cj4gLQl2ZHNjX2NmZy0+cGljX2hlaWdodCA9IHBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y192ZGlzcGxheTsKPiArCXZkc2NfY2ZnLT5w aWNfd2lkdGggPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5Owo+ ICsJdmRzY19jZmctPnBpY19oZWlnaHQgPSBwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZkaXNwbGF5Owo+ICAJdmRzY19jZmctPnNsaWNlX3dpZHRoID0gRElWX1JPVU5EX1VQKHZk c2NfY2ZnLT5waWNfd2lkdGgsCj4gIAkJCQkJICAgICBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5z bGljZV9jb3VudCk7Cj4gIAkvKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L3Zsdl9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvdmx2X2RzaS5j Cj4gaW5kZXggNTAwNjRjZGUwNzI0Li4zYmY4MzgyNzlmYzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L3Zsdl9kc2kuYwo+IEBAIC0yNjMsNyArMjYzLDcgQEAgc3RhdGljIGludCBp bnRlbF9kc2lfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g IAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSBpbnRlbF9kc2ktPmF0 dGFjaGVkX2Nvbm5lY3RvcjsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICpmaXhlZF9tb2RlID0gaW50ZWxfY29ubmVjdG9yLT5wYW5lbC5maXhlZF9tb2RlOwo+ IC0Jc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlID0gJnBpcGVfY29uZmlnLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJaW50IHJldDsKPiAg Cj4gIAlEUk1fREVCVUdfS01TKCJcbiIpOwo+IEBAIC0xMDMyLDcgKzEwMzIsNyBAQCBzdGF0aWMg dm9pZCBieHRfZHNpX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkJCQkmcGlwZV9jb25maWct PmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiArCQkJCQkmcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21v ZGU7Cj4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZV9zdzsKPiAgCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5j cnRjKTsKPiAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2ko JmVuY29kZXItPmJhc2UpOwo+IEBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBzdGF0aWMgdm9pZCBieHRf ZHNpX2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJ CWNydGNfaGJsYW5rX3N0YXJ0X3N3LCBjcnRjX2hibGFua19lbmRfc3c7Cj4gIAo+ICAJLyogRklY TUU6IGh3IHJlYWRvdXQgc2hvdWxkIG5vdCBkZXBlbmQgb24gU1cgc3RhdGUgKi8KPiAtCWFkanVz dGVkX21vZGVfc3cgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwlhZGp1 c3RlZF9tb2RlX3N3ID0gJmNydGMtPmNvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCj4gIAkv Kgo+ICAJICogQXRsZWFzdCBvbmUgcG9ydCBpcyBhY3RpdmUgYXMgZW5jb2Rlci0+Z2V0X2NvbmZp ZyBjYWxsZWQgb25seSBpZgo+IEBAIC0xMjA0LDcgKzEyMDQsNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9kc2lfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCX0KPiAg Cj4gIAlpZiAocGNsaykgewo+IC0JCXBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0 Y19jbG9jayA9IHBjbGs7Cj4gKwkJcGlwZV9jb25maWctPmh3LmFkanVzdGVkX21vZGUuY3J0Y19j bG9jayA9IHBjbGs7Cj4gIAkJcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPSBwY2xrOwo+ICAJfQo+ ICB9Cj4gQEAgLTEzMTcsNyArMTMxNyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKHBpcGVfY29uZmlnLT5iYXNlLmNydGMpOwo+ICAJ c3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaShlbmNvZGVyKTsK PiAtCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAg CWVudW0gcG9ydCBwb3J0Owo+ICAJdW5zaWduZWQgaW50IGJwcCA9IG1pcGlfZHNpX3BpeGVsX2Zv cm1hdF90b19icHAoaW50ZWxfZHNpLT5waXhlbF9mb3JtYXQpOwo+ICAJdTMyIHZhbCwgdG1wOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggYWRhNTdlZWU5MTRhLi41MWU4 M2RhMjE3MzggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0yNzUx LDExICsyNzUxLDExIEBAIHN0YXRpYyBpbnQgaTkxNV9kaXNwbGF5X2luZm8oc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICp1bnVzZWQpCj4gIAo+ICAJCXNlcV9wcmludGYobSwgIkNSVEMgJWQ6IHBp cGU6ICVjLCBhY3RpdmU9JXMsIChzaXplPSVkeCVkKSwgZGl0aGVyPSVzLCBicHA9JWRcbiIsCj4g IAkJCSAgIGNydGMtPmJhc2UuYmFzZS5pZCwgcGlwZV9uYW1lKGNydGMtPnBpcGUpLAo+IC0JCQkg ICB5ZXNubyhwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpLAo+ICsJCQkgICB5ZXNubyhwaXBlX2Nv bmZpZy0+aHcuYWN0aXZlKSwKPiAgCQkJICAgcGlwZV9jb25maWctPnBpcGVfc3JjX3csIHBpcGVf Y29uZmlnLT5waXBlX3NyY19oLAo+ICAJCQkgICB5ZXNubyhwaXBlX2NvbmZpZy0+ZGl0aGVyKSwg cGlwZV9jb25maWctPnBpcGVfYnBwKTsKPiAgCj4gLQkJaWYgKHBpcGVfY29uZmlnLT5iYXNlLmFj dGl2ZSkgewo+ICsJCWlmIChwaXBlX2NvbmZpZy0+aHcuYWN0aXZlKSB7Cj4gIAkJCXN0cnVjdCBp bnRlbF9wbGFuZSAqY3Vyc29yID0KPiAgCQkJCXRvX2ludGVsX3BsYW5lKGNydGMtPmJhc2UuY3Vy c29yKTsKPiAgCj4gQEAgLTQyMTgsNyArNDIxOCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcnJzX2N0 bF9zZXQodm9pZCAqZGF0YSwgdTY0IHZhbCkKPiAgCj4gIAkJY3J0Y19zdGF0ZSA9IHRvX2ludGVs X2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gIAo+IC0JCWlmICghY3J0Y19zdGF0ZS0+ YmFzZS5hY3RpdmUgfHwKPiArCQlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSB8fAo+ICAJCSAg ICAhY3J0Y19zdGF0ZS0+aGFzX2RycnMpCj4gIAkJCWdvdG8gb3V0Owo+ICAKPiBAQCAtNDMwMCw3 ICs0MzAwLDcgQEAgaTkxNV9maWZvX3VuZGVycnVuX3Jlc2V0X3dyaXRlKHN0cnVjdCBmaWxlICpm aWxwLAo+ICAJCQkJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZjb21t aXQtPmZsaXBfZG9uZSk7Cj4gIAkJfQo+ICAKPiAtCQlpZiAoIXJldCAmJiBjcnRjX3N0YXRlLT5i YXNlLmFjdGl2ZSkgewo+ICsJCWlmICghcmV0ICYmIGNydGNfc3RhdGUtPmh3LmFjdGl2ZSkgewo+ ICAJCQlEUk1fREVCVUdfS01TKCJSZS1hcm1pbmcgRklGTyB1bmRlcnJ1bnMgb24gcGlwZSAlY1xu IiwKPiAgCQkJCSAgICAgIHBpcGVfbmFtZShpbnRlbF9jcnRjLT5waXBlKSk7Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IGU2ODBkZjc1YTk3MC4uOTY3MWZmMjljMjVmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTc5OCw3ICs3OTgsNyBAQCBzdGF0aWMgYm9v bCBpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5l KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAgCj4gIAkvKiBGSVhNRSBjaGVjayB0aGUgJ2Vu YWJsZScgaW5zdGVhZCAqLwo+IC0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiArCWlm ICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAkvKgo+ IEBAIC04NTEsNyArODUxLDcgQEAgc3RhdGljIHZvaWQgcGluZXZpZXdfdXBkYXRlX3dtKHN0cnVj dCBpbnRlbF9jcnRjICp1bnVzZWRfY3J0YykKPiAgCWNydGMgPSBzaW5nbGVfZW5hYmxlZF9jcnRj KGRldl9wcml2KTsKPiAgCWlmIChjcnRjKSB7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCQkmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVk X21vZGU7Cj4gKwkJCSZjcnRjLT5jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAkJY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPQo+ICAJCQljcnRjLT5iYXNlLnByaW1hcnktPnN0 YXRlLT5mYjsKPiAgCQlpbnQgY3BwID0gZmItPmZvcm1hdC0+Y3BwWzBdOwo+IEBAIC0xMDg3LDcg KzEwODcsNyBAQCBzdGF0aWMgdTE2IGc0eF9jb21wdXRlX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRv X2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAgCWNvbnN0 IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2Rl Owo+ICAJdW5zaWduZWQgaW50IGxhdGVuY3kgPSBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lbbGV2 ZWxdICogMTA7Cj4gIAl1bnNpZ25lZCBpbnQgY2xvY2ssIGh0b3RhbCwgY3BwLCB3aWR0aCwgd207 Cj4gIAo+IEBAIC0xMzk5LDcgKzEzOTksNyBAQCBzdGF0aWMgaW50IGc0eF9jb21wdXRlX2ludGVy bWVkaWF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4gIAlj b25zdCBzdHJ1Y3QgZzR4X3dtX3N0YXRlICphY3RpdmUgPSAmb2xkX2NydGNfc3RhdGUtPndtLmc0 eC5vcHRpbWFsOwo+ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZDsKPiAgCj4gLQlpZiAoIW5ld19j cnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgm bmV3X2NydGNfc3RhdGUtPmJhc2UpKSB7Cj4gKwlpZiAoIW5ld19jcnRjX3N0YXRlLT5ody5hY3Rp dmUgfHwgZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoJm5ld19jcnRjX3N0YXRlLT5iYXNl KSkgewo+ICAJCSppbnRlcm1lZGlhdGUgPSAqb3B0aW1hbDsKPiAgCj4gIAkJaW50ZXJtZWRpYXRl LT5jeHNyID0gZmFsc2U7Cj4gQEAgLTE1OTMsNyArMTU5Myw3IEBAIHN0YXRpYyB1MTYgdmx2X2Nv bXB1dGVfd21fbGV2ZWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3Rh dGUtPmJhc2UucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7 Cj4gKwkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gIAl1bnNpZ25lZCBpbnQgY2xv Y2ssIGh0b3RhbCwgY3BwLCB3aWR0aCwgd207Cj4gIAo+ICAJaWYgKGRldl9wcml2LT53bS5wcmlf bGF0ZW5jeVtsZXZlbF0gPT0gMCkKPiBAQCAtMjAzMiw3ICsyMDMyLDcgQEAgc3RhdGljIGludCB2 bHZfY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlKQo+ICAJY29uc3Qgc3RydWN0IHZsdl93bV9zdGF0ZSAqYWN0aXZlID0gJm9sZF9j cnRjX3N0YXRlLT53bS52bHYub3B0aW1hbDsKPiAgCWludCBsZXZlbDsKPiAgCj4gLQlpZiAoIW5l d19jcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNl dCgmbmV3X2NydGNfc3RhdGUtPmJhc2UpKSB7Cj4gKwlpZiAoIW5ld19jcnRjX3N0YXRlLT5ody5h Y3RpdmUgfHwgZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQoJm5ld19jcnRjX3N0YXRlLT5i YXNlKSkgewo+ICAJCSppbnRlcm1lZGlhdGUgPSAqb3B0aW1hbDsKPiAgCj4gIAkJaW50ZXJtZWRp YXRlLT5jeHNyID0gZmFsc2U7Cj4gQEAgLTIxODgsNyArMjE4OCw3IEBAIHN0YXRpYyB2b2lkIGk5 NjVfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICp1bnVzZWRfY3J0YykKPiAgCQkvKiBzZWxm LXJlZnJlc2ggaGFzIG11Y2ggaGlnaGVyIGxhdGVuY3kgKi8KPiAgCQlzdGF0aWMgY29uc3QgaW50 IHNyX2xhdGVuY3lfbnMgPSAxMjAwMDsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqYWRqdXN0ZWRfbW9kZSA9Cj4gLQkJCSZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9k ZTsKPiArCQkJJmNydGMtPmNvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCQljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9Cj4gIAkJCWNydGMtPmJhc2UucHJpbWFyeS0+c3RhdGUt PmZiOwo+ICAJCWludCBjbG9jayA9IGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2s7Cj4gQEAgLTIy NjksNyArMjI2OSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9j cnRjICp1bnVzZWRfY3J0YykKPiAgCWNydGMgPSBpbnRlbF9nZXRfY3J0Y19mb3JfcGxhbmUoZGV2 X3ByaXYsIFBMQU5FX0EpOwo+ICAJaWYgKGludGVsX2NydGNfYWN0aXZlKGNydGMpKSB7Cj4gIAkJ Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCQkmY3J0 Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJCSZjcnRjLT5jb25maWctPmh3LmFk anVzdGVkX21vZGU7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPQo+ICAJ CQljcnRjLT5iYXNlLnByaW1hcnktPnN0YXRlLT5mYjsKPiAgCQlpbnQgY3BwOwo+IEBAIC0yMjk2 LDcgKzIyOTYsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0 YyAqdW51c2VkX2NydGMpCj4gIAljcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BsYW5lKGRldl9w cml2LCBQTEFORV9CKTsKPiAgCWlmIChpbnRlbF9jcnRjX2FjdGl2ZShjcnRjKSkgewo+ICAJCWNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiAtCQkJJmNydGMt PmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJCQkmY3J0Yy0+Y29uZmlnLT5ody5hZGp1 c3RlZF9tb2RlOwo+ICAJCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0KPiAgCQkJ Y3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7Cj4gIAkJaW50IGNwcDsKPiBAQCAtMjM0NCw3 ICsyMzQ0LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfd20oc3RydWN0IGludGVsX2NydGMg KnVudXNlZF9jcnRjKQo+ICAJCS8qIHNlbGYtcmVmcmVzaCBoYXMgbXVjaCBoaWdoZXIgbGF0ZW5j eSAqLwo+ICAJCXN0YXRpYyBjb25zdCBpbnQgc3JfbGF0ZW5jeV9ucyA9IDYwMDA7Cj4gIAkJY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQo+IC0JCQkmZW5hYmxl ZC0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJCSZlbmFibGVkLT5jb25maWctPmh3 LmFkanVzdGVkX21vZGU7Cj4gIAkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPQo+ ICAJCQllbmFibGVkLT5iYXNlLnByaW1hcnktPnN0YXRlLT5mYjsKPiAgCQlpbnQgY2xvY2sgPSBh ZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrOwo+IEBAIC0yNDAyLDcgKzI0MDIsNyBAQCBzdGF0aWMg dm9pZCBpODQ1X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMpCj4gIAlp ZiAoY3J0YyA9PSBOVUxMKQo+ICAJCXJldHVybjsKPiAgCj4gLQlhZGp1c3RlZF9tb2RlID0gJmNy dGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJYWRqdXN0ZWRfbW9kZSA9ICZjcnRj LT5jb25maWctPmh3LmFkanVzdGVkX21vZGU7Cj4gIAlwbGFuZWFfd20gPSBpbnRlbF9jYWxjdWxh dGVfd20oYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPiAgCQkJCSAgICAgICAmaTg0NV93bV9p bmZvLAo+ICAJCQkJICAgICAgIGRldl9wcml2LT5kaXNwbGF5LmdldF9maWZvX3NpemUoZGV2X3By aXYsIFBMQU5FX0EpLAo+IEBAIC0yNDkyLDcgKzI0OTIsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21w dXRlX3ByaV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CQlyZXR1cm4gbWV0aG9kMTsKPiAgCj4gIAltZXRob2QyID0gaWxrX3dtX21ldGhvZDIoY3J0Y19z dGF0ZS0+cGl4ZWxfcmF0ZSwKPiAtCQkJCSBjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUu Y3J0Y19odG90YWwsCj4gKwkJCQkgY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0 b3RhbCwKPiAgCQkJCSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2UuZHN0KSwKPiAg CQkJCSBjcHAsIG1lbV92YWx1ZSk7Cj4gIAo+IEBAIC0yNTIwLDcgKzI1MjAsNyBAQCBzdGF0aWMg dTMyIGlsa19jb21wdXRlX3Nwcl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiAgCj4gIAltZXRob2QxID0gaWxrX3dtX21ldGhvZDEoY3J0Y19zdGF0ZS0+cGl4 ZWxfcmF0ZSwgY3BwLCBtZW1fdmFsdWUpOwo+ICAJbWV0aG9kMiA9IGlsa193bV9tZXRob2QyKGNy dGNfc3RhdGUtPnBpeGVsX3JhdGUsCj4gLQkJCQkgY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9t b2RlLmNydGNfaHRvdGFsLAo+ICsJCQkJIGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuY3J0 Y19odG90YWwsCj4gIAkJCQkgZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLmRzdCks Cj4gIAkJCQkgY3BwLCBtZW1fdmFsdWUpOwo+ICAJcmV0dXJuIG1pbihtZXRob2QxLCBtZXRob2Qy KTsKPiBAQCAtMjU0NSw3ICsyNTQ1LDcgQEAgc3RhdGljIHUzMiBpbGtfY29tcHV0ZV9jdXJfd20o Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAljcHAgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5jcHBbMF07Cj4gIAo+ICAJcmV0dXJuIGlsa193bV9t ZXRob2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCj4gLQkJCSAgICAgIGNydGNfc3RhdGUtPmJh c2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKPiArCQkJICAgICAgY3J0Y19zdGF0ZS0+aHcu YWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKPiAgCQkJICAgICAgZHJtX3JlY3Rfd2lkdGgoJnBs YW5lX3N0YXRlLT5iYXNlLmRzdCksCj4gIAkJCSAgICAgIGNwcCwgbWVtX3ZhbHVlKTsKPiAgfQo+ IEBAIC0yNzY5LDEwICsyNzY5LDEwIEBAIGhzd19jb21wdXRlX2xpbmV0aW1lX3dtKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJY29uc3Qgc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQo+ICAJCXRvX2ludGVsX2F0b21pY19zdGF0ZShj cnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICphZGp1c3RlZF9tb2RlID0KPiAtCQkmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ ICsJCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJdTMyIGxpbmV0aW1lLCBpcHNf bGluZXRpbWU7Cj4gIAo+IC0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiArCWlmICgh Y3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQo+ICAJCXJldHVybiAwOwo+ICAJaWYgKFdBUk5fT04oYWRq dXN0ZWRfbW9kZS0+Y3J0Y19jbG9jayA9PSAwKSkKPiAgCQlyZXR1cm4gMDsKPiBAQCAtMzEwNCw3 ICszMTA0LDcgQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICAJCQljdXJzdGF0ZSA9IHBsYW5lX3N0YXRlOwo+ICAJ fQo+ICAKPiAtCXBpcGVfd20tPnBpcGVfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZl Owo+ICsJcGlwZV93bS0+cGlwZV9lbmFibGVkID0gY3J0Y19zdGF0ZS0+aHcuYWN0aXZlOwo+ICAJ aWYgKHNwcnN0YXRlKSB7Cj4gIAkJcGlwZV93bS0+c3ByaXRlc19lbmFibGVkID0gc3Byc3RhdGUt PmJhc2UudmlzaWJsZTsKPiAgCQlwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9IHNwcnN0YXRlLT5i YXNlLnZpc2libGUgJiYKPiBAQCAtMzE3Nyw3ICszMTc3LDcgQEAgc3RhdGljIGludCBpbGtfY29t cHV0ZV9pbnRlcm1lZGlhdGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld3N0YXRlKQo+ ICAJICogYW5kIGFmdGVyIHRoZSB2YmxhbmsuCj4gIAkgKi8KPiAgCSphID0gbmV3c3RhdGUtPndt Lmlsay5vcHRpbWFsOwo+IC0JaWYgKCFuZXdzdGF0ZS0+YmFzZS5hY3RpdmUgfHwgZHJtX2F0b21p Y19jcnRjX25lZWRzX21vZGVzZXQoJm5ld3N0YXRlLT5iYXNlKSB8fAo+ICsJaWYgKCFuZXdzdGF0 ZS0+aHcuYWN0aXZlIHx8IGRybV9hdG9taWNfY3J0Y19uZWVkc19tb2Rlc2V0KCZuZXdzdGF0ZS0+ YmFzZSkgfHwKPiAgCSAgICBpbnRlbF9zdGF0ZS0+c2tpcF9pbnRlcm1lZGlhdGVfd20pCj4gIAkJ cmV0dXJuIDA7Cj4gIAo+IEBAIC0zNzc5LDcgKzM3NzksNyBAQCBib29sIGludGVsX2Nhbl9lbmFi bGVfc2FndihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCWNydGMgPSBpbnRl bF9nZXRfY3J0Y19mb3JfcGlwZShkZXZfcHJpdiwgcGlwZSk7Cj4gIAljcnRjX3N0YXRlID0gdG9f aW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKPiAgCj4gLQlpZiAoY3J0Y19zdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4g KwlpZiAoY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdf SU5URVJMQUNFKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlmb3JfZWFjaF9pbnRlbF9wbGFu ZV9vbl9jcnRjKGRldiwgY3J0YywgcGxhbmUpIHsKPiBAQCAtMzgyOSw3ICszODI5LDcgQEAgc3Rh dGljIHUxNiBpbnRlbF9nZXRfZGRiX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKPiAgCQlyZXR1cm4gZGRiX3Np emUgLSA0OyAvKiA0IGJsb2NrcyBmb3IgYnlwYXNzIHBhdGggYWxsb2NhdGlvbiAqLwo+ICAKPiAt CWFkanVzdGVkX21vZGUgPSAmY3J0Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJYWRq dXN0ZWRfbW9kZSA9ICZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJdG90YWxfZGF0 YV9idyA9IHRvdGFsX2RhdGFfcmF0ZSAqIGRybV9tb2RlX3ZyZWZyZXNoKGFkanVzdGVkX21vZGUp Owo+ICAKPiAgCS8qCj4gQEAgLTM4NjcsNyArMzg2Nyw3IEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxs b2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJdTE2 IGRkYl9zaXplOwo+ICAJdTMyIGk7Cj4gIAo+IC0JaWYgKFdBUk5fT04oIXN0YXRlKSB8fCAhY3J0 Y19zdGF0ZS0+YmFzZS5hY3RpdmUpIHsKPiArCWlmIChXQVJOX09OKCFzdGF0ZSkgfHwgIWNydGNf c3RhdGUtPmh3LmFjdGl2ZSkgewo+ICAJCWFsbG9jLT5zdGFydCA9IDA7Cj4gIAkJYWxsb2MtPmVu ZCA9IDA7Cj4gIAkJKm51bV9hY3RpdmUgPSBod2VpZ2h0OChkZXZfcHJpdi0+YWN0aXZlX3BpcGVz KTsKPiBAQCAtMzkwNiwxMSArMzkwNiwxMSBAQCBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25f bGltaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCSAqLwo+ICAJZm9y X2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoaW50ZWxfc3RhdGUsIGNydGMsIGNydGNfc3Rh dGUsIGkpIHsKPiAgCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9k ZSA9Cj4gLQkJCSZjcnRjX3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gKwkJCSZjcnRjX3N0 YXRlLT5ody5hZGp1c3RlZF9tb2RlOwo+ICAJCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsK PiAgCQlpbnQgaGRpc3BsYXksIHZkaXNwbGF5Owo+ICAKPiAtCQlpZiAoIWNydGNfc3RhdGUtPmJh c2UuZW5hYmxlKQo+ICsJCWlmICghY3J0Y19zdGF0ZS0+aHcuZW5hYmxlKQo+ICAJCQljb250aW51 ZTsKPiAgCj4gIAkJZHJtX21vZGVfZ2V0X2h2X3RpbWluZyhhZGp1c3RlZF9tb2RlLCAmaGRpc3Bs YXksICZ2ZGlzcGxheSk7Cj4gQEAgLTQwOTksNyArNDA5OSw3IEBAIHNrbF9waXBlX2Rvd25zY2Fs ZV9hbW91bnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHsK PiAgCXVpbnRfZml4ZWRfMTZfMTZfdCBwaXBlX2Rvd25zY2FsZSA9IHUzMl90b19maXhlZDE2KDEp Owo+ICAKPiAtCWlmICghY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCj4gKwlpZiAoIWNydGNfc3Rh dGUtPmh3LmVuYWJsZSkKPiAgCQlyZXR1cm4gcGlwZV9kb3duc2NhbGU7Cj4gIAo+ICAJaWYgKGNy dGNfc3RhdGUtPnBjaF9wZml0LmVuYWJsZWQpIHsKPiBAQCAtNDEzOSw3ICs0MTM5LDcgQEAgaW50 IHNrbF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLAo+ICAJdWludF9maXhlZF8xNl8xNl90IHBpcGVfZG93bnNjYWxlOwo+ICAJdWludF9maXhl ZF8xNl8xNl90IG1heF9kb3duc2NhbGUgPSB1MzJfdG9fZml4ZWQxNigxKTsKPiAgCj4gLQlpZiAo IWNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQo+ICsJaWYgKCFjcnRjX3N0YXRlLT5ody5lbmFibGUp Cj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaW50ZWxfYXRvbWljX2NydGNfc3RhdGVfZm9yX2VhY2hf cGxhbmVfc3RhdGUocGxhbmUsIHBsYW5lX3N0YXRlLCBjcnRjX3N0YXRlKSB7Cj4gQEAgLTQxNjUs NyArNDE2NSw3IEBAIGludCBza2xfY2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiAgCj4gIAlwaXBlX2Rvd25zY2FsZSA9IG11bF9maXhlZDE2 KHBpcGVfZG93bnNjYWxlLCBtYXhfZG93bnNjYWxlKTsKPiAgCj4gLQljcnRjX2Nsb2NrID0gY3J0 Y19zdGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2s7Cj4gKwljcnRjX2Nsb2NrID0g Y3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOwo+ICAJZG90Y2xrID0gdG9f aW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKS0+Y2RjbGsubG9naWNhbC5jZGNsazsKPiAgCj4gIAlp ZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCkK PiBAQCAtNDMzNCw3ICs0MzM0LDcgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJaWYgKFdBUk5fT04oIXN0YXRlKSkKPiAgCQly ZXR1cm4gMDsKPiAgCj4gLQlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKSB7Cj4gKwlpZiAo IWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkgewo+ICAJCWFsbG9jLT5zdGFydCA9IGFsbG9jLT5lbmQg PSAwOwo+ICAJCXJldHVybiAwOwo+ICAJfQo+IEBAIC00NTc2LDcgKzQ1NzYsNyBAQCBpbnRlbF9n ZXRfbGluZXRpbWVfdXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gIAl1MzIgY3J0Y19odG90YWw7Cj4gIAl1aW50X2ZpeGVkXzE2XzE2X3QgbGluZXRpbWVfdXM7 Cj4gIAo+IC0JaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiArCWlmICghY3J0Y19zdGF0 ZS0+aHcuYWN0aXZlKQo+ICAJCXJldHVybiB1MzJfdG9fZml4ZWQxNigwKTsKPiAgCj4gIAlwaXhl bF9yYXRlID0gY3J0Y19zdGF0ZS0+cGl4ZWxfcmF0ZTsKPiBAQCAtNDU4NCw3ICs0NTg0LDcgQEAg aW50ZWxfZ2V0X2xpbmV0aW1lX3VzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQo+ICAJaWYgKFdBUk5fT04ocGl4ZWxfcmF0ZSA9PSAwKSkKPiAgCQlyZXR1cm4gdTMy X3RvX2ZpeGVkMTYoMCk7Cj4gIAo+IC0JY3J0Y19odG90YWwgPSBjcnRjX3N0YXRlLT5iYXNlLmFk anVzdGVkX21vZGUuY3J0Y19odG90YWw7Cj4gKwljcnRjX2h0b3RhbCA9IGNydGNfc3RhdGUtPmh3 LmFkanVzdGVkX21vZGUuY3J0Y19odG90YWw7Cj4gIAlsaW5ldGltZV91cyA9IGRpdl9maXhlZDE2 KGNydGNfaHRvdGFsICogMTAwMCwgcGl4ZWxfcmF0ZSk7Cj4gIAo+ICAJcmV0dXJuIGxpbmV0aW1l X3VzOwo+IEBAIC00NzY2LDE0ICs0NzY2LDE0IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3Bs YW5lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJbWV0 aG9kMSA9IHNrbF93bV9tZXRob2QxKGRldl9wcml2LCB3cC0+cGxhbmVfcGl4ZWxfcmF0ZSwKPiAg CQkJCSB3cC0+Y3BwLCBsYXRlbmN5LCB3cC0+ZGJ1Zl9ibG9ja19zaXplKTsKPiAgCW1ldGhvZDIg PSBza2xfd21fbWV0aG9kMih3cC0+cGxhbmVfcGl4ZWxfcmF0ZSwKPiAtCQkJCSBjcnRjX3N0YXRl LT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwsCj4gKwkJCQkgY3J0Y19zdGF0ZS0+aHcu YWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCwKPiAgCQkJCSBsYXRlbmN5LAo+ICAJCQkJIHdwLT5w bGFuZV9ibG9ja3NfcGVyX2xpbmUpOwo+ICAKPiAgCWlmICh3cC0+eV90aWxlZCkgewo+ICAJCXNl bGVjdGVkX3Jlc3VsdCA9IG1heF9maXhlZDE2KG1ldGhvZDIsIHdwLT55X3RpbGVfbWluaW11bSk7 Cj4gIAl9IGVsc2Ugewo+IC0JCWlmICgod3AtPmNwcCAqIGNydGNfc3RhdGUtPmJhc2UuYWRqdXN0 ZWRfbW9kZS5jcnRjX2h0b3RhbCAvCj4gKwkJaWYgKCh3cC0+Y3BwICogY3J0Y19zdGF0ZS0+aHcu YWRqdXN0ZWRfbW9kZS5jcnRjX2h0b3RhbCAvCj4gIAkJICAgICB3cC0+ZGJ1Zl9ibG9ja19zaXpl IDwgMSkgJiYKPiAgCQkgICAgICh3cC0+cGxhbmVfYnl0ZXNfcGVyX2xpbmUgLyB3cC0+ZGJ1Zl9i bG9ja19zaXplIDwgMSkpIHsKPiAgCQkJc2VsZWN0ZWRfcmVzdWx0ID0gbWV0aG9kMjsKPiAtLSAK PiAyLjIzLjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4