From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 50/64] drm/i915: Prepare i915_gem_active for annotations Date: Wed, 13 Jul 2016 16:40:03 +0100 Message-ID: <578660D3.1090904@linux.intel.com> References: <1467880930-23082-1-git-send-email-chris@chris-wilson.co.uk> <1467880930-23082-50-git-send-email-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 2BD896E787 for ; Wed, 13 Jul 2016 15:40:06 +0000 (UTC) In-Reply-To: <1467880930-23082-50-git-send-email-chris@chris-wilson.co.uk> 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 Ck9uIDA3LzA3LzE2IDA5OjQxLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gSW4gdGhlIGZ1dHVyZSwg d2Ugd2lsbCB3YW50IHRvIGFkZCBhbm5vdGF0aW9ucyB0byB0aGUgaTkxNV9nZW1fYWN0aXZlCj4g c3RydWN0LiBUaGUgQVBJIGlzIHRodXMgZXhwYW5kZWQgdG8gaGlkZSBkaXJlY3QgYWNjZXNzIHRv IHRoZSBjb250ZW50cwo+IG9mIGk5MTVfZ2VtX2FjdGl2ZSBhbmQgbWVkaWF0ZWQgaW5zdGVhZCB0 aHJvdWdoIGEgbnVtYmVyIG9mIGhlbHBlcnMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxz b24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jICAgICB8ICAxMyArKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbS5jICAgICAgICAgfCAgOTEgKysrKysrKysrKysrKy0tLS0tLS0tLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jICB8ICAgNCArLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYyAgIHwgIDExICsrLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oIHwgMTI4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYyAg fCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYyB8ICAg OCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgIHwgICA5ICsr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgIHwgIDE1ICsrLS0K PiAgIDkgZmlsZXMgY2hhbmdlZCwgMjA4IGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQo+ Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBkZDgzMmVhY2U0ODcuLmFl MWM2NDBmYzFjOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTE1 NSwxMCArMTU1LDEwIEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJCSAgIG9iai0+YmFzZS53cml0ZV9kb21haW4p Owo+ICAgCWZvcl9lYWNoX2VuZ2luZV9pZChlbmdpbmUsIGRldl9wcml2LCBpZCkKPiAgIAkJc2Vx X3ByaW50ZihtLCAiJXggIiwKPiAtCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ob2Jq LT5sYXN0X3JlYWRbaWRdLnJlcXVlc3QpKTsKPiArCQkJICAgaTkxNV9nZW1fYWN0aXZlX2dldF9z ZXFubygmb2JqLT5sYXN0X3JlYWRbaWRdKSk7Cj4gICAJc2VxX3ByaW50ZihtLCAiXSAleCAleCVz JXMlcyIsCj4gLQkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ob2JqLT5sYXN0X3dyaXRl LnJlcXVlc3QpLAo+IC0JCSAgIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9m ZW5jZS5yZXF1ZXN0KSwKPiArCQkgICBpOTE1X2dlbV9hY3RpdmVfZ2V0X3NlcW5vKCZvYmotPmxh c3Rfd3JpdGUpLAo+ICsJCSAgIGk5MTVfZ2VtX2FjdGl2ZV9nZXRfc2Vxbm8oJm9iai0+bGFzdF9m ZW5jZSksCj4gICAJCSAgIGk5MTVfY2FjaGVfbGV2ZWxfc3RyKHRvX2k5MTUob2JqLT5iYXNlLmRl diksIG9iai0+Y2FjaGVfbGV2ZWwpLAo+ICAgCQkgICBvYmotPmRpcnR5ID8gIiBkaXJ0eSIgOiAi IiwKPiAgIAkJICAgb2JqLT5tYWR2ID09IEk5MTVfTUFEVl9ET05UTkVFRCA/ICIgcHVyZ2VhYmxl IiA6ICIiKTsKPiBAQCAtMTk1LDggKzE5NSwxMSBAQCBkZXNjcmliZV9vYmooc3RydWN0IHNlcV9m aWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgCQkqdCA9ICdcMCc7 Cj4gICAJCXNlcV9wcmludGYobSwgIiAoJXMgbWFwcGFibGUpIiwgcyk7Cj4gICAJfQo+IC0JaWYg KG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0KQo+IC0JCXNlcV9wcmludGYobSwgIiAoJXMpIiwgb2Jq LT5sYXN0X3dyaXRlLnJlcXVlc3QtPmVuZ2luZS0+bmFtZSk7Cj4gKwo+ICsJZW5naW5lID0gaTkx NV9nZW1fYWN0aXZlX2dldF9lbmdpbmUoJm9iai0+bGFzdF93cml0ZSk7Cj4gKwlpZiAoZW5naW5l KQo+ICsJCXNlcV9wcmludGYobSwgIiAoJXMpIiwgZW5naW5lLT5uYW1lKTsKPiArCj4gICAJaWYg KG9iai0+ZnJvbnRidWZmZXJfYml0cykKPiAgIAkJc2VxX3ByaW50ZihtLCAiIChmcm9udGJ1ZmZl cjogMHglMDN4KSIsIG9iai0+ZnJvbnRidWZmZXJfYml0cyk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gaW5kZXggNWYzMDJmYWY4NmU3Li45YzM3MWU4NGIxYmIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMTM0OSwyNyArMTM0OSwzMCBAQCBpbnQKPiAgIGk5MTVf Z2VtX29iamVjdF93YWl0X3JlbmRlcmluZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+ICAgCQkJICAgICAgIGJvb2wgcmVhZG9ubHkpCj4gICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gICAJc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVz djsKPiAgIAlpbnQgcmV0LCBpOwo+Cj4gICAJaWYgKHJlYWRvbmx5KSB7Cj4gLQkJaWYgKG9iai0+ bGFzdF93cml0ZS5yZXF1ZXN0KSB7Cj4gLQkJCXJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KG9iai0+ bGFzdF93cml0ZS5yZXF1ZXN0KTsKPiArCQlyZXF1ZXN0ID0gaTkxNV9nZW1fYWN0aXZlX3BlZWso Jm9iai0+bGFzdF93cml0ZSk7CgpXaHkgbm90IGdldF9yZXF1ZXN0IHNpbmNlIHlvdSBoYXZlIGdl dF9lbmdpbmU/IE9yIGxhdGVyIHRoZXJlIHdpbGwgYmUgCmdldF9yZXF1ZXN0IHdpdGggZGlmZmVy ZW50IHNlbWFudGljcz8KCj4gKwkJaWYgKHJlcXVlc3QpIHsKPiArCQkJcmV0ID0gaTkxNV93YWl0 X3JlcXVlc3QocmVxdWVzdCk7Cj4gICAJCQlpZiAocmV0KQo+ICAgCQkJCXJldHVybiByZXQ7Cj4K PiAtCQkJaSA9IG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0LT5lbmdpbmUtPmlkOwo+IC0JCQlpZiAo b2JqLT5sYXN0X3JlYWRbaV0ucmVxdWVzdCA9PSBvYmotPmxhc3Rfd3JpdGUucmVxdWVzdCkKPiAr CQkJaSA9IHJlcXVlc3QtPmVuZ2luZS0+aWQ7Cj4gKwkJCWlmIChpOTE1X2dlbV9hY3RpdmVfcGVl aygmb2JqLT5sYXN0X3JlYWRbaV0pID09IHJlcXVlc3QpCj4gICAJCQkJaTkxNV9nZW1fb2JqZWN0 X3JldGlyZV9fcmVhZChvYmosIGkpOwo+ICAgCQkJZWxzZQo+ICAgCQkJCWk5MTVfZ2VtX29iamVj dF9yZXRpcmVfX3dyaXRlKG9iaik7Cj4gICAJCX0KPiAgIAl9IGVsc2Ugewo+ICAgCQlmb3IgKGkg PSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsrKSB7Cj4gLQkJCWlmICghb2JqLT5sYXN0X3Jl YWRbaV0ucmVxdWVzdCkKPiArCQkJcmVxdWVzdCA9IGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZvYmot Pmxhc3RfcmVhZFtpXSk7Cj4gKwkJCWlmICghcmVxdWVzdCkKPiAgIAkJCQljb250aW51ZTsKPgo+ IC0JCQlyZXQgPSBpOTE1X3dhaXRfcmVxdWVzdChvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0KTsK PiArCQkJcmV0ID0gaTkxNV93YWl0X3JlcXVlc3QocmVxdWVzdCk7Cj4gICAJCQlpZiAocmV0KQo+ ICAgCQkJCXJldHVybiByZXQ7Cj4KPiBAQCAtMTM5Nyw5ICsxNDAwLDkgQEAgaTkxNV9nZW1fb2Jq ZWN0X3JldGlyZV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICB7 Cj4gICAJaW50IHJpbmcgPSByZXEtPmVuZ2luZS0+aWQ7Cj4KPiAtCWlmIChvYmotPmxhc3RfcmVh ZFtyaW5nXS5yZXF1ZXN0ID09IHJlcSkKPiArCWlmIChpOTE1X2dlbV9hY3RpdmVfcGVlaygmb2Jq LT5sYXN0X3JlYWRbcmluZ10pID09IHJlcSkKPiAgIAkJaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9f cmVhZChvYmosIHJpbmcpOwo+IC0JZWxzZSBpZiAob2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QgPT0g cmVxKQo+ICsJZWxzZSBpZiAoaTkxNV9nZW1fYWN0aXZlX3BlZWsoJm9iai0+bGFzdF93cml0ZSkg PT0gcmVxKQo+ICAgCQlpOTE1X2dlbV9vYmplY3RfcmV0aXJlX193cml0ZShvYmopOwo+Cj4gICAJ aWYgKCFpOTE1X3Jlc2V0X2luX3Byb2dyZXNzKCZyZXEtPmk5MTUtPmdwdV9lcnJvcikpCj4gQEAg LTE0MjgsMjAgKzE0MzEsMjAgQEAgaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nX19ub25i bG9ja2luZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCWlmIChyZWFkb25s eSkgewo+ICAgCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKPgo+IC0JCXJlcSA9 IG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0Owo+ICsJCXJlcSA9IGk5MTVfZ2VtX2FjdGl2ZV9wZWVr KCZvYmotPmxhc3Rfd3JpdGUpOwo+ICAgCQlpZiAocmVxID09IE5VTEwpCj4gICAJCQlyZXR1cm4g MDsKPgo+IC0JCXJlcXVlc3RzW24rK10gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldChyZXEpOwo+ICsJ CXJlcXVlc3RzW24rK10gPSByZXE7CgpJdCB1c2VkIHRvIHRha2UgYSByZWZlcmVuY2UgYW5kIG5v dyBpdCBkb2Vzbid0LgoKPiAgIAl9IGVsc2Ugewo+ICAgCQlmb3IgKGkgPSAwOyBpIDwgSTkxNV9O VU1fRU5HSU5FUzsgaSsrKSB7Cj4gICAJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cTsKPgo+IC0JCQlyZXEgPSBvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0Owo+ICsJCQlyZXEgPSBp OTE1X2dlbV9hY3RpdmVfcGVlaygmb2JqLT5sYXN0X3JlYWRbaV0pOwo+ICAgCQkJaWYgKHJlcSA9 PSBOVUxMKQo+ICAgCQkJCWNvbnRpbnVlOwo+Cj4gLQkJCXJlcXVlc3RzW24rK10gPSBpOTE1X2dl bV9yZXF1ZXN0X2dldChyZXEpOwo+ICsJCQlyZXF1ZXN0c1tuKytdID0gcmVxOwo+ICAgCQl9Cj4g ICAJfQo+Cj4gQEAgLTIzODMsMjUgKzIzODYsMjcgQEAgdm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2Fj dGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgIHN0YXRpYyB2b2lkCj4gICBpOTE1X2dlbV9v YmplY3RfcmV0aXJlX193cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAg ewo+IC0JR0VNX0JVR19PTighb2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QpOwo+IC0JR0VNX0JVR19P TighKG9iai0+YWN0aXZlICYgaW50ZWxfZW5naW5lX2ZsYWcob2JqLT5sYXN0X3dyaXRlLnJlcXVl c3QtPmVuZ2luZSkpKTsKPiArCUdFTV9CVUdfT04oIV9faTkxNV9nZW1fYWN0aXZlX2lzX2J1c3ko Jm9iai0+bGFzdF93cml0ZSkpOwo+ICsJR0VNX0JVR19PTighKG9iai0+YWN0aXZlICYgaW50ZWxf ZW5naW5lX2ZsYWcoaTkxNV9nZW1fYWN0aXZlX2dldF9lbmdpbmUoJm9iai0+bGFzdF93cml0ZSkp KSk7Cj4KPiAtCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvYmotPmxhc3Rfd3JpdGUucmVxdWVz dCwgTlVMTCk7Cj4gKwlpOTE1X2dlbV9hY3RpdmVfc2V0KCZvYmotPmxhc3Rfd3JpdGUsIE5VTEwp OwoKQWhhIQoKPiAgIAlpbnRlbF9mYl9vYmpfZmx1c2gob2JqLCB0cnVlLCBPUklHSU5fQ1MpOwo+ ICAgfQo+Cj4gICBzdGF0aWMgdm9pZAo+ICAgaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fcmVhZChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgcmluZykKPiAgIHsKPiArCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPgo+ IC0JR0VNX0JVR19PTighb2JqLT5sYXN0X3JlYWRbcmluZ10ucmVxdWVzdCk7Cj4gKwlHRU1fQlVH X09OKCFfX2k5MTVfZ2VtX2FjdGl2ZV9pc19idXN5KCZvYmotPmxhc3RfcmVhZFtyaW5nXSkpOwo+ ICAgCUdFTV9CVUdfT04oIShvYmotPmFjdGl2ZSAmICgxIDw8IHJpbmcpKSk7Cj4KPiAgIAlsaXN0 X2RlbF9pbml0KCZvYmotPmVuZ2luZV9saXN0W3JpbmddKTsKPiAtCWk5MTVfZ2VtX3JlcXVlc3Rf YXNzaWduKCZvYmotPmxhc3RfcmVhZFtyaW5nXS5yZXF1ZXN0LCBOVUxMKTsKPiArCWk5MTVfZ2Vt X2FjdGl2ZV9zZXQoJm9iai0+bGFzdF9yZWFkW3JpbmddLCBOVUxMKTsKPgo+IC0JaWYgKG9iai0+ bGFzdF93cml0ZS5yZXF1ZXN0ICYmIG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0LT5lbmdpbmUtPmlk ID09IHJpbmcpCj4gKwllbmdpbmUgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0X2VuZ2luZSgmb2JqLT5s YXN0X3dyaXRlKTsKPiArCWlmIChlbmdpbmUgJiYgZW5naW5lLT5pZCA9PSByaW5nKQo+ICAgCQlp OTE1X2dlbV9vYmplY3RfcmV0aXJlX193cml0ZShvYmopOwo+Cj4gICAJb2JqLT5hY3RpdmUgJj0g figxIDw8IHJpbmcpOwo+IEBAIC0yNDIwLDcgKzI0MjUsNyBAQCBpOTE1X2dlbV9vYmplY3RfcmV0 aXJlX19yZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIGludCByaW5nKQo+ICAg CQkJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtYS0+dm0tPmluYWN0aXZlX2xpc3Qp Owo+ICAgCX0KPgo+IC0JaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9iai0+bGFzdF9mZW5jZS5y ZXF1ZXN0LCBOVUxMKTsKPiArCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJm9iai0+bGFzdF9mZW5jZSwg TlVMTCk7Cj4gICAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwo+ICAgfQo+Cj4gQEAgLTI2MTgs NyArMjYyMyw3IEBAIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QsCj4gICAJCQkJICAgICAgIGVuZ2luZV9saXN0W2VuZ2luZS0+aWRdKTsKPgo+IC0JCWlmICgh bGlzdF9lbXB0eSgmb2JqLT5sYXN0X3JlYWRbZW5naW5lLT5pZF0ucmVxdWVzdC0+bGlzdCkpCj4g KwkJaWYgKCFsaXN0X2VtcHR5KCZpOTE1X2dlbV9hY3RpdmVfcGVlaygmb2JqLT5sYXN0X3JlYWRb ZW5naW5lLT5pZF0pLT5saXN0KSkKPiAgIAkJCWJyZWFrOwo+Cj4gICAJCWk5MTVfZ2VtX29iamVj dF9yZXRpcmVfX3JlYWQob2JqLCBlbmdpbmUtPmlkKTsKPiBAQCAtMjc0Niw3ICsyNzUxLDcgQEAg aTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQo+ICAgCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKyspIHsKPiAgIAkJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4KPiAtCQlyZXEgPSBvYmotPmxhc3Rf cmVhZFtpXS5yZXF1ZXN0Owo+ICsJCXJlcSA9IGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZvYmotPmxh c3RfcmVhZFtpXSk7Cj4gICAJCWlmIChyZXEgPT0gTlVMTCkKPiAgIAkJCWNvbnRpbnVlOwo+Cj4g QEAgLTI3ODYsNyArMjc5MSw3IEBAIGk5MTVfZ2VtX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fd2FpdCAqYXJncyA9IGRhdGE7Cj4gICAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iajsKPiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxW0k5 MTVfTlVNX0VOR0lORVNdOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 c1tJOTE1X05VTV9FTkdJTkVTXTsKPiAgIAlpbnQgaSwgbiA9IDA7Cj4gICAJaW50IHJldDsKPgo+ IEBAIC0yODIyLDIwICsyODI3LDIxIEBAIGk5MTVfZ2VtX3dhaXRfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICAgCWk5MTVf Z2VtX29iamVjdF9wdXQob2JqKTsKPgo+ICAgCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJ TkVTOyBpKyspIHsKPiAtCQlpZiAoIW9iai0+bGFzdF9yZWFkW2ldLnJlcXVlc3QpCj4gLQkJCWNv bnRpbnVlOwo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+Cj4gLQkJcmVx W24rK10gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldChvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0KTsK PiArCQlyZXEgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0KCZvYmotPmxhc3RfcmVhZFtpXSk7CgpPaCBy aWdodCB0aGVyZSBpcyBhIGdldCByZXF1ZXN0IG9uZSwgdGhpcyB0aW1lIHByZXNlcnZpbmcgdGhl IHJlZmVyZW5jZSAKdGFraW5nIGJlaGF2aW91ci4KCj4gKwkJaWYgKHJlcSkKPiArCQkJcmVxdWVz dHNbbisrXSA9IHJlcTsKPiAgIAl9Cj4KPiAgIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKPgo+ICAgCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKPiAgIAkJaWYgKHJldCA9PSAw KQo+IC0JCQlyZXQgPSBfX2k5MTVfd2FpdF9yZXF1ZXN0KHJlcVtpXSwgdHJ1ZSwKPiArCQkJcmV0 ID0gX19pOTE1X3dhaXRfcmVxdWVzdChyZXF1ZXN0c1tpXSwgdHJ1ZSwKPiAgIAkJCQkJCSAgYXJn cy0+dGltZW91dF9ucyA+IDAgPyAmYXJncy0+dGltZW91dF9ucyA6IE5VTEwsCj4gICAJCQkJCQkg IHRvX3Jwc19jbGllbnQoZmlsZSkpOwo+IC0JCWk5MTVfZ2VtX3JlcXVlc3RfcHV0KHJlcVtpXSk7 Cj4gKwkJaTkxNV9nZW1fcmVxdWVzdF9wdXQocmVxdWVzdHNbaV0pOwo+ICAgCX0KPiAgIAlyZXR1 cm4gcmV0Owo+Cj4gQEAgLTI5MDgsNyArMjkxNCw3IEBAIGk5MTVfZ2VtX29iamVjdF9zeW5jKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCSAgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICp0bykKPiAgIHsKPiAgIAljb25zdCBib29sIHJlYWRvbmx5ID0gb2JqLT5i YXNlLnBlbmRpbmdfd3JpdGVfZG9tYWluID09IDA7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcVtJOTE1X05VTV9FTkdJTkVTXTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdHNbSTkxNV9OVU1fRU5HSU5FU107Cj4gICAJaW50IHJldCwgaSwgbjsKPgo+ ICAgCWlmICghb2JqLT5hY3RpdmUpCj4gQEAgLTI5MTYsMTUgKzI5MjIsMjIgQEAgaTkxNV9nZW1f b2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPgo+ICAgCW4gPSAw Owo+ICAgCWlmIChyZWFkb25seSkgewo+IC0JCWlmIChvYmotPmxhc3Rfd3JpdGUucmVxdWVzdCkK PiAtCQkJcmVxW24rK10gPSBvYmotPmxhc3Rfd3JpdGUucmVxdWVzdDsKPiArCQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKPiArCj4gKwkJcmVxID0gaTkxNV9nZW1fYWN0aXZlX3Bl ZWsoJm9iai0+bGFzdF93cml0ZSk7Cj4gKwkJaWYgKHJlcSkKPiArCQkJcmVxdWVzdHNbbisrXSA9 IHJlcTsKPiAgIAl9IGVsc2Ugewo+IC0JCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9FTkdJTkVT OyBpKyspCj4gLQkJCWlmIChvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0KQo+IC0JCQkJcmVxW24r K10gPSBvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0Owo+ICsJCWZvciAoaSA9IDA7IGkgPCBJOTE1 X05VTV9FTkdJTkVTOyBpKyspIHsKPiArCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXE7Cj4gKwo+ICsJCQlyZXEgPSBpOTE1X2dlbV9hY3RpdmVfcGVlaygmb2JqLT5sYXN0X3JlYWRb aV0pOwo+ICsJCQlpZiAocmVxKQo+ICsJCQkJcmVxdWVzdHNbbisrXSA9IHJlcTsKPiArCQl9Cj4g ICAJfQo+ICAgCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKPiAtCQlyZXQgPSBfX2k5MTVfZ2Vt X29iamVjdF9zeW5jKG9iaiwgdG8sIHJlcVtpXSk7Cj4gKwkJcmV0ID0gX19pOTE1X2dlbV9vYmpl Y3Rfc3luYyhvYmosIHRvLCByZXF1ZXN0c1tpXSk7Cj4gICAJCWlmIChyZXQpCj4gICAJCQlyZXR1 cm4gcmV0Owo+ICAgCX0KPiBAQCAtNDAxNywxNyArNDAzMCwxNyBAQCBpOTE1X2dlbV9idXN5X2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4KPiAgIAlhcmdzLT5idXN5 ID0gMDsKPiAgIAlpZiAob2JqLT5hY3RpdmUpIHsKPiArCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcTsKPiAgIAkJaW50IGk7Cj4KPiAgIAkJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVN X0VOR0lORVM7IGkrKykgewo+IC0JCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsK PiAtCj4gLQkJCXJlcSA9IG9iai0+bGFzdF9yZWFkW2ldLnJlcXVlc3Q7Cj4gKwkJCXJlcSA9IGk5 MTVfZ2VtX2FjdGl2ZV9wZWVrKCZvYmotPmxhc3RfcmVhZFtpXSk7Cj4gICAJCQlpZiAocmVxKQo+ ICAgCQkJCWFyZ3MtPmJ1c3kgfD0gMSA8PCAoMTYgKyByZXEtPmVuZ2luZS0+ZXhlY19pZCk7Cj4g ICAJCX0KPiAtCQlpZiAob2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QpCj4gLQkJCWFyZ3MtPmJ1c3kg fD0gb2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QtPmVuZ2luZS0+ZXhlY19pZDsKPiArCQlyZXEgPSBp OTE1X2dlbV9hY3RpdmVfcGVlaygmb2JqLT5sYXN0X3dyaXRlKTsKPiArCQlpZiAocmVxKQo+ICsJ CQlhcmdzLT5idXN5IHw9IHJlcS0+ZW5naW5lLT5leGVjX2lkOwo+ICAgCX0KPgo+ICAgdW5yZWY6 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMKPiBpbmRleCBhYTc2N2NhMjg1 MzIuLjM4MDAwYzU5ZDQ1NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9kbWFidWYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1 Zi5jCj4gQEAgLTIzNSw3ICsyMzUsNyBAQCBzdGF0aWMgdm9pZCBleHBvcnRfZmVuY2VzKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4KPiAgIAlhY3RpdmUgPSBvYmotPmFjdGl2ZTsK PiAgIAlmb3JfZWFjaF9hY3RpdmUoYWN0aXZlLCBpZHgpIHsKPiAtCQlyZXEgPSBvYmotPmxhc3Rf cmVhZFtpZHhdLnJlcXVlc3Q7Cj4gKwkJcmVxID0gaTkxNV9nZW1fYWN0aXZlX3BlZWsoJm9iai0+ bGFzdF9yZWFkW2lkeF0pOwo+ICAgCQlpZiAoIXJlcSkKPiAgIAkJCWNvbnRpbnVlOwo+Cj4gQEAg LTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgdm9pZCBleHBvcnRfZmVuY2VzKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCQlyZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9m ZW5jZShyZXN2LCAmcmVxLT5mZW5jZSk7Cj4gICAJfQo+Cj4gLQlyZXEgPSBvYmotPmxhc3Rfd3Jp dGUucmVxdWVzdDsKPiArCXJlcSA9IGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZvYmotPmxhc3Rfd3Jp dGUpOwo+ICAgCWlmIChyZXEpCj4gICAJCXJlc2VydmF0aW9uX29iamVjdF9hZGRfZXhjbF9mZW5j ZShyZXN2LCAmcmVxLT5mZW5jZSk7Cj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZmVuY2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNl LmMKPiBpbmRleCA5ODM4MDQ2ODAxYmQuLjlmZGJkNjYxMjhhNiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZmVuY2UuYwo+IEBAIC0yNjEsMTQgKzI2MSwxMyBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZlbmNlX2xvc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKPiAgIHN0YXRpYyBpbnQKPiAgIGk5MTVfZ2VtX29iamVjdF93YWl0X2ZlbmNl KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICB7Cj4gLQlpZiAob2JqLT5sYXN0 X2ZlbmNlLnJlcXVlc3QpIHsKPiAtCQlpbnQgcmV0ID0gaTkxNV93YWl0X3JlcXVlc3Qob2JqLT5s YXN0X2ZlbmNlLnJlcXVlc3QpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQ7Cj4gKwlp bnQgcmV0Owo+Cj4gLQkJaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9iai0+bGFzdF9mZW5jZS5y ZXF1ZXN0LCBOVUxMKTsKPiAtCX0KPiArCXJldCA9IGk5MTVfZ2VtX2FjdGl2ZV93YWl0KCZvYmot Pmxhc3RfZmVuY2UpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+Cj4gKwlpOTE1X2dl bV9hY3RpdmVfc2V0KCZvYmotPmxhc3RfZmVuY2UsIE5VTEwpOwo+ICAgCXJldHVybiAwOwo+ICAg fQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3Qu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuaAo+IGluZGV4IGZmOGM1 NGZhOTU1Zi4uNDZkOWIwMGEyOGQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlcXVlc3QuaAo+IEBAIC0yNzUsMTQgKzI3NSwxMzggQEAgc3RhdGljIGlubGluZSBib29sIGk5 MTVfc3Bpbl9yZXF1ZXN0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVz dCwKPiAgICAqIHJlc291cmNlIGluY2x1ZGluZyBpdHNlbGYuCj4gICAgKi8KPiAgIHN0cnVjdCBp OTE1X2dlbV9hY3RpdmUgewo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0 Owo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpfX3JlcXVlc3Q7Cj4gICB9Owo+Cj4g Ky8qKgo+ICsgKiBpOTE1X2dlbV9hY3RpdmVfc2V0IC0gdXBkYXRlcyB0aGUgdHJhY2tlciB0byB3 YXRjaCB0aGUgY3VycmVudCByZXF1ZXN0Cj4gKyAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNr ZXIKPiArICogQHJlcXVlc3QgLSB0aGUgcmVxdWVzdCB0byB3YXRjaAo+ICsgKgo+ICsgKiBpOTE1 X2dlbV9hY3RpdmVfc2V0KCkgd2F0Y2hlcyB0aGUgZ2l2ZW4gQHJlcXVlc3QgZm9yIGNvbXBsZXRp b24uIFdoaWxzdAo+ICsgKiB0aGF0IEByZXF1ZXN0IGlzIGJ1c3ksIHRoZSBAYWN0aXZlIHJlcG9y dHMgYnVzeS4gV2hlbiB0aGF0IEByZXF1ZXN0IGlzCj4gKyAqIHJldGlyZWQsIHRoZSBAYWN0aXZl IHRyYWNrZXIgaXMgdXBkYXRlZCB0byByZXBvcnQgaWRsZS4KPiArICovCj4gICBzdGF0aWMgaW5s aW5lIHZvaWQKPiAgIGk5MTVfZ2VtX2FjdGl2ZV9zZXQoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAq YWN0aXZlLAo+ICAgCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ ICAgewo+IC0JaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJmFjdGl2ZS0+cmVxdWVzdCwgcmVxdWVz dCk7Cj4gKwlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmYWN0aXZlLT5fX3JlcXVlc3QsIHJlcXVl c3QpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaTkxNV9nZW1fYWN0aXZlX3BlZWsgLSByZXBvcnQg dGhlIHJlcXVlc3QgYmVpbmcgbW9uaXRvcmVkCj4gKyAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRy YWNrZXIKPiArICoKPiArICogaTkxNV9nZW1fYWN0aXZlX3BlZWsoKSByZXR1cm5zIHRoZSBjdXJy ZW50IHJlcXVlc3QgYmVpbmcgdHJhY2tlZCwgb3IgTlVMTC4KPiArICogSXQgZG9lcyBub3Qgb2J0 YWluIGEgcmVmZXJlbmNlIG9uIHRoZSByZXF1ZXN0IGZvciB0aGUgY2FsbGVyLCBzbyB0aGUKPiAr ICogY2FsbGVyIG11c3QgaG9sZCBzdHJ1Y3RfbXV0ZXguCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5l IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4gK2k5MTVfZ2VtX2FjdGl2ZV9wZWVrKGNv bnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSkKPiArewo+ICsJcmV0dXJuIGFjdGl2 ZS0+X19yZXF1ZXN0Owo+ICt9Cj4gKwo+ICsvKioKPiArICogaTkxNV9nZW1fYWN0aXZlX2dldCAt IHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJlcXVlc3QKPiArICogQGFjdGl2ZSAt IHRoZSBhY3RpdmUgdHJhY2tlcgo+ICsgKgo+ICsgKiBpOTE1X2dlbV9hY3RpdmVfZ2V0KCkgcmV0 dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgYWN0aXZlIHJlcXVlc3QsIG9yIE5VTEwKPiArICogaWYg dGhlIGFjdGl2ZSB0cmFja2VyIGlzIGlkbGUuIFRoZSBjYWxsZXIgbXVzdCBob2xkIHN0cnVjdF9t dXRleC4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICoKPiAraTkxNV9nZW1fYWN0aXZlX2dldChjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICph Y3RpdmUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKPiAr Cj4gKwlyZXF1ZXN0ID0gaTkxNV9nZW1fYWN0aXZlX3BlZWsoYWN0aXZlKTsKPiArCWlmICghcmVx dWVzdCB8fCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKClRoZSBjaGVjayBm b3IgcmVxdWVzdF9jb21wbGV0ZWQgZmVlbHMgbGlrZSBhIGhhY2sgLSB3aHkgaXQgaXMgbmVlZGVk PwoKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyZXR1cm4gaTkxNV9nZW1fcmVxdWVzdF9nZXQo cmVxdWVzdCk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBfX2k5MTVfZ2VtX2FjdGl2ZV9pc19idXN5 IC0gcmVwb3J0IHdoZXRoZXIgdGhlIGFjdGl2ZSB0cmFja2VyIGlzIGFzc2lnbmVkCj4gKyAqIEBh Y3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIKPiArICoKPiArICogX19pOTE1X2dlbV9hY3RpdmVf aXNfYnVzeSgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgYWN0aXZlIHRyYWNrZXIgaXMgY3VycmVudGx5 Cj4gKyAqIGFzc2lnbmVkIHRvIGEgcmVxdWVzdC4gRHVlIHRvIHRoZSBsYXp5IHJldGlyaW5nLCB0 aGF0IHJlcXVlc3QgbWF5IGJlIGlkbGUKPiArICogYW5kIHRoaXMgbWF5IHJlcG9ydCBzdGFsZSBp bmZvcm1hdGlvbi4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgYm9vbAo+ICtfX2k5MTVfZ2VtX2Fj dGl2ZV9pc19idXN5KGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSkKPiArewo+ ICsJcmV0dXJuIGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKGFjdGl2ZSk7Cj4gK30KPiArCj4gKy8qKgo+ ICsgKiBpOTE1X2dlbV9hY3RpdmVfaXNfaWRsZSAtIHJlcG9ydCB3aGV0aGVyIHRoZSBhY3RpdmUg dHJhY2tlciBpcyBpZGxlCj4gKyAqIEBhY3RpdmUgLSB0aGUgYWN0aXZlIHRyYWNrZXIKPiArICoK PiArICogaTkxNV9nZW1fYWN0aXZlX2lzX2lkbGUoKSByZXR1cm5zIHRydWUgaWYgdGhlIGFjdGl2 ZSB0cmFja2VyIGlzIGN1cnJlbnRseQo+ICsgKiB1bmFzc2lnbmVkIG9yIGlmIHRoZSByZXF1ZXN0 IGlzIGNvbXBsZXRlIChidXQgbm90IHlldCByZXRpcmVkKS4gUmVxdWlyZXMKPiArICogdGhlIGNh bGxlciB0byBob2xkIHN0cnVjdF9tdXRleCAoYnV0IHRoYXQgY2FuIGJlIHJlbGF4ZWQgaWYgZGVz aXJlZCkuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIGJvb2wKPiAraTkxNV9nZW1fYWN0aXZlX2lz X2lkbGUoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gKwo+ICsJcmVxdWVzdCA9IGk5MTVf Z2VtX2FjdGl2ZV9wZWVrKGFjdGl2ZSk7Cj4gKwlpZiAoIXJlcXVlc3QgfHwgaTkxNV9nZW1fcmVx dWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJcmV0dXJu IGZhbHNlOwo+ICt9Cj4gKwo+ICsvKioKPiArICogaTkxNV9nZW1fYWN0aXZlX3dhaXQgLSB3YWl0 cyB1bnRpbCB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZWQKPiArICogQGFjdGl2ZSAtIHRoZSBhY3Rp dmUgcmVxdWVzdCBvbiB3aGljaCB0byB3YWl0Cj4gKyAqCj4gKyAqIGk5MTVfZ2VtX2FjdGl2ZV93 YWl0KCkgd2FpdHMgdW50aWwgdGhlIHJlcXVlc3QgaXMgY29tcGxldGVkIGJlZm9yZQo+ICsgKiBy ZXR1cm5pbmcuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sKPiAraTkx NV9nZW1fYWN0aXZlX3dhaXQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gKwo+ICsJcmVx dWVzdCA9IGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKGFjdGl2ZSk7Cj4gKwlpZiAoIXJlcXVlc3QpCj4g KwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0dXJuIGk5MTVfd2FpdF9yZXF1ZXN0KHJlcXVlc3QpOwo+ ICt9Cj4gKwo+ICsvKioKPiArICogaTkxNV9nZW1fYWN0aXZlX3JldGlyZSAtIHdhaXRzIHVudGls IHRoZSByZXF1ZXN0IGlzIHJldGlyZWQKPiArICogQGFjdGl2ZSAtIHRoZSBhY3RpdmUgcmVxdWVz dCBvbiB3aGljaCB0byB3YWl0Cj4gKyAqCj4gKyAqIFVubGlrZSBpOTE1X2dlbV9hY3RpdmVfZWFp dCgpLCB0aGlzIGk5MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoKSB3aWxsCgpzL2VhaXQvd2FpdC8KCj4g KyAqIG1ha2Ugc3VyZSB0aGUgcmVxdWVzdCBpcyByZXRpcmVkIGJlZm9yZSByZXR1cm5pbmcuCj4g KyAqLwo+ICtzdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sKPiAraTkxNV9nZW1fYWN0aXZl X3JldGlyZShjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUpCj4gK3sKPiArCXJl dHVybiBpOTE1X2dlbV9hY3RpdmVfd2FpdChhY3RpdmUpOwo+ICt9CgpCdXQgaG93IGRvZXMgaXQg ZW5zdXJlIGFueXRoaW5nIGRpZmZlcmVudCB0aGFuIGk5MTVfZ2VtX2FjdGl2ZV93YWl0IHdoZW4g Cml0IGNhbGxzIHRoZSB2ZXJ5IGZ1bmN0aW9uPyBNYXliZSBpbiBmdXR1cmUgcGF0Y2hlcyB0aGVy ZSB3aWxsIGJlIGEgCmRpZmZlcmVuY2U/Cgo+ICsKPiArLyogQ29udmVuaWVuY2UgZnVuY3Rpb25z IGZvciBwZWVraW5nIGF0IHN0YXRlIGluc2lkZSBhY3RpdmUncyByZXF1ZXN0IHdoaWxzdAo+ICsg KiBndWFyZGVkIGJ5IHRoZSBzdHJ1Y3RfbXV0ZXguCj4gKyAqLwo+ICsKPiArc3RhdGljIGlubGlu ZSB1aW50MzJfdAo+ICtpOTE1X2dlbV9hY3RpdmVfZ2V0X3NlcW5vKGNvbnN0IHN0cnVjdCBpOTE1 X2dlbV9hY3RpdmUgKmFjdGl2ZSkKPiArewo+ICsJcmV0dXJuIGk5MTVfZ2VtX3JlcXVlc3RfZ2V0 X3NlcW5vKGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKGFjdGl2ZSkpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg aW5saW5lIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgo+ICtpOTE1X2dlbV9hY3RpdmVfZ2V0X2Vu Z2luZShjb25zdCBzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUpCj4gK3sKPiArCXJldHVy biBpOTE1X2dlbV9yZXF1ZXN0X2dldF9lbmdpbmUoaTkxNV9nZW1fYWN0aXZlX3BlZWsoYWN0aXZl KSk7Cj4gICB9Cj4KPiAgICNkZWZpbmUgZm9yX2VhY2hfYWN0aXZlKG1hc2ssIGlkeCkgXAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jCj4gaW5kZXggMDBkNzk2ZGE2NWZiLi44 Y2VmMmQ2YjI5MWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f dGlsaW5nLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aWxpbmcuYwo+ IEBAIC0yNDIsNyArMjQyLDcgQEAgaTkxNV9nZW1fc2V0X3RpbGluZyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQkJfQo+Cj4gICAJCQlvYmotPmZlbmNlX2RpcnR5ID0K PiAtCQkJCW9iai0+bGFzdF9mZW5jZS5yZXF1ZXN0IHx8Cj4gKwkJCQkhaTkxNV9nZW1fYWN0aXZl X2lzX2lkbGUoJm9iai0+bGFzdF9mZW5jZSkgfHwKPiAgIAkJCQlvYmotPmZlbmNlX3JlZyAhPSBJ OTE1X0ZFTkNFX1JFR19OT05FOwo+Cj4gICAJCQlvYmotPnRpbGluZ19tb2RlID0gYXJncy0+dGls aW5nX21vZGU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Vz ZXJwdHIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwo+IGluZGV4 IDMyZjUwYTcwZWE0Mi4uMDBhYjVlOWQyZWI3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3VzZXJwdHIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3VzZXJwdHIuYwo+IEBAIC03NCwxMSArNzQsOSBAQCBzdGF0aWMgdm9pZCB3YWl0X3Jl bmRlcmluZyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgCWZvciAoaSA9IDA7 IGkgPCBJOTE1X05VTV9FTkdJTkVTOyBpKyspIHsKPiAgIAkJc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXE7Cj4KPiAtCQlyZXEgPSBvYmotPmxhc3RfcmVhZFtpXS5yZXF1ZXN0Owo+IC0J CWlmIChyZXEgPT0gTlVMTCkKPiAtCQkJY29udGludWU7Cj4gLQo+IC0JCXJlcXVlc3RzW24rK10g PSBpOTE1X2dlbV9yZXF1ZXN0X2dldChyZXEpOwo+ICsJCXJlcSA9IGk5MTVfZ2VtX2FjdGl2ZV9n ZXQoJm9iai0+bGFzdF9yZWFkW2ldKTsKPiArCQlpZiAocmVxKQo+ICsJCQlyZXF1ZXN0c1tuKytd ID0gcmVxOwo+ICAgCX0KPgo+ICAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IGluZGV4IDVlMTJiOGVlNDlkMi4u OWUxOTQ5ZjJmNGRkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1 X2Vycm9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4g QEAgLTc0NCwxMyArNzQ0LDE0IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmVfYm8oc3RydWN0IGRybV9p OTE1X2Vycm9yX2J1ZmZlciAqZXJyLAo+ICAgCQkgICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEp Cj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOwo+ ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAgCWludCBpOwo+Cj4gICAJZXJy LT5zaXplID0gb2JqLT5iYXNlLnNpemU7Cj4gICAJZXJyLT5uYW1lID0gb2JqLT5iYXNlLm5hbWU7 Cj4gICAJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVNX0VOR0lORVM7IGkrKykKPiAtCQllcnItPnJz ZXFub1tpXSA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9yZWFkW2ldLnJl cXVlc3QpOwo+IC0JZXJyLT53c2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhvYmot Pmxhc3Rfd3JpdGUucmVxdWVzdCk7Cj4gKwkJZXJyLT5yc2Vxbm9baV0gPSBpOTE1X2dlbV9hY3Rp dmVfZ2V0X3NlcW5vKCZvYmotPmxhc3RfcmVhZFtpXSk7Cj4gKwllcnItPndzZXFubyA9IGk5MTVf Z2VtX2FjdGl2ZV9nZXRfc2Vxbm8oJm9iai0+bGFzdF93cml0ZSk7Cj4gICAJZXJyLT5ndHRfb2Zm c2V0ID0gdm1hLT5ub2RlLnN0YXJ0Owo+ICAgCWVyci0+cmVhZF9kb21haW5zID0gb2JqLT5iYXNl LnJlYWRfZG9tYWluczsKPiAgIAllcnItPndyaXRlX2RvbWFpbiA9IG9iai0+YmFzZS53cml0ZV9k b21haW47Cj4gQEAgLTc2Miw4ICs3NjMsMTAgQEAgc3RhdGljIHZvaWQgY2FwdHVyZV9ibyhzdHJ1 Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICplcnIsCj4gICAJZXJyLT5kaXJ0eSA9IG9iai0+ZGly dHk7Cj4gICAJZXJyLT5wdXJnZWFibGUgPSBvYmotPm1hZHYgIT0gSTkxNV9NQURWX1dJTExORUVE Owo+ICAgCWVyci0+dXNlcnB0ciA9IG9iai0+dXNlcnB0ci5tbSAhPSBOVUxMOwo+IC0JZXJyLT5y aW5nID0gb2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QgPyBvYmotPmxhc3Rfd3JpdGUucmVxdWVzdC0+ ZW5naW5lLT5pZCA6IC0xOwo+ICAgCWVyci0+Y2FjaGVfbGV2ZWwgPSBvYmotPmNhY2hlX2xldmVs Owo+ICsKPiArCWVuZ2luZSA9IGk5MTVfZ2VtX2FjdGl2ZV9nZXRfZW5naW5lKCZvYmotPmxhc3Rf d3JpdGUpOwo+ICsJZXJyLT5yaW5nID0gZW5naW5lID8gZW5naW5lLT5pZCA6IC0xOwo+ICAgfQo+ Cj4gICBzdGF0aWMgdTMyIGNhcHR1cmVfYWN0aXZlX2JvKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9i dWZmZXIgKmVyciwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggMjdh YzZkYjRlMjZhLi5hMGFiZTU1ODhkMTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gQEAgLTExNDY1LDcgKzExNDY1LDcgQEAgc3RhdGljIGJvb2wgdXNlX21taW9fZmxp cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJaWYgKHJlc3YgJiYgIXJlc2Vy dmF0aW9uX29iamVjdF90ZXN0X3NpZ25hbGVkX3JjdShyZXN2LCBmYWxzZSkpCj4gICAJCXJldHVy biB0cnVlOwo+Cj4gLQlyZXR1cm4gZW5naW5lICE9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X2VuZ2lu ZShvYmotPmxhc3Rfd3JpdGUucmVxdWVzdCk7Cj4gKwlyZXR1cm4gZW5naW5lICE9IGk5MTVfZ2Vt X2FjdGl2ZV9nZXRfZW5naW5lKCZvYmotPmxhc3Rfd3JpdGUpOwo+ICAgfQo+Cj4gICBzdGF0aWMg dm9pZCBza2xfZG9fbW1pb19mbGlwKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+IEBA IC0xMTc2OCw3ICsxMTc2OCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+ICAgCX0gZWxzZSBpZiAoSVNfSVZZQlJJREdFKGRldikgfHwg SVNfSEFTV0VMTChkZXYpKSB7Cj4gICAJCWVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5naW5lW0JDU107 Cj4gICAJfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA3KSB7Cj4gLQkJZW5naW5l ID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5naW5lKG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0KTsK PiArCQllbmdpbmUgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0X2VuZ2luZSgmb2JqLT5sYXN0X3dyaXRl KTsKPiAgIAkJaWYgKGVuZ2luZSA9PSBOVUxMIHx8IGVuZ2luZS0+aWQgIT0gUkNTKQo+ICAgCQkJ ZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbQkNTXTsKPiAgIAl9IGVsc2Ugewo+IEBAIC0xMTc4 OSw5ICsxMTc4OSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRy bV9jcnRjICpjcnRjLAo+ICAgCWlmIChtbWlvX2ZsaXApIHsKPiAgIAkJSU5JVF9XT1JLKCZ3b3Jr LT5tbWlvX3dvcmssIGludGVsX21taW9fZmxpcF93b3JrX2Z1bmMpOwo+Cj4gLQkJaTkxNV9nZW1f cmVxdWVzdF9hc3NpZ24oJndvcmstPmZsaXBfcXVldWVkX3JlcSwKPiAtCQkJCQlvYmotPmxhc3Rf d3JpdGUucmVxdWVzdCk7Cj4gLQo+ICsJCXdvcmstPmZsaXBfcXVldWVkX3JlcSA9IGk5MTVfZ2Vt X2FjdGl2ZV9nZXQoJm9iai0+bGFzdF93cml0ZSk7Cj4gICAJCXNjaGVkdWxlX3dvcmsoJndvcmst Pm1taW9fd29yayk7Cj4gICAJfSBlbHNlIHsKPiAgIAkJcmVxdWVzdCA9IGk5MTVfZ2VtX3JlcXVl c3RfYWxsb2MoZW5naW5lLCBlbmdpbmUtPmxhc3RfY29udGV4dCk7Cj4gQEAgLTE0MDkyLDExICsx NDA5MCw4IEBAIGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4gICAJfQo+Cj4gICAJaWYgKHJldCA9PSAwKSB7Cj4gLQkJc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSA9Cj4gLQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKG5ld19zdGF0ZSk7 Cj4gLQo+IC0JCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZwbGFuZV9zdGF0ZS0+d2FpdF9yZXEs Cj4gLQkJCQkJb2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QpOwo+ICsJCXRvX2ludGVsX3BsYW5lX3N0 YXRlKG5ld19zdGF0ZSktPndhaXRfcmVxID0KPiArCQkJaTkxNV9nZW1fYWN0aXZlX2dldCgmb2Jq LT5sYXN0X3dyaXRlKTsKPiAgIAl9Cj4KPiAgIAlyZXR1cm4gcmV0Owo+CgpSZWdhcmRzLAoKVHZy dGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=