From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 07/27] drm/i915: Coordinate i915_active with its own mutex Date: Fri, 27 Sep 2019 12:10:29 +0100 Message-ID: References: <20190925100137.17956-1-chris@chris-wilson.co.uk> <20190925100137.17956-8-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 D1D156EE5C for ; Fri, 27 Sep 2019 11:10:40 +0000 (UTC) In-Reply-To: <20190925100137.17956-8-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI1LzA5LzIwMTkgMTE6MDEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBGb3JnbyB0aGUgc3Ry dWN0X211dGV4IHNlcmlhbGlzYXRpb24gZm9yIGk5MTVfYWN0aXZlLCBhbmQgaW50ZXJwb3NlIGl0 cwo+IG93biBtdXRleCBoYW5kbGluZyBmb3IgYWN0aXZlL3JldGlyZS4KPiAKPiBUaGlzIGlzIGEg bXVsdGktbGF5ZXJlZCBzbGVpZ2h0LW9mLWhhbmQuIEZpcnN0LCB3ZSBoYWQgdG8gZW5zdXJlIHRo YXQgbm8KPiBhY3RpdmUvcmV0aXJlIGNhbGxiYWNrcyBhY2NpZGVudGFsbHkgaW52ZXJ0ZWQgdGhl IG11dGV4IG9yZGVyaW5nIHJ1bGVzLAo+IG5vciBhc3N1bWVkIHRoYXQgdGhleSB3ZXJlIHRoZW1z ZWx2ZXMgc2VyaWFsaXNlZCBieSBzdHJ1Y3RfbXV0ZXguIE1vcmUKPiBjaGFsbGVuZ2luZyB0aG91 Z2gsIGlzIHRoZSBydWxlIG92ZXIgdXBkYXRpbmcgZWxlbWVudHMgb2YgdGhlIGFjdGl2ZQo+IHJi dHJlZS4gSW5zdGVhZCBvZiB0aGUgd2hvbGUgaTkxNV9hY3RpdmUgbm93IGJlaW5nIHNlcmlhbGlz ZWQgYnkKPiBzdHJ1Y3RfbXV0ZXgsIGFsbG9jYXRpb25zL3JvdGF0aW9ucyBvZiB0aGUgdHJlZSBh cmUgc2VyaWFsaXNlZCBieSB0aGUKPiBpOTE1X2FjdGl2ZS5tdXRleCBhbmQgaW5kaXZpZHVhbCBu b2RlcyBhcmUgc2VyaWFsaXNlZCBieSB0aGUgY2FsbGVyCj4gdXNpbmcgdGhlIGk5MTVfdGltZWxp bmUubXV0ZXggKHdlIG5lZWQgdG8gdXNlIG5lc3RlZCBzcGlubG9ja3MgdG8KPiBpbnRlcmFjdCB3 aXRoIHRoZSBkbWFfZmVuY2UgY2FsbGJhY2sgbGlzdHMpLgo+IAo+IFRoZSBwYWluIHBvaW50IGhl cmUgaXMgdGhhdCBpbnN0ZWFkIG9mIGEgc2luZ2xlIG11dGV4IGFyb3VuZCBleGVjYnVmLCB3ZQo+ IG5vdyBoYXZlIHRvIHRha2UgYSBtdXRleCBmb3IgYWN0aXZlIHRyYWNrZXIgKG9uZSBmb3IgZWFj aCB2bWEsIGNvbnRleHQsCj4gZXRjKSBhbmQgYSBjb3VwbGUgb2Ygc3BpbmxvY2tzIGZvciBlYWNo IGZlbmNlIHVwZGF0ZS4gVGhlIGltcHJvdmVtZW50IGluCj4gZmluZSBncmFpbmVkIGxvY2tpbmcg YWxsb3dpbmcgZm9yIG11bHRpcGxlIGNvbmN1cnJlbnQgY2xpZW50cwo+IChldmVudHVhbGx5ISkg c2hvdWxkIGJlIHdvcnRoIGl0IGluIHR5cGljYWwgbG9hZHMuCj4gCj4gU2lnbmVkLW9mZi1ieTog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICAuLi4vZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZnJvbnRidWZmZXIuYyAgfCAgIDIgKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jICB8ICAgMyArLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYyAgIHwgICA0ICstCj4gICAu Li4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3RfdHlwZXMuaCAgfCAgIDEgKwo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMgICAgICAgIHwgICA5ICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9jb250ZXh0LmMgICAgICAgfCAgIDQgKy0K PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wb29sLmMgICB8ICAgMiAr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYyAgICAgICAgIHwgIDEw ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jICAgICAgfCAg IDcgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmVfdHlwZXMuaCAgICB8 ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfY29udGV4dC5jICAg IHwgIDE2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyAgICAg ICAgfCAgMTAgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RzL21vY2tfdGltZWxp bmUuYyB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jICAg ICAgICAgIHwgICAzIC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMgICAg ICAgICAgICB8IDI4OSArKysrKysrLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2FjdGl2ZS5oICAgICAgICAgICAgfCAzMTkgKysrKy0tLS0tLS0tLS0tLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZV90eXBlcy5oICAgICAgfCAgMjMgKy0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICAgICB8ICA0MiArKy0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICAgICB8ICAgMyArLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgICAgIHwgICA0ICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAgfCAgMzgg Ky0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCAgICAgICAgICAgfCAg IDEgLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyAgICAgICAgICAgICAgIHwg ICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9hY3RpdmUuYyAg fCAgMzIgKy0KPiAgIDI0IGZpbGVzIGNoYW5nZWQsIDI2NCBpbnNlcnRpb25zKCspLCA1NjYgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZnJvbnRidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZnJvbnRidWZmZXIuYwo+IGluZGV4IDY0MjhiOGRkNzBkMy4uODRiMTY0ZjMxODk1IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZnJvbnRidWZmZXIuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZnJvbnRidWZmZXIuYwo+ IEBAIC0yNTcsNyArMjU3LDcgQEAgaW50ZWxfZnJvbnRidWZmZXJfZ2V0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCj4gICAJZnJvbnQtPm9iaiA9IG9iajsKPiAgIAlrcmVmX2luaXQo JmZyb250LT5yZWYpOwo+ICAgCWF0b21pY19zZXQoJmZyb250LT5iaXRzLCAwKTsKPiAtCWk5MTVf YWN0aXZlX2luaXQoaTkxNSwgJmZyb250LT53cml0ZSwKPiArCWk5MTVfYWN0aXZlX2luaXQoJmZy b250LT53cml0ZSwKPiAgIAkJCSBmcm9udGJ1ZmZlcl9hY3RpdmUsCj4gICAJCQkgaTkxNV9hY3Rp dmVfbWF5X3NsZWVwKGZyb250YnVmZmVyX3JldGlyZSkpOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9vdmVybGF5LmMKPiBpbmRleCAzZjRhYzFlZTc2NjguLmUx MmUxYTc1M2FmMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf b3ZlcmxheS5jCj4gQEAgLTEzNjAsOCArMTM2MCw3IEBAIHZvaWQgaW50ZWxfb3ZlcmxheV9zZXR1 cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJb3ZlcmxheS0+Y29udHJh c3QgPSA3NTsKPiAgIAlvdmVybGF5LT5zYXR1cmF0aW9uID0gMTQ2Owo+ICAgCj4gLQlpOTE1X2Fj dGl2ZV9pbml0KGRldl9wcml2LAo+IC0JCQkgJm92ZXJsYXktPmxhc3RfZmxpcCwKPiArCWk5MTVf YWN0aXZlX2luaXQoJm92ZXJsYXktPmxhc3RfZmxpcCwKPiAgIAkJCSBOVUxMLCBpbnRlbF9vdmVy bGF5X2xhc3RfZmxpcF9yZXRpcmUpOwo+ICAgCj4gICAJcmV0ID0gZ2V0X3JlZ2lzdGVycyhvdmVy bGF5LCBPVkVSTEFZX05FRURTX1BIWVNJQ0FMKGRldl9wcml2KSk7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggNGNkN2QyZWNmMWQ1Li45ZDg1 YWFiNjhkMzQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250 ZXh0LmMKPiBAQCAtODY4LDIwICs4NjgsMTggQEAgc3RhdGljIGludCBjb250ZXh0X2JhcnJpZXJf dGFzayhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAgCQkJCXZvaWQgKCp0YXNrKSh2 b2lkICpkYXRhKSwKPiAgIAkJCQl2b2lkICpkYXRhKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5MTU7Cj4gICAJc3RydWN0IGNvbnRleHRfYmFycmllcl90 YXNrICpjYjsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fZW5naW5lc19pdGVyIGl0Owo+ICAgCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZTsKPiAgIAlpbnQgZXJyID0gMDsKPiAgIAo+IC0JbG9ja2RlcF9h c3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJR0VNX0JVR19PTighdGFz ayk7Cj4gICAKPiAgIAljYiA9IGttYWxsb2Moc2l6ZW9mKCpjYiksIEdGUF9LRVJORUwpOwo+ICAg CWlmICghY2IpCj4gICAJCXJldHVybiAtRU5PTUVNOwo+ICAgCj4gLQlpOTE1X2FjdGl2ZV9pbml0 KGk5MTUsICZjYi0+YmFzZSwgTlVMTCwgY2JfcmV0aXJlKTsKPiArCWk5MTVfYWN0aXZlX2luaXQo JmNiLT5iYXNlLCBOVUxMLCBjYl9yZXRpcmUpOwo+ICAgCWVyciA9IGk5MTVfYWN0aXZlX2FjcXVp cmUoJmNiLT5iYXNlKTsKPiAgIAlpZiAoZXJyKSB7Cj4gICAJCWtmcmVlKGNiKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gaW5kZXgg ZDY5NWYxODdiNzkwLi5lMjkxZGRmZWI3ZGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL2k5MTVfZ2VtX29iamVjdF90eXBlcy5oCj4gQEAgLTgsNiArOCw3IEBACj4gICAj ZGVmaW5lIF9fSTkxNV9HRU1fT0JKRUNUX1RZUEVTX0hfXwo+ICAgCj4gICAjaW5jbHVkZSA8ZHJt L2RybV9nZW0uaD4KPiArI2luY2x1ZGUgPHVhcGkvZHJtL2k5MTVfZHJtLmg+Cj4gICAKPiAgICNp bmNsdWRlICJpOTE1X2FjdGl2ZS5oIgo+ICAgI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fcG0uYwo+IGluZGV4IGExMWFkNGQ5MTRjYS4u M2E0N2UxMTkwY2UxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1 X2dlbV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BtLmMK PiBAQCAtMTYsMTQgKzE2LDExIEBAIHN0YXRpYyB2b2lkIGNhbGxfaWRsZV9iYXJyaWVycyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJc3RydWN0IGxsaXN0X25vZGUgKm5vZGUs ICpuZXh0Owo+ICAgCj4gICAJbGxpc3RfZm9yX2VhY2hfc2FmZShub2RlLCBuZXh0LCBsbGlzdF9k ZWxfYWxsKCZlbmdpbmUtPmJhcnJpZXJfdGFza3MpKSB7Cj4gLQkJc3RydWN0IGk5MTVfYWN0aXZl X3JlcXVlc3QgKmFjdGl2ZSA9Cj4gKwkJc3RydWN0IGRtYV9mZW5jZV9jYiAqY2IgPQo+ICAgCQkJ Y29udGFpbmVyX29mKChzdHJ1Y3QgbGlzdF9oZWFkICopbm9kZSwKPiAtCQkJCSAgICAgdHlwZW9m KCphY3RpdmUpLCBsaW5rKTsKPiArCQkJCSAgICAgdHlwZW9mKCpjYiksIG5vZGUpOwo+ICAgCj4g LQkJSU5JVF9MSVNUX0hFQUQoJmFjdGl2ZS0+bGluayk7Cj4gLQkJUkNVX0lOSVRfUE9JTlRFUihh Y3RpdmUtPnJlcXVlc3QsIE5VTEwpOwo+IC0KPiAtCQlhY3RpdmUtPnJldGlyZShhY3RpdmUsIE5V TEwpOwo+ICsJCWNiLT5mdW5jKE5VTEwsIGNiKTsKPiAgIAl9Cj4gICB9Cj4gICAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jCj4gaW5kZXggMDZmYWJkZjIwNWNmLi4zNWE0 MGMyODIwYTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29u dGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jCj4g QEAgLTI0MCw3ICsyNDAsNyBAQCBpbnRlbF9jb250ZXh0X2luaXQoc3RydWN0IGludGVsX2NvbnRl eHQgKmNlLAo+ICAgCj4gICAJbXV0ZXhfaW5pdCgmY2UtPnBpbl9tdXRleCk7Cj4gICAKPiAtCWk5 MTVfYWN0aXZlX2luaXQoY3R4LT5pOTE1LCAmY2UtPmFjdGl2ZSwKPiArCWk5MTVfYWN0aXZlX2lu aXQoJmNlLT5hY3RpdmUsCj4gICAJCQkgX19pbnRlbF9jb250ZXh0X2FjdGl2ZSwgX19pbnRlbF9j b250ZXh0X3JldGlyZSk7Cj4gICB9Cj4gICAKPiBAQCAtMzA3LDcgKzMwNyw3IEBAIGludCBpbnRl bF9jb250ZXh0X3ByZXBhcmVfcmVtb3RlX3JlcXVlc3Qoc3RydWN0IGludGVsX2NvbnRleHQgKmNl LAo+ICAgCQkJcmV0dXJuIGVycjsKPiAgIAo+ICAgCQkvKiBRdWV1ZSB0aGlzIHN3aXRjaCBhZnRl ciBjdXJyZW50IGFjdGl2aXR5IGJ5IHRoaXMgY29udGV4dC4gKi8KPiAtCQllcnIgPSBpOTE1X2Fj dGl2ZV9yZXF1ZXN0X3NldCgmdGwtPmxhc3RfcmVxdWVzdCwgcnEpOwo+ICsJCWVyciA9IGk5MTVf YWN0aXZlX2ZlbmNlX3NldCgmdGwtPmxhc3RfcmVxdWVzdCwgcnEpOwo+ICAgCQltdXRleF91bmxv Y2soJnRsLT5tdXRleCk7Cj4gICAJCWlmIChlcnIpCj4gICAJCQlyZXR1cm4gZXJyOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfcG9vbC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3Bvb2wuYwo+IGluZGV4IDgxZmFiMTAx ZmRiNC4uM2NkYmQ1ZjhiNWJlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9wb29sLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfcG9vbC5jCj4gQEAgLTk1LDcgKzk1LDcgQEAgbm9kZV9jcmVhdGUoc3RydWN0IGlu dGVsX2VuZ2luZV9wb29sICpwb29sLCBzaXplX3Qgc3opCj4gICAJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwo+ICAgCj4gICAJbm9kZS0+cG9vbCA9IHBvb2w7Cj4gLQlpOTE1X2FjdGl2ZV9pbml0 KGVuZ2luZS0+aTkxNSwgJm5vZGUtPmFjdGl2ZSwgcG9vbF9hY3RpdmUsIHBvb2xfcmV0aXJlKTsK PiArCWk5MTVfYWN0aXZlX2luaXQoJm5vZGUtPmFjdGl2ZSwgcG9vbF9hY3RpdmUsIHBvb2xfcmV0 aXJlKTsKPiAgIAo+ICAgCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoZW5n aW5lLT5pOTE1LCBzeik7Cj4gICAJaWYgKElTX0VSUihvYmopKSB7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9yZXNldC5jCj4gaW5kZXggYWU2OGMzNzg2ZjYzLi5lOGM4ZDAwNDFlOGYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMKPiBAQCAtODI4LDEwICs4Mjgs MTAgQEAgc3RhdGljIGJvb2wgX19pbnRlbF9ndF91bnNldF93ZWRnZWQoc3RydWN0IGludGVsX2d0 ICpndCkKPiAgIAkgKi8KPiAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmdGltZWxpbmVzLT5sb2NrLCBm bGFncyk7Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bCwgJnRpbWVsaW5lcy0+YWN0aXZlX2xp c3QsIGxpbmspIHsKPiAtCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiArCQlzdHJ1Y3QgZG1h X2ZlbmNlICpmZW5jZTsKPiAgIAo+IC0JCXJxID0gaTkxNV9hY3RpdmVfcmVxdWVzdF9nZXRfdW5s b2NrZWQoJnRsLT5sYXN0X3JlcXVlc3QpOwo+IC0JCWlmICghcnEpCj4gKwkJZmVuY2UgPSBpOTE1 X2FjdGl2ZV9mZW5jZV9nZXQoJnRsLT5sYXN0X3JlcXVlc3QpOwo+ICsJCWlmICghZmVuY2UpCj4g ICAJCQljb250aW51ZTsKPiAgIAo+ICAgCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ0aW1lbGlu ZXMtPmxvY2ssIGZsYWdzKTsKPiBAQCAtODQzLDggKzg0Myw4IEBAIHN0YXRpYyBib29sIF9faW50 ZWxfZ3RfdW5zZXRfd2VkZ2VkKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gICAJCSAqIChJOTE1X0ZF TkNFX1RJTUVPVVQpIHNvIHRoaXMgd2FpdCBzaG91bGQgbm90IGJlIHVuYm91bmRlZAo+ICAgCQkg KiBpbiB0aGUgd29yc3QgY2FzZS4KPiAgIAkJICovCj4gLQkJZG1hX2ZlbmNlX2RlZmF1bHRfd2Fp dCgmcnEtPmZlbmNlLCBmYWxzZSwgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+IC0JCWk5MTVfcmVx dWVzdF9wdXQocnEpOwo+ICsJCWRtYV9mZW5jZV9kZWZhdWx0X3dhaXQoZmVuY2UsIGZhbHNlLCBN QVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gKwkJZG1hX2ZlbmNlX3B1dChmZW5jZSk7Cj4gICAKPiAg IAkJLyogUmVzdGFydCBpdGVyYXRpb24gYWZ0ZXIgZHJvcGluZyBsb2NrICovCj4gICAJCXNwaW5f bG9ja19pcnFzYXZlKCZ0aW1lbGluZXMtPmxvY2ssIGZsYWdzKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX3RpbWVsaW5lLmMKPiBpbmRleCA2NTNmNjBlNzgzOTIuLjBmOTU5Njk0MzAz YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmUuYwo+IEBAIC0x NzgsOCArMTc4LDcgQEAgY2FjaGVsaW5lX2FsbG9jKHN0cnVjdCBpbnRlbF90aW1lbGluZV9od3Nw ICpod3NwLCB1bnNpZ25lZCBpbnQgY2FjaGVsaW5lKQo+ICAgCWNsLT5od3NwID0gaHdzcDsKPiAg IAljbC0+dmFkZHIgPSBwYWdlX3BhY2tfYml0cyh2YWRkciwgY2FjaGVsaW5lKTsKPiAgIAo+IC0J aTkxNV9hY3RpdmVfaW5pdChod3NwLT5ndC0+aTkxNSwgJmNsLT5hY3RpdmUsCj4gLQkJCSBfX2Nh Y2hlbGluZV9hY3RpdmUsIF9fY2FjaGVsaW5lX3JldGlyZSk7Cj4gKwlpOTE1X2FjdGl2ZV9pbml0 KCZjbC0+YWN0aXZlLCBfX2NhY2hlbGluZV9hY3RpdmUsIF9fY2FjaGVsaW5lX3JldGlyZSk7Cj4g ICAKPiAgIAlyZXR1cm4gY2w7Cj4gICB9Cj4gQEAgLTI1NSw3ICsyNTQsNyBAQCBpbnQgaW50ZWxf dGltZWxpbmVfaW5pdChzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lLAo+ICAgCj4gICAJ bXV0ZXhfaW5pdCgmdGltZWxpbmUtPm11dGV4KTsKPiAgIAo+IC0JSU5JVF9BQ1RJVkVfUkVRVUVT VCgmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwgJnRpbWVsaW5lLT5tdXRleCk7Cj4gKwlJTklUX0FD VElWRV9GRU5DRSgmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwgJnRpbWVsaW5lLT5tdXRleCk7Cj4g ICAJSU5JVF9MSVNUX0hFQUQoJnRpbWVsaW5lLT5yZXF1ZXN0cyk7Cj4gICAKPiAgIAlpOTE1X3N5 bmNtYXBfaW5pdCgmdGltZWxpbmUtPnN5bmMpOwo+IEBAIC00NDMsNyArNDQyLDcgQEAgX19pbnRl bF90aW1lbGluZV9nZXRfc2Vxbm8oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwKPiAgIAkgKiBm cmVlIGl0IGFmdGVyIHRoZSBjdXJyZW50IHJlcXVlc3QgaXMgcmV0aXJlZCwgd2hpY2ggZW5zdXJl cyB0aGF0Cj4gICAJICogYWxsIHdyaXRlcyBpbnRvIHRoZSBjYWNoZWxpbmUgZnJvbSBwcmV2aW91 cyByZXF1ZXN0cyBhcmUgY29tcGxldGUuCj4gICAJICovCj4gLQllcnIgPSBpOTE1X2FjdGl2ZV9y ZWYoJnRsLT5od3NwX2NhY2hlbGluZS0+YWN0aXZlLCB0bCwgcnEpOwo+ICsJZXJyID0gaTkxNV9h Y3RpdmVfcmVmKCZ0bC0+aHdzcF9jYWNoZWxpbmUtPmFjdGl2ZSwgdGwsICZycS0+ZmVuY2UpOwo+ ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gZXJyX2NhY2hlbGluZTsKPiAgIAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZV90eXBlcy5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmVfdHlwZXMuaAo+IGluZGV4IGM2NjhjNGM1 MGU3NS4uN2ZhZjgxZjk0MzU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX3RpbWVsaW5lX3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF90aW1lbGluZV90eXBlcy5oCj4gQEAgLTYzLDcgKzYzLDcgQEAgc3RydWN0IGludGVsX3Rp bWVsaW5lIHsKPiAgIAkgKiB0aGUgcmVxdWVzdCB1c2luZyBpOTE1X2FjdGl2ZV9yZXF1ZXN0X2dl dF9yZXF1ZXN0X3JjdSgpLCBvciBob2xkIAoKVGhpcyB3YXMgcHJvYmFibHkgcmVmZXJyaW5nIHRv IF9faTkxNV9hY3RpdmVfcmVxdWVzdF9nZXRfcmN1IHdoaWNoIHRoaXMgCnBhdGNoIHJlbW92ZXMg aW4gd2hpY2ggY2FzZSB0aGUgY29tbWVudCBzaG91bGQgYmUgdXBkYXRlZC4KCnRoZQo+ICAgCSAq IHN0cnVjdF9tdXRleC4KPiAgIAkgKi8KPiAtCXN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0IGxh c3RfcmVxdWVzdDsKPiArCXN0cnVjdCBpOTE1X2FjdGl2ZV9mZW5jZSBsYXN0X3JlcXVlc3Q7Cj4g ICAKPiAgIAkvKioKPiAgIAkgKiBXZSB0cmFjayB0aGUgbW9zdCByZWNlbnQgc2Vxbm8gdGhhdCB3 ZSB3YWl0IG9uIGluIGV2ZXJ5IGNvbnRleHQgc28KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv c2VsZnRlc3RfY29udGV4dC5jCj4gaW5kZXggNGNlMWUyNTQzM2QyLi5lNmJjYmU3YWI1ZTEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfY29udGV4dC5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfY29udGV4dC5jCj4gQEAgLTQ3 LDI0ICs0NywyMCBAQCBzdGF0aWMgaW50IGNvbnRleHRfc3luYyhzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY2UpCj4gICAKPiAgIAltdXRleF9sb2NrKCZ0bC0+bXV0ZXgpOwo+ICAgCWRvIHsKPiAtCQlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiArCQlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiAg IAkJbG9uZyB0aW1lb3V0Owo+ICAgCj4gLQkJcmN1X3JlYWRfbG9jaygpOwo+IC0JCXJxID0gcmN1 X2RlcmVmZXJlbmNlKHRsLT5sYXN0X3JlcXVlc3QucmVxdWVzdCk7Cj4gLQkJaWYgKHJxKQo+IC0J CQlycSA9IGk5MTVfcmVxdWVzdF9nZXRfcmN1KHJxKTsKPiAtCQlyY3VfcmVhZF91bmxvY2soKTsK PiAtCQlpZiAoIXJxKQo+ICsJCWZlbmNlID0gaTkxNV9hY3RpdmVfZmVuY2VfZ2V0KCZ0bC0+bGFz dF9yZXF1ZXN0KTsKPiArCQlpZiAoIWZlbmNlKQo+ICAgCQkJYnJlYWs7Cj4gICAKPiAtCQl0aW1l b3V0ID0gaTkxNV9yZXF1ZXN0X3dhaXQocnEsIDAsIEhaIC8gMTApOwo+ICsJCXRpbWVvdXQgPSBk bWFfZmVuY2Vfd2FpdF90aW1lb3V0KGZlbmNlLCBmYWxzZSwgSFogLyAxMCk7Cj4gICAJCWlmICh0 aW1lb3V0IDwgMCkKPiAgIAkJCWVyciA9IHRpbWVvdXQ7Cj4gICAJCWVsc2UKPiAtCQkJaTkxNV9y ZXF1ZXN0X3JldGlyZV91cHRvKHJxKTsKPiArCQkJaTkxNV9yZXF1ZXN0X3JldGlyZV91cHRvKHRv X3JlcXVlc3QoZmVuY2UpKTsKPiAgIAo+IC0JCWk5MTVfcmVxdWVzdF9wdXQocnEpOwo+ICsJCWRt YV9mZW5jZV9wdXQoZmVuY2UpOwo+ICAgCX0gd2hpbGUgKCFlcnIpOwo+ICAgCW11dGV4X3VubG9j aygmdGwtPm11dGV4KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5j Cj4gaW5kZXggMjJlYTJlNzQ3MDY0Li44ZWVjNGVhZDEyYTQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9scmMuYwo+IEBAIC05OTQsOSArOTk0LDEzIEBAIHN0YXRpYyBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpkdW1teV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIAlpZiAoIXJxKQo+ICAgCQlyZXR1cm4gTlVMTDsKPiAgIAo+IC0JSU5JVF9MSVNU X0hFQUQoJnJxLT5hY3RpdmVfbGlzdCk7Cj4gICAJcnEtPmVuZ2luZSA9IGVuZ2luZTsKPiAgIAo+ ICsJc3Bpbl9sb2NrX2luaXQoJnJxLT5sb2NrKTsKPiArCUlOSVRfTElTVF9IRUFEKCZycS0+ZmVu Y2UuY2JfbGlzdCk7Cj4gKwlycS0+ZmVuY2UubG9jayA9ICZycS0+bG9jazsKPiArCXJxLT5mZW5j ZS5vcHMgPSAmaTkxNV9mZW5jZV9vcHM7Cj4gKwo+ICAgCWk5MTVfc2NoZWRfbm9kZV9pbml0KCZy cS0+c2NoZWQpOwo+ICAgCj4gICAJLyogbWFyayB0aGlzIHJlcXVlc3QgYXMgcGVybWFuZW50bHkg aW5jb21wbGV0ZSAqLwo+IEBAIC0xMDg5LDggKzEwOTMsOCBAQCBzdGF0aWMgaW50IGxpdmVfc3Vw cHJlc3Nfd2FpdF9wcmVlbXB0KHZvaWQgKmFyZykKPiAgIAkJCQl9Cj4gICAKPiAgIAkJCQkvKiBE aXNhYmxlIE5FV0NMSUVOVCBwcm9tb3Rpb24gKi8KPiAtCQkJCV9faTkxNV9hY3RpdmVfcmVxdWVz dF9zZXQoJmk5MTVfcmVxdWVzdF90aW1lbGluZShycVtpXSktPmxhc3RfcmVxdWVzdCwKPiAtCQkJ CQkJCSAgZHVtbXkpOwo+ICsJCQkJX19pOTE1X2FjdGl2ZV9mZW5jZV9zZXQoJmk5MTVfcmVxdWVz dF90aW1lbGluZShycVtpXSktPmxhc3RfcmVxdWVzdCwKPiArCQkJCQkJCSZkdW1teS0+ZmVuY2Up Owo+ICAgCQkJCWk5MTVfcmVxdWVzdF9hZGQocnFbaV0pOwo+ICAgCQkJfQo+ICAgCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdHMvbW9ja190aW1lbGluZS5jCj4gaW5k ZXggNTk4MTcwZWZjYWY2Li4yYTc3YzA1MWYzNmEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RzL21vY2tfdGltZWxpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0cy9tb2NrX3RpbWVsaW5lLmMKPiBAQCAtMTUsNyArMTUsNyBA QCB2b2lkIG1vY2tfdGltZWxpbmVfaW5pdChzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5l LCB1NjQgY29udGV4dCkKPiAgIAo+ICAgCW11dGV4X2luaXQoJnRpbWVsaW5lLT5tdXRleCk7Cj4g ICAKPiAtCUlOSVRfQUNUSVZFX1JFUVVFU1QoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsICZ0aW1l bGluZS0+bXV0ZXgpOwo+ICsJSU5JVF9BQ1RJVkVfRkVOQ0UoJnRpbWVsaW5lLT5sYXN0X3JlcXVl c3QsICZ0aW1lbGluZS0+bXV0ZXgpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZ0aW1lbGluZS0+cmVx dWVzdHMpOwo+ICAgCj4gICAJaTkxNV9zeW5jbWFwX2luaXQoJnRpbWVsaW5lLT5zeW5jKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gaW5kZXggNmM3OWQxNmIzODFlLi4wM2Y1 NjcwODQ1NDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxl ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gQEAgLTM4 NSwxMSArMzg1LDggQEAgaW50ZWxfZ3Z0X3dvcmtsb2FkX3JlcV9hbGxvYyhzdHJ1Y3QgaW50ZWxf dmdwdV93b3JrbG9hZCAqd29ya2xvYWQpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX3ZncHUgKnZn cHUgPSB3b3JrbG9hZC0+dmdwdTsKPiAgIAlzdHJ1Y3QgaW50ZWxfdmdwdV9zdWJtaXNzaW9uICpz ID0gJnZncHUtPnN1Ym1pc3Npb247Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB2Z3B1LT5ndnQtPmRldl9wcml2Owo+ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ ICAgCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gLQo+ICAgCWlmICh3b3JrbG9hZC0+cmVxKQo+ICAgCQlyZXR1cm4gMDsKPiAgIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9hY3RpdmUuYwo+IGluZGV4IDdjYTA2NjY4OGI5OC4uZjIzNTkwZWM5ZTY4 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCj4gQEAgLTEyLDggKzEyLDYgQEAK PiAgICNpbmNsdWRlICJpOTE1X2FjdGl2ZS5oIgo+ICAgI2luY2x1ZGUgImk5MTVfZ2xvYmFscy5o Igo+ICAgCj4gLSNkZWZpbmUgQktMKHJlZikgKCYocmVmKS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRl eCkKPiAtCj4gICAvKgo+ICAgICogQWN0aXZlIHJlZnMgbWVtb3J5IG1hbmFnZW1lbnQKPiAgICAq Cj4gQEAgLTI3LDM1ICsyNSwzNSBAQCBzdGF0aWMgc3RydWN0IGk5MTVfZ2xvYmFsX2FjdGl2ZSB7 Cj4gICB9IGdsb2JhbDsKPiAgIAo+ICAgc3RydWN0IGFjdGl2ZV9ub2RlIHsKPiAtCXN0cnVjdCBp OTE1X2FjdGl2ZV9yZXF1ZXN0IGJhc2U7Cj4gKwlzdHJ1Y3QgaTkxNV9hY3RpdmVfZmVuY2UgYmFz ZTsKPiAgIAlzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZjsKPiAgIAlzdHJ1Y3QgcmJfbm9kZSBub2Rl Owo+ICAgCXU2NCB0aW1lbGluZTsKPiAgIH07Cj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgc3RydWN0 IGFjdGl2ZV9ub2RlICoKPiAtbm9kZV9mcm9tX2FjdGl2ZShzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVx dWVzdCAqYWN0aXZlKQo+ICtub2RlX2Zyb21fYWN0aXZlKHN0cnVjdCBpOTE1X2FjdGl2ZV9mZW5j ZSAqYWN0aXZlKQo+ICAgewo+ICAgCXJldHVybiBjb250YWluZXJfb2YoYWN0aXZlLCBzdHJ1Y3Qg YWN0aXZlX25vZGUsIGJhc2UpOwo+ICAgfQo+ICAgCj4gICAjZGVmaW5lIHRha2VfcHJlYWxsb2Nh dGVkX2JhcnJpZXJzKHgpIGxsaXN0X2RlbF9hbGwoJih4KS0+cHJlYWxsb2NhdGVkX2JhcnJpZXJz KQo+ICAgCj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpc19iYXJyaWVyKGNvbnN0IHN0cnVjdCBpOTE1 X2FjdGl2ZV9yZXF1ZXN0ICphY3RpdmUpCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpc19iYXJyaWVy KGNvbnN0IHN0cnVjdCBpOTE1X2FjdGl2ZV9mZW5jZSAqYWN0aXZlKQo+ICAgewo+IC0JcmV0dXJu IElTX0VSUihyY3VfYWNjZXNzX3BvaW50ZXIoYWN0aXZlLT5yZXF1ZXN0KSk7Cj4gKwlyZXR1cm4g SVNfRVJSKHJjdV9hY2Nlc3NfcG9pbnRlcihhY3RpdmUtPmZlbmNlKSk7Cj4gICB9Cj4gICAKPiAg IHN0YXRpYyBpbmxpbmUgc3RydWN0IGxsaXN0X25vZGUgKmJhcnJpZXJfdG9fbGwoc3RydWN0IGFj dGl2ZV9ub2RlICpub2RlKQo+ICAgewo+ICAgCUdFTV9CVUdfT04oIWlzX2JhcnJpZXIoJm5vZGUt PmJhc2UpKTsKPiAtCXJldHVybiAoc3RydWN0IGxsaXN0X25vZGUgKikmbm9kZS0+YmFzZS5saW5r Owo+ICsJcmV0dXJuIChzdHJ1Y3QgbGxpc3Rfbm9kZSAqKSZub2RlLT5iYXNlLmNiLm5vZGU7Cj4g ICB9Cj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqCj4gICBf X2JhcnJpZXJfdG9fZW5naW5lKHN0cnVjdCBhY3RpdmVfbm9kZSAqbm9kZSkKPiAgIHsKPiAtCXJl dHVybiAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKVJFQURfT05DRShub2RlLT5iYXNlLmxpbmsu cHJldik7Cj4gKwlyZXR1cm4gKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKilSRUFEX09OQ0Uobm9k ZS0+YmFzZS5jYi5ub2RlLnByZXYpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW5saW5lIHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKgo+IEBAIC02OCw3ICs2Niw3IEBAIGJhcnJpZXJfdG9fZW5naW5l KHN0cnVjdCBhY3RpdmVfbm9kZSAqbm9kZSkKPiAgIHN0YXRpYyBpbmxpbmUgc3RydWN0IGFjdGl2 ZV9ub2RlICpiYXJyaWVyX2Zyb21fbGwoc3RydWN0IGxsaXN0X25vZGUgKngpCj4gICB7Cj4gICAJ cmV0dXJuIGNvbnRhaW5lcl9vZigoc3RydWN0IGxpc3RfaGVhZCAqKXgsCj4gLQkJCSAgICBzdHJ1 Y3QgYWN0aXZlX25vZGUsIGJhc2UubGluayk7Cj4gKwkJCSAgICBzdHJ1Y3QgYWN0aXZlX25vZGUs IGJhc2UuY2Iubm9kZSk7Cj4gICB9Cj4gICAKPiAgICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1f STkxNV9ERUJVR19HRU0pICYmIElTX0VOQUJMRUQoQ09ORklHX0RFQlVHX09CSkVDVFMpCj4gQEAg LTE0NywxNSArMTQ1LDE4IEBAIF9fYWN0aXZlX3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJl ZikKPiAgIAlpZiAoIXJldGlyZSkKPiAgIAkJcmV0dXJuOwo+ICAgCj4gLQlHRU1fQlVHX09OKHJj dV9hY2Nlc3NfcG9pbnRlcihyZWYtPmV4Y2wpKTsKPiArCUdFTV9CVUdfT04ocmN1X2FjY2Vzc19w b2ludGVyKHJlZi0+ZXhjbC5mZW5jZSkpOwo+ICAgCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hf ZW50cnlfc2FmZShpdCwgbiwgJnJvb3QsIG5vZGUpIHsKPiAtCQlHRU1fQlVHX09OKGk5MTVfYWN0 aXZlX3JlcXVlc3RfaXNzZXQoJml0LT5iYXNlKSk7Cj4gKwkJR0VNX0JVR19PTihpOTE1X2FjdGl2 ZV9mZW5jZV9pc3NldCgmaXQtPmJhc2UpKTsKPiAgIAkJa21lbV9jYWNoZV9mcmVlKGdsb2JhbC5z bGFiX2NhY2hlLCBpdCk7Cj4gICAJfQo+ICAgCj4gICAJLyogQWZ0ZXIgdGhlIGZpbmFsIHJldGly ZSwgdGhlIGVudGlyZSBzdHJ1Y3QgbWF5IGJlIGZyZWVkICovCj4gICAJaWYgKHJlZi0+cmV0aXJl KQo+ICAgCQlyZWYtPnJldGlyZShyZWYpOwo+ICsKPiArCS8qIC4uLiBleGNlcHQgaWYgeW91IHdh aXQgb24gaXQsIHlvdSBtdXN0IG1hbmFnZSB5b3VyIG93biByZWZlcmVuY2VzISAqLwo+ICsJd2Fr ZV91cF92YXIocmVmKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQKPiBAQCAtMTg5LDEyICsx OTAsMjAgQEAgYWN0aXZlX3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZikKPiAgIH0KPiAg IAo+ICAgc3RhdGljIHZvaWQKPiAtbm9kZV9yZXRpcmUoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVl c3QgKmJhc2UsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICtub2RlX3JldGlyZShzdHJ1Y3Qg ZG1hX2ZlbmNlICpmZW5jZSwgc3RydWN0IGRtYV9mZW5jZV9jYiAqY2IpCj4gICB7Cj4gLQlhY3Rp dmVfcmV0aXJlKG5vZGVfZnJvbV9hY3RpdmUoYmFzZSktPnJlZik7Cj4gKwlpOTE1X2FjdGl2ZV9m ZW5jZV9jYihmZW5jZSwgY2IpOwo+ICsJYWN0aXZlX3JldGlyZShjb250YWluZXJfb2YoY2IsIHN0 cnVjdCBhY3RpdmVfbm9kZSwgYmFzZS5jYiktPnJlZik7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHN0 cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICoKPiArc3RhdGljIHZvaWQKPiArZXhjbF9yZXRpcmUo c3RydWN0IGRtYV9mZW5jZSAqZmVuY2UsIHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKQo+ICt7Cj4g KwlpOTE1X2FjdGl2ZV9mZW5jZV9jYihmZW5jZSwgY2IpOwo+ICsJYWN0aXZlX3JldGlyZShjb250 YWluZXJfb2YoY2IsIHN0cnVjdCBpOTE1X2FjdGl2ZSwgZXhjbC5jYikpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgc3RydWN0IGk5MTVfYWN0aXZlX2ZlbmNlICoKPiAgIGFjdGl2ZV9pbnN0YW5jZShzdHJ1 Y3QgaTkxNV9hY3RpdmUgKnJlZiwgc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKPiAgIHsKPiAg IAlzdHJ1Y3QgYWN0aXZlX25vZGUgKm5vZGUsICpwcmVhbGxvYzsKPiBAQCAtMjM4LDcgKzI0Nyw3 IEBAIGFjdGl2ZV9pbnN0YW5jZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwgc3RydWN0IGludGVs X3RpbWVsaW5lICp0bCkKPiAgIAl9Cj4gICAKPiAgIAlub2RlID0gcHJlYWxsb2M7Cj4gLQlpOTE1 X2FjdGl2ZV9yZXF1ZXN0X2luaXQoJm5vZGUtPmJhc2UsICZ0bC0+bXV0ZXgsIE5VTEwsIG5vZGVf cmV0aXJlKTsKPiArCV9faTkxNV9hY3RpdmVfZmVuY2VfaW5pdCgmbm9kZS0+YmFzZSwgJnRsLT5t dXRleCwgTlVMTCwgbm9kZV9yZXRpcmUpOwo+ICAgCW5vZGUtPnJlZiA9IHJlZjsKPiAgIAlub2Rl LT50aW1lbGluZSA9IGlkeDsKPiAgIAo+IEBAIC0yNTMsOCArMjYyLDcgQEAgYWN0aXZlX2luc3Rh bmNlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmLCBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsKQo+ ICAgCXJldHVybiAmbm9kZS0+YmFzZTsKPiAgIH0KPiAgIAo+IC12b2lkIF9faTkxNV9hY3RpdmVf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJc3RydWN0IGk5MTVfYWN0 aXZlICpyZWYsCj4gK3ZvaWQgX19pOTE1X2FjdGl2ZV9pbml0KHN0cnVjdCBpOTE1X2FjdGl2ZSAq cmVmLAo+ICAgCQkJaW50ICgqYWN0aXZlKShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiksCj4gICAJ CQl2b2lkICgqcmV0aXJlKShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiksCj4gICAJCQlzdHJ1Y3Qg bG9ja19jbGFzc19rZXkgKmtleSkKPiBAQCAtMjYzLDE5ICsyNzEsMTggQEAgdm9pZCBfX2k5MTVf YWN0aXZlX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAKPiAgIAlkZWJ1 Z19hY3RpdmVfaW5pdChyZWYpOwo+ICAgCj4gLQlyZWYtPmk5MTUgPSBpOTE1Owo+ICAgCXJlZi0+ ZmxhZ3MgPSAwOwo+ICAgCXJlZi0+YWN0aXZlID0gYWN0aXZlOwo+ICAgCXJlZi0+cmV0aXJlID0g cHRyX3VucGFja19iaXRzKHJldGlyZSwgJmJpdHMsIDIpOwo+ICAgCWlmIChiaXRzICYgSTkxNV9B Q1RJVkVfTUFZX1NMRUVQKQo+ICAgCQlyZWYtPmZsYWdzIHw9IEk5MTVfQUNUSVZFX1JFVElSRV9T TEVFUFM7Cj4gICAKPiAtCXJlZi0+ZXhjbCA9IE5VTEw7Cj4gICAJcmVmLT50cmVlID0gUkJfUk9P VDsKPiAgIAlyZWYtPmNhY2hlID0gTlVMTDsKPiAgIAlpbml0X2xsaXN0X2hlYWQoJnJlZi0+cHJl YWxsb2NhdGVkX2JhcnJpZXJzKTsKPiAgIAlhdG9taWNfc2V0KCZyZWYtPmNvdW50LCAwKTsKPiAg IAlfX211dGV4X2luaXQoJnJlZi0+bXV0ZXgsICJpOTE1X2FjdGl2ZSIsIGtleSk7Cj4gKwlfX2k5 MTVfYWN0aXZlX2ZlbmNlX2luaXQoJnJlZi0+ZXhjbCwgJnJlZi0+bXV0ZXgsIE5VTEwsIGV4Y2xf cmV0aXJlKTsKPiAgIAlJTklUX1dPUksoJnJlZi0+d29yaywgYWN0aXZlX3dvcmspOwo+ICAgfQo+ ICAgCj4gQEAgLTMyOSw5ICszMzYsOSBAQCBfX2FjdGl2ZV9kZWxfYmFycmllcihzdHJ1Y3QgaTkx NV9hY3RpdmUgKnJlZiwgc3RydWN0IGFjdGl2ZV9ub2RlICpub2RlKQo+ICAgCj4gICBpbnQgaTkx NV9hY3RpdmVfcmVmKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmLAo+ICAgCQkgICAgc3RydWN0IGlu dGVsX3RpbWVsaW5lICp0bCwKPiAtCQkgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gKwkJ ICAgIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ICAgewo+IC0Jc3RydWN0IGk5MTVfYWN0aXZl X3JlcXVlc3QgKmFjdGl2ZTsKPiArCXN0cnVjdCBpOTE1X2FjdGl2ZV9mZW5jZSAqYWN0aXZlOwo+ ICAgCWludCBlcnI7Cj4gICAKPiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZ0bC0+bXV0ZXgpOwo+ IEBAIC0zNTQsNjYgKzM2MSwzOSBAQCBpbnQgaTkxNV9hY3RpdmVfcmVmKHN0cnVjdCBpOTE1X2Fj dGl2ZSAqcmVmLAo+ICAgCQkgKiByZXF1ZXN0IHRoYXQgd2Ugd2FudCB0byBlbWl0IG9uIHRoZSBr ZXJuZWxfY29udGV4dC4KPiAgIAkJICovCj4gICAJCV9fYWN0aXZlX2RlbF9iYXJyaWVyKHJlZiwg bm9kZV9mcm9tX2FjdGl2ZShhY3RpdmUpKTsKPiAtCQlSQ1VfSU5JVF9QT0lOVEVSKGFjdGl2ZS0+ cmVxdWVzdCwgTlVMTCk7Cj4gLQkJSU5JVF9MSVNUX0hFQUQoJmFjdGl2ZS0+bGluayk7Cj4gLQl9 IGVsc2Ugewo+IC0JCWlmICghaTkxNV9hY3RpdmVfcmVxdWVzdF9pc3NldChhY3RpdmUpKQo+IC0J CQlhdG9taWNfaW5jKCZyZWYtPmNvdW50KTsKPiArCQlSQ1VfSU5JVF9QT0lOVEVSKGFjdGl2ZS0+ ZmVuY2UsIE5VTEwpOwo+ICsJCWF0b21pY19kZWMoJnJlZi0+Y291bnQpOwo+ICAgCX0KPiAtCUdF TV9CVUdfT04oIWF0b21pY19yZWFkKCZyZWYtPmNvdW50KSk7Cj4gLQlfX2k5MTVfYWN0aXZlX3Jl cXVlc3Rfc2V0KGFjdGl2ZSwgcnEpOwo+ICsJaWYgKCFfX2k5MTVfYWN0aXZlX2ZlbmNlX3NldChh Y3RpdmUsIGZlbmNlKSkKPiArCQlhdG9taWNfaW5jKCZyZWYtPmNvdW50KTsKPiAgIAo+ICAgb3V0 Ogo+ICAgCWk5MTVfYWN0aXZlX3JlbGVhc2UocmVmKTsKPiAgIAlyZXR1cm4gZXJyOwo+ICAgfQo+ ICAgCj4gLXN0YXRpYyB2b2lkIGV4Y2xfY2Ioc3RydWN0IGRtYV9mZW5jZSAqZiwgc3RydWN0IGRt YV9mZW5jZV9jYiAqY2IpCj4gLXsKPiAtCXN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmID0gY29udGFp bmVyX29mKGNiLCB0eXBlb2YoKnJlZiksIGV4Y2xfY2IpOwo+IC0KPiAtCVJDVV9JTklUX1BPSU5U RVIocmVmLT5leGNsLCBOVUxMKTsKPiAtCWRtYV9mZW5jZV9wdXQoZik7Cj4gLQo+IC0JYWN0aXZl X3JldGlyZShyZWYpOwo+IC19Cj4gLQo+ICAgdm9pZCBpOTE1X2FjdGl2ZV9zZXRfZXhjbHVzaXZl KHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmLCBzdHJ1Y3QgZG1hX2ZlbmNlICpmKQo+ICAgewo+ICAg CS8qIFdlIGV4cGVjdCB0aGUgY2FsbGVyIHRvIG1hbmFnZSB0aGUgZXhjbHVzaXZlIHRpbWVsaW5l IG9yZGVyaW5nICovCj4gICAJR0VNX0JVR19PTihpOTE1X2FjdGl2ZV9pc19pZGxlKHJlZikpOwo+ ICAgCj4gLQlkbWFfZmVuY2VfZ2V0KGYpOwo+IC0KPiAtCXJjdV9yZWFkX2xvY2soKTsKPiAtCWlm IChyY3VfYWNjZXNzX3BvaW50ZXIocmVmLT5leGNsKSkgewo+IC0JCXN0cnVjdCBkbWFfZmVuY2Ug Km9sZDsKPiAtCj4gLQkJb2xkID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgmcmVmLT5leGNsKTsK PiAtCQlpZiAob2xkKSB7Cj4gLQkJCWlmIChkbWFfZmVuY2VfcmVtb3ZlX2NhbGxiYWNrKG9sZCwg JnJlZi0+ZXhjbF9jYikpCj4gLQkJCQlhdG9taWNfZGVjKCZyZWYtPmNvdW50KTsKPiAtCQkJZG1h X2ZlbmNlX3B1dChvbGQpOwo+IC0JCX0KPiAtCX0KPiAtCXJjdV9yZWFkX3VubG9jaygpOwo+IC0K PiAtCWF0b21pY19pbmMoJnJlZi0+Y291bnQpOwo+IC0JcmN1X2Fzc2lnbl9wb2ludGVyKHJlZi0+ ZXhjbCwgZik7Cj4gKwltdXRleF9hY3F1aXJlKCZyZWYtPm11dGV4LmRlcF9tYXAsIDAsIDAsIF9U SElTX0lQXyk7Cj4gKwlpZiAoIV9faTkxNV9hY3RpdmVfZmVuY2Vfc2V0KCZyZWYtPmV4Y2wsIGYp KQo+ICsJCWF0b21pY19pbmMoJnJlZi0+Y291bnQpOwo+ICsJbXV0ZXhfcmVsZWFzZSgmcmVmLT5t dXRleC5kZXBfbWFwLCAwLCBfVEhJU19JUF8pOwoKQ29tbWVudCBmb3IgdGhpcyBibG9jayBwbGVh c2UgdG8gZXhwbGFpbiB3aGF0J3MgZ29pbmcgb24uCgo+ICt9Cj4gICAKPiAtCWlmIChkbWFfZmVu Y2VfYWRkX2NhbGxiYWNrKGYsICZyZWYtPmV4Y2xfY2IsIGV4Y2xfY2IpKSB7Cj4gLQkJUkNVX0lO SVRfUE9JTlRFUihyZWYtPmV4Y2wsIE5VTEwpOwo+IC0JCWF0b21pY19kZWMoJnJlZi0+Y291bnQp Owo+IC0JCWRtYV9mZW5jZV9wdXQoZik7Cj4gLQl9Cj4gK2Jvb2wgaTkxNV9hY3RpdmVfYWNxdWly ZV9pZl9idXN5KHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQo+ICt7Cj4gKwlkZWJ1Z19hY3RpdmVf YXNzZXJ0KHJlZik7Cj4gKwlyZXR1cm4gYXRvbWljX2FkZF91bmxlc3MoJnJlZi0+Y291bnQsIDEs IDApOwo+ICAgfQo+ICAgCj4gICBpbnQgaTkxNV9hY3RpdmVfYWNxdWlyZShzdHJ1Y3QgaTkxNV9h Y3RpdmUgKnJlZikKPiAgIHsKPiAgIAlpbnQgZXJyOwo+ICAgCj4gLQlkZWJ1Z19hY3RpdmVfYXNz ZXJ0KHJlZik7Cj4gLQlpZiAoYXRvbWljX2FkZF91bmxlc3MoJnJlZi0+Y291bnQsIDEsIDApKQo+ ICsJaWYgKGk5MTVfYWN0aXZlX2FjcXVpcmVfaWZfYnVzeShyZWYpKQo+ICAgCQlyZXR1cm4gMDsK PiAgIAo+ICAgCWVyciA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmcmVmLT5tdXRleCk7Cj4g QEAgLTQzOCwxMjEgKzQxOCw1NyBAQCB2b2lkIGk5MTVfYWN0aXZlX3JlbGVhc2Uoc3RydWN0IGk5 MTVfYWN0aXZlICpyZWYpCj4gICAJYWN0aXZlX3JldGlyZShyZWYpOwo+ICAgfQo+ICAgCj4gLXN0 YXRpYyB2b2lkIF9fYWN0aXZlX3VuZ3JhYihzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZikKPiAtewo+ IC0JY2xlYXJfYW5kX3dha2VfdXBfYml0KEk5MTVfQUNUSVZFX0dSQUJfQklULCAmcmVmLT5mbGFn cyk7Cj4gLX0KPiAtCj4gLWJvb2wgaTkxNV9hY3RpdmVfdHJ5Z3JhYihzdHJ1Y3QgaTkxNV9hY3Rp dmUgKnJlZikKPiArc3RhdGljIHZvaWQgZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgaTkxNV9hY3Rp dmVfZmVuY2UgKmFjdGl2ZSkKPiAgIHsKPiAtCWRlYnVnX2FjdGl2ZV9hc3NlcnQocmVmKTsKPiAt Cj4gLQlpZiAodGVzdF9hbmRfc2V0X2JpdChJOTE1X0FDVElWRV9HUkFCX0JJVCwgJnJlZi0+Zmxh Z3MpKQo+IC0JCXJldHVybiBmYWxzZTsKPiAtCj4gLQlpZiAoIWF0b21pY19hZGRfdW5sZXNzKCZy ZWYtPmNvdW50LCAxLCAwKSkgewo+IC0JCV9fYWN0aXZlX3VuZ3JhYihyZWYpOwo+IC0JCXJldHVy biBmYWxzZTsKPiAtCX0KPiAtCj4gLQlyZXR1cm4gdHJ1ZTsKPiAtfQo+ICsJc3RydWN0IGRtYV9m ZW5jZSAqZmVuY2U7Cj4gICAKPiAtdm9pZCBpOTE1X2FjdGl2ZV91bmdyYWIoc3RydWN0IGk5MTVf YWN0aXZlICpyZWYpCj4gLXsKPiAtCUdFTV9CVUdfT04oIXRlc3RfYml0KEk5MTVfQUNUSVZFX0dS QUJfQklULCAmcmVmLT5mbGFncykpOwo+IC0KPiAtCWFjdGl2ZV9yZXRpcmUocmVmKTsKPiAtCV9f YWN0aXZlX3VuZ3JhYihyZWYpOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IGV4Y2xfd2FpdChzdHJ1 Y3QgaTkxNV9hY3RpdmUgKnJlZikKPiAtewo+IC0Jc3RydWN0IGRtYV9mZW5jZSAqb2xkOwo+IC0J aW50IGVyciA9IDA7Cj4gLQo+IC0JaWYgKCFyY3VfYWNjZXNzX3BvaW50ZXIocmVmLT5leGNsKSkK PiAtCQlyZXR1cm4gMDsKPiAtCj4gLQlyY3VfcmVhZF9sb2NrKCk7Cj4gLQlvbGQgPSBkbWFfZmVu Y2VfZ2V0X3JjdV9zYWZlKCZyZWYtPmV4Y2wpOwo+IC0JcmN1X3JlYWRfdW5sb2NrKCk7Cj4gLQlp ZiAob2xkKSB7Cj4gLQkJZXJyID0gZG1hX2ZlbmNlX3dhaXQob2xkLCB0cnVlKTsKPiAtCQlkbWFf ZmVuY2VfcHV0KG9sZCk7Cj4gLQl9Cj4gKwlmZW5jZSA9IGk5MTVfYWN0aXZlX2ZlbmNlX2dldChh Y3RpdmUpOwo+ICsJaWYgKCFmZW5jZSkKPiArCQlyZXR1cm47Cj4gICAKPiAtCXJldHVybiBlcnI7 Cj4gKwlkbWFfZmVuY2VfZW5hYmxlX3N3X3NpZ25hbGluZyhmZW5jZSk7Cj4gKwlkbWFfZmVuY2Vf cHV0KGZlbmNlKTsKPiAgIH0KPiAgIAo+ICAgaW50IGk5MTVfYWN0aXZlX3dhaXQoc3RydWN0IGk5 MTVfYWN0aXZlICpyZWYpCj4gICB7Cj4gICAJc3RydWN0IGFjdGl2ZV9ub2RlICppdCwgKm47Cj4g LQlpbnQgZXJyOwo+ICsJaW50IGVyciA9IDA7Cj4gICAKPiAgIAltaWdodF9zbGVlcCgpOwo+IC0J bWlnaHRfbG9jaygmcmVmLT5tdXRleCk7Cj4gICAKPiAtCWlmIChpOTE1X2FjdGl2ZV9pc19pZGxl KHJlZikpCj4gKwlpZiAoIWk5MTVfYWN0aXZlX2FjcXVpcmVfaWZfYnVzeShyZWYpKQo+ICAgCQly ZXR1cm4gMDsKPiAgIAo+IC0JZXJyID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZyZWYtPm11 dGV4KTsKPiAtCWlmIChlcnIpCj4gLQkJcmV0dXJuIGVycjsKPiAtCj4gLQlpZiAoIWF0b21pY19h ZGRfdW5sZXNzKCZyZWYtPmNvdW50LCAxLCAwKSkgewo+IC0JCW11dGV4X3VubG9jaygmcmVmLT5t dXRleCk7Cj4gLQkJcmV0dXJuIDA7Cj4gLQl9Cj4gLQo+IC0JZXJyID0gZXhjbF93YWl0KHJlZik7 Cj4gLQlpZiAoZXJyKQo+IC0JCWdvdG8gb3V0Owo+IC0KPiArCS8qIEZsdXNoIGxhenkgc2lnbmFs cyAqLwo+ICsJZW5hYmxlX3NpZ25hbGluZygmcmVmLT5leGNsKTsKPiAgIAlyYnRyZWVfcG9zdG9y ZGVyX2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXQsIG4sICZyZWYtPnRyZWUsIG5vZGUpIHsKPiAtCQlp ZiAoaXNfYmFycmllcigmaXQtPmJhc2UpKSB7IC8qIHVuY29ubmVjdGVkIGlkbGUtYmFycmllciAq Lwo+IC0JCQllcnIgPSAtRUJVU1k7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiArCQlpZiAoaXNfYmFy cmllcigmaXQtPmJhc2UpKSAvKiB1bmNvbm5lY3RlZCBpZGxlIGJhcnJpZXIgKi8KPiArCQkJY29u dGludWU7Cj4gICAKPiAtCQllcnIgPSBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3JldGlyZSgmaXQtPmJh c2UsIEJLTChyZWYpKTsKPiAtCQlpZiAoZXJyKQo+IC0JCQlicmVhazsKPiArCQllbmFibGVfc2ln bmFsaW5nKCZpdC0+YmFzZSk7Cj4gICAJfQo+ICsJLyogQW55IGZlbmNlIGFkZGVkIGFmdGVyIHRo ZSB3YWl0IGJlZ2lucyB3aWxsIG5vdCBiZSBhdXRvLXNpZ25hbGVkICovCj4gICAKPiAtb3V0Ogo+ IC0JX19hY3RpdmVfcmV0aXJlKHJlZik7Cj4gKwlpOTE1X2FjdGl2ZV9yZWxlYXNlKHJlZik7Cj4g ICAJaWYgKGVycikKPiAgIAkJcmV0dXJuIGVycjsKPiAgIAo+IC0JaWYgKHdhaXRfb25fYml0KCZy ZWYtPmZsYWdzLCBJOTE1X0FDVElWRV9HUkFCX0JJVCwgVEFTS19LSUxMQUJMRSkpCj4gKwlpZiAo d2FpdF92YXJfZXZlbnRfaW50ZXJydXB0aWJsZShyZWYsIGk5MTVfYWN0aXZlX2lzX2lkbGUocmVm KSkpCj4gICAJCXJldHVybiAtRUlOVFI7Cj4gICAKPiAtCWZsdXNoX3dvcmsoJnJlZi0+d29yayk7 Cj4gLQlpZiAoIWk5MTVfYWN0aXZlX2lzX2lkbGUocmVmKSkKPiAtCQlyZXR1cm4gLUVCVVNZOwo+ IC0KPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1pbnQgaTkxNV9yZXF1ZXN0X2F3YWl0X2Fj dGl2ZV9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+IC0JCQkJICAgICAgc3RydWN0 IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2ZSkKPiAtewo+IC0Jc3RydWN0IGk5MTVfcmVxdWVz dCAqYmFycmllciA9Cj4gLQkJaTkxNV9hY3RpdmVfcmVxdWVzdF9yYXcoYWN0aXZlLCAmcnEtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAtCXJldHVybiBiYXJyaWVyID8gaTkxNV9yZXF1 ZXN0X2F3YWl0X2RtYV9mZW5jZShycSwgJmJhcnJpZXItPmZlbmNlKSA6IDA7Cj4gLX0KPiAtCj4g ICBpbnQgaTkxNV9yZXF1ZXN0X2F3YWl0X2FjdGl2ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwg c3RydWN0IGk5MTVfYWN0aXZlICpyZWYpCj4gICB7Cj4gICAJaW50IGVyciA9IDA7Cj4gICAKPiAt CWlmIChyY3VfYWNjZXNzX3BvaW50ZXIocmVmLT5leGNsKSkgewo+ICsJaWYgKHJjdV9hY2Nlc3Nf cG9pbnRlcihyZWYtPmV4Y2wuZmVuY2UpKSB7Cj4gICAJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNl Owo+ICAgCj4gICAJCXJjdV9yZWFkX2xvY2soKTsKPiAtCQlmZW5jZSA9IGRtYV9mZW5jZV9nZXRf cmN1X3NhZmUoJnJlZi0+ZXhjbCk7Cj4gKwkJZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZl KCZyZWYtPmV4Y2wuZmVuY2UpOwo+ICAgCQlyY3VfcmVhZF91bmxvY2soKTsKPiAgIAkJaWYgKGZl bmNlKSB7Cj4gICAJCQllcnIgPSBpOTE1X3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNlKHJxLCBmZW5j ZSk7Cj4gQEAgLTU3OCw3ICs0OTQsNyBAQCB2b2lkIGk5MTVfYWN0aXZlX2Zpbmkoc3RydWN0IGk5 MTVfYWN0aXZlICpyZWYpCj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpc19pZGxlX2JhcnJp ZXIoc3RydWN0IGFjdGl2ZV9ub2RlICpub2RlLCB1NjQgaWR4KQo+ICAgewo+IC0JcmV0dXJuIG5v ZGUtPnRpbWVsaW5lID09IGlkeCAmJiAhaTkxNV9hY3RpdmVfcmVxdWVzdF9pc3NldCgmbm9kZS0+ YmFzZSk7Cj4gKwlyZXR1cm4gbm9kZS0+dGltZWxpbmUgPT0gaWR4ICYmICFpOTE1X2FjdGl2ZV9m ZW5jZV9pc3NldCgmbm9kZS0+YmFzZSk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3QgYWN0 aXZlX25vZGUgKnJldXNlX2lkbGVfYmFycmllcihzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwgdTY0 IGlkeCkKPiBAQCAtNjk4LDEzICs2MTQsMTMgQEAgaW50IGk5MTVfYWN0aXZlX2FjcXVpcmVfcHJl YWxsb2NhdGVfYmFycmllcihzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwKPiAgIAkJCW5vZGUtPmJh c2UubG9jayA9Cj4gICAJCQkJJmVuZ2luZS0+a2VybmVsX2NvbnRleHQtPnRpbWVsaW5lLT5tdXRl eDsKPiAgICNlbmRpZgo+IC0JCQlSQ1VfSU5JVF9QT0lOVEVSKG5vZGUtPmJhc2UucmVxdWVzdCwg TlVMTCk7Cj4gLQkJCW5vZGUtPmJhc2UucmV0aXJlID0gbm9kZV9yZXRpcmU7Cj4gKwkJCVJDVV9J TklUX1BPSU5URVIobm9kZS0+YmFzZS5mZW5jZSwgTlVMTCk7Cj4gKwkJCW5vZGUtPmJhc2UuY2Iu ZnVuYyA9IG5vZGVfcmV0aXJlOwo+ICAgCQkJbm9kZS0+dGltZWxpbmUgPSBpZHg7Cj4gICAJCQlu b2RlLT5yZWYgPSByZWY7Cj4gICAJCX0KPiAgIAo+IC0JCWlmICghaTkxNV9hY3RpdmVfcmVxdWVz dF9pc3NldCgmbm9kZS0+YmFzZSkpIHsKPiArCQlpZiAoIWk5MTVfYWN0aXZlX2ZlbmNlX2lzc2V0 KCZub2RlLT5iYXNlKSkgewo+ICAgCQkJLyoKPiAgIAkJCSAqIE1hcmsgdGhpcyBhcyBiZWluZyAq b3VyKiB1bmNvbm5lY3RlZCBwcm90by1ub2RlLgo+ICAgCQkJICoKPiBAQCAtNzE0LDggKzYzMCw4 IEBAIGludCBpOTE1X2FjdGl2ZV9hY3F1aXJlX3ByZWFsbG9jYXRlX2JhcnJpZXIoc3RydWN0IGk5 MTVfYWN0aXZlICpyZWYsCj4gICAJCQkgKiBhbmQgdGhlbiB3ZSBjYW4gdXNlIHRoZSByYl9ub2Rl IGFuZCBsaXN0IHBvaW50ZXJzCj4gICAJCQkgKiBmb3Igb3VyIHRyYWNraW5nIG9mIHRoZSBwZW5k aW5nIGJhcnJpZXIuCj4gICAJCQkgKi8KPiAtCQkJUkNVX0lOSVRfUE9JTlRFUihub2RlLT5iYXNl LnJlcXVlc3QsIEVSUl9QVFIoLUVBR0FJTikpOwo+IC0JCQlub2RlLT5iYXNlLmxpbmsucHJldiA9 ICh2b2lkICopZW5naW5lOwo+ICsJCQlSQ1VfSU5JVF9QT0lOVEVSKG5vZGUtPmJhc2UuZmVuY2Us IEVSUl9QVFIoLUVBR0FJTikpOwo+ICsJCQlub2RlLT5iYXNlLmNiLm5vZGUucHJldiA9ICh2b2lk ICopZW5naW5lOwo+ICAgCQkJYXRvbWljX2luYygmcmVmLT5jb3VudCk7Cj4gICAJCX0KPiAgIAo+ IEBAIC03ODIsMjUgKzY5OCw2NSBAQCB2b2lkIGk5MTVfcmVxdWVzdF9hZGRfYWN0aXZlX2JhcnJp ZXJzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSA9IHJxLT5lbmdpbmU7Cj4gICAJc3RydWN0IGxsaXN0X25vZGUgKm5vZGUs ICpuZXh0Owo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAgIAo+ICAgCUdFTV9CVUdfT04oaW50 ZWxfZW5naW5lX2lzX3ZpcnR1YWwoZW5naW5lKSk7Cj4gICAJR0VNX0JVR19PTihpOTE1X3JlcXVl c3RfdGltZWxpbmUocnEpICE9IGVuZ2luZS0+a2VybmVsX2NvbnRleHQtPnRpbWVsaW5lKTsKPiAg IAo+ICsJbm9kZSA9IGxsaXN0X2RlbF9hbGwoJmVuZ2luZS0+YmFycmllcl90YXNrcyk7Cj4gKwlp ZiAoIW5vZGUpCj4gKwkJcmV0dXJuOwo+ICAgCS8qCj4gICAJICogQXR0YWNoIHRoZSBsaXN0IG9m IHByb3RvLWZlbmNlcyB0byB0aGUgaW4tZmxpZ2h0IHJlcXVlc3Qgc3VjaAo+ICAgCSAqIHRoYXQg dGhlIHBhcmVudCBpOTE1X2FjdGl2ZSB3aWxsIGJlIHJlbGVhc2VkIHdoZW4gdGhpcyByZXF1ZXN0 Cj4gICAJICogaXMgcmV0aXJlZC4KPiAgIAkgKi8KPiAtCWxsaXN0X2Zvcl9lYWNoX3NhZmUobm9k ZSwgbmV4dCwgbGxpc3RfZGVsX2FsbCgmZW5naW5lLT5iYXJyaWVyX3Rhc2tzKSkgewo+IC0JCVJD VV9JTklUX1BPSU5URVIoYmFycmllcl9mcm9tX2xsKG5vZGUpLT5iYXNlLnJlcXVlc3QsIHJxKTsK PiArCXNwaW5fbG9ja19pcnFzYXZlKCZycS0+bG9jaywgZmxhZ3MpOwo+ICsJbGxpc3RfZm9yX2Vh Y2hfc2FmZShub2RlLCBuZXh0LCBub2RlKSB7Cj4gKwkJUkNVX0lOSVRfUE9JTlRFUihiYXJyaWVy X2Zyb21fbGwobm9kZSktPmJhc2UuZmVuY2UsICZycS0+ZmVuY2UpOwo+ICAgCQlzbXBfd21iKCk7 IC8qIHNlcmlhbGlzZSB3aXRoIHJldXNlX2lkbGVfYmFycmllciAqLwo+IC0JCWxpc3RfYWRkX3Rh aWwoKHN0cnVjdCBsaXN0X2hlYWQgKilub2RlLCAmcnEtPmFjdGl2ZV9saXN0KTsKPiArCQlsaXN0 X2FkZF90YWlsKChzdHJ1Y3QgbGlzdF9oZWFkICopbm9kZSwgJnJxLT5mZW5jZS5jYl9saXN0KTsK PiArCX0KPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJxLT5sb2NrLCBmbGFncyk7Cj4gK30K PiArCj4gKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pCj4gKyNkZWZp bmUgYWN0aXZlX2lzX2hlbGQoYWN0aXZlKSBsb2NrZGVwX2lzX2hlbGQoKGFjdGl2ZSktPmxvY2sp Cj4gKyNlbHNlCj4gKyNkZWZpbmUgYWN0aXZlX2lzX2hlbGQoYWN0aXZlKSB0cnVlCj4gKyNlbmRp Zgo+ICsKPiArc3RydWN0IGRtYV9mZW5jZSAqCj4gK19faTkxNV9hY3RpdmVfZmVuY2Vfc2V0KHN0 cnVjdCBpOTE1X2FjdGl2ZV9mZW5jZSAqYWN0aXZlLAo+ICsJCQlzdHJ1Y3QgZG1hX2ZlbmNlICpm ZW5jZSkKCkNhbiB5b3UgYWRkIGEgc2hvcnQgY29tbWVudCBmb3IgdGhpcyBmdW5jdGlvbiBleHBs YWluaW5nIHRoZSByYWN5bmVzcyAKYW5kIHNvIHdoeSBpdCByZXR1cm5zIHByZXYgYW5kIHdoYXQg c2hvdWxkIHRoZSBjYWxsZXJzIGRvIHdpdGggaXQ/Cgo+ICt7Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNl ICpwcmV2Owo+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsKPiArCj4gKwkvKiBOQjogdXBkYXRlcyBt dXN0IGJlIHNlcmlhbGlzZWQgYnkgYW4gb3V0ZXIgdGltZWxpbmUgbXV0ZXggKi8KCkNhbid0IGNo ZWNrIGhlcmU/Cgo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoZmVuY2UtPmxvY2ssIGZsYWdzKTsKPiAr CUdFTV9CVUdfT04odGVzdF9iaXQoRE1BX0ZFTkNFX0ZMQUdfU0lHTkFMRURfQklULCAmZmVuY2Ut PmZsYWdzKSk7Cj4gKwo+ICsJcHJldiA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoYWN0aXZl LT5mZW5jZSwgYWN0aXZlX2lzX2hlbGQoYWN0aXZlKSk7Cj4gKwlpZiAocHJldikgewo+ICsJCXNw aW5fbG9ja19uZXN0ZWQocHJldi0+bG9jaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwo+ICsJCV9f bGlzdF9kZWxfZW50cnkoJmFjdGl2ZS0+Y2Iubm9kZSk7Cj4gKwkJc3Bpbl91bmxvY2socHJldi0+ bG9jayk7IC8qIHNlcmlhbGlzZSB3aXRoIHByZXYtPmNiX2xpc3QgKi8KPiArCQlwcmV2ID0gcmN1 X2FjY2Vzc19wb2ludGVyKGFjdGl2ZS0+ZmVuY2UpOwo+ICAgCX0KPiArCj4gKwlyY3VfYXNzaWdu X3BvaW50ZXIoYWN0aXZlLT5mZW5jZSwgZmVuY2UpOwo+ICsJbGlzdF9hZGRfdGFpbCgmYWN0aXZl LT5jYi5ub2RlLCAmZmVuY2UtPmNiX2xpc3QpOwo+ICsKPiArCXNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoZmVuY2UtPmxvY2ssIGZsYWdzKTsKPiArCj4gKwlyZXR1cm4gcHJldjsKPiAgIH0KPiAgIAo+ IC1pbnQgaTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3Qg KmFjdGl2ZSwKPiAtCQkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICtpbnQgaTkxNV9h Y3RpdmVfZmVuY2Vfc2V0KHN0cnVjdCBpOTE1X2FjdGl2ZV9mZW5jZSAqYWN0aXZlLAo+ICsJCQkg IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgewo+ICsJc3RydWN0IGRtYV9mZW5jZSAqZmVu Y2U7Cj4gICAJaW50IGVycjsKPiAgIAo+ICAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1 X0RFQlVHX0dFTSkKCkhlcmUgbm90IGluIGRpZmYgd2UgYWN0dWFsbHkgaGF2ZToKCiNpZiBJU19F TkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pCglsb2NrZGVwX2Fzc2VydF9oZWxkKGFj dGl2ZS0+bG9jayk7CgpTbyB3aHkgb25seSB1bmRlciBHRU0gZGVidWcgYW5kIGhvdyBkb2VzIGl0 IHJlbGF0ZWQgdG8gdGhlIE5CIGNvbW1lbnQgaW4gCl9faTkxNV9hY3RpdmVfZmVuY2Vfc2V0PwoK PiBAQCAtODA4LDE4ICs3NjQsMjUgQEAgaW50IGk5MTVfYWN0aXZlX3JlcXVlc3Rfc2V0KHN0cnVj dCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICphY3RpdmUsCj4gICAjZW5kaWYKPiAgIAo+ICAgCS8qIE11 c3QgbWFpbnRhaW4gb3JkZXJpbmcgd3J0IHByZXZpb3VzIGFjdGl2ZSByZXF1ZXN0cyAqLwo+IC0J ZXJyID0gaTkxNV9yZXF1ZXN0X2F3YWl0X2FjdGl2ZV9yZXF1ZXN0KHJxLCBhY3RpdmUpOwo+IC0J aWYgKGVycikKPiAtCQlyZXR1cm4gZXJyOwo+ICsJcmN1X3JlYWRfbG9jaygpOwo+ICsJZmVuY2Ug PSBfX2k5MTVfYWN0aXZlX2ZlbmNlX3NldChhY3RpdmUsICZycS0+ZmVuY2UpOwo+ICsJaWYgKGZl bmNlKQo+ICsJCWZlbmNlID0gZG1hX2ZlbmNlX2dldF9yY3UoZmVuY2UpOwo+ICsJcmN1X3JlYWRf dW5sb2NrKCk7Cj4gKwo+ICsJaWYgKGZlbmNlKSB7Cj4gKwkJZXJyID0gaTkxNV9yZXF1ZXN0X2F3 YWl0X2RtYV9mZW5jZShycSwgZmVuY2UpOwo+ICsJCWRtYV9mZW5jZV9wdXQoZmVuY2UpOwo+ICsJ CWlmIChlcnIpCj4gKwkJCXJldHVybiBlcnI7Cj4gKwl9Cj4gICAKPiAtCV9faTkxNV9hY3RpdmVf cmVxdWVzdF9zZXQoYWN0aXZlLCBycSk7Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAtdm9p ZCBpOTE1X2FjdGl2ZV9yZXRpcmVfbm9vcChzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0 aXZlLAo+IC0JCQkgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gK3ZvaWQgaTkx NV9hY3RpdmVfbm9vcChzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSwgc3RydWN0IGRtYV9mZW5jZV9j YiAqY2IpCj4gICB7Cj4gLQkvKiBTcGFjZSBsZWZ0IGludGVudGlvbmFsbHkgYmxhbmsgKi8KPiAr CWk5MTVfYWN0aXZlX2ZlbmNlX2NiKGZlbmNlLCBjYik7Cj4gICB9Cj4gICAKPiAgICNpZiBJU19F TkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0 aXZlLmgKPiBpbmRleCA5MDAzNGY2MWI3YzIuLjRmNTJmZTYxNDZkMiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9hY3RpdmUuaAo+IEBAIC0xMiw2ICsxMiwxMCBAQAo+ICAgI2luY2x1ZGUgImk5 MTVfYWN0aXZlX3R5cGVzLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCj4gICAKPiAr c3RydWN0IGk5MTVfcmVxdWVzdDsKPiArc3RydWN0IGludGVsX2VuZ2luZV9jczsKPiArc3RydWN0 IGludGVsX3RpbWVsaW5lOwo+ICsKPiAgIC8qCj4gICAgKiBXZSB0cmVhdCByZXF1ZXN0cyBhcyBm ZW5jZXMuIFRoaXMgaXMgbm90IGJlIHRvIGNvbmZ1c2VkIHdpdGggb3VyCj4gICAgKiAiZmVuY2Ug cmVnaXN0ZXJzIiBidXQgcGlwZWxpbmUgc3luY2hyb25pc2F0aW9uIG9iamVjdHMgYWxhIEdMX0FS Ql9zeW5jLgo+IEBAIC0yOCwzMDggKzMyLDEwOCBAQAo+ICAgICogd3JpdGUgYWNjZXNzIHNvIHRo YXQgd2UgY2FuIHBlcmZvcm0gY29uY3VycmVudCByZWFkIG9wZXJhdGlvbnMgYmV0d2Vlbgo+ICAg ICogdGhlIENQVSBhbmQgR1BVIGVuZ2luZXMsIGFzIHdlbGwgYXMgd2FpdGluZyBmb3IgYWxsIHJl bmRlcmluZyB0bwo+ICAgICogY29tcGxldGUsIG9yIHdhaXRpbmcgZm9yIHRoZSBsYXN0IEdQVSB1 c2VyIG9mIGEgImZlbmNlIHJlZ2lzdGVyIi4gVGhlCj4gLSAqIG9iamVjdCB0aGVuIGVtYmVkcyBh ICNpOTE1X2FjdGl2ZV9yZXF1ZXN0IHRvIHRyYWNrIHRoZSBtb3N0IHJlY2VudCAoaW4KPiArICog b2JqZWN0IHRoZW4gZW1iZWRzIGEgI2k5MTVfYWN0aXZlX2ZlbmNlIHRvIHRyYWNrIHRoZSBtb3N0 IHJlY2VudCAoaW4KPiAgICAqIHJldGlyZW1lbnQgb3JkZXIpIHJlcXVlc3QgcmVsZXZhbnQgZm9y IHRoZSBkZXNpcmVkIG1vZGUgb2YgYWNjZXNzLgo+IC0gKiBUaGUgI2k5MTVfYWN0aXZlX3JlcXVl c3QgaXMgdXBkYXRlZCB3aXRoIGk5MTVfYWN0aXZlX3JlcXVlc3Rfc2V0KCkgdG8KPiArICogVGhl ICNpOTE1X2FjdGl2ZV9mZW5jZSBpcyB1cGRhdGVkIHdpdGggaTkxNV9hY3RpdmVfZmVuY2Vfc2V0 KCkgdG8KPiAgICAqIHRyYWNrIHRoZSBtb3N0IHJlY2VudCBmZW5jZSByZXF1ZXN0LCB0eXBpY2Fs bHkgdGhpcyBpcyBkb25lIGFzIHBhcnQgb2YKPiAgICAqIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZl KCkuCj4gICAgKgo+IC0gKiBXaGVuIHRoZSAjaTkxNV9hY3RpdmVfcmVxdWVzdCBjb21wbGV0ZXMg KGlzIHJldGlyZWQpLCBpdCB3aWxsCj4gKyAqIFdoZW4gdGhlICNpOTE1X2FjdGl2ZV9mZW5jZSBj b21wbGV0ZXMgKGlzIHJldGlyZWQpLCBpdCB3aWxsCj4gICAgKiBzaWduYWwgaXRzIGNvbXBsZXRp b24gdG8gdGhlIG93bmVyIHRocm91Z2ggYSBjYWxsYmFjayBhcyB3ZWxsIGFzIG1hcmsKPiAtICog aXRzZWxmIGFzIGlkbGUgKGk5MTVfYWN0aXZlX3JlcXVlc3QucmVxdWVzdCA9PSBOVUxMKS4gVGhl IG93bmVyCj4gKyAqIGl0c2VsZiBhcyBpZGxlIChpOTE1X2FjdGl2ZV9mZW5jZS5yZXF1ZXN0ID09 IE5VTEwpLiBUaGUgb3duZXIKPiAgICAqIGNhbiB0aGVuIHBlcmZvcm0gYW55IGFjdGlvbiwgc3Vj aCBhcyBkZWxheWVkIGZyZWVpbmcgb2YgYW4gYWN0aXZlCj4gICAgKiByZXNvdXJjZSBpbmNsdWRp bmcgaXRzZWxmLgo+ICAgICovCj4gICAKPiAtdm9pZCBpOTE1X2FjdGl2ZV9yZXRpcmVfbm9vcChz dHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlLAo+IC0JCQkgICAgIHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJlcXVlc3QpOwo+ICt2b2lkIGk5MTVfYWN0aXZlX25vb3Aoc3RydWN0IGRtYV9m ZW5jZSAqZmVuY2UsIHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKTsKPiAgIAo+ICAgLyoqCj4gLSAq IGk5MTVfYWN0aXZlX3JlcXVlc3RfaW5pdCAtIHByZXBhcmVzIHRoZSBhY3Rpdml0eSB0cmFja2Vy IGZvciB1c2UKPiArICogX19pOTE1X2FjdGl2ZV9mZW5jZV9pbml0IC0gcHJlcGFyZXMgdGhlIGFj dGl2aXR5IHRyYWNrZXIgZm9yIHVzZQo+ICAgICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgdHJhY2tl cgo+IC0gKiBAcnEgLSBpbml0aWFsIHJlcXVlc3QgdG8gdHJhY2ssIGNhbiBiZSBOVUxMCj4gKyAq IEBmZW5jZSAtIGluaXRpYWwgZmVuY2UgdG8gdHJhY2ssIGNhbiBiZSBOVUxMCj4gICAgKiBAZnVu YyAtIGEgY2FsbGJhY2sgd2hlbiB0aGVuIHRoZSB0cmFja2VyIGlzIHJldGlyZWQgKGJlY29tZXMg aWRsZSksCj4gICAgKiAgICAgICAgIGNhbiBiZSBOVUxMCj4gICAgKgo+IC0gKiBpOTE1X2FjdGl2 ZV9yZXF1ZXN0X2luaXQoKSBwcmVwYXJlcyB0aGUgZW1iZWRkZWQgQGFjdGl2ZSBzdHJ1Y3QgZm9y IHVzZSBhcwo+IC0gKiBhbiBhY3Rpdml0eSB0cmFja2VyLCB0aGF0IGlzIGZvciB0cmFja2luZyB0 aGUgbGFzdCBrbm93biBhY3RpdmUgcmVxdWVzdAo+IC0gKiBhc3NvY2lhdGVkIHdpdGggaXQuIFdo ZW4gdGhlIGxhc3QgcmVxdWVzdCBiZWNvbWVzIGlkbGUsIHdoZW4gaXQgaXMgcmV0aXJlZAo+ICsg KiBpOTE1X2FjdGl2ZV9mZW5jZV9pbml0KCkgcHJlcGFyZXMgdGhlIGVtYmVkZGVkIEBhY3RpdmUg c3RydWN0IGZvciB1c2UgYXMKPiArICogYW4gYWN0aXZpdHkgdHJhY2tlciwgdGhhdCBpcyBmb3Ig dHJhY2tpbmcgdGhlIGxhc3Qga25vd24gYWN0aXZlIGZlbmNlCj4gKyAqIGFzc29jaWF0ZWQgd2l0 aCBpdC4gV2hlbiB0aGUgbGFzdCBmZW5jZSBiZWNvbWVzIGlkbGUsIHdoZW4gaXQgaXMgcmV0aXJl ZAo+ICAgICogYWZ0ZXIgY29tcGxldGlvbiwgdGhlIG9wdGlvbmFsIGNhbGxiYWNrIEBmdW5jIGlz IGludm9rZWQuCj4gICAgKi8KPiAgIHN0YXRpYyBpbmxpbmUgdm9pZAo+IC1pOTE1X2FjdGl2ZV9y ZXF1ZXN0X2luaXQoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2ZSwKPiArX19pOTE1 X2FjdGl2ZV9mZW5jZV9pbml0KHN0cnVjdCBpOTE1X2FjdGl2ZV9mZW5jZSAqYWN0aXZlLAo+ICAg CQkJIHN0cnVjdCBtdXRleCAqbG9jaywKPiAtCQkJIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ IC0JCQkgaTkxNV9hY3RpdmVfcmV0aXJlX2ZuIHJldGlyZSkKPiArCQkJIHZvaWQgKmZlbmNlLAo+ ICsJCQkgZG1hX2ZlbmNlX2Z1bmNfdCBmbikKPiAgIHsKPiAtCVJDVV9JTklUX1BPSU5URVIoYWN0 aXZlLT5yZXF1ZXN0LCBycSk7Cj4gLQlJTklUX0xJU1RfSEVBRCgmYWN0aXZlLT5saW5rKTsKPiAt CWFjdGl2ZS0+cmV0aXJlID0gcmV0aXJlID86IGk5MTVfYWN0aXZlX3JldGlyZV9ub29wOwo+ICsJ UkNVX0lOSVRfUE9JTlRFUihhY3RpdmUtPmZlbmNlLCBmZW5jZSk7Cj4gKwlhY3RpdmUtPmNiLmZ1 bmMgPSBmbiA/OiBpOTE1X2FjdGl2ZV9ub29wOwo+ICAgI2lmIElTX0VOQUJMRUQoQ09ORklHX0RS TV9JOTE1X0RFQlVHX0dFTSkKPiAgIAlhY3RpdmUtPmxvY2sgPSBsb2NrOwo+ICAgI2VuZGlmCj4g ICB9Cj4gICAKPiAtI2RlZmluZSBJTklUX0FDVElWRV9SRVFVRVNUKG5hbWUsIGxvY2spIFwKPiAt CWk5MTVfYWN0aXZlX3JlcXVlc3RfaW5pdCgobmFtZSksIChsb2NrKSwgTlVMTCwgTlVMTCkKPiAt Cj4gLS8qKgo+IC0gKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3NldCAtIHVwZGF0ZXMgdGhlIHRyYWNr ZXIgdG8gd2F0Y2ggdGhlIGN1cnJlbnQgcmVxdWVzdAo+IC0gKiBAYWN0aXZlIC0gdGhlIGFjdGl2 ZSB0cmFja2VyCj4gLSAqIEByZXF1ZXN0IC0gdGhlIHJlcXVlc3QgdG8gd2F0Y2gKPiAtICoKPiAt ICogX19pOTE1X2FjdGl2ZV9yZXF1ZXN0X3NldCgpIHdhdGNoZXMgdGhlIGdpdmVuIEByZXF1ZXN0 IGZvciBjb21wbGV0aW9uLiBXaGlsc3QKPiAtICogdGhhdCBAcmVxdWVzdCBpcyBidXN5LCB0aGUg QGFjdGl2ZSByZXBvcnRzIGJ1c3kuIFdoZW4gdGhhdCBAcmVxdWVzdCBpcwo+IC0gKiByZXRpcmVk LCB0aGUgQGFjdGl2ZSB0cmFja2VyIGlzIHVwZGF0ZWQgdG8gcmVwb3J0IGlkbGUuCj4gLSAqLwo+ IC1zdGF0aWMgaW5saW5lIHZvaWQKPiAtX19pOTE1X2FjdGl2ZV9yZXF1ZXN0X3NldChzdHJ1Y3Qg aTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlLAo+IC0JCQkgIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJlcXVlc3QpCj4gLXsKPiAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dF TSkKPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoYWN0aXZlLT5sb2NrKTsKPiAtI2VuZGlmCj4gLQls aXN0X21vdmUoJmFjdGl2ZS0+bGluaywgJnJlcXVlc3QtPmFjdGl2ZV9saXN0KTsKPiAtCXJjdV9h c3NpZ25fcG9pbnRlcihhY3RpdmUtPnJlcXVlc3QsIHJlcXVlc3QpOwo+IC19Cj4gKyNkZWZpbmUg SU5JVF9BQ1RJVkVfRkVOQ0UoQSwgTE9DSykgXAo+ICsJX19pOTE1X2FjdGl2ZV9mZW5jZV9pbml0 KChBKSwgKExPQ0spLCBOVUxMLCBOVUxMKQo+ICAgCj4gLWludCBfX211c3RfY2hlY2sKPiAtaTkx NV9hY3RpdmVfcmVxdWVzdF9zZXQoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2ZSwK PiAtCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwo+ICtzdHJ1Y3QgZG1hX2ZlbmNlICoKPiAr X19pOTE1X2FjdGl2ZV9mZW5jZV9zZXQoc3RydWN0IGk5MTVfYWN0aXZlX2ZlbmNlICphY3RpdmUs Cj4gKwkJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKTsKPiAgIAo+ICAgLyoqCj4gLSAqIGk5MTVf YWN0aXZlX3JlcXVlc3RfcmF3IC0gcmV0dXJuIHRoZSBhY3RpdmUgcmVxdWVzdAo+ICsgKiBpOTE1 X2FjdGl2ZV9mZW5jZV9zZXQgLSB1cGRhdGVzIHRoZSB0cmFja2VyIHRvIHdhdGNoIHRoZSBjdXJy ZW50IGZlbmNlCj4gICAgKiBAYWN0aXZlIC0gdGhlIGFjdGl2ZSB0cmFja2VyCj4gKyAqIEBycSAt IHRoZSByZXF1ZXN0IHRvIHdhdGNoCj4gICAgKgo+IC0gKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3Jh dygpIHJldHVybnMgdGhlIGN1cnJlbnQgcmVxdWVzdCBiZWluZyB0cmFja2VkLCBvciBOVUxMLgo+ IC0gKiBJdCBkb2VzIG5vdCBvYnRhaW4gYSByZWZlcmVuY2Ugb24gdGhlIHJlcXVlc3QgZm9yIHRo ZSBjYWxsZXIsIHNvIHRoZSBjYWxsZXIKPiAtICogbXVzdCBob2xkIHN0cnVjdF9tdXRleC4KPiAr ICogaTkxNV9hY3RpdmVfZmVuY2Vfc2V0KCkgd2F0Y2hlcyB0aGUgZ2l2ZW4gQHJxIGZvciBjb21w bGV0aW9uLiBXaGlsZQo+ICsgKiB0aGF0IEBycSBpcyBidXN5LCB0aGUgQGFjdGl2ZSByZXBvcnRz IGJ1c3kuIFdoZW4gdGhhdCBAcnEgaXMgc2lnbmFsZWQKPiArICogKG9yIGVsc2UgcmV0aXJlZCkg dGhlIEBhY3RpdmUgdHJhY2tlciBpcyB1cGRhdGVkIHRvIHJlcG9ydCBpZGxlLgo+ICAgICovCj4g LXN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4gLWk5MTVfYWN0aXZlX3JlcXVl c3RfcmF3KGNvbnN0IHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICphY3RpdmUsCj4gLQkJCXN0 cnVjdCBtdXRleCAqbXV0ZXgpCj4gLXsKPiAtCXJldHVybiByY3VfZGVyZWZlcmVuY2VfcHJvdGVj dGVkKGFjdGl2ZS0+cmVxdWVzdCwKPiAtCQkJCQkgbG9ja2RlcF9pc19oZWxkKG11dGV4KSk7Cj4g LX0KPiAtCj4gLS8qKgo+IC0gKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3BlZWsgLSByZXBvcnQgdGhl IGFjdGl2ZSByZXF1ZXN0IGJlaW5nIG1vbml0b3JlZAo+IC0gKiBAYWN0aXZlIC0gdGhlIGFjdGl2 ZSB0cmFja2VyCj4gLSAqCj4gLSAqIGk5MTVfYWN0aXZlX3JlcXVlc3RfcGVlaygpIHJldHVybnMg dGhlIGN1cnJlbnQgcmVxdWVzdCBiZWluZyB0cmFja2VkIGlmCj4gLSAqIHN0aWxsIGFjdGl2ZSwg b3IgTlVMTC4gSXQgZG9lcyBub3Qgb2J0YWluIGEgcmVmZXJlbmNlIG9uIHRoZSByZXF1ZXN0Cj4g LSAqIGZvciB0aGUgY2FsbGVyLCBzbyB0aGUgY2FsbGVyIG11c3QgaG9sZCBzdHJ1Y3RfbXV0ZXgu Cj4gLSAqLwo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgo+IC1pOTE1X2Fj dGl2ZV9yZXF1ZXN0X3BlZWsoY29uc3Qgc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2 ZSwKPiAtCQkJIHN0cnVjdCBtdXRleCAqbXV0ZXgpCj4gLXsKPiAtCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJlcXVlc3Q7Cj4gLQo+IC0JcmVxdWVzdCA9IGk5MTVfYWN0aXZlX3JlcXVlc3RfcmF3KGFj dGl2ZSwgbXV0ZXgpOwo+IC0JaWYgKCFyZXF1ZXN0IHx8IGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQo cmVxdWVzdCkpCj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQo+IC0JcmV0dXJuIHJlcXVlc3Q7Cj4gLX0K PiAtCj4gLS8qKgo+IC0gKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X2dldCAtIHJldHVybiBhIHJlZmVy ZW5jZSB0byB0aGUgYWN0aXZlIHJlcXVlc3QKPiAtICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgdHJh Y2tlcgo+IC0gKgo+IC0gKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X2dldCgpIHJldHVybnMgYSByZWZl cmVuY2UgdG8gdGhlIGFjdGl2ZSByZXF1ZXN0LCBvciBOVUxMCj4gLSAqIGlmIHRoZSBhY3RpdmUg dHJhY2tlciBpcyBpZGxlLiBUaGUgY2FsbGVyIG11c3QgaG9sZCBzdHJ1Y3RfbXV0ZXguCj4gLSAq Lwo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgo+IC1pOTE1X2FjdGl2ZV9y ZXF1ZXN0X2dldChjb25zdCBzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlLAo+IC0J CQlzdHJ1Y3QgbXV0ZXggKm11dGV4KQo+IC17Cj4gLQlyZXR1cm4gaTkxNV9yZXF1ZXN0X2dldChp OTE1X2FjdGl2ZV9yZXF1ZXN0X3BlZWsoYWN0aXZlLCBtdXRleCkpOwo+IC19Cj4gLQo+IC0vKioK PiAtICogX19pOTE1X2FjdGl2ZV9yZXF1ZXN0X2dldF9yY3UgLSByZXR1cm4gYSByZWZlcmVuY2Ug dG8gdGhlIGFjdGl2ZSByZXF1ZXN0Cj4gLSAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIK PiAtICoKPiAtICogX19pOTE1X2FjdGl2ZV9yZXF1ZXN0X2dldCgpIHJldHVybnMgYSByZWZlcmVu Y2UgdG8gdGhlIGFjdGl2ZSByZXF1ZXN0LAo+IC0gKiBvciBOVUxMIGlmIHRoZSBhY3RpdmUgdHJh Y2tlciBpcyBpZGxlLiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgUkNVIHJlYWQKPiAtICogbG9j aywgYnV0IHRoZSByZXR1cm5lZCBwb2ludGVyIGlzIHNhZmUgdG8gdXNlIG91dHNpZGUgb2YgUkNV Lgo+IC0gKi8KPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKPiAtX19pOTE1 X2FjdGl2ZV9yZXF1ZXN0X2dldF9yY3UoY29uc3Qgc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3Qg KmFjdGl2ZSkKPiAtewo+IC0JLyoKPiAtCSAqIFBlcmZvcm1pbmcgYSBsb2NrbGVzcyByZXRyaWV2 YWwgb2YgdGhlIGFjdGl2ZSByZXF1ZXN0IGlzIHN1cGVyCj4gLQkgKiB0cmlja3kuIFNMQUJfVFlQ RVNBRkVfQllfUkNVIG1lcmVseSBndWFyYW50ZWVzIHRoYXQgdGhlIGJhY2tpbmcKPiAtCSAqIHNs YWIgb2YgcmVxdWVzdCBvYmplY3RzIHdpbGwgbm90IGJlIGZyZWVkIHdoaWxzdCB3ZSBob2xkIHRo ZQo+IC0JICogUkNVIHJlYWQgbG9jay4gSXQgZG9lcyBub3QgZ3VhcmFudGVlIHRoYXQgdGhlIHJl cXVlc3QgaXRzZWxmCj4gLQkgKiB3aWxsIG5vdCBiZSBmcmVlZCBhbmQgdGhlbiAqcmV1c2VkKi4g Vml6LAo+IC0JICoKPiAtCSAqIFRocmVhZCBBCQkJVGhyZWFkIEIKPiAtCSAqCj4gLQkgKiBycSA9 IGFjdGl2ZS5yZXF1ZXN0Cj4gLQkgKgkJCQlyZXRpcmUocnEpIC0+IGZyZWUocnEpOwo+IC0JICoJ CQkJKHJxIGlzIG5vdyBmaXJzdCBvbiB0aGUgc2xhYiBmcmVlbGlzdCkKPiAtCSAqCQkJCWFjdGl2 ZS5yZXF1ZXN0ID0gTlVMTAo+IC0JICoKPiAtCSAqCQkJCXJxID0gbmV3IHN1Ym1pc3Npb24gb24g YSBuZXcgb2JqZWN0Cj4gLQkgKiByZWYocnEpCj4gLQkgKgo+IC0JICogVG8gcHJldmVudCB0aGUg cmVxdWVzdCBmcm9tIGJlaW5nIHJldXNlZCB3aGlsc3QgdGhlIGNhbGxlcgo+IC0JICogdXNlcyBp dCwgd2UgdGFrZSBhIHJlZmVyZW5jZSBsaWtlIG5vcm1hbC4gV2hpbHN0IGFjcXVpcmluZwo+IC0J ICogdGhlIHJlZmVyZW5jZSB3ZSBjaGVjayB0aGF0IGl0IGlzIG5vdCBpbiBhIGRlc3Ryb3llZCBz dGF0ZQo+IC0JICogKHJlZmNudCA9PSAwKS4gVGhhdCBwcmV2ZW50cyB0aGUgcmVxdWVzdCBiZWlu ZyByZWFsbG9jYXRlZAo+IC0JICogd2hpbHN0IHRoZSBjYWxsZXIgaG9sZHMgb24gdG8gaXQuIFRv IGNoZWNrIHRoYXQgdGhlIHJlcXVlc3QKPiAtCSAqIHdhcyBub3QgcmVhbGxvY2F0ZWQgYXMgd2Ug YWNxdWlyZWQgdGhlIHJlZmVyZW5jZSB3ZSBoYXZlIHRvCj4gLQkgKiBjaGVjayB0aGF0IG91ciBy ZXF1ZXN0IHJlbWFpbnMgdGhlIGFjdGl2ZSByZXF1ZXN0IGFjcm9zcwo+IC0JICogdGhlIGxvb2t1 cCwgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGEgc2VxbG9jay4gVGhlIHZpc2liaWxpdHkKPiAtCSAq IG9mIHRoZSBwb2ludGVyIHZlcnN1cyB0aGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIGNvbnRyb2xs ZWQKPiAtCSAqIGJ5IHVzaW5nIFJDVSBiYXJyaWVycyAocmN1X2RlcmVmZXJlbmNlIGFuZCByY3Vf YXNzaWduX3BvaW50ZXIpLgo+IC0JICoKPiAtCSAqIEluIHRoZSBtaWRkbGUgb2YgYWxsIHRoYXQs IHdlIGluc3BlY3Qgd2hldGhlciB0aGUgcmVxdWVzdCBpcwo+IC0JICogY29tcGxldGUuIFJldGly aW5nIGlzIGxhenkgc28gdGhlIHJlcXVlc3QgbWF5IGJlIGNvbXBsZXRlZCBsb25nCj4gLQkgKiBi ZWZvcmUgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIHVwZGF0ZWQuIFF1ZXJ5aW5nIHdoZXRoZXIgdGhl Cj4gLQkgKiByZXF1ZXN0IGlzIGNvbXBsZXRlIGlzIGZhciBjaGVhcGVyIChhcyBpdCBpbnZvbHZl cyBubyBsb2NrZWQKPiAtCSAqIGluc3RydWN0aW9ucyBzZXR0aW5nIGNhY2hlbGluZXMgdG8gZXhj bHVzaXZlKSB0aGFuIGFjcXVpcmluZwo+IC0JICogdGhlIHJlZmVyZW5jZSwgc28gd2UgZG8gaXQg Zmlyc3QuIFRoZSBSQ1UgcmVhZCBsb2NrIGVuc3VyZXMgdGhlCj4gLQkgKiBwb2ludGVyIGRlcmVm ZXJlbmNlIGlzIHZhbGlkLCBidXQgZG9lcyBub3QgZW5zdXJlIHRoYXQgdGhlCj4gLQkgKiBzZXFu byBub3IgSFdTIGlzIHRoZSByaWdodCBvbmUhIEhvd2V2ZXIsIGlmIHRoZSByZXF1ZXN0IHdhcwo+ IC0JICogcmVhbGxvY2F0ZWQsIHRoYXQgbWVhbnMgdGhlIGFjdGl2ZSB0cmFja2VyJ3MgcmVxdWVz dCB3YXMgY29tcGxldGUuCj4gLQkgKiBJZiB0aGUgbmV3IHJlcXVlc3QgaXMgYWxzbyBjb21wbGV0 ZSwgdGhlbiBib3RoIGFyZSBhbmQgd2UgY2FuCj4gLQkgKiBqdXN0IHJlcG9ydCB0aGUgYWN0aXZl IHRyYWNrZXIgaXMgaWRsZS4gSWYgdGhlIG5ldyByZXF1ZXN0IGlzCj4gLQkgKiBpbmNvbXBsZXRl LCB0aGVuIHdlIGFjcXVpcmUgYSByZWZlcmVuY2Ugb24gaXQgYW5kIGNoZWNrIHRoYXQKPiAtCSAq IGl0IHJlbWFpbmVkIHRoZSBhY3RpdmUgcmVxdWVzdC4KPiAtCSAqCj4gLQkgKiBJdCBpcyB0aGVu IGltcGVyYXRpdmUgdGhhdCB3ZSBkbyBub3QgemVybyB0aGUgcmVxdWVzdCBvbgo+IC0JICogcmVh bGxvY2F0aW9uLCBzbyB0aGF0IHdlIGNhbiBjaGFzZSB0aGUgZGFuZ2xpbmcgcG9pbnRlcnMhCj4g LQkgKiBTZWUgaTkxNV9yZXF1ZXN0X2FsbG9jKCkuCj4gLQkgKi8KPiAtCWRvIHsKPiAtCQlzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0Owo+IC0KPiAtCQlyZXF1ZXN0ID0gcmN1X2RlcmVmZXJl bmNlKGFjdGl2ZS0+cmVxdWVzdCk7Cj4gLQkJaWYgKCFyZXF1ZXN0IHx8IGk5MTVfcmVxdWVzdF9j b21wbGV0ZWQocmVxdWVzdCkpCj4gLQkJCXJldHVybiBOVUxMOwo+IC0KPiAtCQkvKgo+IC0JCSAq IEFuIGVzcGVjaWFsbHkgc2lsbHkgY29tcGlsZXIgY291bGQgZGVjaWRlIHRvIHJlY29tcHV0ZSB0 aGUKPiAtCQkgKiByZXN1bHQgb2YgaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZCwgbW9yZSBzcGVjaWZp Y2FsbHkKPiAtCQkgKiByZS1lbWl0IHRoZSBsb2FkIGZvciByZXF1ZXN0LT5mZW5jZS5zZXFuby4g QSByYWNlIHdvdWxkIGNhdGNoCj4gLQkJICogYSBsYXRlciBzZXFubyB2YWx1ZSwgd2hpY2ggY291 bGQgZmxpcCB0aGUgcmVzdWx0IGZyb20gdHJ1ZSB0bwo+IC0JCSAqIGZhbHNlLiBXaGljaCBtZWFu cyBwYXJ0IG9mIHRoZSBpbnN0cnVjdGlvbnMgYmVsb3cgbWlnaHQgbm90Cj4gLQkJICogYmUgZXhl Y3V0ZWQsIHdoaWxlIGxhdGVyIG9uIGluc3RydWN0aW9ucyBhcmUgZXhlY3V0ZWQuIER1ZSB0bwo+ IC0JCSAqIGJhcnJpZXJzIHdpdGhpbiB0aGUgcmVmY291bnRpbmcgdGhlIGluY29uc2lzdGVuY3kg Y2FuJ3QgcmVhY2gKPiAtCQkgKiBwYXN0IHRoZSBjYWxsIHRvIGk5MTVfcmVxdWVzdF9nZXRfcmN1 LCBidXQgbm90IGV4ZWN1dGluZwo+IC0JCSAqIHRoYXQgd2hpbGUgc3RpbGwgZXhlY3V0aW5nIGk5 MTVfcmVxdWVzdF9wdXQoKSBjcmVhdGVzCj4gLQkJICogaGF2b2MgZW5vdWdoLiAgUHJldmVudCB0 aGlzIHdpdGggYSBjb21waWxlciBiYXJyaWVyLgo+IC0JCSAqLwo+IC0JCWJhcnJpZXIoKTsKPiAt Cj4gLQkJcmVxdWVzdCA9IGk5MTVfcmVxdWVzdF9nZXRfcmN1KHJlcXVlc3QpOwo+IC0KPiAtCQkv Kgo+IC0JCSAqIFdoYXQgc3RvcHMgdGhlIGZvbGxvd2luZyByY3VfYWNjZXNzX3BvaW50ZXIoKSBm cm9tIG9jY3VycmluZwo+IC0JCSAqIGJlZm9yZSB0aGUgYWJvdmUgaTkxNV9yZXF1ZXN0X2dldF9y Y3UoKT8gSWYgd2Ugd2VyZQo+IC0JCSAqIHRvIHJlYWQgdGhlIHZhbHVlIGJlZm9yZSBwYXVzaW5n IHRvIGdldCB0aGUgcmVmZXJlbmNlIHRvCj4gLQkJICogdGhlIHJlcXVlc3QsIHdlIG1heSBub3Qg bm90aWNlIGEgY2hhbmdlIGluIHRoZSBhY3RpdmUKPiAtCQkgKiB0cmFja2VyLgo+IC0JCSAqCj4g LQkJICogVGhlIHJjdV9hY2Nlc3NfcG9pbnRlcigpIGlzIGEgbWVyZSBjb21waWxlciBiYXJyaWVy LCB3aGljaAo+IC0JCSAqIG1lYW5zIGJvdGggdGhlIENQVSBhbmQgY29tcGlsZXIgYXJlIGZyZWUg dG8gcGVyZm9ybSB0aGUKPiAtCQkgKiBtZW1vcnkgcmVhZCB3aXRob3V0IGNvbnN0cmFpbnQuIFRo ZSBjb21waWxlciBvbmx5IGhhcyB0bwo+IC0JCSAqIGVuc3VyZSB0aGF0IGFueSBvcGVyYXRpb25z IGFmdGVyIHRoZSByY3VfYWNjZXNzX3BvaW50ZXIoKQo+IC0JCSAqIG9jY3VyIGFmdGVyd2FyZHMg aW4gcHJvZ3JhbSBvcmRlci4gVGhpcyBtZWFucyB0aGUgcmVhZCBtYXkKPiAtCQkgKiBiZSBwZXJm b3JtZWQgZWFybGllciBieSBhbiBvdXQtb2Ytb3JkZXIgQ1BVLCBvciBhZHZlbnR1cm91cwo+IC0J CSAqIGNvbXBpbGVyLgo+IC0JCSAqCj4gLQkJICogVGhlIGF0b21pYyBvcGVyYXRpb24gYXQgdGhl IGhlYXJ0IG9mCj4gLQkJICogaTkxNV9yZXF1ZXN0X2dldF9yY3UoKSwgc2VlIGRtYV9mZW5jZV9n ZXRfcmN1KCksIGlzCj4gLQkJICogYXRvbWljX2luY19ub3RfemVybygpIHdoaWNoIGlzIG9ubHkg YSBmdWxsIG1lbW9yeSBiYXJyaWVyCj4gLQkJICogd2hlbiBzdWNjZXNzZnVsLiBUaGF0IGlzLCBp ZiBpOTE1X3JlcXVlc3RfZ2V0X3JjdSgpCj4gLQkJICogcmV0dXJucyB0aGUgcmVxdWVzdCAoYW5k IHNvIHdpdGggdGhlIHJlZmVyZW5jZSBjb3VudGVkCj4gLQkJICogaW5jcmVtZW50ZWQpIHRoZW4g dGhlIGZvbGxvd2luZyByZWFkIGZvciByY3VfYWNjZXNzX3BvaW50ZXIoKQo+IC0JCSAqIG11c3Qg b2NjdXIgYWZ0ZXIgdGhlIGF0b21pYyBvcGVyYXRpb24gYW5kIHNvIGNvbmZpcm0KPiAtCQkgKiB0 aGF0IHRoaXMgcmVxdWVzdCBpcyB0aGUgb25lIGN1cnJlbnRseSBiZWluZyB0cmFja2VkLgo+IC0J CSAqCj4gLQkJICogVGhlIGNvcnJlc3BvbmRpbmcgd3JpdGUgYmFycmllciBpcyBwYXJ0IG9mCj4g LQkJICogcmN1X2Fzc2lnbl9wb2ludGVyKCkuCj4gLQkJICovCj4gLQkJaWYgKCFyZXF1ZXN0IHx8 IHJlcXVlc3QgPT0gcmN1X2FjY2Vzc19wb2ludGVyKGFjdGl2ZS0+cmVxdWVzdCkpCj4gLQkJCXJl dHVybiByY3VfcG9pbnRlcl9oYW5kb2ZmKHJlcXVlc3QpOwo+IC0KPiAtCQlpOTE1X3JlcXVlc3Rf cHV0KHJlcXVlc3QpOwo+IC0JfSB3aGlsZSAoMSk7Cj4gLX0KPiAtCj4gK2ludCBfX211c3RfY2hl Y2sKPiAraTkxNV9hY3RpdmVfZmVuY2Vfc2V0KHN0cnVjdCBpOTE1X2FjdGl2ZV9mZW5jZSAqYWN0 aXZlLAo+ICsJCSAgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKTsKPiAgIC8qKgo+IC0gKiBp OTE1X2FjdGl2ZV9yZXF1ZXN0X2dldF91bmxvY2tlZCAtIHJldHVybiBhIHJlZmVyZW5jZSB0byB0 aGUgYWN0aXZlIHJlcXVlc3QKPiArICogaTkxNV9hY3RpdmVfZmVuY2VfZ2V0IC0gcmV0dXJuIGEg cmVmZXJlbmNlIHRvIHRoZSBhY3RpdmUgZmVuY2UKPiAgICAqIEBhY3RpdmUgLSB0aGUgYWN0aXZl IHRyYWNrZXIKPiAgICAqCj4gLSAqIGk5MTVfYWN0aXZlX3JlcXVlc3RfZ2V0X3VubG9ja2VkKCkg cmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJlcXVlc3QsCj4gKyAqIGk5MTVfYWN0 aXZlX2ZlbmNlX2dldCgpIHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGFjdGl2ZSBmZW5jZSwK PiAgICAqIG9yIE5VTEwgaWYgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGlkbGUuIFRoZSByZWZlcmVu Y2UgaXMgb2J0YWluZWQgdW5kZXIgUkNVLAo+ICAgICogc28gbm8gbG9ja2luZyBpcyByZXF1aXJl ZCBieSB0aGUgY2FsbGVyLgo+ICAgICoKPiAtICogVGhlIHJlZmVyZW5jZSBzaG91bGQgYmUgZnJl ZWQgd2l0aCBpOTE1X3JlcXVlc3RfcHV0KCkuCj4gKyAqIFRoZSByZWZlcmVuY2Ugc2hvdWxkIGJl IGZyZWVkIHdpdGggZG1hX2ZlbmNlX3B1dCgpLgo+ICAgICovCj4gLXN0YXRpYyBpbmxpbmUgc3Ry dWN0IGk5MTVfcmVxdWVzdCAqCj4gLWk5MTVfYWN0aXZlX3JlcXVlc3RfZ2V0X3VubG9ja2VkKGNv bnN0IHN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1ZXN0ICphY3RpdmUpCj4gK3N0YXRpYyBpbmxpbmUg c3RydWN0IGRtYV9mZW5jZSAqCj4gK2k5MTVfYWN0aXZlX2ZlbmNlX2dldChzdHJ1Y3QgaTkxNV9h Y3RpdmVfZmVuY2UgKmFjdGl2ZSkKPiAgIHsKPiAtCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVl c3Q7Cj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiAgIAo+ICAgCXJjdV9yZWFkX2xvY2so KTsKPiAtCXJlcXVlc3QgPSBfX2k5MTVfYWN0aXZlX3JlcXVlc3RfZ2V0X3JjdShhY3RpdmUpOwo+ ICsJZmVuY2UgPSBkbWFfZmVuY2VfZ2V0X3JjdV9zYWZlKCZhY3RpdmUtPmZlbmNlKTsKPiAgIAly Y3VfcmVhZF91bmxvY2soKTsKPiAgIAo+IC0JcmV0dXJuIHJlcXVlc3Q7Cj4gKwlyZXR1cm4gZmVu Y2U7Cj4gICB9Cj4gICAKPiAgIC8qKgo+IC0gKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X2lzc2V0IC0g cmVwb3J0IHdoZXRoZXIgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGFzc2lnbmVkCj4gKyAqIGk5MTVf YWN0aXZlX2ZlbmNlX2lzc2V0IC0gcmVwb3J0IHdoZXRoZXIgdGhlIGFjdGl2ZSB0cmFja2VyIGlz IGFzc2lnbmVkCj4gICAgKiBAYWN0aXZlIC0gdGhlIGFjdGl2ZSB0cmFja2VyCj4gICAgKgo+IC0g KiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X2lzc2V0KCkgcmV0dXJucyB0cnVlIGlmIHRoZSBhY3RpdmUg dHJhY2tlciBpcyBjdXJyZW50bHkKPiAtICogYXNzaWduZWQgdG8gYSByZXF1ZXN0LiBEdWUgdG8g dGhlIGxhenkgcmV0aXJpbmcsIHRoYXQgcmVxdWVzdCBtYXkgYmUgaWRsZQo+ICsgKiBpOTE1X2Fj dGl2ZV9mZW5jZV9pc3NldCgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgYWN0aXZlIHRyYWNrZXIgaXMg Y3VycmVudGx5Cj4gKyAqIGFzc2lnbmVkIHRvIGEgZmVuY2UuIER1ZSB0byB0aGUgbGF6eSByZXRp cmluZywgdGhhdCBmZW5jZSBtYXkgYmUgaWRsZQo+ICAgICogYW5kIHRoaXMgbWF5IHJlcG9ydCBz dGFsZSBpbmZvcm1hdGlvbi4KPiAgICAqLwo+ICAgc3RhdGljIGlubGluZSBib29sCj4gLWk5MTVf YWN0aXZlX3JlcXVlc3RfaXNzZXQoY29uc3Qgc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFj dGl2ZSkKPiAraTkxNV9hY3RpdmVfZmVuY2VfaXNzZXQoY29uc3Qgc3RydWN0IGk5MTVfYWN0aXZl X2ZlbmNlICphY3RpdmUpCj4gICB7Cj4gLQlyZXR1cm4gcmN1X2FjY2Vzc19wb2ludGVyKGFjdGl2 ZS0+cmVxdWVzdCk7Cj4gKwlyZXR1cm4gcmN1X2FjY2Vzc19wb2ludGVyKGFjdGl2ZS0+ZmVuY2Up Owo+ICAgfQo+ICAgCj4gLS8qKgo+IC0gKiBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3JldGlyZSAtIHdh aXRzIHVudGlsIHRoZSByZXF1ZXN0IGlzIHJldGlyZWQKPiAtICogQGFjdGl2ZSAtIHRoZSBhY3Rp dmUgcmVxdWVzdCBvbiB3aGljaCB0byB3YWl0Cj4gLSAqCj4gLSAqIGk5MTVfYWN0aXZlX3JlcXVl c3RfcmV0aXJlKCkgd2FpdHMgdW50aWwgdGhlIHJlcXVlc3QgaXMgY29tcGxldGVkLAo+IC0gKiBh bmQgdGhlbiBlbnN1cmVzIHRoYXQgYXQgbGVhc3QgdGhlIHJldGlyZW1lbnQgaGFuZGxlciBmb3Ig dGhpcwo+IC0gKiBAYWN0aXZlIHRyYWNrZXIgaXMgY2FsbGVkIGJlZm9yZSByZXR1cm5pbmcuIElm IHRoZSBAYWN0aXZlCj4gLSAqIHRyYWNrZXIgaXMgaWRsZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMg aW1tZWRpYXRlbHkuCj4gLSAqLwo+IC1zdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sKPiAt aTkxNV9hY3RpdmVfcmVxdWVzdF9yZXRpcmUoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFj dGl2ZSwKPiAtCQkJICAgc3RydWN0IG11dGV4ICptdXRleCkKPiArc3RhdGljIGlubGluZSB2b2lk Cj4gK2k5MTVfYWN0aXZlX2ZlbmNlX2NiKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLCBzdHJ1Y3Qg ZG1hX2ZlbmNlX2NiICpjYikKPiAgIHsKPiAtCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3Q7 Cj4gLQlsb25nIHJldDsKPiAtCj4gLQlyZXF1ZXN0ID0gaTkxNV9hY3RpdmVfcmVxdWVzdF9yYXco YWN0aXZlLCBtdXRleCk7Cj4gLQlpZiAoIXJlcXVlc3QpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0J cmV0ID0gaTkxNV9yZXF1ZXN0X3dhaXQocmVxdWVzdCwKPiAtCQkJCUk5MTVfV0FJVF9JTlRFUlJV UFRJQkxFLAo+IC0JCQkJTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+IC0JaWYgKHJldCA8IDApCj4g LQkJcmV0dXJuIHJldDsKPiArCXN0cnVjdCBpOTE1X2FjdGl2ZV9mZW5jZSAqYWN0aXZlID0KPiAr CQljb250YWluZXJfb2YoY2IsIHR5cGVvZigqYWN0aXZlKSwgY2IpOwo+ICAgCj4gLQlsaXN0X2Rl bF9pbml0KCZhY3RpdmUtPmxpbmspOwo+IC0JUkNVX0lOSVRfUE9JTlRFUihhY3RpdmUtPnJlcXVl c3QsIE5VTEwpOwo+IC0KPiAtCWFjdGl2ZS0+cmV0aXJlKGFjdGl2ZSwgcmVxdWVzdCk7Cj4gLQo+ IC0JcmV0dXJuIDA7Cj4gKwlSQ1VfSU5JVF9QT0lOVEVSKGFjdGl2ZS0+ZmVuY2UsIE5VTEwpOwo+ ICAgfQo+ICAgCj4gICAvKgo+IEBAIC0zNTgsNDcgKzE2Miw0MCBAQCBpOTE1X2FjdGl2ZV9yZXF1 ZXN0X3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlLAo+ICAgICogc3lu Y2hyb25pc2F0aW9uLgo+ICAgICovCj4gICAKPiAtdm9pZCBfX2k5MTVfYWN0aXZlX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gLQkJCXN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVm LAo+ICt2b2lkIF9faTkxNV9hY3RpdmVfaW5pdChzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwKPiAg IAkJCWludCAoKmFjdGl2ZSkoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpLAo+ICAgCQkJdm9pZCAo KnJldGlyZSkoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpLAo+ICAgCQkJc3RydWN0IGxvY2tfY2xh c3Nfa2V5ICprZXkpOwo+IC0jZGVmaW5lIGk5MTVfYWN0aXZlX2luaXQoaTkxNSwgcmVmLCBhY3Rp dmUsIHJldGlyZSkgZG8gewkJXAo+ICsjZGVmaW5lIGk5MTVfYWN0aXZlX2luaXQocmVmLCBhY3Rp dmUsIHJldGlyZSkgZG8gewkJXAo+ICAgCXN0YXRpYyBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgX19r ZXk7CQkJCVwKPiAgIAkJCQkJCQkJCVwKPiAtCV9faTkxNV9hY3RpdmVfaW5pdChpOTE1LCByZWYs IGFjdGl2ZSwgcmV0aXJlLCAmX19rZXkpOwkJXAo+ICsJX19pOTE1X2FjdGl2ZV9pbml0KHJlZiwg YWN0aXZlLCByZXRpcmUsICZfX2tleSk7CQlcCj4gICB9IHdoaWxlICgwKQo+ICAgCj4gICBpbnQg aTkxNV9hY3RpdmVfcmVmKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmLAo+ICAgCQkgICAgc3RydWN0 IGludGVsX3RpbWVsaW5lICp0bCwKPiAtCQkgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpOwo+ ICsJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSk7Cj4gICAKPiAgIHN0YXRpYyBpbmxpbmUg aW50Cj4gICBpOTE1X2FjdGl2ZV9hZGRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZiwg c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICB7Cj4gLQlyZXR1cm4gaTkxNV9hY3RpdmVfcmVm KHJlZiwgaTkxNV9yZXF1ZXN0X3RpbWVsaW5lKHJxKSwgcnEpOwo+ICsJcmV0dXJuIGk5MTVfYWN0 aXZlX3JlZihyZWYsIGk5MTVfcmVxdWVzdF90aW1lbGluZShycSksICZycS0+ZmVuY2UpOwo+ICAg fQo+ICAgCj4gICB2b2lkIGk5MTVfYWN0aXZlX3NldF9leGNsdXNpdmUoc3RydWN0IGk5MTVfYWN0 aXZlICpyZWYsIHN0cnVjdCBkbWFfZmVuY2UgKmYpOwo+ICAgCj4gICBzdGF0aWMgaW5saW5lIGJv b2wgaTkxNV9hY3RpdmVfaGFzX2V4Y2x1c2l2ZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZikKPiAg IHsKPiAtCXJldHVybiByY3VfYWNjZXNzX3BvaW50ZXIocmVmLT5leGNsKTsKPiArCXJldHVybiBy Y3VfYWNjZXNzX3BvaW50ZXIocmVmLT5leGNsLmZlbmNlKTsKPiAgIH0KPiAgIAo+ICAgaW50IGk5 MTVfYWN0aXZlX3dhaXQoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpOwo+ICAgCj4gLWludCBpOTE1 X3JlcXVlc3RfYXdhaXRfYWN0aXZlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+IC0JCQkgICAg ICBzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZik7Cj4gLWludCBpOTE1X3JlcXVlc3RfYXdhaXRfYWN0 aXZlX3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gLQkJCQkgICAgICBzdHJ1Y3Qg aTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlKTsKPiAraW50IGk5MTVfcmVxdWVzdF9hd2FpdF9h Y3RpdmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKTsK PiAgIAo+ICAgaW50IGk5MTVfYWN0aXZlX2FjcXVpcmUoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYp Owo+ICtib29sIGk5MTVfYWN0aXZlX2FjcXVpcmVfaWZfYnVzeShzdHJ1Y3QgaTkxNV9hY3RpdmUg KnJlZik7Cj4gICB2b2lkIGk5MTVfYWN0aXZlX3JlbGVhc2Uoc3RydWN0IGk5MTVfYWN0aXZlICpy ZWYpOwo+IC12b2lkIF9faTkxNV9hY3RpdmVfcmVsZWFzZV9uZXN0ZWQoc3RydWN0IGk5MTVfYWN0 aXZlICpyZWYsIGludCBzdWJjbGFzcyk7Cj4gLQo+IC1ib29sIGk5MTVfYWN0aXZlX3RyeWdyYWIo c3RydWN0IGk5MTVfYWN0aXZlICpyZWYpOwo+IC12b2lkIGk5MTVfYWN0aXZlX3VuZ3JhYihzdHJ1 Y3QgaTkxNV9hY3RpdmUgKnJlZik7Cj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgYm9vbAo+ICAgaTkx NV9hY3RpdmVfaXNfaWRsZShjb25zdCBzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZikKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmVfdHlwZXMuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlX3R5cGVzLmgKPiBpbmRleCAwMjExNjdmMDAwNGQuLmQ4 OWE3NGMxNDJjNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2 ZV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmVfdHlwZXMu aAo+IEBAIC0xNywxNyArMTcsOSBAQAo+ICAgCj4gICAjaW5jbHVkZSAiaTkxNV91dGlscy5oIgo+ ICAgCj4gLXN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+IC1zdHJ1Y3QgaTkxNV9hY3RpdmVfcmVx dWVzdDsKPiAtc3RydWN0IGk5MTVfcmVxdWVzdDsKPiAtCj4gLXR5cGVkZWYgdm9pZCAoKmk5MTVf YWN0aXZlX3JldGlyZV9mbikoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKiwKPiAtCQkJCSAg ICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKik7Cj4gLQo+IC1zdHJ1Y3QgaTkxNV9hY3RpdmVfcmVx dWVzdCB7Cj4gLQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0IF9fcmN1ICpyZXF1ZXN0Owo+IC0Jc3RydWN0 IGxpc3RfaGVhZCBsaW5rOwo+IC0JaTkxNV9hY3RpdmVfcmV0aXJlX2ZuIHJldGlyZTsKPiArc3Ry dWN0IGk5MTVfYWN0aXZlX2ZlbmNlIHsKPiArCXN0cnVjdCBkbWFfZmVuY2UgX19yY3UgKmZlbmNl Owo+ICsJc3RydWN0IGRtYV9mZW5jZV9jYiBjYjsKPiAgICNpZiBJU19FTkFCTEVEKENPTkZJR19E Uk1fSTkxNV9ERUJVR19HRU0pCj4gICAJLyoKPiAgIAkgKiBJbmNvcnBvcmVhbCEKPiBAQCAtNTMs MjAgKzQ1LDE3IEBAIHN0cnVjdCBhY3RpdmVfbm9kZTsKPiAgICNkZWZpbmUgaTkxNV9hY3RpdmVf bWF5X3NsZWVwKGZuKSBwdHJfcGFja19iaXRzKCYoZm4pLCBJOTE1X0FDVElWRV9NQVlfU0xFRVAs IDIpCj4gICAKPiAgIHN0cnVjdCBpOTE1X2FjdGl2ZSB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNTsKPiArCWF0b21pY190IGNvdW50Owo+ICsJc3RydWN0IG11dGV4IG11dGV4Owo+ ICAgCj4gICAJc3RydWN0IGFjdGl2ZV9ub2RlICpjYWNoZTsKPiAgIAlzdHJ1Y3QgcmJfcm9vdCB0 cmVlOwo+IC0Jc3RydWN0IG11dGV4IG11dGV4Owo+IC0JYXRvbWljX3QgY291bnQ7Cj4gICAKPiAg IAkvKiBQcmVhbGxvY2F0ZWQgImV4Y2x1c2l2ZSIgbm9kZSAqLwo+IC0Jc3RydWN0IGRtYV9mZW5j ZSBfX3JjdSAqZXhjbDsKPiAtCXN0cnVjdCBkbWFfZmVuY2VfY2IgZXhjbF9jYjsKPiArCXN0cnVj dCBpOTE1X2FjdGl2ZV9mZW5jZSBleGNsOwo+ICAgCj4gICAJdW5zaWduZWQgbG9uZyBmbGFnczsK PiAgICNkZWZpbmUgSTkxNV9BQ1RJVkVfUkVUSVJFX1NMRUVQUyBCSVQoMCkKPiAtI2RlZmluZSBJ OTE1X0FDVElWRV9HUkFCX0JJVCAxCj4gICAKPiAgIAlpbnQgKCphY3RpdmUpKHN0cnVjdCBpOTE1 X2FjdGl2ZSAqcmVmKTsKPiAgIAl2b2lkICgqcmV0aXJlKShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJl Zik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggOTM0ZWE3NzZhNDZhLi5hODg4NDk1 NDRjOGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtODkyLDI4ICs4OTIsMzgg QEAgd2FpdF9mb3JfdGltZWxpbmVzKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIHVuc2lnbmVkIGludCB3 YWl0LCBsb25nIHRpbWVvdXQpCj4gICAKPiAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmdGltZWxpbmVz LT5sb2NrLCBmbGFncyk7Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh0bCwgJnRpbWVsaW5lcy0+ YWN0aXZlX2xpc3QsIGxpbmspIHsKPiAtCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiArCQlz dHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZTsKPiAgIAo+IC0JCXJxID0gaTkxNV9hY3RpdmVfcmVxdWVz dF9nZXRfdW5sb2NrZWQoJnRsLT5sYXN0X3JlcXVlc3QpOwo+IC0JCWlmICghcnEpCj4gKwkJZmVu Y2UgPSBpOTE1X2FjdGl2ZV9mZW5jZV9nZXQoJnRsLT5sYXN0X3JlcXVlc3QpOwo+ICsJCWlmICgh ZmVuY2UpCj4gICAJCQljb250aW51ZTsKPiAgIAo+ICAgCQlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZ0aW1lbGluZXMtPmxvY2ssIGZsYWdzKTsKPiAgIAo+IC0JCS8qCj4gLQkJICogIlJhY2UtdG8t aWRsZSIuCj4gLQkJICoKPiAtCQkgKiBTd2l0Y2hpbmcgdG8gdGhlIGtlcm5lbCBjb250ZXh0IGlz IG9mdGVuIHVzZWQgYSBzeW5jaHJvbm91cwo+IC0JCSAqIHN0ZXAgcHJpb3IgdG8gaWRsaW5nLCBl LmcuIGluIHN1c3BlbmQgZm9yIGZsdXNoaW5nIGFsbAo+IC0JCSAqIGN1cnJlbnQgb3BlcmF0aW9u cyB0byBtZW1vcnkgYmVmb3JlIHNsZWVwaW5nLiBUaGVzZSB3ZQo+IC0JCSAqIHdhbnQgdG8gY29t cGxldGUgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSB0byBhdm9pZCBwcm9sb25nZWQKPiAtCQkgKiBz dGFsbHMsIHNvIGFsbG93IHRoZSBncHUgdG8gYm9vc3QgdG8gbWF4aW11bSBjbG9ja3MuCj4gLQkJ ICovCj4gLQkJaWYgKHdhaXQgJiBJOTE1X1dBSVRfRk9SX0lETEVfQk9PU1QpCj4gLQkJCWdlbjZf cnBzX2Jvb3N0KHJxKTsKPiArCQlpZiAoIWRtYV9mZW5jZV9pc19pOTE1KGZlbmNlKSkgewo+ICsJ CQl0aW1lb3V0ID0gZG1hX2ZlbmNlX3dhaXRfdGltZW91dChmZW5jZSwKPiArCQkJCQkJCSBmbGFn cyAmIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxFLAo+ICsJCQkJCQkJIHRpbWVvdXQpOwo+ICsJCX0g ZWxzZSB7Cj4gKwkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0gdG9fcmVxdWVzdChmZW5jZSk7 Cj4gKwo+ICsJCQkvKgo+ICsJCQkgKiAiUmFjZS10by1pZGxlIi4KPiArCQkJICoKPiArCQkJICog U3dpdGNoaW5nIHRvIHRoZSBrZXJuZWwgY29udGV4dCBpcyBvZnRlbiB1c2VkIGFzCj4gKwkJCSAq IGEgc3luY2hyb25vdXMgc3RlcCBwcmlvciB0byBpZGxpbmcsIGUuZy4gaW4gc3VzcGVuZAo+ICsJ CQkgKiBmb3IgZmx1c2hpbmcgYWxsIGN1cnJlbnQgb3BlcmF0aW9ucyB0byBtZW1vcnkgYmVmb3Jl Cj4gKwkJCSAqIHNsZWVwaW5nLiBUaGVzZSB3ZSB3YW50IHRvIGNvbXBsZXRlIGFzIHF1aWNrbHkg YXMKPiArCQkJICogcG9zc2libGUgdG8gYXZvaWQgcHJvbG9uZ2VkIHN0YWxscywgc28gYWxsb3cg dGhlIGdwdQo+ICsJCQkgKiB0byBib29zdCB0byBtYXhpbXVtIGNsb2Nrcy4KPiArCQkJICovCj4g KwkJCWlmIChmbGFncyAmIEk5MTVfV0FJVF9GT1JfSURMRV9CT09TVCkKPiArCQkJCWdlbjZfcnBz X2Jvb3N0KHJxKTsKPiArCj4gKwkJCXRpbWVvdXQgPSBpOTE1X3JlcXVlc3Rfd2FpdChycSwgZmxh Z3MsIHRpbWVvdXQpOwo+ICsJCX0KPiAgIAo+IC0JCXRpbWVvdXQgPSBpOTE1X3JlcXVlc3Rfd2Fp dChycSwgd2FpdCwgdGltZW91dCk7Cj4gLQkJaTkxNV9yZXF1ZXN0X3B1dChycSk7Cj4gKwkJZG1h X2ZlbmNlX3B1dChmZW5jZSk7Cj4gICAJCWlmICh0aW1lb3V0IDwgMCkKPiAgIAkJCXJldHVybiB0 aW1lb3V0Owo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCBhMzUx Yjk4YWZlMDMuLmJmNTdjNDFmYTFmYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jCj4gQEAgLTE4NjEsNyArMTg2MSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV92bWFf b3BzIHBkX3ZtYV9vcHMgPSB7Cj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKnBkX3Zt YV9jcmVhdGUoc3RydWN0IGdlbjZfcHBndHQgKnBwZ3R0LCBpbnQgc2l6ZSkKPiAgIHsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gcHBndHQtPmJhc2Uudm0uaTkxNTsKPiAgIAlz dHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0ID0gcHBndHQtPmJhc2Uudm0uZ3QtPmdndHQ7Cj4gICAJc3Ry dWN0IGk5MTVfdm1hICp2bWE7Cj4gICAKPiBAQCAtMTg3Miw3ICsxODcxLDcgQEAgc3RhdGljIHN0 cnVjdCBpOTE1X3ZtYSAqcGRfdm1hX2NyZWF0ZShzdHJ1Y3QgZ2VuNl9wcGd0dCAqcHBndHQsIGlu dCBzaXplKQo+ICAgCWlmICghdm1hKQo+ICAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiAg IAo+IC0JaTkxNV9hY3RpdmVfaW5pdChpOTE1LCAmdm1hLT5hY3RpdmUsIE5VTEwsIE5VTEwpOwo+ ICsJaTkxNV9hY3RpdmVfaW5pdCgmdm1hLT5hY3RpdmUsIE5VTEwsIE5VTEwpOwo+ICAgCj4gICAJ bXV0ZXhfaW5pdCgmdm1hLT5wYWdlc19tdXRleCk7Cj4gICAJdm1hLT52bSA9IGk5MTVfdm1fZ2V0 KCZnZ3R0LT52bSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1 X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXgg NjM4NGEwNmFhNWJmLi5hMjhlZTc1NGI3YjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMKPiBAQCAtMTI5OSw3ICsxMjk5LDcgQEAgY2FwdHVyZV92bWEoc3RydWN0IGNh cHR1cmVfdm1hICpuZXh0LAo+ICAgCWlmICghYykKPiAgIAkJcmV0dXJuIG5leHQ7Cj4gICAKPiAt CWlmICghaTkxNV9hY3RpdmVfdHJ5Z3JhYigmdm1hLT5hY3RpdmUpKSB7Cj4gKwlpZiAoIWk5MTVf YWN0aXZlX2FjcXVpcmVfaWZfYnVzeSgmdm1hLT5hY3RpdmUpKSB7Cj4gICAJCWtmcmVlKGMpOwo+ ICAgCQlyZXR1cm4gbmV4dDsKPiAgIAl9Cj4gQEAgLTE0MzksNyArMTQzOSw3IEBAIGdlbV9yZWNv cmRfcmluZ3Moc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwgc3RydWN0IGNvbXByZXNzICpj b21wcmVzcykKPiAgIAkJCSp0aGlzLT5zbG90ID0KPiAgIAkJCQlpOTE1X2Vycm9yX29iamVjdF9j cmVhdGUoaTkxNSwgdm1hLCBjb21wcmVzcyk7Cj4gICAKPiAtCQkJaTkxNV9hY3RpdmVfdW5ncmFi KCZ2bWEtPmFjdGl2ZSk7Cj4gKwkJCWk5MTVfYWN0aXZlX3JlbGVhc2UoJnZtYS0+YWN0aXZlKTsK PiAgIAkJCWk5MTVfdm1hX3B1dCh2bWEpOwo+ICAgCj4gICAJCQljYXB0dXJlID0gdGhpcy0+bmV4 dDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IGE4OTE2NDEyNzU5Yi4u NGZmZTYyYTQyMTg2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVx dWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiBAQCAt MjE4LDggKzIxOCw2IEBAIHN0YXRpYyB2b2lkIHJlbW92ZV9mcm9tX2VuZ2luZShzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSkKPiAgIAo+ICAgc3RhdGljIGJvb2wgaTkxNV9yZXF1ZXN0X3JldGlyZShz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAtCXN0cnVjdCBpOTE1X2FjdGl2ZV9yZXF1 ZXN0ICphY3RpdmUsICpuZXh0Owo+IC0KPiAgIAlpZiAoIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQo cnEpKQo+ICAgCQlyZXR1cm4gZmFsc2U7Cj4gICAKPiBAQCAtMjQ0LDM1ICsyNDIsNiBAQCBzdGF0 aWMgYm9vbCBpOTE1X3JlcXVlc3RfcmV0aXJlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAg CQkJCSAgJmk5MTVfcmVxdWVzdF90aW1lbGluZShycSktPnJlcXVlc3RzKSk7Cj4gICAJcnEtPnJp bmctPmhlYWQgPSBycS0+cG9zdGZpeDsKPiAgIAo+IC0JLyoKPiAtCSAqIFdhbGsgdGhyb3VnaCB0 aGUgYWN0aXZlIGxpc3QsIGNhbGxpbmcgcmV0aXJlIG9uIGVhY2guIFRoaXMgYWxsb3dzCj4gLQkg KiBvYmplY3RzIHRvIHRyYWNrIHRoZWlyIEdQVSBhY3Rpdml0eSBhbmQgbWFyayB0aGVtc2VsdmVz IGFzIGlkbGUKPiAtCSAqIHdoZW4gdGhlaXIgKmxhc3QqIGFjdGl2ZSByZXF1ZXN0IGlzIGNvbXBs ZXRlZCAodXBkYXRpbmcgc3RhdGUKPiAtCSAqIHRyYWNraW5nIGxpc3RzIGZvciBldmljdGlvbiwg YWN0aXZlIHJlZmVyZW5jZXMgZm9yIEdFTSwgZXRjKS4KPiAtCSAqCj4gLQkgKiBBcyB0aGUgLT5y ZXRpcmUoKSBtYXkgZnJlZSB0aGUgbm9kZSwgd2UgZGVjb3VwbGUgaXQgZmlyc3QgYW5kCj4gLQkg KiBwYXNzIGFsb25nIHRoZSBhdXhpbGlhcnkgaW5mb3JtYXRpb24gKHRvIGF2b2lkIGRlcmVmZXJl bmNpbmcKPiAtCSAqIHRoZSBub2RlIGFmdGVyIHRoZSBjYWxsYmFjaykuCj4gLQkgKi8KPiAtCWxp c3RfZm9yX2VhY2hfZW50cnlfc2FmZShhY3RpdmUsIG5leHQsICZycS0+YWN0aXZlX2xpc3QsIGxp bmspIHsKPiAtCQkvKgo+IC0JCSAqIEluIG1pY3JvYmVuY2htYXJrcyBvciBmb2N1c2luZyB1cG9u IHRpbWUgaW5zaWRlIHRoZSBrZXJuZWwsCj4gLQkJICogd2UgbWF5IHNwZW5kIGFuIGlub3JkaW5h dGUgYW1vdW50IG9mIHRpbWUgc2ltcGx5IGhhbmRsaW5nCj4gLQkJICogdGhlIHJldGlyZW1lbnQg b2YgcmVxdWVzdHMgYW5kIHByb2Nlc3NpbmcgdGhlaXIgY2FsbGJhY2tzLgo+IC0JCSAqIE9mIHdo aWNoLCB0aGlzIGxvb3AgaXRzZWxmIGlzIHBhcnRpY3VsYXJseSBob3QgZHVlIHRvIHRoZQo+IC0J CSAqIGNhY2hlIG1pc3NlcyB3aGVuIGp1bXBpbmcgYXJvdW5kIHRoZSBsaXN0IG9mCj4gLQkJICog aTkxNV9hY3RpdmVfcmVxdWVzdC4gIFNvIHdlIHRyeSB0byBrZWVwIHRoaXMgbG9vcCBhcwo+IC0J CSAqIHN0cmVhbWxpbmVkIGFzIHBvc3NpYmxlIGFuZCBhbHNvIHByZWZldGNoIHRoZSBuZXh0Cj4g LQkJICogaTkxNV9hY3RpdmVfcmVxdWVzdCB0byB0cnkgYW5kIGhpZGUgdGhlIGxpa2VseSBjYWNo ZSBtaXNzLgo+IC0JCSAqLwo+IC0JCXByZWZldGNodyhuZXh0KTsKPiAtCj4gLQkJSU5JVF9MSVNU X0hFQUQoJmFjdGl2ZS0+bGluayk7Cj4gLQkJUkNVX0lOSVRfUE9JTlRFUihhY3RpdmUtPnJlcXVl c3QsIE5VTEwpOwo+IC0KPiAtCQlhY3RpdmUtPnJldGlyZShhY3RpdmUsIHJxKTsKPiAtCX0KPiAt Cj4gICAJbG9jYWxfaXJxX2Rpc2FibGUoKTsKPiAgIAo+ICAgCS8qCj4gQEAgLTcwNCw3ICs2NzMs NiBAQCBfX2k5MTVfcmVxdWVzdF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBnZnBf dCBnZnApCj4gICAJcnEtPmZsYWdzID0gMDsKPiAgIAlycS0+ZXhlY3V0aW9uX21hc2sgPSBBTExf RU5HSU5FUzsKPiAgIAo+IC0JSU5JVF9MSVNUX0hFQUQoJnJxLT5hY3RpdmVfbGlzdCk7Cj4gICAJ SU5JVF9MSVNUX0hFQUQoJnJxLT5leGVjdXRlX2NiKTsKPiAgIAo+ICAgCS8qCj4gQEAgLTc0Myw3 ICs3MTEsNiBAQCBfX2k5MTVfcmVxdWVzdF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNl LCBnZnBfdCBnZnApCj4gICAJY2UtPnJpbmctPmVtaXQgPSBycS0+aGVhZDsKPiAgIAo+ICAgCS8q IE1ha2Ugc3VyZSB3ZSBkaWRuJ3QgYWRkIG91cnNlbHZlcyB0byBleHRlcm5hbCBzdGF0ZSBiZWZv cmUgZnJlZWluZyAqLwo+IC0JR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcnEtPmFjdGl2ZV9saXN0 KSk7Cj4gICAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcnEtPnNjaGVkLnNpZ25hbGVyc19saXN0 KSk7Cj4gICAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcnEtPnNjaGVkLndhaXRlcnNfbGlzdCkp Owo+ICAgCj4gQEAgLTExNzQsOCArMTE0MSw4IEBAIF9faTkxNV9yZXF1ZXN0X2FkZF90b190aW1l bGluZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIAkgKiBwcmVjbHVkZXMgb3B0aW1pc2lu ZyB0byB1c2Ugc2VtYXBob3JlcyBzZXJpYWxpc2F0aW9uIG9mIGEgc2luZ2xlCj4gICAJICogdGlt ZWxpbmUgYWNyb3NzIGVuZ2luZXMuCj4gICAJICovCj4gLQlwcmV2ID0gcmN1X2RlcmVmZXJlbmNl X3Byb3RlY3RlZCh0aW1lbGluZS0+bGFzdF9yZXF1ZXN0LnJlcXVlc3QsCj4gLQkJCQkJIGxvY2tk ZXBfaXNfaGVsZCgmdGltZWxpbmUtPm11dGV4KSk7Cj4gKwlwcmV2ID0gdG9fcmVxdWVzdChfX2k5 MTVfYWN0aXZlX2ZlbmNlX3NldCgmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKPiArCQkJCQkJICAm cnEtPmZlbmNlKSk7Cj4gICAJaWYgKHByZXYgJiYgIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocHJl dikpIHsKPiAgIAkJaWYgKGlzX3Bvd2VyX29mXzIocHJldi0+ZW5naW5lLT5tYXNrIHwgcnEtPmVu Z2luZS0+bWFzaykpCj4gICAJCQlpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlKCZycS0+c3Vi bWl0LAo+IEBAIC0xMjAwLDcgKzExNjcsNiBAQCBfX2k5MTVfcmVxdWVzdF9hZGRfdG9fdGltZWxp bmUoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAJICogdXMsIHRoZSB0aW1lbGluZSB3aWxs IGhvbGQgaXRzIHNlcW5vIHdoaWNoIGlzIGxhdGVyIHRoYW4gb3Vycy4KPiAgIAkgKi8KPiAgIAlH RU1fQlVHX09OKHRpbWVsaW5lLT5zZXFubyAhPSBycS0+ZmVuY2Uuc2Vxbm8pOwo+IC0JX19pOTE1 X2FjdGl2ZV9yZXF1ZXN0X3NldCgmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwgcnEpOwo+ICAgCj4g ICAJcmV0dXJuIHByZXY7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiBp bmRleCBlYzViYjRjMmU1YWUuLjkxYTg4NWMzNmM2YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVxdWVzdC5oCj4gQEAgLTIxMSw3ICsyMTEsNiBAQCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0IHsK PiAgIAkgKiBvbiB0aGUgYWN0aXZlX2xpc3QgKG9mIHRoZWlyIGZpbmFsIHJlcXVlc3QpLgo+ICAg CSAqLwo+ICAgCXN0cnVjdCBpOTE1X2NhcHR1cmVfbGlzdCAqY2FwdHVyZV9saXN0Owo+IC0Jc3Ry dWN0IGxpc3RfaGVhZCBhY3RpdmVfbGlzdDsKPiAgIAo+ICAgCS8qKiBUaW1lIGF0IHdoaWNoIHRo aXMgcmVxdWVzdCB3YXMgZW1pdHRlZCwgaW4gamlmZmllcy4gKi8KPiAgIAl1bnNpZ25lZCBsb25n IGVtaXR0ZWRfamlmZmllczsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92bWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKPiBpbmRleCAyNzE3NDQx YTlmM2EuLjY0N2JiOTZhNjIyMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3ZtYS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+IEBAIC0x MjAsOCArMTIwLDcgQEAgdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+ICAgCXZtYS0+c2l6ZSA9IG9iai0+YmFzZS5zaXplOwo+ICAgCXZtYS0+ZGlzcGxheV9hbGln bm1lbnQgPSBJOTE1X0dUVF9NSU5fQUxJR05NRU5UOwo+ICAgCj4gLQlpOTE1X2FjdGl2ZV9pbml0 KHZtLT5pOTE1LCAmdm1hLT5hY3RpdmUsCj4gLQkJCSBfX2k5MTVfdm1hX2FjdGl2ZSwgX19pOTE1 X3ZtYV9yZXRpcmUpOwo+ICsJaTkxNV9hY3RpdmVfaW5pdCgmdm1hLT5hY3RpdmUsIF9faTkxNV92 bWFfYWN0aXZlLCBfX2k5MTVfdm1hX3JldGlyZSk7Cj4gICAKPiAgIAkvKiBEZWNsYXJlIG91cnNl bHZlcyBzYWZlIGZvciB1c2UgaW5zaWRlIHNocmlua2VycyAqLwo+ICAgCWlmIChJU19FTkFCTEVE KENPTkZJR19MT0NLREVQKSkgewo+IEBAIC0xMTQ4LDYgKzExNDcsNyBAQCBpbnQgX19pOTE1X3Zt YV91bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJu IHJldDsKPiAgIAo+ICsJR0VNX0JVR19PTihpOTE1X3ZtYV9pc19hY3RpdmUodm1hKSk7Cj4gICAJ aWYgKGk5MTVfdm1hX2lzX3Bpbm5lZCh2bWEpKSB7Cj4gICAJCXZtYV9wcmludF9hbGxvY2F0b3Io dm1hLCAiaXMgcGlubmVkIik7Cj4gICAJCXJldHVybiAtRUJVU1k7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMKPiBpbmRleCBhNDE3ODU4MjJlZDkuLjJj YzcxYmNmODg0ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9hY3RpdmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X2FjdGl2ZS5jCj4gQEAgLTY4LDcgKzY4LDcgQEAgc3RhdGljIHN0cnVjdCBsaXZlX2FjdGl2ZSAq X19saXZlX2FsbG9jKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCQlyZXR1cm4g TlVMTDsKPiAgIAo+ICAgCWtyZWZfaW5pdCgmYWN0aXZlLT5yZWYpOwo+IC0JaTkxNV9hY3RpdmVf aW5pdChpOTE1LCAmYWN0aXZlLT5iYXNlLCBfX2xpdmVfYWN0aXZlLCBfX2xpdmVfcmV0aXJlKTsK PiArCWk5MTVfYWN0aXZlX2luaXQoJmFjdGl2ZS0+YmFzZSwgX19saXZlX2FjdGl2ZSwgX19saXZl X3JldGlyZSk7Cj4gICAKPiAgIAlyZXR1cm4gYWN0aXZlOwo+ICAgfQo+IEBAIC0xNDYsMTkgKzE0 NiwxMyBAQCBzdGF0aWMgaW50IGxpdmVfYWN0aXZlX3dhaXQodm9pZCAqYXJnKQo+ICAgewo+ICAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+ICAgCXN0cnVjdCBsaXZlX2Fj dGl2ZSAqYWN0aXZlOwo+IC0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gICAJaW50IGVyciA9 IDA7Cj4gICAKPiAgIAkvKiBDaGVjayB0aGF0IHdlIGdldCBhIGNhbGxiYWNrIHdoZW4gcmVxdWVz dHMgcmV0aXJlIHVwb24gd2FpdGluZyAqLwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgmaTkxNS0+ cnVudGltZV9wbSk7Cj4gLQo+ICAgCWFjdGl2ZSA9IF9fbGl2ZV9hY3RpdmVfc2V0dXAoaTkxNSk7 Cj4gLQlpZiAoSVNfRVJSKGFjdGl2ZSkpIHsKPiAtCQllcnIgPSBQVFJfRVJSKGFjdGl2ZSk7Cj4g LQkJZ290byBlcnI7Cj4gLQl9Cj4gKwlpZiAoSVNfRVJSKGFjdGl2ZSkpCj4gKwkJcmV0dXJuIFBU Ul9FUlIoYWN0aXZlKTsKPiAgIAo+ICAgCWk5MTVfYWN0aXZlX3dhaXQoJmFjdGl2ZS0+YmFzZSk7 Cj4gICAJaWYgKCFSRUFEX09OQ0UoYWN0aXZlLT5yZXRpcmVkKSkgewo+IEBAIC0xNjgsMTEgKzE2 Miw5IEBAIHN0YXRpYyBpbnQgbGl2ZV9hY3RpdmVfd2FpdCh2b2lkICphcmcpCj4gICAKPiAgIAlf X2xpdmVfcHV0KGFjdGl2ZSk7Cj4gICAKPiArCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3Rf bXV0ZXgpOwo+ICAgCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1X1dBSVRfTE9DS0VEKSkK PiAgIAkJZXJyID0gLUVJTzsKPiAtCj4gLWVycjoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KCZp OTE1LT5ydW50aW1lX3BtLCB3YWtlcmVmKTsKPiAgIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5z dHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJcmV0dXJuIGVycjsKPiBAQCAtMTgyLDIzICsxNzQsMTkg QEAgc3RhdGljIGludCBsaXZlX2FjdGl2ZV9yZXRpcmUodm9pZCAqYXJnKQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+ICAgCXN0cnVjdCBsaXZlX2FjdGl2 ZSAqYWN0aXZlOwo+IC0JaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gICAJaW50IGVyciA9IDA7 Cj4gICAKPiAgIAkvKiBDaGVjayB0aGF0IHdlIGdldCBhIGNhbGxiYWNrIHdoZW4gcmVxdWVzdHMg YXJlIGluZGlyZWN0bHkgcmV0aXJlZCAqLwo+ICAgCj4gLQltdXRleF9sb2NrKCZpOTE1LT5kcm0u c3RydWN0X211dGV4KTsKPiAtCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldCgmaTkxNS0+ cnVudGltZV9wbSk7Cj4gLQo+ICAgCWFjdGl2ZSA9IF9fbGl2ZV9hY3RpdmVfc2V0dXAoaTkxNSk7 Cj4gLQlpZiAoSVNfRVJSKGFjdGl2ZSkpIHsKPiAtCQllcnIgPSBQVFJfRVJSKGFjdGl2ZSk7Cj4g LQkJZ290byBlcnI7Cj4gLQl9Cj4gKwlpZiAoSVNfRVJSKGFjdGl2ZSkpCj4gKwkJcmV0dXJuIFBU Ul9FUlIoYWN0aXZlKTsKPiAgIAo+ICAgCS8qIHdhaXRzIGZvciAmIHJldGlyZXMgYWxsIHJlcXVl c3RzICovCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlpZiAo aWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCj4gICAJCWVyciA9IC1FSU87 Cj4gKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJaWYg KCFSRUFEX09OQ0UoYWN0aXZlLT5yZXRpcmVkKSkgewo+ICAgCQlwcl9lcnIoImk5MTVfYWN0aXZl IG5vdCByZXRpcmVkIGFmdGVyIGZsdXNoaW5nIVxuIik7Cj4gQEAgLTIwNywxMCArMTk1LDYgQEAg c3RhdGljIGludCBsaXZlX2FjdGl2ZV9yZXRpcmUodm9pZCAqYXJnKQo+ICAgCj4gICAJX19saXZl X3B1dChhY3RpdmUpOwo+ICAgCj4gLWVycjoKPiAtCWludGVsX3J1bnRpbWVfcG1fcHV0KCZpOTE1 LT5ydW50aW1lX3BtLCB3YWtlcmVmKTsKPiAtCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gLQo+ICAgCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiAKClJlZ2FyZHMsCgpU dnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4