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=-6.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS 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 6BC4AC33C99 for ; Fri, 10 Jan 2020 03:24:07 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 06C4D20709 for ; Fri, 10 Jan 2020 03:24:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bqU1OkUS" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 06C4D20709 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id AE7988E0005; Thu, 9 Jan 2020 22:24:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id A70648E0001; Thu, 9 Jan 2020 22:24:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 938C28E0005; Thu, 9 Jan 2020 22:24:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0130.hostedemail.com [216.40.44.130]) by kanga.kvack.org (Postfix) with ESMTP id 74D198E0001 for ; Thu, 9 Jan 2020 22:24:05 -0500 (EST) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with SMTP id 27EE94DC0 for ; Fri, 10 Jan 2020 03:24:05 +0000 (UTC) X-FDA: 76360280850.20.snail46_5dc3721b48f0c X-HE-Tag: snail46_5dc3721b48f0c X-Filterd-Recvd-Size: 20908 Received: from mail-lj1-f195.google.com (mail-lj1-f195.google.com [209.85.208.195]) by imf24.hostedemail.com (Postfix) with ESMTP for ; Fri, 10 Jan 2020 03:24:04 +0000 (UTC) Received: by mail-lj1-f195.google.com with SMTP id h23so568314ljc.8 for ; Thu, 09 Jan 2020 19:24:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:references:mime-version:message-id :content-transfer-encoding; bh=SBpHM1nHH4PcUWtWkEbmtN+U8qdE5kluJ+jn7GI6R4o=; b=bqU1OkUSzgXX5oFgGMmm+lBmgHqqbYKNXDz3Nrxbnq37UYzE98o7LPurUqBBB8hAP/ /nockiQPAtNCyODr+O3af/o3jfhVLTZusB37nhwAF3AgGi1VjRLoSpkn4fPmqkpPNBmO OA9hnAmIYqVgCIJxJ+y9+LasUJiOt1evdHDObS6sTd/wfE+WsrmBFzxeQCOaoURJDnry yUhM3jSqARHdszq0pMtOJ0vHuhpGQH7weSyczncvgRU8ZIL7xmHKz99KoQILLBEln3Ht QsC6qh1VaTnUoXJ9nQbsszP/gT/VDjLKEgNkBmGoOwTKl6Oit19PLZq9EMcDoIYHBsZg CJGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:references:mime-version :message-id:content-transfer-encoding; bh=SBpHM1nHH4PcUWtWkEbmtN+U8qdE5kluJ+jn7GI6R4o=; b=cjgQDPwxf4USr1Wmc5Zk/UgGK0rgDbID4JkF2k1QiadGW1706BXwE137KPYUlVkLcf /QfK1+6Ml2p4XZV4fpT2cllCHdseAyuv04QDcoAf+r2/MCiH6C2cMQv0zCQoCXfK/+ME e2SNYDzJQUMepdCSn4EN05vgTekP5RJhwxxaPHn7VIepr7f32BBWLdqc+IU2UVQD5xtQ kT0bNKfxoDyxlcGEPh9wIfa3BBdJ8SHSwzBKAkl9y6Ys51i8SM892RX+4FTFYYiLMA9I l920SKoQQA249ISZBBSbV0Q/iF6ulB6RwpX3NecCVYDy7JnNWGwbxIB5OR3MgPId8b4/ A8ZQ== X-Gm-Message-State: APjAAAU+mXV+NmTgSRZcirY9zQmkjaD9tF26Q0tKqeNWS9SWQJkgtFVE BZETB4F7vda1xErLq4t4aos= X-Google-Smtp-Source: APXvYqySZlMZmi1r6fSk/WZ54Iv67O9PMyex8K1Rni8ajwjBynzrshag6K7SPe/S21mVRxTntJyAyA== X-Received: by 2002:a05:651c:1077:: with SMTP id y23mr902809ljm.79.1578626642541; Thu, 09 Jan 2020 19:24:02 -0800 (PST) Received: from N-20L6PF1KTYA2 ([131.228.2.20]) by smtp.gmail.com with ESMTPSA id l7sm270290lfc.80.2020.01.09.19.23.59 (version=TLS1_2 cipher=AES128-GCM-SHA256 bits=128/128); Thu, 09 Jan 2020 19:24:01 -0800 (PST) Date: Fri, 10 Jan 2020 11:23:59 +0800 From: "Li Xinhai" To: richardw.yang , khlebnikov Cc: richardw.yang , "linux-mm@kvack.org" , akpm , "linux-kernel@vger.kernel.org" , "Rik van Riel" , kirill.shutemov Subject: Re: [PATCH v2 1/2] mm/rmap: fix and simplify reusing mergeable anon_vma as parent when fork References: <157839239609.694.10268055713935919822.stgit@buzz>, <20200108023211.GC13943@richard>, , <20200109025240.GA2000@richard>, , <20200110023029.GB16823@richard> X-Priority: 3 X-GUID: F20E95EA-189D-403A-9B7F-4390E1F42C39 X-Has-Attach: no X-Mailer: Foxmail 7.2.13.365[cn] Mime-Version: 1.0 Message-ID: <20200110112357351531132@gmail.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: T24gMjAyMC0wMS0xMMKgYXQgMTA6MzDCoFdlaSBZYW5nwqB3cm90ZToKPk9uIFRodSwgSmFuIDA5 LCAyMDIwIGF0IDExOjU0OjIxQU0gKzAzMDAsIEtvbnN0YW50aW4gS2hsZWJuaWtvdiB3cm90ZToK Pj4KPj4KPj5PbiAwOS8wMS8yMDIwIDA1LjUyLCBXZWkgWWFuZyB3cm90ZToKPj4+IE9uIFdlZCwg SmFuIDA4LCAyMDIwIGF0IDAxOjQwOjQ0UE0gKzAzMDAsIEtvbnN0YW50aW4gS2hsZWJuaWtvdiB3 cm90ZToKPj4+ID4gT24gMDgvMDEvMjAyMCAwNS4zMiwgV2VpIFlhbmcgd3JvdGU6Cj4+PiA+ID4g T24gVHVlLCBKYW4gMDcsIDIwMjAgYXQgMDE6MTk6NTZQTSArMDMwMCwgS29uc3RhbnRpbiBLaGxl Ym5pa292IHdyb3RlOgo+Pj4gPiA+ID4gVGhpcyBmaXhlcyBzb21lIG1pc2NvbmNlcHRpb25zIGlu IGNvbW1pdCA0ZTRhOWViOTIxMzMgKCJtbS9ybWFwLmM6IHJldXNlCj4+PiA+ID4gPiBtZXJnZWFi bGUgYW5vbl92bWEgYXMgcGFyZW50IHdoZW4gZm9yayIpLiBJdCBtZXJnZXMgYW5vbi12bWEgaW4g dW5leHBlY3RlZAo+Pj4gPiA+ID4gd2F5IGJ1dCBmb3J0dW5hdGVseSBzdGlsbCBwcm9kdWNlcyB2 YWxpZCBhbm9uLXZtYSB0cmVlLCBzbyBub3RoaW5nIGNyYXNoZXMuCj4+PiA+ID4gPgo+Pj4gPiA+ ID4gSWYgaW4gcGFyZW50IFZNQXM6IFNSQzEgU1JDMiAuLiBTUkNuIHNoYXJlIGFub24tdm1hIEFO T04wLCB0aGVuIGFmdGVyIGZvcmsKPj4+ID4gPiA+IGJlZm9yZSBhbGwgcGF0Y2hlcyBpbiBjaGls ZCBwcm9jZXNzIHJlbGF0ZWQgVk1BczogRFNUMSBEU1QyIC4uIERTVG4gd2lsbAo+Pj4gPiA+ID4g Zm9yayBpbmRlcG5kZW50IGFub24tdm1hczogQU5PTjEgQU5PTjIgLi4gQU5PTm4gKGVhY2ggaXMg Y2hpbGQgb2YgQU5PTjApLgo+Pj4gPiA+ID4gQmVmb3JlIHRoaXMgcGF0Y2ggb25seSBEU1QxIHdp bGwgZm9yayBuZXcgQU5PTjEgYW5kIGZvbGxvd2luZyBEU1QyIC4uIERTVG4KPj4+ID4gPiA+IHdp bGwgc2hhcmUgcGFyZW50J3MgQU5PTjAgKGkuZS4gYW5vbi12bWEgdHJlZSBpcyB2YWxpZCBidXQg aXNuJ3Qgb3B0aW1hbCkuCj4+PiA+ID4gPiBXaXRoIHRoaXMgcGF0Y2ggRFNUMSB3aWxsIGNyZWF0 ZSBuZXcgQU5PTjEgYW5kIERTVDIgLi4gRFNUbiB3aWxsIHNoYXJlIGl0Lgo+Pj4gPiA+ID4KPj4+ ID4gPiA+IFJvb3QgcHJvYmxlbSBjYXVzZWQgYnkgaW5pdGlhbGl6YXRpb24gb3JkZXIgaW4gZHVw X21tYXAoKTogdm1hLT52bV9wcmV2Cj4+PiA+ID4gPiBpcyBzZXQgYWZ0ZXIgY2FsbGluZyBhbm9u X3ZtYV9mb3JrKCkuIFRodXMgaW4gYW5vbl92bWFfZm9yaygpIGl0IHBvaW50cyB0bwo+Pj4gPiA+ ID4gcHJldmlvdXMgVk1BIGluIHBhcmVudCBtbS4KPj4+ID4gPiA+Cj4+PiA+ID4gPiBTZWNvbmQg cHJvYmxlbSBpcyBoaWRkZW4gYmVoaW5kIGZpcnN0IG9uZTogYXNzdW1wdGlvbiAiUGFyZW50IGhh cyB2bV9wcmV2LAo+Pj4gPiA+ID4gd2hpY2ggaW1wbGllcyB3ZSBoYXZlIHZtX3ByZXYiIGlzIHdy b25nIGlmIGZpcnN0IFZNQSBpbiBwYXJlbnQgbW0gaGFzIHNldAo+Pj4gPiA+ID4gZmxhZyBWTV9E T05UQ09QWS4gTHVja2lseSBwcmV2LT5hbm9uX3ZtYSBkb2Vzbid0IGRlcmVmZXJlbmNlIE5VTEwg cG9pbnRlcgo+Pj4gPiA+ID4gYmVjYXVzZSBpbiBjdXJyZW50IGNvZGUgJ3ByZXYnIGFjdHVhbGx5 IGlzIHNhbWUgYXMgJ3BwcmV2Jy4KPj4+ID4gPiA+Cj4+PiA+ID4gPiBUaGlyZCBoaWRkZW4gcHJv YmxlbSBpcyBsaW5raW5nIGJldHdlZW4gVk1BIGFuZCBhbm9uLXZtYXMgd2hvc2UgcGFnZXMgaXQK Pj4+ID4gPiA+IGNvdWxkIGNvbnRhaW4uIExvb3AgaW4gYW5vbl92bWFfY2xvbmUoKSBhdHRhY2hl cyBvbmx5IHBhcmVudCdzIGFub24tdm1hcywKPj4+ID4gPiA+IHNoYXJlZCBhbm9uLXZtYSBpc24n dCBhdHRhY2hlZC4gQnV0IGV2ZXJ5IG1hcHBlZCBwYWdlIHN0YXlzIHJlYWNoYWJsZSBpbgo+Pj4g PiA+ID4gcm1hcCBiZWNhdXNlIHdlIGVycm9uZW91c2x5IHNoYXJlIGFub24tdm1hIGZyb20gcGFy ZW50J3MgcHJldmlvdXMgVk1BLgo+Pj4gPiA+ID4KPj4+ID4gPiA+IFRoaXMgcGF0Y2ggbW92ZXMg c2hhcmluZyBsb2dpYyBvdXQgb2YgYW5vbl92bWFfY2xvbmUoKSBpbnRvIG1vcmUgc3BlY2lmaWMK Pj4+ID4gPiA+IGFub25fdm1hX2ZvcmsoKSBiZWNhdXNlIHRoaXMgc3VwcG9zZWQgdG8gd29yayBv bmx5IGF0IGZvcmsoKSBhbmQgc2ltcGx5Cj4+PiA+ID4gPiByZXVzZXMgYW5vbl92bWEgZnJvbSBw cmV2aW91cyBWTUEgaWYgaXQgaXMgZm9ya2VkIGZyb20gdGhlIHNhbWUgYW5vbi12bWEuCj4+PiA+ ID4gPgo+Pj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogS29uc3RhbnRpbiBLaGxlYm5pa292IDxraGxl Ym5pa292QHlhbmRleC10ZWFtLnJ1Pgo+Pj4gPiA+ID4gUmVwb3J0ZWQtYnk6IExpIFhpbmhhaSA8 bGl4aW5oYWkubHhoQGdtYWlsLmNvbT4KPj4+ID4gPiA+IEZpeGVzOiA0ZTRhOWViOTIxMzMgKCJt bS9ybWFwLmM6IHJldXNlIG1lcmdlYWJsZSBhbm9uX3ZtYSBhcyBwYXJlbnQgd2hlbiBmb3JrIikK Pj4+ID4gPiA+IExpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2xpbnV4LW1tL0NBTFlHTmlO enorZHhIWDBnNS1nTnlwVVFjM0I9OF9TY3A1My1OVE9oPXpXc2RVdUhBd0BtYWlsLmdtYWlsLmNv bS9ULyN0Cj4+PiA+ID4gPiAtLS0KPj4+ID4gPiA+IGluY2x1ZGUvbGludXgvcm1hcC5oIHzCoMKg wqAgMyArKy0KPj4+ID4gPiA+IGtlcm5lbC9mb3JrLmPCoMKgwqDCoMKgwqDCoCB8wqDCoMKgIDIg Ky0KPj4+ID4gPiA+IG1tL3JtYXAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMjMgKysr KysrKysrLS0tLS0tLS0tLS0tLS0KPj4+ID4gPiA+IDMgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0 aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCj4+PiA+ID4gPgo+Pj4gPiA+ID4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvcm1hcC5oIGIvaW5jbHVkZS9saW51eC9ybWFwLmgKPj4+ID4gPiA+IGlu ZGV4IDk4OGQxNzY0NzJkZi4uNTYwZTQ0ODBkY2QwIDEwMDY0NAo+Pj4gPiA+ID4gLS0tIGEvaW5j bHVkZS9saW51eC9ybWFwLmgKPj4+ID4gPiA+ICsrKyBiL2luY2x1ZGUvbGludXgvcm1hcC5oCj4+ PiA+ID4gPiBAQCAtMTQzLDcgKzE0Myw4IEBAIHZvaWQgYW5vbl92bWFfaW5pdCh2b2lkKTsJLyog Y3JlYXRlIGFub25fdm1hX2NhY2hlcCAqLwo+Pj4gPiA+ID4gaW50wqAgX19hbm9uX3ZtYV9wcmVw YXJlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKPj4+ID4gPiA+IHZvaWQgdW5saW5rX2Fub25f dm1hcyhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKik7Cj4+PiA+ID4gPiBpbnQgYW5vbl92bWFfY2xv bmUoc3RydWN0IHZtX2FyZWFfc3RydWN0ICosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqKTsKPj4+ ID4gPiA+IC1pbnQgYW5vbl92bWFfZm9yayhzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKiwgc3RydWN0 IHZtX2FyZWFfc3RydWN0ICopOwo+Pj4gPiA+ID4gK2ludCBhbm9uX3ZtYV9mb3JrKHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnB2bWEsCj4+PiA+ID4g PiArCcKgIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqcHJldik7Cj4+PiA+ID4gPgo+Pj4gPiA+ID4g c3RhdGljIGlubGluZSBpbnQgYW5vbl92bWFfcHJlcGFyZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSkKPj4+ID4gPiA+IHsKPj4+ID4gPiA+IGRpZmYgLS1naXQgYS9rZXJuZWwvZm9yay5jIGIv a2VybmVsL2ZvcmsuYwo+Pj4gPiA+ID4gaW5kZXggMjUwOGE0ZjIzOGEzLi5jMzM2MjY5OTM4MzEg MTAwNjQ0Cj4+PiA+ID4gPiAtLS0gYS9rZXJuZWwvZm9yay5jCj4+PiA+ID4gPiArKysgYi9rZXJu ZWwvZm9yay5jCj4+PiA+ID4gPiBAQCAtNTU2LDcgKzU1Niw3IEBAIHN0YXRpYyBfX2xhdGVudF9l bnRyb3B5IGludCBkdXBfbW1hcChzdHJ1Y3QgbW1fc3RydWN0ICptbSwKPj4+ID4gPiA+IHRtcC0+ YW5vbl92bWEgPSBOVUxMOwo+Pj4gPiA+ID4gaWYgKGFub25fdm1hX3ByZXBhcmUodG1wKSkKPj4+ ID4gPiA+IGdvdG8gZmFpbF9ub21lbV9hbm9uX3ZtYV9mb3JrOwo+Pj4gPiA+ID4gLQl9IGVsc2Ug aWYgKGFub25fdm1hX2ZvcmsodG1wLCBtcG50KSkKPj4+ID4gPiA+ICsJfSBlbHNlIGlmIChhbm9u X3ZtYV9mb3JrKHRtcCwgbXBudCwgcHJldikpCj4+PiA+ID4gPiBnb3RvIGZhaWxfbm9tZW1fYW5v bl92bWFfZm9yazsKPj4+ID4gPiA+IHRtcC0+dm1fZmxhZ3MgJj0gfihWTV9MT0NLRUQgfCBWTV9M T0NLT05GQVVMVCk7Cj4+PiA+ID4gPiB0bXAtPnZtX25leHQgPSB0bXAtPnZtX3ByZXYgPSBOVUxM Owo+Pj4gPiA+ID4gZGlmZiAtLWdpdCBhL21tL3JtYXAuYyBiL21tL3JtYXAuYwo+Pj4gPiA+ID4g aW5kZXggYjNlMzgxOTE5ODM1Li4zYzFlMDQzODkyOTEgMTAwNjQ0Cj4+PiA+ID4gPiAtLS0gYS9t bS9ybWFwLmMKPj4+ID4gPiA+ICsrKyBiL21tL3JtYXAuYwo+Pj4gPiA+ID4gQEAgLTI2OSwxOSAr MjY5LDYgQEAgaW50IGFub25fdm1hX2Nsb25lKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqZHN0LCBz dHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnNyYykKPj4+ID4gPiA+IHsKPj4+ID4gPiA+IHN0cnVjdCBh bm9uX3ZtYV9jaGFpbiAqYXZjLCAqcGF2YzsKPj4+ID4gPiA+IHN0cnVjdCBhbm9uX3ZtYSAqcm9v dCA9IE5VTEw7Cj4+PiA+ID4gPiAtCXN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqcHJldiA9IGRzdC0+ dm1fcHJldiwgKnBwcmV2ID0gc3JjLT52bV9wcmV2Owo+Pj4gPiA+ID4gLQo+Pj4gPiA+ID4gLQkv Kgo+Pj4gPiA+ID4gLQkqIElmIHBhcmVudCBzaGFyZSBhbm9uX3ZtYSB3aXRoIGl0cyB2bV9wcmV2 LCBrZWVwIHRoaXMgc2hhcmluZyBpbiBpbgo+Pj4gPiA+ID4gLQkqIGNoaWxkLgo+Pj4gPiA+ID4g LQkqCj4+PiA+ID4gPiAtCSogMS4gUGFyZW50IGhhcyB2bV9wcmV2LCB3aGljaCBpbXBsaWVzIHdl IGhhdmUgdm1fcHJldi4KPj4+ID4gPiA+IC0JKiAyLiBQYXJlbnQgYW5kIGl0cyB2bV9wcmV2IGhh dmUgdGhlIHNhbWUgYW5vbl92bWEuCj4+PiA+ID4gPiAtCSovCj4+PiA+ID4gPiAtCWlmICghZHN0 LT5hbm9uX3ZtYSAmJiBzcmMtPmFub25fdm1hICYmCj4+PiA+ID4gPiAtCcKgwqDCoCBwcHJldiAm JiBwcHJldi0+YW5vbl92bWEgPT0gc3JjLT5hbm9uX3ZtYSkKPj4+ID4gPiA+IC0JZHN0LT5hbm9u X3ZtYSA9IHByZXYtPmFub25fdm1hOwo+Pj4gPiA+ID4gLQo+Pj4gPiA+ID4KPj4+ID4gPiA+IGxp c3RfZm9yX2VhY2hfZW50cnlfcmV2ZXJzZShwYXZjLCAmc3JjLT5hbm9uX3ZtYV9jaGFpbiwgc2Ft ZV92bWEpIHsKPj4+ID4gPiA+IHN0cnVjdCBhbm9uX3ZtYSAqYW5vbl92bWE7Cj4+PiA+ID4gPiBA QCAtMzMyLDcgKzMxOSw4IEBAIGludCBhbm9uX3ZtYV9jbG9uZShzdHJ1Y3Qgdm1fYXJlYV9zdHJ1 Y3QgKmRzdCwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpzcmMpCj4+PiA+ID4gPsKgwqDCoCAqIHRo ZSBjb3JyZXNwb25kaW5nIFZNQSBpbiB0aGUgcGFyZW50IHByb2Nlc3MgaXMgYXR0YWNoZWQgdG8u Cj4+PiA+ID4gPsKgwqDCoCAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBub24temVybyBvbiBmYWls dXJlLgo+Pj4gPiA+ID7CoMKgwqAgKi8KPj4+ID4gPiA+IC1pbnQgYW5vbl92bWFfZm9yayhzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICpwdm1hKQo+Pj4g PiA+ID4gK2ludCBhbm9uX3ZtYV9mb3JrKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnB2bWEsCj4+PiA+ID4gPiArCcKgIHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqcHJldikKPj4+ID4gPiA+IHsKPj4+ID4gPiA+IHN0cnVjdCBhbm9uX3ZtYV9jaGFpbiAq YXZjOwo+Pj4gPiA+ID4gc3RydWN0IGFub25fdm1hICphbm9uX3ZtYTsKPj4+ID4gPiA+IEBAIC0z NDIsNiArMzMwLDEzIEBAIGludCBhbm9uX3ZtYV9mb3JrKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAq dm1hLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnB2bWEpCj4+PiA+ID4gPiBpZiAoIXB2bWEtPmFu b25fdm1hKQo+Pj4gPiA+ID4gcmV0dXJuIDA7Cj4+PiA+ID4gPgo+Pj4gPiA+ID4gKwkvKiBTaGFy ZSBhbm9uX3ZtYSB3aXRoIHByZXZpb3VzIFZNQSBpZiBpdCBoYXMgdGhlIHNhbWUgcGFyZW50LiAq Lwo+Pj4gPiA+ID4gKwlpZiAocHJldiAmJiBwcmV2LT5hbm9uX3ZtYSAmJgo+Pj4gPiA+ID4gKwnC oMKgwqAgcHJldi0+YW5vbl92bWEtPnBhcmVudCA9PSBwdm1hLT5hbm9uX3ZtYSkgewo+Pj4gPiA+ ID4gKwl2bWEtPmFub25fdm1hID0gcHJldi0+YW5vbl92bWE7Cj4+PiA+ID4gPiArCXJldHVybiBh bm9uX3ZtYV9jbG9uZSh2bWEsIHByZXYpOwo+Pj4gPiA+ID4gKwl9Cj4+PiA+ID4gPiArCj4+PiA+ ID4KPj4+ID4gPiBJIGFtIGFmcmFpZCB0aGlzIG9uZSBjaGFuZ2UgdGhlIGludGVuZGVkIGJlaGF2 aW9yLiBMZXQncyBwdXQgYSBjaGFydCB0bwo+Pj4gPiA+IGRlc2NyaWJlLgo+Pj4gPiA+Cj4+PiA+ ID4gQ29tbWl0IDRlNGE5ZWI5MjEzMyAoIm1tL3JtYXAuYzogcmV1c2VtZXJnZWFibGUgYW5vbl92 bWEgYXMgcGFyZW50IHdoZW4KPj4+ID4gPiBmb3JrIikgdHJpZXMgdG8gaW1wcm92ZSB0aGUgZm9s bG93aW5nIHNpdHVhdGlvbi4KPj4+ID4gPgo+Pj4gPiA+IEJlZm9yZSB0aGUgY29tbWl0LCB0aGUg YmVoYXZpb3IgaXMgbGlrZSB0aGlzOgo+Pj4gPiA+Cj4+PiA+ID4gUGFyZW50IHByb2Nlc3M6Cj4+ PiA+ID4KPj4+ID4gPsKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tKwo+Pj4gPiA+wqDCoMKgwqDCoMKg wqDCoCB8IHBhdiB8PC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCj4+ PiA+ID7CoMKgwqDCoMKgwqDCoMKgICstLS0tLSvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfAo+Pj4g PiA+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fAo+Pj4gPiA+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0t LS0tLS0tLSvCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tKwo+Pj4gPiA+wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHxwcHJldsKgwqDCoMKgwqAgfMKgwqDC oMKgwqDCoMKgwqDCoCB8cHZtYcKgwqDCoMKgwqDCoCB8Cj4+PiA+ID7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tK8KgwqDCoMKgwqDCoMKgwqDC oCArLS0tLS0tLS0tLS0rCj4+PiA+ID4KPj4+ID4gPiBDaGlsZCBQcm9jZXNzCj4+PiA+ID4KPj4+ ID4gPgo+Pj4gPiA+wqDCoMKgwqDCoMKgwqDCoCArLS0tLS0rwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0rCj4+PiA+ID7CoMKgwqDCoMKgwqDCoMKgIHwgYXYx IHw8LS0tLS0tLS0tLS0tLS0tLS0rwqAgfCBhdjIgfDwtLS0tLS0tLS0tLS0rCj4+PiA+ID7CoMKg wqDCoMKgwqDCoMKgICstLS0tLSvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oCArLS0tLS0rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+ID4gPsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+ID4gPsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0rwqDCoMKgwqDC oMKgwqDCoMKgICstLS0tLS0tLS0tLSsKPj4+ID4gPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8cHJldsKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgIHx2 bWHCoMKgwqDCoMKgwqDCoCB8Cj4+PiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tK8KgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0r Cj4+PiA+ID4KPj4+ID4gPgo+Pj4gPiA+IFBhcmVudCBwcHJldiBhbmQgcHZtYSBzaGFyZSB0aGUg c2FtZSBhbm9uX3ZtYSBkdWUgdG8KPj4+ID4gPiBmaW5kX21lcmdlYWJsZV9hbm9uX3ZtYSgpLiBX aGlsZSB0aGUgYW5vbl92bWFfY2xvbmUoKSB3b3VsZCBwaWNrIHVwIGRpZmZlcmVudAo+Pj4gPiA+ IGFub25fdm1hIGZvciBjaGlsZCBwcm9jZXNzJ3Mgdm1hLgo+Pj4gPiA+Cj4+PiA+ID4gVGhlIHB1 cnBvc2Ugb2YgbXkgY29tbWl0IGlzIHRvIGdpdmUgY2hpbGQgcHJvY2VzcyB0aGUgZm9sbG93aW5n IHNoYXBlLgo+Pj4gPiA+Cj4+PiA+ID7CoMKgwqDCoMKgwqDCoMKgICstLS0tLSsKPj4+ID4gPsKg wqDCoMKgwqDCoMKgwqAgfCBhdsKgIHw8LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSsKPj4+ID4gPsKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB8Cj4+PiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8Cj4+PiA+ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKy0tLS0tLS0tLS0tK8KgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0rCj4+PiA+ ID7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfHByZXbCoMKgwqDC oMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoCB8dm1hwqDCoMKgwqDCoMKgwqAgfAo+Pj4gPiA+wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0tLS0tLS0tLSvCoMKg wqDCoMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tKwo+Pj4gPiA+Cj4+PiA+ID4gQWZ0ZXIgdGhpcywg d2UgcmVkdWNlIHRoZSBleHRyYSAiYXYyIiBmb3IgY2hpbGQgcHJvY2Vzcy4gQnV0IHllcywgYmVj YXVzZSBvZgo+Pj4gPiA+IHRoZSB0d28gcmVhc29ucyB5b3UgZm91bmQsIGl0IGRpZG4ndCBkbyB0 aGUgZXhhY3QgdGhpbmcuCj4+PiA+ID4KPj4+ID4gPiBXaGlsZSBpZiBteSB1bmRlcnN0YW5kaW5n IGlzIGNvcnJlY3QsIHRoZSBhbm9uX3ZtYV9jbG9uZSgpIHdvdWxkIHBpY2sgdXAgYW55Cj4+PiA+ ID4gYW5vbl92bWEgaW4gaXRzIHByb2Nlc3MgdHJlZSwgZXhjZXB0IHBhcmVudCdzLiBJZiB0aGlz IGZhaWxzIHRvIGdldCBhIHJldXNhYmxlCj4+PiA+ID4gb25lLCBhbm9uX3ZtYV9mb3JrKCkgd291 bGQgYWxsb2NhdGUgb25lLCB3aG9zZSBwYXJlbnQgaXMgcHZtYS0+YW5vbl92bWEuCj4+PiA+ID4K Pj4+ID4gPiBMZXQgbWUgc3VtbWFyaXNlIG9yaWdpbmFsIGJlaGF2aW9yOgo+Pj4gPiA+Cj4+PiA+ ID7CoMKgwqDCoCAqIGlmIGFub25fdm1hX2Nsb25lIHN1Y2NlZWQsIGl0IGZpbmQgb25lIGFub25f dm1hIGluIHRoZSBwcm9jZXNzIHRyZWUsIGJ1dAo+Pj4gPiA+wqDCoMKgwqDCoMKgIGl0IGNvdWxk IG5vdCBiZSBwdm1hLT5hbm9uX3ZtYQo+Pj4gPiA+wqDCoMKgwqAgKiBpZiBhbm9uX3ZtYV9jbG9u ZSBmYWlsLCBpdCB3aWxsIGFsbG9jYXRlIGEgbmV3IGFub25fdm1hIGFuZCBpdHMgcGFyZW50IGlz Cj4+PiA+ID7CoMKgwqDCoMKgwqAgcHZtYS0+YW5vbl92YW0KPj4+ID4gPgo+Pj4gPiA+IFRoZW4g dGFrZSBhIGxvb2sgaW50byB5b3VyIGNvZGUgaGVyZS4KPj4+ID4gPgo+Pj4gPiA+ICJwcmV2LT5h bm9uX3ZtYS0+cGFyZW50ID09IHB2bWEtPmFub25fdm1hIiBtZWFucyBwcmV2LT5hbm9uX3ZtYSBw YXJlbnQgaXMKPj4+ID4gPiBwdm1hJ3MgYW5vbl92bWEuIElmIG15IHVuZGVyc3RhbmRpbmcgaXMg Y29ycmVjdCwgdGhpcyBqdXN0IG1hdGNoIHRoZSBzZWNvbmQKPj4+ID4gPiBjYXNlLiBGb3IgInBy ZXYiLCB3ZSBkaWRuJ3QgZmluZCBhIHJldXNhYmxlIGFub25fdm1hIGFuZCBhbGxvY2F0ZSBhIG5l dyBvbmUuCj4+PiA+ID4KPj4+ID4gPiBCdXQgaG93IGFib3V0IHRoZSBmaXJzdCBjYXNlPyBwcmV2 IHJldXNlIGFuIGFub25fdm1hIGluIHRoZSBwcm9jZXNzIHRyZWUgd2hpY2gKPj4+ID4gPiBpcyBu b3QgcGFyZW50J3M/Cj4+PiA+Cj4+PiA+IElmIGFub25fdm1hX2Nsb25lKCkgcGljayBvbGQgYW5v bi12bWEgZm9yIGZpcnN0IHZtYSBpbiBzaGFyaW5nIGNoYWluIChwcmV2KQo+Pj4gPiB0aGVuIHNl Y29uZCB2bWEgKHZtYSkgd2lsbCBmb3JrIG5ldyBhbm9uLXZtYSAodW5sZXNzIHBpY2sgYW5vdGhl ciBvbGQgYW5vbi12bWEpLAo+Pj4gPiB0aGVuIHRoaXJkIHZtYSB3aWxsIHNoYXJlIGl0LiBBbmQg c28gb24uCj4+Pgo+Pj4gTm8sIEkgYW0gYWZyYWlkIHlvdSBhcmUgbm90IGNvcnJlY3QgaGVyZS4g T3IgSSBkb24ndCB1bmRlcnN0YW5kIHlvdXIgc2VudGVuY2UuCj4+Pgo+Pj4gVGhpcyBpcyBteSB1 bmRlcnN0YW5kaW5nIGFib3V0IHRoZSBiZWhhdmlvciBiZWZvcmUgbXkgY29tbWl0LiBTdXBwb3Nl IGF2MSBhbmQKPj4+IGF2MiBhcmUgYm90aCByZXVzZWQgZnJvbSBvbGQgYW5vbl92bWEuIEFuZCBp ZiBteSB1bmRlcnN0YW5kaW5nIGlzIGNvcnJlY3QsCj4+PiB0aGV5IGFyZSBkaWZmZXJlbnQgZnJv bSBwdm1hLT5hbm9uX3ZtYS4gVGhlbiBob3cgeW91ciBjb2RlIG1hdGNoIHRoaXMKPj4+IHNpdHVh dGlvaW4/Cj4+Pgo+Pj7CoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tKwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqAgfCBh djEgfDwtLS0tLS0tLS0tLS0tLS0tLSvCoCB8IGF2MiB8PC0tLS0tLS0tLS0tLSsKPj4+wqDCoMKg wqDCoMKgwqDCoMKgICstLS0tLSvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oCArLS0tLS0rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwKPj4+wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8Cj4+PsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0tLS0tLS0tLSvCoMKgwqDCoMKgwqDC oMKgwqAgKy0tLS0tLS0tLS0tKwo+Pj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB8cHJldsKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgIHx2bWHCoMKg wqDCoMKgwqDCoCB8Cj4+PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICstLS0tLS0tLS0tLSvCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tKwo+Pj4KPj4+ IFdvdWxkIHlvdSBleHBsYWluIHlvdXIgdW5kZXJzdGFuZGluZyB0aGUgc2Vjb25kIGFuZCB0aGly ZCB2bWEgaW4geW91cgo+Pj4gc2VudGVuY2U/IFdoaWNoIGNhc2UgeW91IGFyZSB0cnlpbmcgdG8g aWxsdXN0cmF0ZT8KPj4KPj5zZXJpZXMgb2Ygdm1hIGluIHBhcmVudCB3aXRoIHNoYXJlZCBBVjoK Pj4KPj5TUkMxIC0gQVYwCj4+U1JDMiAtIEFWMAo+PlNSQzMgLSBBVjAKPj4uLi4KPj5TUkNuIC0g QVYwCj4+Cj4+aW4gY2hpbGQgYWZ0ZXIgZm9yawo+Pgo+PkRTVDEgLSBBVl9PTERfMSAoc29tZSBv bGQgdm1hLCBwaWNrZWQgYnkgYW5vbl92bWFfY2xvbmUpIHBsdXMgRFNUMSBpcyBhdHRhY2hlZCB0 byBzYW1lIEFWcyBhcyBTUkMxCj4+RFNUMiAtIEFWX09MRF8yIChvdGhlciBvbGQgdm1hKSBwbHVz IERTVDEgaXMgYXR0YWNoZWQgdG8gc2FtZSBBVnMgYXMgU1JDMgo+PkRTVDIgLSBBVjEgcHJldiBB ViBwYXJlbnQgZG9lcyBub3QgbWF0Y2ggQVYwLCBubyBvbGQgdm1hIGZvdW5kIGZvciByZXVzaW5n IC0+IGFsbG9jYXRlIG5ldyBvbmUgKGNoaWxkIG9mIEFWMCkKPj5EU1QzIC0gQVYxIC0gRFNUMi0+ QVYtPnBhcmVudCA9PSBTUkMzLT5BViAoQVYwKSAtPiBzaGFyZSBBViB3aXRoIHByZXYKPj5EU1Q0 IC0gQVYxIC0gc2FtZSB0aGluZwo+Pi4uLgo+PkRTVG4gLSBBVjEKPj4KPgo+WWVzLCB5b3VyIGNv ZGUgd29ya3MgZm9yIERTVDMuLkRTVG4uIFRoZXkgd2lsbCBwaWNrIHVwIEFWMSBzaW5jZQo+KERT VDItPkFWLT5wYXJlbnQgPT0gU1JDMy0+QVYpLgo+Cj5NeSBxdWVzdGlvbiBpcyB3aHkgRFNUMSBh bmQgRFNUMiBoYXMgZGlmZmVyZW50IEFWPyBUaGUgcHVycG9zZSBvZiBteSBwYXRjaAo+dHJpZXMg dG8gbWFrZSBjaGlsZCBoYXMgdGhlIHNhbWUgdG9wb2xvZ3kgYW5kIHBhcmVudC4gU28gdGhlIGlk ZWFsIGxvb2sgb2YKPmNoaWxkIGlzOgo+Cj5EU1QxIC0gQVYxCj5EU1QyIC0gQVYxCj5EU1QyIC0g QVYxCj5EU1QzIC0gQVYxCj5EU1Q0IC0gQVYxCj4KPldvdWxkIHlvdSBtaW5kIHB1dHRpbmcgbW9y ZSB3b3JkcyBvbiBEU1QxIGFuZCBEU1QyPyBJIGRpZG4ndCBmdWxseSB1bmRlcnN0YW5kCj50aGUg bG9naWMgaGVyZS4KPgo+VGhhbmtzCj4gCgpJIHRoaW5rIHRoYXQgdGhlIGZpcnN0IHZlcnNpb24g aXMgZG9pbmcgdGhlIHdvcmsgYXMgeW91IGV4cGVjdGVkLCBidXQgYmVlbgpyZXZpc2VkIGluIHNl Y29uZCB2ZXJzaW9uLCB0byBsaW1pdHMgdGhlIG51bWJlciBvZiB1c2VycyBvZiByZXVzZWQgb2xk CmFub24od2hpY2jCoGlzIHBpY2tlZMKgaW4gYW5vbl92bWFfY2xvbmUoKSBhbmQga2VlcCB0aGUg dHJlZSBzdHJ1Y3R1cmUuCgo+LS0KPldlaSBZYW5nCj5IZWxwIHlvdSwgSGVscCBtZQ==