Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp2907928rwb; Mon, 7 Nov 2022 20:42:02 -0800 (PST) X-Google-Smtp-Source: AMsMyM6xyBUVY4dp7dmqIsM1Zbv2OU1kdJb+zPi0M76vkEiJAzs7eKlgDdZm2p05Ln2AxahLEjOv X-Received: by 2002:a05:6402:5244:b0:461:d97e:5271 with SMTP id t4-20020a056402524400b00461d97e5271mr55188209edd.227.1667882522013; Mon, 07 Nov 2022 20:42:02 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1667882522; cv=none; d=google.com; s=arc-20160816; b=Gzu1vhlpUuMY9fbB0Lf6uhj6s+LxckgOWkbEyDpPK/meIXceV5oerlsduREUKjXMIc SsaIcmc08/AzPJXPKNvtAN2D/3u7SVFbBZpB06F/R/swDQwZUpYlfTmtbmwycUuIxkYX UlWBCWaXc5ewZnWtHF6CbNP2VKVjnIFZPznWaThOBkD3npxld/56Ngdi0bkK2Zuoc5YR CRfwTPQwEDpALM7ePsjAgR4tpDBIC+13XFJWIokINur/VjGUWagy/bgL79MPBgnONmJe vWOvdoKz9qM4jsSTPoK2ZEHqzqN6sf/kOrcgpYsb4uCh4li/+IGcrNqrtG8TrSuMZJ88 OSjA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=7wD9ab7WEGxyeTTne6IrvGqzg9RTNtgaDkNn+0e/c3o=; b=eG+wiZ64b15HBl63pEwvVM3P8bqMQhNkyqUlGFzXtNXXo2ORO6u10LrM8RbwaGbbEC S6fLFlgeU+z9izgC37AU7I9rY+8rKDcKWEyygmmwaVP2mfdy3I0cbiiSRGy/v5DLXI0B WofSBN2n6AG8/G877m93Jok08ilAeDFeeIuiIhbwzhyLkSg55FC2ttTe8B5KX+n1ebUC B2YptW5bMIdvGjgRckgXxMAeRwv8azRqcVj80ATMYyxZGV1xyg37aKi/ykYncPZ5CeK4 DXbsd4xGiVHeD4lpZuTOsD9YsnRsTyNKKOGy7Qwzzn4veCZUh9y8xyuVIT/W9SKmcz3r XJzQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux-foundation.org header.s=google header.b=fWgqOp2B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s6-20020a056402520600b00461d2ed78afsi14848851edd.563.2022.11.07.20.41.38; Mon, 07 Nov 2022 20:42:01 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux-foundation.org header.s=google header.b=fWgqOp2B; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232956AbiKHE2o (ORCPT + 91 others); Mon, 7 Nov 2022 23:28:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48896 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233072AbiKHE2c (ORCPT ); Mon, 7 Nov 2022 23:28:32 -0500 Received: from mail-qv1-xf2b.google.com (mail-qv1-xf2b.google.com [IPv6:2607:f8b0:4864:20::f2b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0056010FF8 for ; Mon, 7 Nov 2022 20:28:26 -0800 (PST) Received: by mail-qv1-xf2b.google.com with SMTP id u7so9539248qvn.13 for ; Mon, 07 Nov 2022 20:28:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=7wD9ab7WEGxyeTTne6IrvGqzg9RTNtgaDkNn+0e/c3o=; b=fWgqOp2Bpn6b3FZ/TSUdmHaTDGICBxP/5JU7LBDBO4RODIR4t4rTJWkfJ890AAjbHe UfbWEcFfznE8U12c3rQtZH1aTxkSHrx/c9lUdDfbR7AyhjuLlA2HZha6Q8dnlD5eL1iQ H1m2tyfzU8zbxpk+/J7FesaGT41mEMSib2jOw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7wD9ab7WEGxyeTTne6IrvGqzg9RTNtgaDkNn+0e/c3o=; b=3Wy9pTadxgRSrnumGZiYXlX7Mixkid/60HMVY3Vs9/xrmzoNLh2DHahNd7AVm4wiaA /9N+WTaEucCTgmMAmdBH6LD/wiYVidfCyb1oZd68YPAWID8uGwLjldUDwLnQprA4ehb8 /v30Jrf2FTYlE/D0nQY+aE5UJ+xND75/zuDKUmjVmw6kXL/0PJv785NyVqc9CP7K6LwP 3ou/KG3SHsP8DoKa4WIF98Sm3fxuqa2HVzCSZTX2j0g8BBmbqGRbUBp3+tlO9UWPWP27 I+2tqxagA6ULmO9FVHTM66XJ6o0j2w7kxlWDd8eI0lAVVj3/utSTtDu5j8gjXChm12Jw tRfg== X-Gm-Message-State: ACrzQf2GpR7h67dx4nV/nKpZzs54S/xBW6UdS7iiGZQKZK4ggXhh1xsb n5H7GHiGwblQlPm6/WM7twRaxWT7KldEpg== X-Received: by 2002:a0c:b2cf:0:b0:4bc:1491:9dd2 with SMTP id d15-20020a0cb2cf000000b004bc14919dd2mr34139650qvf.107.1667881705622; Mon, 07 Nov 2022 20:28:25 -0800 (PST) Received: from mail-yb1-f170.google.com (mail-yb1-f170.google.com. [209.85.219.170]) by smtp.gmail.com with ESMTPSA id u6-20020a05620a0c4600b006eeca296c00sm8178783qki.104.2022.11.07.20.28.24 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 07 Nov 2022 20:28:24 -0800 (PST) Received: by mail-yb1-f170.google.com with SMTP id y186so11393525yby.10 for ; Mon, 07 Nov 2022 20:28:24 -0800 (PST) X-Received: by 2002:a05:6902:124f:b0:66e:e3da:487e with SMTP id t15-20020a056902124f00b0066ee3da487emr54631613ybu.310.1667881703878; Mon, 07 Nov 2022 20:28:23 -0800 (PST) MIME-Version: 1.0 References: <8a1e97c9-bd5-7473-6da8-2aa75198fbe8@google.com> In-Reply-To: From: Linus Torvalds Date: Mon, 7 Nov 2022 20:28:07 -0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: mm: delay rmap removal until after TLB flush To: Johannes Weiner Cc: Hugh Dickins , Stephen Rothwell , Alexander Gordeev , Peter Zijlstra , Will Deacon , Aneesh Kumar , Nick Piggin , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Sven Schnelle , Nadav Amit , Jann Horn , John Hubbard , X86 ML , Matthew Wilcox , Andrew Morton , kernel list , Linux-MM , Andrea Arcangeli , "Kirill A . Shutemov" , Joerg Roedel , Uros Bizjak , Alistair Popple , linux-arch Content-Type: multipart/mixed; boundary="0000000000007d268905ecedf861" X-Spam-Status: No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --0000000000007d268905ecedf861 Content-Type: text/plain; charset="UTF-8" On Mon, Nov 7, 2022 at 3:47 PM Linus Torvalds wrote: > > Ok, so I think I have a fairly clean way to do this. > > Let me try to make that series look reasonable, although it might be > until tomorrow. I'll need to massage my mess into not just prettier > code, but a sane history. Ugh. Ok, so massaging it into a saner form and splitting it out into a pretty history took a lot longer than writing the initial ugly "something like this". Anyway, the end result looks very different from the previous series, since I very consciously tried to keep away from rmap changes to not clash with Hugh's work, and also made sure we still do the page_remove_rmap() under the page table lock, just *after* the TLB flush. It does share some basic stuff - I'm still using that "struct encoded_page" thing, I just moved it into a separate commit, and moved it to where it conceptually belongs (I'd love to say that I also made the mlock.c code use it, but I didn't - that 'pagevec' thing is a pretty pointless abstraction and I didn't want to fight it). So you'll see some familiar support structures and scaffolding, but the actual approach to zap_pte_range() is very different. The approach taken to the "s390 is very different" issue is also completely different. It should actually be better for s390: we used to cause that "force_flush" whenever we hit a dirty shared page, and s390 doesn't care. The new model makes that "s390 doesn't care" be part of the whole design, so now s390 treats dirty shared pages basically as if they weren't anything special at all. Which they aren't on s390. But, as with the previous case, I don't even try to cross-compile for s390, so my attempts at handling s390 well are just that: attempts. The code may be broken. Of course, the code may be broken on x86-64 too, but at least there I've compiled it and am running it right now. Oh, and because I copied large parts of the commit message from the previous approach (because the problem description is the same), I noticed that I also kept the "Acked-by:". Those are bogus, because the code is sufficiently different that any previous acks are just not valid any more, but I just hadn't fixed that yet. The meat of it all is in that last patch, the rest is just type system cleanups to prep for it. But it was also that last patch that I spent hours on just tweaking it to look sensible. The *code* was pretty easy. Making it have sensible naming and a sensible abstraction interface that worked well for s390 too, that was 90% of the effort. But also I hope the end result is reasonably easy to review as a result. I'm sending this out because I'm stepping away from the keyboard, because that whole "let's massage it into something lagible" was really somewhat exhausting. You don't see all the small side turns it took only to go "that's ugly, let's try again" ;) Anybody interested in giving this a peek? (Patch 2/4 might make some people pause. It's fairly small and simple. It's effective and makes it easy to do some of the later changes. And it's also quite different from our usual model. It was "inspired" by the signed-vs-unsigned char thread from a few weeks ago. But patch 4/4 is the one that matters). Linus --0000000000007d268905ecedf861 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-mm-introduce-encoded-page-pointers-with-embedded-ext.patch" Content-Disposition: attachment; filename="0001-mm-introduce-encoded-page-pointers-with-embedded-ext.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_la7pkp3p0 RnJvbSA2NzViNzNhYWE3NzE4ZTkzZTlmMjQ5MmEzYjljYzQxN2Y5ZTgyMGI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRh dGlvbi5vcmc+CkRhdGU6IE1vbiwgNyBOb3YgMjAyMiAxNTo0ODoyNyAtMDgwMApTdWJqZWN0OiBb UEFUQ0ggMS80XSBtbTogaW50cm9kdWNlICdlbmNvZGVkJyBwYWdlIHBvaW50ZXJzIHdpdGggZW1i ZWRkZWQgZXh0cmEKIGJpdHMKCldlIGFscmVhZHkgaGF2ZSB0aGlzIG5vdGlvbiBpbiBwYXJ0cyBv ZiB0aGUgTU0gY29kZSAoc2VlIHRoZSBtbG9jayBjb2RlCndpdGggdGhlIExSVV9QQUdFIGFuZCBO RVdfUEFHRSkgYml0cywgYnV0IEknbSBnb2luZyB0byBpbnRyb2R1Y2UgYSBuZXcKY2FzZSwgYW5k IEkgcmVmdXNlIHRvIGRvIHRoZSBzYW1lIHRoaW5nIHdlJ3ZlIGRvbmUgYmVmb3JlIHdoZXJlIHdl IGp1c3QKcHV0IGJpdHMgaW4gdGhlIHJhdyBwb2ludGVyIGFuZCBzYXkgaXQncyBzdGlsbCBhIG5v cm1hbCBwb2ludGVyLgoKU28gdGhpcyBpbnRyb2R1Y2VzIGEgJ3N0cnVjdCBlbmNvZGVkX3BhZ2Un IHBvaW50ZXIgdGhhdCBjYW5ub3QgYmUgdXNlZApmb3IgYW55dGhpbmcgZWxzZSB0aGFuIHRvIGVu Y29kZSBhIHJlYWwgcGFnZSBwb2ludGVyIGFuZCBhIGNvdXBsZSBvZgpleHRyYSBiaXRzIGluIHRo ZSBsb3cgYml0cy4gIFRoYXQgd2F5IHRoZSBjb21waWxlciBjYW4gdHJpdmlhbGx5IHRyYWNrCnRo ZSBzdGF0ZSBvZiB0aGUgcG9pbnRlciBhbmQgeW91IGp1c3QgZXhwbGljaXRseSBlbmNvZGUgYW5k IGRlY29kZSB0aGUKZXh0cmEgYml0cy4KClNpZ25lZC1vZmYtYnk6IExpbnVzIFRvcnZhbGRzIDx0 b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KLS0tCiBpbmNsdWRlL2xpbnV4L21tX3R5cGVz LmggfCAzMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBjaGFuZ2Vk LCAzMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9tbV90eXBlcy5oIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oCmluZGV4IDUwMGU1MzY3 OTZjYS4uYjVjZmZkMjUwNzg0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tX3R5cGVzLmgK KysrIGIvaW5jbHVkZS9saW51eC9tbV90eXBlcy5oCkBAIC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBt ZW1fY2dyb3VwOwogI2lmZGVmIENPTkZJR19IQVZFX0FMSUdORURfU1RSVUNUX1BBR0UKICNkZWZp bmUgX3N0cnVjdF9wYWdlX2FsaWdubWVudAlfX2FsaWduZWQoMiAqIHNpemVvZih1bnNpZ25lZCBs b25nKSkKICNlbHNlCi0jZGVmaW5lIF9zdHJ1Y3RfcGFnZV9hbGlnbm1lbnQKKyNkZWZpbmUgX3N0 cnVjdF9wYWdlX2FsaWdubWVudAlfX2FsaWduZWQoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKQogI2Vu ZGlmCiAKIHN0cnVjdCBwYWdlIHsKQEAgLTI0MSw2ICsyNDEsMzcgQEAgc3RydWN0IHBhZ2Ugewog I2VuZGlmCiB9IF9zdHJ1Y3RfcGFnZV9hbGlnbm1lbnQ7CiAKKy8qKgorICogc3RydWN0IGVuY29k ZWRfcGFnZSAtIGEgbm9uZXhpc3RlbnQgdHlwZSBtYXJraW5nIHRoaXMgcG9pbnRlcgorICoKKyAq IEFuICdlbmNvZGVkX3BhZ2UnIHBvaW50ZXIgaXMgYSBwb2ludGVyIHRvIGEgcmVndWxhciAnc3Ry dWN0IHBhZ2UnLCBidXQKKyAqIHdpdGggdGhlIGxvdyBiaXRzIG9mIHRoZSBwb2ludGVyIGluZGlj YXRpbmcgZXh0cmEgY29udGV4dC1kZXBlbmRlbnQKKyAqIGluZm9ybWF0aW9uLiBOb3Qgc3VwZXIt Y29tbW9uLCBidXQgaGFwcGVucyBpbiBtbXVfZ2F0aGVyIGFuZCBtbG9jaworICogaGFuZGxpbmcs IGFuZCB0aGlzIGFjdHMgYXMgYSB0eXBlIHN5c3RlbSBjaGVjayBvbiB0aGF0IHVzZS4KKyAqCisg KiBXZSBvbmx5IHJlYWxseSBoYXZlIHR3byBndWFyYW50ZWVkIGJpdHMgaW4gZ2VuZXJhbCwgYWx0 aG91Z2ggeW91IGNvdWxkCisgKiBwbGF5IHdpdGggJ3N0cnVjdCBwYWdlJyBhbGlnbm1lbnQgKHNl ZSBDT05GSUdfSEFWRV9BTElHTkVEX1NUUlVDVF9QQUdFKQorICogZm9yIG1vcmUuCisgKgorICog VXNlIHRoZSBzdXBwbGllZCBoZWxwZXIgZnVuY3Rpb25zIHRvIGVuZGNvZGUvZGVjb2RlIHRoZSBw b2ludGVyIGFuZCBiaXRzLgorICovCitzdHJ1Y3QgZW5jb2RlZF9wYWdlOworI2RlZmluZSBFTkNP REVfUEFHRV9CSVRTIDN1bAorc3RhdGljIGlubGluZSBzdHJ1Y3QgZW5jb2RlZF9wYWdlICplbmNv ZGVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgbG9uZyBmbGFncykKK3sKKwlyZXR1 cm4gKHN0cnVjdCBlbmNvZGVkX3BhZ2UgKikoZmxhZ3MgfCAodW5zaWduZWQgbG9uZylwYWdlKTsK K30KKworc3RhdGljIGlubGluZSBib29sIGVuY29kZWRfcGFnZV9mbGFncyhzdHJ1Y3QgZW5jb2Rl ZF9wYWdlICpwYWdlKQoreworCXJldHVybiBFTkNPREVfUEFHRV9CSVRTICYgKHVuc2lnbmVkIGxv bmcpcGFnZTsKK30KKworc3RhdGljIGlubGluZSBzdHJ1Y3QgcGFnZSAqZW5jb2RlZF9wYWdlX3B0 cihzdHJ1Y3QgZW5jb2RlZF9wYWdlICpwYWdlKQoreworCXJldHVybiAoc3RydWN0IHBhZ2UgKiko fkVOQ09ERV9QQUdFX0JJVFMgJiAodW5zaWduZWQgbG9uZylwYWdlKTsKK30KKwogLyoqCiAgKiBz dHJ1Y3QgZm9saW8gLSBSZXByZXNlbnRzIGEgY29udGlndW91cyBzZXQgb2YgYnl0ZXMuCiAgKiBA ZmxhZ3M6IElkZW50aWNhbCB0byB0aGUgcGFnZSBmbGFncy4KLS0gCjIuMzcuMS4yODkuZzQ1YWEx ZTVjNzIuZGlydHkKCg== --0000000000007d268905ecedf861 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-mm-teach-release_pages-to-take-an-array-of-encoded-p.patch" Content-Disposition: attachment; filename="0002-mm-teach-release_pages-to-take-an-array-of-encoded-p.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_la7pktyo1 RnJvbSAzMWU0MTM1ZWVlZGJiNmFlMTJiZmI5YjE3YTdmNmQ5ZDgxNWZmMjg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRh dGlvbi5vcmc+CkRhdGU6IE1vbiwgNyBOb3YgMjAyMiAxNjo0NjoxNiAtMDgwMApTdWJqZWN0OiBb UEFUQ0ggMi80XSBtbTogdGVhY2ggcmVsZWFzZV9wYWdlcygpIHRvIHRha2UgYW4gYXJyYXkgb2Yg ZW5jb2RlZAogcGFnZSBwb2ludGVycyB0b28KCnJlbGVhc2VfcGFnZXMoKSBhbHJlYWR5IGNvdWxk IHRha2UgZWl0aGVyIGFuIGFycmF5IG9mIHBhZ2UgcG9pbnRlcnMsIG9yCmFuIGFycmF5IG9mIGZv bGlvIHBvaW50ZXJzLiAgRXhwYW5kIGl0IHRvIGFsc28gYWNjZXB0IGFuIGFycmF5IG9mCmVuY29k ZWQgcGFnZSBwb2ludGVycywgd2hpY2ggaXMgd2hhdCBib3RoIHRoZSBleGlzdGluZyBtbG9jaygp IHVzZSBhbmQKdGhlIHVwY29taW5nIG1tdV9nYXRoZXIgdXNlIG9mIGVuY29kZWQgcGFnZSBwb2lu dGVycyB3YW50cy4KCk5vdGUgdGhhdCByZWxlYXNlX3BhZ2VzKCkgd29uJ3QgYWN0dWFsbHkgdXNl LCBvciByZWFjdCB0bywgYW55IGV4dHJhCmVuY29kZWQgYml0cy4gIEluc3RlYWQsIHRoaXMgaXMg dmVyeSBtdWNoIGEgY2FzZSBvZiAiSSBoYXZlIHdhbGtlZCB0aGUKYXJyYXkgb2YgZW5jb2RlZCBw YWdlcyBhbmQgZG9uZSBldmVyeXRoaW5nIHRoZSBleHRyYSBiaXRzIHRlbGwgbWUgdG8gZG8sCm5v dyByZWxlYXNlIGl0IGFsbCIuCgpBbHNvLCB3aGlsZSB0aGUgImVpdGhlciBwYWdlIG9yIGZvbGlv IHBvaW50ZXJzIiBkdWFsIHVzZSB3YXMgaGFuZGxlZAp3aXRoIGEgY2FzdCBvZiB0aGUgcG9pbnRl ciBpbiAicmVsZWFzZV9mb2xpb3MoKSIsIHRoaXMgdGFrZXMgYSBzbGlnaHRseQpkaWZmZXJlbnQg YXBwcm9hY2ggYW5kIHVzZXMgdGhlICJ0cmFuc3BhcmVudCB1bmlvbiIgYXR0cmlidXRlIHRvCmRl c2NyaWJlIHRoZSBzZXQgb2YgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbjoKCiAgaHR0cHM6Ly9n Y2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy9Db21tb24tVHlwZS1BdHRyaWJ1dGVzLmh0bWwKCndo aWNoIGhhcyBiZWVuIHN1cHBvcnRlZCBieSBnY2MgZm9yZXZlciwgYnV0IHRoZSBrZXJuZWwgaGFz bid0IHVzZWQKYmVmb3JlLgoKVGhhdCBhbGxvd3MgdXMgdG8gYXZvaWQgdXNpbmcgdmFyaW91cyB3 cmFwcGVycyB3aXRoIGNhc3RzLCBhbmQganVzdCB1c2UKdGhlIHNhbWUgZnVuY3Rpb24gcmVnYXJk bGVzcyBvZiB1c2UuCgpTaWduZWQtb2ZmLWJ5OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGlu dXgtZm91bmRhdGlvbi5vcmc+Ci0tLQogaW5jbHVkZS9saW51eC9tbS5oIHwgMjEgKysrKysrKysr KysrKysrKysrKy0tCiBtbS9zd2FwLmMgICAgICAgICAgfCAxNiArKysrKysrKysrKystLS0tCiAy IGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oCmluZGV4IDhiYmNj Y2JjNTU2NS4uZDlmYjVjM2UzMDQ1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tLmgKKysr IGIvaW5jbHVkZS9saW51eC9tbS5oCkBAIC0xMTc5LDcgKzExNzksMjQgQEAgc3RhdGljIGlubGlu ZSB2b2lkIGZvbGlvX3B1dF9yZWZzKHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCByZWZzKQogCQlf X2ZvbGlvX3B1dChmb2xpbyk7CiB9CiAKLXZvaWQgcmVsZWFzZV9wYWdlcyhzdHJ1Y3QgcGFnZSAq KnBhZ2VzLCBpbnQgbnIpOworLyoqCisgKiByZWxlYXNlX3BhZ2VzIC0gcmVsZWFzZSBhbiBhcnJh eSBvZiBwYWdlcyBvciBmb2xpb3MKKyAqCisgKiBUaGlzIGp1c3QgcmVsZWFzZXMgYSBzaW1wbGUg YXJyYXkgb2YgbXVsdGlwbGUgcGFnZXMsIGFuZAorICogYWNjZXB0cyB2YXJpb3VzIGRpZmZlcmVu dCBmb3JtcyBvZiBzYWlkIHBhZ2UgYXJyYXk6IGVpdGhlcgorICogYSByZWd1bGFyIG9sZCBib3Jp bmcgYXJyYXkgb2YgcGFnZXMsIGFuIGFycmF5IG9mIGZvbGlvcywgb3IKKyAqIGFuIGFycmF5IG9m IGVuY29kZWQgcGFnZSBwb2ludGVycy4KKyAqCisgKiBUaGUgdHJhbnNwYXJlbnQgdW5pb24gc3lu dGF4IGZvciB0aGlzIGtpbmQgb2YgImFueSBvZiB0aGVzZQorICogYXJndW1lbnQgdHlwZXMiIGlz IGFsbCBraW5kcyBvZiB1Z2x5LCBzbyBsb29rIGF3YXkuCisgKi8KK3R5cGVkZWYgdW5pb24gewor CXN0cnVjdCBwYWdlICoqcGFnZXM7CisJc3RydWN0IGZvbGlvICoqZm9saW9zOworCXN0cnVjdCBl bmNvZGVkX3BhZ2UgKiplbmNvZGVkX3BhZ2VzOworfSByZWxlYXNlX3BhZ2VzX2FyZyBfX2F0dHJp YnV0ZV9fICgoX190cmFuc3BhcmVudF91bmlvbl9fKSk7CisKK3ZvaWQgcmVsZWFzZV9wYWdlcyhy ZWxlYXNlX3BhZ2VzX2FyZywgaW50IG5yKTsKIAogLyoqCiAgKiBmb2xpb3NfcHV0IC0gRGVjcmVt ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb24gYW4gYXJyYXkgb2YgZm9saW9zLgpAQCAtMTE5NSw3 ICsxMjEyLDcgQEAgdm9pZCByZWxlYXNlX3BhZ2VzKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBu cik7CiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb3NfcHV0KHN0cnVjdCBmb2xpbyAqKmZv bGlvcywgdW5zaWduZWQgaW50IG5yKQogewotCXJlbGVhc2VfcGFnZXMoKHN0cnVjdCBwYWdlICoq KWZvbGlvcywgbnIpOworCXJlbGVhc2VfcGFnZXMoZm9saW9zLCBucik7CiB9CiAKIHN0YXRpYyBp bmxpbmUgdm9pZCBwdXRfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKZGlmZiAtLWdpdCBhL21tL3N3 YXAuYyBiL21tL3N3YXAuYwppbmRleCA5NTU5MzBmNDFkMjAuLjU5NmVkMjI2ZGRiOCAxMDA2NDQK LS0tIGEvbW0vc3dhcC5jCisrKyBiL21tL3N3YXAuYwpAQCAtOTY4LDIyICs5NjgsMzAgQEAgdm9p ZCBscnVfY2FjaGVfZGlzYWJsZSh2b2lkKQogCiAvKioKICAqIHJlbGVhc2VfcGFnZXMgLSBiYXRj aGVkIHB1dF9wYWdlKCkKLSAqIEBwYWdlczogYXJyYXkgb2YgcGFnZXMgdG8gcmVsZWFzZQorICog QGFyZzogYXJyYXkgb2YgcGFnZXMgdG8gcmVsZWFzZQogICogQG5yOiBudW1iZXIgb2YgcGFnZXMK ICAqCi0gKiBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiBhbGwgdGhlIHBhZ2VzIGlu IEBwYWdlcy4gIElmIGl0CisgKiBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiBhbGwg dGhlIHBhZ2VzIGluIEBhcmcuICBJZiBpdAogICogZmVsbCB0byB6ZXJvLCByZW1vdmUgdGhlIHBh Z2UgZnJvbSB0aGUgTFJVIGFuZCBmcmVlIGl0LgorICoKKyAqIE5vdGUgdGhhdCB0aGUgYXJndW1l bnQgY2FuIGJlIGFuIGFycmF5IG9mIHBhZ2VzLCBlbmNvZGVkIHBhZ2VzLAorICogb3IgZm9saW8g cG9pbnRlcnMuIFdlIGlnbm9yZSBhbnkgZW5jb2RlZCBiaXRzLCBhbmQgdHVybiBhbnkgb2YKKyAq IHRoZW0gaW50byBqdXN0IGEgZm9saW8gdGhhdCBnZXRzIGZyZWUnZC4KICAqLwotdm9pZCByZWxl YXNlX3BhZ2VzKHN0cnVjdCBwYWdlICoqcGFnZXMsIGludCBucikKK3ZvaWQgcmVsZWFzZV9wYWdl cyhyZWxlYXNlX3BhZ2VzX2FyZyBhcmcsIGludCBucikKIHsKIAlpbnQgaTsKKwlzdHJ1Y3QgZW5j b2RlZF9wYWdlICoqZW5jb2RlZCA9IGFyZy5lbmNvZGVkX3BhZ2VzOwogCUxJU1RfSEVBRChwYWdl c190b19mcmVlKTsKIAlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMgPSBOVUxMOwogCXVuc2lnbmVkIGxv bmcgZmxhZ3MgPSAwOwogCXVuc2lnbmVkIGludCBsb2NrX2JhdGNoOwogCiAJZm9yIChpID0gMDsg aSA8IG5yOyBpKyspIHsKLQkJc3RydWN0IGZvbGlvICpmb2xpbyA9IHBhZ2VfZm9saW8ocGFnZXNb aV0pOworCQlzdHJ1Y3QgZm9saW8gKmZvbGlvOworCisJCS8qIFR1cm4gYW55IG9mIHRoZSBhcmd1 bWVudCB0eXBlcyBpbnRvIGEgZm9saW8gKi8KKwkJZm9saW8gPSBwYWdlX2ZvbGlvKGVuY29kZWRf cGFnZV9wdHIoZW5jb2RlZFtpXSkpOwogCiAJCS8qCiAJCSAqIE1ha2Ugc3VyZSB0aGUgSVJRLXNh ZmUgbG9jay1ob2xkaW5nIHRpbWUgZG9lcyBub3QgZ2V0Ci0tIAoyLjM3LjEuMjg5Lmc0NWFhMWU1 YzcyLmRpcnR5Cgo= --0000000000007d268905ecedf861 Content-Type: text/x-patch; charset="US-ASCII"; name="0003-mm-mmu_gather-prepare-to-gather-encoded-page-pointer.patch" Content-Disposition: attachment; filename="0003-mm-mmu_gather-prepare-to-gather-encoded-page-pointer.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_la7pkxeh2 RnJvbSAwZTY4NjNhNTM4OWExMGU5ODQxMjJjNmRjYTE0M2Y5YmU3MWRhMzEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRh dGlvbi5vcmc+CkRhdGU6IE1vbiwgNyBOb3YgMjAyMiAxNzozNjo0MyAtMDgwMApTdWJqZWN0OiBb UEFUQ0ggMy80XSBtbTogbW11X2dhdGhlcjogcHJlcGFyZSB0byBnYXRoZXIgZW5jb2RlZCBwYWdl IHBvaW50ZXJzCiB3aXRoIGZsYWdzCgpUaGlzIGlzIHB1cmVseSBhIHByZXBhcmF0b3J5IHBhdGNo IHRoYXQgbWFrZXMgYWxsIHRoZSBkYXRhIHN0cnVjdHVyZXMKcmVhZHkgZm9yIGVuY29kaW5nIGZs YWdzIHdpdGggdGhlIG1tdV9nYXRoZXIgcGFnZSBwb2ludGVycy4KClRoZSBjb2RlIGN1cnJlbnRs eSBhbHdheXMgc2V0cyB0aGUgZmxhZyB0byB6ZXJvIGFuZCBkb2Vzbid0IHVzZSBpdCB5ZXQsCmJ1 dCBub3cgaXQncyB0cmFja2luZyB0aGUgdHlwZSBzdGF0ZSBhbG9uZy4gIFRoZSBuZXh0IHN0ZXAg d2lsbCBiZSB0bwphY3R1YWxseSBzdGFydCB1c2luZyBpdC4KClNpZ25lZC1vZmYtYnk6IExpbnVz IFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KLS0tCiBpbmNsdWRlL2Fz bS1nZW5lcmljL3RsYi5oIHwgIDIgKy0KIGluY2x1ZGUvbGludXgvc3dhcC5oICAgICAgfCAgMiAr LQogbW0vbW11X2dhdGhlci5jICAgICAgICAgICB8ICA0ICsrLS0KIG1tL3N3YXBfc3RhdGUuYyAg ICAgICAgICAgfCAxMSArKysrLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMo KyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdGxi LmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL3RsYi5oCmluZGV4IDQ5MmRjZTQzMjM2ZS4uZmFjYTIz ZTg3Mjc4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3RsYi5oCisrKyBiL2luY2x1 ZGUvYXNtLWdlbmVyaWMvdGxiLmgKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdHJ1Y3QgbW11X2dhdGhl cl9iYXRjaCB7CiAJc3RydWN0IG1tdV9nYXRoZXJfYmF0Y2gJKm5leHQ7CiAJdW5zaWduZWQgaW50 CQlucjsKIAl1bnNpZ25lZCBpbnQJCW1heDsKLQlzdHJ1Y3QgcGFnZQkJKnBhZ2VzW107CisJc3Ry dWN0IGVuY29kZWRfcGFnZQkqZW5jb2RlZF9wYWdlc1tdOwogfTsKIAogI2RlZmluZSBNQVhfR0FU SEVSX0JBVENICVwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3dhcC5oIGIvaW5jbHVkZS9s aW51eC9zd2FwLmgKaW5kZXggYTE4Y2Y0YjdjNzI0Li40MGU0MThlMzQ2MWIgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvc3dhcC5oCisrKyBiL2luY2x1ZGUvbGludXgvc3dhcC5oCkBAIC00NzAs NyArNDcwLDcgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHRvdGFsX3N3YXBjYWNoZV9w YWdlcyh2b2lkKQogCiBleHRlcm4gdm9pZCBmcmVlX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBh Z2UpOwogZXh0ZXJuIHZvaWQgZnJlZV9wYWdlX2FuZF9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICop OwotZXh0ZXJuIHZvaWQgZnJlZV9wYWdlc19hbmRfc3dhcF9jYWNoZShzdHJ1Y3QgcGFnZSAqKiwg aW50KTsKK2V4dGVybiB2b2lkIGZyZWVfcGFnZXNfYW5kX3N3YXBfY2FjaGUoc3RydWN0IGVuY29k ZWRfcGFnZSAqKiwgaW50KTsKIC8qIGxpbnV4L21tL3N3YXBmaWxlLmMgKi8KIGV4dGVybiBhdG9t aWNfbG9uZ190IG5yX3N3YXBfcGFnZXM7CiBleHRlcm4gbG9uZyB0b3RhbF9zd2FwX3BhZ2VzOwpk aWZmIC0tZ2l0IGEvbW0vbW11X2dhdGhlci5jIGIvbW0vbW11X2dhdGhlci5jCmluZGV4IGFkZDQy NDRlNTc5MC4uNTdiNzg1MGMxYjVlIDEwMDY0NAotLS0gYS9tbS9tbXVfZ2F0aGVyLmMKKysrIGIv bW0vbW11X2dhdGhlci5jCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyB2b2lkIHRsYl9iYXRjaF9w YWdlc19mbHVzaChzdHJ1Y3QgbW11X2dhdGhlciAqdGxiKQogCXN0cnVjdCBtbXVfZ2F0aGVyX2Jh dGNoICpiYXRjaDsKIAogCWZvciAoYmF0Y2ggPSAmdGxiLT5sb2NhbDsgYmF0Y2ggJiYgYmF0Y2gt Pm5yOyBiYXRjaCA9IGJhdGNoLT5uZXh0KSB7Ci0JCXN0cnVjdCBwYWdlICoqcGFnZXMgPSBiYXRj aC0+cGFnZXM7CisJCXN0cnVjdCBlbmNvZGVkX3BhZ2UgKipwYWdlcyA9IGJhdGNoLT5lbmNvZGVk X3BhZ2VzOwogCiAJCWRvIHsKIAkJCS8qCkBAIC05Miw3ICs5Miw3IEBAIGJvb2wgX190bGJfcmVt b3ZlX3BhZ2Vfc2l6ZShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3QgcGFnZSAqcGFnZSwg aW50IHBhZ2VfCiAJICogQWRkIHRoZSBwYWdlIGFuZCBjaGVjayBpZiB3ZSBhcmUgZnVsbC4gSWYg c28KIAkgKiBmb3JjZSBhIGZsdXNoLgogCSAqLwotCWJhdGNoLT5wYWdlc1tiYXRjaC0+bnIrK10g PSBwYWdlOworCWJhdGNoLT5lbmNvZGVkX3BhZ2VzW2JhdGNoLT5ucisrXSA9IGVuY29kZV9wYWdl KHBhZ2UsIDApOwogCWlmIChiYXRjaC0+bnIgPT0gYmF0Y2gtPm1heCkgewogCQlpZiAoIXRsYl9u ZXh0X2JhdGNoKHRsYikpCiAJCQlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL21tL3N3YXBfc3Rh dGUuYyBiL21tL3N3YXBfc3RhdGUuYwppbmRleCA0MzhkMDY3NmM1YmUuLjhiZjA4YzMxMzg3MiAx MDA2NDQKLS0tIGEvbW0vc3dhcF9zdGF0ZS5jCisrKyBiL21tL3N3YXBfc3RhdGUuYwpAQCAtMzAz LDE1ICszMDMsMTIgQEAgdm9pZCBmcmVlX3BhZ2VfYW5kX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2Ug KnBhZ2UpCiAgKiBQYXNzZWQgYW4gYXJyYXkgb2YgcGFnZXMsIGRyb3AgdGhlbSBhbGwgZnJvbSBz d2FwY2FjaGUgYW5kIHRoZW4gcmVsZWFzZQogICogdGhlbS4gIFRoZXkgYXJlIHJlbW92ZWQgZnJv bSB0aGUgTFJVIGFuZCBmcmVlZCBpZiB0aGlzIGlzIHRoZWlyIGxhc3QgdXNlLgogICovCi12b2lk IGZyZWVfcGFnZXNfYW5kX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKipwYWdlcywgaW50IG5yKQor dm9pZCBmcmVlX3BhZ2VzX2FuZF9zd2FwX2NhY2hlKHN0cnVjdCBlbmNvZGVkX3BhZ2UgKipwYWdl cywgaW50IG5yKQogewotCXN0cnVjdCBwYWdlICoqcGFnZXAgPSBwYWdlczsKLQlpbnQgaTsKLQog CWxydV9hZGRfZHJhaW4oKTsKLQlmb3IgKGkgPSAwOyBpIDwgbnI7IGkrKykKLQkJZnJlZV9zd2Fw X2NhY2hlKHBhZ2VwW2ldKTsKLQlyZWxlYXNlX3BhZ2VzKHBhZ2VwLCBucik7CisJZm9yIChpbnQg aSA9IDA7IGkgPCBucjsgaSsrKQorCQlmcmVlX3N3YXBfY2FjaGUoZW5jb2RlZF9wYWdlX3B0cihw YWdlc1tpXSkpOworCXJlbGVhc2VfcGFnZXMocGFnZXMsIG5yKTsKIH0KIAogc3RhdGljIGlubGlu ZSBib29sIHN3YXBfdXNlX3ZtYV9yZWFkYWhlYWQodm9pZCkKLS0gCjIuMzcuMS4yODkuZzQ1YWEx ZTVjNzIuZGlydHkKCg== --0000000000007d268905ecedf861 Content-Type: text/x-patch; charset="US-ASCII"; name="0004-mm-delay-page_remove_rmap-until-after-the-TLB-has-be.patch" Content-Disposition: attachment; filename="0004-mm-delay-page_remove_rmap-until-after-the-TLB-has-be.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_la7pl1kt3 RnJvbSA3ZWY1MjIwY2Q1ODI1ZDZlNGE3NzAyODZkODk0OWI5YjgzOGJiYzMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRh dGlvbi5vcmc+CkRhdGU6IE1vbiwgNyBOb3YgMjAyMiAxOTozODozOCAtMDgwMApTdWJqZWN0OiBb UEFUQ0ggNC80XSBtbTogZGVsYXkgcGFnZV9yZW1vdmVfcm1hcCgpIHVudGlsIGFmdGVyIHRoZSBU TEIgaGFzIGJlZW4KIGZsdXNoZWQKCldoZW4gd2UgcmVtb3ZlIGEgcGFnZSB0YWJsZSBlbnRyeSwg d2UgYXJlIHZlcnkgY2FyZWZ1bCB0byBvbmx5IGZyZWUgdGhlCnBhZ2UgYWZ0ZXIgd2UgaGF2ZSBm bHVzaGVkIHRoZSBUTEIsIGJlY2F1c2Ugb3RoZXIgQ1BVcyBjb3VsZCBzdGlsbCBiZQp1c2luZyB0 aGUgcGFnZSB0aHJvdWdoIHN0YWxlIFRMQiBlbnRyaWVzIHVudGlsIGFmdGVyIHRoZSBmbHVzaC4K Ckhvd2V2ZXIsIHdlIGhhdmUgcmVtb3ZlZCB0aGUgcm1hcCBlbnRyeSBmb3IgdGhhdCBwYWdlIGVh cmx5LCB3aGljaCBtZWFucwp0aGF0IGZ1bmN0aW9ucyBsaWtlIGZvbGlvX21rY2xlYW4oKSB3b3Vs ZCBlbmQgdXAgbm90IHNlcmlhbGl6aW5nIHdpdGgKdGhlIHBhZ2UgdGFibGUgbG9jayBiZWNhdXNl IHRoZSBwYWdlIGhhZCBhbHJlYWR5IGJlZW4gbWFkZSBpbnZpc2libGUgdG8Kcm1hcC4KCkFuZCB0 aGF0IGlzIGEgcHJvYmxlbSwgYmVjYXVzZSB3aGlsZSB0aGUgVExCIGVudHJ5IGV4aXN0cywgd2Ug Y291bGQgZW5kCnVwIHdpdGggdGhlIGZvbGxvd2luZyBzaXR1YXRpb246CgogKGEpIG9uZSBDUFUg Y291bGQgY29tZSBpbiBhbmQgY2xlYW4gaXQsIG5ldmVyIHNlZWluZyBvdXIgbWFwcGluZyBvZiB0 aGUKICAgICBwYWdlCgogKGIpIGFub3RoZXIgQ1BVIGNvdWxkIGNvbnRpbnVlIHRvIHVzZSB0aGUg c3RhbGUgYW5kIGRpcnR5IFRMQiBlbnRyeSBhbmQKICAgICBjb250aW51ZSB0byB3cml0ZSB0byBz YWlkIHBhZ2UKCnJlc3VsdGluZyBpbiBhIHBhZ2UgdGhhdCBoYXMgYmVlbiBkaXJ0aWVkLCBidXQg dGhlbiBtYXJrZWQgY2xlYW4gYWdhaW4sCmFsbCB3aGlsZSBhbm90aGVyIENQVSBtaWdodCBoYXZl IGRpcnRpZWQgaXQgc29tZSBtb3JlLgoKRW5kIHJlc3VsdDogcG9zc2libHkgbG9zdCBkaXJ0eSBk YXRhLgoKVGhpcyBleHRlbmRzIG91ciBjdXJyZW50IFRMQiBnYXRoZXIgaW5mcmFzdHJ1Y3R1cmUg dG8gb3B0aW9uYWxseSB0cmFjayBhCiJzaG91bGQgSSBkbyBhIGRlbGF5ZWQgcGFnZV9yZW1vdmVf cm1hcCgpIGZvciB0aGlzIHBhZ2UgYWZ0ZXIgZmx1c2hpbmcKdGhlIFRMQiIuICBJdCB1c2VzIHRo ZSBuZXdseSBpbnRyb2R1Y2VkICdlbmNvZGVkIHBhZ2UgcG9pbnRlcicgdG8gZG8KdGhhdCB3aXRo b3V0IGhhdmluZyB0byBrZWVwIHNlcGFyYXRlIGRhdGEgYXJvdW5kLgoKTm90ZSwgdGhpcyBpcyBj b21wbGljYXRlZCBieSBhIGNvdXBsZSBvZiBpc3N1ZXM6CgogLSBzMzkwIGhhcyBpdHMgb3duIG1t dV9nYXRoZXIgbW9kZWwgdGhhdCBkb2Vzbid0IGRlbGF5IFRMQiBmbHVzaGluZywKICAgYW5kIGFz IGEgcmVzdWx0IGFsc28gZG9lcyBub3Qgd2FudCB0aGUgZGVsYXllZCBybWFwCgogLSB3ZSB3YW50 IHRvIGRlbGF5IHRoZSBybWFwIHJlbW92YWwsIGJ1dCBub3QgcGFzdCB0aGUgcGFnZSB0YWJsZSBs b2NrCgogLSB3ZSBjYW4gdHJhY2sgYW4gZW5vcm1vdXMgbnVtYmVyIG9mIHBhZ2VzIGluIG91ciBt bXVfZ2F0aGVyIHN0cnVjdHVyZSwKICAgd2l0aCBNQVhfR0FUSEVSX0JBVENIX0NPVU5UIGJhdGNo ZXMgb2YgTUFYX1RBQkxFX0JBVENIIHBhZ2VzIGVhY2gsCiAgIGFsbCBzZXQgdXAgdG8gYmUgYXBw cm94aW1hdGVseSAxMGsgcGVuZGluZyBwYWdlcy4KCiAgIFdlIGRvIG5vdCB3YW50IHRvIGhhdmUg YSBodWdlIG51bWJlciBvZiBiYXRjaGVkIHBhZ2VzIHRoYXQgd2UgdGhlbgogICBuZWVkIHRvIGNo ZWNrIGZvciBkZWxheWVkIHJtYXAgaGFuZGxpbmcgaW5zaWRlIHRoZSBwYWdlIHRhYmxlIGxvY2su CgpQYXJ0aWN1bGFybHkgdGhhdCBsYXN0IHBvaW50IHJlc3VsdHMgaW4gYSBub3Rld29ydGh5IGRl dGFpbCwgd2hlcmUgdGhlCm5vcm1hbCBwYWdlIGJhdGNoIGdhdGhlcmluZyBpcyBsaW1pdGVkIG9u Y2Ugd2UgaGF2ZSBkZWxheWVkIHJtYXBzCnBlbmRpbmcsIGluIHN1Y2ggYSB3YXkgdGhhdCBvbmx5 IHRoZSBsYXN0IGJhdGNoICh0aGUgc28tY2FsbGVkICJhY3RpdmUKYmF0Y2giKSBpbiB0aGUgbW11 X2dhdGhlciBzdHJ1Y3R1cmUgY2FuIGhhdmUgYW55IGRlbGF5ZWQgZW50cmllcy4KCk5PVEUhIFdo aWxlIHRoZSAicG9zc2libHkgbG9zdCBkaXJ0eSBkYXRhIiBzb3VuZHMgY2F0YXN0cm9waGljLCBm b3IgdGhpcwphbGwgdG8gaGFwcGVuIHlvdSBuZWVkIHRvIGhhdmUgYSB1c2VyIHRocmVhZCBkb2lu ZyBlaXRoZXIgbWFkdmlzZSgpIHdpdGgKTUFEVl9ET05UTkVFRCBvciBhIGZ1bGwgcmUtbW1hcCgp IG9mIHRoZSBhcmVhIGNvbmN1cnJlbnRseSB3aXRoIGFub3RoZXIKdGhyZWFkIGNvbnRpbnVpbmcg dG8gdXNlIHNhaWQgbWFwcGluZy4KClNvIGFyZ3VhYmx5IHRoaXMgaXMgYWJvdXQgdXNlciBzcGFj ZSBkb2luZyBjcmF6eSB0aGluZ3MsIGJ1dCBmcm9tIGEgVk0KY29uc2lzdGVuY3kgc3RhbmRwb2lu dCBpdCdzIGJldHRlciBpZiB3ZSB0cmFjayB0aGUgZGlydHkgYml0IHByb3Blcmx5CmV2ZW4gd2hl biB1c2VyIHNwYWNlIGdvZXMgb2ZmIHRoZSByYWlscy4KClJlcG9ydGVkLWJ5OiBOYWRhdiBBbWl0 IDxuYWRhdi5hbWl0QGdtYWlsLmNvbT4KTGluazogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvYWxs L0I4OEQzMDczLTQ0MEEtNDFDNy05NUY0LTg5NUQzRjY1N0VGMkBnbWFpbC5jb20vCkNjOiBXaWxs IERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPgpDYzogQW5lZXNoIEt1bWFyIDxhbmVlc2gua3VtYXJA bGludXguaWJtLmNvbT4KQ2M6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5v cmc+CkNjOiBOaWNrIFBpZ2dpbiA8bnBpZ2dpbkBnbWFpbC5jb20+CkNjOiBIZWlrbyBDYXJzdGVu cyA8aGNhQGxpbnV4LmlibS5jb20+CkNjOiBWYXNpbHkgR29yYmlrIDxnb3JAbGludXguaWJtLmNv bT4KQ2M6IEFsZXhhbmRlciBHb3JkZWV2IDxhZ29yZGVldkBsaW51eC5pYm0uY29tPgpDYzogQ2hy aXN0aWFuIEJvcm50cmFlZ2VyIDxib3JudHJhZWdlckBsaW51eC5pYm0uY29tPgpDYzogU3ZlbiBT Y2huZWxsZSA8c3ZlbnNAbGludXguaWJtLmNvbT4KQWNrZWQtYnk6IFBldGVyIFppamxzdHJhIChJ bnRlbCkgPHBldGVyekBpbmZyYWRlYWQub3JnPgpBY2tlZC1ieTogR2VyYWxkIFNjaGFlZmVyIDxn ZXJhbGQuc2NoYWVmZXJAbGludXguaWJtLmNvbT4gIyBzMzkwClNpZ25lZC1vZmYtYnk6IExpbnVz IFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KLS0tCiBhcmNoL3MzOTAv aW5jbHVkZS9hc20vdGxiLmggfCAyMSArKysrKysrKysrKysrKysrKysrLS0KIGluY2x1ZGUvYXNt LWdlbmVyaWMvdGxiLmggICB8IDIxICsrKysrKysrKysrKysrKysrLS0tLQogbW0vbWVtb3J5LmMg ICAgICAgICAgICAgICAgIHwgMjMgKysrKysrKysrKysrKysrKystLS0tLS0KIG1tL21tdV9nYXRo ZXIuYyAgICAgICAgICAgICB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t CiA0IGZpbGVzIGNoYW5nZWQsIDg2IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS90bGIuaCBiL2FyY2gvczM5MC9pbmNsdWRl L2FzbS90bGIuaAppbmRleCAzYTVjOGZiNTkwZTUuLmU1OTAzZWUyZjFjYSAxMDA2NDQKLS0tIGEv YXJjaC9zMzkwL2luY2x1ZGUvYXNtL3RsYi5oCisrKyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS90 bGIuaApAQCAtMjUsNyArMjUsOCBAQAogdm9pZCBfX3RsYl9yZW1vdmVfdGFibGUodm9pZCAqX3Rh YmxlKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCB0bGJfZmx1c2goc3RydWN0IG1tdV9nYXRoZXIgKnRs Yik7CiBzdGF0aWMgaW5saW5lIGJvb2wgX190bGJfcmVtb3ZlX3BhZ2Vfc2l6ZShzdHJ1Y3QgbW11 X2dhdGhlciAqdGxiLAotCQkJCQkgIHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgcGFnZV9zaXplKTsK KwkJCQkJICBzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHBhZ2Vfc2l6ZSwKKwkJCQkJICB1bnNpZ25l ZCBpbnQgZmxhZ3MpOwogCiAjZGVmaW5lIHRsYl9mbHVzaCB0bGJfZmx1c2gKICNkZWZpbmUgcHRl X2ZyZWVfdGxiIHB0ZV9mcmVlX3RsYgpAQCAtMzYsMTMgKzM3LDI0IEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCBfX3RsYl9yZW1vdmVfcGFnZV9zaXplKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsCiAjaW5j bHVkZSA8YXNtL3RsYmZsdXNoLmg+CiAjaW5jbHVkZSA8YXNtLWdlbmVyaWMvdGxiLmg+CiAKKy8q CisgKiBzMzkwIG5ldmVyIG5lZWRzIHRvIGRlbGF5IHBhZ2VfcmVtb3ZlX3JtYXAsIGJlY2F1c2UK KyAqIHRoZSBwdGVwX2dldF9hbmRfY2xlYXJfZnVsbCgpIHdpbGwgaGF2ZSBmbHVzaGVkIHRoZQor ICogVExCIGFjcm9zcyBDUFVzCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbCB0bGJfZGVsYXlfcm1h cChzdHJ1Y3QgbW11X2dhdGhlciAqdGxiKQoreworCXJldHVybiBmYWxzZTsKK30KKwogLyoKICAq IFJlbGVhc2UgdGhlIHBhZ2UgY2FjaGUgcmVmZXJlbmNlIGZvciBhIHB0ZSByZW1vdmVkIGJ5CiAg KiB0bGJfcHRlcF9jbGVhcl9mbHVzaC4gSW4gYm90aCBmbHVzaCBtb2RlcyB0aGUgdGxiIGZvciBh IHBhZ2UgY2FjaGUgcGFnZQogICogaGFzIGFscmVhZHkgYmVlbiBmcmVlZCwgc28ganVzdCBkbyBm cmVlX3BhZ2VfYW5kX3N3YXBfY2FjaGUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBfX3RsYl9y ZW1vdmVfcGFnZV9zaXplKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsCi0JCQkJCSAgc3RydWN0IHBh Z2UgKnBhZ2UsIGludCBwYWdlX3NpemUpCisJCQkJCSAgc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBw YWdlX3NpemUsCisJCQkJCSAgdW5zaWduZWQgaW50IGZsYWdzKQogewogCWZyZWVfcGFnZV9hbmRf c3dhcF9jYWNoZShwYWdlKTsKIAlyZXR1cm4gZmFsc2U7CkBAIC01Myw2ICs2NSwxMSBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgdGxiX2ZsdXNoKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIpCiAJX190bGJf Zmx1c2hfbW1fbGF6eSh0bGItPm1tKTsKIH0KIAorc3RhdGljIGlubGluZSB2b2lkIHRsYl9mbHVz aF9ybWFwcyhzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSkKK3sKKwkvKiBOb3RoaW5nIHRvIGRvLCBzMzkwIGRvZXMgbm90IGRlbGF5IHJtYXBzICovCit9 CisKIC8qCiAgKiBwdGVfZnJlZV90bGIgZnJlZXMgYSBwdGUgdGFibGUgYW5kIGNsZWFycyB0aGUg Q1JTVEUgZm9yIHRoZQogICogcGFnZSB0YWJsZSBmcm9tIHRoZSB0bGIuCmRpZmYgLS1naXQgYS9p bmNsdWRlL2FzbS1nZW5lcmljL3RsYi5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy90bGIuaAppbmRl eCBmYWNhMjNlODcyNzguLjlkZjUxM2U1YWQyOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tZ2Vu ZXJpYy90bGIuaAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL3RsYi5oCkBAIC0yNTcsNyArMjU3 LDE1IEBAIHN0cnVjdCBtbXVfZ2F0aGVyX2JhdGNoIHsKICNkZWZpbmUgTUFYX0dBVEhFUl9CQVRD SF9DT1VOVAkoMTAwMDBVTC9NQVhfR0FUSEVSX0JBVENIKQogCiBleHRlcm4gYm9vbCBfX3RsYl9y ZW1vdmVfcGFnZV9zaXplKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsIHN0cnVjdCBwYWdlICpwYWdl LAotCQkJCSAgIGludCBwYWdlX3NpemUpOworCQkJCSAgIGludCBwYWdlX3NpemUsIHVuc2lnbmVk IGludCBmbGFncyk7CitleHRlcm4gdm9pZCB0bGJfZmx1c2hfcm1hcHMoc3RydWN0IG1tdV9nYXRo ZXIgKnRsYiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOworCisvKgorICogVGhpcyBib3Ro IHNldHMgJ2RlbGF5ZWRfcm1hcCcsIGFuZCByZXR1cm5zIHRydWUuIEl0IHdvdWxkIGJlIGFuIGlu bGluZQorICogZnVuY3Rpb24sIGV4Y2VwdCB3ZSBkZWZpbmUgaXQgYmVmb3JlIHRoZSAnc3RydWN0 IG1tdV9nYXRoZXInLgorICovCisjZGVmaW5lIHRsYl9kZWxheV9ybWFwKHRsYikgKCgodGxiKS0+ ZGVsYXllZF9ybWFwID0gMSksIHRydWUpCisKICNlbmRpZgogCiAvKgpAQCAtMjkwLDYgKzI5OCwx MSBAQCBzdHJ1Y3QgbW11X2dhdGhlciB7CiAJICovCiAJdW5zaWduZWQgaW50CQlmcmVlZF90YWJs ZXMgOiAxOwogCisJLyoKKwkgKiBEbyB3ZSBoYXZlIHBlbmRpbmcgZGVsYXllZCBybWFwIHJlbW92 YWxzPworCSAqLworCXVuc2lnbmVkIGludAkJZGVsYXllZF9ybWFwIDogMTsKKwogCS8qCiAJICog YXQgd2hpY2ggbGV2ZWxzIGhhdmUgd2UgY2xlYXJlZCBlbnRyaWVzPwogCSAqLwpAQCAtNDMxLDEz ICs0NDQsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHRsYl9mbHVzaF9tbXVfdGxib25seShzdHJ1 Y3QgbW11X2dhdGhlciAqdGxiKQogc3RhdGljIGlubGluZSB2b2lkIHRsYl9yZW1vdmVfcGFnZV9z aXplKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsCiAJCQkJCXN0cnVjdCBwYWdlICpwYWdlLCBpbnQg cGFnZV9zaXplKQogewotCWlmIChfX3RsYl9yZW1vdmVfcGFnZV9zaXplKHRsYiwgcGFnZSwgcGFn ZV9zaXplKSkKKwlpZiAoX190bGJfcmVtb3ZlX3BhZ2Vfc2l6ZSh0bGIsIHBhZ2UsIHBhZ2Vfc2l6 ZSwgMCkpCiAJCXRsYl9mbHVzaF9tbXUodGxiKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIF9f dGxiX3JlbW92ZV9wYWdlKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsIHN0cnVjdCBwYWdlICpwYWdl KQorc3RhdGljIGlubGluZSBib29sIF9fdGxiX3JlbW92ZV9wYWdlKHN0cnVjdCBtbXVfZ2F0aGVy ICp0bGIsIHN0cnVjdCBwYWdlICpwYWdlLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7Ci0JcmV0dXJu IF9fdGxiX3JlbW92ZV9wYWdlX3NpemUodGxiLCBwYWdlLCBQQUdFX1NJWkUpOworCXJldHVybiBf X3RsYl9yZW1vdmVfcGFnZV9zaXplKHRsYiwgcGFnZSwgUEFHRV9TSVpFLCBmbGFncyk7CiB9CiAK IC8qIHRsYl9yZW1vdmVfcGFnZQpkaWZmIC0tZ2l0IGEvbW0vbWVtb3J5LmMgYi9tbS9tZW1vcnku YwppbmRleCBmODhjMzUxYWVjZDQuLjYwYTBmNDRmNmU3MiAxMDA2NDQKLS0tIGEvbW0vbWVtb3J5 LmMKKysrIGIvbW0vbWVtb3J5LmMKQEAgLTE0MzIsNiArMTQzMiw4IEBAIHN0YXRpYyB1bnNpZ25l ZCBsb25nIHphcF9wdGVfcmFuZ2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwKIAkJCWJyZWFrOwog CiAJCWlmIChwdGVfcHJlc2VudChwdGVudCkpIHsKKwkJCXVuc2lnbmVkIGludCBkZWxheV9ybWFw OworCiAJCQlwYWdlID0gdm1fbm9ybWFsX3BhZ2Uodm1hLCBhZGRyLCBwdGVudCk7CiAJCQlpZiAo dW5saWtlbHkoIXNob3VsZF96YXBfcGFnZShkZXRhaWxzLCBwYWdlKSkpCiAJCQkJY29udGludWU7 CkBAIC0xNDQzLDIwICsxNDQ1LDI2IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIHphcF9wdGVfcmFu Z2Uoc3RydWN0IG1tdV9nYXRoZXIgKnRsYiwKIAkJCWlmICh1bmxpa2VseSghcGFnZSkpCiAJCQkJ Y29udGludWU7CiAKKwkJCWRlbGF5X3JtYXAgPSAwOwogCQkJaWYgKCFQYWdlQW5vbihwYWdlKSkg ewogCQkJCWlmIChwdGVfZGlydHkocHRlbnQpKSB7Ci0JCQkJCWZvcmNlX2ZsdXNoID0gMTsKIAkJ CQkJc2V0X3BhZ2VfZGlydHkocGFnZSk7CisJCQkJCWlmICh0bGJfZGVsYXlfcm1hcCh0bGIpKSB7 CisJCQkJCQlkZWxheV9ybWFwID0gMTsKKwkJCQkJCWZvcmNlX2ZsdXNoID0gMTsKKwkJCQkJfQog CQkJCX0KIAkJCQlpZiAocHRlX3lvdW5nKHB0ZW50KSAmJgogCQkJCSAgICBsaWtlbHkoISh2bWEt PnZtX2ZsYWdzICYgVk1fU0VRX1JFQUQpKSkKIAkJCQkJbWFya19wYWdlX2FjY2Vzc2VkKHBhZ2Up OwogCQkJfQogCQkJcnNzW21tX2NvdW50ZXIocGFnZSldLS07Ci0JCQlwYWdlX3JlbW92ZV9ybWFw KHBhZ2UsIHZtYSwgZmFsc2UpOwotCQkJaWYgKHVubGlrZWx5KHBhZ2VfbWFwY291bnQocGFnZSkg PCAwKSkKLQkJCQlwcmludF9iYWRfcHRlKHZtYSwgYWRkciwgcHRlbnQsIHBhZ2UpOwotCQkJaWYg KHVubGlrZWx5KF9fdGxiX3JlbW92ZV9wYWdlKHRsYiwgcGFnZSkpKSB7CisJCQlpZiAoIWRlbGF5 X3JtYXApIHsKKwkJCQlwYWdlX3JlbW92ZV9ybWFwKHBhZ2UsIHZtYSwgZmFsc2UpOworCQkJCWlm ICh1bmxpa2VseShwYWdlX21hcGNvdW50KHBhZ2UpIDwgMCkpCisJCQkJCXByaW50X2JhZF9wdGUo dm1hLCBhZGRyLCBwdGVudCwgcGFnZSk7CisJCQl9CisJCQlpZiAodW5saWtlbHkoX190bGJfcmVt b3ZlX3BhZ2UodGxiLCBwYWdlLCBkZWxheV9ybWFwKSkpIHsKIAkJCQlmb3JjZV9mbHVzaCA9IDE7 CiAJCQkJYWRkciArPSBQQUdFX1NJWkU7CiAJCQkJYnJlYWs7CkBAIC0xNTEzLDggKzE1MjEsMTEg QEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgemFwX3B0ZV9yYW5nZShzdHJ1Y3QgbW11X2dhdGhlciAq dGxiLAogCWFyY2hfbGVhdmVfbGF6eV9tbXVfbW9kZSgpOwogCiAJLyogRG8gdGhlIGFjdHVhbCBU TEIgZmx1c2ggYmVmb3JlIGRyb3BwaW5nIHB0bCAqLwotCWlmIChmb3JjZV9mbHVzaCkKKwlpZiAo Zm9yY2VfZmx1c2gpIHsKIAkJdGxiX2ZsdXNoX21tdV90bGJvbmx5KHRsYik7CisJCWlmICh0bGIt PmRlbGF5ZWRfcm1hcCkKKwkJCXRsYl9mbHVzaF9ybWFwcyh0bGIsIHZtYSk7CisJfQogCXB0ZV91 bm1hcF91bmxvY2soc3RhcnRfcHRlLCBwdGwpOwogCiAJLyoKZGlmZiAtLWdpdCBhL21tL21tdV9n YXRoZXIuYyBiL21tL21tdV9nYXRoZXIuYwppbmRleCA1N2I3ODUwYzFiNWUuLjEzNmY1ZmFkNDNl MyAxMDA2NDQKLS0tIGEvbW0vbW11X2dhdGhlci5jCisrKyBiL21tL21tdV9nYXRoZXIuYwpAQCAt OSw2ICs5LDcgQEAKICNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPgogI2luY2x1ZGUgPGxpbnV4 L3NtcC5oPgogI2luY2x1ZGUgPGxpbnV4L3N3YXAuaD4KKyNpbmNsdWRlIDxsaW51eC9ybWFwLmg+ CiAKICNpbmNsdWRlIDxhc20vcGdhbGxvYy5oPgogI2luY2x1ZGUgPGFzbS90bGIuaD4KQEAgLTE5 LDYgKzIwLDEwIEBAIHN0YXRpYyBib29sIHRsYl9uZXh0X2JhdGNoKHN0cnVjdCBtbXVfZ2F0aGVy ICp0bGIpCiB7CiAJc3RydWN0IG1tdV9nYXRoZXJfYmF0Y2ggKmJhdGNoOwogCisJLyogTm8gbW9y ZSBiYXRjaGluZyBpZiB3ZSBoYXZlIGRlbGF5ZWQgcm1hcHMgcGVuZGluZyAqLworCWlmICh0bGIt PmRlbGF5ZWRfcm1hcCkKKwkJcmV0dXJuIGZhbHNlOworCiAJYmF0Y2ggPSB0bGItPmFjdGl2ZTsK IAlpZiAoYmF0Y2gtPm5leHQpIHsKIAkJdGxiLT5hY3RpdmUgPSBiYXRjaC0+bmV4dDsKQEAgLTQz LDYgKzQ4LDMxIEBAIHN0YXRpYyBib29sIHRsYl9uZXh0X2JhdGNoKHN0cnVjdCBtbXVfZ2F0aGVy ICp0bGIpCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qKgorICogdGxiX2ZsdXNoX3JtYXBzIC0gZG8g cGVuZGluZyBybWFwIHJlbW92YWxzIGFmdGVyIHdlIGhhdmUgZmx1c2hlZCB0aGUgVExCCisgKiBA dGxiOiB0aGUgY3VycmVudCBtbXVfZ2F0aGVyCisgKgorICogTm90ZSB0aGF0IGJlY2F1c2Ugb2Yg aG93IHRsYl9uZXh0X2JhdGNoKCkgYWJvdmUgd29ya3MsIHdlIHdpbGwKKyAqIG5ldmVyIHN0YXJ0 IG5ldyBiYXRjaGVzIHdpdGggcGVuZGluZyBkZWxheWVkIHJtYXBzLCBzbyB3ZSBvbmx5CisgKiBu ZWVkIHRvIHdhbGsgdGhyb3VnaCB0aGUgY3VycmVudCBhY3RpdmUgYmF0Y2guCisgKi8KK3ZvaWQg dGxiX2ZsdXNoX3JtYXBzKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsIHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hKQoreworCXN0cnVjdCBtbXVfZ2F0aGVyX2JhdGNoICpiYXRjaDsKKworCWJhdGNo ID0gdGxiLT5hY3RpdmU7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBiYXRjaC0+bnI7IGkrKykgewor CQlzdHJ1Y3QgZW5jb2RlZF9wYWdlICplbmMgPSBiYXRjaC0+ZW5jb2RlZF9wYWdlc1tpXTsKKwor CQlpZiAoZW5jb2RlZF9wYWdlX2ZsYWdzKGVuYykpIHsKKwkJCXN0cnVjdCBwYWdlICpwYWdlID0g ZW5jb2RlZF9wYWdlX3B0cihlbmMpOworCQkJcGFnZV9yZW1vdmVfcm1hcChwYWdlLCB2bWEsIGZh bHNlKTsKKwkJfQorCX0KKworCXRsYi0+ZGVsYXllZF9ybWFwID0gMDsKK30KKwogc3RhdGljIHZv aWQgdGxiX2JhdGNoX3BhZ2VzX2ZsdXNoKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIpCiB7CiAJc3Ry dWN0IG1tdV9nYXRoZXJfYmF0Y2ggKmJhdGNoOwpAQCAtNzcsNyArMTA3LDcgQEAgc3RhdGljIHZv aWQgdGxiX2JhdGNoX2xpc3RfZnJlZShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiKQogCXRsYi0+bG9j YWwubmV4dCA9IE5VTEw7CiB9CiAKLWJvb2wgX190bGJfcmVtb3ZlX3BhZ2Vfc2l6ZShzdHJ1Y3Qg bW11X2dhdGhlciAqdGxiLCBzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IHBhZ2Vfc2l6ZSkKK2Jvb2wg X190bGJfcmVtb3ZlX3BhZ2Vfc2l6ZShzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3QgcGFn ZSAqcGFnZSwgaW50IHBhZ2Vfc2l6ZSwgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXN0cnVjdCBt bXVfZ2F0aGVyX2JhdGNoICpiYXRjaDsKIApAQCAtOTIsNyArMTIyLDcgQEAgYm9vbCBfX3RsYl9y ZW1vdmVfcGFnZV9zaXplKHN0cnVjdCBtbXVfZ2F0aGVyICp0bGIsIHN0cnVjdCBwYWdlICpwYWdl LCBpbnQgcGFnZV8KIAkgKiBBZGQgdGhlIHBhZ2UgYW5kIGNoZWNrIGlmIHdlIGFyZSBmdWxsLiBJ ZiBzbwogCSAqIGZvcmNlIGEgZmx1c2guCiAJICovCi0JYmF0Y2gtPmVuY29kZWRfcGFnZXNbYmF0 Y2gtPm5yKytdID0gZW5jb2RlX3BhZ2UocGFnZSwgMCk7CisJYmF0Y2gtPmVuY29kZWRfcGFnZXNb YmF0Y2gtPm5yKytdID0gZW5jb2RlX3BhZ2UocGFnZSwgZmxhZ3MpOwogCWlmIChiYXRjaC0+bnIg PT0gYmF0Y2gtPm1heCkgewogCQlpZiAoIXRsYl9uZXh0X2JhdGNoKHRsYikpCiAJCQlyZXR1cm4g dHJ1ZTsKQEAgLTI4Niw2ICszMTYsNyBAQCBzdGF0aWMgdm9pZCBfX3RsYl9nYXRoZXJfbW11KHN0 cnVjdCBtbXVfZ2F0aGVyICp0bGIsIHN0cnVjdCBtbV9zdHJ1Y3QgKm1tLAogCXRsYi0+YWN0aXZl ICAgICA9ICZ0bGItPmxvY2FsOwogCXRsYi0+YmF0Y2hfY291bnQgPSAwOwogI2VuZGlmCisJdGxi LT5kZWxheWVkX3JtYXAgPSAwOwogCiAJdGxiX3RhYmxlX2luaXQodGxiKTsKICNpZmRlZiBDT05G SUdfTU1VX0dBVEhFUl9QQUdFX1NJWkUKLS0gCjIuMzcuMS4yODkuZzQ1YWExZTVjNzIuZGlydHkK Cg== --0000000000007d268905ecedf861--