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=-15.5 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,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 840E1C433E0 for ; Mon, 22 Feb 2021 01:39:12 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 01FAF64E12 for ; Mon, 22 Feb 2021 01:39:11 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 01FAF64E12 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=andestech.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=YLBRfs82oHeupiPiWCn587mVowDEHnu6pDl+ycBTJYk=; b=jatZhKS8Nua8Be3MJ0TqPtLgx 1iAUFp/Nt+AqG8Kd5XvOFWIpWFmWrP/Q2oCxuwDiEzDdElNdF1J3TYxeMBMPav3GcmXyzbzZjWwJB 88vd8menKsj4ldh/nqKbOYZiMziUf+X1/m12+O2InpVI2fCZA1pOxB/U3JG20XLAdDmEzem5kjBDd BOCu/Z+/UvXt8BMw1v7cWKNnJN7w23bnDCa73IHSKoybsx8yZByN4WXvciDQIcHYLoQH6ZIpMN6UX bU16ep3MK9IbcvNAL10hYv0HbVtvo6U4SouKNYJ5tn25zJ2C8SzC7YvgK3+pChOab75+JbaPnkQQp eNXrRp7pg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1lE0Ba-0006ke-HZ; Mon, 22 Feb 2021 01:38:54 +0000 Received: from exmail.andestech.com ([60.248.187.195] helo=ATCSQR.andestech.com) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1lE0BX-0006ir-BQ for linux-riscv@lists.infradead.org; Mon, 22 Feb 2021 01:38:53 +0000 Received: from mail.andestech.com (atcpcs16.andestech.com [10.0.1.222]) by ATCSQR.andestech.com with ESMTP id 11M1WPsm063709; Mon, 22 Feb 2021 09:32:25 +0800 (GMT-8) (envelope-from nylon7@andestech.com) Received: from andestech.com (10.0.15.65) by ATCPCS16.andestech.com (10.0.1.222) with Microsoft SMTP Server id 14.3.487.0; Mon, 22 Feb 2021 09:37:55 +0800 Date: Mon, 22 Feb 2021 09:37:55 +0800 From: Nylon Chen To: Alex Ghiti Subject: Re: [PATCH v2 1/1] riscv/kasan: add KASAN_VMALLOC support Message-ID: <20210222013754.GA7626@andestech.com> References: <2b2f3038-3e27-8763-cf78-3fbbfd2100a0@ghiti.fr> <4fa97788-157c-4059-ae3f-28ab074c5836@ghiti.fr> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) X-Originating-IP: [10.0.15.65] X-DNSRBL: X-MAIL: ATCSQR.andestech.com 11M1WPsm063709 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210221_203851_793652_D70E1F60 X-CRM114-Status: GOOD ( 42.12 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "aou@eecs.berkeley.edu" , Nick Chun-Ming =?utf-8?B?SHUo6IOh5bO76YqYKQ==?= , Alan Quey-Liang =?utf-8?B?S2FvKOmrmOmtgeiJryk=?= , "linux-kernel@vger.kernel.org" , "kasan-dev@googlegroups.com" , "nylon7717@gmail.com" , "aryabinin@virtuozzo.com" , Palmer Dabbelt , Paul Walmsley , "glider@google.com" , "linux-riscv@lists.infradead.org" , "dvyukov@google.com" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org SGkgQWxleCwgUGFsbWVyCgpTb3JyeSBJIG1pc3NlZCB0aGlzIG1lc3NhZ2UuCk9uIFN1biwgRmVi IDIxLCAyMDIxIGF0IDA5OjM4OjA0UE0gKzA4MDAsIEFsZXggR2hpdGkgd3JvdGU6Cj4gTGUgMi8x My8yMSDDoCA1OjUyIEFNLCBBbGV4IEdoaXRpIGEgw6ljcml0wqA6Cj4gPiBIaSBOeWxvbiwgUGFs bWVyLAo+ID4gCj4gPiBMZSAyLzgvMjEgw6AgMToyOCBBTSwgQWxleCBHaGl0aSBhIMOpY3JpdMKg Ogo+ID4+IEhpIE55bG9uLAo+ID4+Cj4gPj4gTGUgMS8yMi8yMSDDoCAxMDo1NiBQTSwgUGFsbWVy IERhYmJlbHQgYSDDqWNyaXTCoDoKPiA+Pj4gT24gRnJpLCAxNSBKYW4gMjAyMSAyMTo1ODozNSBQ U1QgKC0wODAwKSwgbnlsb243QGFuZGVzdGVjaC5jb20gd3JvdGU6Cj4gPj4+PiBJdCByZWZlcmVu Y2VzIHRvIHg4Ni9zMzkwIGFyY2hpdGVjdHVyZS4KPiA+Pj4+ID4+IFNvLCBpdCBkb2Vzbid0IG1h cCB0aGUgZWFybHkgc2hhZG93IHBhZ2UgdG8gY292ZXIgVk1BTExPQyBzcGFjZS4KPiA+Pj4+Cj4g Pj4+PiBQcmVwb3B1bGF0ZSB0b3AgbGV2ZWwgcGFnZSB0YWJsZSBmb3IgdGhlIHJhbmdlIHRoYXQg d291bGQgb3RoZXJ3aXNlIGJlCj4gPj4+PiBlbXB0eS4KPiA+Pj4+Cj4gPj4+PiBsb3dlciBsZXZl bHMgYXJlIGZpbGxlZCBkeW5hbWljYWxseSB1cG9uIG1lbW9yeSBhbGxvY2F0aW9uIHdoaWxlCj4g Pj4+PiBib290aW5nLgo+ID4+Cj4gPj4gSSB0aGluayB3ZSBjYW4gaW1wcm92ZSB0aGUgY2hhbmdl bG9nIGEgYml0IGhlcmUgd2l0aCBzb21ldGhpbmcgbGlrZSB0aGF0Ogo+ID4+Cj4gPj4gIktBU0FO IHZtYWxsb2Mgc3BhY2UgdXNlZCB0byBiZSBtYXBwZWQgdXNpbmcga2FzYW4gZWFybHkgc2hhZG93 IHBhZ2UuIAo+ID4+IEtBU0FOX1ZNQUxMT0MgcmVxdWlyZXMgdGhlIHRvcC1sZXZlbCBvZiB0aGUg a2VybmVsIHBhZ2UgdGFibGUgdG8gYmUgCj4gPj4gcHJvcGVybHkgcG9wdWxhdGVkLCBsb3dlciBs ZXZlbHMgYmVpbmcgZmlsbGVkIGR5bmFtaWNhbGx5IHVwb24gbWVtb3J5IAo+ID4+IGFsbG9jYXRp b24gYXQgcnVudGltZS4iCj4gPj4KPiA+Pj4+Cj4gPj4+PiBTaWduZWQtb2ZmLWJ5OiBOeWxvbiBD aGVuIDxueWxvbjdAYW5kZXN0ZWNoLmNvbT4KPiA+Pj4+IFNpZ25lZC1vZmYtYnk6IE5pY2sgSHUg PG5pY2todUBhbmRlc3RlY2guY29tPgo+ID4+Pj4gLS0tCj4gPj4+PiDCoGFyY2gvcmlzY3YvS2Nv bmZpZ8KgwqDCoMKgwqDCoMKgwqAgfMKgIDEgKwo+ID4+Pj4gwqBhcmNoL3Jpc2N2L21tL2thc2Fu X2luaXQuYyB8IDU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gPj4+ PiDCoDIgZmlsZXMgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4+ Pj4KPiA+Pj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L0tjb25maWcgYi9hcmNoL3Jpc2N2L0tj b25maWcKPiA+Pj4+IGluZGV4IDgxYjc2ZDQ0NzI1ZC4uMTVhMmM4MDg4YmJlIDEwMDY0NAo+ID4+ Pj4gLS0tIGEvYXJjaC9yaXNjdi9LY29uZmlnCj4gPj4+PiArKysgYi9hcmNoL3Jpc2N2L0tjb25m aWcKPiA+Pj4+IEBAIC01Nyw2ICs1Nyw3IEBAIGNvbmZpZyBSSVNDVgo+ID4+Pj4gwqDCoMKgwqAg c2VsZWN0IEhBVkVfQVJDSF9KVU1QX0xBQkVMCj4gPj4+PiDCoMKgwqDCoCBzZWxlY3QgSEFWRV9B UkNIX0pVTVBfTEFCRUxfUkVMQVRJVkUKPiA+Pj4+IMKgwqDCoMKgIHNlbGVjdCBIQVZFX0FSQ0hf S0FTQU4gaWYgTU1VICYmIDY0QklUCj4gPj4+PiArwqDCoMKgIHNlbGVjdCBIQVZFX0FSQ0hfS0FT QU5fVk1BTExPQyBpZiBNTVUgJiYgNjRCSVQKPiA+Pj4+IMKgwqDCoMKgIHNlbGVjdCBIQVZFX0FS Q0hfS0dEQgo+ID4+Pj4gwqDCoMKgwqAgc2VsZWN0IEhBVkVfQVJDSF9LR0RCX1FYRkVSX1BLVAo+ ID4+Pj4gwqDCoMKgwqAgc2VsZWN0IEhBVkVfQVJDSF9NTUFQX1JORF9CSVRTIGlmIE1NVQo+ID4+ Pj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jIGIvYXJjaC9yaXNjdi9t bS9rYXNhbl9pbml0LmMKPiA+Pj4+IGluZGV4IDEyZGRkMWY2YmY3MC4uNGI5MTQ5Zjk2M2QzIDEw MDY0NAo+ID4+Pj4gLS0tIGEvYXJjaC9yaXNjdi9tbS9rYXNhbl9pbml0LmMKPiA+Pj4+ICsrKyBi L2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jCj4gPj4+PiBAQCAtOSw2ICs5LDE5IEBACj4gPj4+ PiDCoCNpbmNsdWRlIDxsaW51eC9wZ3RhYmxlLmg+Cj4gPj4+PiDCoCNpbmNsdWRlIDxhc20vdGxi Zmx1c2guaD4KPiA+Pj4+IMKgI2luY2x1ZGUgPGFzbS9maXhtYXAuaD4KPiA+Pj4+ICsjaW5jbHVk ZSA8YXNtL3BnYWxsb2MuaD4KPiA+Pj4+ICsKPiA+Pj4+ICtzdGF0aWMgX19pbml0IHZvaWQgKmVh cmx5X2FsbG9jKHNpemVfdCBzaXplLCBpbnQgbm9kZSkKPiA+Pj4+ICt7Cj4gPj4+PiArwqDCoMKg IHZvaWQgKnB0ciA9IG1lbWJsb2NrX2FsbG9jX3RyeV9uaWQoc2l6ZSwgc2l6ZSwKPiA+Pj4+ICvC oMKgwqDCoMKgwqDCoCBfX3BhKE1BWF9ETUFfQUREUkVTUyksIE1FTUJMT0NLX0FMTE9DX0FDQ0VT U0lCTEUsIG5vZGUpOwo+ID4+Pj4gKwo+ID4+Pj4gK8KgwqDCoCBpZiAoIXB0cikKPiA+Pj4+ICvC oMKgwqDCoMKgwqDCoCBwYW5pYygiJXBTOiBGYWlsZWQgdG8gYWxsb2NhdGUgJXp1IGJ5dGVzIGFs aWduPSV6eCBuaWQ9JWQgCj4gPj4+PiBmcm9tPSVsbHhcbiIsCj4gPj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBfX2Z1bmNfXywgc2l6ZSwgc2l6ZSwgbm9kZSwgKHU2NClfX3BhKE1BWF9ETUFf QUREUkVTUykpOwo+ID4+Pj4gKwo+ID4+Pj4gK8KgwqDCoCByZXR1cm4gcHRyOwo+ID4+Pj4gK30K PiA+Pj4+Cj4gPj4+PiDCoGV4dGVybiBwZ2RfdCBlYXJseV9wZ19kaXJbUFRSU19QRVJfUEdEXTsK PiA+Pj4+IMKgYXNtbGlua2FnZSB2b2lkIF9faW5pdCBrYXNhbl9lYXJseV9pbml0KHZvaWQpCj4g Pj4+PiBAQCAtODMsNiArOTYsNDAgQEAgc3RhdGljIHZvaWQgX19pbml0IHBvcHVsYXRlKHZvaWQg KnN0YXJ0LCB2b2lkICplbmQpCj4gPj4+PiDCoMKgwqDCoCBtZW1zZXQoc3RhcnQsIDAsIGVuZCAt IHN0YXJ0KTsKPiA+Pj4+IMKgfQo+ID4+Pj4KPiA+Pj4+ICt2b2lkIF9faW5pdCBrYXNhbl9zaGFs bG93X3BvcHVsYXRlKHZvaWQgKnN0YXJ0LCB2b2lkICplbmQpCj4gPj4+PiArewo+ID4+Pj4gK8Kg wqDCoCB1bnNpZ25lZCBsb25nIHZhZGRyID0gKHVuc2lnbmVkIGxvbmcpc3RhcnQgJiBQQUdFX01B U0s7Cj4gPj4+PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcgdmVuZCA9IFBBR0VfQUxJR04oKHVuc2ln bmVkIGxvbmcpZW5kKTsKPiA+Pj4+ICvCoMKgwqAgdW5zaWduZWQgbG9uZyBwZm47Cj4gPj4+PiAr wqDCoMKgIGludCBpbmRleDsKPiA+Pj4+ICvCoMKgwqAgdm9pZCAqcDsKPiA+Pj4+ICvCoMKgwqAg cHVkX3QgKnB1ZF9kaXIsICpwdWRfazsKPiA+Pj4+ICvCoMKgwqAgcGdkX3QgKnBnZF9kaXIsICpw Z2RfazsKPiA+Pj4+ICvCoMKgwqAgcDRkX3QgKnA0ZF9kaXIsICpwNGRfazsKPiA+Pj4+ICsKPiA+ Pj4+ICvCoMKgwqAgd2hpbGUgKHZhZGRyIDwgdmVuZCkgewo+ID4+Pj4gK8KgwqDCoMKgwqDCoMKg IGluZGV4ID0gcGdkX2luZGV4KHZhZGRyKTsKPiA+Pj4+ICvCoMKgwqDCoMKgwqDCoCBwZm4gPSBj c3JfcmVhZChDU1JfU0FUUCkgJiBTQVRQX1BQTjsKPiA+Pgo+ID4+IEF0IHRoaXMgcG9pbnQgaW4g dGhlIGJvb3QgcHJvY2Vzcywgd2Uga25vdyB0aGF0IHdlIHVzZSBzd2FwcGVyX3BnX2RpciAKPiA+ PiBzbyBubyBuZWVkIHRvIHJlYWQgU0FUUC4KPiA+Pgo+ID4+Pj4gK8KgwqDCoMKgwqDCoMKgIHBn ZF9kaXIgPSAocGdkX3QgKilwZm5fdG9fdmlydChwZm4pICsgaW5kZXg7Cj4gPj4KPiA+PiBIZXJl LCB0aGlzIHBnZF9kaXIgYXNzaWdubWVudCBpcyBvdmVyd3JpdHRlbiAyIGxpbmVzIGJlbG93LCBz byBubyBuZWVkIAo+ID4+IGZvciBpdC4KPiA+Pgo+ID4+Pj4gK8KgwqDCoMKgwqDCoMKgIHBnZF9r ID0gaW5pdF9tbS5wZ2QgKyBpbmRleDsKPiA+Pj4+ICvCoMKgwqDCoMKgwqDCoCBwZ2RfZGlyID0g cGdkX29mZnNldF9rKHZhZGRyKTsKPiA+Pgo+ID4+IHBnZF9vZmZzZXRfayh2YWRkcikgPSBpbml0 X21tLnBnZCArIHBnZF9pbmRleCh2YWRkcikgc28gcGdkX2sgPT0gcGdkX2Rpci4KPiA+Pgo+ID4+ Pj4gK8KgwqDCoMKgwqDCoMKgIHNldF9wZ2QocGdkX2RpciwgKnBnZF9rKTsKPiA+Pj4+ICsKPiA+ Pj4+ICvCoMKgwqDCoMKgwqDCoCBwNGRfZGlyID0gcDRkX29mZnNldChwZ2RfZGlyLCB2YWRkcik7 Cj4gPj4+PiArwqDCoMKgwqDCoMKgwqAgcDRkX2vCoCA9IHA0ZF9vZmZzZXQocGdkX2ssIHZhZGRy KTsKPiA+Pj4+ICsKPiA+Pj4+ICvCoMKgwqDCoMKgwqDCoCB2YWRkciA9ICh2YWRkciArIFBVRF9T SVpFKSAmIFBVRF9NQVNLOwo+ID4+Cj4gPj4gV2h5IGRvIHlvdSBpbmNyZWFzZSB2YWRkciAqYmVm b3JlKiBwb3B1bGF0aW5nIHRoZSBmaXJzdCBvbmUgPyBBbmQgCj4gPj4gcHVkX2FkZHJfZW5kIGRv ZXMgdGhhdCBwcm9wZXJseTogaXQgcmV0dXJucyB0aGUgbmV4dCBwdWQgYWRkcmVzcyBpZiBpdCAK PiA+PiBkb2VzIG5vdCBnbyBiZXlvbmQgZW5kIGFkZHJlc3MgdG8gbWFwLgo+ID4+Cj4gPj4+PiAr wqDCoMKgwqDCoMKgwqAgcHVkX2RpciA9IHB1ZF9vZmZzZXQocDRkX2RpciwgdmFkZHIpOwo+ID4+ Pj4gK8KgwqDCoMKgwqDCoMKgIHB1ZF9rID0gcHVkX29mZnNldChwNGRfaywgdmFkZHIpOwo+ID4+ Pj4gKwo+ID4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChwdWRfcHJlc2VudCgqcHVkX2RpcikpIHsK PiA+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHAgPSBlYXJseV9hbGxvYyhQQUdFX1NJWkUs IE5VTUFfTk9fTk9ERSk7Cj4gPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwdWRfcG9wdWxh dGUoJmluaXRfbW0sIHB1ZF9kaXIsIHApOwo+ID4+Cj4gPj4gaW5pdF9tbSBpcyBub3QgbmVlZGVk IGhlcmUuCj4gPj4KPiA+Pj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4gPj4+PiArwqDCoMKgwqDCoMKg wqAgdmFkZHIgKz0gUEFHRV9TSVpFOwo+ID4+Cj4gPj4gV2h5IGRvIHlvdSBuZWVkIHRvIGFkZCBQ QUdFX1NJWkUgPyB2YWRkciBhbHJlYWR5IHBvaW50cyB0byB0aGUgbmV4dCBwdWQuCj4gPj4KPiA+ PiBJdCBzZWVtcyBsaWtlIHRoaXMgcGF0Y2ggdHJpZXMgdG8gcG9wdWxhdGUgdXNlcnNwYWNlIHBh Z2UgdGFibGUgCj4gPj4gd2hlcmVhcyBhdCB0aGlzIHBvaW50IGluIHRoZSBib290IHByb2Nlc3Ms IG9ubHkgc3dhcHBlcl9wZ19kaXIgaXMgdXNlZCAKPiA+PiBvciBhbSBJIG1pc3Npbmcgc29tZXRo aW5nID8KPiA+Pgo+ID4+IFRoYW5rcywKPiA+Pgo+ID4+IEFsZXgKPiA+IAo+ID4gSSBpbXBsZW1l bnRlZCB0aGlzIG1vcm5pbmcgYSB2ZXJzaW9uIHRoYXQgZml4ZXMgYWxsIHRoZSBjb21tZW50cyBJ IG1hZGUgCj4gPiBlYXJsaWVyLiBJIHdhcyBhYmxlIHRvIGluc2VydCB0ZXN0X2thc2FuX21vZHVs ZSBvbiBib3RoIHN2MzkgYW5kIHN2NDggCj4gPiB3aXRob3V0IGFueSBtb2RpZmljYXRpb246IHNl dF9wZ2QgImdvZXMgdGhyb3VnaCIgYWxsIHRoZSB1bnVzZWQgcGFnZSAKPiA+IHRhYmxlIGxldmVs cywgd2hlcmVhcyBwKmRfcG9wdWxhdGUgYXJlIG5vb3AgZm9yIHVudXNlZCBsZXZlbHMuCj4gPiAK PiA+IElmIHlvdSBoYXZlIGFueSBjb21tZW50LCBkbyBub3QgaGVzaXRhdGUuCj4gPiAKPiA+IGRp ZmYgLS1naXQgYS9hcmNoL3Jpc2N2L21tL2thc2FuX2luaXQuYyBiL2FyY2gvcmlzY3YvbW0va2Fz YW5faW5pdC5jCj4gPiBpbmRleCBhZGJmOTRiN2U2OGEuLmQ2NDNiMjIyMTY3YyAxMDA2NDQKPiA+ IC0tLSBhL2FyY2gvcmlzY3YvbW0va2FzYW5faW5pdC5jCj4gPiArKysgYi9hcmNoL3Jpc2N2L21t L2thc2FuX2luaXQuYwo+ID4gQEAgLTE5NSw2ICsxOTUsMzEgQEAgc3RhdGljIHZvaWQgX19pbml0 IGthc2FuX3BvcHVsYXRlKHZvaWQgKnN0YXJ0LCB2b2lkIAo+ID4gKmVuZCkKPiA+ICDCoMKgwqDC oMKgwqDCoCBtZW1zZXQoc3RhcnQsIEtBU0FOX1NIQURPV19JTklULCBlbmQgLSBzdGFydCk7Cj4g PiAgwqB9Cj4gPiAKPiA+IAo+ID4gK3ZvaWQgX19pbml0IGthc2FuX3NoYWxsb3dfcG9wdWxhdGVf cGdkKHVuc2lnbmVkIGxvbmcgdmFkZHIsIHVuc2lnbmVkIAo+ID4gbG9uZyBlbmQpCj4gPiArewo+ ID4gK8KgwqDCoMKgwqDCoCB1bnNpZ25lZCBsb25nIG5leHQ7Cj4gPiArwqDCoMKgwqDCoMKgIHZv aWQgKnA7Cj4gPiArwqDCoMKgwqDCoMKgIHBnZF90ICpwZ2RfayA9IHBnZF9vZmZzZXRfayh2YWRk cik7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIGRvIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIG5leHQgPSBwZ2RfYWRkcl9lbmQodmFkZHIsIGVuZCk7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocGdkX3BhZ2VfdmFkZHIoKnBnZF9rKSA9PSAodW5zaWdu ZWQgCj4gPiBsb25nKWxtX2FsaWFzKGthc2FuX2Vhcmx5X3NoYWRvd19wZ2RfbmV4dCkpIHsKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwID0gbWVtYmxv Y2tfYWxsb2MoUEFHRV9TSVpFLCBQQUdFX1NJWkUpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNldF9wZ2QocGdkX2ssIHBmbl9wZ2QoUEZOX0RPV04o X19wYShwKSksIAo+ID4gUEFHRV9UQUJMRSkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfQo+ID4gK8KgwqDCoMKgwqDCoCB9IHdoaWxlIChwZ2RfaysrLCB2YWRkciA9IG5leHQs IHZhZGRyICE9IGVuZCk7Cj4gPiArfQo+ID4gKwo+IAo+IFRoaXMgd2F5IG9mIGdvaW5nIHRocm91 Z2ggdGhlIHBhZ2UgdGFibGUgc2VlbXMgdG8gYmUgbGFyZ2VseSB1c2VkIGFjcm9zcyAKPiB0aGUg a2VybmVsIChjZiBLQVNBTiBwb3B1bGF0aW9uIGZ1bmN0aW9ucyBvZiBhcm02NC94ODYpIHNvIEkg ZG8gdGhpbmsgCj4gdGhpcyBwYXRjaCBicmluZ3MgdmFsdWUgdG8gTnlsb24gYW5kIE5pY2sncyBw YXRjaC4KPiAKPiBJIGNhbiBwcm9wb3NlIGEgcmVhbCBwYXRjaCBpZiB5b3UgYWdyZWUgYW5kIEkn bGwgYWRkIGEgY28tZGV2ZWxvcGVkIGJ5IAo+IE55bG9uL05pY2sgc2luY2UgdGhpcyBvbmx5ICdp bXByb3ZlcycgdGhlaXJzLgo+IAo+IFRoYW5rcywKPiAKPiBBbGV4Cj4KSSBhZ3JlZSB3aXRoIHlv dXIgcHJvcG9zYWwsIGJ1dCB3aGVuIEkgdHJ5IHlvdXIgcGF0Y2ggdGhhdCBpdCBkb3Nlbid0IHdv cmsKYmVjYXVzZSBga2FzYW5fZWFybHlfc2hhZG93X3BnZF9uZXh0YCBmdW5jdGlvbiB3YXNuJ3Qg ZGVmaW5lLgoKRG8geW91IGhhdmUgY29tcGxldGUgcGF0Y2g/IG9yIGp1c3QgSSBtaXNzZWQgc29t ZSBjb250ZW50Pwo+ID4gK3ZvaWQgX19pbml0IGthc2FuX3NoYWxsb3dfcG9wdWxhdGUodm9pZCAq c3RhcnQsIHZvaWQgKmVuZCkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGxvbmcg dmFkZHIgPSAodW5zaWduZWQgbG9uZylzdGFydCAmIFBBR0VfTUFTSzsKPiA+ICvCoMKgwqDCoMKg wqAgdW5zaWduZWQgbG9uZyB2ZW5kID0gUEFHRV9BTElHTigodW5zaWduZWQgbG9uZyllbmQpOwo+ ID4gKwo+ID4gK8KgwqDCoMKgwqDCoCBrYXNhbl9zaGFsbG93X3BvcHVsYXRlX3BnZCh2YWRkciwg dmVuZCk7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgIGxvY2FsX2ZsdXNoX3RsYl9hbGwoKTsKPiA+ ICt9Cj4gPiArCj4gPiAgwqB2b2lkIF9faW5pdCBrYXNhbl9pbml0KHZvaWQpCj4gPiAgwqB7Cj4g PiAgwqDCoMKgwqDCoMKgwqAgcGh5c19hZGRyX3QgX3N0YXJ0LCBfZW5kOwo+ID4gQEAgLTIwNiw3 ICsyMzEsMTUgQEAgdm9pZCBfX2luaXQga2FzYW5faW5pdCh2b2lkKQo+ID4gIMKgwqDCoMKgwqDC oMKgwqAgKi8KPiA+ICDCoMKgwqDCoMKgwqDCoCBrYXNhbl9wb3B1bGF0ZV9lYXJseV9zaGFkb3co KHZvaWQgKilLQVNBTl9TSEFET1dfU1RBUlQsCj4gPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodm9pZCAqKWth c2FuX21lbV90b19zaGFkb3coKHZvaWQgKikKPiA+IC0gVk1BTExPQ19FTkQpKTsKPiA+ICsgVk1F TU1BUF9FTkQpKTsKPiA+ICvCoMKgwqDCoMKgwqAgaWYgKElTX0VOQUJMRUQoQ09ORklHX0tBU0FO X1ZNQUxMT0MpKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga2FzYW5fc2hhbGxv d19wb3B1bGF0ZSgKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAodm9pZCAqKWthc2FuX21lbV90b19zaGFkb3coKHZvaWQgKilWTUFMTE9DX1NUQVJUKSwK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodm9pZCAq KWthc2FuX21lbV90b19zaGFkb3coKHZvaWQgKilWTUFMTE9DX0VORCkpOwo+ID4gK8KgwqDCoMKg wqDCoCBlbHNlCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBrYXNhbl9wb3B1bGF0 ZV9lYXJseV9zaGFkb3coCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKHZvaWQgKilrYXNhbl9tZW1fdG9fc2hhZG93KCh2b2lkICopVk1BTExPQ19TVEFS VCksCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHZv aWQgKilrYXNhbl9tZW1fdG9fc2hhZG93KCh2b2lkICopVk1BTExPQ19FTkQpKTsKPiA+IAo+ID4g Cj4gPiAgwqDCoMKgwqDCoMKgwqAgLyogUG9wdWxhdGUgdGhlIGxpbmVhciBtYXBwaW5nICovCj4g PiAgwqDCoMKgwqDCoMKgwqAgZm9yX2VhY2hfbWVtX3JhbmdlKGksICZfc3RhcnQsICZfZW5kKSB7 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1y aXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==