From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.3 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,HK_RANDOM_FROM,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72165C433DB for ; Fri, 29 Jan 2021 10:23:07 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E6A8D64E79 for ; Fri, 29 Jan 2021 10:23:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E6A8D64E79 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 224006EAC0; Fri, 29 Jan 2021 10:23:06 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id DCA6A6EAC0 for ; Fri, 29 Jan 2021 10:23:04 +0000 (UTC) IronPort-SDR: Qx0iDYxfbipS39c8OgEGG84bbnKvrbwDk2Q0CmsTP91/fWc47PTNPVE2HbLVBe+URGZtYAY8tt LOG4sr13MOkg== X-IronPort-AV: E=McAfee;i="6000,8403,9878"; a="180541646" X-IronPort-AV: E=Sophos;i="5.79,385,1602572400"; d="scan'208";a="180541646" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jan 2021 02:23:03 -0800 IronPort-SDR: v4WTpgu7Nwq9aEudHv7Ih6J/bPT5cU9zfnW4YFM9GivuHv0zd/GCYXZh1bHz7n8w6l9t8rdBeM FFqYeF35PiHg== X-IronPort-AV: E=Sophos;i="5.79,385,1602572400"; d="scan'208";a="389244288" Received: from spalapa-mobl1.ger.corp.intel.com (HELO [10.252.47.4]) ([10.252.47.4]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Jan 2021 02:23:01 -0800 To: Chris Wilson , intel-gfx@lists.freedesktop.org References: <20210125140136.10494-1-chris@chris-wilson.co.uk> <20210125140136.10494-20-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Organization: Intel Corporation UK Plc Message-ID: <4b8db232-bb79-321c-1c63-6456902653ca@linux.intel.com> Date: Fri, 29 Jan 2021 10:22:59 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 MIME-Version: 1.0 In-Reply-To: <20210125140136.10494-20-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 20/41] drm/i915: Replace priolist rbtree with a skiplist X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: thomas.hellstrom@intel.com Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Ck9uIDI1LzAxLzIwMjEgMTQ6MDEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBSZXBsYWNlIHRoZSBw cmlvbGlzdCByYnRyZWUgd2l0aCBhIHNraXBsaXN0LiBUaGUgY3J1Y2lhbCBkaWZmZXJlbmNlIGlz Cj4gdGhhdCB3YWxraW5nIGFuZCByZW1vdmluZyB0aGUgZmlyc3QgZWxlbWVudCBvZiBhIHNraXBs aXN0IGlzIE8oMSksIGJ1dAo+IE8obGdOKSBmb3IgYW4gcmJ0cmVlLCBhcyB3ZSBuZWVkIHRvIHJl YmFsYW5jZSBvbiByZW1vdmUuIFRoaXMgaXMgYQo+IGhpbmRyYW5jZSBmb3Igc3VibWlzc2lvbiBs YXRlbmN5IGFzIGl0IG9jY3VycyBiZXR3ZWVuIHBpY2tpbmcgYSByZXF1ZXN0Cj4gZm9yIHRoZSBw cmlvbGlzdCBhbmQgc3VibWl0dGluZyBpdCB0byBoYXJkd2FyZSwgYXMgd2VsbCBlZmZlY3RpdmVs eQo+IHRyaXBwbGluZyB0aGUgbnVtYmVyIG9mIE8obGdOKSBvcGVyYXRpb25zIHJlcXVpcmVkIHVu ZGVyIHRoZSBpcnFvZmYgbG9jay4KPiBUaGlzIGlzIGNyaXRpY2FsIHRvIHJlZHVjaW5nIHRoZSBs YXRlbmN5IGppdHRlciB3aXRoIG11bHRpcGxlIGNsaWVudHMuCj4gCj4gVGhlIGRvd25zaWRlcyB0 byBza2lwbGlzdHMgYXJlIHRoYXQgbG9va3VwL2luc2VydGlvbiBpcyBvbmx5Cj4gcHJvYmFibGlz dGljYWxseSBPKGxnTikgYW5kIHRoZXJlIGlzIGEgc2lnbmlmaWNhbnQgbWVtb3J5IHBlbmFsdHkg dG8KPiBhcyBlYWNoIHNraXAgbm9kZSBpcyBsYXJnZXIgdGhhbiB0aGUgcmJ0cmVlIGVxdWl2YWxl bnQuIEZ1cnRoZXJtb3JlLCB3ZQo+IGRvbid0IHVzZSBkeW5hbWljIGFycmF5cyBmb3IgdGhlIHNr aXBsaXN0LCBzbyB0aGUgYWxsb2NhdGlvbiBpcyBmaXhlZCwKPiBhbmQgaW1wb3NlcyBhbiB1cHBl ciBib3VuZCBvbiB0aGUgc2NhbGFiaWxpdHkgd3J0IHRvIHRoZSBudW1iZXIgb2YKPiBpbmZsaWdo dCByZXF1ZXN0cy4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KPiAtLS0KPiAgIC4uLi9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNf c3VibWlzc2lvbi5jICB8ICA2MyArKystLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRl bF9ndWNfc3VibWlzc2lvbi5jIHwgIDMwICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9wcmlvbGlzdF90eXBlcy5oICAgIHwgIDI4ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3NjaGVkdWxlci5jICAgICAgICAgfCAyNDQgKysrKysrKysrKysrKystLS0tCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oICAgICAgICAgfCAgMTEgKy0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyX3R5cGVzLmggICB8ICAgMiArLQo+ICAg Li4uL2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmggIHwgICAxICsKPiAg IC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2NoZWR1bGVyLmMgICB8ICA1MyArKyst Cj4gICA4IGZpbGVzIGNoYW5nZWQsIDMxNiBpbnNlcnRpb25zKCspLCAxMTYgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0 c19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNf c3VibWlzc2lvbi5jCj4gaW5kZXggMTEwM2M4YTAwYWYxLi4xMjkxNDRkZDg2YjAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24u Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJtaXNz aW9uLmMKPiBAQCAtMjQ0LDExICsyNDQsNiBAQCBzdGF0aWMgdm9pZCByaW5nX3NldF9wYXVzZWQo Y29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgc3RhdGUpCj4gICAJCXdt YigpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdG9fcHJpb2xp c3Qoc3RydWN0IHJiX25vZGUgKnJiKQo+IC17Cj4gLQlyZXR1cm4gcmJfZW50cnkocmIsIHN0cnVj dCBpOTE1X3ByaW9saXN0LCBub2RlKTsKPiAtfQo+IC0KPiAgIHN0YXRpYyBpbnQgcnFfcHJpbyhj b25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAgIAlyZXR1cm4gUkVBRF9PTkNF KHJxLT5zY2hlZC5hdHRyLnByaW9yaXR5KTsKPiBAQCAtMjcyLDE1ICsyNjcsMzEgQEAgc3RhdGlj IGludCBlZmZlY3RpdmVfcHJpbyhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIAly ZXR1cm4gcHJpbzsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW50IHF1ZXVlX3ByaW8oY29uc3Qgc3Ry dWN0IGk5MTVfc2NoZWRfZW5naW5lICpzZSkKPiArc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KmZpcnN0X3JlcXVlc3Qoc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzZSkKPiAgIHsKPiAtCXN0 cnVjdCByYl9ub2RlICpyYjsKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbDsKPiAgIAo+IC0J cmIgPSByYl9maXJzdF9jYWNoZWQoJnNlLT5xdWV1ZSk7Cj4gLQlpZiAoIXJiKQo+ICsJZm9yX2Vh Y2hfcHJpb2xpc3QocGwsICZzZS0+cXVldWUpIHsKPiArCQlpZiAobGlrZWx5KCFsaXN0X2VtcHR5 KCZwbC0+cmVxdWVzdHMpKSkKPiArCQkJcmV0dXJuIGxpc3RfZmlyc3RfZW50cnkoJnBsLT5yZXF1 ZXN0cywKPiArCQkJCQkJc3RydWN0IGk5MTVfcmVxdWVzdCwKPiArCQkJCQkJc2NoZWQubGluayk7 Cj4gKwo+ICsJCWk5MTVfcHJpb2xpc3RfYWR2YW5jZSgmc2UtPnF1ZXVlLCBwbCk7CgpXaHkgaXMg YSAicGVlayIgdHlwZSBjYWxsIHNpdGUgZG9pbmcgdHJlZSBtb2RpZmljYXRpb25zPyBDb3VsZG4n dCB0aGF0IApiZSBsaW1pdGVkIHRvIHBsYWNlcyB3aGljaCBhZGQvcmVtb3ZlPwoKPiArCX0KPiAr Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGludCBxdWV1ZV9wcmlvKHN0cnVj dCBpOTE1X3NjaGVkX2VuZ2luZSAqc2UpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx Owo+ICsKPiArCXJxID0gZmlyc3RfcmVxdWVzdChzZSk7Cj4gKwlpZiAoIXJxKQo+ICAgCQlyZXR1 cm4gSU5UX01JTjsKPiAgIAo+IC0JcmV0dXJuIHRvX3ByaW9saXN0KHJiKS0+cHJpb3JpdHk7Cj4g KwlyZXR1cm4gcnFfcHJpbyhycSk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgdmlydHVhbF9w cmlvKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICplbCkKPiBAQCAtMjkwLDcg KzMwMSw3IEBAIHN0YXRpYyBpbnQgdmlydHVhbF9wcmlvKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdp bmVfZXhlY2xpc3RzICplbCkKPiAgIAlyZXR1cm4gcmIgPyByYl9lbnRyeShyYiwgc3RydWN0IHZl X25vZGUsIHJiKS0+cHJpbyA6IElOVF9NSU47Cj4gICB9Cj4gICAKPiAtc3RhdGljIGJvb2wgbmVl ZF9wcmVlbXB0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArc3RhdGlj IGJvb2wgbmVlZF9wcmVlbXB0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJ CSBjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAgIAlpbnQgbGFzdF9wcmlv Owo+IEBAIC0xMTM2LDYgKzExNDcsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAq KiBjb25zdCBsYXN0X3BvcnQgPSBwb3J0ICsgZXhlY2xpc3RzLT5wb3J0X21hc2s7Cj4gICAJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqbGFzdCwgKiBjb25zdCAqYWN0aXZlOwo+ICAgCXN0cnVjdCB2aXJ0 dWFsX2VuZ2luZSAqdmU7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGw7Cj4gICAJc3RydWN0 IHJiX25vZGUgKnJiOwo+ICAgCWJvb2wgc3VibWl0ID0gZmFsc2U7Cj4gICAKPiBAQCAtMTM0Niwx MSArMTM1OCwxMCBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gICAJCQlicmVhazsKPiAgIAl9Cj4gICAKPiAtCXdoaWxlICgo cmIgPSByYl9maXJzdF9jYWNoZWQoJmVuZ2luZS0+YWN0aXZlLnF1ZXVlKSkpIHsKPiAtCQlzdHJ1 Y3QgaTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKPiArCWZvcl9lYWNoX3ByaW9s aXN0KHBsLCAmZW5naW5lLT5hY3RpdmUucXVldWUpIHsKPiAgIAkJc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsICpybjsKPiAgIAo+IC0JCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3VtZShy cSwgcm4sIHApIHsKPiArCQlwcmlvbGlzdF9mb3JfZWFjaF9yZXF1ZXN0X3NhZmUocnEsIHJuLCBw bCkgewo+ICAgCQkJYm9vbCBtZXJnZSA9IHRydWU7Cj4gICAKPiAgIAkJCS8qCj4gQEAgLTE0MjUs OCArMTQzNiw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJCX0KPiAgIAkJfQo+ICAgCj4gLQkJcmJfZXJhc2VfY2Fj aGVkKCZwLT5ub2RlLCAmZW5naW5lLT5hY3RpdmUucXVldWUpOwo+IC0JCWk5MTVfcHJpb2xpc3Rf ZnJlZShwKTsKPiArCQlpOTE1X3ByaW9saXN0X2FkdmFuY2UoJmVuZ2luZS0+YWN0aXZlLnF1ZXVl LCBwbCk7CgpUaGVyZSBtdXN0IGJlIHNvbWVvbmUgZG9pbmcgYSBsaXN0X2RlbCBvbiB0aGlzIHJl cXVlc3QgaW4gdGhpcyBibG9jayBzbyAKSSBzdXBwb3NlIGl0IGlzIGhpZGRlbiBzb21ld2hlcmUg aW4gdGhlIGNoYWluLCBtdXN0IGJlIApfX2k5MTVfcmVxdWVzdF9zdWJtaXQuIEkgZ3Vlc3MgaXQg d2FzIHRoZSBzYW1lIHdpdGggcmJ0cmVlIHNvIEkganVzdCAKd29uZGVyIGlmIHRoZXJlIGlzIGEg d2F5IHRvIGRvY3VtZW50IHRoaXMgYmV0dGVyLiBOb3RoaW5nIGNvbWVzIHRvIG1pbmQuCgo+ICAg CX0KPiAgIGRvbmU6Cj4gICAJKnBvcnQrKyA9IGk5MTVfcmVxdWVzdF9nZXQobGFzdCk7Cj4gQEAg LTI2MzEsNiArMjY0MSw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19yZXNldF9jYW5jZWwoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdp bmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwo+ICAg CXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCAqcm47Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAq cGw7Cj4gICAJc3RydWN0IHJiX25vZGUgKnJiOwo+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4g ICAKPiBAQCAtMjY2MSwxNiArMjY3MiwxMiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfcmVzZXRf Y2FuY2VsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlpbnRlbF9lbmdpbmVf c2lnbmFsX2JyZWFkY3J1bWJzKGVuZ2luZSk7Cj4gICAKPiAgIAkvKiBGbHVzaCB0aGUgcXVldWVk IHJlcXVlc3RzIHRvIHRoZSB0aW1lbGluZSBsaXN0IChmb3IgcmV0aXJpbmcpLiAqLwo+IC0Jd2hp bGUgKChyYiA9IHJiX2ZpcnN0X2NhY2hlZCgmZW5naW5lLT5hY3RpdmUucXVldWUpKSkgewo+IC0J CXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3QocmIpOwo+IC0KPiAtCQlwcmlv bGlzdF9mb3JfZWFjaF9yZXF1ZXN0X2NvbnN1bWUocnEsIHJuLCBwKSB7Cj4gKwlmb3JfZWFjaF9w cmlvbGlzdChwbCwgJmVuZ2luZS0+YWN0aXZlLnF1ZXVlKSB7Cj4gKwkJcHJpb2xpc3RfZm9yX2Vh Y2hfcmVxdWVzdF9zYWZlKHJxLCBybiwgcGwpIHsKPiAgIAkJCWk5MTVfcmVxdWVzdF9tYXJrX2Vp byhycSk7Cj4gICAJCQlfX2k5MTVfcmVxdWVzdF9zdWJtaXQocnEpOwo+ICAgCQl9Cj4gLQo+IC0J CXJiX2VyYXNlX2NhY2hlZCgmcC0+bm9kZSwgJmVuZ2luZS0+YWN0aXZlLnF1ZXVlKTsKPiAtCQlp OTE1X3ByaW9saXN0X2ZyZWUocCk7Cj4gKwkJaTkxNV9wcmlvbGlzdF9hZHZhbmNlKCZlbmdpbmUt PmFjdGl2ZS5xdWV1ZSwgcGwpOwo+ICAgCX0KPiAgIAlHRU1fQlVHX09OKCFpOTE1X3NjaGVkX2lz X2lkbGUoJmVuZ2luZS0+YWN0aXZlKSk7Cj4gICAKPiBAQCAtMjcwMyw3ICsyNzEwLDYgQEAgc3Rh dGljIHZvaWQgZXhlY2xpc3RzX3Jlc2V0X2NhbmNlbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCj4gICAJLyogUmVtYWluaW5nIF91bnJlYWR5XyByZXF1ZXN0cyB3aWxsIGJlIG5vcCdl ZCB3aGVuIHN1Ym1pdHRlZCAqLwo+ICAgCj4gICAJZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9o aW50ID0gSU5UX01JTjsKPiAtCWVuZ2luZS0+YWN0aXZlLnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7 Cj4gICAKPiAgIAlHRU1fQlVHX09OKF9fdGFza2xldF9pc19lbmFibGVkKCZlbmdpbmUtPmFjdGl2 ZS50YXNrbGV0KSk7Cj4gICAJZW5naW5lLT5hY3RpdmUudGFza2xldC5mdW5jID0gbm9wX3N1Ym1p c3Npb25fdGFza2xldDsKPiBAQCAtMzA4OSw2ICszMDk1LDggQEAgc3RhdGljIHZvaWQgdmlydHVh bF9jb250ZXh0X2V4aXQoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICAgCj4gICAJZm9yIChu ID0gMDsgbiA8IHZlLT5udW1fc2libGluZ3M7IG4rKykKPiAgIAkJaW50ZWxfZW5naW5lX3BtX3B1 dCh2ZS0+c2libGluZ3Nbbl0pOwo+ICsKPiArCWk5MTVfc2NoZWRfcGFya19lbmdpbmUoJnZlLT5i YXNlLmFjdGl2ZSk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfY29u dGV4dF9vcHMgdmlydHVhbF9jb250ZXh0X29wcyA9IHsKPiBAQCAtMzUwMSw2ICszNTA5LDcgQEAg dm9pZCBpbnRlbF9leGVjbGlzdHNfc2hvd19yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCj4gICB7Cj4gICAJY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMg KmV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwgKmxhc3Q7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGw7Cj4gICAJdW5zaWduZWQg bG9uZyBmbGFnczsKPiAgIAl1bnNpZ25lZCBpbnQgY291bnQ7Cj4gICAJc3RydWN0IHJiX25vZGUg KnJiOwo+IEBAIC0zNTMwLDEwICszNTM5LDggQEAgdm9pZCBpbnRlbF9leGVjbGlzdHNfc2hvd19y ZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAKPiAgIAlsYXN0ID0g TlVMTDsKPiAgIAljb3VudCA9IDA7Cj4gLQlmb3IgKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZlbmdp bmUtPmFjdGl2ZS5xdWV1ZSk7IHJiOyByYiA9IHJiX25leHQocmIpKSB7Cj4gLQkJc3RydWN0IGk5 MTVfcHJpb2xpc3QgKnAgPSByYl9lbnRyeShyYiwgdHlwZW9mKCpwKSwgbm9kZSk7Cj4gLQo+IC0J CXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3QocnEsIHApIHsKPiArCWZvcl9lYWNoX3ByaW9saXN0 KHBsLCAmZW5naW5lLT5hY3RpdmUucXVldWUpIHsKPiArCQlwcmlvbGlzdF9mb3JfZWFjaF9yZXF1 ZXN0KHJxLCBwbCkgewo+ICAgCQkJaWYgKGNvdW50KysgPCBtYXggLSAxKQo+ICAgCQkJCXNob3df cmVxdWVzdChtLCBycSwgIlx0XHQiLCAwKTsKPiAgIAkJCWVsc2UKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCAyZDczMzll ZjNiNGMuLjhkMGM2Y2QyNzdiMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+IEBAIC01OSwxMSArNTksNiBAQAo+ICAgCj4g ICAjZGVmaW5lIEdVQ19SRVFVRVNUX1NJWkUgNjQgLyogYnl0ZXMgKi8KPiAgIAo+IC1zdGF0aWMg aW5saW5lIHN0cnVjdCBpOTE1X3ByaW9saXN0ICp0b19wcmlvbGlzdChzdHJ1Y3QgcmJfbm9kZSAq cmIpCj4gLXsKPiAtCXJldHVybiByYl9lbnRyeShyYiwgc3RydWN0IGk5MTVfcHJpb2xpc3QsIG5v ZGUpOwo+IC19Cj4gLQo+ICAgc3RhdGljIHN0cnVjdCBndWNfc3RhZ2VfZGVzYyAqX19nZXRfc3Rh Z2VfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBpZCkKPiAgIHsKPiAgIAlzdHJ1Y3Qg Z3VjX3N0YWdlX2Rlc2MgKmJhc2UgPSBndWMtPnN0YWdlX2Rlc2NfcG9vbF92YWRkcjsKPiBAQCAt MTg1LDggKzE4MCw4IEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICAgCXN0cnVjdCBpOTE1X3JlcXVlc3QgKiogY29uc3QgbGFzdF9w b3J0ID0gZmlyc3QgKyBleGVjbGlzdHMtPnBvcnRfbWFzazsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpsYXN0ID0gZmlyc3RbMF07Cj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqKnBvcnQ7Cj4g KwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGw7Cj4gICAJYm9vbCBzdWJtaXQgPSBmYWxzZTsKPiAt CXN0cnVjdCByYl9ub2RlICpyYjsKPiAgIAo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVuZ2lu ZS0+YWN0aXZlLmxvY2spOwo+ICAgCj4gQEAgLTIwMywxMSArMTk4LDEwIEBAIHN0YXRpYyB2b2lk IF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCSAqIGV2 ZW50Lgo+ICAgCSAqLwo+ICAgCXBvcnQgPSBmaXJzdDsKPiAtCXdoaWxlICgocmIgPSByYl9maXJz dF9jYWNoZWQoJmVuZ2luZS0+YWN0aXZlLnF1ZXVlKSkpIHsKPiAtCQlzdHJ1Y3QgaTkxNV9wcmlv bGlzdCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKPiArCWZvcl9lYWNoX3ByaW9saXN0KHBsLCAmZW5n aW5lLT5hY3RpdmUucXVldWUpIHsKPiAgIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsK PiAgIAo+IC0JCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3VtZShycSwgcm4sIHApIHsK PiArCQlwcmlvbGlzdF9mb3JfZWFjaF9yZXF1ZXN0X3NhZmUocnEsIHJuLCBwbCkgewo+ICAgCQkJ aWYgKGxhc3QgJiYgcnEtPmNvbnRleHQgIT0gbGFzdC0+Y29udGV4dCkgewo+ICAgCQkJCWlmIChw b3J0ID09IGxhc3RfcG9ydCkKPiAgIAkJCQkJZ290byBkb25lOwo+IEBAIC0yMjMsMTIgKzIxNywx MSBAQCBzdGF0aWMgdm9pZCBfX2d1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIAkJCWxhc3QgPSBycTsKPiAgIAkJfQo+ICAgCj4gLQkJcmJfZXJhc2VfY2FjaGVk KCZwLT5ub2RlLCAmZW5naW5lLT5hY3RpdmUucXVldWUpOwo+IC0JCWk5MTVfcHJpb2xpc3RfZnJl ZShwKTsKPiArCQlpOTE1X3ByaW9saXN0X2FkdmFuY2UoJmVuZ2luZS0+YWN0aXZlLnF1ZXVlLCBw bCk7Cj4gICAJfQo+ICAgZG9uZToKPiAgIAlleGVjbGlzdHMtPnF1ZXVlX3ByaW9yaXR5X2hpbnQg PQo+IC0JCXJiID8gdG9fcHJpb2xpc3QocmIpLT5wcmlvcml0eSA6IElOVF9NSU47Cj4gKwkJcGwg IT0gJmVuZ2luZS0+YWN0aXZlLnF1ZXVlLnNlbnRpbmVsID8gcGwtPnByaW9yaXR5IDogSU5UX01J TjsKPiAgIAlpZiAoc3VibWl0KSB7Cj4gICAJCSpwb3J0ID0gc2NoZWR1bGVfaW4obGFzdCwgcG9y dCAtIGV4ZWNsaXN0cy0+aW5mbGlnaHQpOwo+ICAgCQkqKytwb3J0ID0gTlVMTDsKPiBAQCAtMzI3 LDcgKzMyMCw3IEBAIHN0YXRpYyB2b2lkIGd1Y19yZXNldF9jYW5jZWwoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3Rz ICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwo+ICAgCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLCAqcm47Cj4gLQlzdHJ1Y3QgcmJfbm9kZSAqcmI7Cj4gKwlzdHJ1Y3QgaTkx NV9wcmlvbGlzdCAqcDsKPiAgIAl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAgCj4gICAJRU5HSU5F X1RSQUNFKGVuZ2luZSwgIlxuIik7Cj4gQEAgLTM1NSwyNSArMzQ4LDIwIEBAIHN0YXRpYyB2b2lk IGd1Y19yZXNldF9jYW5jZWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCX0K PiAgIAo+ICAgCS8qIEZsdXNoIHRoZSBxdWV1ZWQgcmVxdWVzdHMgdG8gdGhlIHRpbWVsaW5lIGxp c3QgKGZvciByZXRpcmluZykuICovCj4gLQl3aGlsZSAoKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZl bmdpbmUtPmFjdGl2ZS5xdWV1ZSkpKSB7Cj4gLQkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSB0 b19wcmlvbGlzdChyYik7Cj4gLQo+IC0JCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3Vt ZShycSwgcm4sIHApIHsKPiArCWZvcl9lYWNoX3ByaW9saXN0KHAsICZlbmdpbmUtPmFjdGl2ZS5x dWV1ZSkgewo+ICsJCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3Rfc2FmZShycSwgcm4sIHApIHsK PiAgIAkJCWxpc3RfZGVsX2luaXQoJnJxLT5zY2hlZC5saW5rKTsKPiAgIAkJCV9faTkxNV9yZXF1 ZXN0X3N1Ym1pdChycSk7Cj4gICAJCQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZycS0+ZmVuY2UsIC1F SU8pOwo+ICAgCQkJaTkxNV9yZXF1ZXN0X21hcmtfY29tcGxldGUocnEpOwo+ICAgCQl9Cj4gLQo+ IC0JCXJiX2VyYXNlX2NhY2hlZCgmcC0+bm9kZSwgJmVuZ2luZS0+YWN0aXZlLnF1ZXVlKTsKPiAt CQlpOTE1X3ByaW9saXN0X2ZyZWUocCk7Cj4gKwkJaTkxNV9wcmlvbGlzdF9hZHZhbmNlKCZlbmdp bmUtPmFjdGl2ZS5xdWV1ZSwgcCk7Cj4gICAJfQo+ICAgCUdFTV9CVUdfT04oIWk5MTVfc2NoZWRf aXNfaWRsZSgmZW5naW5lLT5hY3RpdmUpKTsKPiAgIAo+ICAgCS8qIFJlbWFpbmluZyBfdW5yZWFk eV8gcmVxdWVzdHMgd2lsbCBiZSBub3AnZWQgd2hlbiBzdWJtaXR0ZWQgKi8KPiAgIAo+ICAgCWV4 ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9IElOVF9NSU47Cj4gLQllbmdpbmUtPmFjdGl2 ZS5xdWV1ZSA9IFJCX1JPT1RfQ0FDSEVEOwo+ICAgCj4gICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmZW5naW5lLT5hY3RpdmUubG9jaywgZmxhZ3MpOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ByaW9saXN0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ByaW9saXN0X3R5cGVzLmgKPiBpbmRleCBiYzJmYTg0Zjk4YTguLjEyMDBjM2Rm NmE0YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ByaW9saXN0X3R5 cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ByaW9saXN0X3R5cGVzLmgK PiBAQCAtMzgsMTAgKzM4LDM2IEBAIGVudW0gewo+ICAgI2RlZmluZSBJOTE1X1BSSU9SSVRZX1VO UFJFRU1QVEFCTEUgSU5UX01BWAo+ICAgI2RlZmluZSBJOTE1X1BSSU9SSVRZX0JBUlJJRVIgKEk5 MTVfUFJJT1JJVFlfVU5QUkVFTVBUQUJMRSAtIDEpCj4gICAKPiArI2lmZGVmIENPTkZJR182NEJJ VAo+ICsjZGVmaW5lIEk5MTVfUFJJT0xJU1RfSEVJR0hUIDEyCj4gKyNlbHNlCj4gKyNkZWZpbmUg STkxNV9QUklPTElTVF9IRUlHSFQgMTEKPiArI2VuZGlmCj4gKwo+ICAgc3RydWN0IGk5MTVfcHJp b2xpc3Qgewo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgcmVxdWVzdHM7Cj4gLQlzdHJ1Y3QgcmJfbm9k ZSBub2RlOwo+ICAgCWludCBwcmlvcml0eTsKPiArCj4gKwlpbnQgbGV2ZWw7Cj4gKwlzdHJ1Y3Qg aTkxNV9wcmlvbGlzdCAqbmV4dFtJOTE1X1BSSU9MSVNUX0hFSUdIVF07Cj4gICB9Owo+ICAgCj4g K3N0cnVjdCBpOTE1X3ByaW9saXN0X3Jvb3Qgewo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3Qgc2Vu dGluZWw7Cj4gKwl1MzIgcHJuZzsKPiArfTsKPiArCj4gKyNkZWZpbmUgaTkxNV9wcmlvbGlzdF9p c19lbXB0eShyb290KSAoKHJvb3QpLT5zZW50aW5lbC5sZXZlbCA8IDApCj4gKwo+ICsjZGVmaW5l IGZvcl9lYWNoX3ByaW9saXN0KHAsIHJvb3QpIFwKPiArCWZvciAoKHApID0gKHJvb3QpLT5zZW50 aW5lbC5uZXh0WzBdOyBcCj4gKwkgICAgIChwKSAhPSAmKHJvb3QpLT5zZW50aW5lbDsgXAo+ICsJ ICAgICAocCkgPSAocCktPm5leHRbMF0pCj4gKwo+ICsjZGVmaW5lIHByaW9saXN0X2Zvcl9lYWNo X3JlcXVlc3QoaXQsIHBsaXN0KSBcCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0LCAmKHBsaXN0 KS0+cmVxdWVzdHMsIHNjaGVkLmxpbmspCj4gKwo+ICsjZGVmaW5lIHByaW9saXN0X2Zvcl9lYWNo X3JlcXVlc3Rfc2FmZShpdCwgbiwgcGxpc3QpIFwKPiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZShpdCwgbiwgJihwbGlzdCktPnJlcXVlc3RzLCBzY2hlZC5saW5rKQo+ICsKPiAgICNlbmRpZiAv KiBfSTkxNV9QUklPTElTVF9UWVBFU19IXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hl ZHVsZXIuYwo+IGluZGV4IGEzZWUwNmNiNjZkNy4uNzQwMDBkM2VlYmIxIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCj4gQEAgLTQsNyArNCw5IEBACj4gICAgKiBDb3B5 cmlnaHQgwqkgMjAxOCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICAgICovCj4gICAKPiArI2luY2x1ZGUg PGxpbnV4L2JpdG9wcy5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+Cj4gKyNpbmNsdWRl IDxsaW51eC9wcmFuZG9tLmg+Cj4gICAKPiAgICNpbmNsdWRlICJndC9pbnRlbF9yaW5nLmgiCj4g ICAjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjX3JlZy5oIgo+IEBAIC05MSwxNSArOTMsMjQgQEAgc3Rh dGljIHZvaWQgaTkxNV9zY2hlZF9pbml0X2lwaShzdHJ1Y3QgaTkxNV9zY2hlZF9pcGkgKmlwaSkK PiAgIAlpcGktPmxpc3QgPSBOVUxMOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2b2lkIGluaXRfcHJp b2xpc3Qoc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCAqY29uc3Qgcm9vdCkKPiArewo+ICsJc3Ry dWN0IGk5MTVfcHJpb2xpc3QgKnBsID0gJnJvb3QtPnNlbnRpbmVsOwo+ICsKPiArCW1lbXNldF9w KCh2b2lkICoqKXBsLT5uZXh0LCBwbCwgQVJSQVlfU0laRShwbC0+bmV4dCkpOwo+ICsJcGwtPnBy aW9yaXR5ID0gSU5UX01JTjsKPiArCXBsLT5sZXZlbCA9IC0xOwo+ICt9Cj4gKwo+ICAgdm9pZCBp OTE1X3NjaGVkX2luaXRfZW5naW5lKHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2UsCj4gICAJ CQkgICAgdW5zaWduZWQgaW50IHN1YmNsYXNzKQo+ICAgewo+ICAgCXNwaW5fbG9ja19pbml0KCZz ZS0+bG9jayk7Cj4gICAJbG9ja2RlcF9zZXRfc3ViY2xhc3MoJnNlLT5sb2NrLCBzdWJjbGFzcyk7 Cj4gICAKPiArCWluaXRfcHJpb2xpc3QoJnNlLT5xdWV1ZSk7Cj4gICAJSU5JVF9MSVNUX0hFQUQo JnNlLT5yZXF1ZXN0cyk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJnNlLT5ob2xkKTsKPiAtCXNlLT5x dWV1ZSA9IFJCX1JPT1RfQ0FDSEVEOwo+ICAgCj4gICAJaTkxNV9zY2hlZF9pbml0X2lwaSgmc2Ut PmlwaSk7Cj4gICAKPiBAQCAtMTE2LDggKzEyNyw1NyBAQCB2b2lkIGk5MTVfc2NoZWRfaW5pdF9l bmdpbmUoc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzZSwKPiAgICNlbmRpZgo+ICAgfQo+ICAg Cj4gK19fbWF5YmVfdW51c2VkIHN0YXRpYyBib29sIHByaW9saXN0X2lkbGUoc3RydWN0IGk5MTVf cHJpb2xpc3Rfcm9vdCAqcm9vdCkKPiArewo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsID0g JnJvb3QtPnNlbnRpbmVsOwo+ICsJaW50IGx2bDsKPiArCj4gKwlmb3IgKGx2bCA9IDA7IGx2bCA8 IEFSUkFZX1NJWkUocGwtPm5leHQpOyBsdmwrKykgewo+ICsJCWlmIChwbC0+bmV4dFtsdmxdICE9 IHBsKSB7Cj4gKwkJCUdFTV9UUkFDRV9FUlIoInJvb3RbJWRdIGlzIG5vdCBlbXB0eVxuIiwgbHZs KTsKPiArCQkJcmV0dXJuIGZhbHNlOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAocGwtPmxldmVs ICE9IC0xKSB7Cj4gKwkJR0VNX1RSQUNFX0VSUigicm9vdCBpcyBub3QgY2xlYXI6ICVkXG4iLCBw bC0+bGV2ZWwpOwo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCj4gKwlyZXR1cm4gdHJ1ZTsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgcGxfcHVzaChzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGws IHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCj4gK3sKPiArCXBsLT5yZXF1ZXN0cy5uZXh0ID0gaGVh ZC0+bmV4dDsKPiArCWhlYWQtPm5leHQgPSAmcGwtPnJlcXVlc3RzOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgc3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsX3BvcChzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQo+ ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGw7Cj4gKwo+ICsJcGwgPSBjb250YWluZXJf b2YoaGVhZC0+bmV4dCwgdHlwZW9mKCpwbCksIHJlcXVlc3RzKTsKPiArCWhlYWQtPm5leHQgPSBw bC0+cmVxdWVzdHMubmV4dDsKPiArCj4gKwlyZXR1cm4gcGw7Cj4gK30KPiArCj4gK3N0YXRpYyBi b29sIHBsX2VtcHR5KHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpCj4gK3sKPiArCXJldHVybiAhaGVh ZC0+bmV4dDsKPiArfQo+ICsKPiAgIHZvaWQgaTkxNV9zY2hlZF9wYXJrX2VuZ2luZShzdHJ1Y3Qg aTkxNV9zY2hlZF9lbmdpbmUgKnNlKQo+ICAgewo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9v dCAqcm9vdCA9ICZzZS0+cXVldWU7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0ID0gJnJvb3Qt PnNlbnRpbmVsLnJlcXVlc3RzOwo+ICsKPiArCUdFTV9CVUdfT04oIXByaW9saXN0X2lkbGUocm9v dCkpOwo+ICsKPiArCXdoaWxlICghcGxfZW1wdHkobGlzdCkpCj4gKwkJa21lbV9jYWNoZV9mcmVl KGdsb2JhbC5zbGFiX3ByaW9yaXRpZXMsIHBsX3BvcChsaXN0KSk7CgpJZiBJIGZvbGxvdyBjb3Jy ZWN0IHlvdSBjb3VsZCBqdXN0IHVubGluayB0aGUgaGVhZCBhbmQgZnJlZSB0aGUgcmVzdCAKd2l0 aCBqdXN0IGEgd2Fsaywgbm8gbmVlZCB0byBwb3AgYWxvbmcgdGhlIHdheS4KCj4gKwo+ICAgCUdF TV9CVUdfT04oIWk5MTVfc2NoZWRfaXNfaWRsZShzZSkpOwo+ICAgCXNlLT5ub19wcmlvbGlzdCA9 IGZhbHNlOwo+ICAgfQo+IEBAIC0xODMsNzEgKzI0Myw1NSBAQCBzdGF0aWMgaW5saW5lIGJvb2wg bm9kZV9zaWduYWxlZChjb25zdCBzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKQo+ICAgCXJl dHVybiBpOTE1X3JlcXVlc3RfY29tcGxldGVkKG5vZGVfdG9fcmVxdWVzdChub2RlKSk7Cj4gICB9 Cj4gICAKPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdG9fcHJpb2xpc3Qo c3RydWN0IHJiX25vZGUgKnJiKQo+ICtzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCByYW5kb21f bGV2ZWwoc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCAqcm9vdCkKPiAgIHsKPiAtCXJldHVybiBy Yl9lbnRyeShyYiwgc3RydWN0IGk5MTVfcHJpb2xpc3QsIG5vZGUpOwo+IC19Cj4gLQo+IC1zdGF0 aWMgdm9pZCBhc3NlcnRfcHJpb2xpc3RzKHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqIGNvbnN0 IHNlKQo+IC17Cj4gLQlzdHJ1Y3QgcmJfbm9kZSAqcmI7Cj4gLQlsb25nIGxhc3RfcHJpbzsKPiAt Cj4gLQlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkpCj4gLQkJcmV0 dXJuOwo+IC0KPiAtCUdFTV9CVUdfT04ocmJfZmlyc3RfY2FjaGVkKCZzZS0+cXVldWUpICE9Cj4g LQkJICAgcmJfZmlyc3QoJnNlLT5xdWV1ZS5yYl9yb290KSk7Cj4gLQo+IC0JbGFzdF9wcmlvID0g SU5UX01BWDsKPiAtCWZvciAocmIgPSByYl9maXJzdF9jYWNoZWQoJnNlLT5xdWV1ZSk7IHJiOyBy YiA9IHJiX25leHQocmIpKSB7Cj4gLQkJY29uc3Qgc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSB0 b19wcmlvbGlzdChyYik7Cj4gLQo+IC0JCUdFTV9CVUdfT04ocC0+cHJpb3JpdHkgPiBsYXN0X3By aW8pOwo+IC0JCWxhc3RfcHJpbyA9IHAtPnByaW9yaXR5Owo+IC0JfQo+ICsJcm9vdC0+cHJuZyA9 IG5leHRfcHNldWRvX3JhbmRvbTMyKHJvb3QtPnBybmcpOwo+ICsJcmV0dXJuICBfX2Zmcyhyb290 LT5wcm5nKSAvIDI7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3QgbGlzdF9oZWFkICoKPiAg IGxvb2t1cF9wcmlvbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlv KQo+ICAgewo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnVwZGF0ZVtJOTE1X1BSSU9MSVNUX0hF SUdIVF07Cj4gICAJc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICogY29uc3Qgc2UgPSAmZW5naW5l LT5hY3RpdmU7Cj4gLQlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcDsKPiAtCXN0cnVjdCByYl9ub2Rl ICoqcGFyZW50LCAqcmI7Cj4gLQlib29sIGZpcnN0ID0gdHJ1ZTsKPiAtCj4gLQlsb2NrZGVwX2Fz c2VydF9oZWxkKCZlbmdpbmUtPmFjdGl2ZS5sb2NrKTsKPiAtCWFzc2VydF9wcmlvbGlzdHMoc2Up Owo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCAqcm9vdCA9ICZzZS0+cXVldWU7Cj4gKwlz dHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGwsICp0bXA7Cj4gKwlpbnQgbHZsOwo+ICAgCj4gKwlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZzZS0+bG9jayk7Cj4gICAJaWYgKHVubGlrZWx5KHNlLT5ub19wcmlv bGlzdCkpCj4gICAJCXByaW8gPSBJOTE1X1BSSU9SSVRZX05PUk1BTDsKPiAgIAo+ICsJZm9yX2Vh Y2hfcHJpb2xpc3QocGwsIHJvb3QpIHsgLyogcmVjeWNsZSBhbnkgZW1wdHkgZWxlbWVudHMgYmVm b3JlIHVzICovCj4gKwkJaWYgKHBsLT5wcmlvcml0eSA+PSBwcmlvIHx8ICFsaXN0X2VtcHR5KCZw bC0+cmVxdWVzdHMpKQo+ICsJCQlicmVhazsKPiArCj4gKwkJaTkxNV9wcmlvbGlzdF9hZHZhbmNl KHJvb3QsIHBsKTsKPiArCX0KPiArCj4gICBmaW5kX3ByaW9saXN0Ogo+IC0JLyogbW9zdCBwb3Np dGl2ZSBwcmlvcml0eSBpcyBzY2hlZHVsZWQgZmlyc3QsIGVxdWFsIHByaW9yaXRpZXMgZmlmbyAq Lwo+IC0JcmIgPSBOVUxMOwo+IC0JcGFyZW50ID0gJnNlLT5xdWV1ZS5yYl9yb290LnJiX25vZGU7 Cj4gLQl3aGlsZSAoKnBhcmVudCkgewo+IC0JCXJiID0gKnBhcmVudDsKPiAtCQlwID0gdG9fcHJp b2xpc3QocmIpOwo+IC0JCWlmIChwcmlvID4gcC0+cHJpb3JpdHkpIHsKPiAtCQkJcGFyZW50ID0g JnJiLT5yYl9sZWZ0Owo+IC0JCX0gZWxzZSBpZiAocHJpbyA8IHAtPnByaW9yaXR5KSB7Cj4gLQkJ CXBhcmVudCA9ICZyYi0+cmJfcmlnaHQ7Cj4gLQkJCWZpcnN0ID0gZmFsc2U7Cj4gLQkJfSBlbHNl IHsKPiAtCQkJcmV0dXJuICZwLT5yZXF1ZXN0czsKPiAtCQl9Cj4gKwlwbCA9ICZyb290LT5zZW50 aW5lbDsKPiArCWx2bCA9IHBsLT5sZXZlbDsKPiArCXdoaWxlIChsdmwgPj0gMCkgewo+ICsJCXdo aWxlICh0bXAgPSBwbC0+bmV4dFtsdmxdLCB0bXAtPnByaW9yaXR5ID49IHByaW8pCj4gKwkJCXBs ID0gdG1wOwo+ICsJCWlmIChwbC0+cHJpb3JpdHkgPT0gcHJpbykKPiArCQkJZ290byBvdXQ7Cj4g KwkJdXBkYXRlW2x2bC0tXSA9IHBsOwo+ICAgCX0KPiAgIAo+ICAgCWlmIChwcmlvID09IEk5MTVf UFJJT1JJVFlfTk9STUFMKSB7Cj4gLQkJcCA9ICZzZS0+ZGVmYXVsdF9wcmlvbGlzdDsKPiArCQlw bCA9ICZzZS0+ZGVmYXVsdF9wcmlvbGlzdDsKPiArCX0gZWxzZSBpZiAoIXBsX2VtcHR5KCZyb290 LT5zZW50aW5lbC5yZXF1ZXN0cykpIHsKPiArCQlwbCA9IHBsX3BvcCgmcm9vdC0+c2VudGluZWwu cmVxdWVzdHMpOwo+ICAgCX0gZWxzZSB7Cj4gLQkJcCA9IGttZW1fY2FjaGVfYWxsb2MoZ2xvYmFs LnNsYWJfcHJpb3JpdGllcywgR0ZQX0FUT01JQyk7Cj4gKwkJcGwgPSBrbWVtX2NhY2hlX2FsbG9j KGdsb2JhbC5zbGFiX3ByaW9yaXRpZXMsIEdGUF9BVE9NSUMpOwo+ICAgCQkvKiBDb252ZXJ0IGFu IGFsbG9jYXRpb24gZmFpbHVyZSB0byBhIHByaW9yaXR5IGJ1bXAgKi8KPiAtCQlpZiAodW5saWtl bHkoIXApKSB7Cj4gKwkJaWYgKHVubGlrZWx5KCFwbCkpIHsKPiAgIAkJCXByaW8gPSBJOTE1X1BS SU9SSVRZX05PUk1BTDsgLyogcmVjdXJzZXMganVzdCBvbmNlICovCj4gICAKPiAtCQkJLyogVG8g bWFpbnRhaW4gb3JkZXJpbmcgd2l0aCBhbGwgcmVuZGVyaW5nLCBhZnRlciBhbgo+ICsJCQkvKgo+ ICsJCQkgKiBUbyBtYWludGFpbiBvcmRlcmluZyB3aXRoIGFsbCByZW5kZXJpbmcsIGFmdGVyIGFu Cj4gICAJCQkgKiBhbGxvY2F0aW9uIGZhaWx1cmUgd2UgaGF2ZSB0byBkaXNhYmxlIGFsbCBzY2hl ZHVsaW5nLgo+ICAgCQkJICogUmVxdWVzdHMgd2lsbCB0aGVuIGJlIGV4ZWN1dGVkIGluIGZpZm8s IGFuZCBzY2hlZHVsZQo+ICAgCQkJICogd2lsbCBlbnN1cmUgdGhhdCBkZXBlbmRlbmNpZXMgYXJl IGVtaXR0ZWQgaW4gZmlmby4KPiBAQCAtMjYwLDE4ICszMDQsMTAzIEBAIGxvb2t1cF9wcmlvbGlz dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBwcmlvKQo+ICAgCQl9Cj4gICAJ fQo+ICAgCj4gLQlwLT5wcmlvcml0eSA9IHByaW87Cj4gLQlJTklUX0xJU1RfSEVBRCgmcC0+cmVx dWVzdHMpOwo+ICsJcGwtPnByaW9yaXR5ID0gcHJpbzsKPiArCUlOSVRfTElTVF9IRUFEKCZwbC0+ cmVxdWVzdHMpOwo+ICAgCj4gLQlyYl9saW5rX25vZGUoJnAtPm5vZGUsIHJiLCBwYXJlbnQpOwo+ IC0JcmJfaW5zZXJ0X2NvbG9yX2NhY2hlZCgmcC0+bm9kZSwgJnNlLT5xdWV1ZSwgZmlyc3QpOwo+ ICsJbHZsID0gcmFuZG9tX2xldmVsKHJvb3QpOwo+ICsJaWYgKGx2bCA+IHJvb3QtPnNlbnRpbmVs LmxldmVsKSB7Cj4gKwkJaWYgKHJvb3QtPnNlbnRpbmVsLmxldmVsIDwgSTkxNV9QUklPTElTVF9I RUlHSFQgLSAxKSB7Cj4gKwkJCWx2bCA9ICsrcm9vdC0+c2VudGluZWwubGV2ZWw7Cj4gKwkJCXVw ZGF0ZVtsdmxdID0gJnJvb3QtPnNlbnRpbmVsOwo+ICsJCX0gZWxzZSB7Cj4gKwkJCWx2bCA9IEk5 MTVfUFJJT0xJU1RfSEVJR0hUIC0gMTsKPiArCQl9Cj4gKwl9Cj4gKwlHRU1fQlVHX09OKGx2bCA8 IDApOwo+ICsJR0VNX0JVR19PTihsdmwgPj0gQVJSQVlfU0laRShwbC0+bmV4dCkpOwo+ICAgCj4g LQlyZXR1cm4gJnAtPnJlcXVlc3RzOwo+ICsJcGwtPmxldmVsID0gbHZsOwo+ICsJZG8gewo+ICsJ CXRtcCA9IHVwZGF0ZVtsdmxdOwo+ICsJCXBsLT5uZXh0W2x2bF0gPSB1cGRhdGVbbHZsXS0+bmV4 dFtsdmxdOwo+ICsJCXRtcC0+bmV4dFtsdmxdID0gcGw7Cj4gKwl9IHdoaWxlICgtLWx2bCA+PSAw KTsKPiArCj4gKwlpZiAoSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSkgewo+ ICsJCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpjaGs7Cj4gKwo+ICsJCWNoayA9ICZyb290LT5zZW50 aW5lbDsKPiArCQlsdmwgPSBjaGstPmxldmVsOwo+ICsJCWRvIHsKPiArCQkJd2hpbGUgKHRtcCA9 IGNoay0+bmV4dFtsdmxdLCB0bXAtPnByaW9yaXR5ID49IHByaW8pCj4gKwkJCQljaGsgPSB0bXA7 Cj4gKwkJfSB3aGlsZSAoLS1sdmwgPj0gMCk7Cj4gKwo+ICsJCUdFTV9CVUdfT04oY2hrICE9IHBs KTsKPiArCX0KPiArCj4gK291dDoKPiArCUdFTV9CVUdfT04ocGwgPT0gJnJvb3QtPnNlbnRpbmVs KTsKPiArCXJldHVybiAmcGwtPnJlcXVlc3RzOwo+ICAgfQo+ICAgCj4gLXZvaWQgX19pOTE1X3By aW9saXN0X2ZyZWUoc3RydWN0IGk5MTVfcHJpb2xpc3QgKnApCj4gK3N0YXRpYyB2b2lkIHJlbW92 ZV9wcmlvbGlzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gKwkJCSAgICBzdHJ1 Y3QgbGlzdF9oZWFkICpwbGlzdCkKPiAgIHsKPiAtCWttZW1fY2FjaGVfZnJlZShnbG9iYWwuc2xh Yl9wcmlvcml0aWVzLCBwKTsKPiArCXN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqIGNvbnN0IHNl ID0gJmVuZ2luZS0+YWN0aXZlOwo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCAqcm9vdCA9 ICZzZS0+cXVldWU7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGwsICp0bXA7Cj4gKwlzdHJ1 Y3QgaTkxNV9wcmlvbGlzdCAqb2xkID0KPiArCQljb250YWluZXJfb2YocGxpc3QsIHN0cnVjdCBp OTE1X3ByaW9saXN0LCByZXF1ZXN0cyk7Cj4gKwlpbnQgcHJpbyA9IG9sZC0+cHJpb3JpdHk7Cj4g KwlpbnQgbHZsOwo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnNlLT5sb2NrKTsKPiArCUdF TV9CVUdfT04oIWxpc3RfZW1wdHkocGxpc3QpKTsKPiArCj4gKwlwbCA9ICZyb290LT5zZW50aW5l bDsKPiArCWx2bCA9IHBsLT5sZXZlbDsKPiArCUdFTV9CVUdfT04obHZsIDwgMCk7Cj4gKwo+ICsJ aWYgKHByaW8gIT0gSTkxNV9QUklPUklUWV9OT1JNQUwpCj4gKwkJcGxfcHVzaChvbGQsICZwbC0+ cmVxdWVzdHMpOwo+ICsKPiArCWRvIHsKPiArCQl3aGlsZSAodG1wID0gcGwtPm5leHRbbHZsXSwg dG1wLT5wcmlvcml0eSA+IHByaW8pCj4gKwkJCXBsID0gdG1wOwo+ICsJCWlmIChsdmwgPD0gb2xk LT5sZXZlbCkgewo+ICsJCQlwbC0+bmV4dFtsdmxdID0gb2xkLT5uZXh0W2x2bF07Cj4gKwkJCWlm IChwbCA9PSAmcm9vdC0+c2VudGluZWwgJiYgb2xkLT5uZXh0W2x2bF0gPT0gcGwpIHsKPiArCQkJ CUdFTV9CVUdfT04ocGwtPmxldmVsICE9IGx2bCk7Cj4gKwkJCQlwbC0+bGV2ZWwtLTsKPiArCQkJ fQo+ICsJCX0KPiArCX0gd2hpbGUgKC0tbHZsID49IDApOwo+ICsJR0VNX0JVR19PTih0bXAgIT0g b2xkKTsKPiArfQoKQW55IGNoYW5jZSB0byBleHRyYWN0IHNvbWUgY29tbW9uYWxpdHkgYmV0d2Vl biByZW1vdmUgYW5kIGFkdmFuY2U/IE5vdCAKZnVsbHkgZ2V0dGluZyBpdCB5ZXQgYnV0IHRoZXkg Ym90aCBzZWVtIHRvIGJlIHJlbW92aW5nIG5vZGVzIGFuZCB0aGVuIApkZWNyZWFzaW5nIHRoZSBo ZWlnaHQuCgo+ICsKPiArdm9pZCBpOTE1X3ByaW9saXN0X2FkdmFuY2Uoc3RydWN0IGk5MTVfcHJp b2xpc3Rfcm9vdCAqcm9vdCwKPiArCQkJICAgc3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsKQo+ICt7 CgpUaGlzIHNlZW1zIHRvIGJlIGNhbGxlZCB3aGVuIGxvd2VzdCBwcmlvcml0eSBlbnRyeSBoYXMg bm8gcmVxdWVzdHMsIApyaWdodD8gU29tZSBzb3J0IG9mIHRyaW0/IE5vdCBnZXR0aW5nIHRoZSAi YWR2YW5jZSIgaWRlYS4KCj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqIGNvbnN0IHMgPSAmcm9v dC0+c2VudGluZWw7Cj4gKwlpbnQgbHZsOwo+ICsKPiArCUdFTV9CVUdfT04oIWxpc3RfZW1wdHko JnBsLT5yZXF1ZXN0cykpOwo+ICsJR0VNX0JVR19PTihwbCAhPSBzLT5uZXh0WzBdKTsKPiArCUdF TV9CVUdfT04ocGwgPT0gcyk7Cj4gKwo+ICsJaWYgKHBsLT5wcmlvcml0eSAhPSBJOTE1X1BSSU9S SVRZX05PUk1BTCkKPiArCQlwbF9wdXNoKHBsLCAmcy0+cmVxdWVzdHMpOwoKcy0+cmVxdWVzdHMg aXMganVzdCBhIHN0b3JlIG9mIGVtcHR5IHByaW9saXN0IG5vZGVzPyBJZiBzbyBwbGVhc2UgcHV0 IGEgCmNvbW1lbnQsIG1heWJlIGluIHN0cnVjdCBpOTE1X3ByaW9saXN0X3Jvb3QuCgo+ICsKPiAr CWx2bCA9IHBsLT5sZXZlbDsKPiArCUdFTV9CVUdfT04obHZsIDwgMCk7Cj4gKwlkbyB7Cj4gKwkJ cy0+bmV4dFtsdmxdID0gcGwtPm5leHRbbHZsXTsKClNvIGl0IHVubGlua3MgdGhlIGVtcHR5IHBs IGZyb20gZWFjaCBsYXllciBzdGFydGluZyBmcm9tIHRoZSB0b3AuCgo+ICsJCWlmIChwbC0+bmV4 dFtsdmxdID09IHMpIHsKCklmIHRoZSBsYXllciBpcyBjb21wbGV0ZWx5IGVtcHR5Li4KCj4gKwkJ CUdFTV9CVUdfT04ocy0+bGV2ZWwgIT0gbHZsKTsKPiArCQkJcy0+bGV2ZWwtLTsKCi4uIGRlY3Jl YXNlcyB0aGUgbWF4IGhlaWdodCBieSBvbmUuIEJ1dCBpdCBhbHNvIGV4cGVjdHMgbWF4IGhlaWdo dCB0byBiZSAKZXF1YWwgdG8gdGhlIGhlaWdoIG9mIHRoZSBlbXB0eSBsZXZlbC4gQmVjYXVzZSBs YXllciB3YXMgZW1wdHkgaXQgaGFzIHRvIApiZSwgb2theS4KCj4gKwkJfQo+ICsJfSB3aGlsZSAo LS1sdmwgPj0gMCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoK PiBAQCAtNDIwLDggKzU0OSwxMyBAQCBzdGF0aWMgdm9pZCBfX2k5MTVfcmVxdWVzdF9zZXRfcHJp b3JpdHkoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBwcmlvKQo+ICAgCQkJY29udGludWU7 Cj4gICAKPiAgIAkJR0VNX0JVR19PTihycS0+ZW5naW5lICE9IGVuZ2luZSk7Cj4gLQkJaWYgKGk5 MTVfcmVxdWVzdF9pbl9wcmlvcml0eV9xdWV1ZShycSkpCj4gKwkJaWYgKGk5MTVfcmVxdWVzdF9p bl9wcmlvcml0eV9xdWV1ZShycSkpIHsKPiArCQkJc3RydWN0IGxpc3RfaGVhZCAqcHJldiA9IHJx LT5zY2hlZC5saW5rLnByZXY7Cj4gKwo+ICAgCQkJbGlzdF9tb3ZlX3RhaWwoJnJxLT5zY2hlZC5s aW5rLCBwbGlzdCk7Cj4gKwkJCWlmIChsaXN0X2VtcHR5KHByZXYpKQo+ICsJCQkJcmVtb3ZlX3By aW9saXN0KGVuZ2luZSwgcHJldik7Cj4gKwkJfQo+ICAgCj4gICAJCS8qIERlZmVyICh0YXNrbGV0 KSBzdWJtaXNzaW9uIHVudGlsIGFmdGVyIGFsbCB1cGRhdGVzLiAqLwo+ICAgCQlraWNrX3N1Ym1p c3Npb24oZW5naW5lLCBycSwgcHJpbyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfc2NoZWR1bGVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxl ci5oCj4gaW5kZXggMGFiNDdjYmYwZTljLi5iY2E4OWE1OGQ5NTMgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKPiBAQCAtMTYsMTIgKzE2LDYgQEAKPiAgIAo+ICAgc3Ry dWN0IGRybV9wcmludGVyOwo+ICAgCj4gLSNkZWZpbmUgcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVz dChpdCwgcGxpc3QpIFwKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoaXQsICYocGxpc3QpLT5yZXF1 ZXN0cywgc2NoZWQubGluaykKPiAtCj4gLSNkZWZpbmUgcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVz dF9jb25zdW1lKGl0LCBuLCBwbGlzdCkgXAo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGl0 LCBuLCAmKHBsaXN0KS0+cmVxdWVzdHMsIHNjaGVkLmxpbmspCj4gLQo+ICAgdm9pZCBpOTE1X3Nj aGVkX25vZGVfaW5pdChzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKTsKPiAgIHZvaWQgaTkx NV9zY2hlZF9ub2RlX3JlaW5pdChzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKTsKPiAgIAo+ IEBAIC02OSw3ICs2Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3ByaW9saXN0X2ZyZWUo c3RydWN0IGk5MTVfcHJpb2xpc3QgKnApCj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1 X3NjaGVkX2lzX2lkbGUoY29uc3Qgc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzZSkKPiAgIHsK PiAtCXJldHVybiBSQl9FTVBUWV9ST09UKCZzZS0+cXVldWUucmJfcm9vdCk7Cj4gKwlyZXR1cm4g aTkxNV9wcmlvbGlzdF9pc19lbXB0eSgmc2UtPnF1ZXVlKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGlj IGlubGluZSBib29sCj4gQEAgLTk5LDYgKzkzLDkgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVf c2NoZWRfa2ljayhzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNlKQo+ICAgCXRhc2tsZXRfaGlf c2NoZWR1bGUoJnNlLT50YXNrbGV0KTsKPiAgIH0KPiAgIAo+ICt2b2lkIGk5MTVfcHJpb2xpc3Rf YWR2YW5jZShzdHJ1Y3QgaTkxNV9wcmlvbGlzdF9yb290ICpyb290LAo+ICsJCQkgICBzdHJ1Y3Qg aTkxNV9wcmlvbGlzdCAqb2xkKTsKPiArCj4gICB2b2lkIGk5MTVfcmVxdWVzdF9zaG93X3dpdGhf c2NoZWR1bGUoc3RydWN0IGRybV9wcmludGVyICptLAo+ICAgCQkJCSAgICAgY29uc3Qgc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsCj4gICAJCQkJICAgICBjb25zdCBjaGFyICpwcmVmaXgsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyX3R5cGVzLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlcl90eXBlcy5oCj4gaW5kZXggZjY2OGM2 ODBkMjkwLi5lNjQ3NTBiZTRlNzcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zY2hlZHVsZXJfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c2NoZWR1bGVyX3R5cGVzLmgKPiBAQCAtODksNyArODksNyBAQCBzdHJ1Y3QgaTkxNV9zY2hlZF9l bmdpbmUgewo+ICAgCS8qKgo+ICAgCSAqIEBxdWV1ZTogcXVldWUgb2YgcmVxdWVzdHMsIGluIHBy aW9yaXR5IGxpc3RzCj4gICAJICovCj4gLQlzdHJ1Y3QgcmJfcm9vdF9jYWNoZWQgcXVldWU7Cj4g KwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdF9yb290IHF1ZXVlOwo+ICAgCj4gICAJc3RydWN0IGk5MTVf c2NoZWRfaXBpIGlwaTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9z ZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAo+IGluZGV4IDNkYjM0ZDNlZWE1OC4uOTQ2Yzkz NDQxYzFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X21vY2tfc2VsZnRlc3RzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9tb2NrX3NlbGZ0ZXN0cy5oCj4gQEAgLTI1LDYgKzI1LDcgQEAgc2VsZnRlc3QocmluZywg aW50ZWxfcmluZ19tb2NrX3NlbGZ0ZXN0cykKPiAgIHNlbGZ0ZXN0KGVuZ2luZSwgaW50ZWxfZW5n aW5lX2NzX21vY2tfc2VsZnRlc3RzKQo+ICAgc2VsZnRlc3QodGltZWxpbmVzLCBpbnRlbF90aW1l bGluZV9tb2NrX3NlbGZ0ZXN0cykKPiAgIHNlbGZ0ZXN0KHJlcXVlc3RzLCBpOTE1X3JlcXVlc3Rf bW9ja19zZWxmdGVzdHMpCj4gK3NlbGZ0ZXN0KHNjaGVkdWxlciwgaTkxNV9zY2hlZHVsZXJfbW9j a19zZWxmdGVzdHMpCj4gICBzZWxmdGVzdChvYmplY3RzLCBpOTE1X2dlbV9vYmplY3RfbW9ja19z ZWxmdGVzdHMpCj4gICBzZWxmdGVzdChwaHlzLCBpOTE1X2dlbV9waHlzX21vY2tfc2VsZnRlc3Rz KQo+ICAgc2VsZnRlc3QoZG1hYnVmLCBpOTE1X2dlbV9kbWFidWZfbW9ja19zZWxmdGVzdHMpCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NjaGVkdWxl ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2NoZWR1bGVyLmMKPiBp bmRleCBkZTQ0YTY2MjEwYjcuLmRlNWIxNDQzMTI5YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zY2hlZHVsZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NjaGVkdWxlci5jCj4gQEAgLTEyLDYgKzEyLDU0IEBA Cj4gICAjaW5jbHVkZSAic2VsZnRlc3RzL2lndF9zcGlubmVyLmgiCj4gICAjaW5jbHVkZSAic2Vs ZnRlc3RzL2k5MTVfcmFuZG9tLmgiCj4gICAKPiArc3RhdGljIGludCBtb2NrX3NraXBsaXN0X2xl dmVscyh2b2lkICpkdW1teSkKPiArewo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCByb290 ID0ge307Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGwgPSAmcm9vdC5zZW50aW5lbDsKPiAr CUlHVF9USU1FT1VUKGVuZF90aW1lKTsKPiArCXVuc2lnbmVkIGxvbmcgdG90YWw7Cj4gKwlpbnQg Y291bnQsIGx2bDsKPiArCj4gKwl0b3RhbCA9IDA7Cj4gKwlkbyB7Cj4gKwkJZm9yIChjb3VudCA9 IDA7IGNvdW50IDwgMTYzODQ7IGNvdW50KyspIHsKPiArCQkJbHZsID0gcmFuZG9tX2xldmVsKCZy b290KTsKPiArCQkJaWYgKGx2bCA+IHBsLT5sZXZlbCkgewo+ICsJCQkJaWYgKGx2bCA8IEk5MTVf UFJJT0xJU1RfSEVJR0hUIC0gMSkKPiArCQkJCQlsdmwgPSArK3BsLT5sZXZlbDsKPiArCQkJCWVs c2UKPiArCQkJCQlsdmwgPSBJOTE1X1BSSU9MSVNUX0hFSUdIVCAtIDE7Cj4gKwkJCX0KPiArCj4g KwkJCXBsLT5uZXh0W2x2bF0gPSBwdHJfaW5jKHBsLT5uZXh0W2x2bF0pOwo+ICsJCX0KPiArCQl0 b3RhbCArPSBjb3VudDsKPiArCX0gd2hpbGUgKCFfX2lndF90aW1lb3V0KGVuZF90aW1lLCBOVUxM KSk7Cj4gKwo+ICsJcHJfaW5mbygiVG90YWwgJTlsdVxuIiwgdG90YWwpOwo+ICsJZm9yIChsdmwg PSAwOyBsdmwgPD0gcGwtPmxldmVsOyBsdmwrKykgewo+ICsJCWludCB4ID0gaWxvZzIoKHVuc2ln bmVkIGxvbmcpcGwtPm5leHRbbHZsXSk7Cj4gKwkJY2hhciByb3dbODBdOwo+ICsKPiArCQltZW1z ZXQocm93LCAnKicsIHgpOwo+ICsJCXJvd1t4XSA9ICdcMCc7Cj4gKwo+ICsJCXByX2luZm8oIiBb JTJkXSAlOWx1ICVzXG4iLAo+ICsJCQlsdmwsICh1bnNpZ25lZCBsb25nKXBsLT5uZXh0W2x2bF0s IHJvdyk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK2ludCBpOTE1X3NjaGVk dWxlcl9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQo+ICt7Cj4gKwlzdGF0aWMgY29uc3Qgc3RydWN0IGk5 MTVfc3VidGVzdCB0ZXN0c1tdID0gewo+ICsJCVNVQlRFU1QobW9ja19za2lwbGlzdF9sZXZlbHMp LAo+ICsJfTsKPiArCj4gKwlyZXR1cm4gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgTlVMTCk7Cj4gK30K PiArCj4gICBzdGF0aWMgdm9pZCBzY2hlZHVsaW5nX2Rpc2FibGUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCWVuZ2luZS0+cHJvcHMucHJlZW1wdF90aW1lb3V0X21z ID0gMDsKPiBAQCAtODAsOSArMTI4LDkgQEAgc3RhdGljIGludCBhbGxfZW5naW5lcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIHN0YXRpYyBib29sIGNoZWNrX2NvbnRleHRfb3Jk ZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXU2NCBsYXN0X3Nl cW5vLCBsYXN0X2NvbnRleHQ7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcDsKPiAgIAl1bnNp Z25lZCBsb25nIGNvdW50Owo+ICAgCWJvb2wgcmVzdWx0ID0gZmFsc2U7Cj4gLQlzdHJ1Y3QgcmJf bm9kZSAqcmI7Cj4gICAJaW50IGxhc3RfcHJpbzsKPiAgIAo+ICAgCS8qIFdlIGV4cGVjdCB0aGUg ZXhlY3V0aW9uIG9yZGVyIHRvIGZvbGxvdyBhc2NlbmRpbmcgZmVuY2UtY29udGV4dCAqLwo+IEBA IC05Miw4ICsxNDAsNyBAQCBzdGF0aWMgYm9vbCBjaGVja19jb250ZXh0X29yZGVyKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAlsYXN0X2NvbnRleHQgPSAwOwo+ICAgCWxhc3Rf c2Vxbm8gPSAwOwo+ICAgCWxhc3RfcHJpbyA9IDA7Cj4gLQlmb3IgKHJiID0gcmJfZmlyc3RfY2Fj aGVkKCZlbmdpbmUtPmFjdGl2ZS5xdWV1ZSk7IHJiOyByYiA9IHJiX25leHQocmIpKSB7Cj4gLQkJ c3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSByYl9lbnRyeShyYiwgdHlwZW9mKCpwKSwgbm9kZSk7 Cj4gKwlmb3JfZWFjaF9wcmlvbGlzdChwLCAmZW5naW5lLT5hY3RpdmUucXVldWUpIHsKPiAgIAkJ c3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gICAKPiAgIAkJcHJpb2xpc3RfZm9yX2VhY2hfcmVx dWVzdChycSwgcCkgewo+IAoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK