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 14E7DC00140 for ; Mon, 15 Aug 2022 07:37:44 +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=ArUVefZxDB/QnigvJJLgKoOO9LfC5WIk4/RMwr/x+TA=; b=ZBJppVPoklIvysiIyPcHeMdO22 c6eCURJ5Kf7AYjhbeKrTKqfQxMG5Fj10MpD2PyRwvRksORDdarpDd6jWxGV+GYlukHlOlbGdONWsn jCQzq9sI5zvREiKwJyUu4mGZFeFBjBD08kD/s+qPGmTB87/bhmkPwLsLCmWEDaKV6qcr4CmTrK1rb WduPfJE3y2dPAHklvRvN58BwZz3ESHNR4NB8zL2GGY3DbTFZfNK6IzVaAq6UaHYr7NrZo2VFO6Ki4 zJXNSUKvQYpmbRKe0dyzqeFD3X4ZytsnWTpLfJXhhlQLUx+4Ksu6v0FOfSEnnT2b4BAHvRZcyqBKl pwVsYEzA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1oNUe3-00Ccx9-4y; Mon, 15 Aug 2022 07:36:19 +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 1oNUdY-00Ccgk-3u for linux-arm-kernel@bombadil.infradead.org; Mon, 15 Aug 2022 07:35:48 +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=E6RW7oExGDwF9qsN/IMyA2O3bSn0ZQGVotoxDxLsnOA=; b=lic20RRhUtFAa4Kw+gHWW3k4se M4LTjzKpu4jXbHKlyZdy2Fmlb3yBqNHyxO0WCfMSO7SKpUlmtyQXTRVFCJZF8J/Bgv0xxlBgUtHSC dnTyVfnHU0Ht8i0e4ylM2ONCql/deenmkp1jieO8/L/FgkVapy4/8moSvhPluBwCDGFfi801Oxala t91WEqlEjnh1h+7ADrEjZViMJkBKcRVMkRaec2uV2/CNYtPDi7pu5zmdR4bbPxEJm34zHGtE3aFfC w53vAJFWpPfvixGPGVzY9X+o20KYMi7sEiVlRyqjhmsOwP8aDUJVb61G7B+tNrE93ns/M6omw2ett mG7JXwGA==; Received: from mail-yb1-xb4a.google.com ([2607:f8b0:4864:20::b4a]) by casper.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1oNUJ0-005Vch-T1 for linux-arm-kernel@lists.infradead.org; Mon, 15 Aug 2022 07:14:38 +0000 Received: by mail-yb1-xb4a.google.com with SMTP id l73-20020a25254c000000b006847d635098so4990286ybl.2 for ; Mon, 15 Aug 2022 00:14:31 -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=E6RW7oExGDwF9qsN/IMyA2O3bSn0ZQGVotoxDxLsnOA=; b=EAoao/xiYuQhEEfvMwyWTmDwi7CyT7eRtED7HARIe05oU0QCvqQY1y0ZagTplcpN+8 jGgsL0sY0/j0nPAdkREVlfXKPxs38EIIpJBZyPgYE+VMbu1z0pRW/yCn+H/gStXjTghN NIvW4VBaTZUy6s+XqTiGydV7DO0LJhip5wkoUG+NmqjYUdzc9OqEdVpjo2UIiczRji0o IHkFoJ+oWlNxroBSmKbeSK4LfXYQ6MolnSVYH3nqjm/ZDCSgUAfEwVZj+px0keXEJauv SRrg6XM7JQaEfqby3QoVS7VFEQRD5RiPJ9MpIc9WheYRVlZzTOB/YVldGJlufKfXelVI wvvQ== 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=E6RW7oExGDwF9qsN/IMyA2O3bSn0ZQGVotoxDxLsnOA=; b=CR0lX3OCLPiwDHIlSYBPp5Qi5EtcrCWiSWatZuf7JBefE7zsAVNILTMFQdi9Hq+ofj Q6SyiK/MXX2ptBTK9SPLswy8I+PAGeVwyJutNtv/tqb1yLob0LMfZO+AI4SvOrE/vGHh NSKgQbHwSONklw80Z+AD0Qmma1QQR3VdVqkw2kegUdaH7S23MIe8clypvcC5Hcml0a1d u20X5lezlCA9ECR7N3qoqymOJOaPwORM/bG9M1Bzu9AnIqdvt6+pI26q58HUQ/8rLhLp /MdL1MGjjvvX8+etZHpTGhooriZ8RIy7FnuUZN9vCz9/cTtwL8Qe0CiomPZESDQMNWvE SYMQ== X-Gm-Message-State: ACgBeo3ktLakR3u3XICeQkV+a+iZo5B1670HNbAVO4vA+5Qc44HsKhlz uyh2ImKGiqKySyRCT12OW69GZaA/qJY= X-Google-Smtp-Source: AA6agR7+d8Kb/hCTsCDjdKuRWJVf09bOPnmzn8wnPv7wrzNnwxK+iIIunRoxV0JTcgoy0aFK27VDGlyvexg= X-Received: from yuzhao.bld.corp.google.com ([2620:15c:183:200:d91:5887:ac93:ddf0]) (user=yuzhao job=sendgmr) by 2002:a25:b686:0:b0:670:ae47:72f1 with SMTP id s6-20020a25b686000000b00670ae4772f1mr10937147ybj.255.1660547668212; Mon, 15 Aug 2022 00:14:28 -0700 (PDT) Date: Mon, 15 Aug 2022 01:13:29 -0600 In-Reply-To: <20220815071332.627393-1-yuzhao@google.com> Message-Id: <20220815071332.627393-11-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 10/14] mm: multi-gen LRU: kill switch 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 , 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_081434_979091_2D496022 X-CRM114-Status: GOOD ( 25.59 ) 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 QWRkIC9zeXMva2VybmVsL21tL2xydV9nZW4vZW5hYmxlZCBhcyBhIGtpbGwgc3dpdGNoLiBDb21w b25lbnRzIHRoYXQKY2FuIGJlIGRpc2FibGVkIGluY2x1ZGU6CiAgMHgwMDAxOiB0aGUgbXVsdGkt Z2VuIExSVSBjb3JlCiAgMHgwMDAyOiB3YWxraW5nIHBhZ2UgdGFibGUsIHdoZW4gYXJjaF9oYXNf aHdfcHRlX3lvdW5nKCkgcmV0dXJucwogICAgICAgICAgdHJ1ZQogIDB4MDAwNDogY2xlYXJpbmcg dGhlIGFjY2Vzc2VkIGJpdCBpbiBub24tbGVhZiBQTUQgZW50cmllcywgd2hlbgogICAgICAgICAg Q09ORklHX0FSQ0hfSEFTX05PTkxFQUZfUE1EX1lPVU5HPXkKICBbeVluTl06IGFwcGx5IHRvIGFs bCB0aGUgY29tcG9uZW50cyBhYm92ZQpFLmcuLAogIGVjaG8geSA+L3N5cy9rZXJuZWwvbW0vbHJ1 X2dlbi9lbmFibGVkCiAgY2F0IC9zeXMva2VybmVsL21tL2xydV9nZW4vZW5hYmxlZAogIDB4MDAw NwogIGVjaG8gNSA+L3N5cy9rZXJuZWwvbW0vbHJ1X2dlbi9lbmFibGVkCiAgY2F0IC9zeXMva2Vy bmVsL21tL2xydV9nZW4vZW5hYmxlZAogIDB4MDAwNQoKTkI6IHRoZSBwYWdlIHRhYmxlIHdhbGtz IGhhcHBlbiBvbiB0aGUgc2NhbGUgb2Ygc2Vjb25kcyB1bmRlciBoZWF2eQptZW1vcnkgcHJlc3N1 cmUsIGluIHdoaWNoIGNhc2UgdGhlIG1tYXBfbG9jayBjb250ZW50aW9uIGlzIGEgbGVzc2VyCmNv bmNlcm4sIGNvbXBhcmVkIHdpdGggdGhlIExSVSBsb2NrIGNvbnRlbnRpb24gYW5kIHRoZSBJL08g Y29uZ2VzdGlvbi4KU28gZmFyIHRoZSBvbmx5IHdlbGwta25vd24gY2FzZSBvZiB0aGUgbW1hcF9s b2NrIGNvbnRlbnRpb24gaGFwcGVucyBvbgpBbmRyb2lkLCBkdWUgdG8gU2N1ZG8gWzFdIHdoaWNo IGFsbG9jYXRlcyBzZXZlcmFsIHRob3VzYW5kIFZNQXMgZm9yCm1lcmVseSBhIGZldyBodW5kcmVk IE1Ccy4gVGhlIFNQRiBhbmQgdGhlIE1hcGxlIFRyZWUgYWxzbyBoYXZlCnByb3ZpZGVkIHRoZWly IG93biBhc3Nlc3NtZW50cyBbMl1bM10uIEhvd2V2ZXIsIGlmIHdhbGtpbmcgcGFnZSB0YWJsZXMK ZG9lcyB3b3JzZW4gdGhlIG1tYXBfbG9jayBjb250ZW50aW9uLCB0aGUga2lsbCBzd2l0Y2ggY2Fu IGJlIHVzZWQgdG8KZGlzYWJsZSBpdC4gSW4gdGhpcyBjYXNlIHRoZSBtdWx0aS1nZW4gTFJVIHdp bGwgc3VmZmVyIGEgbWlub3IKcGVyZm9ybWFuY2UgZGVncmFkYXRpb24sIGFzIHNob3duIHByZXZp b3VzbHkuCgpDbGVhcmluZyB0aGUgYWNjZXNzZWQgYml0IGluIG5vbi1sZWFmIFBNRCBlbnRyaWVz IGNhbiBhbHNvIGJlCmRpc2FibGVkLCBzaW5jZSB0aGlzIGJlaGF2aW9yIHdhcyBub3QgdGVzdGVk IG9uIHg4NiB2YXJpZXRpZXMgb3RoZXIKdGhhbiBJbnRlbCBhbmQgQU1ELgoKWzFdIGh0dHBzOi8v c291cmNlLmFuZHJvaWQuY29tL2RldmljZXMvdGVjaC9kZWJ1Zy9zY3VkbwpbMl0gaHR0cHM6Ly9s b3JlLmtlcm5lbC5vcmcvci8yMDIyMDEyODEzMTAwNi42NzcxMi0xLW1pY2hlbEBsZXNwaW5hc3Nl Lm9yZy8KWzNdIGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3IvMjAyMjA0MjYxNTA2MTYuMzkzNzU3 MS0xLUxpYW0uSG93bGV0dEBvcmFjbGUuY29tLwoKU2lnbmVkLW9mZi1ieTogWXUgWmhhbyA8eXV6 aGFvQGdvb2dsZS5jb20+CkFja2VkLWJ5OiBCcmlhbiBHZWZmb24gPGJnZWZmb25AZ29vZ2xlLmNv bT4KQWNrZWQtYnk6IEphbiBBbGV4YW5kZXIgU3RlZmZlbnMgKGhlZnRpZykgPGhlZnRpZ0BhcmNo bGludXgub3JnPgpBY2tlZC1ieTogT2xla3NhbmRyIE5hdGFsZW5rbyA8b2xla3NhbmRyQG5hdGFs ZW5rby5uYW1lPgpBY2tlZC1ieTogU3RldmVuIEJhcnJldHQgPHN0ZXZlbkBsaXF1b3JpeC5uZXQ+ CkFja2VkLWJ5OiBTdWxlaW1hbiBTb3VobGFsIDxzdWxlaW1hbkBnb29nbGUuY29tPgpUZXN0ZWQt Ynk6IERhbmllbCBCeXJuZSA8ZGpieXJuZUBtdHUuZWR1PgpUZXN0ZWQtYnk6IERvbmFsZCBDYXJy IDxkQGNoYW9zLXJlaW5zLmNvbT4KVGVzdGVkLWJ5OiBIb2xnZXIgSG9mZnN0w6R0dGUgPGhvbGdl ckBhcHBsaWVkLWFzeW5jaHJvbnkuY29tPgpUZXN0ZWQtYnk6IEtvbnN0YW50aW4gS2hhcmxhbW92 IDxIaS1BbmdlbEB5YW5kZXgucnU+ClRlc3RlZC1ieTogU2h1YW5nIFpoYWkgPHN6aGFpMkBjcy5y b2NoZXN0ZXIuZWR1PgpUZXN0ZWQtYnk6IFNvZmlhIFRyaW5oIDxzb2ZpYS50cmluaEBlZGkud29y a3M+ClRlc3RlZC1ieTogVmFpYmhhdiBKYWluIDx2YWliaGF2QGxpbnV4LmlibS5jb20+Ci0tLQog aW5jbHVkZS9saW51eC9jZ3JvdXAuaCAgICAgICAgICB8ICAxNSArKy0KIGluY2x1ZGUvbGludXgv bW1faW5saW5lLmggICAgICAgfCAgMTUgKystCiBpbmNsdWRlL2xpbnV4L21tem9uZS5oICAgICAg ICAgIHwgICA5ICsrCiBrZXJuZWwvY2dyb3VwL2Nncm91cC1pbnRlcm5hbC5oIHwgICAxIC0KIG1t L0tjb25maWcgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwogbW0vdm1zY2FuLmMgICAgICAg ICAgICAgICAgICAgICB8IDIzMSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogNiBm aWxlcyBjaGFuZ2VkLCAyNjggaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9pbmNsdWRlL2xpbnV4L2Nncm91cC5oIGIvaW5jbHVkZS9saW51eC9jZ3JvdXAuaAppbmRl eCBlZDUzYmZlN2M0NmMuLmRlZTgwZTY3MDI5MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9j Z3JvdXAuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nncm91cC5oCkBAIC00MzIsNiArNDMyLDE4IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBjZ3JvdXBfcHV0KHN0cnVjdCBjZ3JvdXAgKmNncnApCiAJY3Nz X3B1dCgmY2dycC0+c2VsZik7CiB9CiAKK2V4dGVybiBzdHJ1Y3QgbXV0ZXggY2dyb3VwX211dGV4 OworCitzdGF0aWMgaW5saW5lIHZvaWQgY2dyb3VwX2xvY2sodm9pZCkKK3sKKwltdXRleF9sb2Nr KCZjZ3JvdXBfbXV0ZXgpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgY2dyb3VwX3VubG9jayh2 b2lkKQoreworCW11dGV4X3VubG9jaygmY2dyb3VwX211dGV4KTsKK30KKwogLyoqCiAgKiB0YXNr X2Nzc19zZXRfY2hlY2sgLSBvYnRhaW4gYSB0YXNrJ3MgY3NzX3NldCB3aXRoIGV4dHJhIGFjY2Vz cyBjb25kaXRpb25zCiAgKiBAdGFzazogdGhlIHRhc2sgdG8gb2J0YWluIGNzc19zZXQgZm9yCkBA IC00NDYsNyArNDU4LDYgQEAgc3RhdGljIGlubGluZSB2b2lkIGNncm91cF9wdXQoc3RydWN0IGNn cm91cCAqY2dycCkKICAqIGFzIGxvY2tzIHVzZWQgZHVyaW5nIHRoZSBjZ3JvdXBfc3Vic3lzOjph dHRhY2goKSBtZXRob2RzLgogICovCiAjaWZkZWYgQ09ORklHX1BST1ZFX1JDVQotZXh0ZXJuIHN0 cnVjdCBtdXRleCBjZ3JvdXBfbXV0ZXg7CiBleHRlcm4gc3BpbmxvY2tfdCBjc3Nfc2V0X2xvY2s7 CiAjZGVmaW5lIHRhc2tfY3NzX3NldF9jaGVjayh0YXNrLCBfX2MpCQkJCQlcCiAJcmN1X2RlcmVm ZXJlbmNlX2NoZWNrKCh0YXNrKS0+Y2dyb3VwcywJCQkJXApAQCAtNzA4LDYgKzcxOSw4IEBAIHN0 cnVjdCBjZ3JvdXA7CiBzdGF0aWMgaW5saW5lIHU2NCBjZ3JvdXBfaWQoY29uc3Qgc3RydWN0IGNn cm91cCAqY2dycCkgeyByZXR1cm4gMTsgfQogc3RhdGljIGlubGluZSB2b2lkIGNzc19nZXQoc3Ry dWN0IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcykge30KIHN0YXRpYyBpbmxpbmUgdm9pZCBjc3Nf cHV0KHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRlICpjc3MpIHt9CitzdGF0aWMgaW5saW5lIHZv aWQgY2dyb3VwX2xvY2sodm9pZCkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBjZ3JvdXBfdW5sb2Nr KHZvaWQpIHt9CiBzdGF0aWMgaW5saW5lIGludCBjZ3JvdXBfYXR0YWNoX3Rhc2tfYWxsKHN0cnVj dCB0YXNrX3N0cnVjdCAqZnJvbSwKIAkJCQkJIHN0cnVjdCB0YXNrX3N0cnVjdCAqdCkgeyByZXR1 cm4gMDsgfQogc3RhdGljIGlubGluZSBpbnQgY2dyb3Vwc3RhdHNfYnVpbGQoc3RydWN0IGNncm91 cHN0YXRzICpzdGF0cywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW1faW5saW5lLmggYi9p bmNsdWRlL2xpbnV4L21tX2lubGluZS5oCmluZGV4IGYyYjIyOTZhNDJmOS4uNDk0OWVkYTlhOWEy IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tX2lubGluZS5oCisrKyBiL2luY2x1ZGUvbGlu dXgvbW1faW5saW5lLmgKQEAgLTEwNiwxMCArMTA2LDIxIEBAIHN0YXRpYyBfX2Fsd2F5c19pbmxp bmUgZW51bSBscnVfbGlzdCBmb2xpb19scnVfbGlzdChzdHJ1Y3QgZm9saW8gKmZvbGlvKQogCiAj aWZkZWYgQ09ORklHX0xSVV9HRU4KIAorI2lmZGVmIENPTkZJR19MUlVfR0VOX0VOQUJMRUQKIHN0 YXRpYyBpbmxpbmUgYm9vbCBscnVfZ2VuX2VuYWJsZWQodm9pZCkKIHsKLQlyZXR1cm4gdHJ1ZTsK KwlERUNMQVJFX1NUQVRJQ19LRVlfVFJVRShscnVfZ2VuX2NhcHNbTlJfTFJVX0dFTl9DQVBTXSk7 CisKKwlyZXR1cm4gc3RhdGljX2JyYW5jaF9saWtlbHkoJmxydV9nZW5fY2Fwc1tMUlVfR0VOX0NP UkVdKTsKIH0KKyNlbHNlCitzdGF0aWMgaW5saW5lIGJvb2wgbHJ1X2dlbl9lbmFibGVkKHZvaWQp Cit7CisJREVDTEFSRV9TVEFUSUNfS0VZX0ZBTFNFKGxydV9nZW5fY2Fwc1tOUl9MUlVfR0VOX0NB UFNdKTsKKworCXJldHVybiBzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZscnVfZ2VuX2NhcHNbTFJV X0dFTl9DT1JFXSk7Cit9CisjZW5kaWYKIAogc3RhdGljIGlubGluZSBib29sIGxydV9nZW5faW5f ZmF1bHQodm9pZCkKIHsKQEAgLTIyMiw3ICsyMzMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgbHJ1 X2dlbl9hZGRfZm9saW8oc3RydWN0IGxydXZlYyAqbHJ1dmVjLCBzdHJ1Y3QgZm9saW8gKmZvbGlv LAogCiAJVk1fV0FSTl9PTl9PTkNFX0ZPTElPKGdlbiAhPSAtMSwgZm9saW8pOwogCi0JaWYgKGZv bGlvX3Rlc3RfdW5ldmljdGFibGUoZm9saW8pKQorCWlmIChmb2xpb190ZXN0X3VuZXZpY3RhYmxl KGZvbGlvKSB8fCAhbHJ1Z2VuLT5lbmFibGVkKQogCQlyZXR1cm4gZmFsc2U7CiAJLyoKIAkgKiBU aGVyZSBhcmUgdGhyZWUgY29tbW9uIGNhc2VzIGZvciB0aGlzIHBhZ2U6CmRpZmYgLS1naXQgYS9p bmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaAppbmRleCA1MWU1 MjE0NjU3NDIuLjdmOGM1MjliNDZhZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUu aAorKysgYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCkBAIC0zODcsNiArMzg3LDEzIEBAIGVudW0g ewogCUxSVV9HRU5fRklMRSwKIH07CiAKK2VudW0geworCUxSVV9HRU5fQ09SRSwKKwlMUlVfR0VO X01NX1dBTEssCisJTFJVX0dFTl9OT05MRUFGX1lPVU5HLAorCU5SX0xSVV9HRU5fQ0FQUworfTsK KwogI2RlZmluZSBNSU5fTFJVX0JBVENICQlCSVRTX1BFUl9MT05HCiAjZGVmaW5lIE1BWF9MUlVf QkFUQ0gJCShNSU5fTFJVX0JBVENIICogMTI4KQogCkBAIC00MjgsNiArNDM1LDggQEAgc3RydWN0 IGxydV9nZW5fc3RydWN0IHsKIAkvKiBjYW4gYmUgbW9kaWZpZWQgd2l0aG91dCBob2xkaW5nIHRo ZSBMUlUgbG9jayAqLwogCWF0b21pY19sb25nX3QgZXZpY3RlZFtOUl9ISVNUX0dFTlNdW0FOT05f QU5EX0ZJTEVdW01BWF9OUl9USUVSU107CiAJYXRvbWljX2xvbmdfdCByZWZhdWx0ZWRbTlJfSElT VF9HRU5TXVtBTk9OX0FORF9GSUxFXVtNQVhfTlJfVElFUlNdOworCS8qIHdoZXRoZXIgdGhlIG11 bHRpLWdlbiBMUlUgaXMgZW5hYmxlZCAqLworCWJvb2wgZW5hYmxlZDsKIH07CiAKIGVudW0gewpk aWZmIC0tZ2l0IGEva2VybmVsL2Nncm91cC9jZ3JvdXAtaW50ZXJuYWwuaCBiL2tlcm5lbC9jZ3Jv dXAvY2dyb3VwLWludGVybmFsLmgKaW5kZXggMzZiNzQwY2IzZDU5Li42M2RjM2U4MmJlNGYgMTAw NjQ0Ci0tLSBhL2tlcm5lbC9jZ3JvdXAvY2dyb3VwLWludGVybmFsLmgKKysrIGIva2VybmVsL2Nn cm91cC9jZ3JvdXAtaW50ZXJuYWwuaApAQCAtMTY0LDcgKzE2NCw2IEBAIHN0cnVjdCBjZ3JvdXBf bWdjdHggewogI2RlZmluZSBERUZJTkVfQ0dST1VQX01HQ1RYKG5hbWUpCQkJCQkJXAogCXN0cnVj dCBjZ3JvdXBfbWdjdHggbmFtZSA9IENHUk9VUF9NR0NUWF9JTklUKG5hbWUpCiAKLWV4dGVybiBz dHJ1Y3QgbXV0ZXggY2dyb3VwX211dGV4OwogZXh0ZXJuIHNwaW5sb2NrX3QgY3NzX3NldF9sb2Nr OwogZXh0ZXJuIHN0cnVjdCBjZ3JvdXBfc3Vic3lzICpjZ3JvdXBfc3Vic3lzW107CiBleHRlcm4g c3RydWN0IGxpc3RfaGVhZCBjZ3JvdXBfcm9vdHM7CmRpZmYgLS1naXQgYS9tbS9LY29uZmlnIGIv bW0vS2NvbmZpZwppbmRleCA1MTAxZGNhOGYyMWMuLjZjODY4NDljNGRiOSAxMDA2NDQKLS0tIGEv bW0vS2NvbmZpZworKysgYi9tbS9LY29uZmlnCkBAIC0xMTMzLDYgKzExMzMsMTIgQEAgY29uZmln IExSVV9HRU4KIAloZWxwCiAJICBBIGhpZ2ggcGVyZm9ybWFuY2UgTFJVIGltcGxlbWVudGF0aW9u IHRvIG92ZXJjb21taXQgbWVtb3J5LgogCitjb25maWcgTFJVX0dFTl9FTkFCTEVECisJYm9vbCAi RW5hYmxlIGJ5IGRlZmF1bHQiCisJZGVwZW5kcyBvbiBMUlVfR0VOCisJaGVscAorCSAgVGhpcyBv cHRpb24gZW5hYmxlcyB0aGUgbXVsdGktZ2VuIExSVSBieSBkZWZhdWx0LgorCiBjb25maWcgTFJV X0dFTl9TVEFUUwogCWJvb2wgIkZ1bGwgc3RhdHMgZm9yIGRlYnVnZ2luZyIKIAlkZXBlbmRzIG9u IExSVV9HRU4KZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggZWU1 MWM3NTJhM2FmLi41NTAyYzU1M2UzMmUgMTAwNjQ0Ci0tLSBhL21tL3Ztc2Nhbi5jCisrKyBiL21t L3Ztc2Nhbi5jCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSA8bGludXgvcHNpLmg+CiAjaW5j bHVkZSA8bGludXgvcGFnZXdhbGsuaD4KICNpbmNsdWRlIDxsaW51eC9zaG1lbV9mcy5oPgorI2lu Y2x1ZGUgPGxpbnV4L2N0eXBlLmg+CiAKICNpbmNsdWRlIDxhc20vdGxiZmx1c2guaD4KICNpbmNs dWRlIDxhc20vZGl2NjQuaD4KQEAgLTMwNzEsNiArMzA3MiwxNCBAQCBzdGF0aWMgYm9vbCBjYW5f YWdlX2Fub25fcGFnZXMoc3RydWN0IHBnbGlzdF9kYXRhICpwZ2RhdCwKIAogI2lmZGVmIENPTkZJ R19MUlVfR0VOCiAKKyNpZmRlZiBDT05GSUdfTFJVX0dFTl9FTkFCTEVECitERUZJTkVfU1RBVElD X0tFWV9BUlJBWV9UUlVFKGxydV9nZW5fY2FwcywgTlJfTFJVX0dFTl9DQVBTKTsKKyNkZWZpbmUg Z2V0X2NhcChjYXApCXN0YXRpY19icmFuY2hfbGlrZWx5KCZscnVfZ2VuX2NhcHNbY2FwXSkKKyNl bHNlCitERUZJTkVfU1RBVElDX0tFWV9BUlJBWV9GQUxTRShscnVfZ2VuX2NhcHMsIE5SX0xSVV9H RU5fQ0FQUyk7CisjZGVmaW5lIGdldF9jYXAoY2FwKQlzdGF0aWNfYnJhbmNoX3VubGlrZWx5KCZs cnVfZ2VuX2NhcHNbY2FwXSkKKyNlbmRpZgorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRoYW5kIGhlbHBlcnMKICAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKiovCkBAIC0zOTQ4LDcgKzM5NTcsOCBAQCBzdGF0aWMgdm9pZCB3YWxrX3BtZF9yYW5n ZV9sb2NrZWQocHVkX3QgKnB1ZCwgdW5zaWduZWQgbG9uZyBuZXh0LCBzdHJ1Y3Qgdm1fYXJlYQog CQkJZ290byBuZXh0OwogCiAJCWlmICghcG1kX3RyYW5zX2h1Z2UocG1kW2ldKSkgewotCQkJaWYg KElTX0VOQUJMRUQoQ09ORklHX0FSQ0hfSEFTX05PTkxFQUZfUE1EX1lPVU5HKSkKKwkJCWlmIChJ U19FTkFCTEVEKENPTkZJR19BUkNIX0hBU19OT05MRUFGX1BNRF9ZT1VORykgJiYKKwkJCSAgICBn ZXRfY2FwKExSVV9HRU5fTk9OTEVBRl9ZT1VORykpCiAJCQkJcG1kcF90ZXN0X2FuZF9jbGVhcl95 b3VuZyh2bWEsIGFkZHIsIHBtZCArIGkpOwogCQkJZ290byBuZXh0OwogCQl9CkBAIC00MDQ2LDEw ICs0MDU2LDEyIEBAIHN0YXRpYyB2b2lkIHdhbGtfcG1kX3JhbmdlKHB1ZF90ICpwdWQsIHVuc2ln bmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLAogCQl3YWxrLT5tbV9zdGF0c1tNTV9O T05MRUFGX1RPVEFMXSsrOwogCiAjaWZkZWYgQ09ORklHX0FSQ0hfSEFTX05PTkxFQUZfUE1EX1lP VU5HCi0JCWlmICghcG1kX3lvdW5nKHZhbCkpCi0JCQljb250aW51ZTsKKwkJaWYgKGdldF9jYXAo TFJVX0dFTl9OT05MRUFGX1lPVU5HKSkgeworCQkJaWYgKCFwbWRfeW91bmcodmFsKSkKKwkJCQlj b250aW51ZTsKIAotCQl3YWxrX3BtZF9yYW5nZV9sb2NrZWQocHVkLCBhZGRyLCB2bWEsIGFyZ3Ms IGJpdG1hcCwgJnBvcyk7CisJCQl3YWxrX3BtZF9yYW5nZV9sb2NrZWQocHVkLCBhZGRyLCB2bWEs IGFyZ3MsIGJpdG1hcCwgJnBvcyk7CisJCX0KICNlbmRpZgogCQlpZiAoIXdhbGstPmZvcmNlX3Nj YW4gJiYgIXRlc3RfYmxvb21fZmlsdGVyKHdhbGstPmxydXZlYywgd2Fsay0+bWF4X3NlcSwgcG1k ICsgaSkpCiAJCQljb250aW51ZTsKQEAgLTQzMTQsNyArNDMyNiw3IEBAIHN0YXRpYyBib29sIHRy eV90b19pbmNfbWF4X3NlcShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMsIHVuc2lnbmVkIGxvbmcgbWF4 X3NlcSwKIAkgKiBoYW5kZnVsIG9mIFBURXMuIFNwcmVhZGluZyB0aGUgd29yayBvdXQgb3ZlciBh IHBlcmlvZCBvZiB0aW1lIHVzdWFsbHkKIAkgKiBpcyBsZXNzIGVmZmljaWVudCwgYnV0IGl0IGF2 b2lkcyBidXJzdHkgcGFnZSBmYXVsdHMuCiAJICovCi0JaWYgKCFhcmNoX2hhc19od19wdGVfeW91 bmcoKSkgeworCWlmICghKGFyY2hfaGFzX2h3X3B0ZV95b3VuZygpICYmIGdldF9jYXAoTFJVX0dF Tl9NTV9XQUxLKSkpIHsKIAkJc3VjY2VzcyA9IGl0ZXJhdGVfbW1fbGlzdF9ub3dhbGsobHJ1dmVj LCBtYXhfc2VxKTsKIAkJZ290byBkb25lOwogCX0KQEAgLTUwNTAsNiArNTA2MiwyMTEgQEAgc3Rh dGljIHZvaWQgbHJ1X2dlbl9zaHJpbmtfbHJ1dmVjKHN0cnVjdCBscnV2ZWMgKmxydXZlYywgc3Ry dWN0IHNjYW5fY29udHJvbCAqc2MKIAlibGtfZmluaXNoX3BsdWcoJnBsdWcpOwogfQogCisvKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUgY2hh bmdlCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgYm9vbCBfX21heWJlX3VudXNl ZCBzdGF0ZV9pc192YWxpZChzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpCit7CisJc3RydWN0IGxydV9n ZW5fc3RydWN0ICpscnVnZW4gPSAmbHJ1dmVjLT5scnVnZW47CisKKwlpZiAobHJ1Z2VuLT5lbmFi bGVkKSB7CisJCWVudW0gbHJ1X2xpc3QgbHJ1OworCisJCWZvcl9lYWNoX2V2aWN0YWJsZV9scnUo bHJ1KSB7CisJCQlpZiAoIWxpc3RfZW1wdHkoJmxydXZlYy0+bGlzdHNbbHJ1XSkpCisJCQkJcmV0 dXJuIGZhbHNlOworCQl9CisJfSBlbHNlIHsKKwkJaW50IGdlbiwgdHlwZSwgem9uZTsKKworCQlm b3JfZWFjaF9nZW5fdHlwZV96b25lKGdlbiwgdHlwZSwgem9uZSkgeworCQkJaWYgKCFsaXN0X2Vt cHR5KCZscnVnZW4tPmxpc3RzW2dlbl1bdHlwZV1bem9uZV0pKQorCQkJCXJldHVybiBmYWxzZTsK KworCQkJLyogdW5saWtlbHkgYnV0IG5vdCBhIGJ1ZyB3aGVuIHJlc2V0X2JhdGNoX3NpemUoKSBp cyBwZW5kaW5nICovCisJCQlWTV9XQVJOX09OX09OQ0UobHJ1Z2VuLT5ucl9wYWdlc1tnZW5dW3R5 cGVdW3pvbmVdKTsKKwkJfQorCX0KKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBm aWxsX2V2aWN0YWJsZShzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpCit7CisJZW51bSBscnVfbGlzdCBs cnU7CisJaW50IHJlbWFpbmluZyA9IE1BWF9MUlVfQkFUQ0g7CisKKwlmb3JfZWFjaF9ldmljdGFi bGVfbHJ1KGxydSkgeworCQlpbnQgdHlwZSA9IGlzX2ZpbGVfbHJ1KGxydSk7CisJCWJvb2wgYWN0 aXZlID0gaXNfYWN0aXZlX2xydShscnUpOworCQlzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkID0gJmxy dXZlYy0+bGlzdHNbbHJ1XTsKKworCQl3aGlsZSAoIWxpc3RfZW1wdHkoaGVhZCkpIHsKKwkJCWJv b2wgc3VjY2VzczsKKwkJCXN0cnVjdCBmb2xpbyAqZm9saW8gPSBscnVfdG9fZm9saW8oaGVhZCk7 CisKKwkJCVZNX1dBUk5fT05fT05DRV9GT0xJTyhmb2xpb190ZXN0X3VuZXZpY3RhYmxlKGZvbGlv KSwgZm9saW8pOworCQkJVk1fV0FSTl9PTl9PTkNFX0ZPTElPKGZvbGlvX3Rlc3RfYWN0aXZlKGZv bGlvKSAhPSBhY3RpdmUsIGZvbGlvKTsKKwkJCVZNX1dBUk5fT05fT05DRV9GT0xJTyhmb2xpb19p c19maWxlX2xydShmb2xpbykgIT0gdHlwZSwgZm9saW8pOworCQkJVk1fV0FSTl9PTl9PTkNFX0ZP TElPKGZvbGlvX2xydV9nZW4oZm9saW8pICE9IC0xLCBmb2xpbyk7CisKKwkJCWxydXZlY19kZWxf Zm9saW8obHJ1dmVjLCBmb2xpbyk7CisJCQlzdWNjZXNzID0gbHJ1X2dlbl9hZGRfZm9saW8obHJ1 dmVjLCBmb2xpbywgZmFsc2UpOworCQkJVk1fV0FSTl9PTl9PTkNFKCFzdWNjZXNzKTsKKworCQkJ aWYgKCEtLXJlbWFpbmluZykKKwkJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisKKwlyZXR1cm4g dHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZHJhaW5fZXZpY3RhYmxlKHN0cnVjdCBscnV2ZWMgKmxy dXZlYykKK3sKKwlpbnQgZ2VuLCB0eXBlLCB6b25lOworCWludCByZW1haW5pbmcgPSBNQVhfTFJV X0JBVENIOworCisJZm9yX2VhY2hfZ2VuX3R5cGVfem9uZShnZW4sIHR5cGUsIHpvbmUpIHsKKwkJ c3RydWN0IGxpc3RfaGVhZCAqaGVhZCA9ICZscnV2ZWMtPmxydWdlbi5saXN0c1tnZW5dW3R5cGVd W3pvbmVdOworCisJCXdoaWxlICghbGlzdF9lbXB0eShoZWFkKSkgeworCQkJYm9vbCBzdWNjZXNz OworCQkJc3RydWN0IGZvbGlvICpmb2xpbyA9IGxydV90b19mb2xpbyhoZWFkKTsKKworCQkJVk1f V0FSTl9PTl9PTkNFX0ZPTElPKGZvbGlvX3Rlc3RfdW5ldmljdGFibGUoZm9saW8pLCBmb2xpbyk7 CisJCQlWTV9XQVJOX09OX09OQ0VfRk9MSU8oZm9saW9fdGVzdF9hY3RpdmUoZm9saW8pLCBmb2xp byk7CisJCQlWTV9XQVJOX09OX09OQ0VfRk9MSU8oZm9saW9faXNfZmlsZV9scnUoZm9saW8pICE9 IHR5cGUsIGZvbGlvKTsKKwkJCVZNX1dBUk5fT05fT05DRV9GT0xJTyhmb2xpb196b25lbnVtKGZv bGlvKSAhPSB6b25lLCBmb2xpbyk7CisKKwkJCXN1Y2Nlc3MgPSBscnVfZ2VuX2RlbF9mb2xpbyhs cnV2ZWMsIGZvbGlvLCBmYWxzZSk7CisJCQlWTV9XQVJOX09OX09OQ0UoIXN1Y2Nlc3MpOworCQkJ bHJ1dmVjX2FkZF9mb2xpbyhscnV2ZWMsIGZvbGlvKTsKKworCQkJaWYgKCEtLXJlbWFpbmluZykK KwkJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGlj IHZvaWQgbHJ1X2dlbl9jaGFuZ2Vfc3RhdGUoYm9vbCBlbmFibGVkKQoreworCXN0YXRpYyBERUZJ TkVfTVVURVgoc3RhdGVfbXV0ZXgpOworCisJc3RydWN0IG1lbV9jZ3JvdXAgKm1lbWNnOworCisJ Y2dyb3VwX2xvY2soKTsKKwljcHVzX3JlYWRfbG9jaygpOworCWdldF9vbmxpbmVfbWVtcygpOwor CW11dGV4X2xvY2soJnN0YXRlX211dGV4KTsKKworCWlmIChlbmFibGVkID09IGxydV9nZW5fZW5h YmxlZCgpKQorCQlnb3RvIHVubG9jazsKKworCWlmIChlbmFibGVkKQorCQlzdGF0aWNfYnJhbmNo X2VuYWJsZV9jcHVzbG9ja2VkKCZscnVfZ2VuX2NhcHNbTFJVX0dFTl9DT1JFXSk7CisJZWxzZQor CQlzdGF0aWNfYnJhbmNoX2Rpc2FibGVfY3B1c2xvY2tlZCgmbHJ1X2dlbl9jYXBzW0xSVV9HRU5f Q09SRV0pOworCisJbWVtY2cgPSBtZW1fY2dyb3VwX2l0ZXIoTlVMTCwgTlVMTCwgTlVMTCk7CisJ ZG8geworCQlpbnQgbmlkOworCisJCWZvcl9lYWNoX25vZGUobmlkKSB7CisJCQlzdHJ1Y3QgbHJ1 dmVjICpscnV2ZWMgPSBnZXRfbHJ1dmVjKG1lbWNnLCBuaWQpOworCisJCQlpZiAoIWxydXZlYykK KwkJCQljb250aW51ZTsKKworCQkJc3Bpbl9sb2NrX2lycSgmbHJ1dmVjLT5scnVfbG9jayk7CisK KwkJCVZNX1dBUk5fT05fT05DRSghc2VxX2lzX3ZhbGlkKGxydXZlYykpOworCQkJVk1fV0FSTl9P Tl9PTkNFKCFzdGF0ZV9pc192YWxpZChscnV2ZWMpKTsKKworCQkJbHJ1dmVjLT5scnVnZW4uZW5h YmxlZCA9IGVuYWJsZWQ7CisKKwkJCXdoaWxlICghKGVuYWJsZWQgPyBmaWxsX2V2aWN0YWJsZShs cnV2ZWMpIDogZHJhaW5fZXZpY3RhYmxlKGxydXZlYykpKSB7CisJCQkJc3Bpbl91bmxvY2tfaXJx KCZscnV2ZWMtPmxydV9sb2NrKTsKKwkJCQljb25kX3Jlc2NoZWQoKTsKKwkJCQlzcGluX2xvY2tf aXJxKCZscnV2ZWMtPmxydV9sb2NrKTsKKwkJCX0KKworCQkJc3Bpbl91bmxvY2tfaXJxKCZscnV2 ZWMtPmxydV9sb2NrKTsKKwkJfQorCisJCWNvbmRfcmVzY2hlZCgpOworCX0gd2hpbGUgKChtZW1j ZyA9IG1lbV9jZ3JvdXBfaXRlcihOVUxMLCBtZW1jZywgTlVMTCkpKTsKK3VubG9jazoKKwltdXRl eF91bmxvY2soJnN0YXRlX211dGV4KTsKKwlwdXRfb25saW5lX21lbXMoKTsKKwljcHVzX3JlYWRf dW5sb2NrKCk7CisJY2dyb3VwX3VubG9jaygpOworfQorCisvKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzZnMgaW50ZXJmYWNlCisgKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqLworCitzdGF0aWMgc3NpemVfdCBzaG93X2VuYWJsZWQoc3RydWN0IGtvYmpl Y3QgKmtvYmosIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXVu c2lnbmVkIGludCBjYXBzID0gMDsKKworCWlmIChnZXRfY2FwKExSVV9HRU5fQ09SRSkpCisJCWNh cHMgfD0gQklUKExSVV9HRU5fQ09SRSk7CisKKwlpZiAoYXJjaF9oYXNfaHdfcHRlX3lvdW5nKCkg JiYgZ2V0X2NhcChMUlVfR0VOX01NX1dBTEspKQorCQljYXBzIHw9IEJJVChMUlVfR0VOX01NX1dB TEspOworCisJaWYgKElTX0VOQUJMRUQoQ09ORklHX0FSQ0hfSEFTX05PTkxFQUZfUE1EX1lPVU5H KSAmJiBnZXRfY2FwKExSVV9HRU5fTk9OTEVBRl9ZT1VORykpCisJCWNhcHMgfD0gQklUKExSVV9H RU5fTk9OTEVBRl9ZT1VORyk7CisKKwlyZXR1cm4gc25wcmludGYoYnVmLCBQQUdFX1NJWkUsICIw eCUwNHhcbiIsIGNhcHMpOworfQorCitzdGF0aWMgc3NpemVfdCBzdG9yZV9lbmFibGVkKHN0cnVj dCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsCisJCQkgICAgIGNv bnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwlpbnQgaTsKKwl1bnNpZ25lZCBpbnQgY2Fw czsKKworCWlmICh0b2xvd2VyKCpidWYpID09ICduJykKKwkJY2FwcyA9IDA7CisJZWxzZSBpZiAo dG9sb3dlcigqYnVmKSA9PSAneScpCisJCWNhcHMgPSAtMTsKKwllbHNlIGlmIChrc3RydG91aW50 KGJ1ZiwgMCwgJmNhcHMpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWZvciAoaSA9IDA7IGkgPCBO Ul9MUlVfR0VOX0NBUFM7IGkrKykgeworCQlib29sIGVuYWJsZWQgPSBjYXBzICYgQklUKGkpOwor CisJCWlmIChpID09IExSVV9HRU5fQ09SRSkKKwkJCWxydV9nZW5fY2hhbmdlX3N0YXRlKGVuYWJs ZWQpOworCQllbHNlIGlmIChlbmFibGVkKQorCQkJc3RhdGljX2JyYW5jaF9lbmFibGUoJmxydV9n ZW5fY2Fwc1tpXSk7CisJCWVsc2UKKwkJCXN0YXRpY19icmFuY2hfZGlzYWJsZSgmbHJ1X2dlbl9j YXBzW2ldKTsKKwl9CisKKwlyZXR1cm4gbGVuOworfQorCitzdGF0aWMgc3RydWN0IGtvYmpfYXR0 cmlidXRlIGxydV9nZW5fZW5hYmxlZF9hdHRyID0gX19BVFRSKAorCWVuYWJsZWQsIDA2NDQsIHNo b3dfZW5hYmxlZCwgc3RvcmVfZW5hYmxlZAorKTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUg KmxydV9nZW5fYXR0cnNbXSA9IHsKKwkmbHJ1X2dlbl9lbmFibGVkX2F0dHIuYXR0ciwKKwlOVUxM Cit9OworCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBscnVfZ2VuX2F0dHJfZ3JvdXAg PSB7CisJLm5hbWUgPSAibHJ1X2dlbiIsCisJLmF0dHJzID0gbHJ1X2dlbl9hdHRycywKK307CisK IC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioKICAqICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0 aWFsaXphdGlvbgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTUwNjAsNiArNTI3Nyw3IEBA IHZvaWQgbHJ1X2dlbl9pbml0X2xydXZlYyhzdHJ1Y3QgbHJ1dmVjICpscnV2ZWMpCiAJc3RydWN0 IGxydV9nZW5fc3RydWN0ICpscnVnZW4gPSAmbHJ1dmVjLT5scnVnZW47CiAKIAlscnVnZW4tPm1h eF9zZXEgPSBNSU5fTlJfR0VOUyArIDE7CisJbHJ1Z2VuLT5lbmFibGVkID0gbHJ1X2dlbl9lbmFi bGVkKCk7CiAKIAlmb3JfZWFjaF9nZW5fdHlwZV96b25lKGdlbiwgdHlwZSwgem9uZSkKIAkJSU5J VF9MSVNUX0hFQUQoJmxydWdlbi0+bGlzdHNbZ2VuXVt0eXBlXVt6b25lXSk7CkBAIC01MDk5LDYg KzUzMTcsOSBAQCBzdGF0aWMgaW50IF9faW5pdCBpbml0X2xydV9nZW4odm9pZCkKIAlCVUlMRF9C VUdfT04oTUlOX05SX0dFTlMgKyAxID49IE1BWF9OUl9HRU5TKTsKIAlCVUlMRF9CVUdfT04oQklU KExSVV9HRU5fV0lEVEgpIDw9IE1BWF9OUl9HRU5TKTsKIAorCWlmIChzeXNmc19jcmVhdGVfZ3Jv dXAobW1fa29iaiwgJmxydV9nZW5fYXR0cl9ncm91cCkpCisJCXByX2VycigibHJ1X2dlbjogZmFp bGVkIHRvIGNyZWF0ZSBzeXNmcyBncm91cFxuIik7CisKIAlyZXR1cm4gMDsKIH07CiBsYXRlX2lu aXRjYWxsKGluaXRfbHJ1X2dlbik7Ci0tIAoyLjM3LjEuNTk1Lmc3MThhM2E4ZjA0LWdvb2cKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0t a2VybmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2Vy bmVsCg==