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 1BCA6C433DB for ; Wed, 27 Jan 2021 15:10:51 +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 AA3F32075A for ; Wed, 27 Jan 2021 15:10:50 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AA3F32075A 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 1CBBE6E2D1; Wed, 27 Jan 2021 15:10:50 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0EA746E2D1 for ; Wed, 27 Jan 2021 15:10:49 +0000 (UTC) IronPort-SDR: KPd/pGs2TZu6IkhCOYFo9k9jARpQKHarh92LYPZJag7gmHXZNJnnWtWcy17ry7agyq2fF3mogd 3RbQSI0S6BYw== X-IronPort-AV: E=McAfee;i="6000,8403,9877"; a="177515980" X-IronPort-AV: E=Sophos;i="5.79,379,1602572400"; d="scan'208";a="177515980" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jan 2021 07:10:48 -0800 IronPort-SDR: Nrn24lhp9IvTjkfjDEBbqM7BHM1W/2t1f9WUvGoVIEN51UYvCD+AwyzWX1ATerwrI+OAY7NGgF b0yoC3LC3tNw== X-IronPort-AV: E=Sophos;i="5.79,379,1602572400"; d="scan'208";a="388344454" Received: from aohana-mobl1.ger.corp.intel.com (HELO [10.214.230.73]) ([10.214.230.73]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jan 2021 07:10:46 -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: <5b716048-6d94-cbbe-4092-5eaebb706561@linux.intel.com> Date: Wed, 27 Jan 2021 15:10:43 +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 aXN0IGlzIE8oMSksIGJ1dAoKSSB3YXNuJ3QgKGFuZCBhbSBub3QpIGZhbWlsaWFyIHdpdGggdGhl bSwgYnV0IHdpa2lwZWRpYSBwYWdlIHNheXMgCnJlbW92YWwgaXMgTyhsb2dOKSBhdmVyYWdlIGNh c2UgdG8gTyhOKSB3b3JzdCBjYXNlLgoKSWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSBPKDEpIGNv dWxkIGJlIGlnbm9yaW5nIHRoZSBuZWVkIHRvIHRyYXZlcnNlIApmcm9tIHRvcCB0byBib3R0b20g bGV2ZWwgYW5kIHJlbW92aW5nIHRoZSBlbGVtZW50IGZyb20gYWxsLiBCdXQgc2luY2UgCkk5MTVf UFJJT0xJU1RfSEVJR0hUIGlzIGZpeGVkIG1heWJlIGl0IGlzIG9rYXkgdG8gY2FsbCBpdCBPKDEp LgoKSSB3b25kZXIgdGhvdWdoIHdoeSB0aGlzIHdvdWxkbid0IG1lYW4gc2tpcCBsaXN0IHdvdWxk IGJlIHdvcnNlIGZvciBib3RoIApsaWdodGx5IGxvYWRlZCBhbmQgaGlnaGx5LWxvYWRlZCBzY2Vu YXJpb3M/IFByZXN1bWFibHkgaGVpZ2h0IHdvdWxkIG5lZWQgCnRvIGJlIGJhbGFuY2VkIHRvIGNv bXBlbnNhdGUgZm9yIHRoYXQuCgpJbiBzdW1tYXJ5IEkgaGF2ZSBubyBpZGVhIGZvciB3aGF0IG51 bWJlciBvZiBpbi1mbGlnaHQgcmVxdWVzdHMgd291bGQgCnRoZXkgYmUgYmV0dGVyLgoKSG93IGFi b3V0IHB1dHRpbmcgdGhpcyBwYXRjaCBhc2lkZSBmb3Igbm93IHNpbmNlIGl0IGRvZXNuJ3Qgc291 bmQgaXQgaXMgCmNyaXRpY2FsIGZvciBkZWFkbGluZSBzY2hlZHVsaW5nIHBlciBzZT8KClJlZ2Fy ZHMsCgpUdnJ0a28KCj4gTyhsZ04pIGZvciBhbiByYnRyZWUsIGFzIHdlIG5lZWQgdG8gcmViYWxh bmNlIG9uIHJlbW92ZS4gVGhpcyBpcyBhCj4gaGluZHJhbmNlIGZvciBzdWJtaXNzaW9uIGxhdGVu Y3kgYXMgaXQgb2NjdXJzIGJldHdlZW4gcGlja2luZyBhIHJlcXVlc3QKPiBmb3IgdGhlIHByaW9s aXN0IGFuZCBzdWJtaXR0aW5nIGl0IHRvIGhhcmR3YXJlLCBhcyB3ZWxsIGVmZmVjdGl2ZWx5Cj4g dHJpcHBsaW5nIHRoZSBudW1iZXIgb2YgTyhsZ04pIG9wZXJhdGlvbnMgcmVxdWlyZWQgdW5kZXIg dGhlIGlycW9mZiBsb2NrLgo+IFRoaXMgaXMgY3JpdGljYWwgdG8gcmVkdWNpbmcgdGhlIGxhdGVu Y3kgaml0dGVyIHdpdGggbXVsdGlwbGUgY2xpZW50cy4KPiAKPiBUaGUgZG93bnNpZGVzIHRvIHNr aXBsaXN0cyBhcmUgdGhhdCBsb29rdXAvaW5zZXJ0aW9uIGlzIG9ubHkKPiBwcm9iYWJsaXN0aWNh bGx5IE8obGdOKSBhbmQgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBtZW1vcnkgcGVuYWx0eSB0bwo+ IGFzIGVhY2ggc2tpcCBub2RlIGlzIGxhcmdlciB0aGFuIHRoZSByYnRyZWUgZXF1aXZhbGVudC4g RnVydGhlcm1vcmUsIHdlCj4gZG9uJ3QgdXNlIGR5bmFtaWMgYXJyYXlzIGZvciB0aGUgc2tpcGxp c3QsIHNvIHRoZSBhbGxvY2F0aW9uIGlzIGZpeGVkLAo+IGFuZCBpbXBvc2VzIGFuIHVwcGVyIGJv dW5kIG9uIHRoZSBzY2FsYWJpbGl0eSB3cnQgdG8gdGhlIG51bWJlciBvZgo+IGluZmxpZ2h0IHJl cXVlc3RzLgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2ls c29uLmNvLnVrPgo+IC0tLQo+ICAgLi4uL2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJt aXNzaW9uLmMgIHwgIDYzICsrKy0tCj4gICAuLi4vZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1 Y19zdWJtaXNzaW9uLmMgfCAgMzAgKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3By aW9saXN0X3R5cGVzLmggICAgfCAgMjggKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c2NoZWR1bGVyLmMgICAgICAgICB8IDI0NCArKysrKysrKysrKysrKy0tLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmggICAgICAgICB8ICAxMSArLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXJfdHlwZXMuaCAgIHwgICAyICstCj4gICAuLi4v ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaCAgfCAgIDEgKwo+ICAgLi4u L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zY2hlZHVsZXIuYyAgIHwgIDUzICsrKy0KPiAg IDggZmlsZXMgY2hhbmdlZCwgMzE2IGluc2VydGlvbnMoKyksIDExNiBkZWxldGlvbnMoLSkKPiAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1 Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2V4ZWNsaXN0c19zdWJt aXNzaW9uLmMKPiBpbmRleCAxMTAzYzhhMDBhZjEuLjEyOTE0NGRkODZiMCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbi5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZXhlY2xpc3RzX3N1Ym1pc3Npb24u Ywo+IEBAIC0yNDQsMTEgKzI0NCw2IEBAIHN0YXRpYyB2b2lkIHJpbmdfc2V0X3BhdXNlZChjb25z dCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGludCBzdGF0ZSkKPiAgIAkJd21iKCk7 Cj4gICB9Cj4gICAKPiAtc3RhdGljIHN0cnVjdCBpOTE1X3ByaW9saXN0ICp0b19wcmlvbGlzdChz dHJ1Y3QgcmJfbm9kZSAqcmIpCj4gLXsKPiAtCXJldHVybiByYl9lbnRyeShyYiwgc3RydWN0IGk5 MTVfcHJpb2xpc3QsIG5vZGUpOwo+IC19Cj4gLQo+ICAgc3RhdGljIGludCBycV9wcmlvKGNvbnN0 IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgewo+ICAgCXJldHVybiBSRUFEX09OQ0UocnEt PnNjaGVkLmF0dHIucHJpb3JpdHkpOwo+IEBAIC0yNzIsMTUgKzI2NywzMSBAQCBzdGF0aWMgaW50 IGVmZmVjdGl2ZV9wcmlvKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgCXJldHVy biBwcmlvOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQgcXVldWVfcHJpbyhjb25zdCBzdHJ1Y3Qg aTkxNV9zY2hlZF9lbmdpbmUgKnNlKQo+ICtzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVzdCAqZmly c3RfcmVxdWVzdChzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNlKQo+ICAgewo+IC0Jc3RydWN0 IHJiX25vZGUgKnJiOwo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsOwo+ICAgCj4gLQlyYiA9 IHJiX2ZpcnN0X2NhY2hlZCgmc2UtPnF1ZXVlKTsKPiAtCWlmICghcmIpCj4gKwlmb3JfZWFjaF9w cmlvbGlzdChwbCwgJnNlLT5xdWV1ZSkgewo+ICsJCWlmIChsaWtlbHkoIWxpc3RfZW1wdHkoJnBs LT5yZXF1ZXN0cykpKQo+ICsJCQlyZXR1cm4gbGlzdF9maXJzdF9lbnRyeSgmcGwtPnJlcXVlc3Rz LAo+ICsJCQkJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0LAo+ICsJCQkJCQlzY2hlZC5saW5rKTsKPiAr Cj4gKwkJaTkxNV9wcmlvbGlzdF9hZHZhbmNlKCZzZS0+cXVldWUsIHBsKTsKPiArCX0KPiArCj4g KwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGludCBxdWV1ZV9wcmlvKHN0cnVjdCBp OTE1X3NjaGVkX2VuZ2luZSAqc2UpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ ICsKPiArCXJxID0gZmlyc3RfcmVxdWVzdChzZSk7Cj4gKwlpZiAoIXJxKQo+ICAgCQlyZXR1cm4g SU5UX01JTjsKPiAgIAo+IC0JcmV0dXJuIHRvX3ByaW9saXN0KHJiKS0+cHJpb3JpdHk7Cj4gKwly ZXR1cm4gcnFfcHJpbyhycSk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBpbnQgdmlydHVhbF9wcmlv KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICplbCkKPiBAQCAtMjkwLDcgKzMw MSw3IEBAIHN0YXRpYyBpbnQgdmlydHVhbF9wcmlvKGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVf ZXhlY2xpc3RzICplbCkKPiAgIAlyZXR1cm4gcmIgPyByYl9lbnRyeShyYiwgc3RydWN0IHZlX25v ZGUsIHJiKS0+cHJpbyA6IElOVF9NSU47Cj4gICB9Cj4gICAKPiAtc3RhdGljIGJvb2wgbmVlZF9w cmVlbXB0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArc3RhdGljIGJv b2wgbmVlZF9wcmVlbXB0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJCSBj b25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAgIAlpbnQgbGFzdF9wcmlvOwo+ IEBAIC0xMTM2LDYgKzExNDcsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqKiBj b25zdCBsYXN0X3BvcnQgPSBwb3J0ICsgZXhlY2xpc3RzLT5wb3J0X21hc2s7Cj4gICAJc3RydWN0 IGk5MTVfcmVxdWVzdCAqbGFzdCwgKiBjb25zdCAqYWN0aXZlOwo+ICAgCXN0cnVjdCB2aXJ0dWFs X2VuZ2luZSAqdmU7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGw7Cj4gICAJc3RydWN0IHJi X25vZGUgKnJiOwo+ICAgCWJvb2wgc3VibWl0ID0gZmFsc2U7Cj4gICAKPiBAQCAtMTM0NiwxMSAr MTM1OCwxMCBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gICAJCQlicmVhazsKPiAgIAl9Cj4gICAKPiAtCXdoaWxlICgocmIg PSByYl9maXJzdF9jYWNoZWQoJmVuZ2luZS0+YWN0aXZlLnF1ZXVlKSkpIHsKPiAtCQlzdHJ1Y3Qg aTkxNV9wcmlvbGlzdCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKPiArCWZvcl9lYWNoX3ByaW9saXN0 KHBsLCAmZW5naW5lLT5hY3RpdmUucXVldWUpIHsKPiAgIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEsICpybjsKPiAgIAo+IC0JCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3VtZShycSwg cm4sIHApIHsKPiArCQlwcmlvbGlzdF9mb3JfZWFjaF9yZXF1ZXN0X3NhZmUocnEsIHJuLCBwbCkg ewo+ICAgCQkJYm9vbCBtZXJnZSA9IHRydWU7Cj4gICAKPiAgIAkJCS8qCj4gQEAgLTE0MjUsOCAr MTQzNiw3IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIAkJCX0KPiAgIAkJfQo+ICAgCj4gLQkJcmJfZXJhc2VfY2FjaGVk KCZwLT5ub2RlLCAmZW5naW5lLT5hY3RpdmUucXVldWUpOwo+IC0JCWk5MTVfcHJpb2xpc3RfZnJl ZShwKTsKPiArCQlpOTE1X3ByaW9saXN0X2FkdmFuY2UoJmVuZ2luZS0+YWN0aXZlLnF1ZXVlLCBw bCk7Cj4gICAJfQo+ICAgZG9uZToKPiAgIAkqcG9ydCsrID0gaTkxNV9yZXF1ZXN0X2dldChsYXN0 KTsKPiBAQCAtMjYzMSw2ICsyNjQxLDcgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3Jlc2V0X2Nh bmNlbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3RydWN0IGlu dGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlz dHM7Cj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsKPiArCXN0cnVjdCBpOTE1X3By aW9saXN0ICpwbDsKPiAgIAlzdHJ1Y3QgcmJfbm9kZSAqcmI7Cj4gICAJdW5zaWduZWQgbG9uZyBm bGFnczsKPiAgIAo+IEBAIC0yNjYxLDE2ICsyNjcyLDEyIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0 c19yZXNldF9jYW5jZWwoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWludGVs X2VuZ2luZV9zaWduYWxfYnJlYWRjcnVtYnMoZW5naW5lKTsKPiAgIAo+ICAgCS8qIEZsdXNoIHRo ZSBxdWV1ZWQgcmVxdWVzdHMgdG8gdGhlIHRpbWVsaW5lIGxpc3QgKGZvciByZXRpcmluZykuICov Cj4gLQl3aGlsZSAoKHJiID0gcmJfZmlyc3RfY2FjaGVkKCZlbmdpbmUtPmFjdGl2ZS5xdWV1ZSkp KSB7Cj4gLQkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPSB0b19wcmlvbGlzdChyYik7Cj4gLQo+ IC0JCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3VtZShycSwgcm4sIHApIHsKPiArCWZv cl9lYWNoX3ByaW9saXN0KHBsLCAmZW5naW5lLT5hY3RpdmUucXVldWUpIHsKPiArCQlwcmlvbGlz dF9mb3JfZWFjaF9yZXF1ZXN0X3NhZmUocnEsIHJuLCBwbCkgewo+ICAgCQkJaTkxNV9yZXF1ZXN0 X21hcmtfZWlvKHJxKTsKPiAgIAkJCV9faTkxNV9yZXF1ZXN0X3N1Ym1pdChycSk7Cj4gICAJCX0K PiAtCj4gLQkJcmJfZXJhc2VfY2FjaGVkKCZwLT5ub2RlLCAmZW5naW5lLT5hY3RpdmUucXVldWUp Owo+IC0JCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKPiArCQlpOTE1X3ByaW9saXN0X2FkdmFuY2Uo JmVuZ2luZS0+YWN0aXZlLnF1ZXVlLCBwbCk7Cj4gICAJfQo+ICAgCUdFTV9CVUdfT04oIWk5MTVf c2NoZWRfaXNfaWRsZSgmZW5naW5lLT5hY3RpdmUpKTsKPiAgIAo+IEBAIC0yNzAzLDcgKzI3MTAs NiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfcmVzZXRfY2FuY2VsKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgIAkvKiBSZW1haW5pbmcgX3VucmVhZHlfIHJlcXVlc3RzIHdpbGwg YmUgbm9wJ2VkIHdoZW4gc3VibWl0dGVkICovCj4gICAKPiAgIAlleGVjbGlzdHMtPnF1ZXVlX3By aW9yaXR5X2hpbnQgPSBJTlRfTUlOOwo+IC0JZW5naW5lLT5hY3RpdmUucXVldWUgPSBSQl9ST09U X0NBQ0hFRDsKPiAgIAo+ICAgCUdFTV9CVUdfT04oX190YXNrbGV0X2lzX2VuYWJsZWQoJmVuZ2lu ZS0+YWN0aXZlLnRhc2tsZXQpKTsKPiAgIAllbmdpbmUtPmFjdGl2ZS50YXNrbGV0LmZ1bmMgPSBu b3Bfc3VibWlzc2lvbl90YXNrbGV0Owo+IEBAIC0zMDg5LDYgKzMwOTUsOCBAQCBzdGF0aWMgdm9p ZCB2aXJ0dWFsX2NvbnRleHRfZXhpdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCj4gICAKPiAg IAlmb3IgKG4gPSAwOyBuIDwgdmUtPm51bV9zaWJsaW5nczsgbisrKQo+ICAgCQlpbnRlbF9lbmdp bmVfcG1fcHV0KHZlLT5zaWJsaW5nc1tuXSk7Cj4gKwo+ICsJaTkxNV9zY2hlZF9wYXJrX2VuZ2lu ZSgmdmUtPmJhc2UuYWN0aXZlKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBp bnRlbF9jb250ZXh0X29wcyB2aXJ0dWFsX2NvbnRleHRfb3BzID0gewo+IEBAIC0zNTAxLDYgKzM1 MDksNyBAQCB2b2lkIGludGVsX2V4ZWNsaXN0c19zaG93X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKPiAgIHsKPiAgIAljb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4 ZWNsaXN0cyAqZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwo+ICAgCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLCAqbGFzdDsKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbDsKPiAgIAl1 bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAgCXVuc2lnbmVkIGludCBjb3VudDsKPiAgIAlzdHJ1Y3Qg cmJfbm9kZSAqcmI7Cj4gQEAgLTM1MzAsMTAgKzM1MzksOCBAQCB2b2lkIGludGVsX2V4ZWNsaXN0 c19zaG93X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAo+ICAg CWxhc3QgPSBOVUxMOwo+ICAgCWNvdW50ID0gMDsKPiAtCWZvciAocmIgPSByYl9maXJzdF9jYWNo ZWQoJmVuZ2luZS0+YWN0aXZlLnF1ZXVlKTsgcmI7IHJiID0gcmJfbmV4dChyYikpIHsKPiAtCQlz dHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9IHJiX2VudHJ5KHJiLCB0eXBlb2YoKnApLCBub2RlKTsK PiAtCj4gLQkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdChycSwgcCkgewo+ICsJZm9yX2VhY2hf cHJpb2xpc3QocGwsICZlbmdpbmUtPmFjdGl2ZS5xdWV1ZSkgewo+ICsJCXByaW9saXN0X2Zvcl9l YWNoX3JlcXVlc3QocnEsIHBsKSB7Cj4gICAJCQlpZiAoY291bnQrKyA8IG1heCAtIDEpCj4gICAJ CQkJc2hvd19yZXF1ZXN0KG0sIHJxLCAiXHRcdCIsIDApOwo+ICAgCQkJZWxzZQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYwo+IGluZGV4 IDJkNzMzOWVmM2I0Yy4uOGQwYzZjZDI3N2IzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfc3VibWlzc2lvbi5jCj4gQEAgLTU5LDExICs1OSw2IEBA Cj4gICAKPiAgICNkZWZpbmUgR1VDX1JFUVVFU1RfU0laRSA2NCAvKiBieXRlcyAqLwo+ICAgCj4g LXN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfcHJpb2xpc3QgKnRvX3ByaW9saXN0KHN0cnVjdCBy Yl9ub2RlICpyYikKPiAtewo+IC0JcmV0dXJuIHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9wcmlv bGlzdCwgbm9kZSk7Cj4gLX0KPiAtCj4gICBzdGF0aWMgc3RydWN0IGd1Y19zdGFnZV9kZXNjICpf X2dldF9zdGFnZV9kZXNjKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGlkKQo+ICAgewo+ICAg CXN0cnVjdCBndWNfc3RhZ2VfZGVzYyAqYmFzZSA9IGd1Yy0+c3RhZ2VfZGVzY19wb29sX3ZhZGRy Owo+IEBAIC0xODUsOCArMTgwLDggQEAgc3RhdGljIHZvaWQgX19ndWNfZGVxdWV1ZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqKiBjb25z dCBsYXN0X3BvcnQgPSBmaXJzdCArIGV4ZWNsaXN0cy0+cG9ydF9tYXNrOwo+ICAgCXN0cnVjdCBp OTE1X3JlcXVlc3QgKmxhc3QgPSBmaXJzdFswXTsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoq cG9ydDsKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbDsKPiAgIAlib29sIHN1Ym1pdCA9IGZh bHNlOwo+IC0Jc3RydWN0IHJiX25vZGUgKnJiOwo+ICAgCj4gICAJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmZW5naW5lLT5hY3RpdmUubG9jayk7Cj4gICAKPiBAQCAtMjAzLDExICsxOTgsMTAgQEAgc3Rh dGljIHZvaWQgX19ndWNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4g ICAJICogZXZlbnQuCj4gICAJICovCj4gICAJcG9ydCA9IGZpcnN0Owo+IC0Jd2hpbGUgKChyYiA9 IHJiX2ZpcnN0X2NhY2hlZCgmZW5naW5lLT5hY3RpdmUucXVldWUpKSkgewo+IC0JCXN0cnVjdCBp OTE1X3ByaW9saXN0ICpwID0gdG9fcHJpb2xpc3QocmIpOwo+ICsJZm9yX2VhY2hfcHJpb2xpc3Qo cGwsICZlbmdpbmUtPmFjdGl2ZS5xdWV1ZSkgewo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwgKnJuOwo+ICAgCj4gLQkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9jb25zdW1lKHJxLCBy biwgcCkgewo+ICsJCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3Rfc2FmZShycSwgcm4sIHBsKSB7 Cj4gICAJCQlpZiAobGFzdCAmJiBycS0+Y29udGV4dCAhPSBsYXN0LT5jb250ZXh0KSB7Cj4gICAJ CQkJaWYgKHBvcnQgPT0gbGFzdF9wb3J0KQo+ICAgCQkJCQlnb3RvIGRvbmU7Cj4gQEAgLTIyMywx MiArMjE3LDExIEBAIHN0YXRpYyB2b2lkIF9fZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgCQkJbGFzdCA9IHJxOwo+ICAgCQl9Cj4gICAKPiAtCQlyYl9lcmFz ZV9jYWNoZWQoJnAtPm5vZGUsICZlbmdpbmUtPmFjdGl2ZS5xdWV1ZSk7Cj4gLQkJaTkxNV9wcmlv bGlzdF9mcmVlKHApOwo+ICsJCWk5MTVfcHJpb2xpc3RfYWR2YW5jZSgmZW5naW5lLT5hY3RpdmUu cXVldWUsIHBsKTsKPiAgIAl9Cj4gICBkb25lOgo+ICAgCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3Jp dHlfaGludCA9Cj4gLQkJcmIgPyB0b19wcmlvbGlzdChyYiktPnByaW9yaXR5IDogSU5UX01JTjsK PiArCQlwbCAhPSAmZW5naW5lLT5hY3RpdmUucXVldWUuc2VudGluZWwgPyBwbC0+cHJpb3JpdHkg OiBJTlRfTUlOOwo+ICAgCWlmIChzdWJtaXQpIHsKPiAgIAkJKnBvcnQgPSBzY2hlZHVsZV9pbihs YXN0LCBwb3J0IC0gZXhlY2xpc3RzLT5pbmZsaWdodCk7Cj4gICAJCSorK3BvcnQgPSBOVUxMOwo+ IEBAIC0zMjcsNyArMzIwLDcgQEAgc3RhdGljIHZvaWQgZ3VjX3Jlc2V0X2NhbmNlbChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9l eGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Cj4gICAJc3Ry dWN0IGk5MTVfcmVxdWVzdCAqcnEsICpybjsKPiAtCXN0cnVjdCByYl9ub2RlICpyYjsKPiArCXN0 cnVjdCBpOTE1X3ByaW9saXN0ICpwOwo+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAKPiAg IAlFTkdJTkVfVFJBQ0UoZW5naW5lLCAiXG4iKTsKPiBAQCAtMzU1LDI1ICszNDgsMjAgQEAgc3Rh dGljIHZvaWQgZ3VjX3Jlc2V0X2NhbmNlbChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gICAJfQo+ICAgCj4gICAJLyogRmx1c2ggdGhlIHF1ZXVlZCByZXF1ZXN0cyB0byB0aGUgdGlt ZWxpbmUgbGlzdCAoZm9yIHJldGlyaW5nKS4gKi8KPiAtCXdoaWxlICgocmIgPSByYl9maXJzdF9j YWNoZWQoJmVuZ2luZS0+YWN0aXZlLnF1ZXVlKSkpIHsKPiAtCQlzdHJ1Y3QgaTkxNV9wcmlvbGlz dCAqcCA9IHRvX3ByaW9saXN0KHJiKTsKPiAtCj4gLQkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVz dF9jb25zdW1lKHJxLCBybiwgcCkgewo+ICsJZm9yX2VhY2hfcHJpb2xpc3QocCwgJmVuZ2luZS0+ YWN0aXZlLnF1ZXVlKSB7Cj4gKwkJcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9zYWZlKHJxLCBy biwgcCkgewo+ICAgCQkJbGlzdF9kZWxfaW5pdCgmcnEtPnNjaGVkLmxpbmspOwo+ICAgCQkJX19p OTE1X3JlcXVlc3Rfc3VibWl0KHJxKTsKPiAgIAkJCWRtYV9mZW5jZV9zZXRfZXJyb3IoJnJxLT5m ZW5jZSwgLUVJTyk7Cj4gICAJCQlpOTE1X3JlcXVlc3RfbWFya19jb21wbGV0ZShycSk7Cj4gICAJ CX0KPiAtCj4gLQkJcmJfZXJhc2VfY2FjaGVkKCZwLT5ub2RlLCAmZW5naW5lLT5hY3RpdmUucXVl dWUpOwo+IC0JCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKPiArCQlpOTE1X3ByaW9saXN0X2FkdmFu Y2UoJmVuZ2luZS0+YWN0aXZlLnF1ZXVlLCBwKTsKPiAgIAl9Cj4gICAJR0VNX0JVR19PTighaTkx NV9zY2hlZF9pc19pZGxlKCZlbmdpbmUtPmFjdGl2ZSkpOwo+ICAgCj4gICAJLyogUmVtYWluaW5n IF91bnJlYWR5XyByZXF1ZXN0cyB3aWxsIGJlIG5vcCdlZCB3aGVuIHN1Ym1pdHRlZCAqLwo+ICAg Cj4gICAJZXhlY2xpc3RzLT5xdWV1ZV9wcmlvcml0eV9oaW50ID0gSU5UX01JTjsKPiAtCWVuZ2lu ZS0+YWN0aXZlLnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7Cj4gICAKPiAgIAlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZlbmdpbmUtPmFjdGl2ZS5sb2NrLCBmbGFncyk7Cj4gICB9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3RfdHlwZXMuaAo+IGluZGV4IGJjMmZhODRmOThhOC4u MTIwMGMzZGY2YTRhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJp b2xpc3RfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcHJpb2xpc3Rf dHlwZXMuaAo+IEBAIC0zOCwxMCArMzgsMzYgQEAgZW51bSB7Cj4gICAjZGVmaW5lIEk5MTVfUFJJ T1JJVFlfVU5QUkVFTVBUQUJMRSBJTlRfTUFYCj4gICAjZGVmaW5lIEk5MTVfUFJJT1JJVFlfQkFS UklFUiAoSTkxNV9QUklPUklUWV9VTlBSRUVNUFRBQkxFIC0gMSkKPiAgIAo+ICsjaWZkZWYgQ09O RklHXzY0QklUCj4gKyNkZWZpbmUgSTkxNV9QUklPTElTVF9IRUlHSFQgMTIKPiArI2Vsc2UKPiAr I2RlZmluZSBJOTE1X1BSSU9MSVNUX0hFSUdIVCAxMQo+ICsjZW5kaWYKPiArCj4gICBzdHJ1Y3Qg aTkxNV9wcmlvbGlzdCB7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCByZXF1ZXN0czsKPiAtCXN0cnVj dCByYl9ub2RlIG5vZGU7Cj4gICAJaW50IHByaW9yaXR5Owo+ICsKPiArCWludCBsZXZlbDsKPiAr CXN0cnVjdCBpOTE1X3ByaW9saXN0ICpuZXh0W0k5MTVfUFJJT0xJU1RfSEVJR0hUXTsKPiAgIH07 Cj4gICAKPiArc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCB7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlv bGlzdCBzZW50aW5lbDsKPiArCXUzMiBwcm5nOwo+ICt9Owo+ICsKPiArI2RlZmluZSBpOTE1X3By aW9saXN0X2lzX2VtcHR5KHJvb3QpICgocm9vdCktPnNlbnRpbmVsLmxldmVsIDwgMCkKPiArCj4g KyNkZWZpbmUgZm9yX2VhY2hfcHJpb2xpc3QocCwgcm9vdCkgXAo+ICsJZm9yICgocCkgPSAocm9v dCktPnNlbnRpbmVsLm5leHRbMF07IFwKPiArCSAgICAgKHApICE9ICYocm9vdCktPnNlbnRpbmVs OyBcCj4gKwkgICAgIChwKSA9IChwKS0+bmV4dFswXSkKPiArCj4gKyNkZWZpbmUgcHJpb2xpc3Rf Zm9yX2VhY2hfcmVxdWVzdChpdCwgcGxpc3QpIFwKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoaXQs ICYocGxpc3QpLT5yZXF1ZXN0cywgc2NoZWQubGluaykKPiArCj4gKyNkZWZpbmUgcHJpb2xpc3Rf Zm9yX2VhY2hfcmVxdWVzdF9zYWZlKGl0LCBuLCBwbGlzdCkgXAo+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeV9zYWZlKGl0LCBuLCAmKHBsaXN0KS0+cmVxdWVzdHMsIHNjaGVkLmxpbmspCj4gKwo+ICAg I2VuZGlmIC8qIF9JOTE1X1BSSU9MSVNUX1RZUEVTX0hfICovCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3NjaGVkdWxlci5jCj4gaW5kZXggYTNlZTA2Y2I2NmQ3Li43NDAwMGQzZWViYjEgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKPiBAQCAtNCw3ICs0LDkgQEAKPiAg ICAqIENvcHlyaWdodCDCqSAyMDE4IEludGVsIENvcnBvcmF0aW9uCj4gICAgKi8KPiAgIAo+ICsj aW5jbHVkZSA8bGludXgvYml0b3BzLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KPiAr I2luY2x1ZGUgPGxpbnV4L3ByYW5kb20uaD4KPiAgIAo+ICAgI2luY2x1ZGUgImd0L2ludGVsX3Jp bmcuaCIKPiAgICNpbmNsdWRlICJndC9pbnRlbF9scmNfcmVnLmgiCj4gQEAgLTkxLDE1ICs5Mywy NCBAQCBzdGF0aWMgdm9pZCBpOTE1X3NjaGVkX2luaXRfaXBpKHN0cnVjdCBpOTE1X3NjaGVkX2lw aSAqaXBpKQo+ICAgCWlwaS0+bGlzdCA9IE5VTEw7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQg aW5pdF9wcmlvbGlzdChzdHJ1Y3QgaTkxNV9wcmlvbGlzdF9yb290ICpjb25zdCByb290KQo+ICt7 Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGwgPSAmcm9vdC0+c2VudGluZWw7Cj4gKwo+ICsJ bWVtc2V0X3AoKHZvaWQgKiopcGwtPm5leHQsIHBsLCBBUlJBWV9TSVpFKHBsLT5uZXh0KSk7Cj4g KwlwbC0+cHJpb3JpdHkgPSBJTlRfTUlOOwo+ICsJcGwtPmxldmVsID0gLTE7Cj4gK30KPiArCj4g ICB2b2lkIGk5MTVfc2NoZWRfaW5pdF9lbmdpbmUoc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpz ZSwKPiAgIAkJCSAgICB1bnNpZ25lZCBpbnQgc3ViY2xhc3MpCj4gICB7Cj4gICAJc3Bpbl9sb2Nr X2luaXQoJnNlLT5sb2NrKTsKPiAgIAlsb2NrZGVwX3NldF9zdWJjbGFzcygmc2UtPmxvY2ssIHN1 YmNsYXNzKTsKPiAgIAo+ICsJaW5pdF9wcmlvbGlzdCgmc2UtPnF1ZXVlKTsKPiAgIAlJTklUX0xJ U1RfSEVBRCgmc2UtPnJlcXVlc3RzKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmc2UtPmhvbGQpOwo+ IC0Jc2UtPnF1ZXVlID0gUkJfUk9PVF9DQUNIRUQ7Cj4gICAKPiAgIAlpOTE1X3NjaGVkX2luaXRf aXBpKCZzZS0+aXBpKTsKPiAgIAo+IEBAIC0xMTYsOCArMTI3LDU3IEBAIHZvaWQgaTkxNV9zY2hl ZF9pbml0X2VuZ2luZShzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKnNlLAo+ICAgI2VuZGlmCj4g ICB9Cj4gICAKPiArX19tYXliZV91bnVzZWQgc3RhdGljIGJvb2wgcHJpb2xpc3RfaWRsZShzdHJ1 Y3QgaTkxNV9wcmlvbGlzdF9yb290ICpyb290KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlz dCAqcGwgPSAmcm9vdC0+c2VudGluZWw7Cj4gKwlpbnQgbHZsOwo+ICsKPiArCWZvciAobHZsID0g MDsgbHZsIDwgQVJSQVlfU0laRShwbC0+bmV4dCk7IGx2bCsrKSB7Cj4gKwkJaWYgKHBsLT5uZXh0 W2x2bF0gIT0gcGwpIHsKPiArCQkJR0VNX1RSQUNFX0VSUigicm9vdFslZF0gaXMgbm90IGVtcHR5 XG4iLCBsdmwpOwo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWlmIChw bC0+bGV2ZWwgIT0gLTEpIHsKPiArCQlHRU1fVFJBQ0VfRVJSKCJyb290IGlzIG5vdCBjbGVhcjog JWRcbiIsIHBsLT5sZXZlbCk7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsKPiArCXJldHVy biB0cnVlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwbF9wdXNoKHN0cnVjdCBpOTE1X3ByaW9s aXN0ICpwbCwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKPiArewo+ICsJcGwtPnJlcXVlc3RzLm5l eHQgPSBoZWFkLT5uZXh0Owo+ICsJaGVhZC0+bmV4dCA9ICZwbC0+cmVxdWVzdHM7Cj4gK30KPiAr Cj4gK3N0YXRpYyBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGxfcG9wKHN0cnVjdCBsaXN0X2hlYWQg KmhlYWQpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbDsKPiArCj4gKwlwbCA9IGNv bnRhaW5lcl9vZihoZWFkLT5uZXh0LCB0eXBlb2YoKnBsKSwgcmVxdWVzdHMpOwo+ICsJaGVhZC0+ bmV4dCA9IHBsLT5yZXF1ZXN0cy5uZXh0Owo+ICsKPiArCXJldHVybiBwbDsKPiArfQo+ICsKPiAr c3RhdGljIGJvb2wgcGxfZW1wdHkoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKPiArewo+ICsJcmV0 dXJuICFoZWFkLT5uZXh0Owo+ICt9Cj4gKwo+ICAgdm9pZCBpOTE1X3NjaGVkX3BhcmtfZW5naW5l KHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2UpCj4gICB7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlv bGlzdF9yb290ICpyb290ID0gJnNlLT5xdWV1ZTsKPiArCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3Qg PSAmcm9vdC0+c2VudGluZWwucmVxdWVzdHM7Cj4gKwo+ICsJR0VNX0JVR19PTighcHJpb2xpc3Rf aWRsZShyb290KSk7Cj4gKwo+ICsJd2hpbGUgKCFwbF9lbXB0eShsaXN0KSkKPiArCQlrbWVtX2Nh Y2hlX2ZyZWUoZ2xvYmFsLnNsYWJfcHJpb3JpdGllcywgcGxfcG9wKGxpc3QpKTsKPiArCj4gICAJ R0VNX0JVR19PTighaTkxNV9zY2hlZF9pc19pZGxlKHNlKSk7Cj4gICAJc2UtPm5vX3ByaW9saXN0 ID0gZmFsc2U7Cj4gICB9Cj4gQEAgLTE4Myw3MSArMjQzLDU1IEBAIHN0YXRpYyBpbmxpbmUgYm9v bCBub2RlX3NpZ25hbGVkKGNvbnN0IHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUpCj4gICAJ cmV0dXJuIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQobm9kZV90b19yZXF1ZXN0KG5vZGUpKTsKPiAg IH0KPiAgIAo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X3ByaW9saXN0ICp0b19wcmlvbGlz dChzdHJ1Y3QgcmJfbm9kZSAqcmIpCj4gK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHJhbmRv bV9sZXZlbChzdHJ1Y3QgaTkxNV9wcmlvbGlzdF9yb290ICpyb290KQo+ICAgewo+IC0JcmV0dXJu IHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCwgbm9kZSk7Cj4gLX0KPiAtCj4gLXN0 YXRpYyB2b2lkIGFzc2VydF9wcmlvbGlzdHMoc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICogY29u c3Qgc2UpCj4gLXsKPiAtCXN0cnVjdCByYl9ub2RlICpyYjsKPiAtCWxvbmcgbGFzdF9wcmlvOwo+ IC0KPiAtCWlmICghSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfREVCVUdfR0VNKSkKPiAtCQly ZXR1cm47Cj4gLQo+IC0JR0VNX0JVR19PTihyYl9maXJzdF9jYWNoZWQoJnNlLT5xdWV1ZSkgIT0K PiAtCQkgICByYl9maXJzdCgmc2UtPnF1ZXVlLnJiX3Jvb3QpKTsKPiAtCj4gLQlsYXN0X3ByaW8g PSBJTlRfTUFYOwo+IC0JZm9yIChyYiA9IHJiX2ZpcnN0X2NhY2hlZCgmc2UtPnF1ZXVlKTsgcmI7 IHJiID0gcmJfbmV4dChyYikpIHsKPiAtCQljb25zdCBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9 IHRvX3ByaW9saXN0KHJiKTsKPiAtCj4gLQkJR0VNX0JVR19PTihwLT5wcmlvcml0eSA+IGxhc3Rf cHJpbyk7Cj4gLQkJbGFzdF9wcmlvID0gcC0+cHJpb3JpdHk7Cj4gLQl9Cj4gKwlyb290LT5wcm5n ID0gbmV4dF9wc2V1ZG9fcmFuZG9tMzIocm9vdC0+cHJuZyk7Cj4gKwlyZXR1cm4gIF9fZmZzKHJv b3QtPnBybmcpIC8gMjsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHN0cnVjdCBsaXN0X2hlYWQgKgo+ ICAgbG9va3VwX3ByaW9saXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHBy aW8pCj4gICB7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqdXBkYXRlW0k5MTVfUFJJT0xJU1Rf SEVJR0hUXTsKPiAgIAlzdHJ1Y3QgaTkxNV9zY2hlZF9lbmdpbmUgKiBjb25zdCBzZSA9ICZlbmdp bmUtPmFjdGl2ZTsKPiAtCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwOwo+IC0Jc3RydWN0IHJiX25v ZGUgKipwYXJlbnQsICpyYjsKPiAtCWJvb2wgZmlyc3QgPSB0cnVlOwo+IC0KPiAtCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmVuZ2luZS0+YWN0aXZlLmxvY2spOwo+IC0JYXNzZXJ0X3ByaW9saXN0cyhz ZSk7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdF9yb290ICpyb290ID0gJnNlLT5xdWV1ZTsKPiAr CXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbCwgKnRtcDsKPiArCWludCBsdmw7Cj4gICAKPiArCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJnNlLT5sb2NrKTsKPiAgIAlpZiAodW5saWtlbHkoc2UtPm5vX3By aW9saXN0KSkKPiAgIAkJcHJpbyA9IEk5MTVfUFJJT1JJVFlfTk9STUFMOwo+ICAgCj4gKwlmb3Jf ZWFjaF9wcmlvbGlzdChwbCwgcm9vdCkgeyAvKiByZWN5Y2xlIGFueSBlbXB0eSBlbGVtZW50cyBi ZWZvcmUgdXMgKi8KPiArCQlpZiAocGwtPnByaW9yaXR5ID49IHByaW8gfHwgIWxpc3RfZW1wdHko JnBsLT5yZXF1ZXN0cykpCj4gKwkJCWJyZWFrOwo+ICsKPiArCQlpOTE1X3ByaW9saXN0X2FkdmFu Y2Uocm9vdCwgcGwpOwo+ICsJfQo+ICsKPiAgIGZpbmRfcHJpb2xpc3Q6Cj4gLQkvKiBtb3N0IHBv c2l0aXZlIHByaW9yaXR5IGlzIHNjaGVkdWxlZCBmaXJzdCwgZXF1YWwgcHJpb3JpdGllcyBmaWZv ICovCj4gLQlyYiA9IE5VTEw7Cj4gLQlwYXJlbnQgPSAmc2UtPnF1ZXVlLnJiX3Jvb3QucmJfbm9k ZTsKPiAtCXdoaWxlICgqcGFyZW50KSB7Cj4gLQkJcmIgPSAqcGFyZW50Owo+IC0JCXAgPSB0b19w cmlvbGlzdChyYik7Cj4gLQkJaWYgKHByaW8gPiBwLT5wcmlvcml0eSkgewo+IC0JCQlwYXJlbnQg PSAmcmItPnJiX2xlZnQ7Cj4gLQkJfSBlbHNlIGlmIChwcmlvIDwgcC0+cHJpb3JpdHkpIHsKPiAt CQkJcGFyZW50ID0gJnJiLT5yYl9yaWdodDsKPiAtCQkJZmlyc3QgPSBmYWxzZTsKPiAtCQl9IGVs c2Ugewo+IC0JCQlyZXR1cm4gJnAtPnJlcXVlc3RzOwo+IC0JCX0KPiArCXBsID0gJnJvb3QtPnNl bnRpbmVsOwo+ICsJbHZsID0gcGwtPmxldmVsOwo+ICsJd2hpbGUgKGx2bCA+PSAwKSB7Cj4gKwkJ d2hpbGUgKHRtcCA9IHBsLT5uZXh0W2x2bF0sIHRtcC0+cHJpb3JpdHkgPj0gcHJpbykKPiArCQkJ cGwgPSB0bXA7Cj4gKwkJaWYgKHBsLT5wcmlvcml0eSA9PSBwcmlvKQo+ICsJCQlnb3RvIG91dDsK PiArCQl1cGRhdGVbbHZsLS1dID0gcGw7Cj4gICAJfQo+ICAgCj4gICAJaWYgKHByaW8gPT0gSTkx NV9QUklPUklUWV9OT1JNQUwpIHsKPiAtCQlwID0gJnNlLT5kZWZhdWx0X3ByaW9saXN0Owo+ICsJ CXBsID0gJnNlLT5kZWZhdWx0X3ByaW9saXN0Owo+ICsJfSBlbHNlIGlmICghcGxfZW1wdHkoJnJv b3QtPnNlbnRpbmVsLnJlcXVlc3RzKSkgewo+ICsJCXBsID0gcGxfcG9wKCZyb290LT5zZW50aW5l bC5yZXF1ZXN0cyk7Cj4gICAJfSBlbHNlIHsKPiAtCQlwID0ga21lbV9jYWNoZV9hbGxvYyhnbG9i YWwuc2xhYl9wcmlvcml0aWVzLCBHRlBfQVRPTUlDKTsKPiArCQlwbCA9IGttZW1fY2FjaGVfYWxs b2MoZ2xvYmFsLnNsYWJfcHJpb3JpdGllcywgR0ZQX0FUT01JQyk7Cj4gICAJCS8qIENvbnZlcnQg YW4gYWxsb2NhdGlvbiBmYWlsdXJlIHRvIGEgcHJpb3JpdHkgYnVtcCAqLwo+IC0JCWlmICh1bmxp a2VseSghcCkpIHsKPiArCQlpZiAodW5saWtlbHkoIXBsKSkgewo+ICAgCQkJcHJpbyA9IEk5MTVf UFJJT1JJVFlfTk9STUFMOyAvKiByZWN1cnNlcyBqdXN0IG9uY2UgKi8KPiAgIAo+IC0JCQkvKiBU byBtYWludGFpbiBvcmRlcmluZyB3aXRoIGFsbCByZW5kZXJpbmcsIGFmdGVyIGFuCj4gKwkJCS8q Cj4gKwkJCSAqIFRvIG1haW50YWluIG9yZGVyaW5nIHdpdGggYWxsIHJlbmRlcmluZywgYWZ0ZXIg YW4KPiAgIAkJCSAqIGFsbG9jYXRpb24gZmFpbHVyZSB3ZSBoYXZlIHRvIGRpc2FibGUgYWxsIHNj aGVkdWxpbmcuCj4gICAJCQkgKiBSZXF1ZXN0cyB3aWxsIHRoZW4gYmUgZXhlY3V0ZWQgaW4gZmlm bywgYW5kIHNjaGVkdWxlCj4gICAJCQkgKiB3aWxsIGVuc3VyZSB0aGF0IGRlcGVuZGVuY2llcyBh cmUgZW1pdHRlZCBpbiBmaWZvLgo+IEBAIC0yNjAsMTggKzMwNCwxMDMgQEAgbG9va3VwX3ByaW9s aXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHByaW8pCj4gICAJCX0KPiAg IAl9Cj4gICAKPiAtCXAtPnByaW9yaXR5ID0gcHJpbzsKPiAtCUlOSVRfTElTVF9IRUFEKCZwLT5y ZXF1ZXN0cyk7Cj4gKwlwbC0+cHJpb3JpdHkgPSBwcmlvOwo+ICsJSU5JVF9MSVNUX0hFQUQoJnBs LT5yZXF1ZXN0cyk7Cj4gICAKPiAtCXJiX2xpbmtfbm9kZSgmcC0+bm9kZSwgcmIsIHBhcmVudCk7 Cj4gLQlyYl9pbnNlcnRfY29sb3JfY2FjaGVkKCZwLT5ub2RlLCAmc2UtPnF1ZXVlLCBmaXJzdCk7 Cj4gKwlsdmwgPSByYW5kb21fbGV2ZWwocm9vdCk7Cj4gKwlpZiAobHZsID4gcm9vdC0+c2VudGlu ZWwubGV2ZWwpIHsKPiArCQlpZiAocm9vdC0+c2VudGluZWwubGV2ZWwgPCBJOTE1X1BSSU9MSVNU X0hFSUdIVCAtIDEpIHsKPiArCQkJbHZsID0gKytyb290LT5zZW50aW5lbC5sZXZlbDsKPiArCQkJ dXBkYXRlW2x2bF0gPSAmcm9vdC0+c2VudGluZWw7Cj4gKwkJfSBlbHNlIHsKPiArCQkJbHZsID0g STkxNV9QUklPTElTVF9IRUlHSFQgLSAxOwo+ICsJCX0KPiArCX0KPiArCUdFTV9CVUdfT04obHZs IDwgMCk7Cj4gKwlHRU1fQlVHX09OKGx2bCA+PSBBUlJBWV9TSVpFKHBsLT5uZXh0KSk7Cj4gICAK PiAtCXJldHVybiAmcC0+cmVxdWVzdHM7Cj4gKwlwbC0+bGV2ZWwgPSBsdmw7Cj4gKwlkbyB7Cj4g KwkJdG1wID0gdXBkYXRlW2x2bF07Cj4gKwkJcGwtPm5leHRbbHZsXSA9IHVwZGF0ZVtsdmxdLT5u ZXh0W2x2bF07Cj4gKwkJdG1wLT5uZXh0W2x2bF0gPSBwbDsKPiArCX0gd2hpbGUgKC0tbHZsID49 IDApOwo+ICsKPiArCWlmIChJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9ERUJVR19HRU0pKSB7 Cj4gKwkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKmNoazsKPiArCj4gKwkJY2hrID0gJnJvb3QtPnNl bnRpbmVsOwo+ICsJCWx2bCA9IGNoay0+bGV2ZWw7Cj4gKwkJZG8gewo+ICsJCQl3aGlsZSAodG1w ID0gY2hrLT5uZXh0W2x2bF0sIHRtcC0+cHJpb3JpdHkgPj0gcHJpbykKPiArCQkJCWNoayA9IHRt cDsKPiArCQl9IHdoaWxlICgtLWx2bCA+PSAwKTsKPiArCj4gKwkJR0VNX0JVR19PTihjaGsgIT0g cGwpOwo+ICsJfQo+ICsKPiArb3V0Ogo+ICsJR0VNX0JVR19PTihwbCA9PSAmcm9vdC0+c2VudGlu ZWwpOwo+ICsJcmV0dXJuICZwbC0+cmVxdWVzdHM7Cj4gICB9Cj4gICAKPiAtdm9pZCBfX2k5MTVf cHJpb2xpc3RfZnJlZShzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCkKPiArc3RhdGljIHZvaWQgcmVt b3ZlX3ByaW9saXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArCQkJICAgIHN0 cnVjdCBsaXN0X2hlYWQgKnBsaXN0KQo+ICAgewo+IC0Ja21lbV9jYWNoZV9mcmVlKGdsb2JhbC5z bGFiX3ByaW9yaXRpZXMsIHApOwo+ICsJc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICogY29uc3Qg c2UgPSAmZW5naW5lLT5hY3RpdmU7Cj4gKwlzdHJ1Y3QgaTkxNV9wcmlvbGlzdF9yb290ICpyb290 ID0gJnNlLT5xdWV1ZTsKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwbCwgKnRtcDsKPiArCXN0 cnVjdCBpOTE1X3ByaW9saXN0ICpvbGQgPQo+ICsJCWNvbnRhaW5lcl9vZihwbGlzdCwgc3RydWN0 IGk5MTVfcHJpb2xpc3QsIHJlcXVlc3RzKTsKPiArCWludCBwcmlvID0gb2xkLT5wcmlvcml0eTsK PiArCWludCBsdmw7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmc2UtPmxvY2spOwo+ICsJ R0VNX0JVR19PTighbGlzdF9lbXB0eShwbGlzdCkpOwo+ICsKPiArCXBsID0gJnJvb3QtPnNlbnRp bmVsOwo+ICsJbHZsID0gcGwtPmxldmVsOwo+ICsJR0VNX0JVR19PTihsdmwgPCAwKTsKPiArCj4g KwlpZiAocHJpbyAhPSBJOTE1X1BSSU9SSVRZX05PUk1BTCkKPiArCQlwbF9wdXNoKG9sZCwgJnBs LT5yZXF1ZXN0cyk7Cj4gKwo+ICsJZG8gewo+ICsJCXdoaWxlICh0bXAgPSBwbC0+bmV4dFtsdmxd LCB0bXAtPnByaW9yaXR5ID4gcHJpbykKPiArCQkJcGwgPSB0bXA7Cj4gKwkJaWYgKGx2bCA8PSBv bGQtPmxldmVsKSB7Cj4gKwkJCXBsLT5uZXh0W2x2bF0gPSBvbGQtPm5leHRbbHZsXTsKPiArCQkJ aWYgKHBsID09ICZyb290LT5zZW50aW5lbCAmJiBvbGQtPm5leHRbbHZsXSA9PSBwbCkgewo+ICsJ CQkJR0VNX0JVR19PTihwbC0+bGV2ZWwgIT0gbHZsKTsKPiArCQkJCXBsLT5sZXZlbC0tOwo+ICsJ CQl9Cj4gKwkJfQo+ICsJfSB3aGlsZSAoLS1sdmwgPj0gMCk7Cj4gKwlHRU1fQlVHX09OKHRtcCAh PSBvbGQpOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfcHJpb2xpc3RfYWR2YW5jZShzdHJ1Y3QgaTkx NV9wcmlvbGlzdF9yb290ICpyb290LAo+ICsJCQkgICBzdHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcGwp Cj4gK3sKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0ICogY29uc3QgcyA9ICZyb290LT5zZW50aW5l bDsKPiArCWludCBsdmw7Cj4gKwo+ICsJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcGwtPnJlcXVl c3RzKSk7Cj4gKwlHRU1fQlVHX09OKHBsICE9IHMtPm5leHRbMF0pOwo+ICsJR0VNX0JVR19PTihw bCA9PSBzKTsKPiArCj4gKwlpZiAocGwtPnByaW9yaXR5ICE9IEk5MTVfUFJJT1JJVFlfTk9STUFM KQo+ICsJCXBsX3B1c2gocGwsICZzLT5yZXF1ZXN0cyk7Cj4gKwo+ICsJbHZsID0gcGwtPmxldmVs Owo+ICsJR0VNX0JVR19PTihsdmwgPCAwKTsKPiArCWRvIHsKPiArCQlzLT5uZXh0W2x2bF0gPSBw bC0+bmV4dFtsdmxdOwo+ICsJCWlmIChwbC0+bmV4dFtsdmxdID09IHMpIHsKPiArCQkJR0VNX0JV R19PTihzLT5sZXZlbCAhPSBsdmwpOwo+ICsJCQlzLT5sZXZlbC0tOwo+ICsJCX0KPiArCX0gd2hp bGUgKC0tbHZsID49IDApOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgc3RydWN0IGk5MTVfcmVxdWVz dCAqCj4gQEAgLTQyMCw4ICs1NDksMTMgQEAgc3RhdGljIHZvaWQgX19pOTE1X3JlcXVlc3Rfc2V0 X3ByaW9yaXR5KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgcHJpbykKPiAgIAkJCWNvbnRp bnVlOwo+ICAgCj4gICAJCUdFTV9CVUdfT04ocnEtPmVuZ2luZSAhPSBlbmdpbmUpOwo+IC0JCWlm IChpOTE1X3JlcXVlc3RfaW5fcHJpb3JpdHlfcXVldWUocnEpKQo+ICsJCWlmIChpOTE1X3JlcXVl c3RfaW5fcHJpb3JpdHlfcXVldWUocnEpKSB7Cj4gKwkJCXN0cnVjdCBsaXN0X2hlYWQgKnByZXYg PSBycS0+c2NoZWQubGluay5wcmV2Owo+ICsKPiAgIAkJCWxpc3RfbW92ZV90YWlsKCZycS0+c2No ZWQubGluaywgcGxpc3QpOwo+ICsJCQlpZiAobGlzdF9lbXB0eShwcmV2KSkKPiArCQkJCXJlbW92 ZV9wcmlvbGlzdChlbmdpbmUsIHByZXYpOwo+ICsJCX0KPiAgIAo+ICAgCQkvKiBEZWZlciAodGFz a2xldCkgc3VibWlzc2lvbiB1bnRpbCBhZnRlciBhbGwgdXBkYXRlcy4gKi8KPiAgIAkJa2lja19z dWJtaXNzaW9uKGVuZ2luZSwgcnEsIHByaW8pOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hl ZHVsZXIuaAo+IGluZGV4IDBhYjQ3Y2JmMGU5Yy4uYmNhODlhNThkOTUzIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oCj4gQEAgLTE2LDEyICsxNiw2IEBACj4gICAKPiAg IHN0cnVjdCBkcm1fcHJpbnRlcjsKPiAgIAo+IC0jZGVmaW5lIHByaW9saXN0X2Zvcl9lYWNoX3Jl cXVlc3QoaXQsIHBsaXN0KSBcCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGl0LCAmKHBsaXN0KS0+ cmVxdWVzdHMsIHNjaGVkLmxpbmspCj4gLQo+IC0jZGVmaW5lIHByaW9saXN0X2Zvcl9lYWNoX3Jl cXVlc3RfY29uc3VtZShpdCwgbiwgcGxpc3QpIFwKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2Fm ZShpdCwgbiwgJihwbGlzdCktPnJlcXVlc3RzLCBzY2hlZC5saW5rKQo+IC0KPiAgIHZvaWQgaTkx NV9zY2hlZF9ub2RlX2luaXQoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSk7Cj4gICB2b2lk IGk5MTVfc2NoZWRfbm9kZV9yZWluaXQoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSk7Cj4g ICAKPiBAQCAtNjksNyArNjMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9wcmlvbGlzdF9m cmVlKHN0cnVjdCBpOTE1X3ByaW9saXN0ICpwKQo+ICAgCj4gICBzdGF0aWMgaW5saW5lIGJvb2wg aTkxNV9zY2hlZF9pc19pZGxlKGNvbnN0IHN0cnVjdCBpOTE1X3NjaGVkX2VuZ2luZSAqc2UpCj4g ICB7Cj4gLQlyZXR1cm4gUkJfRU1QVFlfUk9PVCgmc2UtPnF1ZXVlLnJiX3Jvb3QpOwo+ICsJcmV0 dXJuIGk5MTVfcHJpb2xpc3RfaXNfZW1wdHkoJnNlLT5xdWV1ZSk7Cj4gICB9Cj4gICAKPiAgIHN0 YXRpYyBpbmxpbmUgYm9vbAo+IEBAIC05OSw2ICs5Myw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBp OTE1X3NjaGVkX2tpY2soc3RydWN0IGk5MTVfc2NoZWRfZW5naW5lICpzZSkKPiAgIAl0YXNrbGV0 X2hpX3NjaGVkdWxlKCZzZS0+dGFza2xldCk7Cj4gICB9Cj4gICAKPiArdm9pZCBpOTE1X3ByaW9s aXN0X2FkdmFuY2Uoc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCAqcm9vdCwKPiArCQkJICAgc3Ry dWN0IGk5MTVfcHJpb2xpc3QgKm9sZCk7Cj4gKwo+ICAgdm9pZCBpOTE1X3JlcXVlc3Rfc2hvd193 aXRoX3NjaGVkdWxlKHN0cnVjdCBkcm1fcHJpbnRlciAqbSwKPiAgIAkJCQkgICAgIGNvbnN0IHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+ICAgCQkJCSAgICAgY29uc3QgY2hhciAqcHJlZml4LAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlcl90eXBlcy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXJfdHlwZXMuaAo+IGluZGV4IGY2 NjhjNjgwZDI5MC4uZTY0NzUwYmU0ZTc3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfc2NoZWR1bGVyX3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3NjaGVkdWxlcl90eXBlcy5oCj4gQEAgLTg5LDcgKzg5LDcgQEAgc3RydWN0IGk5MTVfc2No ZWRfZW5naW5lIHsKPiAgIAkvKioKPiAgIAkgKiBAcXVldWU6IHF1ZXVlIG9mIHJlcXVlc3RzLCBp biBwcmlvcml0eSBsaXN0cwo+ICAgCSAqLwo+IC0Jc3RydWN0IHJiX3Jvb3RfY2FjaGVkIHF1ZXVl Owo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3Rfcm9vdCBxdWV1ZTsKPiAgIAo+ICAgCXN0cnVjdCBp OTE1X3NjaGVkX2lwaSBpcGk7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmgKPiBpbmRleCAzZGIzNGQzZWVhNTguLjk0 NmM5MzQ0MWMxZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aTkxNV9tb2NrX3NlbGZ0ZXN0cy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaAo+IEBAIC0yNSw2ICsyNSw3IEBAIHNlbGZ0ZXN0KHJp bmcsIGludGVsX3JpbmdfbW9ja19zZWxmdGVzdHMpCj4gICBzZWxmdGVzdChlbmdpbmUsIGludGVs X2VuZ2luZV9jc19tb2NrX3NlbGZ0ZXN0cykKPiAgIHNlbGZ0ZXN0KHRpbWVsaW5lcywgaW50ZWxf dGltZWxpbmVfbW9ja19zZWxmdGVzdHMpCj4gICBzZWxmdGVzdChyZXF1ZXN0cywgaTkxNV9yZXF1 ZXN0X21vY2tfc2VsZnRlc3RzKQo+ICtzZWxmdGVzdChzY2hlZHVsZXIsIGk5MTVfc2NoZWR1bGVy X21vY2tfc2VsZnRlc3RzKQo+ICAgc2VsZnRlc3Qob2JqZWN0cywgaTkxNV9nZW1fb2JqZWN0X21v Y2tfc2VsZnRlc3RzKQo+ICAgc2VsZnRlc3QocGh5cywgaTkxNV9nZW1fcGh5c19tb2NrX3NlbGZ0 ZXN0cykKPiAgIHNlbGZ0ZXN0KGRtYWJ1ZiwgaTkxNV9nZW1fZG1hYnVmX21vY2tfc2VsZnRlc3Rz KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zY2hl ZHVsZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3NjaGVkdWxlci5j Cj4gaW5kZXggZGU0NGE2NjIxMGI3Li5kZTViMTQ0MzEyOWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfc2NoZWR1bGVyLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9zY2hlZHVsZXIuYwo+IEBAIC0xMiw2ICsxMiw1 NCBAQAo+ICAgI2luY2x1ZGUgInNlbGZ0ZXN0cy9pZ3Rfc3Bpbm5lci5oIgo+ICAgI2luY2x1ZGUg InNlbGZ0ZXN0cy9pOTE1X3JhbmRvbS5oIgo+ICAgCj4gK3N0YXRpYyBpbnQgbW9ja19za2lwbGlz dF9sZXZlbHModm9pZCAqZHVtbXkpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3ByaW9saXN0X3Jvb3Qg cm9vdCA9IHt9Owo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnBsID0gJnJvb3Quc2VudGluZWw7 Cj4gKwlJR1RfVElNRU9VVChlbmRfdGltZSk7Cj4gKwl1bnNpZ25lZCBsb25nIHRvdGFsOwo+ICsJ aW50IGNvdW50LCBsdmw7Cj4gKwo+ICsJdG90YWwgPSAwOwo+ICsJZG8gewo+ICsJCWZvciAoY291 bnQgPSAwOyBjb3VudCA8IDE2Mzg0OyBjb3VudCsrKSB7Cj4gKwkJCWx2bCA9IHJhbmRvbV9sZXZl bCgmcm9vdCk7Cj4gKwkJCWlmIChsdmwgPiBwbC0+bGV2ZWwpIHsKPiArCQkJCWlmIChsdmwgPCBJ OTE1X1BSSU9MSVNUX0hFSUdIVCAtIDEpCj4gKwkJCQkJbHZsID0gKytwbC0+bGV2ZWw7Cj4gKwkJ CQllbHNlCj4gKwkJCQkJbHZsID0gSTkxNV9QUklPTElTVF9IRUlHSFQgLSAxOwo+ICsJCQl9Cj4g Kwo+ICsJCQlwbC0+bmV4dFtsdmxdID0gcHRyX2luYyhwbC0+bmV4dFtsdmxdKTsKPiArCQl9Cj4g KwkJdG90YWwgKz0gY291bnQ7Cj4gKwl9IHdoaWxlICghX19pZ3RfdGltZW91dChlbmRfdGltZSwg TlVMTCkpOwo+ICsKPiArCXByX2luZm8oIlRvdGFsICU5bHVcbiIsIHRvdGFsKTsKPiArCWZvciAo bHZsID0gMDsgbHZsIDw9IHBsLT5sZXZlbDsgbHZsKyspIHsKPiArCQlpbnQgeCA9IGlsb2cyKCh1 bnNpZ25lZCBsb25nKXBsLT5uZXh0W2x2bF0pOwo+ICsJCWNoYXIgcm93WzgwXTsKPiArCj4gKwkJ bWVtc2V0KHJvdywgJyonLCB4KTsKPiArCQlyb3dbeF0gPSAnXDAnOwo+ICsKPiArCQlwcl9pbmZv KCIgWyUyZF0gJTlsdSAlc1xuIiwKPiArCQkJbHZsLCAodW5zaWduZWQgbG9uZylwbC0+bmV4dFts dmxdLCByb3cpOwo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtpbnQgaTkxNV9z Y2hlZHVsZXJfbW9ja19zZWxmdGVzdHModm9pZCkKPiArewo+ICsJc3RhdGljIGNvbnN0IHN0cnVj dCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKPiArCQlTVUJURVNUKG1vY2tfc2tpcGxpc3RfbGV2 ZWxzKSwKPiArCX07Cj4gKwo+ICsJcmV0dXJuIGk5MTVfc3VidGVzdHModGVzdHMsIE5VTEwpOwo+ ICt9Cj4gKwo+ICAgc3RhdGljIHZvaWQgc2NoZWR1bGluZ19kaXNhYmxlKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAllbmdpbmUtPnByb3BzLnByZWVtcHRfdGltZW91 dF9tcyA9IDA7Cj4gQEAgLTgwLDkgKzEyOCw5IEBAIHN0YXRpYyBpbnQgYWxsX2VuZ2luZXMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICBzdGF0aWMgYm9vbCBjaGVja19jb250ZXh0 X29yZGVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAl1NjQgbGFz dF9zZXFubywgbGFzdF9jb250ZXh0Owo+ICsJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnA7Cj4gICAJ dW5zaWduZWQgbG9uZyBjb3VudDsKPiAgIAlib29sIHJlc3VsdCA9IGZhbHNlOwo+IC0Jc3RydWN0 IHJiX25vZGUgKnJiOwo+ICAgCWludCBsYXN0X3ByaW87Cj4gICAKPiAgIAkvKiBXZSBleHBlY3Qg dGhlIGV4ZWN1dGlvbiBvcmRlciB0byBmb2xsb3cgYXNjZW5kaW5nIGZlbmNlLWNvbnRleHQgKi8K PiBAQCAtOTIsOCArMTQwLDcgQEAgc3RhdGljIGJvb2wgY2hlY2tfY29udGV4dF9vcmRlcihzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJbGFzdF9jb250ZXh0ID0gMDsKPiAgIAls YXN0X3NlcW5vID0gMDsKPiAgIAlsYXN0X3ByaW8gPSAwOwo+IC0JZm9yIChyYiA9IHJiX2ZpcnN0 X2NhY2hlZCgmZW5naW5lLT5hY3RpdmUucXVldWUpOyByYjsgcmIgPSByYl9uZXh0KHJiKSkgewo+ IC0JCXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwID0gcmJfZW50cnkocmIsIHR5cGVvZigqcCksIG5v ZGUpOwo+ICsJZm9yX2VhY2hfcHJpb2xpc3QocCwgJmVuZ2luZS0+YWN0aXZlLnF1ZXVlKSB7Cj4g ICAJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICAgCj4gICAJCXByaW9saXN0X2Zvcl9lYWNo X3JlcXVlc3QocnEsIHApIHsKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==