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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2D880C3F6B0 for ; Mon, 15 Aug 2022 07:37:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:References: Mime-Version:Message-Id:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=vLzrgN3epXzDZim5wxzIHQooAFU+AUCsGU26/SNi67s=; b=e/hxPl8zkXOj+NUjehSutoCOon LPwy5uM44r3PgdyjkoTZzol6sv99JAOuNWJfxptcBIzR7ne+qX7QdL0AWJLE30GNd60dnK7M873kN c6zuWheCi1Iq9tS9MTDwU6m0z8Xs4f+wq03ZHgb7Qkv1FppYo6oQvpK2LH1/ILiQFuHs/njvQxm1N 0IWyLIM5AshR4cg/ZLJAqaCbqJkPDfHzhCDJZsKJVopOvk6QFLFW0UKPUGJKar/2JqlLOF545HHpz ZzRX1tWXq0FKO/4xp/gfgtX5hhXrB4coGBw6YVWLNmfgfu018radLyDr5dlySDY5iE8UOZgPuwhBC KfUkEuHQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oNUdW-00CcjD-PQ; Mon, 15 Aug 2022 07:35:47 +0000 Received: from casper.infradead.org ([2001:8b0:10b:1236::1]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oNUdT-00Ccgk-JJ for linux-arm-kernel@bombadil.infradead.org; Mon, 15 Aug 2022 07:35:43 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type: Cc:To:From:Subject:References:Mime-Version:Message-Id:In-Reply-To:Date:Sender :Reply-To:Content-ID:Content-Description; bh=AP3bSeuk3fgn++1Mx9/DejVgyTCYzsIXn+vjPoJxh3A=; b=FaNNWSxrzGG4woS6P2yfo07j0i nB4qBKFyYj6fn3HCE0+wbSODyRZC/aarbft+R6aimcD9OcrqxY2Pb7KWYlIhxFjgarDP41sap/qTa cBy058hfzRG2QYCMg41yhQDqiSkEDRDksoko6taNcePZ1nB8k6k/dwc+jMXO6y7kP5ZzUJilP6XhR ajUtEMQcLU5AUbGImSDcS4vrLMPIYCvNcmMt4+sSnnfJKCb/I0+7PSw4t00BhGcRStFN6ruiazO2h VH8w+t73MNbCbPR3+7fs8ayqb/d/zsDym+3ARu9uxz0/k4DS4IQXko0y8CsF0KVbAsJqUV1Yp6vHO zVGZ/eWw==; Received: from mail-io1-xd49.google.com ([2607:f8b0:4864:20::d49]) by casper.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oNUIx-005VcO-VL for linux-arm-kernel@lists.infradead.org; Mon, 15 Aug 2022 07:14:34 +0000 Received: by mail-io1-xd49.google.com with SMTP id s16-20020a5eaa10000000b006826060b7e4so3749887ioe.3 for ; Mon, 15 Aug 2022 00:14:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=content-transfer-encoding:cc:to:from:subject:references :mime-version:message-id:in-reply-to:date:from:to:cc; bh=AP3bSeuk3fgn++1Mx9/DejVgyTCYzsIXn+vjPoJxh3A=; b=nJM24lNWFMdMgtvtxnq/A9Vapz08IyNH1OwieLRODMcnwilcRJeLWp4ZZoeE+Et8xt OqaT5ICVpR8Qdssh3NCUZr1Haam+9u/EB65EP6RxWSyGHFM5PfyHSw6GVFSbdX8x5lxa JmDMDjka+RA8zkbsvYcvs8KGUhvnqoTdbutrjjR0I8YwOIAM6Rw4uaFl1OvBhAlb7u9l 15nIyh6oMinkAcmlV2983mR74A8HC3qoJJndx8c6hJMXZ7qcozu1Kt8pPp9fWjpcETFT oF3R0XC5VN8/Bty4CEOj/F9aB5hh5MKqu4gsithdAjZdPLdDzrUM8bE9KJ6Vg9Lxd1Md fc6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:from:subject:references :mime-version:message-id:in-reply-to:date:x-gm-message-state:from:to :cc; bh=AP3bSeuk3fgn++1Mx9/DejVgyTCYzsIXn+vjPoJxh3A=; b=kPyoOurI07ef/CBK09m1pvoZ2FZtlTwpBDE3wiisOJS/xh7QOESTXdt0OJjMcRsj11 12GGE2JAP1AoJXKgh/fNw0Xs320f41iDsdP3h+eX3koBMEFUVeoLtjXUcuccqCcVaQSN 2IdjHZ4Tv6+y2xh09ob+mI5+vkPwzwzizKobX8uuZo83iNszLI6OsZP2TqX3RKpJDhhm YOFsWb8uZt/cuYRjQ6T6MhOSWr+nP9jPvDRUT2DKmHKYp2LPO2NSd97otbTrJJgZoYEw YNQOm+K9spr+xTk2rE/zc37ggxMKMyXV/OjIvXosCg55rmtM85HVh2ZLg66eQMlS4kGz XuPg== X-Gm-Message-State: ACgBeo3EaVT7VlG9KhDOGv4Oh+8WC444rPBqzS/OFaDgDXzkk8G/CTgT xtHv0I207yWAD9SUfpR44AffAwuX9Ag= X-Google-Smtp-Source: AA6agR5flOax3iYNZG+iFcEgjuKSGogZRo8jhpmerhn1dbtrePBa+M+y/31vxYeBh2pCtqiC83YujUYRS64= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:d91:5887:ac93:ddf0]) (user=yuzhao job=sendgmr) by 2002:a6b:c301:0:b0:67c:5d64:ba13 with SMTP id t1-20020a6bc301000000b0067c5d64ba13mr5853278iof.126.1660547663888; Mon, 15 Aug 2022 00:14:23 -0700 (PDT) Date: Mon, 15 Aug 2022 01:13:26 -0600 In-Reply-To: <20220815071332.627393-1-yuzhao@google.com> Message-Id: <20220815071332.627393-8-yuzhao@google.com> Mime-Version: 1.0 References: <20220815071332.627393-1-yuzhao@google.com> X-Mailer: git-send-email 2.37.1.595.g718a3a8f04-goog Subject: [PATCH v14 07/14] mm: multi-gen LRU: exploit locality in rmap From: Yu Zhao To: Andrew Morton Cc: Andi Kleen , Aneesh Kumar , Catalin Marinas , Dave Hansen , Hillf Danton , Jens Axboe , Johannes Weiner , Jonathan Corbet , Linus Torvalds , Matthew Wilcox , Mel Gorman , Michael Larabel , Michal Hocko , Mike Rapoport , Peter Zijlstra , Tejun Heo , Vlastimil Babka , Will Deacon , linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org, page-reclaim@google.com, Yu Zhao , Barry Song , Brian Geffon , Jan Alexander Steffens , Oleksandr Natalenko , Steven Barrett , Suleiman Souhlal , Daniel Byrne , Donald Carr , "=?UTF-8?q?Holger=20Hoffst=C3=A4tte?=" , Konstantin Kharlamov , Shuang Zhai , Sofia Trinh , Vaibhav Jain X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220815_081432_071534_C3B37493 X-CRM114-Status: GOOD ( 22.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org U2VhcmNoaW5nIHRoZSBybWFwIGZvciBQVEVzIG1hcHBpbmcgZWFjaCBwYWdlIG9uIGFuIExSVSBs aXN0ICh0byB0ZXN0CmFuZCBjbGVhciB0aGUgYWNjZXNzZWQgYml0KSBjYW4gYmUgZXhwZW5zaXZl IGJlY2F1c2UgcGFnZXMgZnJvbQpkaWZmZXJlbnQgVk1BcyAoUEEgc3BhY2UpIGFyZSBub3QgY2Fj aGUgZnJpZW5kbHkgdG8gdGhlIHJtYXAgKFZBCnNwYWNlKS4gRm9yIHdvcmtsb2FkcyBtb3N0bHkg dXNpbmcgbWFwcGVkIHBhZ2VzLCBzZWFyY2hpbmcgdGhlIHJtYXAKY2FuIGluY3VyIHRoZSBoaWdo ZXN0IENQVSBjb3N0IGluIHRoZSByZWNsYWltIHBhdGguCgpUaGlzIHBhdGNoIGV4cGxvaXRzIHNw YXRpYWwgbG9jYWxpdHkgdG8gcmVkdWNlIHRoZSB0cmlwcyBpbnRvIHRoZQpybWFwLiBXaGVuIHNo cmlua19wYWdlX2xpc3QoKSB3YWxrcyB0aGUgcm1hcCBhbmQgZmluZHMgYSB5b3VuZyBQVEUsIGEK bmV3IGZ1bmN0aW9uIGxydV9nZW5fbG9va19hcm91bmQoKSBzY2FucyBhdCBtb3N0IEJJVFNfUEVS X0xPTkctMQphZGphY2VudCBQVEVzLiBPbiBmaW5kaW5nIGFub3RoZXIgeW91bmcgUFRFLCBpdCBj bGVhcnMgdGhlIGFjY2Vzc2VkCmJpdCBhbmQgdXBkYXRlcyB0aGUgZ2VuIGNvdW50ZXIgb2YgdGhl IHBhZ2UgbWFwcGVkIGJ5IHRoaXMgUFRFIHRvCihtYXhfc2VxJU1BWF9OUl9HRU5TKSsxLgoKU2Vy dmVyIGJlbmNobWFyayByZXN1bHRzOgogIFNpbmdsZSB3b3JrbG9hZDoKICAgIGZpbyAoYnVmZmVy ZWQgSS9PKTogbm8gY2hhbmdlCgogIFNpbmdsZSB3b3JrbG9hZDoKICAgIG1lbWNhY2hlZCAoYW5v bik6ICtbMywgNV0lCiAgICAgICAgICAgICAgICBPcHMvc2VjICAgICAgS0Ivc2VjCiAgICAgIHBh dGNoMS02OiAxMTA2MTY4LjQ2ICAgNDMwMjUuMDQKICAgICAgcGF0Y2gxLTc6IDExNDc2OTYuNTcg ICA0NDY0MC4yOQoKICBDb25maWd1cmF0aW9uczoKICAgIG5vIGNoYW5nZQoKQ2xpZW50IGJlbmNo bWFyayByZXN1bHRzOgogIGtzd2FwZCBwcm9maWxlczoKICAgIHBhdGNoMS02CiAgICAgIDM5LjAz JSAgbHpvMXhfMV9kb19jb21wcmVzcyAocmVhbCB3b3JrKQogICAgICAxOC40NyUgIHBhZ2Vfdm1h X21hcHBlZF93YWxrIChvdmVyaGVhZCkKICAgICAgIDYuNzQlICBfcmF3X3NwaW5fdW5sb2NrX2ly cQogICAgICAgMy45NyUgIGRvX3Jhd19zcGluX2xvY2sKICAgICAgIDIuNDklICBwdGVwX2NsZWFy X2ZsdXNoCiAgICAgICAyLjQ4JSAgYW5vbl92bWFfaW50ZXJ2YWxfdHJlZV9pdGVyX2ZpcnN0CiAg ICAgICAxLjkyJSAgZm9saW9fcmVmZXJlbmNlZF9vbmUKICAgICAgIDEuODglICBfX3pyYW1fYnZl Y193cml0ZQogICAgICAgMS40OCUgIG1lbW1vdmUKICAgICAgIDEuMzElICB2bWFfaW50ZXJ2YWxf dHJlZV9pdGVyX25leHQKCiAgICBwYXRjaDEtNwogICAgICA0OC4xNiUgIGx6bzF4XzFfZG9fY29t cHJlc3MgKHJlYWwgd29yaykKICAgICAgIDguMjAlICBwYWdlX3ZtYV9tYXBwZWRfd2FsayAob3Zl cmhlYWQpCiAgICAgICA3LjA2JSAgX3Jhd19zcGluX3VubG9ja19pcnEKICAgICAgIDIuOTIlICBw dGVwX2NsZWFyX2ZsdXNoCiAgICAgICAyLjUzJSAgX196cmFtX2J2ZWNfd3JpdGUKICAgICAgIDIu MTElICBkb19yYXdfc3Bpbl9sb2NrCiAgICAgICAyLjAyJSAgbWVtbW92ZQogICAgICAgMS45MyUg IGxydV9nZW5fbG9va19hcm91bmQKICAgICAgIDEuNTYlICBmcmVlX3VucmVmX3BhZ2VfbGlzdAog ICAgICAgMS40MCUgIG1lbXNldAoKICBDb25maWd1cmF0aW9uczoKICAgIG5vIGNoYW5nZQoKU2ln bmVkLW9mZi1ieTogWXUgWmhhbyA8eXV6aGFvQGdvb2dsZS5jb20+CkFja2VkLWJ5OiBCYXJyeSBT b25nIDxiYW9odWFAa2VybmVsLm9yZz4KQWNrZWQtYnk6IEJyaWFuIEdlZmZvbiA8YmdlZmZvbkBn b29nbGUuY29tPgpBY2tlZC1ieTogSmFuIEFsZXhhbmRlciBTdGVmZmVucyAoaGVmdGlnKSA8aGVm dGlnQGFyY2hsaW51eC5vcmc+CkFja2VkLWJ5OiBPbGVrc2FuZHIgTmF0YWxlbmtvIDxvbGVrc2Fu ZHJAbmF0YWxlbmtvLm5hbWU+CkFja2VkLWJ5OiBTdGV2ZW4gQmFycmV0dCA8c3RldmVuQGxpcXVv cml4Lm5ldD4KQWNrZWQtYnk6IFN1bGVpbWFuIFNvdWhsYWwgPHN1bGVpbWFuQGdvb2dsZS5jb20+ ClRlc3RlZC1ieTogRGFuaWVsIEJ5cm5lIDxkamJ5cm5lQG10dS5lZHU+ClRlc3RlZC1ieTogRG9u YWxkIENhcnIgPGRAY2hhb3MtcmVpbnMuY29tPgpUZXN0ZWQtYnk6IEhvbGdlciBIb2Zmc3TDpHR0 ZSA8aG9sZ2VyQGFwcGxpZWQtYXN5bmNocm9ueS5jb20+ClRlc3RlZC1ieTogS29uc3RhbnRpbiBL aGFybGFtb3YgPEhpLUFuZ2VsQHlhbmRleC5ydT4KVGVzdGVkLWJ5OiBTaHVhbmcgWmhhaSA8c3po YWkyQGNzLnJvY2hlc3Rlci5lZHU+ClRlc3RlZC1ieTogU29maWEgVHJpbmggPHNvZmlhLnRyaW5o QGVkaS53b3Jrcz4KVGVzdGVkLWJ5OiBWYWliaGF2IEphaW4gPHZhaWJoYXZAbGludXguaWJtLmNv bT4KLS0tCiBpbmNsdWRlL2xpbnV4L21lbWNvbnRyb2wuaCB8ICAzMSArKysrKysrCiBpbmNsdWRl L2xpbnV4L21tLmggICAgICAgICB8ICAgNSArCiBpbmNsdWRlL2xpbnV4L21tem9uZS5oICAgICB8 ICAgNiArKwogbW0vaW50ZXJuYWwuaCAgICAgICAgICAgICAgfCAgIDEgKwogbW0vbWVtY29udHJv bC5jICAgICAgICAgICAgfCAgIDEgKwogbW0vcm1hcC5jICAgICAgICAgICAgICAgICAgfCAgIDYg KysKIG1tL3N3YXAuYyAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBtbS92bXNjYW4uYyAgICAg ICAgICAgICAgICB8IDE4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiA4 IGZpbGVzIGNoYW5nZWQsIDIzNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oIGIvaW5jbHVkZS9saW51eC9tZW1jb250 cm9sLmgKaW5kZXggNGQzMWNlNTViMWMwLi40NzgyOWYzNzhmY2IgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgvbWVtY29udHJvbC5oCisrKyBiL2luY2x1ZGUvbGludXgvbWVtY29udHJvbC5oCkBA IC00NDQsNiArNDQ0LDcgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgb2JqX2Nncm91cCAqX19mb2xp b19vYmpjZyhzdHJ1Y3QgZm9saW8gKmZvbGlvKQogICogLSBMUlUgaXNvbGF0aW9uCiAgKiAtIGxv Y2tfcGFnZV9tZW1jZygpCiAgKiAtIGV4Y2x1c2l2ZSByZWZlcmVuY2UKKyAqIC0gbWVtX2Nncm91 cF90cnlsb2NrX3BhZ2VzKCkKICAqCiAgKiBGb3IgYSBrbWVtIGZvbGlvIGEgY2FsbGVyIHNob3Vs ZCBob2xkIGFuIHJjdSByZWFkIGxvY2sgdG8gcHJvdGVjdCBtZW1jZwogICogYXNzb2NpYXRlZCB3 aXRoIGEga21lbSBmb2xpbyBmcm9tIGJlaW5nIHJlbGVhc2VkLgpAQCAtNTA1LDYgKzUwNiw3IEBA IHN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9jZ3JvdXAgKmZvbGlvX21lbWNnX3JjdShzdHJ1Y3Qg Zm9saW8gKmZvbGlvKQogICogLSBMUlUgaXNvbGF0aW9uCiAgKiAtIGxvY2tfcGFnZV9tZW1jZygp CiAgKiAtIGV4Y2x1c2l2ZSByZWZlcmVuY2UKKyAqIC0gbWVtX2Nncm91cF90cnlsb2NrX3BhZ2Vz KCkKICAqCiAgKiBGb3IgYSBrbWVtIHBhZ2UgYSBjYWxsZXIgc2hvdWxkIGhvbGQgYW4gcmN1IHJl YWQgbG9jayB0byBwcm90ZWN0IG1lbWNnCiAgKiBhc3NvY2lhdGVkIHdpdGggYSBrbWVtIHBhZ2Ug ZnJvbSBiZWluZyByZWxlYXNlZC4KQEAgLTk1OSw2ICs5NjEsMjMgQEAgdm9pZCB1bmxvY2tfcGFn ZV9tZW1jZyhzdHJ1Y3QgcGFnZSAqcGFnZSk7CiAKIHZvaWQgX19tb2RfbWVtY2dfc3RhdGUoc3Ry dWN0IG1lbV9jZ3JvdXAgKm1lbWNnLCBpbnQgaWR4LCBpbnQgdmFsKTsKIAorLyogdHJ5IHRvIHN0 YWJsaXplIGZvbGlvX21lbWNnKCkgZm9yIGFsbCB0aGUgcGFnZXMgaW4gYSBtZW1jZyAqLworc3Rh dGljIGlubGluZSBib29sIG1lbV9jZ3JvdXBfdHJ5bG9ja19wYWdlcyhzdHJ1Y3QgbWVtX2Nncm91 cCAqbWVtY2cpCit7CisJcmN1X3JlYWRfbG9jaygpOworCisJaWYgKG1lbV9jZ3JvdXBfZGlzYWJs ZWQoKSB8fCAhYXRvbWljX3JlYWQoJm1lbWNnLT5tb3ZpbmdfYWNjb3VudCkpCisJCXJldHVybiB0 cnVlOworCisJcmN1X3JlYWRfdW5sb2NrKCk7CisJcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMg aW5saW5lIHZvaWQgbWVtX2Nncm91cF91bmxvY2tfcGFnZXModm9pZCkKK3sKKwlyY3VfcmVhZF91 bmxvY2soKTsKK30KKwogLyogaWR4IGNhbiBiZSBvZiB0eXBlIGVudW0gbWVtY2dfc3RhdF9pdGVt IG9yIG5vZGVfc3RhdF9pdGVtICovCiBzdGF0aWMgaW5saW5lIHZvaWQgbW9kX21lbWNnX3N0YXRl KHN0cnVjdCBtZW1fY2dyb3VwICptZW1jZywKIAkJCQkgICBpbnQgaWR4LCBpbnQgdmFsKQpAQCAt MTQyMiw2ICsxNDQxLDE4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBmb2xpb19tZW1jZ191bmxvY2so c3RydWN0IGZvbGlvICpmb2xpbykKIHsKIH0KIAorc3RhdGljIGlubGluZSBib29sIG1lbV9jZ3Jv dXBfdHJ5bG9ja19wYWdlcyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpCit7CisJLyogdG8gbWF0 Y2ggZm9saW9fbWVtY2dfcmN1KCkgKi8KKwlyY3VfcmVhZF9sb2NrKCk7CisJcmV0dXJuIHRydWU7 Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBtZW1fY2dyb3VwX3VubG9ja19wYWdlcyh2b2lkKQor eworCXJjdV9yZWFkX3VubG9jaygpOworfQorCiBzdGF0aWMgaW5saW5lIHZvaWQgbWVtX2Nncm91 cF9oYW5kbGVfb3Zlcl9oaWdoKHZvaWQpCiB7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4 L21tLmggYi9pbmNsdWRlL2xpbnV4L21tLmgKaW5kZXggZmJlMmU3MmU3YmNhLi44ZmY3MjI3YzZj YjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L21t LmgKQEAgLTE0OTAsNiArMTQ5MCwxMSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZm9s aW9fcGZuKHN0cnVjdCBmb2xpbyAqZm9saW8pCiAJcmV0dXJuIHBhZ2VfdG9fcGZuKCZmb2xpby0+ cGFnZSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGZvbGlvICpwZm5fZm9saW8odW5zaWdu ZWQgbG9uZyBwZm4pCit7CisJcmV0dXJuIHBhZ2VfZm9saW8ocGZuX3RvX3BhZ2UocGZuKSk7Cit9 CisKIHN0YXRpYyBpbmxpbmUgYXRvbWljX3QgKmZvbGlvX3BpbmNvdW50X3B0cihzdHJ1Y3QgZm9s aW8gKmZvbGlvKQogewogCXJldHVybiAmZm9saW9fcGFnZShmb2xpbywgMSktPmNvbXBvdW5kX3Bp bmNvdW50OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaCBiL2luY2x1ZGUvbGlu dXgvbW16b25lLmgKaW5kZXggMDE5ZDdjOGVlODM0Li44NTBjNjE3MWFmNjggMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvbGludXgvbW16b25lLmgKKysrIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaApAQCAt Mzc1LDYgKzM3NSw3IEBAIGVudW0gbHJ1dmVjX2ZsYWdzIHsKICNpZm5kZWYgX19HRU5FUkFUSU5H X0JPVU5EU19ICiAKIHN0cnVjdCBscnV2ZWM7CitzdHJ1Y3QgcGFnZV92bWFfbWFwcGVkX3dhbGs7 CiAKICNkZWZpbmUgTFJVX0dFTl9NQVNLCQkoKEJJVChMUlVfR0VOX1dJRFRIKSAtIDEpIDw8IExS VV9HRU5fUEdPRkYpCiAjZGVmaW5lIExSVV9SRUZTX01BU0sJCSgoQklUKExSVV9SRUZTX1dJRFRI KSAtIDEpIDw8IExSVV9SRUZTX1BHT0ZGKQpAQCAtNDMwLDYgKzQzMSw3IEBAIHN0cnVjdCBscnVf Z2VuX3N0cnVjdCB7CiB9OwogCiB2b2lkIGxydV9nZW5faW5pdF9scnV2ZWMoc3RydWN0IGxydXZl YyAqbHJ1dmVjKTsKK3ZvaWQgbHJ1X2dlbl9sb29rX2Fyb3VuZChzdHJ1Y3QgcGFnZV92bWFfbWFw cGVkX3dhbGsgKnB2bXcpOwogCiAjaWZkZWYgQ09ORklHX01FTUNHCiB2b2lkIGxydV9nZW5faW5p dF9tZW1jZyhzdHJ1Y3QgbWVtX2Nncm91cCAqbWVtY2cpOwpAQCAtNDQyLDYgKzQ0NCwxMCBAQCBz dGF0aWMgaW5saW5lIHZvaWQgbHJ1X2dlbl9pbml0X2xydXZlYyhzdHJ1Y3QgbHJ1dmVjICpscnV2 ZWMpCiB7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBscnVfZ2VuX2xvb2tfYXJvdW5kKHN0cnVj dCBwYWdlX3ZtYV9tYXBwZWRfd2FsayAqcHZtdykKK3sKK30KKwogI2lmZGVmIENPTkZJR19NRU1D Rwogc3RhdGljIGlubGluZSB2b2lkIGxydV9nZW5faW5pdF9tZW1jZyhzdHJ1Y3QgbWVtX2Nncm91 cCAqbWVtY2cpCiB7CmRpZmYgLS1naXQgYS9tbS9pbnRlcm5hbC5oIGIvbW0vaW50ZXJuYWwuaApp bmRleCA0ZGY2N2I2YjhjY2UuLjAwODJkNWZkZGRhYyAxMDA2NDQKLS0tIGEvbW0vaW50ZXJuYWwu aAorKysgYi9tbS9pbnRlcm5hbC5oCkBAIC04Myw2ICs4Myw3IEBAIHZtX2ZhdWx0X3QgZG9fc3dh cF9wYWdlKHN0cnVjdCB2bV9mYXVsdCAqdm1mKTsKIHZvaWQgZm9saW9fcm90YXRlX3JlY2xhaW1h YmxlKHN0cnVjdCBmb2xpbyAqZm9saW8pOwogYm9vbCBfX2ZvbGlvX2VuZF93cml0ZWJhY2soc3Ry dWN0IGZvbGlvICpmb2xpbyk7CiB2b2lkIGRlYWN0aXZhdGVfZmlsZV9mb2xpbyhzdHJ1Y3QgZm9s aW8gKmZvbGlvKTsKK3ZvaWQgZm9saW9fYWN0aXZhdGUoc3RydWN0IGZvbGlvICpmb2xpbyk7CiAK IHZvaWQgZnJlZV9wZ3RhYmxlcyhzdHJ1Y3QgbW11X2dhdGhlciAqdGxiLCBzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnN0YXJ0X3ZtYSwKIAkJdW5zaWduZWQgbG9uZyBmbG9vciwgdW5zaWduZWQgbG9u ZyBjZWlsaW5nKTsKZGlmZiAtLWdpdCBhL21tL21lbWNvbnRyb2wuYyBiL21tL21lbWNvbnRyb2wu YwppbmRleCA1ZmQzOGQxMjE0OWMuLjg4MjE4MDg2NmUzMSAxMDA2NDQKLS0tIGEvbW0vbWVtY29u dHJvbC5jCisrKyBiL21tL21lbWNvbnRyb2wuYwpAQCAtMjc4OSw2ICsyNzg5LDcgQEAgc3RhdGlj IHZvaWQgY29tbWl0X2NoYXJnZShzdHJ1Y3QgZm9saW8gKmZvbGlvLCBzdHJ1Y3QgbWVtX2Nncm91 cCAqbWVtY2cpCiAJICogLSBMUlUgaXNvbGF0aW9uCiAJICogLSBsb2NrX3BhZ2VfbWVtY2coKQog CSAqIC0gZXhjbHVzaXZlIHJlZmVyZW5jZQorCSAqIC0gbWVtX2Nncm91cF90cnlsb2NrX3BhZ2Vz KCkKIAkgKi8KIAlmb2xpby0+bWVtY2dfZGF0YSA9ICh1bnNpZ25lZCBsb25nKW1lbWNnOwogfQpk aWZmIC0tZ2l0IGEvbW0vcm1hcC5jIGIvbW0vcm1hcC5jCmluZGV4IDI4YWVmNDM0ZWE0MS4uN2Rj NmQ3N2FlODY1IDEwMDY0NAotLS0gYS9tbS9ybWFwLmMKKysrIGIvbW0vcm1hcC5jCkBAIC04MjUs NiArODI1LDEyIEBAIHN0YXRpYyBib29sIGZvbGlvX3JlZmVyZW5jZWRfb25lKHN0cnVjdCBmb2xp byAqZm9saW8sCiAJCX0KIAogCQlpZiAocHZtdy5wdGUpIHsKKwkJCWlmIChscnVfZ2VuX2VuYWJs ZWQoKSAmJiBwdGVfeW91bmcoKnB2bXcucHRlKSAmJgorCQkJICAgICEodm1hLT52bV9mbGFncyAm IChWTV9TRVFfUkVBRCB8IFZNX1JBTkRfUkVBRCkpKSB7CisJCQkJbHJ1X2dlbl9sb29rX2Fyb3Vu ZCgmcHZtdyk7CisJCQkJcmVmZXJlbmNlZCsrOworCQkJfQorCiAJCQlpZiAocHRlcF9jbGVhcl9m bHVzaF95b3VuZ19ub3RpZnkodm1hLCBhZGRyZXNzLAogCQkJCQkJcHZtdy5wdGUpKSB7CiAJCQkJ LyoKZGlmZiAtLWdpdCBhL21tL3N3YXAuYyBiL21tL3N3YXAuYwppbmRleCBmNzRmZDUxZmE5ZTEu LjBhMzg3MWE3MDk1MiAxMDA2NDQKLS0tIGEvbW0vc3dhcC5jCisrKyBiL21tL3N3YXAuYwpAQCAt MzY2LDcgKzM2Niw3IEBAIHN0YXRpYyB2b2lkIGZvbGlvX2FjdGl2YXRlX2RyYWluKGludCBjcHUp CiAJCWZvbGlvX2JhdGNoX21vdmVfbHJ1KGZiYXRjaCwgZm9saW9fYWN0aXZhdGVfZm4pOwogfQog Ci1zdGF0aWMgdm9pZCBmb2xpb19hY3RpdmF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKQordm9pZCBm b2xpb19hY3RpdmF0ZShzdHJ1Y3QgZm9saW8gKmZvbGlvKQogewogCWlmIChmb2xpb190ZXN0X2xy dShmb2xpbykgJiYgIWZvbGlvX3Rlc3RfYWN0aXZlKGZvbGlvKSAmJgogCSAgICAhZm9saW9fdGVz dF91bmV2aWN0YWJsZShmb2xpbykpIHsKQEAgLTM4NSw3ICszODUsNyBAQCBzdGF0aWMgaW5saW5l IHZvaWQgZm9saW9fYWN0aXZhdGVfZHJhaW4oaW50IGNwdSkKIHsKIH0KIAotc3RhdGljIHZvaWQg Zm9saW9fYWN0aXZhdGUoc3RydWN0IGZvbGlvICpmb2xpbykKK3ZvaWQgZm9saW9fYWN0aXZhdGUo c3RydWN0IGZvbGlvICpmb2xpbykKIHsKIAlzdHJ1Y3QgbHJ1dmVjICpscnV2ZWM7CiAKZGlmZiAt LWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggNGM1N2ZiNzQ5YTc0Li5mMzY1 Mzg2ZWI0NDEgMTAwNjQ0Ci0tLSBhL21tL3Ztc2Nhbi5jCisrKyBiL21tL3Ztc2Nhbi5jCkBAIC0x NjM1LDYgKzE2MzUsMTEgQEAgc3RhdGljIHVuc2lnbmVkIGludCBzaHJpbmtfcGFnZV9saXN0KHN0 cnVjdCBsaXN0X2hlYWQgKnBhZ2VfbGlzdCwKIAkJaWYgKCFzYy0+bWF5X3VubWFwICYmIGZvbGlv X21hcHBlZChmb2xpbykpCiAJCQlnb3RvIGtlZXBfbG9ja2VkOwogCisJCS8qIGZvbGlvX3VwZGF0 ZV9nZW4oKSB0cmllZCB0byBwcm9tb3RlIHRoaXMgcGFnZT8gKi8KKwkJaWYgKGxydV9nZW5fZW5h YmxlZCgpICYmICFpZ25vcmVfcmVmZXJlbmNlcyAmJgorCQkgICAgZm9saW9fbWFwcGVkKGZvbGlv KSAmJiBmb2xpb190ZXN0X3JlZmVyZW5jZWQoZm9saW8pKQorCQkJZ290byBrZWVwX2xvY2tlZDsK KwogCQkvKgogCQkgKiBUaGUgbnVtYmVyIG9mIGRpcnR5IHBhZ2VzIGRldGVybWluZXMgaWYgYSBu b2RlIGlzIG1hcmtlZAogCQkgKiByZWNsYWltX2Nvbmdlc3RlZC4ga3N3YXBkIHdpbGwgc3RhbGwg YW5kIHN0YXJ0IHdyaXRpbmcKQEAgLTMyMTksNiArMzIyNCwyOSBAQCBzdGF0aWMgYm9vbCBwb3Np dGl2ZV9jdHJsX2VycihzdHJ1Y3QgY3RybF9wb3MgKnNwLCBzdHJ1Y3QgY3RybF9wb3MgKnB2KQog ICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhZ2luZwogICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKi8KIAorLyogcHJvbW90ZSBwYWdlcyBhY2Nlc3NlZCB0aHJvdWdoIHBhZ2UgdGFibGVzICov CitzdGF0aWMgaW50IGZvbGlvX3VwZGF0ZV9nZW4oc3RydWN0IGZvbGlvICpmb2xpbywgaW50IGdl bikKK3sKKwl1bnNpZ25lZCBsb25nIG5ld19mbGFncywgb2xkX2ZsYWdzID0gUkVBRF9PTkNFKGZv bGlvLT5mbGFncyk7CisKKwlWTV9XQVJOX09OX09OQ0UoZ2VuID49IE1BWF9OUl9HRU5TKTsKKwlW TV9XQVJOX09OX09OQ0UoIXJjdV9yZWFkX2xvY2tfaGVsZCgpKTsKKworCWRvIHsKKwkJLyogbHJ1 X2dlbl9kZWxfZm9saW8oKSBoYXMgaXNvbGF0ZWQgdGhpcyBwYWdlPyAqLworCQlpZiAoIShvbGRf ZmxhZ3MgJiBMUlVfR0VOX01BU0spKSB7CisJCQkvKiBmb3Igc2hyaW5rX3BhZ2VfbGlzdCgpICov CisJCQluZXdfZmxhZ3MgPSBvbGRfZmxhZ3MgfCBCSVQoUEdfcmVmZXJlbmNlZCk7CisJCQljb250 aW51ZTsKKwkJfQorCisJCW5ld19mbGFncyA9IG9sZF9mbGFncyAmIH4oTFJVX0dFTl9NQVNLIHwg TFJVX1JFRlNfTUFTSyB8IExSVV9SRUZTX0ZMQUdTKTsKKwkJbmV3X2ZsYWdzIHw9IChnZW4gKyAx VUwpIDw8IExSVV9HRU5fUEdPRkY7CisJfSB3aGlsZSAoIXRyeV9jbXB4Y2hnKCZmb2xpby0+Zmxh Z3MsICZvbGRfZmxhZ3MsIG5ld19mbGFncykpOworCisJcmV0dXJuICgob2xkX2ZsYWdzICYgTFJV X0dFTl9NQVNLKSA+PiBMUlVfR0VOX1BHT0ZGKSAtIDE7Cit9CisKIC8qIHByb3RlY3QgcGFnZXMg YWNjZXNzZWQgbXVsdGlwbGUgdGltZXMgdGhyb3VnaCBmaWxlIGRlc2NyaXB0b3JzICovCiBzdGF0 aWMgaW50IGZvbGlvX2luY19nZW4oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8g KmZvbGlvLCBib29sIHJlY2xhaW1pbmcpCiB7CkBAIC0zMjMwLDYgKzMyNTgsMTEgQEAgc3RhdGlj IGludCBmb2xpb19pbmNfZ2VuKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3RydWN0IGZvbGlvICpm b2xpbywgYm9vbCByZWNsYWkKIAlWTV9XQVJOX09OX09OQ0VfRk9MSU8oIShvbGRfZmxhZ3MgJiBM UlVfR0VOX01BU0spLCBmb2xpbyk7CiAKIAlkbyB7CisJCW5ld19nZW4gPSAoKG9sZF9mbGFncyAm IExSVV9HRU5fTUFTSykgPj4gTFJVX0dFTl9QR09GRikgLSAxOworCQkvKiBmb2xpb191cGRhdGVf Z2VuKCkgaGFzIHByb21vdGVkIHRoaXMgcGFnZT8gKi8KKwkJaWYgKG5ld19nZW4gPj0gMCAmJiBu ZXdfZ2VuICE9IG9sZF9nZW4pCisJCQlyZXR1cm4gbmV3X2dlbjsKKwogCQluZXdfZ2VuID0gKG9s ZF9nZW4gKyAxKSAlIE1BWF9OUl9HRU5TOwogCiAJCW5ld19mbGFncyA9IG9sZF9mbGFncyAmIH4o TFJVX0dFTl9NQVNLIHwgTFJVX1JFRlNfTUFTSyB8IExSVV9SRUZTX0ZMQUdTKTsKQEAgLTMyNDQs NiArMzI3Nyw0MyBAQCBzdGF0aWMgaW50IGZvbGlvX2luY19nZW4oc3RydWN0IGxydXZlYyAqbHJ1 dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlvLCBib29sIHJlY2xhaQogCXJldHVybiBuZXdfZ2VuOwog fQogCitzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfcHRlX3BmbihwdGVfdCBwdGUsIHN0cnVjdCB2 bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIGFkZHIpCit7CisJdW5zaWduZWQgbG9u ZyBwZm4gPSBwdGVfcGZuKHB0ZSk7CisKKwlWTV9XQVJOX09OX09OQ0UoYWRkciA8IHZtYS0+dm1f c3RhcnQgfHwgYWRkciA+PSB2bWEtPnZtX2VuZCk7CisKKwlpZiAoIXB0ZV9wcmVzZW50KHB0ZSkg fHwgaXNfemVyb19wZm4ocGZuKSkKKwkJcmV0dXJuIC0xOworCisJaWYgKFdBUk5fT05fT05DRShw dGVfZGV2bWFwKHB0ZSkgfHwgcHRlX3NwZWNpYWwocHRlKSkpCisJCXJldHVybiAtMTsKKworCWlm IChXQVJOX09OX09OQ0UoIXBmbl92YWxpZChwZm4pKSkKKwkJcmV0dXJuIC0xOworCisJcmV0dXJu IHBmbjsKK30KKworc3RhdGljIHN0cnVjdCBmb2xpbyAqZ2V0X3Bmbl9mb2xpbyh1bnNpZ25lZCBs b25nIHBmbiwgc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnLAorCQkJCSAgIHN0cnVjdCBwZ2xpc3Rf ZGF0YSAqcGdkYXQpCit7CisJc3RydWN0IGZvbGlvICpmb2xpbzsKKworCS8qIHRyeSB0byBhdm9p ZCB1bm5lY2Vzc2FyeSBtZW1vcnkgbG9hZHMgKi8KKwlpZiAocGZuIDwgcGdkYXQtPm5vZGVfc3Rh cnRfcGZuIHx8IHBmbiA+PSBwZ2RhdF9lbmRfcGZuKHBnZGF0KSkKKwkJcmV0dXJuIE5VTEw7CisK Kwlmb2xpbyA9IHBmbl9mb2xpbyhwZm4pOworCWlmIChmb2xpb19uaWQoZm9saW8pICE9IHBnZGF0 LT5ub2RlX2lkKQorCQlyZXR1cm4gTlVMTDsKKworCWlmIChmb2xpb19tZW1jZ19yY3UoZm9saW8p ICE9IG1lbWNnKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiBmb2xpbzsKK30KKwogc3RhdGlj IHZvaWQgaW5jX21pbl9zZXEoc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBpbnQgdHlwZSkKIHsKIAlz dHJ1Y3QgbHJ1X2dlbl9zdHJ1Y3QgKmxydWdlbiA9ICZscnV2ZWMtPmxydWdlbjsKQEAgLTM0NDUs NiArMzUxNSwxMTQgQEAgc3RhdGljIHZvaWQgbHJ1X2dlbl9hZ2Vfbm9kZShzdHJ1Y3QgcGdsaXN0 X2RhdGEgKnBnZGF0LCBzdHJ1Y3Qgc2Nhbl9jb250cm9sICpzYykKIAl9IHdoaWxlICgobWVtY2cg PSBtZW1fY2dyb3VwX2l0ZXIoTlVMTCwgbWVtY2csIE5VTEwpKSk7CiB9CiAKKy8qCisgKiBUaGlz IGZ1bmN0aW9uIGV4cGxvaXRzIHNwYXRpYWwgbG9jYWxpdHkgd2hlbiBzaHJpbmtfcGFnZV9saXN0 KCkgd2Fsa3MgdGhlCisgKiBybWFwLiBJdCBzY2FucyB0aGUgYWRqYWNlbnQgUFRFcyBvZiBhIHlv dW5nIFBURSBhbmQgcHJvbW90ZXMgaG90IHBhZ2VzLgorICovCit2b2lkIGxydV9nZW5fbG9va19h cm91bmQoc3RydWN0IHBhZ2Vfdm1hX21hcHBlZF93YWxrICpwdm13KQoreworCWludCBpOworCXB0 ZV90ICpwdGU7CisJdW5zaWduZWQgbG9uZyBzdGFydDsKKwl1bnNpZ25lZCBsb25nIGVuZDsKKwl1 bnNpZ25lZCBsb25nIGFkZHI7CisJdW5zaWduZWQgbG9uZyBiaXRtYXBbQklUU19UT19MT05HUyhN SU5fTFJVX0JBVENIKV0gPSB7fTsKKwlzdHJ1Y3QgZm9saW8gKmZvbGlvID0gcGZuX2ZvbGlvKHB2 bXctPnBmbik7CisJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnID0gZm9saW9fbWVtY2coZm9saW8p OworCXN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQgPSBmb2xpb19wZ2RhdChmb2xpbyk7CisJc3Ry dWN0IGxydXZlYyAqbHJ1dmVjID0gbWVtX2Nncm91cF9scnV2ZWMobWVtY2csIHBnZGF0KTsKKwlE RUZJTkVfTUFYX1NFUShscnV2ZWMpOworCWludCBvbGRfZ2VuLCBuZXdfZ2VuID0gbHJ1X2dlbl9m cm9tX3NlcShtYXhfc2VxKTsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQocHZtdy0+cHRsKTsKKwlW TV9XQVJOX09OX09OQ0VfRk9MSU8oZm9saW9fdGVzdF9scnUoZm9saW8pLCBmb2xpbyk7CisKKwlp ZiAoc3Bpbl9pc19jb250ZW5kZWQocHZtdy0+cHRsKSkKKwkJcmV0dXJuOworCisJc3RhcnQgPSBt YXgocHZtdy0+YWRkcmVzcyAmIFBNRF9NQVNLLCBwdm13LT52bWEtPnZtX3N0YXJ0KTsKKwllbmQg PSBtaW4ocHZtdy0+YWRkcmVzcyB8IH5QTURfTUFTSywgcHZtdy0+dm1hLT52bV9lbmQgLSAxKSAr IDE7CisKKwlpZiAoZW5kIC0gc3RhcnQgPiBNSU5fTFJVX0JBVENIICogUEFHRV9TSVpFKSB7CisJ CWlmIChwdm13LT5hZGRyZXNzIC0gc3RhcnQgPCBNSU5fTFJVX0JBVENIICogUEFHRV9TSVpFIC8g MikKKwkJCWVuZCA9IHN0YXJ0ICsgTUlOX0xSVV9CQVRDSCAqIFBBR0VfU0laRTsKKwkJZWxzZSBp ZiAoZW5kIC0gcHZtdy0+YWRkcmVzcyA8IE1JTl9MUlVfQkFUQ0ggKiBQQUdFX1NJWkUgLyAyKQor CQkJc3RhcnQgPSBlbmQgLSBNSU5fTFJVX0JBVENIICogUEFHRV9TSVpFOworCQllbHNlIHsKKwkJ CXN0YXJ0ID0gcHZtdy0+YWRkcmVzcyAtIE1JTl9MUlVfQkFUQ0ggKiBQQUdFX1NJWkUgLyAyOwor CQkJZW5kID0gcHZtdy0+YWRkcmVzcyArIE1JTl9MUlVfQkFUQ0ggKiBQQUdFX1NJWkUgLyAyOwor CQl9CisJfQorCisJcHRlID0gcHZtdy0+cHRlIC0gKHB2bXctPmFkZHJlc3MgLSBzdGFydCkgLyBQ QUdFX1NJWkU7CisKKwlyY3VfcmVhZF9sb2NrKCk7CisJYXJjaF9lbnRlcl9sYXp5X21tdV9tb2Rl KCk7CisKKwlmb3IgKGkgPSAwLCBhZGRyID0gc3RhcnQ7IGFkZHIgIT0gZW5kOyBpKyssIGFkZHIg Kz0gUEFHRV9TSVpFKSB7CisJCXVuc2lnbmVkIGxvbmcgcGZuOworCisJCXBmbiA9IGdldF9wdGVf cGZuKHB0ZVtpXSwgcHZtdy0+dm1hLCBhZGRyKTsKKwkJaWYgKHBmbiA9PSAtMSkKKwkJCWNvbnRp bnVlOworCisJCWlmICghcHRlX3lvdW5nKHB0ZVtpXSkpCisJCQljb250aW51ZTsKKworCQlmb2xp byA9IGdldF9wZm5fZm9saW8ocGZuLCBtZW1jZywgcGdkYXQpOworCQlpZiAoIWZvbGlvKQorCQkJ Y29udGludWU7CisKKwkJaWYgKCFwdGVwX3Rlc3RfYW5kX2NsZWFyX3lvdW5nKHB2bXctPnZtYSwg YWRkciwgcHRlICsgaSkpCisJCQljb250aW51ZTsKKworCQlpZiAocHRlX2RpcnR5KHB0ZVtpXSkg JiYgIWZvbGlvX3Rlc3RfZGlydHkoZm9saW8pICYmCisJCSAgICAhKGZvbGlvX3Rlc3RfYW5vbihm b2xpbykgJiYgZm9saW9fdGVzdF9zd2FwYmFja2VkKGZvbGlvKSAmJgorCQkgICAgICAhZm9saW9f dGVzdF9zd2FwY2FjaGUoZm9saW8pKSkKKwkJCWZvbGlvX21hcmtfZGlydHkoZm9saW8pOworCisJ CW9sZF9nZW4gPSBmb2xpb19scnVfZ2VuKGZvbGlvKTsKKwkJaWYgKG9sZF9nZW4gPCAwKQorCQkJ Zm9saW9fc2V0X3JlZmVyZW5jZWQoZm9saW8pOworCQllbHNlIGlmIChvbGRfZ2VuICE9IG5ld19n ZW4pCisJCQlfX3NldF9iaXQoaSwgYml0bWFwKTsKKwl9CisKKwlhcmNoX2xlYXZlX2xhenlfbW11 X21vZGUoKTsKKwlyY3VfcmVhZF91bmxvY2soKTsKKworCWlmIChiaXRtYXBfd2VpZ2h0KGJpdG1h cCwgTUlOX0xSVV9CQVRDSCkgPCBQQUdFVkVDX1NJWkUpIHsKKwkJZm9yX2VhY2hfc2V0X2JpdChp LCBiaXRtYXAsIE1JTl9MUlVfQkFUQ0gpIHsKKwkJCWZvbGlvID0gcGZuX2ZvbGlvKHB0ZV9wZm4o cHRlW2ldKSk7CisJCQlmb2xpb19hY3RpdmF0ZShmb2xpbyk7CisJCX0KKwkJcmV0dXJuOworCX0K KworCS8qIGZvbGlvX3VwZGF0ZV9nZW4oKSByZXF1aXJlcyBzdGFibGUgZm9saW9fbWVtY2coKSAq LworCWlmICghbWVtX2Nncm91cF90cnlsb2NrX3BhZ2VzKG1lbWNnKSkKKwkJcmV0dXJuOworCisJ c3Bpbl9sb2NrX2lycSgmbHJ1dmVjLT5scnVfbG9jayk7CisJbmV3X2dlbiA9IGxydV9nZW5fZnJv bV9zZXEobHJ1dmVjLT5scnVnZW4ubWF4X3NlcSk7CisKKwlmb3JfZWFjaF9zZXRfYml0KGksIGJp dG1hcCwgTUlOX0xSVV9CQVRDSCkgeworCQlmb2xpbyA9IHBmbl9mb2xpbyhwdGVfcGZuKHB0ZVtp XSkpOworCQlpZiAoZm9saW9fbWVtY2dfcmN1KGZvbGlvKSAhPSBtZW1jZykKKwkJCWNvbnRpbnVl OworCisJCW9sZF9nZW4gPSBmb2xpb191cGRhdGVfZ2VuKGZvbGlvLCBuZXdfZ2VuKTsKKwkJaWYg KG9sZF9nZW4gPCAwIHx8IG9sZF9nZW4gPT0gbmV3X2dlbikKKwkJCWNvbnRpbnVlOworCisJCWxy dV9nZW5fdXBkYXRlX3NpemUobHJ1dmVjLCBmb2xpbywgb2xkX2dlbiwgbmV3X2dlbik7CisJfQor CisJc3Bpbl91bmxvY2tfaXJxKCZscnV2ZWMtPmxydV9sb2NrKTsKKworCW1lbV9jZ3JvdXBfdW5s b2NrX3BhZ2VzKCk7Cit9CisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGUgZXZpY3Rpb24KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0z NDgxLDYgKzM2NTksMTIgQEAgc3RhdGljIGJvb2wgc29ydF9mb2xpbyhzdHJ1Y3QgbHJ1dmVjICps cnV2ZWMsIHN0cnVjdCBmb2xpbyAqZm9saW8sIGludCB0aWVyX2lkeCkKIAkJcmV0dXJuIHRydWU7 CiAJfQogCisJLyogcHJvbW90ZWQgKi8KKwlpZiAoZ2VuICE9IGxydV9nZW5fZnJvbV9zZXEobHJ1 Z2VuLT5taW5fc2VxW3R5cGVdKSkgeworCQlsaXN0X21vdmUoJmZvbGlvLT5scnUsICZscnVnZW4t Pmxpc3RzW2dlbl1bdHlwZV1bem9uZV0pOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKIAkvKiBwcm90 ZWN0ZWQgKi8KIAlpZiAodGllciA+IHRpZXJfaWR4KSB7CiAJCWludCBoaXN0ID0gbHJ1X2hpc3Rf ZnJvbV9zZXEobHJ1Z2VuLT5taW5fc2VxW3R5cGVdKTsKLS0gCjIuMzcuMS41OTUuZzcxOGEzYThm MDQtZ29vZwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xp bnV4LWFybS1rZXJuZWwK