From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 3/4] drm/i915: Store a pointer to intel_context in i915_request Date: Fri, 18 May 2018 08:43:33 +0100 Message-ID: <853c767c-e1db-50ca-5b52-6ba5fef8ee01@linux.intel.com> References: <20180517212633.24934-1-chris@chris-wilson.co.uk> <20180517212633.24934-3-chris@chris-wilson.co.uk> <20180518032146.iuogvb4ltddj2k4a@zhen-hp.sh.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 663876E09B for ; Fri, 18 May 2018 07:43:41 +0000 (UTC) In-Reply-To: <20180518032146.iuogvb4ltddj2k4a@zhen-hp.sh.intel.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Zhenyu Wang , Chris Wilson Cc: intel-gfx@lists.freedesktop.org, yan.y.zhao@intel.com List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE4LzA1LzIwMTggMDQ6MjEsIFpoZW55dSBXYW5nIHdyb3RlOgo+IE9uIDIwMTguMDUuMTcg MjI6MjY6MzIgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPj4gVG8gZWFzZSB0aGUgZnJlcXVl bnQgYW5kIHVnbHkgcG9pbnRlciBkYW5jZSBvZgo+PiAmcmVxdWVzdC0+Z2VtX2NvbnRleHQtPmVu Z2luZVtyZXF1ZXN0LT5lbmdpbmUtPmlkXSBkdXJpbmcgcmVxdWVzdAo+PiBzdWJtaXNzaW9uLCBz dG9yZSB0aGF0IHBvaW50ZXIgYXMgcmVxdWVzdC0+aHdfY29udGV4dC4gT25lIG1ham9yCj4+IGFk dmFudGFnZSB0aGF0IHdlIHdpbGwgZXhwbG9pdCBsYXRlciBpcyB0aGF0IHRoaXMgZGVjb3VwbGVz IHRoZSBsb2dpY2FsCj4+IGNvbnRleHQgc3RhdGUgZnJvbSB0aGUgZW5naW5lIGl0c2VsZi4KPj4K Pj4gdjI6IFNldCBtb2NrX2NvbnRleHQtPm9wcyBzbyB3ZSBkb24ndCBjcmFzaCBhbmQgYnVybiBp biBzZWxmdGVzdHMuCj4+ICAgICAgQ2xlYW51cHMgZnJvbSBUdnJ0a28uCj4+Cj4+IFNpZ25lZC1v ZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+PiBDYzogVHZy dGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L21taW9fY29udGV4dC5jICAgICAgIHwgICA2ICstCj4+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW9fY29udGV4dC5oICAgICAgIHwgICAyICstCj4+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jICAgICAgICAgIHwgMTQxICsrKysr KystLS0tLS0tLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuaCAg ICAgICAgICB8ICAgMSAtCj4gCj4gZ3Z0IGNoYW5nZSBsb29rcyBmaW5lIHRvIG1lLgo+IAo+IEFj a2VkLWJ5OiBaaGVueXUgV2FuZyA8emhlbnl1d0BsaW51eC5pbnRlbC5jb20+CgpFeGNlbGxlbnQs IHRoYW5rcyEKCkFuZCBJIHRoaW5rIEkgYWxyZWFkeSBoYXZlIG15IHItYiBlYXJsaWVyIGZvciBu b24tR1ZUIHBhcnRzLiBTbyBsZXQgbWUgCnJlcGVhdCBpdDoKClJldmlld2VkLWJ5OiBUdnJ0a28g VXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwoKCj4+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICAxICsK Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICAgfCAgMTIg Ky0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAg MTcgKystCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oICAgICAg IHwgIDIxICsrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAg ICAgICB8ICAgMyArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jICAgICAg ICAgICAgICB8ICAyNSArKy0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmMgICAgICAgICAgIHwgIDM0ICsrLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmggICAgICAgICAgIHwgICAxICsKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYyAgICAgICAgfCAgNTQgKysrKy0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMgICB8ICAxMCArLQo+PiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICB8IDEyNSArKysrKysrKystLS0tLS0tCj4+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggICAgICAgICAgICAgIHwgICA3IC0K Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgICAgfCAxMDAg KysrKysrKystLS0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aCAgICAgICB8ICAgOSArLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2Nr X2NvbnRleHQuYyB8ICAgNyArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfZW5naW5lLmMgIHwgIDQxICsrKy0tCj4+ICAgMjAgZmlsZXMgY2hhbmdlZCwgMzIxIGluc2Vy dGlvbnMoKyksIDI5NiBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9t bWlvX2NvbnRleHQuYwo+PiBpbmRleCAwZjk0OTU1NGQxMTguLjcwODE3MGU2MTYyNSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW9fY29udGV4dC5jCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuYwo+PiBAQCAtNDQ2LDkgKzQ0 Niw5IEBAIHN0YXRpYyB2b2lkIHN3aXRjaF9tb2NzKHN0cnVjdCBpbnRlbF92Z3B1ICpwcmUsIHN0 cnVjdCBpbnRlbF92Z3B1ICpuZXh0LAo+PiAgIAo+PiAgICNkZWZpbmUgQ1RYX0NPTlRFWFRfQ09O VFJPTF9WQUwJMHgwMwo+PiAgIAo+PiAtYm9vbCBpc19pbmhpYml0X2NvbnRleHQoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCwgaW50IHJpbmdfaWQpCj4+ICtib29sIGlzX2luaGliaXRfY29u dGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4+ICAgewo+PiAtCXUzMiAqcmVnX3N0YXRl ID0gY3R4LT5fX2VuZ2luZVtyaW5nX2lkXS5scmNfcmVnX3N0YXRlOwo+PiArCWNvbnN0IHUzMiAq cmVnX3N0YXRlID0gY2UtPmxyY19yZWdfc3RhdGU7Cj4+ICAgCXUzMiBpbmhpYml0X21hc2sgPQo+ PiAgIAkJX01BU0tFRF9CSVRfRU5BQkxFKENUWF9DVFJMX0VOR0lORV9DVFhfUkVTVE9SRV9JTkhJ QklUKTsKPj4gICAKPj4gQEAgLTUwMSw3ICs1MDEsNyBAQCBzdGF0aWMgdm9pZCBzd2l0Y2hfbW1p byhzdHJ1Y3QgaW50ZWxfdmdwdSAqcHJlLAo+PiAgIAkJCSAqIGl0c2VsZi4KPj4gICAJCQkgKi8K Pj4gICAJCQlpZiAobW1pby0+aW5fY29udGV4dCAmJgo+PiAtCQkJICAgICFpc19pbmhpYml0X2Nv bnRleHQocy0+c2hhZG93X2N0eCwgcmluZ19pZCkpCj4+ICsJCQkgICAgIWlzX2luaGliaXRfY29u dGV4dCgmcy0+c2hhZG93X2N0eC0+X19lbmdpbmVbcmluZ19pZF0pKQo+PiAgIAkJCQljb250aW51 ZTsKPj4gICAKPj4gICAJCQlpZiAobW1pby0+bWFzaykKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9tbWlvX2NvbnRleHQuaAo+PiBpbmRleCAwNDM5ZWI4MDU3YTguLjVjM2I5ZmY5Zjk2YSAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21taW9fY29udGV4dC5oCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9tbWlvX2NvbnRleHQuaAo+PiBAQCAtNDksNyAr NDksNyBAQCB2b2lkIGludGVsX2d2dF9zd2l0Y2hfbW1pbyhzdHJ1Y3QgaW50ZWxfdmdwdSAqcHJl LAo+PiAgIAo+PiAgIHZvaWQgaW50ZWxfZ3Z0X2luaXRfZW5naW5lX21taW9fY29udGV4dChzdHJ1 Y3QgaW50ZWxfZ3Z0ICpndnQpOwo+PiAgIAo+PiAtYm9vbCBpc19pbmhpYml0X2NvbnRleHQoc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgaW50IHJpbmdfaWQpOwo+PiArYm9vbCBpc19pbmhp Yml0X2NvbnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKPj4gICAKPj4gICBpbnQgaW50 ZWxfdmdwdV9yZXN0b3JlX2luaGliaXRfY29udGV4dChzdHJ1Y3QgaW50ZWxfdmdwdSAqdmdwdSwK Pj4gICAJCQkJICAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcSk7Cj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvc2NoZWR1bGVyLmMKPj4gaW5kZXggMTdmOWY4ZDdlMTQ4Li5lMTc2MDAzMGRkYTEg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuYwo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMKPj4gQEAgLTU0LDExICs1 NCw4IEBAIHN0YXRpYyB2b2lkIHNldF9jb250ZXh0X3BkcF9yb290X3BvaW50ZXIoCj4+ICAgCj4+ ICAgc3RhdGljIHZvaWQgdXBkYXRlX3NoYWRvd19wZHBzKHN0cnVjdCBpbnRlbF92Z3B1X3dvcmts b2FkICp3b3JrbG9hZCkKPj4gICB7Cj4+IC0Jc3RydWN0IGludGVsX3ZncHUgKnZncHUgPSB3b3Jr bG9hZC0+dmdwdTsKPj4gLQlpbnQgcmluZ19pZCA9IHdvcmtsb2FkLT5yaW5nX2lkOwo+PiAtCXN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpzaGFkb3dfY3R4ID0gdmdwdS0+c3VibWlzc2lvbi5zaGFk b3dfY3R4Owo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9Cj4+IC0J CXNoYWRvd19jdHgtPl9fZW5naW5lW3JpbmdfaWRdLnN0YXRlLT5vYmo7Cj4+ICsJCXdvcmtsb2Fk LT5yZXEtPmh3X2NvbnRleHQtPnN0YXRlLT5vYmo7Cj4+ICAgCXN0cnVjdCBleGVjbGlzdF9yaW5n X2NvbnRleHQgKnNoYWRvd19yaW5nX2NvbnRleHQ7Cj4+ICAgCXN0cnVjdCBwYWdlICpwYWdlOwo+ PiAgIAo+PiBAQCAtMTI4LDkgKzEyNSw4IEBAIHN0YXRpYyBpbnQgcG9wdWxhdGVfc2hhZG93X2Nv bnRleHQoc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQgKndvcmtsb2FkKQo+PiAgIAlzdHJ1Y3Qg aW50ZWxfdmdwdSAqdmdwdSA9IHdvcmtsb2FkLT52Z3B1Owo+PiAgIAlzdHJ1Y3QgaW50ZWxfZ3Z0 ICpndnQgPSB2Z3B1LT5ndnQ7Cj4+ICAgCWludCByaW5nX2lkID0gd29ya2xvYWQtPnJpbmdfaWQ7 Cj4+IC0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKnNoYWRvd19jdHggPSB2Z3B1LT5zdWJtaXNz aW9uLnNoYWRvd19jdHg7Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2Jq ID0KPj4gLQkJc2hhZG93X2N0eC0+X19lbmdpbmVbcmluZ19pZF0uc3RhdGUtPm9iajsKPj4gKwkJ d29ya2xvYWQtPnJlcS0+aHdfY29udGV4dC0+c3RhdGUtPm9iajsKPj4gICAJc3RydWN0IGV4ZWNs aXN0X3JpbmdfY29udGV4dCAqc2hhZG93X3JpbmdfY29udGV4dDsKPj4gICAJc3RydWN0IHBhZ2Ug KnBhZ2U7Cj4+ICAgCXZvaWQgKmRzdDsKPj4gQEAgLTI4MCwxMCArMjc2LDggQEAgc3RhdGljIGlu dCBzaGFkb3dfY29udGV4dF9zdGF0dXNfY2hhbmdlKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIs Cj4+ICAgCXJldHVybiBOT1RJRllfT0s7Cj4+ICAgfQo+PiAgIAo+PiAtc3RhdGljIHZvaWQgc2hh ZG93X2NvbnRleHRfZGVzY3JpcHRvcl91cGRhdGUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCwKPj4gLQkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiArc3RhdGljIHZvaWQg c2hhZG93X2NvbnRleHRfZGVzY3JpcHRvcl91cGRhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNl KQo+PiAgIHsKPj4gLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSB0b19pbnRlbF9jb250ZXh0 KGN0eCwgZW5naW5lKTsKPj4gICAJdTY0IGRlc2MgPSAwOwo+PiAgIAo+PiAgIAlkZXNjID0gY2Ut PmxyY19kZXNjOwo+PiBAQCAtMjkyLDcgKzI4Niw3IEBAIHN0YXRpYyB2b2lkIHNoYWRvd19jb250 ZXh0X2Rlc2NyaXB0b3JfdXBkYXRlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4+ICAg CSAqIGxpa2UgR0VOOF9DVFhfKiBjYWNoZWQgaW4gZGVzY190ZW1wbGF0ZQo+PiAgIAkgKi8KPj4g ICAJZGVzYyAmPSBVNjRfTUFYIDw8IDEyOwo+PiAtCWRlc2MgfD0gY3R4LT5kZXNjX3RlbXBsYXRl ICYgKCgxVUxMIDw8IDEyKSAtIDEpOwo+PiArCWRlc2MgfD0gY2UtPmdlbV9jb250ZXh0LT5kZXNj X3RlbXBsYXRlICYgKCgxVUxMIDw8IDEyKSAtIDEpOwo+PiAgIAo+PiAgIAljZS0+bHJjX2Rlc2Mg PSBkZXNjOwo+PiAgIH0KPj4gQEAgLTMwMCwxMiArMjk0LDExIEBAIHN0YXRpYyB2b2lkIHNoYWRv d19jb250ZXh0X2Rlc2NyaXB0b3JfdXBkYXRlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs Cj4+ICAgc3RhdGljIGludCBjb3B5X3dvcmtsb2FkX3RvX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRl bF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKPj4gICB7Cj4+ICAgCXN0cnVjdCBpbnRlbF92Z3B1 ICp2Z3B1ID0gd29ya2xvYWQtPnZncHU7Cj4+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxID0g d29ya2xvYWQtPnJlcTsKPj4gICAJdm9pZCAqc2hhZG93X3JpbmdfYnVmZmVyX3ZhOwo+PiAgIAl1 MzIgKmNzOwo+PiAtCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcSA9IHdvcmtsb2FkLT5yZXE7Cj4+ ICAgCj4+IC0JaWYgKElTX0tBQllMQUtFKHJlcS0+aTkxNSkgJiYKPj4gLQkgICAgaXNfaW5oaWJp dF9jb250ZXh0KHJlcS0+Z2VtX2NvbnRleHQsIHJlcS0+ZW5naW5lLT5pZCkpCj4+ICsJaWYgKElT X0tBQllMQUtFKHJlcS0+aTkxNSkgJiYgaXNfaW5oaWJpdF9jb250ZXh0KHJlcS0+aHdfY29udGV4 dCkpCj4+ICAgCQlpbnRlbF92Z3B1X3Jlc3RvcmVfaW5oaWJpdF9jb250ZXh0KHZncHUsIHJlcSk7 Cj4+ICAgCj4+ICAgCS8qIGFsbG9jYXRlIHNoYWRvdyByaW5nIGJ1ZmZlciAqLwo+PiBAQCAtMzUz LDYwICszNDYsNTYgQEAgaW50IGludGVsX2d2dF9zY2FuX2FuZF9zaGFkb3dfd29ya2xvYWQoc3Ry dWN0IGludGVsX3ZncHVfd29ya2xvYWQgKndvcmtsb2FkKQo+PiAgIAlzdHJ1Y3QgaW50ZWxfdmdw dV9zdWJtaXNzaW9uICpzID0gJnZncHUtPnN1Ym1pc3Npb247Cj4+ICAgCXN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpzaGFkb3dfY3R4ID0gcy0+c2hhZG93X2N0eDsKPj4gICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdmdwdS0+Z3Z0LT5kZXZfcHJpdjsKPj4gLQlpbnQgcmlu Z19pZCA9IHdvcmtsb2FkLT5yaW5nX2lkOwo+PiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSA9IGRldl9wcml2LT5lbmdpbmVbcmluZ19pZF07Cj4+IC0Jc3RydWN0IGludGVsX3Jpbmcg KnJpbmc7Cj4+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gZGV2X3ByaXYtPmVu Z2luZVt3b3JrbG9hZC0+cmluZ19pZF07Cj4+ICsJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+ PiAgIAlpbnQgcmV0Owo+PiAgIAo+PiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4+ICAgCj4+IC0JaWYgKHdvcmtsb2FkLT5zaGFkb3dlZCkKPj4g KwlpZiAod29ya2xvYWQtPnJlcSkKPj4gICAJCXJldHVybiAwOwo+PiAgIAo+PiArCS8qIHBpbiBz aGFkb3cgY29udGV4dCBieSBndnQgZXZlbiB0aGUgc2hhZG93IGNvbnRleHQgd2lsbCBiZSBwaW5u ZWQKPj4gKwkgKiB3aGVuIGk5MTUgYWxsb2MgcmVxdWVzdC4gVGhhdCBpcyBiZWNhdXNlIGd2dCB3 aWxsIHVwZGF0ZSB0aGUgZ3Vlc3QKPj4gKwkgKiBjb250ZXh0IGZyb20gc2hhZG93IGNvbnRleHQg d2hlbiB3b3JrbG9hZCBpcyBjb21wbGV0ZWQsIGFuZCBhdCB0aGF0Cj4+ICsJICogbW9tZW50LCBp OTE1IG1heSBhbHJlYWR5IHVucGluZWQgdGhlIHNoYWRvdyBjb250ZXh0IHRvIG1ha2UgdGhlCj4+ ICsJICogc2hhZG93X2N0eCBwYWdlcyBpbnZhbGlkLiBTbyBndnQgbmVlZCB0byBwaW4gaXRzZWxm LiBBZnRlciB1cGRhdGUKPj4gKwkgKiB0aGUgZ3Vlc3QgY29udGV4dCwgZ3Z0IGNhbiB1bnBpbiB0 aGUgc2hhZG93X2N0eCBzYWZlbHkuCj4+ICsJICovCj4+ICsJY2UgPSBpbnRlbF9jb250ZXh0X3Bp bihzaGFkb3dfY3R4LCBlbmdpbmUpOwo+PiArCWlmIChJU19FUlIoY2UpKSB7Cj4+ICsJCWd2dF92 Z3B1X2VycigiZmFpbCB0byBwaW4gc2hhZG93IGNvbnRleHRcbiIpOwo+PiArCQlyZXR1cm4gUFRS X0VSUihjZSk7Cj4+ICsJfQo+PiArCj4+ICAgCXNoYWRvd19jdHgtPmRlc2NfdGVtcGxhdGUgJj0g figweDMgPDwgR0VOOF9DVFhfQUREUkVTU0lOR19NT0RFX1NISUZUKTsKPj4gICAJc2hhZG93X2N0 eC0+ZGVzY190ZW1wbGF0ZSB8PSB3b3JrbG9hZC0+Y3R4X2Rlc2MuYWRkcmVzc2luZ19tb2RlIDw8 Cj4+ICAgCQkJCSAgICBHRU44X0NUWF9BRERSRVNTSU5HX01PREVfU0hJRlQ7Cj4+ICAgCj4+IC0J aWYgKCF0ZXN0X2FuZF9zZXRfYml0KHJpbmdfaWQsIHMtPnNoYWRvd19jdHhfZGVzY191cGRhdGVk KSkKPj4gLQkJc2hhZG93X2NvbnRleHRfZGVzY3JpcHRvcl91cGRhdGUoc2hhZG93X2N0eCwKPj4g LQkJCQkJZGV2X3ByaXYtPmVuZ2luZVtyaW5nX2lkXSk7Cj4+ICsJaWYgKCF0ZXN0X2FuZF9zZXRf Yml0KHdvcmtsb2FkLT5yaW5nX2lkLCBzLT5zaGFkb3dfY3R4X2Rlc2NfdXBkYXRlZCkpCj4+ICsJ CXNoYWRvd19jb250ZXh0X2Rlc2NyaXB0b3JfdXBkYXRlKGNlKTsKPj4gICAKPj4gICAJcmV0ID0g aW50ZWxfZ3Z0X3NjYW5fYW5kX3NoYWRvd19yaW5nYnVmZmVyKHdvcmtsb2FkKTsKPj4gICAJaWYg KHJldCkKPj4gLQkJZ290byBlcnJfc2NhbjsKPj4gKwkJZ290byBlcnJfdW5waW47Cj4+ICAgCj4+ ICAgCWlmICgod29ya2xvYWQtPnJpbmdfaWQgPT0gUkNTKSAmJgo+PiAgIAkgICAgKHdvcmtsb2Fk LT53YV9jdHguaW5kaXJlY3RfY3R4LnNpemUgIT0gMCkpIHsKPj4gICAJCXJldCA9IGludGVsX2d2 dF9zY2FuX2FuZF9zaGFkb3dfd2FfY3R4KCZ3b3JrbG9hZC0+d2FfY3R4KTsKPj4gICAJCWlmIChy ZXQpCj4+IC0JCQlnb3RvIGVycl9zY2FuOwo+PiAtCX0KPj4gLQo+PiAtCS8qIHBpbiBzaGFkb3cg Y29udGV4dCBieSBndnQgZXZlbiB0aGUgc2hhZG93IGNvbnRleHQgd2lsbCBiZSBwaW5uZWQKPj4g LQkgKiB3aGVuIGk5MTUgYWxsb2MgcmVxdWVzdC4gVGhhdCBpcyBiZWNhdXNlIGd2dCB3aWxsIHVw ZGF0ZSB0aGUgZ3Vlc3QKPj4gLQkgKiBjb250ZXh0IGZyb20gc2hhZG93IGNvbnRleHQgd2hlbiB3 b3JrbG9hZCBpcyBjb21wbGV0ZWQsIGFuZCBhdCB0aGF0Cj4+IC0JICogbW9tZW50LCBpOTE1IG1h eSBhbHJlYWR5IHVucGluZWQgdGhlIHNoYWRvdyBjb250ZXh0IHRvIG1ha2UgdGhlCj4+IC0JICog c2hhZG93X2N0eCBwYWdlcyBpbnZhbGlkLiBTbyBndnQgbmVlZCB0byBwaW4gaXRzZWxmLiBBZnRl ciB1cGRhdGUKPj4gLQkgKiB0aGUgZ3Vlc3QgY29udGV4dCwgZ3Z0IGNhbiB1bnBpbiB0aGUgc2hh ZG93X2N0eCBzYWZlbHkuCj4+IC0JICovCj4+IC0JcmluZyA9IGludGVsX2NvbnRleHRfcGluKHNo YWRvd19jdHgsIGVuZ2luZSk7Cj4+IC0JaWYgKElTX0VSUihyaW5nKSkgewo+PiAtCQlyZXQgPSBQ VFJfRVJSKHJpbmcpOwo+PiAtCQlndnRfdmdwdV9lcnIoImZhaWwgdG8gcGluIHNoYWRvdyBjb250 ZXh0XG4iKTsKPj4gLQkJZ290byBlcnJfc2hhZG93Owo+PiArCQkJZ290byBlcnJfc2hhZG93Owo+ PiAgIAl9Cj4+ICAgCj4+ICAgCXJldCA9IHBvcHVsYXRlX3NoYWRvd19jb250ZXh0KHdvcmtsb2Fk KTsKPj4gICAJaWYgKHJldCkKPj4gLQkJZ290byBlcnJfdW5waW47Cj4+IC0Jd29ya2xvYWQtPnNo YWRvd2VkID0gdHJ1ZTsKPj4gKwkJZ290byBlcnJfc2hhZG93Owo+PiArCj4+ICAgCXJldHVybiAw Owo+PiAgIAo+PiAtZXJyX3VucGluOgo+PiAtCWludGVsX2NvbnRleHRfdW5waW4oc2hhZG93X2N0 eCwgZW5naW5lKTsKPj4gICBlcnJfc2hhZG93Ogo+PiAgIAlyZWxlYXNlX3NoYWRvd193YV9jdHgo Jndvcmtsb2FkLT53YV9jdHgpOwo+PiAtZXJyX3NjYW46Cj4+ICtlcnJfdW5waW46Cj4+ICsJaW50 ZWxfY29udGV4dF91bnBpbihjZSk7Cj4+ICAgCXJldHVybiByZXQ7Cj4+ICAgfQo+PiAgIAo+PiBA QCAtNDE0LDcgKzQwMyw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ3Z0X2dlbmVyYXRlX3JlcXVlc3Qo c3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQgKndvcmtsb2FkKQo+PiAgIHsKPj4gICAJaW50IHJp bmdfaWQgPSB3b3JrbG9hZC0+cmluZ19pZDsKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gd29ya2xvYWQtPnZncHUtPmd2dC0+ZGV2X3ByaXY7Cj4+IC0Jc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtyaW5nX2lkXTsKPj4gICAJ c3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4+ICAgCXN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1ID0g d29ya2xvYWQtPnZncHU7Cj4+ICAgCXN0cnVjdCBpbnRlbF92Z3B1X3N1Ym1pc3Npb24gKnMgPSAm dmdwdS0+c3VibWlzc2lvbjsKPj4gQEAgLTQzNyw3ICs0MjUsNiBAQCBzdGF0aWMgaW50IGludGVs X2d2dF9nZW5lcmF0ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9h ZCkKPj4gICAJcmV0dXJuIDA7Cj4+ICAgCj4+ICAgZXJyX3VucGluOgo+PiAtCWludGVsX2NvbnRl eHRfdW5waW4oc2hhZG93X2N0eCwgZW5naW5lKTsKPj4gICAJcmVsZWFzZV9zaGFkb3dfd2FfY3R4 KCZ3b3JrbG9hZC0+d2FfY3R4KTsKPj4gICAJcmV0dXJuIHJldDsKPj4gICB9Cj4+IEBAIC01MTcs MjEgKzUwNCwxMyBAQCBzdGF0aWMgaW50IHByZXBhcmVfc2hhZG93X2JhdGNoX2J1ZmZlcihzdHJ1 Y3QgaW50ZWxfdmdwdV93b3JrbG9hZCAqd29ya2xvYWQpCj4+ICAgCXJldHVybiByZXQ7Cj4+ICAg fQo+PiAgIAo+PiAtc3RhdGljIGludCB1cGRhdGVfd2FfY3R4XzJfc2hhZG93X2N0eChzdHJ1Y3Qg aW50ZWxfc2hhZG93X3dhX2N0eCAqd2FfY3R4KQo+PiArc3RhdGljIHZvaWQgdXBkYXRlX3dhX2N0 eF8yX3NoYWRvd19jdHgoc3RydWN0IGludGVsX3NoYWRvd193YV9jdHggKndhX2N0eCkKPj4gICB7 Cj4+IC0Jc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQgKndvcmtsb2FkID0gY29udGFpbmVyX29m KHdhX2N0eCwKPj4gLQkJCQkJc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQsCj4+IC0JCQkJCXdh X2N0eCk7Cj4+IC0JaW50IHJpbmdfaWQgPSB3b3JrbG9hZC0+cmluZ19pZDsKPj4gLQlzdHJ1Y3Qg aW50ZWxfdmdwdV9zdWJtaXNzaW9uICpzID0gJndvcmtsb2FkLT52Z3B1LT5zdWJtaXNzaW9uOwo+ PiAtCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpzaGFkb3dfY3R4ID0gcy0+c2hhZG93X2N0eDsK Pj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9Cj4+IC0JCXNoYWRvd19j dHgtPl9fZW5naW5lW3JpbmdfaWRdLnN0YXRlLT5vYmo7Cj4+IC0Jc3RydWN0IGV4ZWNsaXN0X3Jp bmdfY29udGV4dCAqc2hhZG93X3JpbmdfY29udGV4dDsKPj4gLQlzdHJ1Y3QgcGFnZSAqcGFnZTsK Pj4gLQo+PiAtCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgTFJDX1NU QVRFX1BOKTsKPj4gLQlzaGFkb3dfcmluZ19jb250ZXh0ID0ga21hcF9hdG9taWMocGFnZSk7Cj4+ ICsJc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQgKndvcmtsb2FkID0KPj4gKwkJY29udGFpbmVy X29mKHdhX2N0eCwgc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQsIHdhX2N0eCk7Cj4+ICsJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEgPSB3b3JrbG9hZC0+cmVxOwo+PiArCXN0cnVjdCBleGVjbGlz dF9yaW5nX2NvbnRleHQgKnNoYWRvd19yaW5nX2NvbnRleHQgPQo+PiArCQkoc3RydWN0IGV4ZWNs aXN0X3JpbmdfY29udGV4dCAqKXJxLT5od19jb250ZXh0LT5scmNfcmVnX3N0YXRlOwo+PiAgIAo+ PiAgIAlzaGFkb3dfcmluZ19jb250ZXh0LT5iYl9wZXJfY3R4X3B0ci52YWwgPQo+PiAgIAkJKHNo YWRvd19yaW5nX2NvbnRleHQtPmJiX3Blcl9jdHhfcHRyLnZhbCAmCj4+IEBAIC01MzksOSArNTE4 LDYgQEAgc3RhdGljIGludCB1cGRhdGVfd2FfY3R4XzJfc2hhZG93X2N0eChzdHJ1Y3QgaW50ZWxf c2hhZG93X3dhX2N0eCAqd2FfY3R4KQo+PiAgIAlzaGFkb3dfcmluZ19jb250ZXh0LT5yY3NfaW5k aXJlY3RfY3R4LnZhbCA9Cj4+ICAgCQkoc2hhZG93X3JpbmdfY29udGV4dC0+cmNzX2luZGlyZWN0 X2N0eC52YWwgJgo+PiAgIAkJKH5JTkRJUkVDVF9DVFhfQUREUl9NQVNLKSkgfCB3YV9jdHgtPmlu ZGlyZWN0X2N0eC5zaGFkb3dfZ21hOwo+PiAtCj4+IC0Ja3VubWFwX2F0b21pYyhzaGFkb3dfcmlu Z19jb250ZXh0KTsKPj4gLQlyZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIGludCBw cmVwYXJlX3NoYWRvd193YV9jdHgoc3RydWN0IGludGVsX3NoYWRvd193YV9jdHggKndhX2N0eCkK Pj4gQEAgLTY3MCwxMiArNjQ2LDkgQEAgc3RhdGljIGludCBwcmVwYXJlX3dvcmtsb2FkKHN0cnVj dCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKPj4gICBzdGF0aWMgaW50IGRpc3BhdGNo X3dvcmtsb2FkKHN0cnVjdCBpbnRlbF92Z3B1X3dvcmtsb2FkICp3b3JrbG9hZCkKPj4gICB7Cj4+ ICAgCXN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1ID0gd29ya2xvYWQtPnZncHU7Cj4+IC0Jc3RydWN0 IGludGVsX3ZncHVfc3VibWlzc2lvbiAqcyA9ICZ2Z3B1LT5zdWJtaXNzaW9uOwo+PiAtCXN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpzaGFkb3dfY3R4ID0gcy0+c2hhZG93X2N0eDsKPj4gICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdmdwdS0+Z3Z0LT5kZXZfcHJpdjsKPj4g ICAJaW50IHJpbmdfaWQgPSB3b3JrbG9hZC0+cmluZ19pZDsKPj4gLQlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSBkZXZfcHJpdi0+ZW5naW5lW3JpbmdfaWRdOwo+PiAtCWludCByZXQg PSAwOwo+PiArCWludCByZXQ7Cj4+ICAgCj4+ICAgCWd2dF9kYmdfc2NoZWQoInJpbmcgaWQgJWQg cHJlcGFyZSB0byBkaXNwYXRjaCB3b3JrbG9hZCAlcFxuIiwKPj4gICAJCXJpbmdfaWQsIHdvcmts b2FkKTsKPj4gQEAgLTY4NywxMCArNjYwLDYgQEAgc3RhdGljIGludCBkaXNwYXRjaF93b3JrbG9h ZChzdHJ1Y3QgaW50ZWxfdmdwdV93b3JrbG9hZCAqd29ya2xvYWQpCj4+ICAgCQlnb3RvIG91dDsK Pj4gICAKPj4gICAJcmV0ID0gcHJlcGFyZV93b3JrbG9hZCh3b3JrbG9hZCk7Cj4+IC0JaWYgKHJl dCkgewo+PiAtCQlpbnRlbF9jb250ZXh0X3VucGluKHNoYWRvd19jdHgsIGVuZ2luZSk7Cj4+IC0J CWdvdG8gb3V0Owo+PiAtCX0KPj4gICAKPj4gICBvdXQ6Cj4+ICAgCWlmIChyZXQpCj4+IEBAIC03 NjUsMjcgKzczNCwyMyBAQCBzdGF0aWMgc3RydWN0IGludGVsX3ZncHVfd29ya2xvYWQgKnBpY2tf bmV4dF93b3JrbG9hZCgKPj4gICAKPj4gICBzdGF0aWMgdm9pZCB1cGRhdGVfZ3Vlc3RfY29udGV4 dChzdHJ1Y3QgaW50ZWxfdmdwdV93b3JrbG9hZCAqd29ya2xvYWQpCj4+ICAgewo+PiArCXN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxID0gd29ya2xvYWQtPnJlcTsKPj4gICAJc3RydWN0IGludGVsX3Zn cHUgKnZncHUgPSB3b3JrbG9hZC0+dmdwdTsKPj4gICAJc3RydWN0IGludGVsX2d2dCAqZ3Z0ID0g dmdwdS0+Z3Z0Owo+PiAtCXN0cnVjdCBpbnRlbF92Z3B1X3N1Ym1pc3Npb24gKnMgPSAmdmdwdS0+ c3VibWlzc2lvbjsKPj4gLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqc2hhZG93X2N0eCA9IHMt PnNoYWRvd19jdHg7Cj4+IC0JaW50IHJpbmdfaWQgPSB3b3JrbG9hZC0+cmluZ19pZDsKPj4gLQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9Cj4+IC0JCXNoYWRvd19jdHgtPl9f ZW5naW5lW3JpbmdfaWRdLnN0YXRlLT5vYmo7Cj4+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKmN0eF9vYmogPSBycS0+aHdfY29udGV4dC0+c3RhdGUtPm9iajsKPj4gICAJc3RydWN0IGV4 ZWNsaXN0X3JpbmdfY29udGV4dCAqc2hhZG93X3JpbmdfY29udGV4dDsKPj4gICAJc3RydWN0IHBh Z2UgKnBhZ2U7Cj4+ICAgCXZvaWQgKnNyYzsKPj4gICAJdW5zaWduZWQgbG9uZyBjb250ZXh0X2dw YSwgY29udGV4dF9wYWdlX251bTsKPj4gICAJaW50IGk7Cj4+ICAgCj4+IC0JZ3Z0X2RiZ19zY2hl ZCgicmluZyBpZCAlZCB3b3JrbG9hZCBscmNhICV4XG4iLCByaW5nX2lkLAo+PiAtCQkJd29ya2xv YWQtPmN0eF9kZXNjLmxyY2EpOwo+PiAtCj4+IC0JY29udGV4dF9wYWdlX251bSA9IGd2dC0+ZGV2 X3ByaXYtPmVuZ2luZVtyaW5nX2lkXS0+Y29udGV4dF9zaXplOwo+PiArCWd2dF9kYmdfc2NoZWQo InJpbmcgaWQgJWQgd29ya2xvYWQgbHJjYSAleFxuIiwgcnEtPmVuZ2luZS0+aWQsCj4+ICsJCSAg ICAgIHdvcmtsb2FkLT5jdHhfZGVzYy5scmNhKTsKPj4gICAKPj4gKwljb250ZXh0X3BhZ2VfbnVt ID0gcnEtPmVuZ2luZS0+Y29udGV4dF9zaXplOwo+PiAgIAljb250ZXh0X3BhZ2VfbnVtID0gY29u dGV4dF9wYWdlX251bSA+PiBQQUdFX1NISUZUOwo+PiAgIAo+PiAtCWlmIChJU19CUk9BRFdFTEwo Z3Z0LT5kZXZfcHJpdikgJiYgcmluZ19pZCA9PSBSQ1MpCj4+ICsJaWYgKElTX0JST0FEV0VMTChn dnQtPmRldl9wcml2KSAmJiBycS0+ZW5naW5lLT5pZCA9PSBSQ1MpCj4+ICAgCQljb250ZXh0X3Bh Z2VfbnVtID0gMTk7Cj4+ICAgCj4+ICAgCWkgPSAyOwo+PiBAQCAtODU4LDYgKzgyMyw3IEBAIHN0 YXRpYyB2b2lkIGNvbXBsZXRlX2N1cnJlbnRfd29ya2xvYWQoc3RydWN0IGludGVsX2d2dCAqZ3Z0 LCBpbnQgcmluZ19pZCkKPj4gICAJCXNjaGVkdWxlci0+Y3VycmVudF93b3JrbG9hZFtyaW5nX2lk XTsKPj4gICAJc3RydWN0IGludGVsX3ZncHUgKnZncHUgPSB3b3JrbG9hZC0+dmdwdTsKPj4gICAJ c3RydWN0IGludGVsX3ZncHVfc3VibWlzc2lvbiAqcyA9ICZ2Z3B1LT5zdWJtaXNzaW9uOwo+PiAr CXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+PiAgIAlpbnQgZXZlbnQ7Cj4+ICAgCj4+ICAgCW11 dGV4X2xvY2soJmd2dC0+bG9jayk7Cj4+IEBAIC04NjYsMTEgKzgzMiw4IEBAIHN0YXRpYyB2b2lk IGNvbXBsZXRlX2N1cnJlbnRfd29ya2xvYWQoc3RydWN0IGludGVsX2d2dCAqZ3Z0LCBpbnQgcmlu Z19pZCkKPj4gICAJICogc3dpdGNoIHRvIG1ha2Ugc3VyZSByZXF1ZXN0IGlzIGNvbXBsZXRlZC4K Pj4gICAJICogRm9yIHRoZSB3b3JrbG9hZCB3L28gcmVxdWVzdCwgZGlyZWN0bHkgY29tcGxldGUg dGhlIHdvcmtsb2FkLgo+PiAgIAkgKi8KPj4gLQlpZiAod29ya2xvYWQtPnJlcSkgewo+PiAtCQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+PiAtCQkJd29ya2xvYWQtPnZncHUt Pmd2dC0+ZGV2X3ByaXY7Cj4+IC0JCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9Cj4+ IC0JCQlkZXZfcHJpdi0+ZW5naW5lW3dvcmtsb2FkLT5yaW5nX2lkXTsKPj4gKwlycSA9IGZldGNo X2FuZF96ZXJvKCZ3b3JrbG9hZC0+cmVxKTsKPj4gKwlpZiAocnEpIHsKPj4gICAJCXdhaXRfZXZl bnQod29ya2xvYWQtPnNoYWRvd19jdHhfc3RhdHVzX3dxLAo+PiAgIAkJCSAgICFhdG9taWNfcmVh ZCgmd29ya2xvYWQtPnNoYWRvd19jdHhfYWN0aXZlKSk7Cj4+ICAgCj4+IEBAIC04ODYsOCArODQ5 LDYgQEAgc3RhdGljIHZvaWQgY29tcGxldGVfY3VycmVudF93b3JrbG9hZChzdHJ1Y3QgaW50ZWxf Z3Z0ICpndnQsIGludCByaW5nX2lkKQo+PiAgIAkJCQl3b3JrbG9hZC0+c3RhdHVzID0gMDsKPj4g ICAJCX0KPj4gICAKPj4gLQkJaTkxNV9yZXF1ZXN0X3B1dChmZXRjaF9hbmRfemVybygmd29ya2xv YWQtPnJlcSkpOwo+PiAtCj4+ICAgCQlpZiAoIXdvcmtsb2FkLT5zdGF0dXMgJiYgISh2Z3B1LT5y ZXNldHRpbmdfZW5nICYKPj4gICAJCQkJCSAgIEVOR0lORV9NQVNLKHJpbmdfaWQpKSkgewo+PiAg IAkJCXVwZGF0ZV9ndWVzdF9jb250ZXh0KHdvcmtsb2FkKTsKPj4gQEAgLTg5NiwxMCArODU3LDEz IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2N1cnJlbnRfd29ya2xvYWQoc3RydWN0IGludGVsX2d2 dCAqZ3Z0LCBpbnQgcmluZ19pZCkKPj4gICAJCQkJCSBJTlRFTF9HVlRfRVZFTlRfTUFYKQo+PiAg IAkJCQlpbnRlbF92Z3B1X3RyaWdnZXJfdmlydHVhbF9ldmVudCh2Z3B1LCBldmVudCk7Cj4+ICAg CQl9Cj4+IC0JCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPj4gKwo+ PiAgIAkJLyogdW5waW4gc2hhZG93IGN0eCBhcyB0aGUgc2hhZG93X2N0eCB1cGRhdGUgaXMgZG9u ZSAqLwo+PiAtCQlpbnRlbF9jb250ZXh0X3VucGluKHMtPnNoYWRvd19jdHgsIGVuZ2luZSk7Cj4+ IC0JCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiArCQltdXRl eF9sb2NrKCZycS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4+ICsJCWludGVsX2NvbnRleHRf dW5waW4ocnEtPmh3X2NvbnRleHQpOwo+PiArCQltdXRleF91bmxvY2soJnJxLT5pOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPj4gKwo+PiArCQlpOTE1X3JlcXVlc3RfcHV0KHJxKTsKPj4gICAJfQo+ PiAgIAo+PiAgIAlndnRfZGJnX3NjaGVkKCJyaW5nIGlkICVkIGNvbXBsZXRlIHdvcmtsb2FkICVw IHN0YXR1cyAlZFxuIiwKPj4gQEAgLTEyNzAsNyArMTIzNCw2IEBAIGFsbG9jX3dvcmtsb2FkKHN0 cnVjdCBpbnRlbF92Z3B1ICp2Z3B1KQo+PiAgIAlhdG9taWNfc2V0KCZ3b3JrbG9hZC0+c2hhZG93 X2N0eF9hY3RpdmUsIDApOwo+PiAgIAo+PiAgIAl3b3JrbG9hZC0+c3RhdHVzID0gLUVJTlBST0dS RVNTOwo+PiAtCXdvcmtsb2FkLT5zaGFkb3dlZCA9IGZhbHNlOwo+PiAgIAl3b3JrbG9hZC0+dmdw dSA9IHZncHU7Cj4+ICAgCj4+ICAgCXJldHVybiB3b3JrbG9hZDsKPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9zY2hlZHVsZXIuaAo+PiBpbmRleCA2YzY0NDc4MjE5M2UuLjIxZWRkYWI0YTljZCAxMDA2 NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5oCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9zY2hlZHVsZXIuaAo+PiBAQCAtODMsNyArODMsNiBA QCBzdHJ1Y3QgaW50ZWxfdmdwdV93b3JrbG9hZCB7Cj4+ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJlcTsKPj4gICAJLyogaWYgdGhpcyB3b3JrbG9hZCBoYXMgYmVlbiBkaXNwYXRjaGVkIHRvIGk5 MTU/ICovCj4+ICAgCWJvb2wgZGlzcGF0Y2hlZDsKPj4gLQlib29sIHNoYWRvd2VkOwo+PiAgIAlp bnQgc3RhdHVzOwo+PiAgIAo+PiAgIAlzdHJ1Y3QgaW50ZWxfdmdwdV9tbSAqc2hhZG93X21tOwo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggMzRjMTI1ZTJkOTBjLi5lMzNjMzgwYjQz ZTMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtMTk1MCw2ICsxOTUwLDcg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+PiAgIAkJCSAqLwo+PiAgIAkJCXN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtICpleGNsdXNpdmVfc3RyZWFtOwo+PiAgIAo+PiArCQkJc3RydWN0IGlu dGVsX2NvbnRleHQgKnBpbm5lZF9jdHg7Cj4+ICAgCQkJdTMyIHNwZWNpZmljX2N0eF9pZDsKPj4g ICAKPj4gICAJCQlzdHJ1Y3QgaHJ0aW1lciBwb2xsX2NoZWNrX3RpbWVyOwo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKPj4gaW5kZXggYTIwZjhkYjU3MjlkLi4wMzg3NGI1MGFkYTkgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBAQCAtMzE4MSwxNCArMzE4MSwxNCBAQCB2b2lkIGk5 MTVfZ2VtX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJaTkx NV9yZXRpcmVfcmVxdWVzdHMoZGV2X3ByaXYpOwo+PiAgIAo+PiAgIAlmb3JfZWFjaF9lbmdpbmUo ZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKPj4gLQkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eDsKPj4gKwkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+PiAgIAo+PiAgIAkJaTkxNV9nZW1f cmVzZXRfZW5naW5lKGVuZ2luZSwKPj4gICAJCQkJICAgICAgZW5naW5lLT5oYW5nY2hlY2suYWN0 aXZlX3JlcXVlc3QsCj4+ICAgCQkJCSAgICAgIHN0YWxsZWRfbWFzayAmIEVOR0lORV9NQVNLKGlk KSk7Cj4+IC0JCWN0eCA9IGZldGNoX2FuZF96ZXJvKCZlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250 ZXh0KTsKPj4gLQkJaWYgKGN0eCkKPj4gLQkJCWludGVsX2NvbnRleHRfdW5waW4oY3R4LCBlbmdp bmUpOwo+PiArCQljZSA9IGZldGNoX2FuZF96ZXJvKCZlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250 ZXh0KTsKPj4gKwkJaWYgKGNlKQo+PiArCQkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7Cj4+ICAg Cj4+ICAgCQkvKgo+PiAgIAkJICogT3N0ZW5zaWJpbHksIHdlIGFsd2F5cyB3YW50IGEgY29udGV4 dCBsb2FkZWQgZm9yIHBvd2Vyc2F2aW5nLAo+PiBAQCAtNDg5NywxMyArNDg5NywxMyBAQCB2b2lk IF9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfdW5sZXNzX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQo+PiAgIAo+PiAgIHN0YXRpYyB2b2lkIGFzc2VydF9rZXJuZWxfY29u dGV4dF9pc19jdXJyZW50KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+PiAgIHsKPj4g LQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqa2VybmVsX2NvbnRleHQgPSBpOTE1LT5rZXJuZWxf Y29udGV4dDsKPj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqa2N0eCA9IGk5MTUtPmtlcm5l bF9jb250ZXh0Owo+PiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4+ICAgCWVu dW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+PiAgIAo+PiAgIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5l LCBpOTE1LCBpZCkgewo+PiAgIAkJR0VNX0JVR19PTihfX2k5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZl bmdpbmUtPnRpbWVsaW5lLmxhc3RfcmVxdWVzdCkpOwo+PiAtCQlHRU1fQlVHX09OKGVuZ2luZS0+ bGFzdF9yZXRpcmVkX2NvbnRleHQgIT0ga2VybmVsX2NvbnRleHQpOwo+PiArCQlHRU1fQlVHX09O KGVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQtPmdlbV9jb250ZXh0ICE9IGtjdHgpOwo+PiAg IAl9Cj4+ICAgfQo+PiAgIAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j Cj4+IGluZGV4IDllNzBmNGRmYTcwMy4uYjY5YjE4ZWY4MTIwIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4+IEBAIC0xMjcsMTQgKzEyNyw4IEBAIHN0YXRp YyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 KQo+PiAgIAlmb3IgKG4gPSAwOyBuIDwgQVJSQVlfU0laRShjdHgtPl9fZW5naW5lKTsgbisrKSB7 Cj4+ICAgCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSAmY3R4LT5fX2VuZ2luZVtuXTsKPj4g ICAKPj4gLQkJaWYgKCFjZS0+c3RhdGUpCj4+IC0JCQljb250aW51ZTsKPj4gLQo+PiAtCQlXQVJO X09OKGNlLT5waW5fY291bnQpOwo+PiAtCQlpZiAoY2UtPnJpbmcpCj4+IC0JCQlpbnRlbF9yaW5n X2ZyZWUoY2UtPnJpbmcpOwo+PiAtCj4+IC0JCV9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfdW5s ZXNzX2FjdGl2ZShjZS0+c3RhdGUtPm9iaik7Cj4+ICsJCWlmIChjZS0+b3BzKQo+PiArCQkJY2Ut Pm9wcy0+ZGVzdHJveShjZSk7Cj4+ICAgCX0KPj4gICAKPj4gICAJa2ZyZWUoY3R4LT5uYW1lKTsK Pj4gQEAgLTI2Niw2ICsyNjAsNyBAQCBfX2NyZWF0ZV9od19jb250ZXh0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2 YXRlICpmaWxlX3ByaXYpCj4+ICAgewo+PiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 Owo+PiArCXVuc2lnbmVkIGludCBuOwo+PiAgIAlpbnQgcmV0Owo+PiAgIAo+PiAgIAljdHggPSBr emFsbG9jKHNpemVvZigqY3R4KSwgR0ZQX0tFUk5FTCk7Cj4+IEBAIC0yODMsNiArMjc4LDEyIEBA IF9fY3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ PiAgIAljdHgtPmk5MTUgPSBkZXZfcHJpdjsKPj4gICAJY3R4LT5zY2hlZC5wcmlvcml0eSA9IEk5 MTVfUFJJT1JJVFlfTk9STUFMOwo+PiAgIAo+PiArCWZvciAobiA9IDA7IG4gPCBBUlJBWV9TSVpF KGN0eC0+X19lbmdpbmUpOyBuKyspIHsKPj4gKwkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0g JmN0eC0+X19lbmdpbmVbbl07Cj4+ICsKPj4gKwkJY2UtPmdlbV9jb250ZXh0ID0gY3R4Owo+PiAr CX0KPj4gKwo+PiAgIAlJTklUX1JBRElYX1RSRUUoJmN0eC0+aGFuZGxlc192bWEsIEdGUF9LRVJO RUwpOwo+PiAgIAlJTklUX0xJU1RfSEVBRCgmY3R4LT5oYW5kbGVzX2xpc3QpOwo+PiAgIAo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCj4+IGluZGV4IGFjZTNiMTI5YzE4 OS4uNzQ5YTRmZjU2NmY1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9jb250ZXh0LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5oCj4+IEBAIC00NSw2ICs0NSwxMSBAQCBzdHJ1Y3QgaW50ZWxfcmluZzsKPj4gICAKPj4g ICAjZGVmaW5lIERFRkFVTFRfQ09OVEVYVF9IQU5ETEUgMAo+PiAgIAo+PiArc3RydWN0IGludGVs X2NvbnRleHRfb3BzIHsKPj4gKwl2b2lkICgqdW5waW4pKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSk7Cj4+ICsJdm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7Cj4+ICt9 Owo+PiArCj4+ICAgLyoqCj4+ICAgICogc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgLSBjbGllbnQg c3RhdGUKPj4gICAgKgo+PiBAQCAtMTQ0LDExICsxNDksMTQgQEAgc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgewo+PiAgIAo+PiAgIAkvKiogZW5naW5lOiBwZXItZW5naW5lIGxvZ2ljYWwgSFcgc3Rh dGUgKi8KPj4gICAJc3RydWN0IGludGVsX2NvbnRleHQgewo+PiArCQlzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqZ2VtX2NvbnRleHQ7Cj4+ICAgCQlzdHJ1Y3QgaTkxNV92bWEgKnN0YXRlOwo+PiAg IAkJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7Cj4+ICAgCQl1MzIgKmxyY19yZWdfc3RhdGU7Cj4+ ICAgCQl1NjQgbHJjX2Rlc2M7Cj4+ICAgCQlpbnQgcGluX2NvdW50Owo+PiArCj4+ICsJCWNvbnN0 IHN0cnVjdCBpbnRlbF9jb250ZXh0X29wcyAqb3BzOwo+PiAgIAl9IF9fZW5naW5lW0k5MTVfTlVN X0VOR0lORVNdOwo+PiAgIAo+PiAgIAkvKiogcmluZ19zaXplOiBzaXplIGZvciBhbGxvY2F0aW5n IHRoZSBwZXItZW5naW5lIHJpbmcgYnVmZmVyICovCj4+IEBAIC0yNjMsMjUgKzI3MSwyMiBAQCB0 b19pbnRlbF9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4+ICAgCXJldHVy biAmY3R4LT5fX2VuZ2luZVtlbmdpbmUtPmlkXTsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgaW5s aW5lIHN0cnVjdCBpbnRlbF9yaW5nICoKPj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2Nv bnRleHQgKgo+PiAgIGludGVsX2NvbnRleHRfcGluKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gICB7Cj4+ICAgCXJldHVybiBl bmdpbmUtPmNvbnRleHRfcGluKGVuZ2luZSwgY3R4KTsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMg aW5saW5lIHZvaWQgX19pbnRlbF9jb250ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4LAo+PiAtCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4+ICtzdGF0aWMgaW5saW5lIHZvaWQgX19pbnRlbF9jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UpCj4+ICAgewo+PiAtCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2lu dGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOwo+PiAtCj4+ICAgCUdFTV9CVUdfT04oIWNlLT5waW5f Y291bnQpOwo+PiAgIAljZS0+cGluX2NvdW50Kys7Cj4+ICAgfQo+PiAgIAo+PiAtc3RhdGljIGlu bGluZSB2b2lkIGludGVsX2NvbnRleHRfdW5waW4oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCwKPj4gLQkJCQkgICAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiArc3Rh dGljIGlubGluZSB2b2lkIGludGVsX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQg KmNlKQo+PiAgIHsKPj4gLQllbmdpbmUtPmNvbnRleHRfdW5waW4oZW5naW5lLCBjdHgpOwo+PiAr CUdFTV9CVUdfT04oIWNlLT5vcHMpOwo+PiArCWNlLT5vcHMtPnVucGluKGNlKTsKPj4gICB9Cj4+ ICAgCj4+ICAgLyogaTkxNV9nZW1fY29udGV4dC5jICovCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYwo+PiBpbmRleCA3Y2M3ZDNiYzczMWIuLjE0NTgyM2YwYjQ4ZSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4+IEBAIC0xNDg1LDggKzE0ODUs NyBAQCBzdGF0aWMgdm9pZCBnZW1fcmVjb3JkX3JpbmdzKHN0cnVjdCBpOTE1X2dwdV9zdGF0ZSAq ZXJyb3IpCj4+ICAgCj4+ICAgCQkJZWUtPmN0eCA9Cj4+ICAgCQkJCWk5MTVfZXJyb3Jfb2JqZWN0 X2NyZWF0ZShpOTE1LAo+PiAtCQkJCQkJCSB0b19pbnRlbF9jb250ZXh0KGN0eCwKPj4gLQkJCQkJ CQkJCSAgZW5naW5lKS0+c3RhdGUpOwo+PiArCQkJCQkJCSByZXF1ZXN0LT5od19jb250ZXh0LT5z dGF0ZSk7Cj4+ICAgCj4+ICAgCQkJZXJyb3ItPnNpbXVsYXRlZCB8PQo+PiAgIAkJCQlpOTE1X2dl bV9jb250ZXh0X25vX2Vycm9yX2NhcHR1cmUoY3R4KTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMKPj4gaW5kZXggMDE5YmQyZDA3M2FkLi40ZjBlYjg0YjNjMDAgMTAwNjQ0Cj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcGVyZi5jCj4+IEBAIC0xMjIxLDcgKzEyMjEsNyBAQCBzdGF0aWMgaW50IG9hX2dl dF9yZW5kZXJfY3R4X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4+ICAgCQlk ZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPSBzdHJlYW0tPmN0eC0+aHdfaWQ7Cj4+ ICAgCX0gZWxzZSB7Cj4+ICAgCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBkZXZf cHJpdi0+ZW5naW5lW1JDU107Cj4+IC0JCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwo+PiArCQlz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4+ICAgCQlpbnQgcmV0Owo+PiAgIAo+PiAgIAkJcmV0 ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5kcm0pOwo+PiBAQCAt MTIzNCwxOSArMTIzNCwxOSBAQCBzdGF0aWMgaW50IG9hX2dldF9yZW5kZXJfY3R4X2lkKHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4+ICAgCQkgKgo+PiAgIAkJICogTkI6IGltcGxp ZWQgUkNTIGVuZ2luZS4uLgo+PiAgIAkJICovCj4+IC0JCXJpbmcgPSBpbnRlbF9jb250ZXh0X3Bp bihzdHJlYW0tPmN0eCwgZW5naW5lKTsKPj4gKwkJY2UgPSBpbnRlbF9jb250ZXh0X3BpbihzdHJl YW0tPmN0eCwgZW5naW5lKTsKPj4gICAJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+PiAtCQlpZiAoSVNfRVJSKHJpbmcpKQo+PiAtCQkJcmV0dXJuIFBUUl9FUlIo cmluZyk7Cj4+ICsJCWlmIChJU19FUlIoY2UpKQo+PiArCQkJcmV0dXJuIFBUUl9FUlIoY2UpOwo+ PiAgIAo+PiArCQlkZXZfcHJpdi0+cGVyZi5vYS5waW5uZWRfY3R4ID0gY2U7Cj4+ICAgCj4+ICAg CQkvKgo+PiAgIAkJICogRXhwbGljaXRseSB0cmFjayB0aGUgSUQgKGluc3RlYWQgb2YgY2FsbGlu Zwo+PiAgIAkJICogaTkxNV9nZ3R0X29mZnNldCgpIG9uIHRoZSBmbHkpIGNvbnNpZGVyaW5nIHRo ZSBkaWZmZXJlbmNlCj4+ICAgCQkgKiB3aXRoIGdlbjgrIGFuZCBleGVjbGlzdHMKPj4gICAJCSAq Lwo+PiAtCQlkZXZfcHJpdi0+cGVyZi5vYS5zcGVjaWZpY19jdHhfaWQgPQo+PiAtCQkJaTkxNV9n Z3R0X29mZnNldCh0b19pbnRlbF9jb250ZXh0KHN0cmVhbS0+Y3R4LCBlbmdpbmUpLT5zdGF0ZSk7 Cj4+ICsJCWRldl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCA9IGk5MTVfZ2d0dF9vZmZz ZXQoY2UtPnN0YXRlKTsKPj4gICAJfQo+PiAgIAo+PiAgIAlyZXR1cm4gMDsKPj4gQEAgLTEyNjIs MTcgKzEyNjIsMTQgQEAgc3RhdGljIGludCBvYV9nZXRfcmVuZGVyX2N0eF9pZChzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtKQo+PiAgIHN0YXRpYyB2b2lkIG9hX3B1dF9yZW5kZXJfY3R4 X2lkKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCj4+ICAgewo+PiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2Owo+PiArCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZTsKPj4gICAKPj4gLQlpZiAoSEFTX0xPR0lDQUxfUklOR19DT05U RVhUUyhkZXZfcHJpdikpIHsKPj4gLQkJZGV2X3ByaXYtPnBlcmYub2Euc3BlY2lmaWNfY3R4X2lk ID0gSU5WQUxJRF9DVFhfSUQ7Cj4+IC0JfSBlbHNlIHsKPj4gLQkJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwo+PiArCWRldl9wcml2LT5wZXJm Lm9hLnNwZWNpZmljX2N0eF9pZCA9IElOVkFMSURfQ1RYX0lEOwo+PiAgIAo+PiArCWNlID0gZmV0 Y2hfYW5kX3plcm8oJmRldl9wcml2LT5wZXJmLm9hLnBpbm5lZF9jdHgpOwo+PiArCWlmIChjZSkg ewo+PiAgIAkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiAtCj4+ IC0JCWRldl9wcml2LT5wZXJmLm9hLnNwZWNpZmljX2N0eF9pZCA9IElOVkFMSURfQ1RYX0lEOwo+ PiAtCQlpbnRlbF9jb250ZXh0X3VucGluKHN0cmVhbS0+Y3R4LCBlbmdpbmUpOwo+PiAtCj4+ICsJ CWludGVsX2NvbnRleHRfdW5waW4oY2UpOwo+PiAgIAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4+ICAgCX0KPj4gICB9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVxdWVzdC5jCj4+IGluZGV4IGZlODgxMGE2YTMzOS4uZmM0OTliY2JkMTA1IDEwMDY0NAo+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+PiBAQCAtMzgzLDggKzM4Myw4IEBAIHN0YXRp YyB2b2lkIF9fcmV0aXJlX2VuZ2luZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKPj4gICAJICogdGhlIHN1YnNlcXVlbnQgcmVxdWVzdC4KPj4gICAJICovCj4+ICAgCWlm IChlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0KQo+PiAtCQlpbnRlbF9jb250ZXh0X3VucGlu KGVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQsIGVuZ2luZSk7Cj4+IC0JZW5naW5lLT5sYXN0 X3JldGlyZWRfY29udGV4dCA9IHJxLT5nZW1fY29udGV4dDsKPj4gKwkJaW50ZWxfY29udGV4dF91 bnBpbihlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0KTsKPj4gKwllbmdpbmUtPmxhc3RfcmV0 aXJlZF9jb250ZXh0ID0gcnEtPmh3X2NvbnRleHQ7Cj4+ICAgfQo+PiAgIAo+PiAgIHN0YXRpYyB2 b2lkIF9fcmV0aXJlX2VuZ2luZV91cHRvKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK Pj4gQEAgLTQ1Niw3ICs0NTYsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3JlcXVlc3RfcmV0aXJlKHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4+ICAgCj4+ICAgCS8qIFJldGlyZW1lbnQgZGVj YXlzIHRoZSBiYW4gc2NvcmUgYXMgaXQgaXMgYSBzaWduIG9mIGN0eCBwcm9ncmVzcyAqLwo+PiAg IAlhdG9taWNfZGVjX2lmX3Bvc2l0aXZlKCZyZXF1ZXN0LT5nZW1fY29udGV4dC0+YmFuX3Njb3Jl KTsKPj4gLQlpbnRlbF9jb250ZXh0X3VucGluKHJlcXVlc3QtPmdlbV9jb250ZXh0LCByZXF1ZXN0 LT5lbmdpbmUpOwo+PiArCWludGVsX2NvbnRleHRfdW5waW4ocmVxdWVzdC0+aHdfY29udGV4dCk7 Cj4+ICAgCj4+ICAgCV9fcmV0aXJlX2VuZ2luZV91cHRvKHJlcXVlc3QtPmVuZ2luZSwgcmVxdWVz dCk7Cj4+ICAgCj4+IEBAIC02NTcsNyArNjU3LDcgQEAgaTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkK Pj4gICB7Cj4+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5naW5lLT5pOTE1 Owo+PiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPj4gLQlzdHJ1Y3QgaW50ZWxfcmluZyAq cmluZzsKPj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4+ICAgCWludCByZXQ7Cj4+ICAg Cj4+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiBA QCAtNjgxLDIyICs2ODEsMjEgQEAgaTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPj4gICAJICogR0dU VCBzcGFjZSwgc28gZG8gdGhpcyBmaXJzdCBiZWZvcmUgd2UgcmVzZXJ2ZSBhIHNlcW5vIGZvcgo+ PiAgIAkgKiBvdXJzZWx2ZXMuCj4+ICAgCSAqLwo+PiAtCXJpbmcgPSBpbnRlbF9jb250ZXh0X3Bp bihjdHgsIGVuZ2luZSk7Cj4+IC0JaWYgKElTX0VSUihyaW5nKSkKPj4gLQkJcmV0dXJuIEVSUl9D QVNUKHJpbmcpOwo+PiAtCUdFTV9CVUdfT04oIXJpbmcpOwo+PiArCWNlID0gaW50ZWxfY29udGV4 dF9waW4oY3R4LCBlbmdpbmUpOwo+PiArCWlmIChJU19FUlIoY2UpKQo+PiArCQlyZXR1cm4gRVJS X0NBU1QoY2UpOwo+PiAgIAo+PiAgIAlyZXQgPSByZXNlcnZlX2d0KGk5MTUpOwo+PiAgIAlpZiAo cmV0KQo+PiAgIAkJZ290byBlcnJfdW5waW47Cj4+ICAgCj4+IC0JcmV0ID0gaW50ZWxfcmluZ193 YWl0X2Zvcl9zcGFjZShyaW5nLCBNSU5fU1BBQ0VfRk9SX0FERF9SRVFVRVNUKTsKPj4gKwlyZXQg PSBpbnRlbF9yaW5nX3dhaXRfZm9yX3NwYWNlKGNlLT5yaW5nLCBNSU5fU1BBQ0VfRk9SX0FERF9S RVFVRVNUKTsKPj4gICAJaWYgKHJldCkKPj4gICAJCWdvdG8gZXJyX3VucmVzZXJ2ZTsKPj4gICAK Pj4gICAJLyogTW92ZSBvdXIgb2xkZXN0IHJlcXVlc3QgdG8gdGhlIHNsYWItY2FjaGUgKGlmIG5v dCBpbiB1c2UhKSAqLwo+PiAtCXJxID0gbGlzdF9maXJzdF9lbnRyeSgmcmluZy0+cmVxdWVzdF9s aXN0LCB0eXBlb2YoKnJxKSwgcmluZ19saW5rKTsKPj4gLQlpZiAoIWxpc3RfaXNfbGFzdCgmcnEt PnJpbmdfbGluaywgJnJpbmctPnJlcXVlc3RfbGlzdCkgJiYKPj4gKwlycSA9IGxpc3RfZmlyc3Rf ZW50cnkoJmNlLT5yaW5nLT5yZXF1ZXN0X2xpc3QsIHR5cGVvZigqcnEpLCByaW5nX2xpbmspOwo+ PiArCWlmICghbGlzdF9pc19sYXN0KCZycS0+cmluZ19saW5rLCAmY2UtPnJpbmctPnJlcXVlc3Rf bGlzdCkgJiYKPj4gICAJICAgIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQo+PiAgIAkJaTkx NV9yZXF1ZXN0X3JldGlyZShycSk7Cj4+ICAgCj4+IEBAIC03NjEsOCArNzYwLDkgQEAgaTkxNV9y ZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCkKPj4gICAJcnEtPmk5MTUgPSBpOTE1Owo+PiAgIAlycS0+ZW5naW5l ID0gZW5naW5lOwo+PiAgIAlycS0+Z2VtX2NvbnRleHQgPSBjdHg7Cj4+IC0JcnEtPnJpbmcgPSBy aW5nOwo+PiAtCXJxLT50aW1lbGluZSA9IHJpbmctPnRpbWVsaW5lOwo+PiArCXJxLT5od19jb250 ZXh0ID0gY2U7Cj4+ICsJcnEtPnJpbmcgPSBjZS0+cmluZzsKPj4gKwlycS0+dGltZWxpbmUgPSBj ZS0+cmluZy0+dGltZWxpbmU7Cj4+ICAgCUdFTV9CVUdfT04ocnEtPnRpbWVsaW5lID09ICZlbmdp bmUtPnRpbWVsaW5lKTsKPj4gICAKPj4gICAJc3Bpbl9sb2NrX2luaXQoJnJxLT5sb2NrKTsKPj4g QEAgLTgxNCwxNCArODE0LDE0IEBAIGk5MTVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4+ICAgCQlnb3Rv IGVycl91bndpbmQ7Cj4+ICAgCj4+ICAgCS8qIEtlZXAgYSBzZWNvbmQgcGluIGZvciB0aGUgZHVh bCByZXRpcmVtZW50IGFsb25nIGVuZ2luZSBhbmQgcmluZyAqLwo+PiAtCV9faW50ZWxfY29udGV4 dF9waW4ocnEtPmdlbV9jb250ZXh0LCBlbmdpbmUpOwo+PiArCV9faW50ZWxfY29udGV4dF9waW4o Y2UpOwo+PiAgIAo+PiAgIAkvKiBDaGVjayB0aGF0IHdlIGRpZG4ndCBpbnRlcnJ1cHQgb3Vyc2Vs dmVzIHdpdGggYSBuZXcgcmVxdWVzdCAqLwo+PiAgIAlHRU1fQlVHX09OKHJxLT50aW1lbGluZS0+ c2Vxbm8gIT0gcnEtPmZlbmNlLnNlcW5vKTsKPj4gICAJcmV0dXJuIHJxOwo+PiAgIAo+PiAgIGVy cl91bndpbmQ6Cj4+IC0JcnEtPnJpbmctPmVtaXQgPSBycS0+aGVhZDsKPj4gKwljZS0+cmluZy0+ ZW1pdCA9IHJxLT5oZWFkOwo+PiAgIAo+PiAgIAkvKiBNYWtlIHN1cmUgd2UgZGlkbid0IGFkZCBv dXJzZWx2ZXMgdG8gZXh0ZXJuYWwgc3RhdGUgYmVmb3JlIGZyZWVpbmcgKi8KPj4gICAJR0VNX0JV R19PTighbGlzdF9lbXB0eSgmcnEtPmFjdGl2ZV9saXN0KSk7Cj4+IEBAIC04MzIsNyArODMyLDcg QEAgaTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPj4gICBlcnJfdW5yZXNlcnZlOgo+PiAgIAl1bnJl c2VydmVfZ3QoaTkxNSk7Cj4+ICAgZXJyX3VucGluOgo+PiAtCWludGVsX2NvbnRleHRfdW5waW4o Y3R4LCBlbmdpbmUpOwo+PiArCWludGVsX2NvbnRleHRfdW5waW4oY2UpOwo+PiAgIAlyZXR1cm4g RVJSX1BUUihyZXQpOwo+PiAgIH0KPj4gICAKPj4gQEAgLTEwMTgsOCArMTAxOCw4IEBAIGk5MTVf cmVxdWVzdF9hd2FpdF9vYmplY3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8sCj4+ICAgdm9pZCBf X2k5MTVfcmVxdWVzdF9hZGQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBmbHVz aF9jYWNoZXMpCj4+ICAgewo+PiAgIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBy ZXF1ZXN0LT5lbmdpbmU7Cj4+IC0Jc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5y aW5nOwo+PiAgIAlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUgPSByZXF1ZXN0LT50aW1l bGluZTsKPj4gKwlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7Cj4+ICAg CXN0cnVjdCBpOTE1X3JlcXVlc3QgKnByZXY7Cj4+ICAgCXUzMiAqY3M7Cj4+ICAgCWludCBlcnI7 Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4+IGluZGV4IGRkZGVjZDlmZmQwYy4u MWJiYmI3YTlmYTAzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl cXVlc3QuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+PiBA QCAtOTUsNiArOTUsNyBAQCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0IHsKPj4gICAJICovCj4+ICAgCXN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpnZW1fY29udGV4dDsKPj4gICAJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lOwo+PiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpod19jb250ZXh0Owo+ PiAgIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKPj4gICAJc3RydWN0IGk5MTVfdGltZWxpbmUg KnRpbWVsaW5lOwo+PiAgIAlzdHJ1Y3QgaW50ZWxfc2lnbmFsX25vZGUgc2lnbmFsaW5nOwo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+PiBpbmRleCA5ZTYxOGFhYjY1Njgu LjI2ZjlmOGFhYjk0OSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZW5naW5lX2NzLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2Nz LmMKPj4gQEAgLTY0NSw2ICs2NDUsMTIgQEAgc3RhdGljIGludCBpbml0X3BoeXNfc3RhdHVzX3Bh Z2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiAgIAlyZXR1cm4gMDsKPj4gICB9 Cj4+ICAgCj4+ICtzdGF0aWMgdm9pZCBfX2ludGVsX2NvbnRleHRfdW5waW4oc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwKPj4gKwkJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPj4gK3sKPj4gKwlpbnRlbF9jb250ZXh0X3VucGluKHRvX2ludGVsX2NvbnRleHQoY3R4LCBl bmdpbmUpKTsKPj4gK30KPj4gKwo+PiAgIC8qKgo+PiAgICAqIGludGVsX2VuZ2luZXNfaW5pdF9j b21tb24gLSBpbml0aWFsaXplIGNlbmdpbmUgc3RhdGUgd2hpY2ggbWlnaHQgcmVxdWlyZSBodyBh Y2Nlc3MKPj4gICAgKiBAZW5naW5lOiBFbmdpbmUgdG8gaW5pdGlhbGl6ZS4KPj4gQEAgLTY1OCw3 ICs2NjQsOCBAQCBzdGF0aWMgaW50IGluaXRfcGh5c19zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4+ICAgICovCj4+ICAgaW50IGludGVsX2VuZ2luZV9pbml0X2Nv bW1vbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICAgewo+PiAtCXN0cnVjdCBp bnRlbF9yaW5nICpyaW5nOwo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZW5n aW5lLT5pOTE1Owo+PiArCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKPj4gICAJaW50IHJldDsK Pj4gICAKPj4gICAJZW5naW5lLT5zZXRfZGVmYXVsdF9zdWJtaXNzaW9uKGVuZ2luZSk7Cj4+IEBA IC02NzAsMTggKzY3NywxOCBAQCBpbnQgaW50ZWxfZW5naW5lX2luaXRfY29tbW9uKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gICAJICogYmUgYXZhaWxhYmxlLiBUbyBhdm9pZCB0 aGlzIHdlIGFsd2F5cyBwaW4gdGhlIGRlZmF1bHQKPj4gICAJICogY29udGV4dC4KPj4gICAJICov Cj4+IC0JcmluZyA9IGludGVsX2NvbnRleHRfcGluKGVuZ2luZS0+aTkxNS0+a2VybmVsX2NvbnRl eHQsIGVuZ2luZSk7Cj4+IC0JaWYgKElTX0VSUihyaW5nKSkKPj4gLQkJcmV0dXJuIFBUUl9FUlIo cmluZyk7Cj4+ICsJY2UgPSBpbnRlbF9jb250ZXh0X3BpbihpOTE1LT5rZXJuZWxfY29udGV4dCwg ZW5naW5lKTsKPj4gKwlpZiAoSVNfRVJSKGNlKSkKPj4gKwkJcmV0dXJuIFBUUl9FUlIoY2UpOwo+ PiAgIAo+PiAgIAkvKgo+PiAgIAkgKiBTaW1pbGFybHkgdGhlIHByZWVtcHQgY29udGV4dCBtdXN0 IGFsd2F5cyBiZSBhdmFpbGFibGUgc28gdGhhdAo+PiAgIAkgKiB3ZSBjYW4gaW50ZXJydXB0IHRo ZSBlbmdpbmUgYXQgYW55IHRpbWUuCj4+ICAgCSAqLwo+PiAtCWlmIChlbmdpbmUtPmk5MTUtPnBy ZWVtcHRfY29udGV4dCkgewo+PiAtCQlyaW5nID0gaW50ZWxfY29udGV4dF9waW4oZW5naW5lLT5p OTE1LT5wcmVlbXB0X2NvbnRleHQsIGVuZ2luZSk7Cj4+IC0JCWlmIChJU19FUlIocmluZykpIHsK Pj4gLQkJCXJldCA9IFBUUl9FUlIocmluZyk7Cj4+ICsJaWYgKGk5MTUtPnByZWVtcHRfY29udGV4 dCkgewo+PiArCQljZSA9IGludGVsX2NvbnRleHRfcGluKGk5MTUtPnByZWVtcHRfY29udGV4dCwg ZW5naW5lKTsKPj4gKwkJaWYgKElTX0VSUihjZSkpIHsKPj4gKwkJCXJldCA9IFBUUl9FUlIoY2Up Owo+PiAgIAkJCWdvdG8gZXJyX3VucGluX2tlcm5lbDsKPj4gICAJCX0KPj4gICAJfQo+PiBAQCAt NjkwLDcgKzY5Nyw3IEBAIGludCBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+PiAgIAlpZiAocmV0KQo+PiAgIAkJZ290byBlcnJfdW5waW5f cHJlZW1wdDsKPj4gICAKPj4gLQlpZiAoSFdTX05FRURTX1BIWVNJQ0FMKGVuZ2luZS0+aTkxNSkp Cj4+ICsJaWYgKEhXU19ORUVEU19QSFlTSUNBTChpOTE1KSkKPj4gICAJCXJldCA9IGluaXRfcGh5 c19zdGF0dXNfcGFnZShlbmdpbmUpOwo+PiAgIAllbHNlCj4+ICAgCQlyZXQgPSBpbml0X3N0YXR1 c19wYWdlKGVuZ2luZSk7Cj4+IEBAIC03MDIsMTAgKzcwOSwxMSBAQCBpbnQgaW50ZWxfZW5naW5l X2luaXRfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gICBlcnJfYnJl YWRjcnVtYnM6Cj4+ICAgCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKGVuZ2luZSk7Cj4+ ICAgZXJyX3VucGluX3ByZWVtcHQ6Cj4+IC0JaWYgKGVuZ2luZS0+aTkxNS0+cHJlZW1wdF9jb250 ZXh0KQo+PiAtCQlpbnRlbF9jb250ZXh0X3VucGluKGVuZ2luZS0+aTkxNS0+cHJlZW1wdF9jb250 ZXh0LCBlbmdpbmUpOwo+PiArCWlmIChpOTE1LT5wcmVlbXB0X2NvbnRleHQpCj4+ICsJCV9faW50 ZWxfY29udGV4dF91bnBpbihpOTE1LT5wcmVlbXB0X2NvbnRleHQsIGVuZ2luZSk7Cj4+ICsKPj4g ICBlcnJfdW5waW5fa2VybmVsOgo+PiAtCWludGVsX2NvbnRleHRfdW5waW4oZW5naW5lLT5pOTE1 LT5rZXJuZWxfY29udGV4dCwgZW5naW5lKTsKPj4gKwlfX2ludGVsX2NvbnRleHRfdW5waW4oaTkx NS0+a2VybmVsX2NvbnRleHQsIGVuZ2luZSk7Cj4+ICAgCXJldHVybiByZXQ7Cj4+ICAgfQo+PiAg IAo+PiBAQCAtNzE4LDYgKzcyNiw4IEBAIGludCBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiAgICAqLwo+PiAgIHZvaWQgaW50ZWxfZW5n aW5lX2NsZWFudXBfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gICB7 Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7Cj4+ICsK Pj4gICAJaW50ZWxfZW5naW5lX2NsZWFudXBfc2NyYXRjaChlbmdpbmUpOwo+PiAgIAo+PiAgIAlp ZiAoSFdTX05FRURTX1BIWVNJQ0FMKGVuZ2luZS0+aTkxNSkpCj4+IEBAIC03MzIsOSArNzQyLDkg QEAgdm9pZCBpbnRlbF9lbmdpbmVfY2xlYW51cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+PiAgIAlpZiAoZW5naW5lLT5kZWZhdWx0X3N0YXRlKQo+PiAgIAkJaTkxNV9n ZW1fb2JqZWN0X3B1dChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpOwo+PiAgIAo+PiAtCWlmIChlbmdp bmUtPmk5MTUtPnByZWVtcHRfY29udGV4dCkKPj4gLQkJaW50ZWxfY29udGV4dF91bnBpbihlbmdp bmUtPmk5MTUtPnByZWVtcHRfY29udGV4dCwgZW5naW5lKTsKPj4gLQlpbnRlbF9jb250ZXh0X3Vu cGluKGVuZ2luZS0+aTkxNS0+a2VybmVsX2NvbnRleHQsIGVuZ2luZSk7Cj4+ICsJaWYgKGk5MTUt PnByZWVtcHRfY29udGV4dCkKPj4gKwkJX19pbnRlbF9jb250ZXh0X3VucGluKGk5MTUtPnByZWVt cHRfY29udGV4dCwgZW5naW5lKTsKPj4gKwlfX2ludGVsX2NvbnRleHRfdW5waW4oaTkxNS0+a2Vy bmVsX2NvbnRleHQsIGVuZ2luZSk7Cj4+ICAgCj4+ICAgCWk5MTVfdGltZWxpbmVfZmluaSgmZW5n aW5lLT50aW1lbGluZSk7Cj4+ICAgfQo+PiBAQCAtMTAwNyw4ICsxMDE3LDggQEAgYm9vbCBpbnRl bF9lbmdpbmVzX2FyZV9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4g ICAgKi8KPj4gICBib29sIGludGVsX2VuZ2luZV9oYXNfa2VybmVsX2NvbnRleHQoY29uc3Qgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiAgIHsKPj4gLQljb25zdCBzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqIGNvbnN0IGtlcm5lbF9jb250ZXh0ID0KPj4gLQkJZW5naW5lLT5pOTE1 LT5rZXJuZWxfY29udGV4dDsKPj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqa2VybmVs X2NvbnRleHQgPQo+PiArCQl0b19pbnRlbF9jb250ZXh0KGVuZ2luZS0+aTkxNS0+a2VybmVsX2Nv bnRleHQsIGVuZ2luZSk7Cj4+ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+PiAgIAo+PiAg IAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZlbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ PiBAQCAtMTAyMCw3ICsxMDMwLDcgQEAgYm9vbCBpbnRlbF9lbmdpbmVfaGFzX2tlcm5lbF9jb250 ZXh0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPj4gICAJICovCj4+ICAg CXJxID0gX19pOTE1X2dlbV9hY3RpdmVfcGVlaygmZW5naW5lLT50aW1lbGluZS5sYXN0X3JlcXVl c3QpOwo+PiAgIAlpZiAocnEpCj4+IC0JCXJldHVybiBycS0+Z2VtX2NvbnRleHQgPT0ga2VybmVs X2NvbnRleHQ7Cj4+ICsJCXJldHVybiBycS0+aHdfY29udGV4dCA9PSBrZXJuZWxfY29udGV4dDsK Pj4gICAJZWxzZQo+PiAgIAkJcmV0dXJuIGVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQgPT0g a2VybmVsX2NvbnRleHQ7Cj4+ICAgfQo+PiBAQCAtMTEwNywxNiArMTExNywxNiBAQCB2b2lkIGlu dGVsX2VuZ2luZXNfdW5wYXJrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+PiAgICAq Lwo+PiAgIHZvaWQgaW50ZWxfZW5naW5lX2xvc3RfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4+ICAgewo+PiAtCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4+ ICsJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+PiAgIAo+PiAgIAlsb2NrZGVwX2Fzc2VydF9o ZWxkKCZlbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiAgIAo+PiAgIAllbmdpbmUt PmxlZ2FjeV9hY3RpdmVfY29udGV4dCA9IE5VTEw7Cj4+ICAgCWVuZ2luZS0+bGVnYWN5X2FjdGl2 ZV9wcGd0dCA9IE5VTEw7Cj4+ICAgCj4+IC0JY3R4ID0gZmV0Y2hfYW5kX3plcm8oJmVuZ2luZS0+ bGFzdF9yZXRpcmVkX2NvbnRleHQpOwo+PiAtCWlmIChjdHgpCj4+IC0JCWludGVsX2NvbnRleHRf dW5waW4oY3R4LCBlbmdpbmUpOwo+PiArCWNlID0gZmV0Y2hfYW5kX3plcm8oJmVuZ2luZS0+bGFz dF9yZXRpcmVkX2NvbnRleHQpOwo+PiArCWlmIChjZSkKPj4gKwkJaW50ZWxfY29udGV4dF91bnBp bihjZSk7Cj4+ICAgfQo+PiAgIAo+PiAgIGJvb2wgaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29y ZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+PiBpbmRleCBhNDMyYTE5M2YzYzQuLjEzMzM2N2Ex Nzg2MyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1p c3Npb24uYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlzc2lv bi5jCj4+IEBAIC01MTMsOSArNTEzLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2FkZF9yZXF1ZXN0KHN0 cnVjdCBpbnRlbF9ndWMgKmd1Yywgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4+ICAgewo+PiAg IAlzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50ID0gZ3VjLT5leGVjYnVmX2NsaWVudDsK Pj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcnEtPmVuZ2luZTsKPj4gLQl1 MzIgY3R4X2Rlc2MgPQo+PiAtCQlsb3dlcl8zMl9iaXRzKGludGVsX2xyX2NvbnRleHRfZGVzY3Jp cHRvcihycS0+Z2VtX2NvbnRleHQsCj4+IC0JCQkJCQkJICBlbmdpbmUpKTsKPj4gKwl1MzIgY3R4 X2Rlc2MgPSBsb3dlcl8zMl9iaXRzKHJxLT5od19jb250ZXh0LT5scmNfZGVzYyk7Cj4+ICAgCXUz MiByaW5nX3RhaWwgPSBpbnRlbF9yaW5nX3NldF90YWlsKHJxLT5yaW5nLCBycS0+dGFpbCkgLyBz aXplb2YodTY0KTsKPj4gICAKPj4gICAJc3Bpbl9sb2NrKCZjbGllbnQtPndxX2xvY2spOwo+PiBA QCAtNTUzLDggKzU1MSw4IEBAIHN0YXRpYyB2b2lkIGluamVjdF9wcmVlbXB0X2NvbnRleHQoc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+PiAgIAkJCQkJICAgICBwcmVlbXB0X3dvcmtbZW5naW5l LT5pZF0pOwo+PiAgIAlzdHJ1Y3QgaW50ZWxfZ3VjX2NsaWVudCAqY2xpZW50ID0gZ3VjLT5wcmVl bXB0X2NsaWVudDsKPj4gICAJc3RydWN0IGd1Y19zdGFnZV9kZXNjICpzdGFnZV9kZXNjID0gX19n ZXRfc3RhZ2VfZGVzYyhjbGllbnQpOwo+PiAtCXUzMiBjdHhfZGVzYyA9IGxvd2VyXzMyX2JpdHMo aW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yKGNsaWVudC0+b3duZXIsCj4+IC0JCQkJCQkJCSBl bmdpbmUpKTsKPj4gKwl1MzIgY3R4X2Rlc2MgPSBsb3dlcl8zMl9iaXRzKHRvX2ludGVsX2NvbnRl eHQoY2xpZW50LT5vd25lciwKPj4gKwkJCQkJCSAgICAgIGVuZ2luZSktPmxyY19kZXNjKTsKPj4g ICAJdTMyIGRhdGFbN107Cj4+ICAgCj4+ICAgCS8qCj4+IEBAIC03MjYsNyArNzI0LDcgQEAgc3Rh dGljIGJvb2wgX19ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgKnJuOwo+PiAgIAo+PiAgIAkJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlKHJxLCBybiwgJnAtPnJlcXVlc3RzLCBzY2hlZC5saW5rKSB7Cj4+IC0J CQlpZiAobGFzdCAmJiBycS0+Z2VtX2NvbnRleHQgIT0gbGFzdC0+Z2VtX2NvbnRleHQpIHsKPj4g KwkJCWlmIChsYXN0ICYmIHJxLT5od19jb250ZXh0ICE9IGxhc3QtPmh3X2NvbnRleHQpIHsKPj4g ICAJCQkJaWYgKHBvcnQgPT0gbGFzdF9wb3J0KSB7Cj4+ICAgCQkJCQlfX2xpc3RfZGVsX21hbnko JnAtPnJlcXVlc3RzLAo+PiAgIAkJCQkJCQkmcnEtPnNjaGVkLmxpbmspOwo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9scmMuYwo+PiBpbmRleCA4MTNmMTE0YTdjOTMuLjg5YTNhMzE3MjFkYSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gQEAgLTE2NCw3ICsxNjQsOCBAQAo+PiAgICNk ZWZpbmUgV0FfVEFJTF9CWVRFUyAoc2l6ZW9mKHUzMikgKiBXQV9UQUlMX0RXT1JEUykKPj4gICAK Pj4gICBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X2RlZmVycmVkX2FsbG9jKHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCj4+IC0JCQkJCSAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwo+PiArCQkJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ PiArCQkJCQkgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKPj4gICBzdGF0aWMgdm9pZCBl eGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUodTMyICpyZWdfc3RhdGUsCj4+ICAgCQkJCSAgICAgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPj4gICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCj4+IEBAIC0xODksMTIgKzE5MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v bCBuZWVkX3ByZWVtcHQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+PiAg IAkJIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQobGFzdCkpOwo+PiAgIH0KPj4gICAKPj4gLS8qKgo+ PiAtICogaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yX3VwZGF0ZSgpIC0gY2FsY3VsYXRlICYg Y2FjaGUgdGhlIGRlc2NyaXB0b3IKPj4gLSAqIAkJCQkJICBkZXNjcmlwdG9yIGZvciBhIHBpbm5l ZCBjb250ZXh0Cj4+IC0gKiBAY3R4OiBDb250ZXh0IHRvIHdvcmsgb24KPj4gLSAqIEBlbmdpbmU6 IEVuZ2luZSB0aGUgZGVzY3JpcHRvciB3aWxsIGJlIHVzZWQgd2l0aAo+PiAtICoKPj4gKy8qCj4+ ICAgICogVGhlIGNvbnRleHQgZGVzY3JpcHRvciBlbmNvZGVzIHZhcmlvdXMgYXR0cmlidXRlcyBv ZiBhIGNvbnRleHQsCj4+ICAgICogaW5jbHVkaW5nIGl0cyBHVFQgYWRkcmVzcyBhbmQgc29tZSBm bGFncy4gQmVjYXVzZSBpdCdzIGZhaXJseQo+PiAgICAqIGV4cGVuc2l2ZSB0byBjYWxjdWxhdGUs IHdlJ2xsIGp1c3QgZG8gaXQgb25jZSBhbmQgY2FjaGUgdGhlIHJlc3VsdCwKPj4gQEAgLTIyMiw5 ICsyMTgsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbmVlZF9wcmVlbXB0KGNvbnN0IHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4gICAgKi8KPj4gICBzdGF0aWMgdm9pZAo+PiAgIGlu dGVsX2xyX2NvbnRleHRfZGVzY3JpcHRvcl91cGRhdGUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCwKPj4gLQkJCQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICsJCQkJ ICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+PiArCQkJCSAgIHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKPj4gICB7Cj4+IC0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9f aW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7Cj4+ICAgCXU2NCBkZXNjOwo+PiAgIAo+PiAgIAlC VUlMRF9CVUdfT04oTUFYX0NPTlRFWFRfSFdfSUQgPiAoQklUKEdFTjhfQ1RYX0lEX1dJRFRIKSkp Owo+PiBAQCAtNDE4LDggKzQxNCw3IEBAIGV4ZWNsaXN0c191cGRhdGVfY29udGV4dF9wZHBzKHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwgdTMyICpyZWdfc3RhdGUpCj4+ICAgCj4+ICAgc3Rh dGljIHU2NCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp Cj4+ICAgewo+PiAtCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9Cj4+IC0JCXRvX2ludGVsX2Nv bnRleHQocnEtPmdlbV9jb250ZXh0LCBycS0+ZW5naW5lKTsKPj4gKwlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY2UgPSBycS0+aHdfY29udGV4dDsKPj4gICAJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0ID0KPj4gICAJCXJxLT5nZW1fY29udGV4dC0+cHBndHQgPzogcnEtPmk5MTUtPm1tLmFsaWFz aW5nX3BwZ3R0Owo+PiAgIAl1MzIgKnJlZ19zdGF0ZSA9IGNlLT5scmNfcmVnX3N0YXRlOwo+PiBA QCAtNDk2LDE0ICs0OTEsMTQgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9wb3J0cyhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICAgCWV4ZWNsaXN0c19jbGVhcl9hY3Rp dmUoZXhlY2xpc3RzLCBFWEVDTElTVFNfQUNUSVZFX0hXQUNLKTsKPj4gICB9Cj4+ICAgCj4+IC1z dGF0aWMgYm9vbCBjdHhfc2luZ2xlX3BvcnRfc3VibWlzc2lvbihjb25zdCBzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4KQo+PiArc3RhdGljIGJvb2wgY3R4X3NpbmdsZV9wb3J0X3N1Ym1pc3Np b24oY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+PiAgIHsKPj4gICAJcmV0dXJuIChJ U19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9HVlQpICYmCj4+IC0JCWk5MTVfZ2VtX2NvbnRleHRf Zm9yY2Vfc2luZ2xlX3N1Ym1pc3Npb24oY3R4KSk7Cj4+ICsJCWk5MTVfZ2VtX2NvbnRleHRfZm9y Y2Vfc2luZ2xlX3N1Ym1pc3Npb24oY2UtPmdlbV9jb250ZXh0KSk7Cj4+ICAgfQo+PiAgIAo+PiAt c3RhdGljIGJvb2wgY2FuX21lcmdlX2N0eChjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq cHJldiwKPj4gLQkJCSAgY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKm5leHQpCj4+ICtz dGF0aWMgYm9vbCBjYW5fbWVyZ2VfY3R4KGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpwcmV2 LAo+PiArCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqbmV4dCkKPj4gICB7Cj4+ICAg CWlmIChwcmV2ICE9IG5leHQpCj4+ICAgCQlyZXR1cm4gZmFsc2U7Cj4+IEBAIC02ODAsOCArNjc1 LDggQEAgc3RhdGljIGJvb2wgX19leGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4+ICAgCQkJICogc2Vjb25kIHJlcXVlc3QsIGFuZCBzbyB3ZSBuZXZlciBu ZWVkIHRvIHRlbGwgdGhlCj4+ICAgCQkJICogaGFyZHdhcmUgYWJvdXQgdGhlIGZpcnN0Lgo+PiAg IAkJCSAqLwo+PiAtCQkJaWYgKGxhc3QgJiYgIWNhbl9tZXJnZV9jdHgocnEtPmdlbV9jb250ZXh0 LAo+PiAtCQkJCQkJICAgbGFzdC0+Z2VtX2NvbnRleHQpKSB7Cj4+ICsJCQlpZiAobGFzdCAmJgo+ PiArCQkJICAgICFjYW5fbWVyZ2VfY3R4KHJxLT5od19jb250ZXh0LCBsYXN0LT5od19jb250ZXh0 KSkgewo+PiAgIAkJCQkvKgo+PiAgIAkJCQkgKiBJZiB3ZSBhcmUgb24gdGhlIHNlY29uZCBwb3J0 IGFuZCBjYW5ub3QKPj4gICAJCQkJICogY29tYmluZSB0aGlzIHJlcXVlc3Qgd2l0aCB0aGUgbGFz dCwgdGhlbiB3ZQo+PiBAQCAtNzAwLDE0ICs2OTUsMTQgQEAgc3RhdGljIGJvb2wgX19leGVjbGlz dHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICAgCQkJCSAqIHRo ZSBzYW1lIGNvbnRleHQgKGV2ZW4gdGhvdWdoIGEgZGlmZmVyZW50Cj4+ICAgCQkJCSAqIHJlcXVl c3QpIHRvIHRoZSBzZWNvbmQgcG9ydC4KPj4gICAJCQkJICovCj4+IC0JCQkJaWYgKGN0eF9zaW5n bGVfcG9ydF9zdWJtaXNzaW9uKGxhc3QtPmdlbV9jb250ZXh0KSB8fAo+PiAtCQkJCSAgICBjdHhf c2luZ2xlX3BvcnRfc3VibWlzc2lvbihycS0+Z2VtX2NvbnRleHQpKSB7Cj4+ICsJCQkJaWYgKGN0 eF9zaW5nbGVfcG9ydF9zdWJtaXNzaW9uKGxhc3QtPmh3X2NvbnRleHQpIHx8Cj4+ICsJCQkJICAg IGN0eF9zaW5nbGVfcG9ydF9zdWJtaXNzaW9uKHJxLT5od19jb250ZXh0KSkgewo+PiAgIAkJCQkJ X19saXN0X2RlbF9tYW55KCZwLT5yZXF1ZXN0cywKPj4gICAJCQkJCQkJJnJxLT5zY2hlZC5saW5r KTsKPj4gICAJCQkJCWdvdG8gZG9uZTsKPj4gICAJCQkJfQo+PiAgIAo+PiAtCQkJCUdFTV9CVUdf T04obGFzdC0+Z2VtX2NvbnRleHQgPT0gcnEtPmdlbV9jb250ZXh0KTsKPj4gKwkJCQlHRU1fQlVH X09OKGxhc3QtPmh3X2NvbnRleHQgPT0gcnEtPmh3X2NvbnRleHQpOwo+PiAgIAo+PiAgIAkJCQlp ZiAoc3VibWl0KQo+PiAgIAkJCQkJcG9ydF9hc3NpZ24ocG9ydCwgbGFzdCk7Cj4+IEBAIC0xMzM4 LDYgKzEzMzMsMzcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3NjaGVkdWxlKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJlcXVlc3QsCj4+ICAgCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGlu ZS5sb2NrKTsKPj4gICB9Cj4+ICAgCj4+ICtzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF9k ZXN0cm95KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPj4gK3sKPj4gKwlHRU1fQlVHX09OKCFj ZS0+c3RhdGUpOwo+PiArCUdFTV9CVUdfT04oY2UtPnBpbl9jb3VudCk7Cj4+ICsKPj4gKwlpbnRl bF9yaW5nX2ZyZWUoY2UtPnJpbmcpOwo+PiArCV9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfdW5s ZXNzX2FjdGl2ZShjZS0+c3RhdGUtPm9iaik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIF9f ZXhlY2xpc3RzX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+PiArewo+ PiArCWludGVsX3JpbmdfdW5waW4oY2UtPnJpbmcpOwo+PiArCj4+ICsJY2UtPnN0YXRlLT5vYmot PnBpbl9nbG9iYWwtLTsKPj4gKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+ b2JqKTsKPj4gKwlpOTE1X3ZtYV91bnBpbihjZS0+c3RhdGUpOwo+PiArCj4+ICsJaTkxNV9nZW1f Y29udGV4dF9wdXQoY2UtPmdlbV9jb250ZXh0KTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQg ZXhlY2xpc3RzX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+PiArewo+ PiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5nZW1fY29udGV4dC0+aTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4+ICsJR0VNX0JVR19PTihjZS0+cGluX2NvdW50ID09IDApOwo+PiArCj4+ICsJ aWYgKC0tY2UtPnBpbl9jb3VudCkKPj4gKwkJcmV0dXJuOwo+PiArCj4+ICsJX19leGVjbGlzdHNf Y29udGV4dF91bnBpbihjZSk7Cj4+ICt9Cj4+ICsKPj4gICBzdGF0aWMgaW50IF9fY29udGV4dF9w aW4oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgc3RydWN0IGk5MTVfdm1hICp2bWEpCj4+ ICAgewo+PiAgIAl1bnNpZ25lZCBpbnQgZmxhZ3M7Cj4+IEBAIC0xMzYxLDIxICsxMzg3LDE1IEBA IHN0YXRpYyBpbnQgX19jb250ZXh0X3BpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LCBz dHJ1Y3QgaTkxNV92bWEgKnZtYSkKPj4gICAJcmV0dXJuIGk5MTVfdm1hX3Bpbih2bWEsIDAsIEdF TjhfTFJfQ09OVEVYVF9BTElHTiwgZmxhZ3MpOwo+PiAgIH0KPj4gICAKPj4gLXN0YXRpYyBzdHJ1 Y3QgaW50ZWxfcmluZyAqCj4+IC1leGVjbGlzdHNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAo+PiAtCQkgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 KQo+PiArc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKPj4gK19fZXhlY2xpc3RzX2NvbnRl eHRfcGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4gKwkJCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgsCj4+ICsJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4+ICAg ewo+PiAtCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBl bmdpbmUpOwo+PiAgIAl2b2lkICp2YWRkcjsKPj4gICAJaW50IHJldDsKPj4gICAKPj4gLQlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiAtCj4+IC0J aWYgKGxpa2VseShjZS0+cGluX2NvdW50KyspKQo+PiAtCQlnb3RvIG91dDsKPj4gLQlHRU1fQlVH X09OKCFjZS0+cGluX2NvdW50KTsgLyogbm8gb3ZlcmZsb3cgcGxlYXNlISAqLwo+PiAtCj4+IC0J cmV0ID0gZXhlY2xpc3RzX2NvbnRleHRfZGVmZXJyZWRfYWxsb2MoY3R4LCBlbmdpbmUpOwo+PiAr CXJldCA9IGV4ZWNsaXN0c19jb250ZXh0X2RlZmVycmVkX2FsbG9jKGN0eCwgZW5naW5lLCBjZSk7 Cj4+ICAgCWlmIChyZXQpCj4+ICAgCQlnb3RvIGVycjsKPj4gICAJR0VNX0JVR19PTighY2UtPnN0 YXRlKTsKPj4gQEAgLTEzOTQsNyArMTQxNCw3IEBAIGV4ZWNsaXN0c19jb250ZXh0X3BpbihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+ICAgCWlmIChyZXQpCj4+ICAgCQlnb3RvIHVu cGluX21hcDsKPj4gICAKPj4gLQlpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3JfdXBkYXRlKGN0 eCwgZW5naW5lKTsKPj4gKwlpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3JfdXBkYXRlKGN0eCwg ZW5naW5lLCBjZSk7Cj4+ICAgCj4+ICAgCWNlLT5scmNfcmVnX3N0YXRlID0gdmFkZHIgKyBMUkNf U1RBVEVfUE4gKiBQQUdFX1NJWkU7Cj4+ICAgCWNlLT5scmNfcmVnX3N0YXRlW0NUWF9SSU5HX0JV RkZFUl9TVEFSVCsxXSA9Cj4+IEBAIC0xNDAzLDggKzE0MjMsNyBAQCBleGVjbGlzdHNfY29udGV4 dF9waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+PiAgIAo+PiAgIAljZS0+c3Rh dGUtPm9iai0+cGluX2dsb2JhbCsrOwo+PiAgIAlpOTE1X2dlbV9jb250ZXh0X2dldChjdHgpOwo+ PiAtb3V0Ogo+PiAtCXJldHVybiBjZS0+cmluZzsKPj4gKwlyZXR1cm4gY2U7Cj4+ICAgCj4+ICAg dW5waW5fbWFwOgo+PiAgIAlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNlLT5zdGF0ZS0+b2Jq KTsKPj4gQEAgLTE0MTUsMzMgKzE0MzQsMzMgQEAgZXhlY2xpc3RzX2NvbnRleHRfcGluKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4gICAJcmV0dXJuIEVSUl9QVFIocmV0KTsKPj4g ICB9Cj4+ICAgCj4+IC1zdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF91bnBpbihzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+IC0JCQkJICAgIHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgpCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzIGV4ZWNs aXN0c19jb250ZXh0X29wcyA9IHsKPj4gKwkudW5waW4gPSBleGVjbGlzdHNfY29udGV4dF91bnBp biwKPj4gKwkuZGVzdHJveSA9IGV4ZWNsaXN0c19jb250ZXh0X2Rlc3Ryb3ksCj4+ICt9Owo+PiAr Cj4+ICtzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKgo+PiArZXhlY2xpc3RzX2NvbnRleHRf cGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4gKwkJICAgICAgc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCkKPj4gICB7Cj4+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOwo+PiAgIAo+PiAgIAlsb2NrZGVwX2Fz c2VydF9oZWxkKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiAtCUdFTV9CVUdfT04o Y2UtPnBpbl9jb3VudCA9PSAwKTsKPj4gICAKPj4gLQlpZiAoLS1jZS0+cGluX2NvdW50KQo+PiAt CQlyZXR1cm47Cj4+IC0KPj4gLQlpbnRlbF9yaW5nX3VucGluKGNlLT5yaW5nKTsKPj4gKwlpZiAo bGlrZWx5KGNlLT5waW5fY291bnQrKykpCj4+ICsJCXJldHVybiBjZTsKPj4gKwlHRU1fQlVHX09O KCFjZS0+cGluX2NvdW50KTsgLyogbm8gb3ZlcmZsb3cgcGxlYXNlISAqLwo+PiAgIAo+PiAtCWNl LT5zdGF0ZS0+b2JqLT5waW5fZ2xvYmFsLS07Cj4+IC0JaTkxNV9nZW1fb2JqZWN0X3VucGluX21h cChjZS0+c3RhdGUtPm9iaik7Cj4+IC0JaTkxNV92bWFfdW5waW4oY2UtPnN0YXRlKTsKPj4gKwlj ZS0+b3BzID0gJmV4ZWNsaXN0c19jb250ZXh0X29wczsKPj4gICAKPj4gLQlpOTE1X2dlbV9jb250 ZXh0X3B1dChjdHgpOwo+PiArCXJldHVybiBfX2V4ZWNsaXN0c19jb250ZXh0X3BpbihlbmdpbmUs IGN0eCwgY2UpOwo+PiAgIH0KPj4gICAKPj4gICBzdGF0aWMgaW50IGV4ZWNsaXN0c19yZXF1ZXN0 X2FsbG9jKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4+ICAgewo+PiAtCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSA9Cj4+IC0JCXRvX2ludGVsX2NvbnRleHQocmVxdWVzdC0+Z2VtX2Nv bnRleHQsIHJlcXVlc3QtPmVuZ2luZSk7Cj4+ICAgCWludCByZXQ7Cj4+ICAgCj4+IC0JR0VNX0JV R19PTighY2UtPnBpbl9jb3VudCk7Cj4+ICsJR0VNX0JVR19PTighcmVxdWVzdC0+aHdfY29udGV4 dC0+cGluX2NvdW50KTsKPj4gICAKPj4gICAJLyogRmx1c2ggZW5vdWdoIHNwYWNlIHRvIHJlZHVj ZSB0aGUgbGlrZWxpaG9vZCBvZiB3YWl0aW5nIGFmdGVyCj4+ICAgCSAqIHdlIHN0YXJ0IGJ1aWxk aW5nIHRoZSByZXF1ZXN0IC0gaW4gd2hpY2ggY2FzZSB3ZSB3aWxsIGp1c3QKPj4gQEAgLTE5NTUs NyArMTk3NCw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsCj4+ICAgCSAqIGZ1dHVyZSByZXF1ZXN0IHdpbGwgYmUgYWZ0ZXIgdXNl cnNwYWNlIGhhcyBoYWQgdGhlIG9wcG9ydHVuaXR5Cj4+ICAgCSAqIHRvIHJlY3JlYXRlIGl0cyBv d24gc3RhdGUuCj4+ICAgCSAqLwo+PiAtCXJlZ3MgPSB0b19pbnRlbF9jb250ZXh0KHJlcXVlc3Qt PmdlbV9jb250ZXh0LCBlbmdpbmUpLT5scmNfcmVnX3N0YXRlOwo+PiArCXJlZ3MgPSByZXF1ZXN0 LT5od19jb250ZXh0LT5scmNfcmVnX3N0YXRlOwo+PiAgIAlpZiAoZW5naW5lLT5kZWZhdWx0X3N0 YXRlKSB7Cj4+ICAgCQl2b2lkICpkZWZhdWx0czsKPj4gICAKPj4gQEAgLTIzMjYsOCArMjM0NSw2 IEBAIGxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4+ICAgCWVuZ2luZS0+cmVzZXQuZmluaXNoID0gZXhlY2xpc3RzX3Jlc2V0X2Zpbmlz aDsKPj4gICAKPj4gICAJZW5naW5lLT5jb250ZXh0X3BpbiA9IGV4ZWNsaXN0c19jb250ZXh0X3Bp bjsKPj4gLQllbmdpbmUtPmNvbnRleHRfdW5waW4gPSBleGVjbGlzdHNfY29udGV4dF91bnBpbjsK Pj4gLQo+PiAgIAllbmdpbmUtPnJlcXVlc3RfYWxsb2MgPSBleGVjbGlzdHNfcmVxdWVzdF9hbGxv YzsKPj4gICAKPj4gICAJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuOF9lbWl0X2ZsdXNoOwo+PiBA QCAtMjU2Miw3ICsyNTc5LDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2luaXRfcmVnX3N0YXRl KHUzMiAqcmVncywKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5n aW5lLT5pOTE1Owo+PiAgIAlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBjdHgtPnBwZ3R0 ID86IGRldl9wcml2LT5tbS5hbGlhc2luZ19wcGd0dDsKPj4gICAJdTMyIGJhc2UgPSBlbmdpbmUt Pm1taW9fYmFzZTsKPj4gLQlib29sIHJjcyA9IGVuZ2luZS0+aWQgPT0gUkNTOwo+PiArCWJvb2wg cmNzID0gZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1M7Cj4+ICAgCj4+ICAgCS8qIEEgY29u dGV4dCBpcyBhY3R1YWxseSBhIGJpZyBiYXRjaCBidWZmZXIgd2l0aCBzZXZlcmFsCj4+ICAgCSAq IE1JX0xPQURfUkVHSVNURVJfSU1NIGNvbW1hbmRzIGZvbGxvd2VkIGJ5IChyZWcsIHZhbHVlKSBw YWlycy4gVGhlCj4+IEBAIC0yNzA5LDEwICsyNzI2LDEwIEBAIHBvcHVsYXRlX2xyX2NvbnRleHQo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPj4gICB9Cj4+ICAgCj4+ICAgc3RhdGljIGlu dCBleGVjbGlzdHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAo+PiAtCQkJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiAr CQkJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+PiArCQkJCQkgICAgc3Ry dWN0IGludGVsX2NvbnRleHQgKmNlKQo+PiAgIHsKPj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKmN0eF9vYmo7Cj4+IC0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxf Y29udGV4dChjdHgsIGVuZ2luZSk7Cj4+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+PiAgIAl1 aW50MzJfdCBjb250ZXh0X3NpemU7Cj4+ICAgCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+PiBpbmRleCA0ZWM3ZDhkZDEzYzguLjE1OTMxOTRlOTMw YyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKPj4gQEAgLTEwNCwxMSArMTA0LDQg QEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQ7Cj4+ICAgCj4+ICAgdm9pZCBpbnRlbF9scl9jb250 ZXh0X3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAgIAo+PiAt c3RhdGljIGlubGluZSB1aW50NjRfdAo+PiAtaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yKHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4+IC0JCQkgICAgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+PiAtewo+PiAtCXJldHVybiB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5n aW5lKS0+bHJjX2Rlc2M7Cj4+IC19Cj4+IC0KPj4gICAjZW5kaWYgLyogX0lOVEVMX0xSQ19IXyAq Lwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4+IGluZGV4IDUzNzAz MDEyZWM3NS4uMGMwYzlmNTMxZTRlIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jCj4+IEBAIC01NzEsOCArNTcxLDcgQEAgc3RhdGljIHZvaWQgcmVzZXRfcmlu ZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+ICAgCSAqLwo+PiAgIAlpZiAocmVx dWVzdCkgewo+PiAgIAkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxdWVz dC0+aTkxNTsKPj4gLQkJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0KPj4gLQkJCXRvX2ludGVs X2NvbnRleHQocmVxdWVzdC0+Z2VtX2NvbnRleHQsIGVuZ2luZSk7Cj4+ICsJCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSA9IHJlcXVlc3QtPmh3X2NvbnRleHQ7Cj4+ICAgCQlzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqcHBndHQ7Cj4+ICAgCj4+ICAgCQlpZiAoY2UtPnN0YXRlKSB7Cj4+IEBAIC0xMTg2 LDcgKzExODUsMzEgQEAgaW50ZWxfcmluZ19mcmVlKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nKQo+ PiAgIAlrZnJlZShyaW5nKTsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgaW50IGNvbnRleHRfcGlu KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPj4gK3N0YXRpYyB2b2lkIGludGVsX3JpbmdfY29u dGV4dF9kZXN0cm95KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPj4gK3sKPj4gKwlHRU1fQlVH X09OKGNlLT5waW5fY291bnQpOwo+PiArCj4+ICsJaWYgKGNlLT5zdGF0ZSkKPj4gKwkJX19pOTE1 X2dlbV9vYmplY3RfcmVsZWFzZV91bmxlc3NfYWN0aXZlKGNlLT5zdGF0ZS0+b2JqKTsKPj4gK30K Pj4gKwo+PiArc3RhdGljIHZvaWQgaW50ZWxfcmluZ19jb250ZXh0X3VucGluKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKPj4gK3sKPj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZjZS0+Z2VtX2Nv bnRleHQtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+PiArCUdFTV9CVUdfT04oY2UtPnBpbl9j b3VudCA9PSAwKTsKPj4gKwo+PiArCWlmICgtLWNlLT5waW5fY291bnQpCj4+ICsJCXJldHVybjsK Pj4gKwo+PiArCWlmIChjZS0+c3RhdGUpIHsKPj4gKwkJY2UtPnN0YXRlLT5vYmotPnBpbl9nbG9i YWwtLTsKPj4gKwkJaTkxNV92bWFfdW5waW4oY2UtPnN0YXRlKTsKPj4gKwl9Cj4+ICsKPj4gKwlp OTE1X2dlbV9jb250ZXh0X3B1dChjZS0+Z2VtX2NvbnRleHQpOwo+PiArfQo+PiArCj4+ICtzdGF0 aWMgaW50IF9fY29udGV4dF9waW4oc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+PiAgIHsKPj4g ICAJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBjZS0+c3RhdGU7Cj4+ICAgCWludCByZXQ7Cj4+IEBA IC0xMjc1LDI1ICsxMjk4LDE5IEBAIGFsbG9jX2NvbnRleHRfdm1hKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPj4gICAJcmV0dXJuIEVSUl9QVFIoZXJyKTsKPj4gICB9Cj4+ICAgCj4+ IC1zdGF0aWMgc3RydWN0IGludGVsX3JpbmcgKgo+PiAtaW50ZWxfcmluZ19jb250ZXh0X3Bpbihz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+IC0JCSAgICAgICBzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4KQo+PiArc3RhdGljIHN0cnVjdCBpbnRlbF9jb250ZXh0ICoKPj4gK19f cmluZ19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+ICsJCSAg IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4+ICsJCSAgIHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSkKPj4gICB7Cj4+IC0Jc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxf Y29udGV4dChjdHgsIGVuZ2luZSk7Cj4+IC0JaW50IHJldDsKPj4gLQo+PiAtCWxvY2tkZXBfYXNz ZXJ0X2hlbGQoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4+IC0KPj4gLQlpZiAobGlr ZWx5KGNlLT5waW5fY291bnQrKykpCj4+IC0JCWdvdG8gb3V0Owo+PiAtCUdFTV9CVUdfT04oIWNl LT5waW5fY291bnQpOyAvKiBubyBvdmVyZmxvdyBwbGVhc2UhICovCj4+ICsJaW50IGVycjsKPj4g ICAKPj4gICAJaWYgKCFjZS0+c3RhdGUgJiYgZW5naW5lLT5jb250ZXh0X3NpemUpIHsKPj4gICAJ CXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+PiAgIAo+PiAgIAkJdm1hID0gYWxsb2NfY29udGV4dF92 bWEoZW5naW5lKTsKPj4gICAJCWlmIChJU19FUlIodm1hKSkgewo+PiAtCQkJcmV0ID0gUFRSX0VS Uih2bWEpOwo+PiArCQkJZXJyID0gUFRSX0VSUih2bWEpOwo+PiAgIAkJCWdvdG8gZXJyOwo+PiAg IAkJfQo+PiAgIAo+PiBAQCAtMTMwMSw4ICsxMzE4LDggQEAgaW50ZWxfcmluZ19jb250ZXh0X3Bp bihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+ICAgCX0KPj4gICAKPj4gICAJaWYg KGNlLT5zdGF0ZSkgewo+PiAtCQlyZXQgPSBjb250ZXh0X3BpbihjZSk7Cj4+IC0JCWlmIChyZXQp Cj4+ICsJCWVyciA9IF9fY29udGV4dF9waW4oY2UpOwo+PiArCQlpZiAoZXJyKQo+PiAgIAkJCWdv dG8gZXJyOwo+PiAgIAo+PiAgIAkJY2UtPnN0YXRlLT5vYmotPnBpbl9nbG9iYWwrKzsKPj4gQEAg LTEzMTAsMzIgKzEzMjcsMzcgQEAgaW50ZWxfcmluZ19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUsCj4+ICAgCj4+ICAgCWk5MTVfZ2VtX2NvbnRleHRfZ2V0KGN0eCk7 Cj4+ICAgCj4+IC1vdXQ6Cj4+ICAgCS8qIE9uZSByaW5nYnVmZmVyIHRvIHJ1bGUgdGhlbSBhbGwg Ki8KPj4gLQlyZXR1cm4gZW5naW5lLT5idWZmZXI7Cj4+ICsJR0VNX0JVR19PTighZW5naW5lLT5i dWZmZXIpOwo+PiArCWNlLT5yaW5nID0gZW5naW5lLT5idWZmZXI7Cj4+ICsKPj4gKwlyZXR1cm4g Y2U7Cj4+ICAgCj4+ICAgZXJyOgo+PiAgIAljZS0+cGluX2NvdW50ID0gMDsKPj4gLQlyZXR1cm4g RVJSX1BUUihyZXQpOwo+PiArCXJldHVybiBFUlJfUFRSKGVycik7Cj4+ICAgfQo+PiAgIAo+PiAt c3RhdGljIHZvaWQgaW50ZWxfcmluZ19jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSwKPj4gLQkJCQkgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzIHJpbmdfY29udGV4dF9vcHMg PSB7Cj4+ICsJLnVucGluID0gaW50ZWxfcmluZ19jb250ZXh0X3VucGluLAo+PiArCS5kZXN0cm95 ID0gaW50ZWxfcmluZ19jb250ZXh0X2Rlc3Ryb3ksCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3Ry dWN0IGludGVsX2NvbnRleHQgKgo+PiAraW50ZWxfcmluZ19jb250ZXh0X3BpbihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+ICsJCSAgICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4KQo+PiAgIHsKPj4gICAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9faW50ZWxf Y29udGV4dChjdHgsIGVuZ2luZSk7Cj4+ICAgCj4+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmN0 eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4+IC0JR0VNX0JVR19PTihjZS0+cGluX2NvdW50 ID09IDApOwo+PiAgIAo+PiAtCWlmICgtLWNlLT5waW5fY291bnQpCj4+IC0JCXJldHVybjsKPj4g KwlpZiAobGlrZWx5KGNlLT5waW5fY291bnQrKykpCj4+ICsJCXJldHVybiBjZTsKPj4gKwlHRU1f QlVHX09OKCFjZS0+cGluX2NvdW50KTsgLyogbm8gb3ZlcmZsb3cgcGxlYXNlISAqLwo+PiAgIAo+ PiAtCWlmIChjZS0+c3RhdGUpIHsKPj4gLQkJY2UtPnN0YXRlLT5vYmotPnBpbl9nbG9iYWwtLTsK Pj4gLQkJaTkxNV92bWFfdW5waW4oY2UtPnN0YXRlKTsKPj4gLQl9Cj4+ICsJY2UtPm9wcyA9ICZy aW5nX2NvbnRleHRfb3BzOwo+PiAgIAo+PiAtCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Cj4+ ICsJcmV0dXJuIF9fcmluZ19jb250ZXh0X3BpbihlbmdpbmUsIGN0eCwgY2UpOwo+PiAgIH0KPj4g ICAKPj4gICBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+PiBAQCAtMTM0NiwxMCArMTM2OCw2IEBAIHN0YXRpYyBpbnQgaW50 ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICAg Cj4+ICAgCWludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oZW5naW5lKTsKPj4gICAKPj4gLQllcnIg PSBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oZW5naW5lKTsKPj4gLQlpZiAoZXJyKQo+PiAtCQln b3RvIGVycjsKPj4gLQo+PiAgIAl0aW1lbGluZSA9IGk5MTVfdGltZWxpbmVfY3JlYXRlKGVuZ2lu ZS0+aTkxNSwgZW5naW5lLT5uYW1lKTsKPj4gICAJaWYgKElTX0VSUih0aW1lbGluZSkpIHsKPj4g ICAJCWVyciA9IFBUUl9FUlIodGltZWxpbmUpOwo+PiBAQCAtMTM3MSw4ICsxMzg5LDE0IEBAIHN0 YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4+ICAgCUdFTV9CVUdfT04oZW5naW5lLT5idWZmZXIpOwo+PiAgIAllbmdpbmUtPmJ1 ZmZlciA9IHJpbmc7Cj4+ICAgCj4+ICsJZXJyID0gaW50ZWxfZW5naW5lX2luaXRfY29tbW9uKGVu Z2luZSk7Cj4+ICsJaWYgKGVycikKPj4gKwkJZ290byBlcnJfdW5waW47Cj4+ICsKPj4gICAJcmV0 dXJuIDA7Cj4+ICAgCj4+ICtlcnJfdW5waW46Cj4+ICsJaW50ZWxfcmluZ191bnBpbihyaW5nKTsK Pj4gICBlcnJfcmluZzoKPj4gICAJaW50ZWxfcmluZ19mcmVlKHJpbmcpOwo+PiAgIGVycjoKPj4g QEAgLTE0NTgsNyArMTQ4Miw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IG1pX3NldF9jb250ZXh0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgZmxhZ3MpCj4+ICAgCj4+ICAgCSpjcysrID0gTUlf Tk9PUDsKPj4gICAJKmNzKysgPSBNSV9TRVRfQ09OVEVYVDsKPj4gLQkqY3MrKyA9IGk5MTVfZ2d0 dF9vZmZzZXQodG9faW50ZWxfY29udGV4dChycS0+Z2VtX2NvbnRleHQsIGVuZ2luZSktPnN0YXRl KSB8IGZsYWdzOwo+PiArCSpjcysrID0gaTkxNV9nZ3R0X29mZnNldChycS0+aHdfY29udGV4dC0+ c3RhdGUpIHwgZmxhZ3M7Cj4+ICAgCS8qCj4+ICAgCSAqIHcvYTogTUlfU0VUX0NPTlRFWFQgbXVz dCBhbHdheXMgYmUgZm9sbG93ZWQgYnkgTUlfTk9PUAo+PiAgIAkgKiBXYU1pU2V0Q29udGV4dF9I YW5nOnNuYixpdmIsdmx2Cj4+IEBAIC0xNTQ5LDcgKzE1NzMsNyBAQCBzdGF0aWMgaW50IHN3aXRj aF9jb250ZXh0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+PiAgIAkJaHdfZmxhZ3MgPSBNSV9G T1JDRV9SRVNUT1JFOwo+PiAgIAl9Cj4+ICAgCj4+IC0JaWYgKHRvX2ludGVsX2NvbnRleHQodG9f Y3R4LCBlbmdpbmUpLT5zdGF0ZSAmJgo+PiArCWlmIChycS0+aHdfY29udGV4dC0+c3RhdGUgJiYK Pj4gICAJICAgICh0b19jdHggIT0gZnJvbV9jdHggfHwgaHdfZmxhZ3MgJiBNSV9GT1JDRV9SRVNU T1JFKSkgewo+PiAgIAkJR0VNX0JVR19PTihlbmdpbmUtPmlkICE9IFJDUyk7Cj4+ICAgCj4+IEBA IC0xNTk3LDcgKzE2MjEsNyBAQCBzdGF0aWMgaW50IHJpbmdfcmVxdWVzdF9hbGxvYyhzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+PiAgIHsKPj4gICAJaW50IHJldDsKPj4gICAKPj4gLQlH RU1fQlVHX09OKCF0b19pbnRlbF9jb250ZXh0KHJlcXVlc3QtPmdlbV9jb250ZXh0LCByZXF1ZXN0 LT5lbmdpbmUpLT5waW5fY291bnQpOwo+PiArCUdFTV9CVUdfT04oIXJlcXVlc3QtPmh3X2NvbnRl eHQtPnBpbl9jb3VudCk7Cj4+ICAgCj4+ICAgCS8qIEZsdXNoIGVub3VnaCBzcGFjZSB0byByZWR1 Y2UgdGhlIGxpa2VsaWhvb2Qgb2Ygd2FpdGluZyBhZnRlcgo+PiAgIAkgKiB3ZSBzdGFydCBidWls ZGluZyB0aGUgcmVxdWVzdCAtIGluIHdoaWNoIGNhc2Ugd2Ugd2lsbCBqdXN0Cj4+IEBAIC0yMDI4 LDggKzIwNTIsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPj4gICAJZW5naW5lLT5yZXNldC5maW5pc2gg PSByZXNldF9maW5pc2g7Cj4+ICAgCj4+ICAgCWVuZ2luZS0+Y29udGV4dF9waW4gPSBpbnRlbF9y aW5nX2NvbnRleHRfcGluOwo+PiAtCWVuZ2luZS0+Y29udGV4dF91bnBpbiA9IGludGVsX3Jpbmdf Y29udGV4dF91bnBpbjsKPj4gLQo+PiAgIAllbmdpbmUtPnJlcXVlc3RfYWxsb2MgPSByaW5nX3Jl cXVlc3RfYWxsb2M7Cj4+ICAgCj4+ICAgCWVuZ2luZS0+ZW1pdF9icmVhZGNydW1iID0gaTl4eF9l bWl0X2JyZWFkY3J1bWI7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK Pj4gaW5kZXggMmIxNjE4NWUzNmM0Li4yMGM0ZTEzZWZjMGQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPj4gQEAgLTQzNiwxMCArNDM2LDkgQEAgc3RydWN0 IGludGVsX2VuZ2luZV9jcyB7Cj4+ICAgCj4+ICAgCXZvaWQJCSgqc2V0X2RlZmF1bHRfc3VibWlz c2lvbikoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPj4gICAKPj4gLQlzdHJ1Y3Qg aW50ZWxfcmluZyAqKCpjb250ZXh0X3Bpbikoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAo+PiAtCQkJCQkgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpOwo+PiAtCXZvaWQJCSgq Y29udGV4dF91bnBpbikoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+PiAtCQkJCQkg c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCk7Cj4+ICsJc3RydWN0IGludGVsX2NvbnRleHQg KigqY29udGV4dF9waW4pKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4gKwkJCQkJ ICAgICBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KTsKPj4gKwo+PiAgIAlpbnQJCSgqcmVx dWVzdF9hbGxvYykoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwo+PiAgIAlpbnQJCSgqaW5pdF9j b250ZXh0KShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7Cj4+ICAgCj4+IEBAIC01NTUsNyArNTU0 LDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4+ICAgCSAqIHRvIHRoZSBrZXJuZWwgY29u dGV4dCBhbmQgdHJhc2ggaXQgYXMgdGhlIHNhdmUgbWF5IG5vdCBoYXBwZW4KPj4gICAJICogYmVm b3JlIHRoZSBoYXJkd2FyZSBpcyBwb3dlcmVkIGRvd24uCj4+ICAgCSAqLwo+PiAtCXN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpsYXN0X3JldGlyZWRfY29udGV4dDsKPj4gKwlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqbGFzdF9yZXRpcmVkX2NvbnRleHQ7Cj4+ICAgCj4+ICAgCS8qIFdlIHRyYWNrIHRo ZSBjdXJyZW50IE1JX1NFVF9DT05URVhUIGluIG9yZGVyIHRvIGVsaW1pbmF0ZQo+PiAgIAkgKiBy ZWR1ZGFudCBjb250ZXh0IHN3aXRjaGVzLiBUaGlzIHByZXN1bWVzIHRoYXQgcmVxdWVzdHMgYXJl IG5vdAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tf Y29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5j Cj4+IGluZGV4IDUwMWJlY2M0N2MwYy4uODkwNGYxY2U2NGUzIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jCj4+IEBAIC0zMCw2ICszMCw3 IEBAIG1vY2tfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPj4gICAJICAg ICBjb25zdCBjaGFyICpuYW1lKQo+PiAgIHsKPj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eDsKPj4gKwl1bnNpZ25lZCBpbnQgbjsKPj4gICAJaW50IHJldDsKPj4gICAKPj4gICAJY3R4 ID0ga3phbGxvYyhzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOwo+PiBAQCAtNDMsNiArNDQsMTIg QEAgbW9ja19jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+PiAgIAlJTklU X1JBRElYX1RSRUUoJmN0eC0+aGFuZGxlc192bWEsIEdGUF9LRVJORUwpOwo+PiAgIAlJTklUX0xJ U1RfSEVBRCgmY3R4LT5oYW5kbGVzX2xpc3QpOwo+PiAgIAo+PiArCWZvciAobiA9IDA7IG4gPCBB UlJBWV9TSVpFKGN0eC0+X19lbmdpbmUpOyBuKyspIHsKPj4gKwkJc3RydWN0IGludGVsX2NvbnRl eHQgKmNlID0gJmN0eC0+X19lbmdpbmVbbl07Cj4+ICsKPj4gKwkJY2UtPmdlbV9jb250ZXh0ID0g Y3R4Owo+PiArCX0KPj4gKwo+PiAgIAlyZXQgPSBpZGFfc2ltcGxlX2dldCgmaTkxNS0+Y29udGV4 dHMuaHdfaWRhLAo+PiAgIAkJCSAgICAgMCwgTUFYX0NPTlRFWFRfSFdfSUQsIEdGUF9LRVJORUwp Owo+PiAgIAlpZiAocmV0IDwgMCkKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L21vY2tfZW5naW5lLmMKPj4gaW5kZXggMjZiZjI5ZDk3MDA3Li4zM2VkZGZjMWY4Y2UgMTAwNjQ0 Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCj4+IEBA IC03MiwyNSArNzIsMzcgQEAgc3RhdGljIHZvaWQgaHdfZGVsYXlfY29tcGxldGUoc3RydWN0IHRp bWVyX2xpc3QgKnQpCj4+ICAgCXNwaW5fdW5sb2NrKCZlbmdpbmUtPmh3X2xvY2spOwo+PiAgIH0K Pj4gICAKPj4gLXN0YXRpYyBzdHJ1Y3QgaW50ZWxfcmluZyAqCj4+IC1tb2NrX2NvbnRleHRfcGlu KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPj4gLQkJIHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgpCj4+ICtzdGF0aWMgdm9pZCBtb2NrX2NvbnRleHRfdW5waW4oc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlKQo+PiAgIHsKPj4gLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSB0 b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsKPj4gKwlpZiAoLS1jZS0+cGluX2NvdW50KQo+ PiArCQlyZXR1cm47Cj4+ICAgCj4+IC0JaWYgKCFjZS0+cGluX2NvdW50KyspCj4+IC0JCWk5MTVf Z2VtX2NvbnRleHRfZ2V0KGN0eCk7Cj4+ICsJaTkxNV9nZW1fY29udGV4dF9wdXQoY2UtPmdlbV9j b250ZXh0KTsKPj4gK30KPj4gICAKPj4gLQlyZXR1cm4gZW5naW5lLT5idWZmZXI7Cj4+ICtzdGF0 aWMgdm9pZCBtb2NrX2NvbnRleHRfZGVzdHJveShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4+ ICt7Cj4+ICsJR0VNX0JVR19PTihjZS0+cGluX2NvdW50KTsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0 aWMgdm9pZCBtb2NrX2NvbnRleHRfdW5waW4oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAo+PiAtCQkJICAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGludGVsX2NvbnRleHRfb3BzIG1vY2tfY29udGV4dF9vcHMgPSB7Cj4+ICsJ LnVucGluID0gbW9ja19jb250ZXh0X3VucGluLAo+PiArCS5kZXN0cm95ID0gbW9ja19jb250ZXh0 X2Rlc3Ryb3ksCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IGludGVsX2NvbnRleHQgKgo+ PiArbW9ja19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4+ICsJ CSBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+PiAgIHsKPj4gICAJc3RydWN0IGludGVs X2NvbnRleHQgKmNlID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7Cj4+ICAgCj4+IC0J aWYgKCEtLWNlLT5waW5fY291bnQpCj4+IC0JCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Cj4+ ICsJaWYgKCFjZS0+cGluX2NvdW50KyspIHsKPj4gKwkJaTkxNV9nZW1fY29udGV4dF9nZXQoY3R4 KTsKPj4gKwkJY2UtPnJpbmcgPSBlbmdpbmUtPmJ1ZmZlcjsKPj4gKwkJY2UtPm9wcyA9ICZtb2Nr X2NvbnRleHRfb3BzOwo+PiArCX0KPj4gKwo+PiArCXJldHVybiBjZTsKPj4gICB9Cj4+ICAgCj4+ ICAgc3RhdGljIGludCBtb2NrX3JlcXVlc3RfYWxsb2Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVx dWVzdCkKPj4gQEAgLTE4NSw3ICsxOTcsNiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICptb2Nr X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPj4gICAJZW5naW5lLT5iYXNl LnN0YXR1c19wYWdlLnBhZ2VfYWRkciA9ICh2b2lkICopKGVuZ2luZSArIDEpOwo+PiAgIAo+PiAg IAllbmdpbmUtPmJhc2UuY29udGV4dF9waW4gPSBtb2NrX2NvbnRleHRfcGluOwo+PiAtCWVuZ2lu ZS0+YmFzZS5jb250ZXh0X3VucGluID0gbW9ja19jb250ZXh0X3VucGluOwo+PiAgIAllbmdpbmUt PmJhc2UucmVxdWVzdF9hbGxvYyA9IG1vY2tfcmVxdWVzdF9hbGxvYzsKPj4gICAJZW5naW5lLT5i YXNlLmVtaXRfZmx1c2ggPSBtb2NrX2VtaXRfZmx1c2g7Cj4+ICAgCWVuZ2luZS0+YmFzZS5lbWl0 X2JyZWFkY3J1bWIgPSBtb2NrX2VtaXRfYnJlYWRjcnVtYjsKPj4gQEAgLTIzOCwxMSArMjQ5LDEz IEBAIHZvaWQgbW9ja19lbmdpbmVfZnJlZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4+ICAgewo+PiAgIAlzdHJ1Y3QgbW9ja19lbmdpbmUgKm1vY2sgPQo+PiAgIAkJY29udGFpbmVy X29mKGVuZ2luZSwgdHlwZW9mKCptb2NrKSwgYmFzZSk7Cj4+ICsJc3RydWN0IGludGVsX2NvbnRl eHQgKmNlOwo+PiAgIAo+PiAgIAlHRU1fQlVHX09OKHRpbWVyX3BlbmRpbmcoJm1vY2stPmh3X2Rl bGF5KSk7Cj4+ICAgCj4+IC0JaWYgKGVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQpCj4+IC0J CWludGVsX2NvbnRleHRfdW5waW4oZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCwgZW5naW5l KTsKPj4gKwljZSA9IGZldGNoX2FuZF96ZXJvKCZlbmdpbmUtPmxhc3RfcmV0aXJlZF9jb250ZXh0 KTsKPj4gKwlpZiAoY2UpCj4+ICsJCWludGVsX2NvbnRleHRfdW5waW4oY2UpOwo+PiAgIAo+PiAg IAltb2NrX3JpbmdfZnJlZShlbmdpbmUtPmJ1ZmZlcik7Cj4+ICAgCj4+IC0tIAo+PiAyLjE3LjAK Pj4KPiAKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==