From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 11/29] drm/i915: Pass intel_context to i915_request_create() Date: Wed, 10 Apr 2019 11:38:30 +0100 Message-ID: References: <20190408091728.20207-1-chris@chris-wilson.co.uk> <20190408091728.20207-11-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 93D2D892CD for ; Wed, 10 Apr 2019 10:38:33 +0000 (UTC) In-Reply-To: <20190408091728.20207-11-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 Ck9uIDA4LzA0LzIwMTkgMTA6MTcsIENocmlzIFdpbHNvbiB3cm90ZToKPiBTdGFydCBhY3F1aXJp bmcgdGhlIGxvZ2ljYWwgaW50ZWxfY29udGV4dCBhbmQgdXNpbmcgdGhhdCBhcyBvdXIgcHJpbWFy eQo+IG1lYW5zIGZvciByZXF1ZXN0IGFsbG9jYXRpb24uIFRoaXMgaXMgdGhlIGluaXRpYWwgc3Rl cCB0byBhbGxvdyB1cyB0bwo+IGF2b2lkIHJlcXVpcmluZyBzdHJ1Y3RfbXV0ZXggZm9yIHJlcXVl c3QgYWxsb2NhdGlvbiBhbG9uZyB0aGUKPiBwZXJtYS1waW5uZWQga2VybmVsIGNvbnRleHQsIGJ1 dCBpdCBhbHNvIHByb3ZpZGVzIGEgZm91bmRhdGlvbiBmb3IKPiBicmVha2luZyB1cCB0aGUgY29t cGxleCByZXF1ZXN0IGFsbG9jYXRpb24gdG8gaGFuZGxlIGRpZmZlcmVudCBzY2VuYXJpb3MKPiBp bnNpZGUgZXhlY2J1Zi4KPiAKPiBGb3IgdGhlIHB1cnBvc2Ugb2YgZW1pdHRpbmcgYSByZXF1ZXN0 IGZyb20gaW5zaWRlIHJldGlyZW1lbnQgKHNlZSB0aGUKPiBuZXh0IHBhdGNoIGZvciBlbmdpbmUg cG93ZXIgbWFuYWdlbWVudCksIHdlIGFsc28gbmVlZCB0byBsaWZ0IGNvbnRyb2wKPiBvdmVyIHRo ZSB0aW1lbGluZSBtdXRleCB0byB0aGUgY2FsbGVyLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfY29udGV4dC5oICAgICAgIHwgIDEyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3Jlc2V0LmMgICAgICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfcmluZ2J1ZmZlci5jICAgIHwgICAzIC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8ICAgNCArLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wZXJmLmMgICAgICAgICAgICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAgfCAyNDUgKysrKysrKysrKy0tLS0tLS0t Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCAgICAgICAgICAgfCAgIDcg Kwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jICAgICAgICAgIHwgICA1 ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9hY3RpdmUuYyAgfCAg IDIgKy0KPiAgIC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29oZXJlbmN5LmMgICB8 ICAgMiArLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0LmMg IHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9yZXF1ZXN0 LmMgfCAgIDkgKy0KPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdGltZWxpbmUu YyAgICB8ICAgNCArLQo+ICAgMTMgZmlsZXMgY2hhbmdlZCwgMTc1IGluc2VydGlvbnMoKyksIDEy NCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfY29udGV4dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5o Cj4gaW5kZXggOTViMWZkYzU4MjZhLi45YWVlZjg4MTc2YjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oCj4gQEAgLTEwNCw0ICsxMDQsMTYgQEAgc3RhdGljIGlu bGluZSB2b2lkIGludGVsX2NvbnRleHRfcHV0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAg IAlrcmVmX3B1dCgmY2UtPnJlZiwgY2UtPm9wcy0+ZGVzdHJveSk7Cj4gICB9Cj4gICAKPiArc3Rh dGljIGlubGluZSB2b2lkIGludGVsX2NvbnRleHRfdGltZWxpbmVfbG9jayhzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY2UpCj4gKwlfX2FjcXVpcmVzKCZjZS0+cmluZy0+dGltZWxpbmUtPm11dGV4KQo+ ICt7Cj4gKwltdXRleF9sb2NrKCZjZS0+cmluZy0+dGltZWxpbmUtPm11dGV4KTsKPiArfQo+ICsK PiArc3RhdGljIGlubGluZSB2b2lkIGludGVsX2NvbnRleHRfdGltZWxpbmVfdW5sb2NrKHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSkKPiArCV9fcmVsZWFzZXMoJmNlLT5yaW5nLT50aW1lbGluZS0+ bXV0ZXgpCj4gK3sKPiArCW11dGV4X3VubG9jaygmY2UtPnJpbmctPnRpbWVsaW5lLT5tdXRleCk7 Cj4gK30KPiArCj4gICAjZW5kaWYgLyogX19JTlRFTF9DT05URVhUX0hfXyAqLwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfcmVzZXQuYwo+IGluZGV4IGRjZTQ5YjhiMTExOC4uYTU1MDFiMTM2 ZjBjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Jlc2V0LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yZXNldC5jCj4gQEAgLTc3MCw3 ICs3NzAsNyBAQCBzdGF0aWMgdm9pZCByZXN0YXJ0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQo+ICAgCQlpZiAoIWludGVsX2VuZ2luZV9pc19pZGxlKGVuZ2luZSkpCj4gICAJCQljb250 aW51ZTsKPiAgIAo+IC0JCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgaTkxNS0+a2Vy bmVsX2NvbnRleHQpOwo+ICsJCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5l bF9jb250ZXh0KTsKPiAgIAkJaWYgKCFJU19FUlIocnEpKQo+ICAgCQkJaTkxNV9yZXF1ZXN0X2Fk ZChycSk7Cj4gICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVy LmMKPiBpbmRleCA1Nzg4ZTVhYjgxOGYuLjYzYmYwOTJkNzM3YiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtMTc3OCw3ICsxNzc4LDYgQEAg c3RhdGljIGludCBzd2l0Y2hfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIAl1 MzIgaHdfZmxhZ3MgPSAwOwo+ICAgCWludCByZXQsIGk7Cj4gICAKPiAtCWxvY2tkZXBfYXNzZXJ0 X2hlbGQoJnJxLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAlHRU1fQlVHX09OKEhBU19F WEVDTElTVFMocnEtPmk5MTUpKTsKPiAgIAo+ICAgCWlmIChwcGd0dCkgewo+IEBAIC0xOTA4LDgg KzE5MDcsNiBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IHdhaXRfZm9yX3NwYWNlKHN0cnVjdCBpbnRl bF9yaW5nICpyaW5nLCB1bnNpZ25lZCBpbnQgYnl0ZXMpCj4gICAJc3RydWN0IGk5MTVfcmVxdWVz dCAqdGFyZ2V0Owo+ICAgCWxvbmcgdGltZW91dDsKPiAgIAo+IC0JbG9ja2RlcF9hc3NlcnRfaGVs ZCgmcmluZy0+dm1hLT52bS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQo+ICAgCWlmIChp bnRlbF9yaW5nX3VwZGF0ZV9zcGFjZShyaW5nKSA+PSBieXRlcykKPiAgIAkJcmV0dXJuIDA7Cj4g ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggMTcwNTAw ZDQ5MDQ5Li5kZTM0MDQ0NzliYzMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dC5jCj4gQEAgLTk0Miw3ICs5NDIsNyBAQCBpbnQgaTkxNV9nZW1fc3dpdGNoX3RvX2tl cm5lbF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQlzdHJ1Y3Qg aW50ZWxfcmluZyAqcmluZzsKPiAgIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gICAKPiAt CQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsK PiArCQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4g ICAJCWlmIChJU19FUlIocnEpKQo+ICAgCQkJcmV0dXJuIFBUUl9FUlIocnEpOwo+ICAgCj4gQEAg LTExODgsNyArMTE4OCw3IEBAIGdlbjhfbW9kaWZ5X3JwY3Moc3RydWN0IGludGVsX2NvbnRleHQg KmNlLCBzdHJ1Y3QgaW50ZWxfc3NldSBzc2V1KQo+ICAgCS8qIFN1Ym1pdHRpbmcgcmVxdWVzdHMg ZXRjIG5lZWRzIHRoZSBodyBhd2FrZS4gKi8KPiAgIAl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9w bV9nZXQoaTkxNSk7Cj4gICAKPiAtCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGNlLT5lbmdpbmUs IGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKPiArCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShjZS0+ ZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gICAJaWYgKElTX0VSUihycSkpIHsKPiAgIAkJcmV0 ID0gUFRSX0VSUihycSk7Cj4gICAJCWdvdG8gb3V0X3B1dDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Bl cmYuYwo+IGluZGV4IGE4N2Y3OTAzMzVjMS4uMzI4YTc0MGU3MmNiIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wZXJmLmMKPiBAQCAtMTc2Miw3ICsxNzYyLDcgQEAgc3RhdGljIGludCBnZW44X2Nv bmZpZ3VyZV9hbGxfY29udGV4dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAgCSAqIEFwcGx5IHRoZSBjb25maWd1cmF0aW9uIGJ5IGRvaW5nIG9uZSBjb250ZXh0IHJlc3Rv cmUgb2YgdGhlIGVkaXRlZAo+ICAgCSAqIGNvbnRleHQgaW1hZ2UuCj4gICAJICovCj4gLQlycSA9 IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGRldl9wcml2LT5rZXJuZWxfY29udGV4dCk7Cj4g KwlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gICAJ aWYgKElTX0VSUihycSkpCj4gICAJCXJldHVybiBQVFJfRVJSKHJxKTsKPiAgIAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gaW5kZXggZTcyZTQwODdiYmZlLi5jYTRjMjAwZWU3ZWMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBAIC01NTAsNyArNTUwLDcg QEAgc3RhdGljIHZvaWQgcmluZ19yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVsX3JpbmcgKnJp bmcpCj4gICB9Cj4gICAKPiAgIHN0YXRpYyBub2lubGluZSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoK PiAtaTkxNV9yZXF1ZXN0X2FsbG9jX3Nsb3coc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICty ZXF1ZXN0X2FsbG9jX3Nsb3coc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBnZnBfdCBnZnApCj4g ICB7Cj4gICAJc3RydWN0IGludGVsX3JpbmcgKnJpbmcgPSBjZS0+cmluZzsKPiAgIAlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycTsKPiBAQCAtNTU4LDYgKzU1OCw5IEBAIGk5MTVfcmVxdWVzdF9hbGxv Y19zbG93KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgIAlpZiAobGlzdF9lbXB0eSgmcmlu Zy0+cmVxdWVzdF9saXN0KSkKPiAgIAkJZ290byBvdXQ7Cj4gICAKPiArCWlmICghZ2ZwZmxhZ3Nf YWxsb3dfYmxvY2tpbmcoZ2ZwKSkKPiArCQlnb3RvIG91dDsKPiArCj4gICAJLyogUmF0ZWxpbWl0 IG91cnNlbHZlcyB0byBwcmV2ZW50IG9vbSBmcm9tIG1hbGljaW91cyBjbGllbnRzICovCj4gICAJ cnEgPSBsaXN0X2xhc3RfZW50cnkoJnJpbmctPnJlcXVlc3RfbGlzdCwgdHlwZW9mKCpycSksIHJp bmdfbGluayk7Cj4gICAJY29uZF9zeW5jaHJvbml6ZV9yY3UocnEtPnJjdXN0YXRlKTsKPiBAQCAt NTY2LDYyICs1NjksMjEgQEAgaTkxNV9yZXF1ZXN0X2FsbG9jX3Nsb3coc3RydWN0IGludGVsX2Nv bnRleHQgKmNlKQo+ICAgCXJpbmdfcmV0aXJlX3JlcXVlc3RzKHJpbmcpOwo+ICAgCj4gICBvdXQ6 Cj4gLQlyZXR1cm4ga21lbV9jYWNoZV9hbGxvYyhnbG9iYWwuc2xhYl9yZXF1ZXN0cywgR0ZQX0tF Uk5FTCk7Cj4gKwlyZXR1cm4ga21lbV9jYWNoZV9hbGxvYyhnbG9iYWwuc2xhYl9yZXF1ZXN0cywg Z2ZwKTsKPiAgIH0KPiAgIAo+IC0vKioKPiAtICogaTkxNV9yZXF1ZXN0X2FsbG9jIC0gYWxsb2Nh dGUgYSByZXF1ZXN0IHN0cnVjdHVyZQo+IC0gKgo+IC0gKiBAZW5naW5lOiBlbmdpbmUgdGhhdCB3 ZSB3aXNoIHRvIGlzc3VlIHRoZSByZXF1ZXN0IG9uLgo+IC0gKiBAY3R4OiBjb250ZXh0IHRoYXQg dGhlIHJlcXVlc3Qgd2lsbCBiZSBhc3NvY2lhdGVkIHdpdGguCj4gLSAqCj4gLSAqIFJldHVybnMg YSBwb2ludGVyIHRvIHRoZSBhbGxvY2F0ZWQgcmVxdWVzdCBpZiBzdWNjZXNzZnVsLAo+IC0gKiBv ciBhbiBlcnJvciBjb2RlIGlmIG5vdC4KPiAtICovCj4gICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoK PiAtaTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiArX19pOTE1X3JlcXVlc3RfY3JlYXRlKHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSwgZ2ZwX3QgZ2ZwKQo+ICAgewo+IC0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7Cj4gLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq Y2U7Cj4gLQlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGw7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGlu ZSAqdGwgPSBjZS0+cmluZy0+dGltZWxpbmU7Cj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7 Cj4gICAJdTMyIHNlcW5vOwo+ICAgCWludCByZXQ7Cj4gICAKPiAtCWxvY2tkZXBfYXNzZXJ0X2hl bGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAtCS8qCj4gLQkgKiBQcmVlbXB0IGNv bnRleHRzIGFyZSByZXNlcnZlZCBmb3IgZXhjbHVzaXZlIHVzZSB0byBpbmplY3QgYQo+IC0JICog cHJlZW1wdGlvbiBjb250ZXh0IHN3aXRjaC4gVGhleSBhcmUgbmV2ZXIgdG8gYmUgdXNlZCBmb3Ig YW55IHRyaXZpYWwKPiAtCSAqIHJlcXVlc3QhCj4gLQkgKi8KPiAtCUdFTV9CVUdfT04oY3R4ID09 IGk5MTUtPnByZWVtcHRfY29udGV4dCk7Cj4gLQo+IC0JLyoKPiAtCSAqIEFCSTogQmVmb3JlIHVz ZXJzcGFjZSBhY2Nlc3NlcyB0aGUgR1BVIChlLmcuIGV4ZWNidWZmZXIpLCByZXBvcnQKPiAtCSAq IEVJTyBpZiB0aGUgR1BVIGlzIGFscmVhZHkgd2VkZ2VkLgo+IC0JICovCj4gLQlyZXQgPSBpOTE1 X3Rlcm1pbmFsbHlfd2VkZ2VkKGk5MTUpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gRVJSX1BU UihyZXQpOwo+IC0KPiAtCS8qCj4gLQkgKiBQaW5uaW5nIHRoZSBjb250ZXh0cyBtYXkgZ2VuZXJh dGUgcmVxdWVzdHMgaW4gb3JkZXIgdG8gYWNxdWlyZQo+IC0JICogR0dUVCBzcGFjZSwgc28gZG8g dGhpcyBmaXJzdCBiZWZvcmUgd2UgcmVzZXJ2ZSBhIHNlcW5vIGZvcgo+IC0JICogb3Vyc2VsdmVz Lgo+IC0JICovCj4gLQljZSA9IGludGVsX2NvbnRleHRfcGluKGN0eCwgZW5naW5lKTsKPiAtCWlm IChJU19FUlIoY2UpKQo+IC0JCXJldHVybiBFUlJfQ0FTVChjZSk7Cj4gLQo+IC0JbXV0ZXhfbG9j aygmY2UtPnJpbmctPnRpbWVsaW5lLT5tdXRleCk7Cj4gLQlpbnRlbF9jb250ZXh0X2VudGVyKGNl KTsKPiArCW1pZ2h0X3NsZWVwX2lmKGdmcGZsYWdzX2FsbG93X2Jsb2NraW5nKGdmcCkpOwo+ICAg Cj4gLQkvKiBNb3ZlIG91ciBvbGRlc3QgcmVxdWVzdCB0byB0aGUgc2xhYi1jYWNoZSAoaWYgbm90 IGluIHVzZSEpICovCj4gLQlycSA9IGxpc3RfZmlyc3RfZW50cnkoJmNlLT5yaW5nLT5yZXF1ZXN0 X2xpc3QsIHR5cGVvZigqcnEpLCByaW5nX2xpbmspOwo+IC0JaWYgKCFsaXN0X2lzX2xhc3QoJnJx LT5yaW5nX2xpbmssICZjZS0+cmluZy0+cmVxdWVzdF9saXN0KSAmJgo+IC0JICAgIGk5MTVfcmVx dWVzdF9jb21wbGV0ZWQocnEpKQo+IC0JCWk5MTVfcmVxdWVzdF9yZXRpcmUocnEpOwo+ICsJLyog Q2hlY2sgdGhhdCB0aGUgY2FsbGVyIHByb3ZpZGVkIGFuIGFscmVhZHkgcGlubmVkIGNvbnRleHQg Ki8KPiArCV9faW50ZWxfY29udGV4dF9waW4oY2UpOwo+ICAgCj4gICAJLyoKPiAgIAkgKiBCZXdh cmU6IERyYWdvbnMgYmUgZmx5aW5nIG92ZXJoZWFkLgo+IEBAIC02NTMsMzAgKzYxNSwyNiBAQCBp OTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCSAqIERvIG5vdCB1c2Uga21lbV9jYWNoZV96YWxs b2MoKSBoZXJlIQo+ICAgCSAqLwo+ICAgCXJxID0ga21lbV9jYWNoZV9hbGxvYyhnbG9iYWwuc2xh Yl9yZXF1ZXN0cywKPiAtCQkJICAgICAgR0ZQX0tFUk5FTCB8IF9fR0ZQX1JFVFJZX01BWUZBSUwg fCBfX0dGUF9OT1dBUk4pOwo+ICsJCQkgICAgICBnZnAgfCBfX0dGUF9SRVRSWV9NQVlGQUlMIHwg X19HRlBfTk9XQVJOKTsKPiAgIAlpZiAodW5saWtlbHkoIXJxKSkgewo+IC0JCXJxID0gaTkxNV9y ZXF1ZXN0X2FsbG9jX3Nsb3coY2UpOwo+ICsJCXJxID0gcmVxdWVzdF9hbGxvY19zbG93KGNlLCBn ZnApOwo+ICAgCQlpZiAoIXJxKSB7Cj4gICAJCQlyZXQgPSAtRU5PTUVNOwo+ICAgCQkJZ290byBl cnJfdW5yZXNlcnZlOwo+ICAgCQl9Cj4gICAJfQo+ICAgCj4gLQlJTklUX0xJU1RfSEVBRCgmcnEt PmFjdGl2ZV9saXN0KTsKPiAtCUlOSVRfTElTVF9IRUFEKCZycS0+ZXhlY3V0ZV9jYik7Cj4gLQo+ IC0JdGwgPSBjZS0+cmluZy0+dGltZWxpbmU7Cj4gICAJcmV0ID0gaTkxNV90aW1lbGluZV9nZXRf c2Vxbm8odGwsIHJxLCAmc2Vxbm8pOwo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gZXJyX2ZyZWU7 Cj4gICAKPiAtCXJxLT5pOTE1ID0gaTkxNTsKPiAtCXJxLT5lbmdpbmUgPSBlbmdpbmU7Cj4gLQly cS0+Z2VtX2NvbnRleHQgPSBjdHg7Cj4gKwlycS0+aTkxNSA9IGNlLT5lbmdpbmUtPmk5MTU7Cj4g ICAJcnEtPmh3X2NvbnRleHQgPSBjZTsKPiArCXJxLT5nZW1fY29udGV4dCA9IGNlLT5nZW1fY29u dGV4dDsKPiArCXJxLT5lbmdpbmUgPSBjZS0+ZW5naW5lOwo+ICAgCXJxLT5yaW5nID0gY2UtPnJp bmc7Cj4gICAJcnEtPnRpbWVsaW5lID0gdGw7Cj4gLQlHRU1fQlVHX09OKHJxLT50aW1lbGluZSA9 PSAmZW5naW5lLT50aW1lbGluZSk7Cj4gKwlHRU1fQlVHX09OKHJxLT50aW1lbGluZSA9PSAmY2Ut PmVuZ2luZS0+dGltZWxpbmUpOwo+ICAgCXJxLT5od3NwX3NlcW5vID0gdGwtPmh3c3Bfc2Vxbm87 Cj4gICAJcnEtPmh3c3BfY2FjaGVsaW5lID0gdGwtPmh3c3BfY2FjaGVsaW5lOwo+ICAgCXJxLT5y Y3VzdGF0ZSA9IGdldF9zdGF0ZV9zeW5jaHJvbml6ZV9yY3UoKTsgLyogYWN0cyBhcyBzbXBfbWIo KSAqLwo+IEBAIC02OTYsNiArNjU0LDkgQEAgaTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAly cS0+Y2FwdHVyZV9saXN0ID0gTlVMTDsKPiAgIAlycS0+d2FpdGJvb3N0ID0gZmFsc2U7Cj4gICAK PiArCUlOSVRfTElTVF9IRUFEKCZycS0+YWN0aXZlX2xpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQo JnJxLT5leGVjdXRlX2NiKTsKPiArCj4gICAJLyoKPiAgIAkgKiBSZXNlcnZlIHNwYWNlIGluIHRo ZSByaW5nIGJ1ZmZlciBmb3IgYWxsIHRoZSBjb21tYW5kcyByZXF1aXJlZCB0bwo+ICAgCSAqIGV2 ZW50dWFsbHkgZW1pdCB0aGlzIHJlcXVlc3QuIFRoaXMgaXMgdG8gZ3VhcmFudGVlIHRoYXQgdGhl Cj4gQEAgLTcwOCw3ICs2NjksOCBAQCBpOTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCSAqIGFy b3VuZCBpbnNpZGUgaTkxNV9yZXF1ZXN0X2FkZCgpIHRoZXJlIGlzIHN1ZmZpY2llbnQgc3BhY2Ug YXQKPiAgIAkgKiB0aGUgYmVnaW5uaW5nIG9mIHRoZSByaW5nIGFzIHdlbGwuCj4gICAJICovCj4g LQlycS0+cmVzZXJ2ZWRfc3BhY2UgPSAyICogZW5naW5lLT5lbWl0X2ZpbmlfYnJlYWRjcnVtYl9k dyAqIHNpemVvZih1MzIpOwo+ICsJcnEtPnJlc2VydmVkX3NwYWNlID0KPiArCQkyICogcnEtPmVu Z2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWJfZHcgKiBzaXplb2YodTMyKTsKPiAgIAo+ICAgCS8q Cj4gICAJICogUmVjb3JkIHRoZSBwb3NpdGlvbiBvZiB0aGUgc3RhcnQgb2YgdGhlIHJlcXVlc3Qg c28gdGhhdAo+IEBAIC03MTgsMjAgKzY4MCwxNiBAQCBpOTE1X3JlcXVlc3RfYWxsb2Moc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ ICAgCSAqLwo+ICAgCXJxLT5oZWFkID0gcnEtPnJpbmctPmVtaXQ7Cj4gICAKPiAtCXJldCA9IGVu Z2luZS0+cmVxdWVzdF9hbGxvYyhycSk7Cj4gKwlyZXQgPSBycS0+ZW5naW5lLT5yZXF1ZXN0X2Fs bG9jKHJxKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIGVycl91bndpbmQ7Cj4gICAKPiAtCS8q IEtlZXAgYSBzZWNvbmQgcGluIGZvciB0aGUgZHVhbCByZXRpcmVtZW50IGFsb25nIGVuZ2luZSBh bmQgcmluZyAqLwo+IC0JX19pbnRlbF9jb250ZXh0X3BpbihjZSk7Cj4gLQo+ICAgCXJxLT5pbmZp eCA9IHJxLT5yaW5nLT5lbWl0OyAvKiBlbmQgb2YgaGVhZGVyOyBzdGFydCBvZiB1c2VyIHBheWxv YWQgKi8KPiAgIAo+IC0JLyogQ2hlY2sgdGhhdCB3ZSBkaWRuJ3QgaW50ZXJydXB0IG91cnNlbHZl cyB3aXRoIGEgbmV3IHJlcXVlc3QgKi8KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJxLT50aW1l bGluZS0+bXV0ZXgpOwo+IC0JR0VNX0JVR19PTihycS0+dGltZWxpbmUtPnNlcW5vICE9IHJxLT5m ZW5jZS5zZXFubyk7Cj4gLQlycS0+Y29va2llID0gbG9ja2RlcF9waW5fbG9jaygmcnEtPnRpbWVs aW5lLT5tdXRleCk7Cj4gKwkvKiBLZWVwIGEgc2Vjb25kIHBpbiBmb3IgdGhlIGR1YWwgcmV0aXJl bWVudCBhbG9uZyBlbmdpbmUgYW5kIHJpbmcgKi8KPiArCV9faW50ZWxfY29udGV4dF9waW4oY2Up Owo+ICAgCj4gKwlpbnRlbF9jb250ZXh0X21hcmtfYWN0aXZlKGNlKTsKPiAgIAlyZXR1cm4gcnE7 Cj4gICAKPiAgIGVycl91bndpbmQ6Cj4gQEAgLTc0NSwxMiArNzAzLDg2IEBAIGk5MTVfcmVxdWVz dF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgpCj4gICBlcnJfZnJlZToKPiAgIAlrbWVtX2NhY2hlX2ZyZWUoZ2xvYmFsLnNs YWJfcmVxdWVzdHMsIHJxKTsKPiAgIGVycl91bnJlc2VydmU6Cj4gLQlpbnRlbF9jb250ZXh0X2V4 aXQoY2UpOwo+IC0JbXV0ZXhfdW5sb2NrKCZjZS0+cmluZy0+dGltZWxpbmUtPm11dGV4KTsKPiAg IAlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiAgIAlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAg fQo+ICAgCj4gK3N0cnVjdCBpOTE1X3JlcXVlc3QgKgo+ICtpOTE1X3JlcXVlc3RfY3JlYXRlKHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiArewo+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7 Cj4gKwo+ICsJaW50ZWxfY29udGV4dF90aW1lbGluZV9sb2NrKGNlKTsKPiArCj4gKwkvKiBNb3Zl IG91ciBvbGRlc3QgcmVxdWVzdCB0byB0aGUgc2xhYi1jYWNoZSAoaWYgbm90IGluIHVzZSEpICov Cj4gKwlycSA9IGxpc3RfZmlyc3RfZW50cnkoJmNlLT5yaW5nLT5yZXF1ZXN0X2xpc3QsIHR5cGVv ZigqcnEpLCByaW5nX2xpbmspOwo+ICsJaWYgKCFsaXN0X2lzX2xhc3QoJnJxLT5yaW5nX2xpbmss ICZjZS0+cmluZy0+cmVxdWVzdF9saXN0KSAmJgo+ICsJICAgIGk5MTVfcmVxdWVzdF9jb21wbGV0 ZWQocnEpKQo+ICsJCWk5MTVfcmVxdWVzdF9yZXRpcmUocnEpOwo+ICsKPiArCWludGVsX2NvbnRl eHRfZW50ZXIoY2UpOwo+ICsJcnEgPSBfX2k5MTVfcmVxdWVzdF9jcmVhdGUoY2UsIEdGUF9LRVJO RUwpOwo+ICsJaW50ZWxfY29udGV4dF9leGl0KGNlKTsKCkkgdGhpbmsgYSBjb21tZW50IGhlcmUg c2F5aW5nIF9faTkxNV9yZXF1ZXN0X2NyZWF0ZSBoYXMgYSByZWZlcmVuY2UgdG8gCnRoZSBjb250 ZXh0IG5vdyBzbyB3ZSBjYW4gZHJvcCB0aGUgbG9jYWwgb25lIHdvdWxkIGJlIGhlbHBmdWwuCgo+ ICsJaWYgKElTX0VSUihycSkpCj4gKwkJZ290byBlcnJfdW5sb2NrOwo+ICsKPiArCS8qIENoZWNr IHRoYXQgd2UgZG8gbm90IGludGVycnVwdCBvdXJzZWx2ZXMgd2l0aCBhIG5ldyByZXF1ZXN0ICov Cj4gKwlycS0+Y29va2llID0gbG9ja2RlcF9waW5fbG9jaygmY2UtPnJpbmctPnRpbWVsaW5lLT5t dXRleCk7Cj4gKwo+ICsJcmV0dXJuIHJxOwo+ICsKPiArZXJyX3VubG9jazoKPiArCWludGVsX2Nv bnRleHRfdGltZWxpbmVfdW5sb2NrKGNlKTsKPiArCXJldHVybiBycTsKPiArfQo+ICsKPiArLyoq Cj4gKyAqIGk5MTVfcmVxdWVzdF9hbGxvYyAtIGFsbG9jYXRlIGEgcmVxdWVzdCBzdHJ1Y3R1cmUK PiArICoKPiArICogQGVuZ2luZTogZW5naW5lIHRoYXQgd2Ugd2lzaCB0byBpc3N1ZSB0aGUgcmVx dWVzdCBvbi4KPiArICogQGN0eDogY29udGV4dCB0aGF0IHRoZSByZXF1ZXN0IHdpbGwgYmUgYXNz b2NpYXRlZCB3aXRoLgo+ICsgKgo+ICsgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgYWxsb2Nh dGVkIHJlcXVlc3QgaWYgc3VjY2Vzc2Z1bCwKPiArICogb3IgYW4gZXJyb3IgY29kZSBpZiBub3Qu Cj4gKyAqLwo+ICtzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoKPiAraTkxNV9yZXF1ZXN0X2FsbG9jKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cTsKPiArCWludCByZXQ7Cj4gKwo+ICsJLyoKPiArCSAqIFByZWVtcHQgY29udGV4dHMgYXJlIHJl c2VydmVkIGZvciBleGNsdXNpdmUgdXNlIHRvIGluamVjdCBhCj4gKwkgKiBwcmVlbXB0aW9uIGNv bnRleHQgc3dpdGNoLiBUaGV5IGFyZSBuZXZlciB0byBiZSB1c2VkIGZvciBhbnkgdHJpdmlhbAo+ ICsJICogcmVxdWVzdCEKPiArCSAqLwo+ICsJR0VNX0JVR19PTihjdHggPT0gaTkxNS0+cHJlZW1w dF9jb250ZXh0KTsKPiArCj4gKwkvKgo+ICsJICogQUJJOiBCZWZvcmUgdXNlcnNwYWNlIGFjY2Vz c2VzIHRoZSBHUFUgKGUuZy4gZXhlY2J1ZmZlciksIHJlcG9ydAo+ICsJICogRUlPIGlmIHRoZSBH UFUgaXMgYWxyZWFkeSB3ZWRnZWQuCj4gKwkgKi8KPiArCXJldCA9IGk5MTVfdGVybWluYWxseV93 ZWRnZWQoaTkxNSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gKwo+ ICsJLyoKPiArCSAqIFBpbm5pbmcgdGhlIGNvbnRleHRzIG1heSBnZW5lcmF0ZSByZXF1ZXN0cyBp biBvcmRlciB0byBhY3F1aXJlCj4gKwkgKiBHR1RUIHNwYWNlLCBzbyBkbyB0aGlzIGZpcnN0IGJl Zm9yZSB3ZSByZXNlcnZlIGEgc2Vxbm8gZm9yCj4gKwkgKiBvdXJzZWx2ZXMuCj4gKwkgKi8KPiAr CWNlID0gaW50ZWxfY29udGV4dF9waW4oY3R4LCBlbmdpbmUpOwo+ICsJaWYgKElTX0VSUihjZSkp Cj4gKwkJcmV0dXJuIEVSUl9DQVNUKGNlKTsKPiArCj4gKwlycSA9IGk5MTVfcmVxdWVzdF9jcmVh dGUoY2UpOwo+ICsJaW50ZWxfY29udGV4dF91bnBpbihjZSk7Cj4gKwo+ICsJcmV0dXJuIHJxOwo+ ICt9Cj4gKwo+ICAgc3RhdGljIGludAo+ICAgZW1pdF9zZW1hcGhvcmVfd2FpdChzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICp0bywKPiAgIAkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmZyb20sCj4gQEAg LTEwMDUsOCArMTAzNyw3IEBAIF9faTkxNV9yZXF1ZXN0X2FkZF90b190aW1lbGluZShzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSkKPiAgIAkgKiBwcmVjbHVkZXMgb3B0aW1pc2luZyB0byB1c2Ugc2Vt YXBob3JlcyBzZXJpYWxpc2F0aW9uIG9mIGEgc2luZ2xlCj4gICAJICogdGltZWxpbmUgYWNyb3Nz IGVuZ2luZXMuCj4gICAJICovCj4gLQlwcmV2ID0gaTkxNV9hY3RpdmVfcmVxdWVzdF9yYXcoJnRp bWVsaW5lLT5sYXN0X3JlcXVlc3QsCj4gLQkJCQkgICAgICAgJnJxLT5pOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiArCXByZXYgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHRpbWVsaW5lLT5s YXN0X3JlcXVlc3QucmVxdWVzdCwgMSk7Cj4gICAJaWYgKHByZXYgJiYgIWk5MTVfcmVxdWVzdF9j b21wbGV0ZWQocHJldikpIHsKPiAgIAkJaWYgKGlzX3Bvd2VyX29mXzIocHJldi0+ZW5naW5lLT5t YXNrIHwgcnEtPmVuZ2luZS0+bWFzaykpCj4gICAJCQlpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2Zl bmNlKCZycS0+c3VibWl0LAo+IEBAIC0xMDI3LDYgKzEwNTgsMTEgQEAgX19pOTE1X3JlcXVlc3Rf YWRkX3RvX3RpbWVsaW5lKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgCWxpc3RfYWRkX3Rh aWwoJnJxLT5saW5rLCAmdGltZWxpbmUtPnJlcXVlc3RzKTsKPiAgIAlzcGluX3VubG9ja19pcnEo JnRpbWVsaW5lLT5sb2NrKTsKPiAgIAo+ICsJLyoKPiArCSAqIE1ha2Ugc3VyZSB0aGF0IG5vIHJl cXVlc3QgZ2F6dW1wZWQgdXMgLSBpZiBpdCB3YXMgYWxsb2NhdGVkIGFmdGVyCj4gKwkgKiBvdXIg aTkxNV9yZXF1ZXN0X2FsbG9jKCkgYW5kIGNhbGxlZCBfX2k5MTVfcmVxdWVzdF9hZGQoKSBiZWZv cmUKPiArCSAqIHVzLCB0aGUgdGltZWxpbmUgd2lsbCBob2xkIGl0cyBzZXFubyB3aGljaCBpcyBs YXRlciB0aGFuIG91cnMuCj4gKwkgKi8KPiAgIAlHRU1fQlVHX09OKHRpbWVsaW5lLT5zZXFubyAh PSBycS0+ZmVuY2Uuc2Vxbm8pOwo+ICAgCV9faTkxNV9hY3RpdmVfcmVxdWVzdF9zZXQoJnRpbWVs aW5lLT5sYXN0X3JlcXVlc3QsIHJxKTsKPiAgIAo+IEBAIC0xMDM4LDM2ICsxMDc0LDIzIEBAIF9f aTkxNV9yZXF1ZXN0X2FkZF90b190aW1lbGluZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAg ICAqIHJlcXVlc3QgaXMgbm90IGJlaW5nIHRyYWNrZWQgZm9yIGNvbXBsZXRpb24gYnV0IHRoZSB3 b3JrIGl0c2VsZiBpcwo+ICAgICogZ29pbmcgdG8gaGFwcGVuIG9uIHRoZSBoYXJkd2FyZS4gVGhp cyB3b3VsZCBiZSBhIEJhZCBUaGluZyh0bSkuCj4gICAgKi8KPiAtdm9pZCBpOTE1X3JlcXVlc3Rf YWRkKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gK3N0cnVjdCBpOTE1X3JlcXVlc3Qg Kl9faTkxNV9yZXF1ZXN0X2NvbW1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAt CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVuZ2luZTsKPiAtCXN0 cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSA9IHJlcXVlc3QtPnRpbWVsaW5lOwo+IC0Jc3Ry dWN0IGludGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwo+ICsJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lID0gcnEtPmVuZ2luZTsKPiArCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5n ID0gcnEtPnJpbmc7Cj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcHJldjsKPiAgIAl1MzIgKmNz Owo+ICAgCj4gICAJR0VNX1RSQUNFKCIlcyBmZW5jZSAlbGx4OiVsbGRcbiIsCj4gLQkJICBlbmdp bmUtPm5hbWUsIHJlcXVlc3QtPmZlbmNlLmNvbnRleHQsIHJlcXVlc3QtPmZlbmNlLnNlcW5vKTsK PiAtCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZyZXF1ZXN0LT50aW1lbGluZS0+bXV0ZXgpOwo+ IC0JbG9ja2RlcF91bnBpbl9sb2NrKCZyZXF1ZXN0LT50aW1lbGluZS0+bXV0ZXgsIHJlcXVlc3Qt PmNvb2tpZSk7Cj4gLQo+IC0JdHJhY2VfaTkxNV9yZXF1ZXN0X2FkZChyZXF1ZXN0KTsKPiAtCj4g LQkvKgo+IC0JICogTWFrZSBzdXJlIHRoYXQgbm8gcmVxdWVzdCBnYXp1bXBlZCB1cyAtIGlmIGl0 IHdhcyBhbGxvY2F0ZWQgYWZ0ZXIKPiAtCSAqIG91ciBpOTE1X3JlcXVlc3RfYWxsb2MoKSBhbmQg Y2FsbGVkIF9faTkxNV9yZXF1ZXN0X2FkZCgpIGJlZm9yZQo+IC0JICogdXMsIHRoZSB0aW1lbGlu ZSB3aWxsIGhvbGQgaXRzIHNlcW5vIHdoaWNoIGlzIGxhdGVyIHRoYW4gb3Vycy4KPiAtCSAqLwo+ IC0JR0VNX0JVR19PTih0aW1lbGluZS0+c2Vxbm8gIT0gcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8pOwo+ ICsJCSAgZW5naW5lLT5uYW1lLCBycS0+ZmVuY2UuY29udGV4dCwgcnEtPmZlbmNlLnNlcW5vKTsK PiAgIAo+ICAgCS8qCj4gICAJICogVG8gZW5zdXJlIHRoYXQgdGhpcyBjYWxsIHdpbGwgbm90IGZh aWwsIHNwYWNlIGZvciBpdHMgZW1pc3Npb25zCj4gICAJICogc2hvdWxkIGFscmVhZHkgaGF2ZSBi ZWVuIHJlc2VydmVkIGluIHRoZSByaW5nIGJ1ZmZlci4gTGV0IHRoZSByaW5nCj4gICAJICoga25v dyB0aGF0IGl0IGlzIHRpbWUgdG8gdXNlIHRoYXQgc3BhY2UgdXAuCj4gICAJICovCj4gLQlHRU1f QlVHX09OKHJlcXVlc3QtPnJlc2VydmVkX3NwYWNlID4gcmVxdWVzdC0+cmluZy0+c3BhY2UpOwo+ IC0JcmVxdWVzdC0+cmVzZXJ2ZWRfc3BhY2UgPSAwOwo+ICsJR0VNX0JVR19PTihycS0+cmVzZXJ2 ZWRfc3BhY2UgPiByaW5nLT5zcGFjZSk7Cj4gKwlycS0+cmVzZXJ2ZWRfc3BhY2UgPSAwOwo+ICAg Cj4gICAJLyoKPiAgIAkgKiBSZWNvcmQgdGhlIHBvc2l0aW9uIG9mIHRoZSBzdGFydCBvZiB0aGUg YnJlYWRjcnVtYiBzbyB0aGF0Cj4gQEAgLTEwNzUsMTcgKzEwOTgsMTcgQEAgdm9pZCBpOTE1X3Jl cXVlc3RfYWRkKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJICogR1BVIHByb2Nl c3NpbmcgdGhlIHJlcXVlc3QsIHdlIG5ldmVyIG92ZXItZXN0aW1hdGUgdGhlCj4gICAJICogcG9z aXRpb24gb2YgdGhlIHJpbmcncyBIRUFELgo+ICAgCSAqLwo+IC0JY3MgPSBpbnRlbF9yaW5nX2Jl Z2luKHJlcXVlc3QsIGVuZ2luZS0+ZW1pdF9maW5pX2JyZWFkY3J1bWJfZHcpOwo+ICsJY3MgPSBp bnRlbF9yaW5nX2JlZ2luKHJxLCBlbmdpbmUtPmVtaXRfZmluaV9icmVhZGNydW1iX2R3KTsKPiAg IAlHRU1fQlVHX09OKElTX0VSUihjcykpOwo+IC0JcmVxdWVzdC0+cG9zdGZpeCA9IGludGVsX3Jp bmdfb2Zmc2V0KHJlcXVlc3QsIGNzKTsKPiArCXJxLT5wb3N0Zml4ID0gaW50ZWxfcmluZ19vZmZz ZXQocnEsIGNzKTsKPiAgIAo+IC0JcHJldiA9IF9faTkxNV9yZXF1ZXN0X2FkZF90b190aW1lbGlu ZShyZXF1ZXN0KTsKPiArCXByZXYgPSBfX2k5MTVfcmVxdWVzdF9hZGRfdG9fdGltZWxpbmUocnEp Owo+ICAgCj4gLQlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5yaW5nX2xpbmssICZyaW5nLT5yZXF1 ZXN0X2xpc3QpOwo+IC0JaWYgKGxpc3RfaXNfZmlyc3QoJnJlcXVlc3QtPnJpbmdfbGluaywgJnJp bmctPnJlcXVlc3RfbGlzdCkpCj4gLQkJbGlzdF9hZGQoJnJpbmctPmFjdGl2ZV9saW5rLCAmcmVx dWVzdC0+aTkxNS0+Z3QuYWN0aXZlX3JpbmdzKTsKPiAtCXJlcXVlc3QtPmk5MTUtPmd0LmFjdGl2 ZV9lbmdpbmVzIHw9IHJlcXVlc3QtPmVuZ2luZS0+bWFzazsKPiAtCXJlcXVlc3QtPmVtaXR0ZWRf amlmZmllcyA9IGppZmZpZXM7Cj4gKwlsaXN0X2FkZF90YWlsKCZycS0+cmluZ19saW5rLCAmcmlu Zy0+cmVxdWVzdF9saXN0KTsKPiArCWlmIChsaXN0X2lzX2ZpcnN0KCZycS0+cmluZ19saW5rLCAm cmluZy0+cmVxdWVzdF9saXN0KSkKPiArCQlsaXN0X2FkZCgmcmluZy0+YWN0aXZlX2xpbmssICZy cS0+aTkxNS0+Z3QuYWN0aXZlX3JpbmdzKTsKPiArCXJxLT5pOTE1LT5ndC5hY3RpdmVfZW5naW5l cyB8PSBycS0+ZW5naW5lLT5tYXNrOwo+ICsJcnEtPmVtaXR0ZWRfamlmZmllcyA9IGppZmZpZXM7 Cj4gICAKPiAgIAkvKgo+ICAgCSAqIExldCB0aGUgYmFja2VuZCBrbm93IGEgbmV3IHJlcXVlc3Qg aGFzIGFycml2ZWQgdGhhdCBtYXkgbmVlZAo+IEBAIC0xMTAxLDcgKzExMjQsNyBAQCB2b2lkIGk5 MTVfcmVxdWVzdF9hZGQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAlsb2NhbF9i aF9kaXNhYmxlKCk7Cj4gICAJcmN1X3JlYWRfbG9jaygpOyAvKiBSQ1Ugc2VyaWFsaXNhdGlvbiBm b3Igc2V0LXdlZGdlZCBwcm90ZWN0aW9uICovCj4gICAJaWYgKGVuZ2luZS0+c2NoZWR1bGUpIHsK PiAtCQlzdHJ1Y3QgaTkxNV9zY2hlZF9hdHRyIGF0dHIgPSByZXF1ZXN0LT5nZW1fY29udGV4dC0+ c2NoZWQ7Cj4gKwkJc3RydWN0IGk5MTVfc2NoZWRfYXR0ciBhdHRyID0gcnEtPmdlbV9jb250ZXh0 LT5zY2hlZDsKPiAgIAo+ICAgCQkvKgo+ICAgCQkgKiBCb29zdCBhY3R1YWwgd29ya2xvYWRzIHBh c3Qgc2VtYXBob3JlcyEKPiBAQCAtMTExNSw3ICsxMTM4LDcgQEAgdm9pZCBpOTE1X3JlcXVlc3Rf YWRkKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJCSAqIGZhciBpbiB0aGUgZGlz dGFuY2UgcGFzdCBvdmVyIHVzZWZ1bCB3b3JrLCB3ZSBrZWVwIGEgaGlzdG9yeQo+ICAgCQkgKiBv ZiBhbnkgc2VtYXBob3JlIHVzZSBhbG9uZyBvdXIgZGVwZW5kZW5jeSBjaGFpbi4KPiAgIAkJICov Cj4gLQkJaWYgKCEocmVxdWVzdC0+c2NoZWQuZmxhZ3MgJiBJOTE1X1NDSEVEX0hBU19TRU1BUEhP UkVfQ0hBSU4pKQo+ICsJCWlmICghKHJxLT5zY2hlZC5mbGFncyAmIEk5MTVfU0NIRURfSEFTX1NF TUFQSE9SRV9DSEFJTikpCj4gICAJCQlhdHRyLnByaW9yaXR5IHw9IEk5MTVfUFJJT1JJVFlfTk9T RU1BUEhPUkU7Cj4gICAKPiAgIAkJLyoKPiBAQCAtMTEyNCwxNSArMTE0NywyOSBAQCB2b2lkIGk5 MTVfcmVxdWVzdF9hZGQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAkJICogQWxs b3cgaW50ZXJhY3RpdmUvc3luY2hyb25vdXMgY2xpZW50cyB0byBqdW1wIGFoZWFkIG9mCj4gICAJ CSAqIHRoZSBidWxrIGNsaWVudHMuIChGUV9DT0RFTCkKPiAgIAkJICovCj4gLQkJaWYgKGxpc3Rf ZW1wdHkoJnJlcXVlc3QtPnNjaGVkLnNpZ25hbGVyc19saXN0KSkKPiArCQlpZiAobGlzdF9lbXB0 eSgmcnEtPnNjaGVkLnNpZ25hbGVyc19saXN0KSkKPiAgIAkJCWF0dHIucHJpb3JpdHkgfD0gSTkx NV9QUklPUklUWV9ORVdDTElFTlQ7Cj4gICAKPiAtCQllbmdpbmUtPnNjaGVkdWxlKHJlcXVlc3Qs ICZhdHRyKTsKPiArCQllbmdpbmUtPnNjaGVkdWxlKHJxLCAmYXR0cik7Cj4gICAJfQo+ICAgCXJj dV9yZWFkX3VubG9jaygpOwo+IC0JaTkxNV9zd19mZW5jZV9jb21taXQoJnJlcXVlc3QtPnN1Ym1p dCk7Cj4gKwlpOTE1X3N3X2ZlbmNlX2NvbW1pdCgmcnEtPnN1Ym1pdCk7Cj4gICAJbG9jYWxfYmhf ZW5hYmxlKCk7IC8qIEtpY2sgdGhlIGV4ZWNsaXN0cyB0YXNrbGV0IGlmIGp1c3Qgc2NoZWR1bGVk ICovCj4gICAKPiArCXJldHVybiBwcmV2Owo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfcmVxdWVzdF9h ZGQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnByZXY7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmcnEtPnRpbWVsaW5lLT5tdXRleCk7 Cj4gKwlsb2NrZGVwX3VucGluX2xvY2soJnJxLT50aW1lbGluZS0+bXV0ZXgsIHJxLT5jb29raWUp Owo+ICsKPiArCXRyYWNlX2k5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsKPiArCXByZXYgPSBfX2k5 MTVfcmVxdWVzdF9jb21taXQocnEpOwo+ICsKPiAgIAkvKgo+ICAgCSAqIEluIHR5cGljYWwgc2Nl bmFyaW9zLCB3ZSBkbyBub3QgZXhwZWN0IHRoZSBwcmV2aW91cyByZXF1ZXN0IG9uCj4gICAJICog dGhlIHRpbWVsaW5lIHRvIGJlIHN0aWxsIHRyYWNrZWQgYnkgdGltZWxpbmUtPmxhc3RfcmVxdWVz dCBpZiBpdAo+IEBAIC0xMTUzLDcgKzExOTAsNyBAQCB2b2lkIGk5MTVfcmVxdWVzdF9hZGQoc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAlpZiAocHJldiAmJiBpOTE1X3JlcXVlc3Rf Y29tcGxldGVkKHByZXYpKQo+ICAgCQlpOTE1X3JlcXVlc3RfcmV0aXJlX3VwdG8ocHJldik7Cj4g ICAKPiAtCW11dGV4X3VubG9jaygmcmVxdWVzdC0+dGltZWxpbmUtPm11dGV4KTsKPiArCW11dGV4 X3VubG9jaygmcnEtPnRpbWVsaW5lLT5tdXRleCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB1bnNp Z25lZCBsb25nIGxvY2FsX2Nsb2NrX3VzKHVuc2lnbmVkIGludCAqY3B1KQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVxdWVzdC5oCj4gaW5kZXggODc1YmU2ZjcxNDEyLi45YTUwMDcyMTcxZjggMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IEBAIC0yMzgsNiArMjM4LDEzIEBA IHN0YXRpYyBpbmxpbmUgYm9vbCBkbWFfZmVuY2VfaXNfaTkxNShjb25zdCBzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSkKPiAgIAlyZXR1cm4gZmVuY2UtPm9wcyA9PSAmaTkxNV9mZW5jZV9vcHM7Cj4g ICB9Cj4gICAKPiArc3RydWN0IGk5MTVfcmVxdWVzdCAqIF9fbXVzdF9jaGVjawo+ICtfX2k5MTVf cmVxdWVzdF9jcmVhdGUoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLCBnZnBfdCBnZnApOwo+ICtz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICogX19tdXN0X2NoZWNrCj4gK2k5MTVfcmVxdWVzdF9jcmVhdGUo c3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKPiArCj4gK3N0cnVjdCBpOTE1X3JlcXVlc3QgKl9f aTkxNV9yZXF1ZXN0X2NvbW1pdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KTsKPiArCj4g ICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICogX19tdXN0X2NoZWNrCj4gICBpOTE1X3JlcXVlc3RfYWxs b2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQkgICBzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfb3ZlcmxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gaW5k ZXggYTg4MmI4ZDQyYmQ5Li5mZWE4YzU4NjlkYTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfb3ZlcmxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfb3ZlcmxheS5jCj4gQEAgLTIzNSwxMCArMjM1LDkgQEAgc3RhdGljIGludCBpbnRlbF9vdmVy bGF5X2RvX3dhaXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPiAgIAo+ ICAgc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmFsbG9jX3JlcXVlc3Qoc3RydWN0IGludGVs X292ZXJsYXkgKm92ZXJsYXkpCj4gICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBvdmVybGF5LT5pOTE1Owo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l ID0gZGV2X3ByaXYtPmVuZ2luZVtSQ1MwXTsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSA9IG92ZXJsYXktPmk5MTUtPmVuZ2luZVtSQ1MwXTsKPiAgIAo+IC0JcmV0dXJuIGk5MTVf cmVxdWVzdF9hbGxvYyhlbmdpbmUsIGRldl9wcml2LT5rZXJuZWxfY29udGV4dCk7Cj4gKwlyZXR1 cm4gaTkxNV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250ZXh0KTsKPiAgIH0KPiAg IAo+ICAgLyogb3ZlcmxheSBuZWVkcyB0byBiZSBkaXNhYmxlIGluIE9DTUQgcmVnICovCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMKPiBpbmRleCAyN2Q4 Zjg1MzExMWIuLmVlZTgzOGRjMDYzNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9hY3RpdmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jCj4gQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIGludCBfX2xp dmVfYWN0aXZlX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCWZvcl9l YWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gICAJCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxOwo+ICAgCj4gLQkJcnEgPSBpOTE1X3JlcXVlc3RfYWxsb2MoZW5naW5lLCBpOTE1LT5rZXJu ZWxfY29udGV4dCk7Cj4gKwkJcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVs X2NvbnRleHQpOwo+ICAgCQlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQkJZXJyID0gUFRSX0VSUihy cSk7Cj4gICAJCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gaW5kZXggZTQzNjMwYjQwZmNlLi4wNDZhMzg3NDMx NTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2NvaGVyZW5jeS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVf Z2VtX2NvaGVyZW5jeS5jCj4gQEAgLTIwMiw3ICsyMDIsNyBAQCBzdGF0aWMgaW50IGdwdV9zZXQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlpZiAoSVNfRVJSKHZtYSkpCj4g ICAJCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gICAKPiAtCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9j KGk5MTUtPmVuZ2luZVtSQ1MwXSwgaTkxNS0+a2VybmVsX2NvbnRleHQpOwo+ICsJcnEgPSBpOTE1 X3JlcXVlc3RfY3JlYXRlKGk5MTUtPmVuZ2luZVtSQ1MwXS0+a2VybmVsX2NvbnRleHQpOwo+ICAg CWlmIChJU19FUlIocnEpKSB7Cj4gICAJCWk5MTVfdm1hX3VucGluKHZtYSk7Cj4gICAJCXJldHVy biBQVFJfRVJSKHJxKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfZ2VtX29iamVjdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX29iamVjdC5jCj4gaW5kZXggMTJmYzUzYzY5NGE2Li4xMjIwM2Q2NjVhNGUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5j Cj4gQEAgLTQ2OCw3ICs0NjgsNyBAQCBzdGF0aWMgaW50IG1ha2Vfb2JqX2J1c3koc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAlpZiAoZXJyKQo+ICAgCQlyZXR1cm4gZXJyOwo+ ICAgCj4gLQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvYyhpOTE1LT5lbmdpbmVbUkNTMF0sIGk5MTUt Pmtlcm5lbF9jb250ZXh0KTsKPiArCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShpOTE1LT5lbmdp bmVbUkNTMF0tPmtlcm5lbF9jb250ZXh0KTsKPiAgIAlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQlp OTE1X3ZtYV91bnBpbih2bWEpOwo+ICAgCQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IGU2ZmZlMjI0 MDEyNi4uMDk4ZDdiM2FhMTMxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X3JlcXVlc3QuYwo+IEBAIC01NTEsOCArNTUxLDcgQEAgc3RhdGljIGludCBsaXZl X25vcF9yZXF1ZXN0KHZvaWQgKmFyZykKPiAgIAkJCXRpbWVzWzFdID0ga3RpbWVfZ2V0X3Jhdygp Owo+ICAgCj4gICAJCQlmb3IgKG4gPSAwOyBuIDwgcHJpbWU7IG4rKykgewo+IC0JCQkJcmVxdWVz dCA9IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsCj4gLQkJCQkJCQkgICAgIGk5MTUtPmtlcm5l bF9jb250ZXh0KTsKPiArCQkJCXJlcXVlc3QgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+ a2VybmVsX2NvbnRleHQpOwo+ICAgCQkJCWlmIChJU19FUlIocmVxdWVzdCkpIHsKPiAgIAkJCQkJ ZXJyID0gUFRSX0VSUihyZXF1ZXN0KTsKPiAgIAkJCQkJZ290byBvdXRfdW5sb2NrOwo+IEBAIC02 NDksNyArNjQ4LDcgQEAgZW1wdHlfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUsCj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdDsKPiAgIAlpbnQgZXJyOwo+ICAg Cj4gLQlyZXF1ZXN0ID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgZW5naW5lLT5pOTE1LT5r ZXJuZWxfY29udGV4dCk7Cj4gKwlyZXF1ZXN0ID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUt Pmtlcm5lbF9jb250ZXh0KTsKPiAgIAlpZiAoSVNfRVJSKHJlcXVlc3QpKQo+ICAgCQlyZXR1cm4g cmVxdWVzdDsKPiAgIAo+IEBAIC04NTMsNyArODUyLDcgQEAgc3RhdGljIGludCBsaXZlX2FsbF9l bmdpbmVzKHZvaWQgKmFyZykKPiAgIAl9Cj4gICAKPiAgIAlmb3JfZWFjaF9lbmdpbmUoZW5naW5l LCBpOTE1LCBpZCkgewo+IC0JCXJlcXVlc3RbaWRdID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2lu ZSwgaTkxNS0+a2VybmVsX2NvbnRleHQpOwo+ICsJCXJlcXVlc3RbaWRdID0gaTkxNV9yZXF1ZXN0 X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250ZXh0KTsKPiAgIAkJaWYgKElTX0VSUihyZXF1ZXN0 W2lkXSkpIHsKPiAgIAkJCWVyciA9IFBUUl9FUlIocmVxdWVzdFtpZF0pOwo+ICAgCQkJcHJfZXJy KCIlczogUmVxdWVzdCBhbGxvY2F0aW9uIGZhaWxlZCB3aXRoIGVycj0lZFxuIiwKPiBAQCAtOTYy LDcgKzk2MSw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9zZXF1ZW50aWFsX2VuZ2luZXModm9pZCAqYXJn KQo+ICAgCQkJZ290byBvdXRfdW5sb2NrOwo+ICAgCQl9Cj4gICAKPiAtCQlyZXF1ZXN0W2lkXSA9 IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKPiArCQly ZXF1ZXN0W2lkXSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7 Cj4gICAJCWlmIChJU19FUlIocmVxdWVzdFtpZF0pKSB7Cj4gICAJCQllcnIgPSBQVFJfRVJSKHJl cXVlc3RbaWRdKTsKPiAgIAkJCXByX2VycigiJXM6IFJlcXVlc3QgYWxsb2NhdGlvbiBmYWlsZWQg Zm9yICVzIHdpdGggZXJyPSVkXG4iLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfdGltZWxpbmUuYwo+IGluZGV4IDhlN2JjYWExZWI2Ni4uMjI3NDc5MzQ5YzYxIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3RpbWVsaW5l LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5j Cj4gQEAgLTQ1NCw3ICs0NTQsNyBAQCB0bF93cml0ZShzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGws IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHZhbHVlKQo+ICAgCQlnb3RvIG91 dDsKPiAgIAl9Cj4gICAKPiAtCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgZW5naW5l LT5pOTE1LT5rZXJuZWxfY29udGV4dCk7Cj4gKwlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5n aW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gICAJaWYgKElTX0VSUihycSkpCj4gICAJCWdvdG8gb3V0 X3VucGluOwo+ICAgCj4gQEAgLTY3OCw3ICs2NzgsNyBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF93 cmFwKHZvaWQgKmFyZykKPiAgIAkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVu Z2luZSkpCj4gICAJCQljb250aW51ZTsKPiAgIAo+IC0JCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9j KGVuZ2luZSwgaTkxNS0+a2VybmVsX2NvbnRleHQpOwo+ICsJCXJxID0gaTkxNV9yZXF1ZXN0X2Ny ZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250ZXh0KTsKPiAgIAkJaWYgKElTX0VSUihycSkpIHsKPiAg IAkJCWVyciA9IFBUUl9FUlIocnEpOwo+ICAgCQkJZ290byBvdXQ7Cj4gCgpXaXRoIHRoZSBjb21t ZW50IGFkZGVkOgoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBp bnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==