From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [CI 10/12] drm/i915: Perform automated conversions for plane uapi/hw split, base -> hw. Date: Tue, 29 Oct 2019 17:35:59 +0200 Message-ID: <20191029153559.GA1208@intel.com> References: <20191029072229.27092-1-maarten.lankhorst@linux.intel.com> <20191029072229.27092-10-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73FB16E445 for ; Tue, 29 Oct 2019 15:36:03 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191029072229.27092-10-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 T24gVHVlLCBPY3QgMjksIDIwMTkgYXQgMDg6MjI6MjdBTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU3BsaXQgdXAgcGxhbmVfc3RhdGUtPmJhc2UgdG8gaHcuIFRoaXMgaXMgZG9u ZSB1c2luZyB0aGUgZm9sbG93aW5nIHBhdGNoOgo+IAo+IEBACj4gc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpUOwo+IGlkZW50aWZpZXIgeCA9fiAiXihjcnRjfGZifGFscGhhfHBpeGVsX2JsZW5k X21vZGV8cm90YXRpb258Y29sb3JfZW5jb2Rpbmd8Y29sb3JfcmFuZ2UpJCI7Cj4gQEAKPiAtVC0+ YmFzZS54Cj4gK1QtPmh3LngKPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8 bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgoKU2VlbXMgc2FuZQpSZXZpZXdlZC1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMgICB8ICAgNiAr LQo+ICAuLi4vZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgIDYg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgMTMz ICsrKysrKysrKy0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2ZiYy5jICAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9vdmVybGF5LmMgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfc3ByaXRlLmMgICB8ICA5MCArKysrKystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyAgICAgICAgICAgICAgIHwgIDMyICsrLS0tCj4gIDcgZmlsZXMgY2hhbmdlZCwg MTM5IGluc2VydGlvbnMoKyksIDEzOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKPiBpbmRleCA1NTcxNzg5MDZjY2YuLmZiNDEy NmRlOTk0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9t aWMuYwo+IEBAIC0yOTYsOSArMjk2LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX3NldHVw X3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGEKPiAgCQly ZXR1cm47Cj4gIAo+ICAJLyogc2V0IHNjYWxlciBtb2RlICovCj4gLQlpZiAocGxhbmVfc3RhdGUg JiYgcGxhbmVfc3RhdGUtPmJhc2UuZmIgJiYKPiAtCSAgICBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+ Zm9ybWF0LT5pc195dXYgJiYKPiAtCSAgICBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5u dW1fcGxhbmVzID4gMSkgewo+ICsJaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT5ody5m YiAmJgo+ICsJICAgIHBsYW5lX3N0YXRlLT5ody5mYi0+Zm9ybWF0LT5pc195dXYgJiYKPiArCSAg ICBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1hdC0+bnVtX3BsYW5lcyA+IDEpIHsKPiAgCQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUpOwo+ICAJCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmCj4gIAkJICAgICFJU19HRU1J TklMQUtFKGRldl9wcml2KSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IGluZGV4IDk4N2Y3NTQ1ZDQ1Zi4uY2FjMWQ2YWU2N2Y2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWlj X3BsYW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21p Y19wbGFuZS5jCj4gQEAgLTExOCw3ICsxMTgsNyBAQCBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRl KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICB1bnNpZ25lZCBpbnQgaW50ZWxfcGxhbmVfZGF0 YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJ ICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0J Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsK PiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZi Owo+ICAJdW5zaWduZWQgaW50IGNwcDsKPiAgCj4gIAlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUpCj4gQEAgLTE4Miw3ICsxODIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNr X3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJ CQkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlKQo+ICB7Cj4gIAlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3 X3BsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBuZXdfcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IHJldDsKPiAgCj4gIAluZXdfY3J0 Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7Cj4gQEAgLTE5Miw3ICsx OTIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJbmV3X2NydGNfc3RhdGUtPm1pbl9j ZGNsa1twbGFuZS0+aWRdID0gMDsKPiAgCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0g ZmFsc2U7Cj4gIAo+IC0JaWYgKCFuZXdfcGxhbmVfc3RhdGUtPmJhc2UuY3J0YyAmJiAhb2xkX3Bs YW5lX3N0YXRlLT5iYXNlLmNydGMpCj4gKwlpZiAoIW5ld19wbGFuZV9zdGF0ZS0+aHcuY3J0YyAm JiAhb2xkX3BsYW5lX3N0YXRlLT5ody5jcnRjKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9 IHBsYW5lLT5jaGVja19wbGFuZShuZXdfY3J0Y19zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGNk OWQ2ODI0NWY1My4uZmJiZTZmNzUyNzE2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMjIxNSw3ICsyMjE1LDcgQEAgdTMyIGludGVs X2ZiX3h5X3RvX2xpbmVhcihpbnQgeCwgaW50IHksCj4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpzdGF0ZSwKPiAgCQkJICBpbnQgY29sb3JfcGxhbmUpCj4gIHsKPiAtCWNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVk IGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbY29sb3JfcGxhbmVdOwo+ICAJdW5zaWduZWQgaW50 IHBpdGNoID0gc3RhdGUtPmNvbG9yX3BsYW5lW2NvbG9yX3BsYW5lXS5zdHJpZGU7Cj4gIAo+IEBA IC0yMzE2LDggKzIzMTYsOCBAQCBzdGF0aWMgdTMyIGludGVsX3BsYW5lX2FkanVzdF9hbGlnbmVk X29mZnNldChpbnQgKngsIGludCAqeSwKPiAgCQkJCQkgICAgIGludCBjb2xvcl9wbGFuZSwKPiAg CQkJCQkgICAgIHUzMiBvbGRfb2Zmc2V0LCB1MzIgbmV3X29mZnNldCkKPiAgewo+IC0JcmV0dXJu IGludGVsX2FkanVzdF9hbGlnbmVkX29mZnNldCh4LCB5LCBzdGF0ZS0+YmFzZS5mYiwgY29sb3Jf cGxhbmUsCj4gLQkJCQkJICAgc3RhdGUtPmJhc2Uucm90YXRpb24sCj4gKwlyZXR1cm4gaW50ZWxf YWRqdXN0X2FsaWduZWRfb2Zmc2V0KHgsIHksIHN0YXRlLT5ody5mYiwgY29sb3JfcGxhbmUsCj4g KwkJCQkJICAgc3RhdGUtPmh3LnJvdGF0aW9uLAo+ICAJCQkJCSAgIHN0YXRlLT5jb2xvcl9wbGFu ZVtjb2xvcl9wbGFuZV0uc3RyaWRlLAo+ICAJCQkJCSAgIG9sZF9vZmZzZXQsIG5ld19vZmZzZXQp Owo+ICB9Cj4gQEAgLTIzOTMsOCArMjM5Myw4IEBAIHN0YXRpYyB1MzIgaW50ZWxfcGxhbmVfY29t cHV0ZV9hbGlnbmVkX29mZnNldChpbnQgKngsIGludCAqeSwKPiAgewo+ICAJc3RydWN0IGludGVs X3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHN0YXRlLT5iYXNlLnBsYW5lKTsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfcGxh bmUtPmJhc2UuZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3Rh dGUtPmJhc2UuZmI7Cj4gLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBzdGF0ZS0+YmFzZS5yb3Rh dGlvbjsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmh3LmZi Owo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJaW50 IHBpdGNoID0gc3RhdGUtPmNvbG9yX3BsYW5lW2NvbG9yX3BsYW5lXS5zdHJpZGU7Cj4gIAl1MzIg YWxpZ25tZW50Owo+ICAKPiBAQCAtMjU4MSw3ICsyNTgxLDcgQEAgYm9vbCBpbnRlbF9wbGFuZV9j YW5fcmVtYXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAg ewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT5iYXNlLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCBpOwo+ICAKPiAgCS8qIFdl IGRvbid0IHdhbnQgdG8gZGVhbCB3aXRoIHJlbWFwcGluZyB3aXRoIGN1cnNvcnMgKi8KPiBAQCAt MjYyMCw4ICsyNjIwLDggQEAgYm9vbCBpbnRlbF9wbGFuZV9jYW5fcmVtYXAoY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgc3RhdGljIGJvb2wgaW50ZWxfcGxh bmVfbmVlZHNfcmVtYXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBw bGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uID0g cGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJdTMyIHN0cmlkZSwgbWF4X3N0cmlkZTsKPiAg Cj4gIAkvKgo+IEBAIC0yODEyLDEwICsyODEyLDEwIEBAIGludGVsX3BsYW5lX3JlbWFwX2d0dChz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUtPmRldik7Cj4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5iYXNlLmZiOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7Cj4gIAlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9faW50ZWxf ZnJhbWVidWZmZXIoZmIpOwo+ICAJc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8gKmluZm8gPSAm cGxhbmVfc3RhdGUtPnZpZXcucm90YXRlZDsKPiAtCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBs YW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxh bmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJaW50IGksIG51bV9wbGFuZXMgPSBmYi0+Zm9ybWF0 LT5udW1fcGxhbmVzOwo+ICAJdW5zaWduZWQgaW50IHRpbGVfc2l6ZSA9IGludGVsX3RpbGVfc2l6 ZShkZXZfcHJpdik7Cj4gIAl1bnNpZ25lZCBpbnQgc3JjX3gsIHNyY195Owo+IEBAIC0yOTIxLDgg KzI5MjEsOCBAQCBzdGF0aWMgaW50Cj4gIGludGVsX3BsYW5lX2NvbXB1dGVfZ3R0KHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBpbnRl bF9mcmFtZWJ1ZmZlciAqZmIgPQo+IC0JCXRvX2ludGVsX2ZyYW1lYnVmZmVyKHBsYW5lX3N0YXRl LT5iYXNlLmZiKTsKPiAtCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNl LnJvdGF0aW9uOwo+ICsJCXRvX2ludGVsX2ZyYW1lYnVmZmVyKHBsYW5lX3N0YXRlLT5ody5mYik7 Cj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4g IAlpbnQgaSwgbnVtX3BsYW5lczsKPiAgCj4gIAlpZiAoIWZiKQo+IEBAIC0zMjI1LDcgKzMyMjUs NyBAQCBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjLAo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKGludGVsX3BsYW5lX2dndHRfb2Zm c2V0KHN0YXRlKSA9PSBwbGFuZV9jb25maWctPmJhc2UpIHsKPiAtCQkJZmIgPSBzdGF0ZS0+YmFz ZS5mYjsKPiArCQkJZmIgPSBzdGF0ZS0+aHcuZmI7Cj4gIAkJCWRybV9mcmFtZWJ1ZmZlcl9nZXQo ZmIpOwo+ICAJCQlnb3RvIHZhbGlkX2ZiOwo+ICAJCX0KPiBAQCAtMzI0MywxMSArMzI0MywxMSBA QCBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLAo+ICAJcmV0dXJuOwo+ICAKPiAgdmFsaWRfZmI6Cj4gLQlpbnRlbF9zdGF0ZS0+YmFzZS5y b3RhdGlvbiA9IHBsYW5lX2NvbmZpZy0+cm90YXRpb247Cj4gKwlpbnRlbF9zdGF0ZS0+aHcucm90 YXRpb24gPSBwbGFuZV9jb25maWctPnJvdGF0aW9uOwo+ICAJaW50ZWxfZmlsbF9mYl9nZ3R0X3Zp ZXcoJmludGVsX3N0YXRlLT52aWV3LCBmYiwKPiAtCQkJCWludGVsX3N0YXRlLT5iYXNlLnJvdGF0 aW9uKTsKPiArCQkJCWludGVsX3N0YXRlLT5ody5yb3RhdGlvbik7Cj4gIAlpbnRlbF9zdGF0ZS0+ Y29sb3JfcGxhbmVbMF0uc3RyaWRlID0KPiAtCQlpbnRlbF9mYl9waXRjaChmYiwgMCwgaW50ZWxf c3RhdGUtPmJhc2Uucm90YXRpb24pOwo+ICsJCWludGVsX2ZiX3BpdGNoKGZiLCAwLCBpbnRlbF9z dGF0ZS0+aHcucm90YXRpb24pOwo+ICAKPiAgCWludGVsX3N0YXRlLT52bWEgPQo+ICAJCWludGVs X3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLAo+IEBAIC0zMzc0LDcgKzMzNzQsNyBAQCBzdGF0aWMg aW50IGljbF9tYXhfcGxhbmVfaGVpZ2h0KHZvaWQpCj4gIHN0YXRpYyBib29sIHNrbF9jaGVja19t YWluX2Njc19jb29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl LAo+ICAJCQkJCSAgIGludCBtYWluX3gsIGludCBtYWluX3ksIHUzMiBtYWluX29mZnNldCkKPiAg ewo+IC0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5mYjsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwo+ICAJaW50IGhzdWIgPSBmYi0+Zm9ybWF0LT5oc3ViOwo+ICAJaW50IHZzdWIgPSBm Yi0+Zm9ybWF0LT52c3ViOwo+ICAJaW50IGF1eF94ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5l WzFdLng7Cj4gQEAgLTM0MTIsOCArMzQxMiw4IEBAIHN0YXRpYyBib29sIHNrbF9jaGVja19tYWlu X2Njc19jb29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlCj4g IHN0YXRpYyBpbnQgc2tsX2NoZWNrX21haW5fc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+IC0JY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiAtCXVuc2ln bmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ICsJY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gKwl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gIAlpbnQgeCA9 IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAxNjsKPiAgCWludCB5ID0gcGxhbmVfc3RhdGUt PmJhc2Uuc3JjLnkxID4+IDE2Owo+ICAJaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiBAQCAtMzUwOCw4ICszNTA4LDggQEAgc3RhdGljIGludCBz a2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCj4gIAo+ICBzdGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCWNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gLQl1bnNpZ25lZCBpbnQg cm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICsJdW5zaWduZWQgaW50 IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJaW50IG1heF93aWR0aCA9 IHNrbF9tYXhfcGxhbmVfd2lkdGgoZmIsIDEsIHJvdGF0aW9uKTsKPiAgCWludCBtYXhfaGVpZ2h0 ID0gNDA5NjsKPiAgCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE3Owo+IEBA IC0zNTM3LDcgKzM1MzcsNyBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNl KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAo+ICBzdGF0aWMgaW50 IHNrbF9jaGVja19jY3NfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IHNyY194ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3Jj LngxID4+IDE2Owo+ICAJaW50IHNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2 Owo+ICAJaW50IGhzdWIgPSBmYi0+Zm9ybWF0LT5oc3ViOwo+IEBAIC0zNTU4LDcgKzM1NTgsNyBA QCBzdGF0aWMgaW50IHNrbF9jaGVja19jY3NfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCj4gIGludCBza2xfY2hlY2tfcGxhbmVfc3VyZmFjZShz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlpbnQg cmV0Owo+ICAKPiAgCXJldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfZ3R0KHBsYW5lX3N0YXRlKTsK PiBAQCAtMzU5Nyw3ICszNTk3LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9wbGFuZV9yYXRpbyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLAo+ICAJCQkgICAgIHVuc2lnbmVk IGludCAqbnVtLCB1bnNpZ25lZCBpbnQgKmRlbikKPiAgewo+IC0JY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQgaW50 IGNwcCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKPiAgCj4gIAkvKgo+IEBAIC0zNjkwLDggKzM2OTAs OCBAQCBzdGF0aWMgdTMyIGk5eHhfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPQo+ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gLQljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0J dW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAr CXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCXUz MiBkc3BjbnRyOwo+ICAKPiAgCWRzcGNudHIgPSBESVNQTEFZX1BMQU5FX0VOQUJMRTsKPiBAQCAt Mzc0Nyw3ICszNzQ3LDcgQEAgaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRl dik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5i YXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+aHcuZmI7Cj4gIAlpbnQgc3JjX3gsIHNyY195LCBzcmNfdzsKPiAgCXUzMiBvZmZzZXQ7Cj4g IAlpbnQgcmV0Owo+IEBAIC0zNzg0LDcgKzM3ODQsNyBAQCBpbnQgaTl4eF9jaGVja19wbGFuZV9z dXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAo+ICAJLyog SFNXL0JEVyBkbyB0aGlzIGF1dG9tYWdpY2FsbHkgaW4gaGFyZHdhcmUgKi8KPiAgCWlmICghSVNf SEFTV0VMTChkZXZfcHJpdikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAtCQl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCQl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gIAkJaW50IHNy Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gIAkJ aW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2 Owo+ICAKPiBAQCAtNDAzNyw4ICs0MDM3LDggQEAgc3RhdGljIHVuc2lnbmVkIGludCBza2xfcGxh bmVfc3RyaWRlX211bHQoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gIHUzMiBz a2xfcGxhbmVfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUsCj4gIAkJICAgICBpbnQgY29sb3JfcGxhbmUpCj4gIHsKPiAtCWNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gLQl1bnNpZ25lZCBpbnQg cm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICsJdW5zaWduZWQgaW50 IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJdTMyIHN0cmlkZSA9IHBs YW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9wbGFuZV0uc3RyaWRlOwo+ICAKPiAgCWlmIChj b2xvcl9wbGFuZSA+PSBmYi0+Zm9ybWF0LT5udW1fcGxhbmVzKQo+IEBAIC00MTA3LDEwICs0MTA3 LDEwIEBAIHN0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF9mb3JtYXQodTMyIHBpeGVsX2Zvcm1hdCkK PiAgCj4gIHN0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF9hbHBoYShjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNl LmZiLT5mb3JtYXQtPmhhc19hbHBoYSkKPiArCWlmICghcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3Jt YXQtPmhhc19hbHBoYSkKPiAgCQlyZXR1cm4gUExBTkVfQ1RMX0FMUEhBX0RJU0FCTEU7Cj4gIAo+ IC0Jc3dpdGNoIChwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKSB7Cj4gKwlzd2l0 Y2ggKHBsYW5lX3N0YXRlLT5ody5waXhlbF9ibGVuZF9tb2RlKSB7Cj4gIAljYXNlIERSTV9NT0RF X0JMRU5EX1BJWEVMX05PTkU6Cj4gIAkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxFOwo+ ICAJY2FzZSBEUk1fTU9ERV9CTEVORF9QUkVNVUxUSToKPiBAQCAtNDExOCwxNyArNDExOCwxNyBA QCBzdGF0aWMgdTMyIHNrbF9wbGFuZV9jdGxfYWxwaGEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCWNhc2UgRFJNX01PREVfQkxFTkRfQ09WRVJBR0U6Cj4g IAkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9IV19QUkVNVUxUSVBMWTsKPiAgCWRlZmF1bHQ6Cj4g LQkJTUlTU0lOR19DQVNFKHBsYW5lX3N0YXRlLT5iYXNlLnBpeGVsX2JsZW5kX21vZGUpOwo+ICsJ CU1JU1NJTkdfQ0FTRShwbGFuZV9zdGF0ZS0+aHcucGl4ZWxfYmxlbmRfbW9kZSk7Cj4gIAkJcmV0 dXJuIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxFOwo+ICAJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdTMy IGdsa19wbGFuZV9jb2xvcl9jdGxfYWxwaGEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0 LT5oYXNfYWxwaGEpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT5ody5mYi0+Zm9ybWF0LT5oYXNfYWxw aGEpCj4gIAkJcmV0dXJuIFBMQU5FX0NPTE9SX0FMUEhBX0RJU0FCTEU7Cj4gIAo+IC0Jc3dpdGNo IChwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKSB7Cj4gKwlzd2l0Y2ggKHBsYW5l X3N0YXRlLT5ody5waXhlbF9ibGVuZF9tb2RlKSB7Cj4gIAljYXNlIERSTV9NT0RFX0JMRU5EX1BJ WEVMX05PTkU6Cj4gIAkJcmV0dXJuIFBMQU5FX0NPTE9SX0FMUEhBX0RJU0FCTEU7Cj4gIAljYXNl IERSTV9NT0RFX0JMRU5EX1BSRU1VTFRJOgo+IEBAIC00MTM2LDcgKzQxMzYsNyBAQCBzdGF0aWMg dTMyIGdsa19wbGFuZV9jb2xvcl9jdGxfYWxwaGEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZQo+ICAJY2FzZSBEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRToKPiAgCQly ZXR1cm4gUExBTkVfQ09MT1JfQUxQSEFfSFdfUFJFTVVMVElQTFk7Cj4gIAlkZWZhdWx0Ogo+IC0J CU1JU1NJTkdfQ0FTRShwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKTsKPiArCQlN SVNTSU5HX0NBU0UocGxhbmVfc3RhdGUtPmh3LnBpeGVsX2JsZW5kX21vZGUpOwo+ICAJCXJldHVy biBQTEFORV9DT0xPUl9BTFBIQV9ESVNBQkxFOwo+ICAJfQo+ICB9Cj4gQEAgLTQyMjIsOCArNDIy Miw4IEBAIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gLQljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0JdW5zaWdu ZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiArCXVuc2ln bmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCWNvbnN0IHN0 cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7 Cj4gIAl1MzIgcGxhbmVfY3RsOwo+ICAKPiBAQCAtNDIzMywxMCArNDIzMywxMCBAQCB1MzIgc2ts X3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CQlwbGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF9hbHBoYShwbGFuZV9zdGF0ZSk7Cj4gIAkJcGxh bmVfY3RsIHw9IFBMQU5FX0NUTF9QTEFORV9HQU1NQV9ESVNBQkxFOwo+ICAKPiAtCQlpZiAocGxh bmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2RpbmcgPT0gRFJNX0NPTE9SX1lDQkNSX0JUNzA5KQo+ ICsJCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3JfZW5jb2RpbmcgPT0gRFJNX0NPTE9SX1lDQkNS X0JUNzA5KQo+ICAJCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1lVVl9UT19SR0JfQ1NDX0ZPUk1B VF9CVDcwOTsKPiAgCj4gLQkJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX3JhbmdlID09IERS TV9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKQo+ICsJCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3Jf cmFuZ2UgPT0gRFJNX0NPTE9SX1lDQkNSX0ZVTExfUkFOR0UpCj4gIAkJCXBsYW5lX2N0bCB8PSBQ TEFORV9DVExfWVVWX1JBTkdFX0NPUlJFQ1RJT05fRElTQUJMRTsKPiAgCX0KPiAgCj4gQEAgLTQy NzgsNyArNDI3OCw3IEBAIHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7 Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNl LmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICAJdTMyIHBsYW5lX2NvbG9yX2N0bCA9IDA7Cj4gIAo+ IEBAIC00Mjg2LDEyICs0Mjg2LDEyIEBAIHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJcGxhbmVfY29sb3JfY3RsIHw9 IGdsa19wbGFuZV9jb2xvcl9jdGxfYWxwaGEocGxhbmVfc3RhdGUpOwo+ICAKPiAgCWlmIChmYi0+ Zm9ybWF0LT5pc195dXYgJiYgIWljbF9pc19oZHJfcGxhbmUoZGV2X3ByaXYsIHBsYW5lLT5pZCkp IHsKPiAtCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2RpbmcgPT0gRFJNX0NPTE9S X1lDQkNSX0JUNzA5KQo+ICsJCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3JfZW5jb2RpbmcgPT0g RFJNX0NPTE9SX1lDQkNSX0JUNzA5KQo+ICAJCQlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09M T1JfQ1NDX01PREVfWVVWNzA5X1RPX1JHQjcwOTsKPiAgCQllbHNlCj4gIAkJCXBsYW5lX2NvbG9y X2N0bCB8PSBQTEFORV9DT0xPUl9DU0NfTU9ERV9ZVVY2MDFfVE9fUkdCNzA5Owo+ICAKPiAtCQlp ZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfcmFuZ2UgPT0gRFJNX0NPTE9SX1lDQkNSX0ZVTExf UkFOR0UpCj4gKwkJaWYgKHBsYW5lX3N0YXRlLT5ody5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1Jf WUNCQ1JfRlVMTF9SQU5HRSkKPiAgCQkJcGxhbmVfY29sb3JfY3RsIHw9IFBMQU5FX0NPTE9SX1lV Vl9SQU5HRV9DT1JSRUNUSU9OX0RJU0FCTEU7Cj4gIAl9IGVsc2UgaWYgKGZiLT5mb3JtYXQtPmlz X3l1dikgewo+ICAJCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9JTlBVVF9DU0NfRU5B QkxFOwo+IEBAIC01NjI1LDcgKzU2MjUsNyBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVfc2NhbGVy X3BsYW5lKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJc3RydWN0IGlu dGVsX3BsYW5lICppbnRlbF9wbGFuZSA9Cj4gIAkJdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShpbnRlbF9wbGFuZS0+YmFzZS5kZXYpOwo+IC0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IHJldDsKPiAgCWJvb2wgZm9yY2VfZGV0YWNo ID0gIWZiIHx8ICFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlOwo+ICAJYm9vbCBuZWVkX3NjYWxl ciA9IGZhbHNlOwo+IEBAIC0xMDcyOSw3ICsxMDcyOSw3IEBAIHN0YXRpYyB1MzIgaW50ZWxfY3Vy c29yX2Jhc2UoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAg ewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAgCQl0b19pOTE1KHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gIAl1MzIgYmFzZTsKPiAg Cj4gQEAgLTEwNzc3LDcgKzEwNzc3LDcgQEAgc3RhdGljIGludCBpbnRlbF9jdXJzb3JfY2hlY2tf c3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUocGxhbmVfc3Rh dGUtPmJhc2UucGxhbmUtPmRldik7Cj4gLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9z dGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0 YXRlLT5ody5yb3RhdGlvbjsKPiAgCWludCBzcmNfeCwgc3JjX3k7Cj4gIAl1MzIgb2Zmc2V0Owo+ ICAJaW50IHJldDsKPiBAQCAtMTA4MTAsNyArMTA4MTAsNyBAQCBzdGF0aWMgaW50IGludGVsX2N1 cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4gIAo+ICAJLyogSUxLKyBkbyB0aGlzIGF1dG9tYWdpY2FsbHkgaW4gaGFyZHdhcmUgKi8KPiAg CWlmIChIQVNfR01DSChkZXZfcHJpdikgJiYgcm90YXRpb24gJiBEUk1fTU9ERV9ST1RBVEVfMTgw KSB7Cj4gLQkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ YmFzZS5mYjsKPiArCQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKPiAgCQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKPiAgCQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gIAo+IEBAIC0xMDgyNyw3ICsxMDgyNyw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfY3Vyc29yX2NoZWNrX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKPiAgc3RhdGljIGludCBpbnRlbF9jaGVja19jdXJzb3Ioc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCByZXQ7Cj4gIAo+ICAJ aWYgKGZiICYmIGZiLT5tb2RpZmllciAhPSBEUk1fRk9STUFUX01PRF9MSU5FQVIpIHsKPiBAQCAt MTA5MDEsNyArMTA5MDEsNyBAQCBzdGF0aWMgYm9vbCBpODQ1X2N1cnNvcl9zaXplX29rKGNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHN0YXRpYyBpbnQgaTg0 NV9jaGVja19jdXJzb3Ioc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJ CSAgICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0JY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiAr CWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ ICAJaW50IHJldDsKPiAgCj4gIAlyZXQgPSBpbnRlbF9jaGVja19jdXJzb3IoY3J0Y19zdGF0ZSwg cGxhbmVfc3RhdGUpOwo+IEBAIC0xMTA2Nyw3ICsxMTA2Nyw3IEBAIHN0YXRpYyB1MzIgaTl4eF9j dXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CXJldHVybiAwOwo+ICAJfQo+ICAKPiAtCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiAm IERSTV9NT0RFX1JPVEFURV8xODApCj4gKwlpZiAocGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uICYg RFJNX01PREVfUk9UQVRFXzE4MCkKPiAgCQljbnRsIHw9IE1DVVJTT1JfUk9UQVRFXzE4MDsKPiAg Cj4gIAlyZXR1cm4gY250bDsKPiBAQCAtMTExMDAsNyArMTExMDAsNyBAQCBzdGF0aWMgYm9vbCBp OXh4X2N1cnNvcl9zaXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIAkgKiBjdXJzb3JzLgo+ICAJICovCj4gIAlpZiAoSEFTX0NVUl9GQkMoZGV2X3By aXYpICYmCj4gLQkgICAgcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gJiBEUk1fTU9ERV9ST1RB VEVfMCkgewo+ICsJICAgIHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbiAmIERSTV9NT0RFX1JPVEFU RV8wKSB7Cj4gIAkJaWYgKGhlaWdodCA8IDggfHwgaGVpZ2h0ID4gd2lkdGgpCj4gIAkJCXJldHVy biBmYWxzZTsKPiAgCX0gZWxzZSB7Cj4gQEAgLTExMTE2LDcgKzExMTE2LDcgQEAgc3RhdGljIGlu dCBpOXh4X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiAgewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWVudW0gcGlwZSBwaXBlID0g cGxhbmUtPnBpcGU7Cj4gIAlpbnQgcmV0Owo+ICAKPiBAQCAtMTE3MjAsMTEgKzExNzIwLDExIEBA IHN0YXRpYyBib29sIGludGVsX3dtX25lZWRfdXBkYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqY3VyLAo+ICAJaWYgKG5ldy0+YmFzZS52aXNpYmxlICE9IGN1ci0+YmFzZS52aXNp YmxlKQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAtCWlmICghY3VyLT5iYXNlLmZiIHx8ICFuZXct PmJhc2UuZmIpCj4gKwlpZiAoIWN1ci0+aHcuZmIgfHwgIW5ldy0+aHcuZmIpCj4gIAkJcmV0dXJu IGZhbHNlOwo+ICAKPiAtCWlmIChjdXItPmJhc2UuZmItPm1vZGlmaWVyICE9IG5ldy0+YmFzZS5m Yi0+bW9kaWZpZXIgfHwKPiAtCSAgICBjdXItPmJhc2Uucm90YXRpb24gIT0gbmV3LT5iYXNlLnJv dGF0aW9uIHx8Cj4gKwlpZiAoY3VyLT5ody5mYi0+bW9kaWZpZXIgIT0gbmV3LT5ody5mYi0+bW9k aWZpZXIgfHwKPiArCSAgICBjdXItPmh3LnJvdGF0aW9uICE9IG5ldy0+aHcucm90YXRpb24gfHwK PiAgCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT5iYXNlLnNyYykgIT0gZHJtX3JlY3Rfd2lkdGgo JmN1ci0+YmFzZS5zcmMpIHx8Cj4gIAkgICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPmJhc2Uuc3Jj KSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+YmFzZS5zcmMpIHx8Cj4gIAkgICAgZHJtX3JlY3Rf d2lkdGgoJm5ldy0+YmFzZS5kc3QpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2UuZHN0KSB8 fAo+IEBAIC0xMjM1Niw3ICsxMjM1Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpvdXRwdXRfZm9y bWF0cyhlbnVtIGludGVsX291dHB1dF9mb3JtYXQgZm9ybWF0KQo+ICBzdGF0aWMgdm9pZCBpbnRl bF9kdW1wX3BsYW5lX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlzdHJ1Y3QgZHJtX2Zvcm1hdF9u YW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAgCj4gIAlpZiAoIWZiKSB7Cj4gQEAgLTEyMzcyLDcgKzEy MzcyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9wbGFuZV9zdGF0ZShjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAJCSAgICAgIGRybV9nZXRfZm9ybWF0 X25hbWUoZmItPmZvcm1hdC0+Zm9ybWF0LCAmZm9ybWF0X25hbWUpLAo+ICAJCSAgICAgIHllc25v KHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpKTsKPiAgCURSTV9ERUJVR19LTVMoIlx0cm90YXRp b246IDB4JXgsIHNjYWxlcjogJWRcbiIsCj4gLQkJICAgICAgcGxhbmVfc3RhdGUtPmJhc2Uucm90 YXRpb24sIHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQpOwo+ICsJCSAgICAgIHBsYW5lX3N0YXRlLT5o dy5yb3RhdGlvbiwgcGxhbmVfc3RhdGUtPnNjYWxlcl9pZCk7Cj4gIAlpZiAocGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkKPiAgCQlEUk1fREVCVUdfS01TKCJcdHNyYzogIiBEUk1fUkVDVF9GUF9G TVQgIiBkc3Q6ICIgRFJNX1JFQ1RfRk1UICJcbiIsCj4gIAkJCSAgICAgIERSTV9SRUNUX0ZQX0FS RygmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSwKPiBAQCAtMTQ4NzYsOCArMTQ4NzYsOCBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9hdG9taWNfdHJhY2tfZmJzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKQo+ICAKPiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9wbGFuZV9pbl9zdGF0ZShzdGF0 ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwKPiAgCQkJCQkgICAgIG5ld19wbGFuZV9zdGF0ZSwg aSkKPiAtCQlpbnRlbF9mcm9udGJ1ZmZlcl90cmFjayh0b19pbnRlbF9mcm9udGJ1ZmZlcihvbGRf cGxhbmVfc3RhdGUtPmJhc2UuZmIpLAo+IC0JCQkJCXRvX2ludGVsX2Zyb250YnVmZmVyKG5ld19w bGFuZV9zdGF0ZS0+YmFzZS5mYiksCj4gKwkJaW50ZWxfZnJvbnRidWZmZXJfdHJhY2sodG9faW50 ZWxfZnJvbnRidWZmZXIob2xkX3BsYW5lX3N0YXRlLT5ody5mYiksCj4gKwkJCQkJdG9faW50ZWxf ZnJvbnRidWZmZXIobmV3X3BsYW5lX3N0YXRlLT5ody5mYiksCj4gIAkJCQkJcGxhbmUtPmZyb250 YnVmZmVyX2JpdCk7Cj4gIH0KPiAgCj4gQEAgLTE1MDQ2LDcgKzE1MDQ2LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9wbGFuZV9waW5fZmIoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAK PiAgCWlmIChwbGFuZS0+aWQgPT0gUExBTkVfQ1VSU09SICYmCj4gQEAgLTE1MTExLDcgKzE1MTEx LDcgQEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAg CXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KPiAgCQl0b19pbnRlbF9h dG9taWNfc3RhdGUobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmRldik7Cj4gLQlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3X3BsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9vYmogPSBpbnRlbF9mYl9vYmoocGxhbmUtPnN0YXRl LT5mYik7Cj4gIAlpbnQgcmV0Owo+IEBAIC0xNTE3OSwxMiArMTUxNzksMTIgQEAgaW50ZWxfcHJl cGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCj4gIAkJZmVuY2UgPSBk bWFfcmVzdl9nZXRfZXhjbF9yY3Uob2JqLT5iYXNlLnJlc3YpOwo+ICAJCWlmIChmZW5jZSkgewo+ IC0JCQlhZGRfcnBzX2Jvb3N0X2FmdGVyX3ZibGFuayhuZXdfcGxhbmVfc3RhdGUtPmJhc2UuY3J0 YywKPiArCQkJYWRkX3Jwc19ib29zdF9hZnRlcl92YmxhbmsobmV3X3BsYW5lX3N0YXRlLT5ody5j cnRjLAo+ICAJCQkJCQkgICBmZW5jZSk7Cj4gIAkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICAJ CX0KPiAgCX0gZWxzZSB7Cj4gLQkJYWRkX3Jwc19ib29zdF9hZnRlcl92YmxhbmsobmV3X3BsYW5l X3N0YXRlLT5iYXNlLmNydGMsCj4gKwkJYWRkX3Jwc19ib29zdF9hZnRlcl92YmxhbmsobmV3X3Bs YW5lX3N0YXRlLT5ody5jcnRjLAo+ICAJCQkJCSAgIG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5mZW5j ZSk7Cj4gIAl9Cj4gIAo+IEBAIC0xNTM5Nyw5ICsxNTM5NywxMCBAQCBpbnRlbF9sZWdhY3lfY3Vy c29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gIAlpZiAocmV0KQo+ICAJCWdv dG8gb3V0X2ZyZWU7Cj4gIAo+IC0JaW50ZWxfZnJvbnRidWZmZXJfZmx1c2godG9faW50ZWxfZnJv bnRidWZmZXIobmV3X3BsYW5lX3N0YXRlLT5iYXNlLmZiKSwgT1JJR0lOX0ZMSVApOwo+IC0JaW50 ZWxfZnJvbnRidWZmZXJfdHJhY2sodG9faW50ZWxfZnJvbnRidWZmZXIob2xkX3BsYW5lX3N0YXRl LT5iYXNlLmZiKSwKPiAtCQkJCXRvX2ludGVsX2Zyb250YnVmZmVyKG5ld19wbGFuZV9zdGF0ZS0+ YmFzZS5mYiksCj4gKwlpbnRlbF9mcm9udGJ1ZmZlcl9mbHVzaCh0b19pbnRlbF9mcm9udGJ1ZmZl cihuZXdfcGxhbmVfc3RhdGUtPmh3LmZiKSwKPiArCQkJCU9SSUdJTl9GTElQKTsKPiArCWludGVs X2Zyb250YnVmZmVyX3RyYWNrKHRvX2ludGVsX2Zyb250YnVmZmVyKG9sZF9wbGFuZV9zdGF0ZS0+ aHcuZmIpLAo+ICsJCQkJdG9faW50ZWxfZnJvbnRidWZmZXIobmV3X3BsYW5lX3N0YXRlLT5ody5m YiksCj4gIAkJCQlwbGFuZS0+ZnJvbnRidWZmZXJfYml0KTsKPiAgCj4gIAkvKiBTd2FwIHBsYW5l IHN0YXRlICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jCj4gaW5k ZXggYzZjYzM3NzVmM2I4Li4zZWE4ZDAxMGRiNmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZmJjLmMKPiBAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2ZiY191cGRhdGVfc3RhdGVfY2FjaGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2 KTsKPiAgCXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOwo+ICAJc3RydWN0 IGludGVsX2ZiY19zdGF0ZV9jYWNoZSAqY2FjaGUgPSAmZmJjLT5zdGF0ZV9jYWNoZTsKPiAtCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCj4gIAljYWNo ZS0+dm1hID0gTlVMTDsKPiAgCWNhY2hlLT5mbGFncyA9IDA7Cj4gQEAgLTY3MSw3ICs2NzEsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChk ZXZfcHJpdikpCj4gIAkJY2FjaGUtPmNydGMuaHN3X2Jkd19waXhlbF9yYXRlID0gY3J0Y19zdGF0 ZS0+cGl4ZWxfcmF0ZTsKPiAgCj4gLQljYWNoZS0+cGxhbmUucm90YXRpb24gPSBwbGFuZV9zdGF0 ZS0+YmFzZS5yb3RhdGlvbjsKPiArCWNhY2hlLT5wbGFuZS5yb3RhdGlvbiA9IHBsYW5lX3N0YXRl LT5ody5yb3RhdGlvbjsKPiAgCS8qCj4gIAkgKiBTcmMgY29vcmRpbmF0ZXMgYXJlIGFscmVhZHkg cm90YXRlZCBieSAyNzAgZGVncmVlcyBmb3IKPiAgCSAqIHRoZSA5MC8yNzAgZGVncmVlIHBsYW5l IHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKPiBAQCAtNjg0LDcgKzY4NCw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2ZiY191cGRhdGVfc3RhdGVfY2FjaGUoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gIAljYWNoZS0+cGxhbmUuYWRqdXN0ZWRfeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFu ZVswXS55Owo+ICAJY2FjaGUtPnBsYW5lLnkgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4g MTY7Cj4gIAo+IC0JY2FjaGUtPnBsYW5lLnBpeGVsX2JsZW5kX21vZGUgPSBwbGFuZV9zdGF0ZS0+ YmFzZS5waXhlbF9ibGVuZF9tb2RlOwo+ICsJY2FjaGUtPnBsYW5lLnBpeGVsX2JsZW5kX21vZGUg PSBwbGFuZV9zdGF0ZS0+aHcucGl4ZWxfYmxlbmRfbW9kZTsKPiAgCj4gIAlpZiAoIWNhY2hlLT5w bGFuZS52aXNpYmxlKQo+ICAJCXJldHVybjsKPiBAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgdm9pZCBp bnRlbF9mYmNfY2hvb3NlX2NydGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJICogdG8gcGlwZSBvciBwbGFuZSBBLiAqLwo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX3BsYW5l X2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKPiAgCQlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAtCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMocGxhbmVfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwkJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBsYW5lX3N0YXRlLT5ody5jcnRjKTsKPiAgCj4g IAkJaWYgKCFwbGFuZS0+aGFzX2ZiYykKPiAgCQkJY29udGludWU7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCA4NDhjZTA3YThlYzIuLjQ2 ZTNkNmNmNTk3NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf b3ZlcmxheS5jCj4gQEAgLTY2OSw3ICs2NjksNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfY29sb3Jr ZXkoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCj4gIAkJZmxhZ3MgfD0gRFNUX0tFWV9F TkFCTEU7Cj4gIAo+ICAJaWYgKHN0YXRlLT5iYXNlLnZpc2libGUpCj4gLQkJZm9ybWF0ID0gc3Rh dGUtPmJhc2UuZmItPmZvcm1hdC0+Zm9ybWF0Owo+ICsJCWZvcm1hdCA9IHN0YXRlLT5ody5mYi0+ Zm9ybWF0LT5mb3JtYXQ7Cj4gIAo+ICAJc3dpdGNoIChmb3JtYXQpIHsKPiAgCWNhc2UgRFJNX0ZP Uk1BVF9DODoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMK PiBpbmRleCA1YmE4ZmFmMGNjZmUuLmIyMTE2ZDEyMzU0OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwo+IEBAIC0yNDEsOCArMjQxLDggQEAgdm9p ZCBpbnRlbF9waXBlX3VwZGF0ZV9lbmQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRj X3N0YXRlKQo+ICBpbnQgaW50ZWxfcGxhbmVfY2hlY2tfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gLQljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0J dW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAr CXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCXUz MiBzdHJpZGUsIG1heF9zdHJpZGU7Cj4gIAo+ICAJLyoKPiBAQCAtMjcyLDEwICsyNzIsMTAgQEAg aW50IGludGVsX3BsYW5lX2NoZWNrX3N0cmlkZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQo+ICAKPiAgaW50IGludGVsX3BsYW5lX2NoZWNrX3NyY19jb29yZGlu YXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJ Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4g IAlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+YmFzZS5zcmM7Cj4gIAl1MzIg c3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2gsIGhzdWIsIHZzdWI7Cj4gLQlib29sIHJvdGF0ZWQg PSBkcm1fcm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uKTsKPiAr CWJvb2wgcm90YXRlZCA9IGRybV9yb3RhdGlvbl85MF9vcl8yNzAocGxhbmVfc3RhdGUtPmh3LnJv dGF0aW9uKTsKPiAgCj4gIAkvKgo+ICAJICogSGFyZHdhcmUgZG9lc24ndCBoYW5kbGUgc3VicGl4 ZWwgY29vcmRpbmF0ZXMuCj4gQEAgLTMyOSw3ICszMjksNyBAQCBza2xfcGxhbmVfcmF0aW8oY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJdW5zaWduZWQgaW50 ICpudW0sIHVuc2lnbmVkIGludCAqZGVuKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+IC0J Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsK PiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZi Owo+ICAKPiAgCWlmIChmYi0+Zm9ybWF0LT5jcHBbMF0gPT0gOCkgewo+ICAJCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gQEAgLTM5 Niw3ICszOTYsNyBAQCBza2xfcHJvZ3JhbV9zY2FsZXIoc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwKPiAgCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5l LT5iYXNlLmRldik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l X3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBw bGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ICAJ aW50IHNjYWxlcl9pZCA9IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQ7Cj4gIAljb25zdCBzdHJ1Y3Qg aW50ZWxfc2NhbGVyICpzY2FsZXIgPQo+IEBAIC01NDIsMTAgKzU0MiwxMCBAQCBpY2xfcHJvZ3Jh bV9pbnB1dF9jc2Moc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCX07Cj4gIAljb25zdCB1 MTYgKmNzYzsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfcmFuZ2UgPT0gRFJN X0NPTE9SX1lDQkNSX0ZVTExfUkFOR0UpCj4gLQkJY3NjID0gaW5wdXRfY3NjX21hdHJpeFtwbGFu ZV9zdGF0ZS0+YmFzZS5jb2xvcl9lbmNvZGluZ107Cj4gKwlpZiAocGxhbmVfc3RhdGUtPmh3LmNv bG9yX3JhbmdlID09IERSTV9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKQo+ICsJCWNzYyA9IGlucHV0 X2NzY19tYXRyaXhbcGxhbmVfc3RhdGUtPmh3LmNvbG9yX2VuY29kaW5nXTsKPiAgCWVsc2UKPiAt CQljc2MgPSBpbnB1dF9jc2NfbWF0cml4X2xyW3BsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX2VuY29k aW5nXTsKPiArCQljc2MgPSBpbnB1dF9jc2NfbWF0cml4X2xyW3BsYW5lX3N0YXRlLT5ody5jb2xv cl9lbmNvZGluZ107Cj4gIAo+ICAJSTkxNV9XUklURV9GVyhQTEFORV9JTlBVVF9DU0NfQ09FRkYo cGlwZSwgcGxhbmVfaWQsIDApLCBST0ZGKGNzY1swXSkgfAo+ICAJCSAgICAgIEdPRkYoY3NjWzFd KSk7Cj4gQEAgLTU1OSw3ICs1NTksNyBAQCBpY2xfcHJvZ3JhbV9pbnB1dF9jc2Moc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSwKPiAgCj4gIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX0lOUFVUX0NTQ19Q UkVPRkYocGlwZSwgcGxhbmVfaWQsIDApLAo+ICAJCSAgICAgIFBSRU9GRl9ZVVZfVE9fUkdCX0hJ KTsKPiAtCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1JfWUNC Q1JfRlVMTF9SQU5HRSkKPiArCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3JfcmFuZ2UgPT0gRFJN X0NPTE9SX1lDQkNSX0ZVTExfUkFOR0UpCj4gIAkJSTkxNV9XUklURV9GVyhQTEFORV9JTlBVVF9D U0NfUFJFT0ZGKHBpcGUsIHBsYW5lX2lkLCAxKSwgMCk7Cj4gIAllbHNlCj4gIAkJSTkxNV9XUklU RV9GVyhQTEFORV9JTlBVVF9DU0NfUFJFT0ZGKHBpcGUsIHBsYW5lX2lkLCAxKSwKPiBAQCAtNTkx LDggKzU5MSw4IEBAIHNrbF9wcm9ncmFtX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs Cj4gIAl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+ PiAxNjsKPiAgCXUzMiBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uu c3JjKSA+PiAxNjsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2VkID0gcGxhbmVfc3RhdGUt PnBsYW5hcl9saW5rZWRfcGxhbmU7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0JdTggYWxwaGEgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5hbHBoYSA+PiA4Owo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7Cj4gKwl1OCBhbHBoYSA9IHBsYW5lX3N0YXRlLT5ody5hbHBoYSA+PiA4 Owo+ICAJdTMyIHBsYW5lX2NvbG9yX2N0bCA9IDA7Cj4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdz Owo+ICAJdTMyIGtleW1zaywga2V5bWF4Owo+IEBAIC03NjgsNyArNzY4LDcgQEAgY2h2X3VwZGF0 ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQg PSBwbGFuZS0+aWQ7Cj4gIAkvKgo+ICAJICogfHJ8ICAgfCBjMCBjMSBjMiB8ICAgfGNyfAo+IEBA IC03OTQsNyArNzk0LDcgQEAgY2h2X3VwZGF0ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCQkJICAgIDAsIDQwOTYsICA3NjAxLAo+ICAJCX0sCj4g IAl9Owo+IC0JY29uc3QgczE2ICpjc2MgPSBjc2NfbWF0cml4W3BsYW5lX3N0YXRlLT5iYXNlLmNv bG9yX2VuY29kaW5nXTsKPiArCWNvbnN0IHMxNiAqY3NjID0gY3NjX21hdHJpeFtwbGFuZV9zdGF0 ZS0+aHcuY29sb3JfZW5jb2RpbmddOwo+ICAKPiAgCS8qIFNlZW1zIFJHQiBkYXRhIGJ5cGFzc2Vz IHRoZSBDU0MgYWx3YXlzICovCj4gIAlpZiAoIWZiLT5mb3JtYXQtPmlzX3l1dikKPiBAQCAtODI3 LDEzICs4MjcsMTMgQEAgdmx2X3VwZGF0ZV9jbHJjKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gLQljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJ Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4g IAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9p ZCA9IHBsYW5lLT5pZDsKPiAgCWludCBjb250cmFzdCwgYnJpZ2h0bmVzcywgc2hfc2NhbGUsIHNo X3Npbiwgc2hfY29zOwo+ICAKPiAgCWlmIChmYi0+Zm9ybWF0LT5pc195dXYgJiYKPiAtCSAgICBw bGFuZV9zdGF0ZS0+YmFzZS5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1JfWUNCQ1JfTElNSVRFRF9S QU5HRSkgewo+ICsJICAgIHBsYW5lX3N0YXRlLT5ody5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1Jf WUNCQ1JfTElNSVRFRF9SQU5HRSkgewo+ICAJCS8qCj4gIAkJICogRXhwYW5kIGxpbWl0ZWQgcmFu Z2UgdG8gZnVsbCByYW5nZToKPiAgCQkgKiBDb250cmFzdCBpcyBhcHBsaWVkIGZpcnN0IGFuZCBp cyB1c2VkIHRvIGV4cGFuZCBZIHJhbmdlLgo+IEBAIC04NjcsNyArODY3LDcgQEAgdmx2X3BsYW5l X3JhdGlvKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCXVu c2lnbmVkIGludCAqbnVtLCB1bnNpZ25lZCBpbnQgKmRlbikKPiAgewo+ICAJdTggYWN0aXZlX3Bs YW5lcyA9IGNydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXMgJiB+QklUKFBMQU5FX0NVUlNPUik7Cj4g LQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZi Owo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcu ZmI7Cj4gIAl1bnNpZ25lZCBpbnQgY3BwID0gZmItPmZvcm1hdC0+Y3BwWzBdOwo+ICAKPiAgCS8q Cj4gQEAgLTk1Myw4ICs5NTMsOCBAQCBzdGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsX2NydGMoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHN0YXRpYyB1MzIgdmx2 X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ IC0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5m YjsKPiAtCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9u Owo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcu ZmI7Cj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5l X3N0YXRlLT5ja2V5Owo+ICAJdTMyIHNwcmN0bDsKPiAgCj4gQEAgLTk5OSw3ICs5OTksNyBAQCBz dGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAtCWlmIChwbGFuZV9zdGF0ZS0+ YmFzZS5jb2xvcl9lbmNvZGluZyA9PSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpCj4gKwlpZiAocGxh bmVfc3RhdGUtPmh3LmNvbG9yX2VuY29kaW5nID09IERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkKPiAg CQlzcHJjdGwgfD0gU1BfWVVWX0ZPUk1BVF9CVDcwOTsKPiAgCj4gIAlpZiAoZmItPm1vZGlmaWVy ID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQo+IEBAIC0xMDIxLDcgKzEwMjEsNyBAQCBzdGF0 aWMgdm9pZCB2bHZfdXBkYXRlX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gLQljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAllbnVt IHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBs YW5lLT5pZDsKPiAgCXUxNiBnYW1tYVs4XTsKPiBAQCAtMTE1MSw3ICsxMTUxLDcgQEAgc3RhdGlj IHZvaWQgaXZiX3BsYW5lX3JhdGlvKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ICAJCQkgICAgdW5zaWduZWQgaW50ICpudW0sIHVuc2lnbmVkIGludCAqZGVuKQo+ ICB7Cj4gIAl1OCBhY3RpdmVfcGxhbmVzID0gY3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmIH5C SVQoUExBTkVfQ1VSU09SKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0 LT5jcHBbMF07Cj4gIAo+ICAJaWYgKGh3ZWlnaHQ4KGFjdGl2ZV9wbGFuZXMpID09IDIpIHsKPiBA QCAtMTE4Nyw3ICsxMTg3LDcgQEAgc3RhdGljIHZvaWQgaXZiX3BsYW5lX3JhdGlvX3NjYWxpbmco Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgICAgY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQkJCSAgICB1bnNp Z25lZCBpbnQgKm51bSwgdW5zaWduZWQgaW50ICpkZW4pCj4gIHsKPiAtCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVk IGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07Cj4gIAo+ICAJc3dpdGNoIChjcHApIHsKPiBA QCAtMTI2NSw3ICsxMjY1LDcgQEAgc3RhdGljIHZvaWQgaHN3X3BsYW5lX3JhdGlvKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgICAgdW5zaWduZWQgaW50 ICpudW0sIHVuc2lnbmVkIGludCAqZGVuKQo+ICB7Cj4gIAl1OCBhY3RpdmVfcGxhbmVzID0gY3J0 Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmIH5CSVQoUExBTkVfQ1VSU09SKTsKPiAtCWNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVu c2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07Cj4gIAo+ICAJaWYgKGh3ZWlnaHQ4 KGFjdGl2ZV9wbGFuZXMpID09IDIpIHsKPiBAQCAtMTMyMSw3ICsxMzIxLDcgQEAgc3RhdGljIGJv b2wgaXZiX25lZWRfc3ByaXRlX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 Cj4gIAkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiAtCWNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCj4g IAlyZXR1cm4gZmItPmZvcm1hdC0+Y3BwWzBdID09IDggJiYKPiAgCQkoSVNfSVZZQlJJREdFKGRl dl9wcml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2KSk7Cj4gQEAgLTEzMzIsOCArMTMzMiw4IEBA IHN0YXRpYyB1MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 Cj4gIAkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiAtCWNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gLQl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCWNvbnN0 IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICsJdW5z aWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJY29uc3Qg c3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tl eTsKPiAgCXUzMiBzcHJjdGw7Cj4gIAo+IEBAIC0xMzc1LDEwICsxMzc1LDEwIEBAIHN0YXRpYyB1 MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gIAlpZiAoIWl2Yl9uZWVkX3Nwcml0ZV9nYW1tYShwbGFuZV9zdGF0ZSkpCj4gIAkJc3By Y3RsIHw9IFNQUklURV9JTlRfR0FNTUFfRElTQUJMRTsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUt PmJhc2UuY29sb3JfZW5jb2RpbmcgPT0gRFJNX0NPTE9SX1lDQkNSX0JUNzA5KQo+ICsJaWYgKHBs YW5lX3N0YXRlLT5ody5jb2xvcl9lbmNvZGluZyA9PSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpCj4g IAkJc3ByY3RsIHw9IFNQUklURV9ZVVZfVE9fUkdCX0NTQ19GT1JNQVRfQlQ3MDk7Cj4gIAo+IC0J aWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX3JhbmdlID09IERSTV9DT0xPUl9ZQ0JDUl9GVUxM X1JBTkdFKQo+ICsJaWYgKHBsYW5lX3N0YXRlLT5ody5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1Jf WUNCQ1JfRlVMTF9SQU5HRSkKPiAgCQlzcHJjdGwgfD0gU1BSSVRFX1lVVl9SQU5HRV9DT1JSRUNU SU9OX0RJU0FCTEU7Cj4gIAo+ICAJaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0Rf WF9USUxFRCkKPiBAQCAtMTU2Nyw3ICsxNTY3LDcgQEAgaXZiX3BsYW5lX2dldF9od19zdGF0ZShz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICBzdGF0aWMgaW50IGc0eF9zcHJpdGVfbWluX2Nk Y2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0JY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJ dW5zaWduZWQgaW50IGhzY2FsZSwgcGl4ZWxfcmF0ZTsKPiAgCXVuc2lnbmVkIGludCBsaW1pdCwg ZGVjaW1hdGU7Cj4gIAo+IEBAIC0xNjM3LDggKzE2MzcsOCBAQCBzdGF0aWMgdTMyIGc0eF9zcHJp dGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUocGxhbmVf c3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0g cGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiArCXVuc2lnbmVkIGludCByb3RhdGlvbiA9 IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3By aXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gIAl1MzIgZHZzY250cjsK PiAgCj4gQEAgLTE2NzcsMTAgKzE2NzcsMTAgQEAgc3RhdGljIHUzMiBnNHhfc3ByaXRlX2N0bChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlyZXR1cm4gMDsK PiAgCX0KPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2RpbmcgPT0gRFJN X0NPTE9SX1lDQkNSX0JUNzA5KQo+ICsJaWYgKHBsYW5lX3N0YXRlLT5ody5jb2xvcl9lbmNvZGlu ZyA9PSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpCj4gIAkJZHZzY250ciB8PSBEVlNfWVVWX0ZPUk1B VF9CVDcwOTsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfcmFuZ2UgPT0gRFJN X0NPTE9SX1lDQkNSX0ZVTExfUkFOR0UpCj4gKwlpZiAocGxhbmVfc3RhdGUtPmh3LmNvbG9yX3Jh bmdlID09IERSTV9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKQo+ICAJCWR2c2NudHIgfD0gRFZTX1lV Vl9SQU5HRV9DT1JSRUNUSU9OX0RJU0FCTEU7Cj4gIAo+ICAJaWYgKGZiLT5tb2RpZmllciA9PSBJ OTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiBAQCAtMTcwMSw3ICsxNzAxLDcgQEAgc3RhdGljIHZv aWQgZzR4X3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+IC0JY29uc3Qgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJZW51bSBwaXBl IHBpcGUgPSBwbGFuZS0+cGlwZTsKPiAgCXUxNiBnYW1tYVs4XTsKPiAgCWludCBpOwo+IEBAIC0x NzMzLDcgKzE3MzMsNyBAQCBzdGF0aWMgdm9pZCBpbGtfdXBkYXRlX2dhbW1hKGNvbnN0IHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNl LmRldik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9z dGF0ZS0+aHcuZmI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ICAJdTE2IGdh bW1hWzE3XTsKPiAgCWludCBpOwo+IEBAIC0xODg3LDcgKzE4ODcsNyBAQCBzdGF0aWMgaW50Cj4g IGc0eF9zcHJpdGVfY2hlY2tfc2NhbGluZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiAgCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsK PiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2Uu ZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5o dy5mYjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5lX3N0YXRlLT5iYXNl LnNyYzsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5lX3N0YXRlLT5iYXNl LmRzdDsKPiAgCWludCBzcmNfeCwgc3JjX3csIHNyY19oLCBjcnRjX3csIGNydGNfaDsKPiBAQCAt MTk1NCw3ICsxOTU0LDcgQEAgZzR4X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAgCWludCBtYXhfc2NhbGUgPSBEUk1fUExBTkVfSEVMUEVSX05PX1ND QUxJTkc7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlmIChpbnRlbF9mYl9zY2FsYWJsZShwbGFuZV9z dGF0ZS0+YmFzZS5mYikpIHsKPiArCWlmIChpbnRlbF9mYl9zY2FsYWJsZShwbGFuZV9zdGF0ZS0+ aHcuZmIpKSB7Cj4gIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA3KSB7Cj4gIAkJCW1pbl9z Y2FsZSA9IDE7Cj4gIAkJCW1heF9zY2FsZSA9IDE2IDw8IDE2Owo+IEBAIC0xOTk4LDcgKzE5OTgs NyBAQCBpbnQgY2h2X3BsYW5lX2NoZWNrX3JvdGF0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gLQl1 bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCXVu c2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCj4gIAkv KiBDSFYgaWdub3JlcyB0aGUgbWlycm9yIGJpdCB3aGVuIHRoZSByb3RhdGUgYml0IGlzIHNldCA6 KCAqLwo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmCj4gQEAgLTIwNTAsOCArMjA1 MCw4IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2ZiKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+IC0J Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsK PiAtCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7 Cj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4g IAlzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAgCj4gIAlpZiAoIWZi KQo+IEBAIC0yMTUxLDggKzIxNTEsOCBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVja19kc3Rf Y29vcmRpbmF0ZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfcwo+ICAKPiAg c3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfbnYxMl9yb3RhdGlvbihjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0JdW5zaWduZWQgaW50IHJv dGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiArCXVuc2lnbmVkIGludCBy b3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCWludCBzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICAKPiAgCS8qIERpc3Bs YXkgV0EgIzExMDYgKi8KPiBAQCAtMjE4Nyw3ICsyMTg3LDcgQEAgc3RhdGljIGludCBza2xfcGxh bmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIHsKPiAgCXN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFz ZS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KHBsYW5lLT5iYXNlLmRldik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlpbnQgbWluX3NjYWxlID0gRFJNX1BMQU5FX0hF TFBFUl9OT19TQ0FMSU5HOwo+ICAJaW50IG1heF9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJfTk9f U0NBTElORzsKPiAgCWludCByZXQ7Cj4gQEAgLTIyMjksNyArMjIyOSw3IEBAIHN0YXRpYyBpbnQg c2tsX3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+ICAJLyogSFcgb25seSBoYXMgOCBiaXRzIHBpeGVsIHByZWNpc2lv biwgZGlzYWJsZSBwbGFuZSBpZiBpbnZpc2libGUgKi8KPiAtCWlmICghKHBsYW5lX3N0YXRlLT5i YXNlLmFscGhhID4+IDgpKQo+ICsJaWYgKCEocGxhbmVfc3RhdGUtPmh3LmFscGhhID4+IDgpKQo+ ICAJCXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgPSBmYWxzZTsKPiAgCj4gIAlwbGFuZV9zdGF0 ZS0+Y3RsID0gc2tsX3BsYW5lX2N0bChjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggZGU3NzAzYWM1MjhkLi4yNWE4ZTIwZDIxMTIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtODAxLDcgKzgwMSw3IEBAIHN0YXRpYyBib29s IGludGVsX3dtX3BsYW5lX3Zpc2libGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gIAkgKiBhcm91bmQgdGhpcyBwcm9ibGVtIHdpdGggdGhlIHdhdGVybWFyayBj b2RlLgo+ICAJICovCj4gIAlpZiAocGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikKPiAtCQlyZXR1 cm4gcGxhbmVfc3RhdGUtPmJhc2UuZmIgIT0gTlVMTDsKPiArCQlyZXR1cm4gcGxhbmVfc3RhdGUt Pmh3LmZiICE9IE5VTEw7Cj4gIAllbHNlCj4gIAkJcmV0dXJuIHBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGU7Cj4gIH0KPiBAQCAtMTA4OCw3ICsxMDg4LDcgQEAgc3RhdGljIHUxNiBnNHhfY29tcHV0 ZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmICgh aW50ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSkpCj4gIAkJcmV0 dXJuIDA7Cj4gIAo+IC0JY3BwID0gcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBd Owo+ICsJY3BwID0gcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQtPmNwcFswXTsKPiAgCj4gIAkv Kgo+ICAJICogTm90IDEwMCUgc3VyZSB3aGljaCB3YXkgRUxLIHNob3VsZCBnbyBoZXJlIGFzIHRo ZQo+IEBAIC0xMzA4LDggKzEzMDgsOCBAQCBzdGF0aWMgaW50IGc0eF9jb21wdXRlX3BpcGVfd20o c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlmb3JfZWFjaF9vbGRuZXdf aW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLAo+ICAJCQkJCSAgICAgb2xkX3BsYW5l X3N0YXRlLAo+ICAJCQkJCSAgICAgbmV3X3BsYW5lX3N0YXRlLCBpKSB7Cj4gLQkJaWYgKG5ld19w bGFuZV9zdGF0ZS0+YmFzZS5jcnRjICE9ICZjcnRjLT5iYXNlICYmCj4gLQkJICAgIG9sZF9wbGFu ZV9zdGF0ZS0+YmFzZS5jcnRjICE9ICZjcnRjLT5iYXNlKQo+ICsJCWlmIChuZXdfcGxhbmVfc3Rh dGUtPmh3LmNydGMgIT0gJmNydGMtPmJhc2UgJiYKPiArCQkgICAgb2xkX3BsYW5lX3N0YXRlLT5o dy5jcnRjICE9ICZjcnRjLT5iYXNlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKGc0eF9y YXdfcGxhbmVfd21fY29tcHV0ZShjcnRjX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUpKQo+IEBAIC0x NTkzLDcgKzE1OTMsNyBAQCBzdGF0aWMgdTE2IHZsdl9jb21wdXRlX3dtX2xldmVsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJaWYgKCFpbnRlbF93bV9wbGFu ZV92aXNpYmxlKGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4g LQljcHAgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5jcHBbMF07Cj4gKwljcHAgPSBw bGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1hdC0+Y3BwWzBdOwo+ICAJY2xvY2sgPSBhZGp1c3RlZF9t b2RlLT5jcnRjX2Nsb2NrOwo+ICAJaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7 Cj4gIAl3aWR0aCA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX3c7Cj4gQEAgLTE4MjksOCArMTgyOSw4 IEBAIHN0YXRpYyBpbnQgdmx2X2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9wbGFuZV9pbl9zdGF0ZShz dGF0ZSwgcGxhbmUsCj4gIAkJCQkJICAgICBvbGRfcGxhbmVfc3RhdGUsCj4gIAkJCQkJICAgICBu ZXdfcGxhbmVfc3RhdGUsIGkpIHsKPiAtCQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLmNydGMg IT0gJmNydGMtPmJhc2UgJiYKPiAtCQkgICAgb2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNydGMgIT0g JmNydGMtPmJhc2UpCj4gKwkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+aHcuY3J0YyAhPSAmY3J0Yy0+ YmFzZSAmJgo+ICsJCSAgICBvbGRfcGxhbmVfc3RhdGUtPmh3LmNydGMgIT0gJmNydGMtPmJhc2Up Cj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlpZiAodmx2X3Jhd19wbGFuZV93bV9jb21wdXRlKGNy dGNfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSkpCj4gQEAgLTI0NzUsNyArMjQ3NSw3IEBAIHN0YXRp YyB1MzIgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3RhdGUsIHBs YW5lX3N0YXRlKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQljcHAgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5mYi0+Zm9ybWF0LT5jcHBbMF07Cj4gKwljcHAgPSBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1h dC0+Y3BwWzBdOwo+ICAKPiAgCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9kMShjcnRjX3N0YXRlLT5w aXhlbF9yYXRlLCBjcHAsIG1lbV92YWx1ZSk7Cj4gIAo+IEBAIC0yNTA3LDcgKzI1MDcsNyBAQCBz dGF0aWMgdTMyIGlsa19jb21wdXRlX3Nwcl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmICghaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRjX3N0YXRl LCBwbGFuZV9zdGF0ZSkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JY3BwID0gcGxhbmVfc3RhdGUt PmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBdOwo+ICsJY3BwID0gcGxhbmVfc3RhdGUtPmh3LmZiLT5m b3JtYXQtPmNwcFswXTsKPiAgCj4gIAltZXRob2QxID0gaWxrX3dtX21ldGhvZDEoY3J0Y19zdGF0 ZS0+cGl4ZWxfcmF0ZSwgY3BwLCBtZW1fdmFsdWUpOwo+ICAJbWV0aG9kMiA9IGlsa193bV9tZXRo b2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCj4gQEAgLTI1MzMsNyArMjUzMyw3IEBAIHN0YXRp YyB1MzIgaWxrX2NvbXB1dGVfY3VyX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3RhdGUsIHBs YW5lX3N0YXRlKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQljcHAgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5mYi0+Zm9ybWF0LT5jcHBbMF07Cj4gKwljcHAgPSBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1h dC0+Y3BwWzBdOwo+ICAKPiAgCXJldHVybiBpbGtfd21fbWV0aG9kMihjcnRjX3N0YXRlLT5waXhl bF9yYXRlLAo+ICAJCQkgICAgICBjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRv dGFsLAo+IEBAIC0yNTUxLDcgKzI1NTEsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX2ZiY193 bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmICghaW50 ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSkpCj4gIAkJcmV0dXJu IDA7Cj4gIAo+IC0JY3BwID0gcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBdOwo+ ICsJY3BwID0gcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQtPmNwcFswXTsKPiAgCj4gIAlyZXR1 cm4gaWxrX3dtX2ZiYyhwcmlfdmFsLCBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uu ZHN0KSwgY3BwKTsKPiAgfQo+IEBAIC00MDkxLDcgKzQwOTEsNyBAQCBza2xfcGxhbmVfcmVsYXRp dmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICAJCQkgICAgIGludCBjb2xvcl9wbGFuZSkKPiAgewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAtCWNvbnN0 IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAg CXUzMiBkYXRhX3JhdGU7Cj4gIAl1MzIgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwo+ICAJdWludF9m aXhlZF8xNl8xNl90IGRvd25fc2NhbGVfYW1vdW50Owo+IEBAIC00NjEyLDcgKzQ2MTIsNyBAQCBz a2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlLAo+ICAJCQkgICAgc3RydWN0IHNrbF93bV9wYXJhbXMgKndwLCBpbnQgY29sb3Jf cGxhbmUpCj4gIHsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCB3aWR0aDsKPiAgCj4gIAkvKgo+IEBAIC00NjI0LDcg KzQ2MjQsNyBAQCBza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICAJcmV0dXJuIHNrbF9jb21wdXRlX3dtX3Bh cmFtcyhjcnRjX3N0YXRlLCB3aWR0aCwKPiAgCQkJCSAgICAgZmItPmZvcm1hdCwgZmItPm1vZGlm aWVyLAo+IC0JCQkJICAgICBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiwKPiArCQkJCSAgICAg cGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uLAo+ICAJCQkJICAgICBza2xfYWRqdXN0ZWRfcGxhbmVf cGl4ZWxfcmF0ZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSksCj4gIAkJCQkgICAgIHdwLCBjb2xv cl9wbGFuZSk7Cj4gIH0KPiBAQCAtNDkwMyw3ICs0OTAzLDcgQEAgc3RhdGljIGludCBza2xfYnVp bGRfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAg CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ YmFzZS5wbGFuZSk7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l X3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBw bGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlk Owo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTQ5MzYsNyArNDkzNiw3IEBAIHN0YXRpYyBpbnQgaWNs X2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CXJldHVybiAwOwo+ICAKPiAgCWlmIChwbGFuZV9zdGF0ZS0+cGxhbmFyX2xpbmtlZF9wbGFuZSkg ewo+IC0JCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJh c2UuZmI7Cj4gKwkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+aHcuZmI7Cj4gIAkJZW51bSBwbGFuZV9pZCB5X3BsYW5lX2lkID0gcGxhbmVfc3RhdGUtPnBs YW5hcl9saW5rZWRfcGxhbmUtPmlkOwo+ICAKPiAgCQlXQVJOX09OKCFpbnRlbF93bV9wbGFuZV92 aXNpYmxlKGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKSk7Cj4gLS0gCj4gMi4yMy4wCj4gCj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmls bGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9EAAACA9EAE for ; Tue, 29 Oct 2019 15:36:04 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7460820874 for ; Tue, 29 Oct 2019 15:36:04 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7460820874 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E6EE06EC08; Tue, 29 Oct 2019 15:36:03 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 73FB16E445 for ; Tue, 29 Oct 2019 15:36:03 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Oct 2019 08:36:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,244,1569308400"; d="scan'208";a="193643991" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga008.jf.intel.com with SMTP; 29 Oct 2019 08:36:00 -0700 Received: by stinkbox (sSMTP sendmail emulation); Tue, 29 Oct 2019 17:35:59 +0200 Date: Tue, 29 Oct 2019 17:35:59 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Maarten Lankhorst Message-ID: <20191029153559.GA1208@intel.com> References: <20191029072229.27092-1-maarten.lankhorst@linux.intel.com> <20191029072229.27092-10-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191029072229.27092-10-maarten.lankhorst@linux.intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Intel-gfx] [CI 10/12] drm/i915: Perform automated conversions for plane uapi/hw split, base -> hw. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191029153559.82IzmOaAqEfPNHmkNr1nTaOA0tkJ5rdlxBisJZjVb6s@z> T24gVHVlLCBPY3QgMjksIDIwMTkgYXQgMDg6MjI6MjdBTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU3BsaXQgdXAgcGxhbmVfc3RhdGUtPmJhc2UgdG8gaHcuIFRoaXMgaXMgZG9u ZSB1c2luZyB0aGUgZm9sbG93aW5nIHBhdGNoOgo+IAo+IEBACj4gc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpUOwo+IGlkZW50aWZpZXIgeCA9fiAiXihjcnRjfGZifGFscGhhfHBpeGVsX2JsZW5k X21vZGV8cm90YXRpb258Y29sb3JfZW5jb2Rpbmd8Y29sb3JfcmFuZ2UpJCI7Cj4gQEAKPiAtVC0+ YmFzZS54Cj4gK1QtPmh3LngKPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8 bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgoKU2VlbXMgc2FuZQpSZXZpZXdlZC1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMgICB8ICAgNiAr LQo+ICAuLi4vZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljX3BsYW5lLmMgfCAgIDYg Ky0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgMTMz ICsrKysrKysrKy0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2ZiYy5jICAgICAgfCAgIDggKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9vdmVybGF5LmMgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfc3ByaXRlLmMgICB8ICA5MCArKysrKystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYyAgICAgICAgICAgICAgIHwgIDMyICsrLS0tCj4gIDcgZmlsZXMgY2hhbmdlZCwg MTM5IGluc2VydGlvbnMoKyksIDEzOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKPiBpbmRleCA1NTcxNzg5MDZjY2YuLmZiNDEy NmRlOTk0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2F0b21pYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9hdG9t aWMuYwo+IEBAIC0yOTYsOSArMjk2LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX3NldHVw X3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGEKPiAgCQly ZXR1cm47Cj4gIAo+ICAJLyogc2V0IHNjYWxlciBtb2RlICovCj4gLQlpZiAocGxhbmVfc3RhdGUg JiYgcGxhbmVfc3RhdGUtPmJhc2UuZmIgJiYKPiAtCSAgICBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+ Zm9ybWF0LT5pc195dXYgJiYKPiAtCSAgICBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5u dW1fcGxhbmVzID4gMSkgewo+ICsJaWYgKHBsYW5lX3N0YXRlICYmIHBsYW5lX3N0YXRlLT5ody5m YiAmJgo+ICsJICAgIHBsYW5lX3N0YXRlLT5ody5mYi0+Zm9ybWF0LT5pc195dXYgJiYKPiArCSAg ICBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1hdC0+bnVtX3BsYW5lcyA+IDEpIHsKPiAgCQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUpOwo+ICAJCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmCj4gIAkJICAgICFJU19HRU1J TklMQUtFKGRldl9wcml2KSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2F0b21pY19wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IGluZGV4IDk4N2Y3NTQ1ZDQ1Zi4uY2FjMWQ2YWU2N2Y2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWlj X3BsYW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21p Y19wbGFuZS5jCj4gQEAgLTExOCw3ICsxMTgsNyBAQCBpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRl KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICB1bnNpZ25lZCBpbnQgaW50ZWxfcGxhbmVfZGF0 YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJ ICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0J Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsK PiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZi Owo+ICAJdW5zaWduZWQgaW50IGNwcDsKPiAgCj4gIAlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGUpCj4gQEAgLTE4Miw3ICsxODIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNr X3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJ CQkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlKQo+ICB7Cj4gIAlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUobmV3X3BsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3 X3BsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBuZXdfcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IHJldDsKPiAgCj4gIAluZXdfY3J0 Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7Cj4gQEAgLTE5Miw3ICsx OTIsNyBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrX3dpdGhfc3RhdGUoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjXwo+ICAJbmV3X2NydGNfc3RhdGUtPm1pbl9j ZGNsa1twbGFuZS0+aWRdID0gMDsKPiAgCW5ld19wbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0g ZmFsc2U7Cj4gIAo+IC0JaWYgKCFuZXdfcGxhbmVfc3RhdGUtPmJhc2UuY3J0YyAmJiAhb2xkX3Bs YW5lX3N0YXRlLT5iYXNlLmNydGMpCj4gKwlpZiAoIW5ld19wbGFuZV9zdGF0ZS0+aHcuY3J0YyAm JiAhb2xkX3BsYW5lX3N0YXRlLT5ody5jcnRjKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCXJldCA9 IHBsYW5lLT5jaGVja19wbGFuZShuZXdfY3J0Y19zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGNk OWQ2ODI0NWY1My4uZmJiZTZmNzUyNzE2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMjIxNSw3ICsyMjE1LDcgQEAgdTMyIGludGVs X2ZiX3h5X3RvX2xpbmVhcihpbnQgeCwgaW50IHksCj4gIAkJCSAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpzdGF0ZSwKPiAgCQkJICBpbnQgY29sb3JfcGxhbmUpCj4gIHsKPiAtCWNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVk IGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbY29sb3JfcGxhbmVdOwo+ICAJdW5zaWduZWQgaW50 IHBpdGNoID0gc3RhdGUtPmNvbG9yX3BsYW5lW2NvbG9yX3BsYW5lXS5zdHJpZGU7Cj4gIAo+IEBA IC0yMzE2LDggKzIzMTYsOCBAQCBzdGF0aWMgdTMyIGludGVsX3BsYW5lX2FkanVzdF9hbGlnbmVk X29mZnNldChpbnQgKngsIGludCAqeSwKPiAgCQkJCQkgICAgIGludCBjb2xvcl9wbGFuZSwKPiAg CQkJCQkgICAgIHUzMiBvbGRfb2Zmc2V0LCB1MzIgbmV3X29mZnNldCkKPiAgewo+IC0JcmV0dXJu IGludGVsX2FkanVzdF9hbGlnbmVkX29mZnNldCh4LCB5LCBzdGF0ZS0+YmFzZS5mYiwgY29sb3Jf cGxhbmUsCj4gLQkJCQkJICAgc3RhdGUtPmJhc2Uucm90YXRpb24sCj4gKwlyZXR1cm4gaW50ZWxf YWRqdXN0X2FsaWduZWRfb2Zmc2V0KHgsIHksIHN0YXRlLT5ody5mYiwgY29sb3JfcGxhbmUsCj4g KwkJCQkJICAgc3RhdGUtPmh3LnJvdGF0aW9uLAo+ICAJCQkJCSAgIHN0YXRlLT5jb2xvcl9wbGFu ZVtjb2xvcl9wbGFuZV0uc3RyaWRlLAo+ICAJCQkJCSAgIG9sZF9vZmZzZXQsIG5ld19vZmZzZXQp Owo+ICB9Cj4gQEAgLTIzOTMsOCArMjM5Myw4IEBAIHN0YXRpYyB1MzIgaW50ZWxfcGxhbmVfY29t cHV0ZV9hbGlnbmVkX29mZnNldChpbnQgKngsIGludCAqeSwKPiAgewo+ICAJc3RydWN0IGludGVs X3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHN0YXRlLT5iYXNlLnBsYW5lKTsK PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoaW50ZWxfcGxh bmUtPmJhc2UuZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3Rh dGUtPmJhc2UuZmI7Cj4gLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBzdGF0ZS0+YmFzZS5yb3Rh dGlvbjsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3RhdGUtPmh3LmZi Owo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJaW50 IHBpdGNoID0gc3RhdGUtPmNvbG9yX3BsYW5lW2NvbG9yX3BsYW5lXS5zdHJpZGU7Cj4gIAl1MzIg YWxpZ25tZW50Owo+ICAKPiBAQCAtMjU4MSw3ICsyNTgxLDcgQEAgYm9vbCBpbnRlbF9wbGFuZV9j YW5fcmVtYXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAg ewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT5iYXNlLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCBpOwo+ICAKPiAgCS8qIFdl IGRvbid0IHdhbnQgdG8gZGVhbCB3aXRoIHJlbWFwcGluZyB3aXRoIGN1cnNvcnMgKi8KPiBAQCAt MjYyMCw4ICsyNjIwLDggQEAgYm9vbCBpbnRlbF9wbGFuZV9jYW5fcmVtYXAoY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgc3RhdGljIGJvb2wgaW50ZWxfcGxh bmVfbmVlZHNfcmVtYXAoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBw bGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uID0g cGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJdTMyIHN0cmlkZSwgbWF4X3N0cmlkZTsKPiAg Cj4gIAkvKgo+IEBAIC0yODEyLDEwICsyODEyLDEwIEBAIGludGVsX3BsYW5lX3JlbWFwX2d0dChz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2Uu cGxhbmUtPmRldik7Cj4gLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5iYXNlLmZiOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7Cj4gIAlzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9faW50ZWxf ZnJhbWVidWZmZXIoZmIpOwo+ICAJc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8gKmluZm8gPSAm cGxhbmVfc3RhdGUtPnZpZXcucm90YXRlZDsKPiAtCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBs YW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxh bmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJaW50IGksIG51bV9wbGFuZXMgPSBmYi0+Zm9ybWF0 LT5udW1fcGxhbmVzOwo+ICAJdW5zaWduZWQgaW50IHRpbGVfc2l6ZSA9IGludGVsX3RpbGVfc2l6 ZShkZXZfcHJpdik7Cj4gIAl1bnNpZ25lZCBpbnQgc3JjX3gsIHNyY195Owo+IEBAIC0yOTIxLDgg KzI5MjEsOCBAQCBzdGF0aWMgaW50Cj4gIGludGVsX3BsYW5lX2NvbXB1dGVfZ3R0KHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBpbnRl bF9mcmFtZWJ1ZmZlciAqZmIgPQo+IC0JCXRvX2ludGVsX2ZyYW1lYnVmZmVyKHBsYW5lX3N0YXRl LT5iYXNlLmZiKTsKPiAtCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNl LnJvdGF0aW9uOwo+ICsJCXRvX2ludGVsX2ZyYW1lYnVmZmVyKHBsYW5lX3N0YXRlLT5ody5mYik7 Cj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4g IAlpbnQgaSwgbnVtX3BsYW5lczsKPiAgCj4gIAlpZiAoIWZiKQo+IEBAIC0zMjI1LDcgKzMyMjUs NyBAQCBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjLAo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKGludGVsX3BsYW5lX2dndHRfb2Zm c2V0KHN0YXRlKSA9PSBwbGFuZV9jb25maWctPmJhc2UpIHsKPiAtCQkJZmIgPSBzdGF0ZS0+YmFz ZS5mYjsKPiArCQkJZmIgPSBzdGF0ZS0+aHcuZmI7Cj4gIAkJCWRybV9mcmFtZWJ1ZmZlcl9nZXQo ZmIpOwo+ICAJCQlnb3RvIHZhbGlkX2ZiOwo+ICAJCX0KPiBAQCAtMzI0MywxMSArMzI0MywxMSBA QCBpbnRlbF9maW5kX2luaXRpYWxfcGxhbmVfb2JqKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLAo+ICAJcmV0dXJuOwo+ICAKPiAgdmFsaWRfZmI6Cj4gLQlpbnRlbF9zdGF0ZS0+YmFzZS5y b3RhdGlvbiA9IHBsYW5lX2NvbmZpZy0+cm90YXRpb247Cj4gKwlpbnRlbF9zdGF0ZS0+aHcucm90 YXRpb24gPSBwbGFuZV9jb25maWctPnJvdGF0aW9uOwo+ICAJaW50ZWxfZmlsbF9mYl9nZ3R0X3Zp ZXcoJmludGVsX3N0YXRlLT52aWV3LCBmYiwKPiAtCQkJCWludGVsX3N0YXRlLT5iYXNlLnJvdGF0 aW9uKTsKPiArCQkJCWludGVsX3N0YXRlLT5ody5yb3RhdGlvbik7Cj4gIAlpbnRlbF9zdGF0ZS0+ Y29sb3JfcGxhbmVbMF0uc3RyaWRlID0KPiAtCQlpbnRlbF9mYl9waXRjaChmYiwgMCwgaW50ZWxf c3RhdGUtPmJhc2Uucm90YXRpb24pOwo+ICsJCWludGVsX2ZiX3BpdGNoKGZiLCAwLCBpbnRlbF9z dGF0ZS0+aHcucm90YXRpb24pOwo+ICAKPiAgCWludGVsX3N0YXRlLT52bWEgPQo+ICAJCWludGVs X3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLAo+IEBAIC0zMzc0LDcgKzMzNzQsNyBAQCBzdGF0aWMg aW50IGljbF9tYXhfcGxhbmVfaGVpZ2h0KHZvaWQpCj4gIHN0YXRpYyBib29sIHNrbF9jaGVja19t YWluX2Njc19jb29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl LAo+ICAJCQkJCSAgIGludCBtYWluX3gsIGludCBtYWluX3ksIHUzMiBtYWluX29mZnNldCkKPiAg ewo+IC0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5mYjsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt Pmh3LmZiOwo+ICAJaW50IGhzdWIgPSBmYi0+Zm9ybWF0LT5oc3ViOwo+ICAJaW50IHZzdWIgPSBm Yi0+Zm9ybWF0LT52c3ViOwo+ICAJaW50IGF1eF94ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5l WzFdLng7Cj4gQEAgLTM0MTIsOCArMzQxMiw4IEBAIHN0YXRpYyBib29sIHNrbF9jaGVja19tYWlu X2Njc19jb29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlCj4g IHN0YXRpYyBpbnQgc2tsX2NoZWNrX21haW5fc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+IC0JY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiAtCXVuc2ln bmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ICsJY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gKwl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gIAlpbnQgeCA9 IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy54MSA+PiAxNjsKPiAgCWludCB5ID0gcGxhbmVfc3RhdGUt PmJhc2Uuc3JjLnkxID4+IDE2Owo+ICAJaW50IHcgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3Rh dGUtPmJhc2Uuc3JjKSA+PiAxNjsKPiBAQCAtMzUwOCw4ICszNTA4LDggQEAgc3RhdGljIGludCBz a2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCj4gIAo+ICBzdGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCWNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gLQl1bnNpZ25lZCBpbnQg cm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICsJdW5zaWduZWQgaW50 IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJaW50IG1heF93aWR0aCA9 IHNrbF9tYXhfcGxhbmVfd2lkdGgoZmIsIDEsIHJvdGF0aW9uKTsKPiAgCWludCBtYXhfaGVpZ2h0 ID0gNDA5NjsKPiAgCWludCB4ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+IDE3Owo+IEBA IC0zNTM3LDcgKzM1MzcsNyBAQCBzdGF0aWMgaW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNl KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAo+ICBzdGF0aWMgaW50 IHNrbF9jaGVja19jY3NfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKPiAgewo+IC0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IHNyY194ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3Jj LngxID4+IDE2Owo+ICAJaW50IHNyY195ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLnkxID4+IDE2 Owo+ICAJaW50IGhzdWIgPSBmYi0+Zm9ybWF0LT5oc3ViOwo+IEBAIC0zNTU4LDcgKzM1NTgsNyBA QCBzdGF0aWMgaW50IHNrbF9jaGVja19jY3NfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCj4gIGludCBza2xfY2hlY2tfcGxhbmVfc3VyZmFjZShz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlpbnQg cmV0Owo+ICAKPiAgCXJldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfZ3R0KHBsYW5lX3N0YXRlKTsK PiBAQCAtMzU5Nyw3ICszNTk3LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9wbGFuZV9yYXRpbyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJICAgICBjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLAo+ICAJCQkgICAgIHVuc2lnbmVk IGludCAqbnVtLCB1bnNpZ25lZCBpbnQgKmRlbikKPiAgewo+IC0JY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJdW5zaWduZWQgaW50 IGNwcCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKPiAgCj4gIAkvKgo+IEBAIC0zNjkwLDggKzM2OTAs OCBAQCBzdGF0aWMgdTMyIGk5eHhfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPQo+ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gLQljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0J dW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAr CXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCXUz MiBkc3BjbnRyOwo+ICAKPiAgCWRzcGNudHIgPSBESVNQTEFZX1BMQU5FX0VOQUJMRTsKPiBAQCAt Mzc0Nyw3ICszNzQ3LDcgQEAgaW50IGk5eHhfY2hlY2tfcGxhbmVfc3VyZmFjZShzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRl dik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5i YXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+aHcuZmI7Cj4gIAlpbnQgc3JjX3gsIHNyY195LCBzcmNfdzsKPiAgCXUzMiBvZmZzZXQ7Cj4g IAlpbnQgcmV0Owo+IEBAIC0zNzg0LDcgKzM3ODQsNyBAQCBpbnQgaTl4eF9jaGVja19wbGFuZV9z dXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIAo+ICAJLyog SFNXL0JEVyBkbyB0aGlzIGF1dG9tYWdpY2FsbHkgaW4gaGFyZHdhcmUgKi8KPiAgCWlmICghSVNf SEFTV0VMTChkZXZfcHJpdikgJiYgIUlTX0JST0FEV0VMTChkZXZfcHJpdikpIHsKPiAtCQl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCQl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4gIAkJaW50IHNy Y193ID0gZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gIAkJ aW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2 Owo+ICAKPiBAQCAtNDAzNyw4ICs0MDM3LDggQEAgc3RhdGljIHVuc2lnbmVkIGludCBza2xfcGxh bmVfc3RyaWRlX211bHQoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gIHUzMiBz a2xfcGxhbmVfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUsCj4gIAkJICAgICBpbnQgY29sb3JfcGxhbmUpCj4gIHsKPiAtCWNvbnN0IHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gLQl1bnNpZ25lZCBpbnQg cm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICsJdW5zaWduZWQgaW50 IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJdTMyIHN0cmlkZSA9IHBs YW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtjb2xvcl9wbGFuZV0uc3RyaWRlOwo+ICAKPiAgCWlmIChj b2xvcl9wbGFuZSA+PSBmYi0+Zm9ybWF0LT5udW1fcGxhbmVzKQo+IEBAIC00MTA3LDEwICs0MTA3 LDEwIEBAIHN0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF9mb3JtYXQodTMyIHBpeGVsX2Zvcm1hdCkK PiAgCj4gIHN0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF9hbHBoYShjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlpZiAoIXBsYW5lX3N0YXRlLT5iYXNl LmZiLT5mb3JtYXQtPmhhc19hbHBoYSkKPiArCWlmICghcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3Jt YXQtPmhhc19hbHBoYSkKPiAgCQlyZXR1cm4gUExBTkVfQ1RMX0FMUEhBX0RJU0FCTEU7Cj4gIAo+ IC0Jc3dpdGNoIChwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKSB7Cj4gKwlzd2l0 Y2ggKHBsYW5lX3N0YXRlLT5ody5waXhlbF9ibGVuZF9tb2RlKSB7Cj4gIAljYXNlIERSTV9NT0RF X0JMRU5EX1BJWEVMX05PTkU6Cj4gIAkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxFOwo+ ICAJY2FzZSBEUk1fTU9ERV9CTEVORF9QUkVNVUxUSToKPiBAQCAtNDExOCwxNyArNDExOCwxNyBA QCBzdGF0aWMgdTMyIHNrbF9wbGFuZV9jdGxfYWxwaGEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCWNhc2UgRFJNX01PREVfQkxFTkRfQ09WRVJBR0U6Cj4g IAkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9IV19QUkVNVUxUSVBMWTsKPiAgCWRlZmF1bHQ6Cj4g LQkJTUlTU0lOR19DQVNFKHBsYW5lX3N0YXRlLT5iYXNlLnBpeGVsX2JsZW5kX21vZGUpOwo+ICsJ CU1JU1NJTkdfQ0FTRShwbGFuZV9zdGF0ZS0+aHcucGl4ZWxfYmxlbmRfbW9kZSk7Cj4gIAkJcmV0 dXJuIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxFOwo+ICAJfQo+ICB9Cj4gIAo+ICBzdGF0aWMgdTMy IGdsa19wbGFuZV9jb2xvcl9jdGxfYWxwaGEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0JaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0 LT5oYXNfYWxwaGEpCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT5ody5mYi0+Zm9ybWF0LT5oYXNfYWxw aGEpCj4gIAkJcmV0dXJuIFBMQU5FX0NPTE9SX0FMUEhBX0RJU0FCTEU7Cj4gIAo+IC0Jc3dpdGNo IChwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKSB7Cj4gKwlzd2l0Y2ggKHBsYW5l X3N0YXRlLT5ody5waXhlbF9ibGVuZF9tb2RlKSB7Cj4gIAljYXNlIERSTV9NT0RFX0JMRU5EX1BJ WEVMX05PTkU6Cj4gIAkJcmV0dXJuIFBMQU5FX0NPTE9SX0FMUEhBX0RJU0FCTEU7Cj4gIAljYXNl IERSTV9NT0RFX0JMRU5EX1BSRU1VTFRJOgo+IEBAIC00MTM2LDcgKzQxMzYsNyBAQCBzdGF0aWMg dTMyIGdsa19wbGFuZV9jb2xvcl9jdGxfYWxwaGEoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZQo+ICAJY2FzZSBEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRToKPiAgCQly ZXR1cm4gUExBTkVfQ09MT1JfQUxQSEFfSFdfUFJFTVVMVElQTFk7Cj4gIAlkZWZhdWx0Ogo+IC0J CU1JU1NJTkdfQ0FTRShwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKTsKPiArCQlN SVNTSU5HX0NBU0UocGxhbmVfc3RhdGUtPmh3LnBpeGVsX2JsZW5kX21vZGUpOwo+ICAJCXJldHVy biBQTEFORV9DT0xPUl9BTFBIQV9ESVNBQkxFOwo+ICAJfQo+ICB9Cj4gQEAgLTQyMjIsOCArNDIy Miw4IEBAIHUzMiBza2xfcGxhbmVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gLQljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0JdW5zaWdu ZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwljb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiArCXVuc2ln bmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCWNvbnN0IHN0 cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7 Cj4gIAl1MzIgcGxhbmVfY3RsOwo+ICAKPiBAQCAtNDIzMywxMCArNDIzMywxMCBAQCB1MzIgc2ts X3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CQlwbGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF9hbHBoYShwbGFuZV9zdGF0ZSk7Cj4gIAkJcGxh bmVfY3RsIHw9IFBMQU5FX0NUTF9QTEFORV9HQU1NQV9ESVNBQkxFOwo+ICAKPiAtCQlpZiAocGxh bmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2RpbmcgPT0gRFJNX0NPTE9SX1lDQkNSX0JUNzA5KQo+ ICsJCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3JfZW5jb2RpbmcgPT0gRFJNX0NPTE9SX1lDQkNS X0JUNzA5KQo+ICAJCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1lVVl9UT19SR0JfQ1NDX0ZPUk1B VF9CVDcwOTsKPiAgCj4gLQkJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX3JhbmdlID09IERS TV9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKQo+ICsJCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3Jf cmFuZ2UgPT0gRFJNX0NPTE9SX1lDQkNSX0ZVTExfUkFOR0UpCj4gIAkJCXBsYW5lX2N0bCB8PSBQ TEFORV9DVExfWVVWX1JBTkdFX0NPUlJFQ1RJT05fRElTQUJMRTsKPiAgCX0KPiAgCj4gQEAgLTQy NzgsNyArNDI3OCw3IEBAIHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUtPmRldik7 Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNl LmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ aHcuZmI7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICAJdTMyIHBsYW5lX2NvbG9yX2N0bCA9IDA7Cj4gIAo+ IEBAIC00Mjg2LDEyICs0Mjg2LDEyIEBAIHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJcGxhbmVfY29sb3JfY3RsIHw9 IGdsa19wbGFuZV9jb2xvcl9jdGxfYWxwaGEocGxhbmVfc3RhdGUpOwo+ICAKPiAgCWlmIChmYi0+ Zm9ybWF0LT5pc195dXYgJiYgIWljbF9pc19oZHJfcGxhbmUoZGV2X3ByaXYsIHBsYW5lLT5pZCkp IHsKPiAtCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2RpbmcgPT0gRFJNX0NPTE9S X1lDQkNSX0JUNzA5KQo+ICsJCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3JfZW5jb2RpbmcgPT0g RFJNX0NPTE9SX1lDQkNSX0JUNzA5KQo+ICAJCQlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09M T1JfQ1NDX01PREVfWVVWNzA5X1RPX1JHQjcwOTsKPiAgCQllbHNlCj4gIAkJCXBsYW5lX2NvbG9y X2N0bCB8PSBQTEFORV9DT0xPUl9DU0NfTU9ERV9ZVVY2MDFfVE9fUkdCNzA5Owo+ICAKPiAtCQlp ZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfcmFuZ2UgPT0gRFJNX0NPTE9SX1lDQkNSX0ZVTExf UkFOR0UpCj4gKwkJaWYgKHBsYW5lX3N0YXRlLT5ody5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1Jf WUNCQ1JfRlVMTF9SQU5HRSkKPiAgCQkJcGxhbmVfY29sb3JfY3RsIHw9IFBMQU5FX0NPTE9SX1lV Vl9SQU5HRV9DT1JSRUNUSU9OX0RJU0FCTEU7Cj4gIAl9IGVsc2UgaWYgKGZiLT5mb3JtYXQtPmlz X3l1dikgewo+ICAJCXBsYW5lX2NvbG9yX2N0bCB8PSBQTEFORV9DT0xPUl9JTlBVVF9DU0NfRU5B QkxFOwo+IEBAIC01NjI1LDcgKzU2MjUsNyBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVfc2NhbGVy X3BsYW5lKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJc3RydWN0IGlu dGVsX3BsYW5lICppbnRlbF9wbGFuZSA9Cj4gIAkJdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PmJhc2UucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShpbnRlbF9wbGFuZS0+YmFzZS5kZXYpOwo+IC0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi ID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJaW50IHJldDsKPiAgCWJvb2wgZm9yY2VfZGV0YWNo ID0gIWZiIHx8ICFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlOwo+ICAJYm9vbCBuZWVkX3NjYWxl ciA9IGZhbHNlOwo+IEBAIC0xMDcyOSw3ICsxMDcyOSw3IEBAIHN0YXRpYyB1MzIgaW50ZWxfY3Vy c29yX2Jhc2UoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAg ewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiAgCQl0b19pOTE1KHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+IC0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihmYik7Cj4gIAl1MzIgYmFzZTsKPiAg Cj4gQEAgLTEwNzc3LDcgKzEwNzc3LDcgQEAgc3RhdGljIGludCBpbnRlbF9jdXJzb3JfY2hlY2tf c3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUocGxhbmVfc3Rh dGUtPmJhc2UucGxhbmUtPmRldik7Cj4gLQl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9z dGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0 YXRlLT5ody5yb3RhdGlvbjsKPiAgCWludCBzcmNfeCwgc3JjX3k7Cj4gIAl1MzIgb2Zmc2V0Owo+ ICAJaW50IHJldDsKPiBAQCAtMTA4MTAsNyArMTA4MTAsNyBAQCBzdGF0aWMgaW50IGludGVsX2N1 cnNvcl9jaGVja19zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp Cj4gIAo+ICAJLyogSUxLKyBkbyB0aGlzIGF1dG9tYWdpY2FsbHkgaW4gaGFyZHdhcmUgKi8KPiAg CWlmIChIQVNfR01DSChkZXZfcHJpdikgJiYgcm90YXRpb24gJiBEUk1fTU9ERV9ST1RBVEVfMTgw KSB7Cj4gLQkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ YmFzZS5mYjsKPiArCQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0 YXRlLT5ody5mYjsKPiAgCQlpbnQgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKPiAgCQlpbnQgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gIAo+IEBAIC0xMDgyNyw3ICsxMDgyNyw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfY3Vyc29yX2NoZWNrX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSkKPiAgc3RhdGljIGludCBpbnRlbF9jaGVja19jdXJzb3Ioc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCByZXQ7Cj4gIAo+ICAJ aWYgKGZiICYmIGZiLT5tb2RpZmllciAhPSBEUk1fRk9STUFUX01PRF9MSU5FQVIpIHsKPiBAQCAt MTA5MDEsNyArMTA5MDEsNyBAQCBzdGF0aWMgYm9vbCBpODQ1X2N1cnNvcl9zaXplX29rKGNvbnN0 IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHN0YXRpYyBpbnQgaTg0 NV9jaGVja19jdXJzb3Ioc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJ CSAgICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0JY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiAr CWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ ICAJaW50IHJldDsKPiAgCj4gIAlyZXQgPSBpbnRlbF9jaGVja19jdXJzb3IoY3J0Y19zdGF0ZSwg cGxhbmVfc3RhdGUpOwo+IEBAIC0xMTA2Nyw3ICsxMTA2Nyw3IEBAIHN0YXRpYyB1MzIgaTl4eF9j dXJzb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CXJldHVybiAwOwo+ICAJfQo+ICAKPiAtCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiAm IERSTV9NT0RFX1JPVEFURV8xODApCj4gKwlpZiAocGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uICYg RFJNX01PREVfUk9UQVRFXzE4MCkKPiAgCQljbnRsIHw9IE1DVVJTT1JfUk9UQVRFXzE4MDsKPiAg Cj4gIAlyZXR1cm4gY250bDsKPiBAQCAtMTExMDAsNyArMTExMDAsNyBAQCBzdGF0aWMgYm9vbCBp OXh4X2N1cnNvcl9zaXplX29rKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIAkgKiBjdXJzb3JzLgo+ICAJICovCj4gIAlpZiAoSEFTX0NVUl9GQkMoZGV2X3By aXYpICYmCj4gLQkgICAgcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gJiBEUk1fTU9ERV9ST1RB VEVfMCkgewo+ICsJICAgIHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbiAmIERSTV9NT0RFX1JPVEFU RV8wKSB7Cj4gIAkJaWYgKGhlaWdodCA8IDggfHwgaGVpZ2h0ID4gd2lkdGgpCj4gIAkJCXJldHVy biBmYWxzZTsKPiAgCX0gZWxzZSB7Cj4gQEAgLTExMTE2LDcgKzExMTE2LDcgQEAgc3RhdGljIGlu dCBpOXh4X2NoZWNrX2N1cnNvcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiAgewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5l X3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWVudW0gcGlwZSBwaXBlID0g cGxhbmUtPnBpcGU7Cj4gIAlpbnQgcmV0Owo+ICAKPiBAQCAtMTE3MjAsMTEgKzExNzIwLDExIEBA IHN0YXRpYyBib29sIGludGVsX3dtX25lZWRfdXBkYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqY3VyLAo+ICAJaWYgKG5ldy0+YmFzZS52aXNpYmxlICE9IGN1ci0+YmFzZS52aXNp YmxlKQo+ICAJCXJldHVybiB0cnVlOwo+ICAKPiAtCWlmICghY3VyLT5iYXNlLmZiIHx8ICFuZXct PmJhc2UuZmIpCj4gKwlpZiAoIWN1ci0+aHcuZmIgfHwgIW5ldy0+aHcuZmIpCj4gIAkJcmV0dXJu IGZhbHNlOwo+ICAKPiAtCWlmIChjdXItPmJhc2UuZmItPm1vZGlmaWVyICE9IG5ldy0+YmFzZS5m Yi0+bW9kaWZpZXIgfHwKPiAtCSAgICBjdXItPmJhc2Uucm90YXRpb24gIT0gbmV3LT5iYXNlLnJv dGF0aW9uIHx8Cj4gKwlpZiAoY3VyLT5ody5mYi0+bW9kaWZpZXIgIT0gbmV3LT5ody5mYi0+bW9k aWZpZXIgfHwKPiArCSAgICBjdXItPmh3LnJvdGF0aW9uICE9IG5ldy0+aHcucm90YXRpb24gfHwK PiAgCSAgICBkcm1fcmVjdF93aWR0aCgmbmV3LT5iYXNlLnNyYykgIT0gZHJtX3JlY3Rfd2lkdGgo JmN1ci0+YmFzZS5zcmMpIHx8Cj4gIAkgICAgZHJtX3JlY3RfaGVpZ2h0KCZuZXctPmJhc2Uuc3Jj KSAhPSBkcm1fcmVjdF9oZWlnaHQoJmN1ci0+YmFzZS5zcmMpIHx8Cj4gIAkgICAgZHJtX3JlY3Rf d2lkdGgoJm5ldy0+YmFzZS5kc3QpICE9IGRybV9yZWN0X3dpZHRoKCZjdXItPmJhc2UuZHN0KSB8 fAo+IEBAIC0xMjM1Niw3ICsxMjM1Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpvdXRwdXRfZm9y bWF0cyhlbnVtIGludGVsX291dHB1dF9mb3JtYXQgZm9ybWF0KQo+ICBzdGF0aWMgdm9pZCBpbnRl bF9kdW1wX3BsYW5lX3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVf c3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlzdHJ1Y3QgZHJtX2Zvcm1hdF9u YW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAgCj4gIAlpZiAoIWZiKSB7Cj4gQEAgLTEyMzcyLDcgKzEy MzcyLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHVtcF9wbGFuZV9zdGF0ZShjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICAJCSAgICAgIGRybV9nZXRfZm9ybWF0 X25hbWUoZmItPmZvcm1hdC0+Zm9ybWF0LCAmZm9ybWF0X25hbWUpLAo+ICAJCSAgICAgIHllc25v KHBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpKTsKPiAgCURSTV9ERUJVR19LTVMoIlx0cm90YXRp b246IDB4JXgsIHNjYWxlcjogJWRcbiIsCj4gLQkJICAgICAgcGxhbmVfc3RhdGUtPmJhc2Uucm90 YXRpb24sIHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQpOwo+ICsJCSAgICAgIHBsYW5lX3N0YXRlLT5o dy5yb3RhdGlvbiwgcGxhbmVfc3RhdGUtPnNjYWxlcl9pZCk7Cj4gIAlpZiAocGxhbmVfc3RhdGUt PmJhc2UudmlzaWJsZSkKPiAgCQlEUk1fREVCVUdfS01TKCJcdHNyYzogIiBEUk1fUkVDVF9GUF9G TVQgIiBkc3Q6ICIgRFJNX1JFQ1RfRk1UICJcbiIsCj4gIAkJCSAgICAgIERSTV9SRUNUX0ZQX0FS RygmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSwKPiBAQCAtMTQ4NzYsOCArMTQ4NzYsOCBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9hdG9taWNfdHJhY2tfZmJzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKQo+ICAKPiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9wbGFuZV9pbl9zdGF0ZShzdGF0 ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwKPiAgCQkJCQkgICAgIG5ld19wbGFuZV9zdGF0ZSwg aSkKPiAtCQlpbnRlbF9mcm9udGJ1ZmZlcl90cmFjayh0b19pbnRlbF9mcm9udGJ1ZmZlcihvbGRf cGxhbmVfc3RhdGUtPmJhc2UuZmIpLAo+IC0JCQkJCXRvX2ludGVsX2Zyb250YnVmZmVyKG5ld19w bGFuZV9zdGF0ZS0+YmFzZS5mYiksCj4gKwkJaW50ZWxfZnJvbnRidWZmZXJfdHJhY2sodG9faW50 ZWxfZnJvbnRidWZmZXIob2xkX3BsYW5lX3N0YXRlLT5ody5mYiksCj4gKwkJCQkJdG9faW50ZWxf ZnJvbnRidWZmZXIobmV3X3BsYW5lX3N0YXRlLT5ody5mYiksCj4gIAkJCQkJcGxhbmUtPmZyb250 YnVmZmVyX2JpdCk7Cj4gIH0KPiAgCj4gQEAgLTE1MDQ2LDcgKzE1MDQ2LDcgQEAgc3RhdGljIGlu dCBpbnRlbF9wbGFuZV9waW5fZmIoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKPiAgewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBs YW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAK PiAgCWlmIChwbGFuZS0+aWQgPT0gUExBTkVfQ1VSU09SICYmCj4gQEAgLTE1MTExLDcgKzE1MTEx LDcgQEAgaW50ZWxfcHJlcGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAg CXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0KPiAgCQl0b19pbnRlbF9h dG9taWNfc3RhdGUobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnN0YXRlKTsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmRldik7Cj4gLQlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3X3BsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9sZF9vYmogPSBpbnRlbF9mYl9vYmoocGxhbmUtPnN0YXRl LT5mYik7Cj4gIAlpbnQgcmV0Owo+IEBAIC0xNTE3OSwxMiArMTUxNzksMTIgQEAgaW50ZWxfcHJl cGFyZV9wbGFuZV9mYihzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiAgCj4gIAkJZmVuY2UgPSBk bWFfcmVzdl9nZXRfZXhjbF9yY3Uob2JqLT5iYXNlLnJlc3YpOwo+ICAJCWlmIChmZW5jZSkgewo+ IC0JCQlhZGRfcnBzX2Jvb3N0X2FmdGVyX3ZibGFuayhuZXdfcGxhbmVfc3RhdGUtPmJhc2UuY3J0 YywKPiArCQkJYWRkX3Jwc19ib29zdF9hZnRlcl92YmxhbmsobmV3X3BsYW5lX3N0YXRlLT5ody5j cnRjLAo+ICAJCQkJCQkgICBmZW5jZSk7Cj4gIAkJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICAJ CX0KPiAgCX0gZWxzZSB7Cj4gLQkJYWRkX3Jwc19ib29zdF9hZnRlcl92YmxhbmsobmV3X3BsYW5l X3N0YXRlLT5iYXNlLmNydGMsCj4gKwkJYWRkX3Jwc19ib29zdF9hZnRlcl92YmxhbmsobmV3X3Bs YW5lX3N0YXRlLT5ody5jcnRjLAo+ICAJCQkJCSAgIG5ld19wbGFuZV9zdGF0ZS0+YmFzZS5mZW5j ZSk7Cj4gIAl9Cj4gIAo+IEBAIC0xNTM5Nyw5ICsxNTM5NywxMCBAQCBpbnRlbF9sZWdhY3lfY3Vy c29yX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCj4gIAlpZiAocmV0KQo+ICAJCWdv dG8gb3V0X2ZyZWU7Cj4gIAo+IC0JaW50ZWxfZnJvbnRidWZmZXJfZmx1c2godG9faW50ZWxfZnJv bnRidWZmZXIobmV3X3BsYW5lX3N0YXRlLT5iYXNlLmZiKSwgT1JJR0lOX0ZMSVApOwo+IC0JaW50 ZWxfZnJvbnRidWZmZXJfdHJhY2sodG9faW50ZWxfZnJvbnRidWZmZXIob2xkX3BsYW5lX3N0YXRl LT5iYXNlLmZiKSwKPiAtCQkJCXRvX2ludGVsX2Zyb250YnVmZmVyKG5ld19wbGFuZV9zdGF0ZS0+ YmFzZS5mYiksCj4gKwlpbnRlbF9mcm9udGJ1ZmZlcl9mbHVzaCh0b19pbnRlbF9mcm9udGJ1ZmZl cihuZXdfcGxhbmVfc3RhdGUtPmh3LmZiKSwKPiArCQkJCU9SSUdJTl9GTElQKTsKPiArCWludGVs X2Zyb250YnVmZmVyX3RyYWNrKHRvX2ludGVsX2Zyb250YnVmZmVyKG9sZF9wbGFuZV9zdGF0ZS0+ aHcuZmIpLAo+ICsJCQkJdG9faW50ZWxfZnJvbnRidWZmZXIobmV3X3BsYW5lX3N0YXRlLT5ody5m YiksCj4gIAkJCQlwbGFuZS0+ZnJvbnRidWZmZXJfYml0KTsKPiAgCj4gIAkvKiBTd2FwIHBsYW5l IHN0YXRlICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZmJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiYy5jCj4gaW5k ZXggYzZjYzM3NzVmM2I4Li4zZWE4ZDAxMGRiNmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZmJjLmMKPiBAQCAtNjYyLDcgKzY2Miw3IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2ZiY191cGRhdGVfc3RhdGVfY2FjaGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2 KTsKPiAgCXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOwo+ICAJc3RydWN0 IGludGVsX2ZiY19zdGF0ZV9jYWNoZSAqY2FjaGUgPSAmZmJjLT5zdGF0ZV9jYWNoZTsKPiAtCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCj4gIAljYWNo ZS0+dm1hID0gTlVMTDsKPiAgCWNhY2hlLT5mbGFncyA9IDA7Cj4gQEAgLTY3MSw3ICs2NzEsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChk ZXZfcHJpdikpCj4gIAkJY2FjaGUtPmNydGMuaHN3X2Jkd19waXhlbF9yYXRlID0gY3J0Y19zdGF0 ZS0+cGl4ZWxfcmF0ZTsKPiAgCj4gLQljYWNoZS0+cGxhbmUucm90YXRpb24gPSBwbGFuZV9zdGF0 ZS0+YmFzZS5yb3RhdGlvbjsKPiArCWNhY2hlLT5wbGFuZS5yb3RhdGlvbiA9IHBsYW5lX3N0YXRl LT5ody5yb3RhdGlvbjsKPiAgCS8qCj4gIAkgKiBTcmMgY29vcmRpbmF0ZXMgYXJlIGFscmVhZHkg cm90YXRlZCBieSAyNzAgZGVncmVlcyBmb3IKPiAgCSAqIHRoZSA5MC8yNzAgZGVncmVlIHBsYW5l IHJvdGF0aW9uIGNhc2VzICh0byBtYXRjaCB0aGUKPiBAQCAtNjg0LDcgKzY4NCw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2ZiY191cGRhdGVfc3RhdGVfY2FjaGUoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCj4gIAljYWNoZS0+cGxhbmUuYWRqdXN0ZWRfeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFu ZVswXS55Owo+ICAJY2FjaGUtPnBsYW5lLnkgPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4g MTY7Cj4gIAo+IC0JY2FjaGUtPnBsYW5lLnBpeGVsX2JsZW5kX21vZGUgPSBwbGFuZV9zdGF0ZS0+ YmFzZS5waXhlbF9ibGVuZF9tb2RlOwo+ICsJY2FjaGUtPnBsYW5lLnBpeGVsX2JsZW5kX21vZGUg PSBwbGFuZV9zdGF0ZS0+aHcucGl4ZWxfYmxlbmRfbW9kZTsKPiAgCj4gIAlpZiAoIWNhY2hlLT5w bGFuZS52aXNpYmxlKQo+ICAJCXJldHVybjsKPiBAQCAtMTA0Nyw3ICsxMDQ3LDcgQEAgdm9pZCBp bnRlbF9mYmNfY2hvb3NlX2NydGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJICogdG8gcGlwZSBvciBwbGFuZSBBLiAqLwo+ICAJZm9yX2VhY2hfbmV3X2ludGVsX3BsYW5l X2luX3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKPiAgCQlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiAtCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMocGxhbmVfc3RhdGUtPmJhc2UuY3J0Yyk7Cj4gKwkJc3RydWN0IGludGVs X2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKHBsYW5lX3N0YXRlLT5ody5jcnRjKTsKPiAgCj4g IAkJaWYgKCFwbGFuZS0+aGFzX2ZiYykKPiAgCQkJY29udGludWU7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCA4NDhjZTA3YThlYzIuLjQ2 ZTNkNmNmNTk3NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf b3ZlcmxheS5jCj4gQEAgLTY2OSw3ICs2NjksNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVfY29sb3Jr ZXkoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCj4gIAkJZmxhZ3MgfD0gRFNUX0tFWV9F TkFCTEU7Cj4gIAo+ICAJaWYgKHN0YXRlLT5iYXNlLnZpc2libGUpCj4gLQkJZm9ybWF0ID0gc3Rh dGUtPmJhc2UuZmItPmZvcm1hdC0+Zm9ybWF0Owo+ICsJCWZvcm1hdCA9IHN0YXRlLT5ody5mYi0+ Zm9ybWF0LT5mb3JtYXQ7Cj4gIAo+ICAJc3dpdGNoIChmb3JtYXQpIHsKPiAgCWNhc2UgRFJNX0ZP Uk1BVF9DODoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMK PiBpbmRleCA1YmE4ZmFmMGNjZmUuLmIyMTE2ZDEyMzU0OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwo+IEBAIC0yNDEsOCArMjQxLDggQEAgdm9p ZCBpbnRlbF9waXBlX3VwZGF0ZV9lbmQoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRj X3N0YXRlKQo+ICBpbnQgaW50ZWxfcGxhbmVfY2hlY2tfc3RyaWRlKGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gLQljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0J dW5zaWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAr CXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCXUz MiBzdHJpZGUsIG1heF9zdHJpZGU7Cj4gIAo+ICAJLyoKPiBAQCAtMjcyLDEwICsyNzIsMTAgQEAg aW50IGludGVsX3BsYW5lX2NoZWNrX3N0cmlkZShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlKQo+ICAKPiAgaW50IGludGVsX3BsYW5lX2NoZWNrX3NyY19jb29yZGlu YXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJ Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4g IAlzdHJ1Y3QgZHJtX3JlY3QgKnNyYyA9ICZwbGFuZV9zdGF0ZS0+YmFzZS5zcmM7Cj4gIAl1MzIg c3JjX3gsIHNyY195LCBzcmNfdywgc3JjX2gsIGhzdWIsIHZzdWI7Cj4gLQlib29sIHJvdGF0ZWQg PSBkcm1fcm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uKTsKPiAr CWJvb2wgcm90YXRlZCA9IGRybV9yb3RhdGlvbl85MF9vcl8yNzAocGxhbmVfc3RhdGUtPmh3LnJv dGF0aW9uKTsKPiAgCj4gIAkvKgo+ICAJICogSGFyZHdhcmUgZG9lc24ndCBoYW5kbGUgc3VicGl4 ZWwgY29vcmRpbmF0ZXMuCj4gQEAgLTMyOSw3ICszMjksNyBAQCBza2xfcGxhbmVfcmF0aW8oY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJdW5zaWduZWQgaW50 ICpudW0sIHVuc2lnbmVkIGludCAqZGVuKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lLT5kZXYpOwo+IC0J Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsK PiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZi Owo+ICAKPiAgCWlmIChmYi0+Zm9ybWF0LT5jcHBbMF0gPT0gOCkgewo+ICAJCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gQEAgLTM5 Niw3ICszOTYsNyBAQCBza2xfcHJvZ3JhbV9zY2FsZXIoc3RydWN0IGludGVsX3BsYW5lICpwbGFu ZSwKPiAgCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5l LT5iYXNlLmRldik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l X3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBw bGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ICAJ aW50IHNjYWxlcl9pZCA9IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQ7Cj4gIAljb25zdCBzdHJ1Y3Qg aW50ZWxfc2NhbGVyICpzY2FsZXIgPQo+IEBAIC01NDIsMTAgKzU0MiwxMCBAQCBpY2xfcHJvZ3Jh bV9pbnB1dF9jc2Moc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCX07Cj4gIAljb25zdCB1 MTYgKmNzYzsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfcmFuZ2UgPT0gRFJN X0NPTE9SX1lDQkNSX0ZVTExfUkFOR0UpCj4gLQkJY3NjID0gaW5wdXRfY3NjX21hdHJpeFtwbGFu ZV9zdGF0ZS0+YmFzZS5jb2xvcl9lbmNvZGluZ107Cj4gKwlpZiAocGxhbmVfc3RhdGUtPmh3LmNv bG9yX3JhbmdlID09IERSTV9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKQo+ICsJCWNzYyA9IGlucHV0 X2NzY19tYXRyaXhbcGxhbmVfc3RhdGUtPmh3LmNvbG9yX2VuY29kaW5nXTsKPiAgCWVsc2UKPiAt CQljc2MgPSBpbnB1dF9jc2NfbWF0cml4X2xyW3BsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX2VuY29k aW5nXTsKPiArCQljc2MgPSBpbnB1dF9jc2NfbWF0cml4X2xyW3BsYW5lX3N0YXRlLT5ody5jb2xv cl9lbmNvZGluZ107Cj4gIAo+ICAJSTkxNV9XUklURV9GVyhQTEFORV9JTlBVVF9DU0NfQ09FRkYo cGlwZSwgcGxhbmVfaWQsIDApLCBST0ZGKGNzY1swXSkgfAo+ICAJCSAgICAgIEdPRkYoY3NjWzFd KSk7Cj4gQEAgLTU1OSw3ICs1NTksNyBAQCBpY2xfcHJvZ3JhbV9pbnB1dF9jc2Moc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSwKPiAgCj4gIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX0lOUFVUX0NTQ19Q UkVPRkYocGlwZSwgcGxhbmVfaWQsIDApLAo+ICAJCSAgICAgIFBSRU9GRl9ZVVZfVE9fUkdCX0hJ KTsKPiAtCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1JfWUNC Q1JfRlVMTF9SQU5HRSkKPiArCWlmIChwbGFuZV9zdGF0ZS0+aHcuY29sb3JfcmFuZ2UgPT0gRFJN X0NPTE9SX1lDQkNSX0ZVTExfUkFOR0UpCj4gIAkJSTkxNV9XUklURV9GVyhQTEFORV9JTlBVVF9D U0NfUFJFT0ZGKHBpcGUsIHBsYW5lX2lkLCAxKSwgMCk7Cj4gIAllbHNlCj4gIAkJSTkxNV9XUklU RV9GVyhQTEFORV9JTlBVVF9DU0NfUFJFT0ZGKHBpcGUsIHBsYW5lX2lkLCAxKSwKPiBAQCAtNTkx LDggKzU5MSw4IEBAIHNrbF9wcm9ncmFtX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs Cj4gIAl1MzIgc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uuc3JjKSA+ PiAxNjsKPiAgCXUzMiBzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPmJhc2Uu c3JjKSA+PiAxNjsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqbGlua2VkID0gcGxhbmVfc3RhdGUt PnBsYW5hcl9saW5rZWRfcGxhbmU7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0JdTggYWxwaGEgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5hbHBoYSA+PiA4Owo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFu ZV9zdGF0ZS0+aHcuZmI7Cj4gKwl1OCBhbHBoYSA9IHBsYW5lX3N0YXRlLT5ody5hbHBoYSA+PiA4 Owo+ICAJdTMyIHBsYW5lX2NvbG9yX2N0bCA9IDA7Cj4gIAl1bnNpZ25lZCBsb25nIGlycWZsYWdz Owo+ICAJdTMyIGtleW1zaywga2V5bWF4Owo+IEBAIC03NjgsNyArNzY4LDcgQEAgY2h2X3VwZGF0 ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ ICAJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRl LT5iYXNlLnBsYW5lKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQg PSBwbGFuZS0+aWQ7Cj4gIAkvKgo+ICAJICogfHJ8ICAgfCBjMCBjMSBjMiB8ICAgfGNyfAo+IEBA IC03OTQsNyArNzk0LDcgQEAgY2h2X3VwZGF0ZV9jc2MoY29uc3Qgc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgCQkJICAgIDAsIDQwOTYsICA3NjAxLAo+ICAJCX0sCj4g IAl9Owo+IC0JY29uc3QgczE2ICpjc2MgPSBjc2NfbWF0cml4W3BsYW5lX3N0YXRlLT5iYXNlLmNv bG9yX2VuY29kaW5nXTsKPiArCWNvbnN0IHMxNiAqY3NjID0gY3NjX21hdHJpeFtwbGFuZV9zdGF0 ZS0+aHcuY29sb3JfZW5jb2RpbmddOwo+ICAKPiAgCS8qIFNlZW1zIFJHQiBkYXRhIGJ5cGFzc2Vz IHRoZSBDU0MgYWx3YXlzICovCj4gIAlpZiAoIWZiLT5mb3JtYXQtPmlzX3l1dikKPiBAQCAtODI3 LDEzICs4MjcsMTMgQEAgdmx2X3VwZGF0ZV9jbHJjKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0 b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gLQljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJ Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4g IAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9p ZCA9IHBsYW5lLT5pZDsKPiAgCWludCBjb250cmFzdCwgYnJpZ2h0bmVzcywgc2hfc2NhbGUsIHNo X3Npbiwgc2hfY29zOwo+ICAKPiAgCWlmIChmYi0+Zm9ybWF0LT5pc195dXYgJiYKPiAtCSAgICBw bGFuZV9zdGF0ZS0+YmFzZS5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1JfWUNCQ1JfTElNSVRFRF9S QU5HRSkgewo+ICsJICAgIHBsYW5lX3N0YXRlLT5ody5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1Jf WUNCQ1JfTElNSVRFRF9SQU5HRSkgewo+ICAJCS8qCj4gIAkJICogRXhwYW5kIGxpbWl0ZWQgcmFu Z2UgdG8gZnVsbCByYW5nZToKPiAgCQkgKiBDb250cmFzdCBpcyBhcHBsaWVkIGZpcnN0IGFuZCBp cyB1c2VkIHRvIGV4cGFuZCBZIHJhbmdlLgo+IEBAIC04NjcsNyArODY3LDcgQEAgdmx2X3BsYW5l X3JhdGlvKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCXVu c2lnbmVkIGludCAqbnVtLCB1bnNpZ25lZCBpbnQgKmRlbikKPiAgewo+ICAJdTggYWN0aXZlX3Bs YW5lcyA9IGNydGNfc3RhdGUtPmFjdGl2ZV9wbGFuZXMgJiB+QklUKFBMQU5FX0NVUlNPUik7Cj4g LQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZi Owo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcu ZmI7Cj4gIAl1bnNpZ25lZCBpbnQgY3BwID0gZmItPmZvcm1hdC0+Y3BwWzBdOwo+ICAKPiAgCS8q Cj4gQEAgLTk1Myw4ICs5NTMsOCBAQCBzdGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsX2NydGMoY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIHN0YXRpYyB1MzIgdmx2 X3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ IC0JY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5m YjsKPiAtCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9u Owo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcu ZmI7Cj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247 Cj4gIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5l X3N0YXRlLT5ja2V5Owo+ICAJdTMyIHNwcmN0bDsKPiAgCj4gQEAgLTk5OSw3ICs5OTksNyBAQCBz dGF0aWMgdTMyIHZsdl9zcHJpdGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJCXJldHVybiAwOwo+ICAJfQo+ICAKPiAtCWlmIChwbGFuZV9zdGF0ZS0+ YmFzZS5jb2xvcl9lbmNvZGluZyA9PSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpCj4gKwlpZiAocGxh bmVfc3RhdGUtPmh3LmNvbG9yX2VuY29kaW5nID09IERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkKPiAg CQlzcHJjdGwgfD0gU1BfWVVWX0ZPUk1BVF9CVDcwOTsKPiAgCj4gIAlpZiAoZmItPm1vZGlmaWVy ID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQo+IEBAIC0xMDIxLDcgKzEwMjEsNyBAQCBzdGF0 aWMgdm9pZCB2bHZfdXBkYXRlX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gLQljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAllbnVt IHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBs YW5lLT5pZDsKPiAgCXUxNiBnYW1tYVs4XTsKPiBAQCAtMTE1MSw3ICsxMTUxLDcgQEAgc3RhdGlj IHZvaWQgaXZiX3BsYW5lX3JhdGlvKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ICAJCQkgICAgdW5zaWduZWQgaW50ICpudW0sIHVuc2lnbmVkIGludCAqZGVuKQo+ ICB7Cj4gIAl1OCBhY3RpdmVfcGxhbmVzID0gY3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmIH5C SVQoUExBTkVfQ1VSU09SKTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0 LT5jcHBbMF07Cj4gIAo+ICAJaWYgKGh3ZWlnaHQ4KGFjdGl2ZV9wbGFuZXMpID09IDIpIHsKPiBA QCAtMTE4Nyw3ICsxMTg3LDcgQEAgc3RhdGljIHZvaWQgaXZiX3BsYW5lX3JhdGlvX3NjYWxpbmco Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgICAgY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCQkJCSAgICB1bnNp Z25lZCBpbnQgKm51bSwgdW5zaWduZWQgaW50ICpkZW4pCj4gIHsKPiAtCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVuc2lnbmVk IGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07Cj4gIAo+ICAJc3dpdGNoIChjcHApIHsKPiBA QCAtMTI2NSw3ICsxMjY1LDcgQEAgc3RhdGljIHZvaWQgaHN3X3BsYW5lX3JhdGlvKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgICAgdW5zaWduZWQgaW50 ICpudW0sIHVuc2lnbmVkIGludCAqZGVuKQo+ICB7Cj4gIAl1OCBhY3RpdmVfcGxhbmVzID0gY3J0 Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmIH5CSVQoUExBTkVfQ1VSU09SKTsKPiAtCWNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCXVu c2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07Cj4gIAo+ICAJaWYgKGh3ZWlnaHQ4 KGFjdGl2ZV9wbGFuZXMpID09IDIpIHsKPiBAQCAtMTMyMSw3ICsxMzIxLDcgQEAgc3RhdGljIGJv b2wgaXZiX25lZWRfc3ByaXRlX2dhbW1hKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 Cj4gIAkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiAtCWNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwljb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAgCj4g IAlyZXR1cm4gZmItPmZvcm1hdC0+Y3BwWzBdID09IDggJiYKPiAgCQkoSVNfSVZZQlJJREdFKGRl dl9wcml2KSB8fCBJU19IQVNXRUxMKGRldl9wcml2KSk7Cj4gQEAgLTEzMzIsOCArMTMzMiw4IEBA IHN0YXRpYyB1MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 Cj4gIAkJdG9faTkxNShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZS0+ZGV2KTsKPiAtCWNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gLQl1bnNp Z25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCWNvbnN0 IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICsJdW5z aWduZWQgaW50IHJvdGF0aW9uID0gcGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uOwo+ICAJY29uc3Qg c3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtleSA9ICZwbGFuZV9zdGF0ZS0+Y2tl eTsKPiAgCXUzMiBzcHJjdGw7Cj4gIAo+IEBAIC0xMzc1LDEwICsxMzc1LDEwIEBAIHN0YXRpYyB1 MzIgaXZiX3Nwcml0ZV9jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gIAlpZiAoIWl2Yl9uZWVkX3Nwcml0ZV9nYW1tYShwbGFuZV9zdGF0ZSkpCj4gIAkJc3By Y3RsIHw9IFNQUklURV9JTlRfR0FNTUFfRElTQUJMRTsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUt PmJhc2UuY29sb3JfZW5jb2RpbmcgPT0gRFJNX0NPTE9SX1lDQkNSX0JUNzA5KQo+ICsJaWYgKHBs YW5lX3N0YXRlLT5ody5jb2xvcl9lbmNvZGluZyA9PSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpCj4g IAkJc3ByY3RsIHw9IFNQUklURV9ZVVZfVE9fUkdCX0NTQ19GT1JNQVRfQlQ3MDk7Cj4gIAo+IC0J aWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX3JhbmdlID09IERSTV9DT0xPUl9ZQ0JDUl9GVUxM X1JBTkdFKQo+ICsJaWYgKHBsYW5lX3N0YXRlLT5ody5jb2xvcl9yYW5nZSA9PSBEUk1fQ09MT1Jf WUNCQ1JfRlVMTF9SQU5HRSkKPiAgCQlzcHJjdGwgfD0gU1BSSVRFX1lVVl9SQU5HRV9DT1JSRUNU SU9OX0RJU0FCTEU7Cj4gIAo+ICAJaWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0Rf WF9USUxFRCkKPiBAQCAtMTU2Nyw3ICsxNTY3LDcgQEAgaXZiX3BsYW5lX2dldF9od19zdGF0ZShz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICBzdGF0aWMgaW50IGc0eF9zcHJpdGVfbWluX2Nk Y2xrKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkJY29u c3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+IC0JY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJ dW5zaWduZWQgaW50IGhzY2FsZSwgcGl4ZWxfcmF0ZTsKPiAgCXVuc2lnbmVkIGludCBsaW1pdCwg ZGVjaW1hdGU7Cj4gIAo+IEBAIC0xNjM3LDggKzE2MzcsOCBAQCBzdGF0aWMgdTMyIGc0eF9zcHJp dGVfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUocGxhbmVf c3RhdGUtPmJhc2UucGxhbmUtPmRldik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0JdW5zaWduZWQgaW50IHJvdGF0aW9uID0g cGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiArCXVuc2lnbmVkIGludCByb3RhdGlvbiA9 IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3By aXRlX2NvbG9ya2V5ICprZXkgPSAmcGxhbmVfc3RhdGUtPmNrZXk7Cj4gIAl1MzIgZHZzY250cjsK PiAgCj4gQEAgLTE2NzcsMTAgKzE2NzcsMTAgQEAgc3RhdGljIHUzMiBnNHhfc3ByaXRlX2N0bChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlyZXR1cm4gMDsK PiAgCX0KPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfZW5jb2RpbmcgPT0gRFJN X0NPTE9SX1lDQkNSX0JUNzA5KQo+ICsJaWYgKHBsYW5lX3N0YXRlLT5ody5jb2xvcl9lbmNvZGlu ZyA9PSBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDkpCj4gIAkJZHZzY250ciB8PSBEVlNfWVVWX0ZPUk1B VF9CVDcwOTsKPiAgCj4gLQlpZiAocGxhbmVfc3RhdGUtPmJhc2UuY29sb3JfcmFuZ2UgPT0gRFJN X0NPTE9SX1lDQkNSX0ZVTExfUkFOR0UpCj4gKwlpZiAocGxhbmVfc3RhdGUtPmh3LmNvbG9yX3Jh bmdlID09IERSTV9DT0xPUl9ZQ0JDUl9GVUxMX1JBTkdFKQo+ICAJCWR2c2NudHIgfD0gRFZTX1lV Vl9SQU5HRV9DT1JSRUNUSU9OX0RJU0FCTEU7Cj4gIAo+ICAJaWYgKGZiLT5tb2RpZmllciA9PSBJ OTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiBAQCAtMTcwMSw3ICsxNzAxLDcgQEAgc3RhdGljIHZv aWQgZzR4X3VwZGF0ZV9nYW1tYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxh bmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+IC0JY29uc3Qgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiArCWNvbnN0IHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmh3LmZiOwo+ICAJZW51bSBwaXBl IHBpcGUgPSBwbGFuZS0+cGlwZTsKPiAgCXUxNiBnYW1tYVs4XTsKPiAgCWludCBpOwo+IEBAIC0x NzMzLDcgKzE3MzMsNyBAQCBzdGF0aWMgdm9pZCBpbGtfdXBkYXRlX2dhbW1hKGNvbnN0IHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNl LmRldik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRl LT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9z dGF0ZS0+aHcuZmI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwo+ICAJdTE2IGdh bW1hWzE3XTsKPiAgCWludCBpOwo+IEBAIC0xODg3LDcgKzE4ODcsNyBAQCBzdGF0aWMgaW50Cj4g IGc0eF9zcHJpdGVfY2hlY2tfc2NhbGluZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKPiAgCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsK PiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2Uu ZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5o dy5mYjsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnBsYW5lX3N0YXRlLT5iYXNl LnNyYzsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0ID0gJnBsYW5lX3N0YXRlLT5iYXNl LmRzdDsKPiAgCWludCBzcmNfeCwgc3JjX3csIHNyY19oLCBjcnRjX3csIGNydGNfaDsKPiBAQCAt MTk1NCw3ICsxOTU0LDcgQEAgZzR4X3Nwcml0ZV9jaGVjayhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAgCWludCBtYXhfc2NhbGUgPSBEUk1fUExBTkVfSEVMUEVSX05PX1ND QUxJTkc7Cj4gIAlpbnQgcmV0Owo+ICAKPiAtCWlmIChpbnRlbF9mYl9zY2FsYWJsZShwbGFuZV9z dGF0ZS0+YmFzZS5mYikpIHsKPiArCWlmIChpbnRlbF9mYl9zY2FsYWJsZShwbGFuZV9zdGF0ZS0+ aHcuZmIpKSB7Cj4gIAkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA3KSB7Cj4gIAkJCW1pbl9z Y2FsZSA9IDE7Cj4gIAkJCW1heF9zY2FsZSA9IDE2IDw8IDE2Owo+IEBAIC0xOTk4LDcgKzE5OTgs NyBAQCBpbnQgY2h2X3BsYW5lX2NoZWNrX3JvdGF0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUg PSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRldik7Cj4gLQl1 bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbjsKPiArCXVu c2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCj4gIAkv KiBDSFYgaWdub3JlcyB0aGUgbWlycm9yIGJpdCB3aGVuIHRoZSByb3RhdGUgYml0IGlzIHNldCA6 KCAqLwo+ICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmCj4gQEAgLTIwNTAsOCArMjA1 MCw4IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2ZiKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l ID0gdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUtPmJhc2UucGxhbmUpOwo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+IC0J Y29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsK PiAtCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwo+ ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7 Cj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb24gPSBwbGFuZV9zdGF0ZS0+aHcucm90YXRpb247Cj4g IAlzdHJ1Y3QgZHJtX2Zvcm1hdF9uYW1lX2J1ZiBmb3JtYXRfbmFtZTsKPiAgCj4gIAlpZiAoIWZi KQo+IEBAIC0yMTUxLDggKzIxNTEsOCBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVja19kc3Rf Y29vcmRpbmF0ZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfcwo+ICAKPiAg c3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfbnYxMl9yb3RhdGlvbihjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+IC0JdW5zaWduZWQgaW50IHJv dGF0aW9uID0gcGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb247Cj4gKwljb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiArCXVuc2lnbmVkIGludCBy b3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsKPiAgCWludCBzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+ICAKPiAgCS8qIERpc3Bs YXkgV0EgIzExMDYgKi8KPiBAQCAtMjE4Nyw3ICsyMTg3LDcgQEAgc3RhdGljIGludCBza2xfcGxh bmVfY2hlY2soc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIHsKPiAgCXN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFz ZS5wbGFuZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KHBsYW5lLT5iYXNlLmRldik7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAlpbnQgbWluX3NjYWxlID0gRFJNX1BMQU5FX0hF TFBFUl9OT19TQ0FMSU5HOwo+ICAJaW50IG1heF9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJfTk9f U0NBTElORzsKPiAgCWludCByZXQ7Cj4gQEAgLTIyMjksNyArMjIyOSw3IEBAIHN0YXRpYyBpbnQg c2tsX3BsYW5lX2NoZWNrKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CXJldHVybiByZXQ7Cj4gIAo+ICAJLyogSFcgb25seSBoYXMgOCBiaXRzIHBpeGVsIHByZWNpc2lv biwgZGlzYWJsZSBwbGFuZSBpZiBpbnZpc2libGUgKi8KPiAtCWlmICghKHBsYW5lX3N0YXRlLT5i YXNlLmFscGhhID4+IDgpKQo+ICsJaWYgKCEocGxhbmVfc3RhdGUtPmh3LmFscGhhID4+IDgpKQo+ ICAJCXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgPSBmYWxzZTsKPiAgCj4gIAlwbGFuZV9zdGF0 ZS0+Y3RsID0gc2tsX3BsYW5lX2N0bChjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSk7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggZGU3NzAzYWM1MjhkLi4yNWE4ZTIwZDIxMTIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtODAxLDcgKzgwMSw3IEBAIHN0YXRpYyBib29s IGludGVsX3dtX3BsYW5lX3Zpc2libGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCj4gIAkgKiBhcm91bmQgdGhpcyBwcm9ibGVtIHdpdGggdGhlIHdhdGVybWFyayBj b2RlLgo+ICAJICovCj4gIAlpZiAocGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikKPiAtCQlyZXR1 cm4gcGxhbmVfc3RhdGUtPmJhc2UuZmIgIT0gTlVMTDsKPiArCQlyZXR1cm4gcGxhbmVfc3RhdGUt Pmh3LmZiICE9IE5VTEw7Cj4gIAllbHNlCj4gIAkJcmV0dXJuIHBsYW5lX3N0YXRlLT5iYXNlLnZp c2libGU7Cj4gIH0KPiBAQCAtMTA4OCw3ICsxMDg4LDcgQEAgc3RhdGljIHUxNiBnNHhfY29tcHV0 ZV93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmICgh aW50ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSkpCj4gIAkJcmV0 dXJuIDA7Cj4gIAo+IC0JY3BwID0gcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBd Owo+ICsJY3BwID0gcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQtPmNwcFswXTsKPiAgCj4gIAkv Kgo+ICAJICogTm90IDEwMCUgc3VyZSB3aGljaCB3YXkgRUxLIHNob3VsZCBnbyBoZXJlIGFzIHRo ZQo+IEBAIC0xMzA4LDggKzEzMDgsOCBAQCBzdGF0aWMgaW50IGc0eF9jb21wdXRlX3BpcGVfd20o c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gIAlmb3JfZWFjaF9vbGRuZXdf aW50ZWxfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLAo+ICAJCQkJCSAgICAgb2xkX3BsYW5l X3N0YXRlLAo+ICAJCQkJCSAgICAgbmV3X3BsYW5lX3N0YXRlLCBpKSB7Cj4gLQkJaWYgKG5ld19w bGFuZV9zdGF0ZS0+YmFzZS5jcnRjICE9ICZjcnRjLT5iYXNlICYmCj4gLQkJICAgIG9sZF9wbGFu ZV9zdGF0ZS0+YmFzZS5jcnRjICE9ICZjcnRjLT5iYXNlKQo+ICsJCWlmIChuZXdfcGxhbmVfc3Rh dGUtPmh3LmNydGMgIT0gJmNydGMtPmJhc2UgJiYKPiArCQkgICAgb2xkX3BsYW5lX3N0YXRlLT5o dy5jcnRjICE9ICZjcnRjLT5iYXNlKQo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJaWYgKGc0eF9y YXdfcGxhbmVfd21fY29tcHV0ZShjcnRjX3N0YXRlLCBuZXdfcGxhbmVfc3RhdGUpKQo+IEBAIC0x NTkzLDcgKzE1OTMsNyBAQCBzdGF0aWMgdTE2IHZsdl9jb21wdXRlX3dtX2xldmVsKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJaWYgKCFpbnRlbF93bV9wbGFu ZV92aXNpYmxlKGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4g LQljcHAgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5jcHBbMF07Cj4gKwljcHAgPSBw bGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1hdC0+Y3BwWzBdOwo+ICAJY2xvY2sgPSBhZGp1c3RlZF9t b2RlLT5jcnRjX2Nsb2NrOwo+ICAJaHRvdGFsID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19odG90YWw7 Cj4gIAl3aWR0aCA9IGNydGNfc3RhdGUtPnBpcGVfc3JjX3c7Cj4gQEAgLTE4MjksOCArMTgyOSw4 IEBAIHN0YXRpYyBpbnQgdmx2X2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKPiAgCWZvcl9lYWNoX29sZG5ld19pbnRlbF9wbGFuZV9pbl9zdGF0ZShz dGF0ZSwgcGxhbmUsCj4gIAkJCQkJICAgICBvbGRfcGxhbmVfc3RhdGUsCj4gIAkJCQkJICAgICBu ZXdfcGxhbmVfc3RhdGUsIGkpIHsKPiAtCQlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLmNydGMg IT0gJmNydGMtPmJhc2UgJiYKPiAtCQkgICAgb2xkX3BsYW5lX3N0YXRlLT5iYXNlLmNydGMgIT0g JmNydGMtPmJhc2UpCj4gKwkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+aHcuY3J0YyAhPSAmY3J0Yy0+ YmFzZSAmJgo+ICsJCSAgICBvbGRfcGxhbmVfc3RhdGUtPmh3LmNydGMgIT0gJmNydGMtPmJhc2Up Cj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAgCQlpZiAodmx2X3Jhd19wbGFuZV93bV9jb21wdXRlKGNy dGNfc3RhdGUsIG5ld19wbGFuZV9zdGF0ZSkpCj4gQEAgLTI0NzUsNyArMjQ3NSw3IEBAIHN0YXRp YyB1MzIgaWxrX2NvbXB1dGVfcHJpX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3RhdGUsIHBs YW5lX3N0YXRlKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQljcHAgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5mYi0+Zm9ybWF0LT5jcHBbMF07Cj4gKwljcHAgPSBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1h dC0+Y3BwWzBdOwo+ICAKPiAgCW1ldGhvZDEgPSBpbGtfd21fbWV0aG9kMShjcnRjX3N0YXRlLT5w aXhlbF9yYXRlLCBjcHAsIG1lbV92YWx1ZSk7Cj4gIAo+IEBAIC0yNTA3LDcgKzI1MDcsNyBAQCBz dGF0aWMgdTMyIGlsa19jb21wdXRlX3Nwcl93bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmICghaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRjX3N0YXRl LCBwbGFuZV9zdGF0ZSkpCj4gIAkJcmV0dXJuIDA7Cj4gIAo+IC0JY3BwID0gcGxhbmVfc3RhdGUt PmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBdOwo+ICsJY3BwID0gcGxhbmVfc3RhdGUtPmh3LmZiLT5m b3JtYXQtPmNwcFswXTsKPiAgCj4gIAltZXRob2QxID0gaWxrX3dtX21ldGhvZDEoY3J0Y19zdGF0 ZS0+cGl4ZWxfcmF0ZSwgY3BwLCBtZW1fdmFsdWUpOwo+ICAJbWV0aG9kMiA9IGlsa193bV9tZXRo b2QyKGNydGNfc3RhdGUtPnBpeGVsX3JhdGUsCj4gQEAgLTI1MzMsNyArMjUzMyw3IEBAIHN0YXRp YyB1MzIgaWxrX2NvbXB1dGVfY3VyX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNydGNfc3RhdGUsIHBs YW5lX3N0YXRlKSkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQljcHAgPSBwbGFuZV9zdGF0ZS0+YmFz ZS5mYi0+Zm9ybWF0LT5jcHBbMF07Cj4gKwljcHAgPSBwbGFuZV9zdGF0ZS0+aHcuZmItPmZvcm1h dC0+Y3BwWzBdOwo+ICAKPiAgCXJldHVybiBpbGtfd21fbWV0aG9kMihjcnRjX3N0YXRlLT5waXhl bF9yYXRlLAo+ICAJCQkgICAgICBjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmNydGNfaHRv dGFsLAo+IEBAIC0yNTUxLDcgKzI1NTEsNyBAQCBzdGF0aWMgdTMyIGlsa19jb21wdXRlX2ZiY193 bShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmICghaW50 ZWxfd21fcGxhbmVfdmlzaWJsZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSkpCj4gIAkJcmV0dXJu IDA7Cj4gIAo+IC0JY3BwID0gcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+Y3BwWzBdOwo+ ICsJY3BwID0gcGxhbmVfc3RhdGUtPmh3LmZiLT5mb3JtYXQtPmNwcFswXTsKPiAgCj4gIAlyZXR1 cm4gaWxrX3dtX2ZiYyhwcmlfdmFsLCBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmJhc2Uu ZHN0KSwgY3BwKTsKPiAgfQo+IEBAIC00MDkxLDcgKzQwOTEsNyBAQCBza2xfcGxhbmVfcmVsYXRp dmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ ICAJCQkgICAgIGludCBjb2xvcl9wbGFuZSkKPiAgewo+ICAJc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lX3N0YXRlLT5iYXNlLnBsYW5lKTsKPiAtCWNvbnN0 IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gKwlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKPiAg CXUzMiBkYXRhX3JhdGU7Cj4gIAl1MzIgd2lkdGggPSAwLCBoZWlnaHQgPSAwOwo+ICAJdWludF9m aXhlZF8xNl8xNl90IGRvd25fc2NhbGVfYW1vdW50Owo+IEBAIC00NjEyLDcgKzQ2MTIsNyBAQCBz a2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlLAo+ICAJCQkgICAgc3RydWN0IHNrbF93bV9wYXJhbXMgKndwLCBpbnQgY29sb3Jf cGxhbmUpCj4gIHsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmJhc2UuZmI7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5ody5mYjsKPiAgCWludCB3aWR0aDsKPiAgCj4gIAkvKgo+IEBAIC00NjI0LDcg KzQ2MjQsNyBAQCBza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAo+ICAJcmV0dXJuIHNrbF9jb21wdXRlX3dtX3Bh cmFtcyhjcnRjX3N0YXRlLCB3aWR0aCwKPiAgCQkJCSAgICAgZmItPmZvcm1hdCwgZmItPm1vZGlm aWVyLAo+IC0JCQkJICAgICBwbGFuZV9zdGF0ZS0+YmFzZS5yb3RhdGlvbiwKPiArCQkJCSAgICAg cGxhbmVfc3RhdGUtPmh3LnJvdGF0aW9uLAo+ICAJCQkJICAgICBza2xfYWRqdXN0ZWRfcGxhbmVf cGl4ZWxfcmF0ZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0ZSksCj4gIAkJCQkgICAgIHdwLCBjb2xv cl9wbGFuZSk7Cj4gIH0KPiBAQCAtNDkwMyw3ICs0OTAzLDcgQEAgc3RhdGljIGludCBza2xfYnVp bGRfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCSAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAg CXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+ YmFzZS5wbGFuZSk7Cj4gLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l X3N0YXRlLT5iYXNlLmZiOwo+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBw bGFuZV9zdGF0ZS0+aHcuZmI7Cj4gIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlk Owo+ICAJaW50IHJldDsKPiAgCj4gQEAgLTQ5MzYsNyArNDkzNiw3IEBAIHN0YXRpYyBpbnQgaWNs X2J1aWxkX3BsYW5lX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJ CXJldHVybiAwOwo+ICAKPiAgCWlmIChwbGFuZV9zdGF0ZS0+cGxhbmFyX2xpbmtlZF9wbGFuZSkg ewo+IC0JCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJh c2UuZmI7Cj4gKwkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+aHcuZmI7Cj4gIAkJZW51bSBwbGFuZV9pZCB5X3BsYW5lX2lkID0gcGxhbmVfc3RhdGUtPnBs YW5hcl9saW5rZWRfcGxhbmUtPmlkOwo+ICAKPiAgCQlXQVJOX09OKCFpbnRlbF93bV9wbGFuZV92 aXNpYmxlKGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKSk7Cj4gLS0gCj4gMi4yMy4wCj4gCj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmls bGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeA==